Merge branch 'master' of https://github.com/asinyagin/web3.js into develop
This commit is contained in:
commit
69f380dcda
21
index.js
21
index.js
|
@ -1,19 +1,18 @@
|
||||||
var web3 = require('./lib/web3');
|
var Web3 = require('./lib/web3');
|
||||||
var namereg = require('./lib/web3/namereg');
|
var namereg = require('./lib/web3/namereg');
|
||||||
|
|
||||||
web3.providers.HttpProvider = require('./lib/web3/httpprovider');
|
Web3.prototype.providers.HttpProvider = require('./lib/web3/httpprovider');
|
||||||
web3.providers.IpcProvider = require('./lib/web3/ipcprovider');
|
Web3.prototype.providers.IpcProvider = require('./lib/web3/ipcprovider');
|
||||||
|
|
||||||
web3.eth.contract = require('./lib/web3/contract');
|
Web3.prototype.eth.contract = require('./lib/web3/contract');
|
||||||
web3.eth.namereg = namereg.namereg;
|
Web3.prototype.eth.namereg = namereg.namereg;
|
||||||
web3.eth.ibanNamereg = namereg.ibanNamereg;
|
Web3.prototype.eth.ibanNamereg = namereg.ibanNamereg;
|
||||||
web3.eth.sendIBANTransaction = require('./lib/web3/transfer');
|
Web3.prototype.eth.sendIBANTransaction = require('./lib/web3/transfer');
|
||||||
web3.eth.iban = require('./lib/web3/iban');
|
Web3.prototype.eth.iban = require('./lib/web3/iban');
|
||||||
|
|
||||||
// dont override global variable
|
// dont override global variable
|
||||||
if (typeof window !== 'undefined' && typeof window.web3 === 'undefined') {
|
if (typeof window !== 'undefined' && typeof window.web3 === 'undefined') {
|
||||||
window.web3 = web3;
|
window.Web3 = Web3;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = web3;
|
module.exports = Web3;
|
||||||
|
|
||||||
|
|
111
lib/web3.js
111
lib/web3.js
|
@ -39,7 +39,9 @@ var c = require('./utils/config');
|
||||||
var Property = require('./web3/property');
|
var Property = require('./web3/property');
|
||||||
var Batch = require('./web3/batch');
|
var Batch = require('./web3/batch');
|
||||||
var sha3 = require('./utils/sha3');
|
var sha3 = require('./utils/sha3');
|
||||||
|
|
||||||
var Iban = require('./web3/iban');
|
var Iban = require('./web3/iban');
|
||||||
|
var Eth = require('./web3/methods/eth1');
|
||||||
|
|
||||||
var web3Properties = [
|
var web3Properties = [
|
||||||
new Property({
|
new Property({
|
||||||
|
@ -80,68 +82,77 @@ var setupProperties = function (obj, properties) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/// setups web3 object, and it's in-browser executed methods
|
/// setups web3 object, and it's in-browser executed methods
|
||||||
var web3 = {};
|
function Web3(provider) {
|
||||||
web3.providers = {};
|
this.currentProvider = provider;
|
||||||
web3.currentProvider = null;
|
this.requestManager = new RequestManager();
|
||||||
web3.version = {};
|
this.requestManager.setProvider(provider);
|
||||||
web3.version.api = version.version;
|
this.eth1 = new Eth(this);
|
||||||
web3.eth = {};
|
}
|
||||||
|
Web3.prototype.providers = {};
|
||||||
|
Web3.prototype.version = {};
|
||||||
|
Web3.prototype.version.api = version.version;
|
||||||
|
Web3.prototype.eth = {};
|
||||||
|
|
||||||
web3.eth.isSyncing = function (callback) {
|
Web3.prototype.eth.isSyncing = function (callback) {
|
||||||
return new IsSyncing(callback);
|
return new IsSyncing(callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*jshint maxparams:4 */
|
/*jshint maxparams:4 */
|
||||||
web3.eth.filter = function (fil, callback) {
|
Web3.prototype.eth.filter = function (fil, callback) {
|
||||||
return new Filter(fil, watches.eth(), formatters.outputLogFormatter, callback);
|
return new Filter(fil, watches.eth(), formatters.outputLogFormatter, callback);
|
||||||
};
|
};
|
||||||
/*jshint maxparams:3 */
|
/*jshint maxparams:3 */
|
||||||
|
|
||||||
web3.shh = {};
|
Web3.prototype.shh = {};
|
||||||
web3.shh.filter = function (fil, callback) {
|
Web3.prototype.shh.filter = function (fil, callback) {
|
||||||
return new Filter(fil, watches.shh(), formatters.outputPostFormatter, callback);
|
return new Filter(fil, watches.shh(), formatters.outputPostFormatter, callback);
|
||||||
};
|
};
|
||||||
web3.net = {};
|
Web3.prototype.net = {};
|
||||||
web3.db = {};
|
Web3.prototype.db = {};
|
||||||
web3.setProvider = function (provider) {
|
Web3.prototype.setProvider = function (provider) {
|
||||||
this.currentProvider = provider;
|
this.currentProvider = provider;
|
||||||
RequestManager.getInstance().setProvider(provider);
|
RequestManager.getInstance().setProvider(provider);
|
||||||
};
|
};
|
||||||
web3.isConnected = function(){
|
Web3.prototype.isConnected = function(){
|
||||||
return (this.currentProvider && this.currentProvider.isConnected());
|
return (this.currentProvider && this.currentProvider.isConnected());
|
||||||
};
|
};
|
||||||
web3.reset = function (keepIsSyncing) {
|
|
||||||
RequestManager.getInstance().reset(keepIsSyncing);
|
//web3.reset = function (keepIsSyncing) {
|
||||||
|
//RequestManager.getInstance().reset(keepIsSyncing);
|
||||||
|
//}
|
||||||
|
|
||||||
|
Web3.prototype.reset = function () {
|
||||||
|
RequestManager.getInstance().reset();
|
||||||
c.defaultBlock = 'latest';
|
c.defaultBlock = 'latest';
|
||||||
c.defaultAccount = undefined;
|
c.defaultAccount = undefined;
|
||||||
};
|
};
|
||||||
web3.toHex = utils.toHex;
|
Web3.prototype.toHex = utils.toHex;
|
||||||
web3.toAscii = utils.toAscii;
|
Web3.prototype.toAscii = utils.toAscii;
|
||||||
web3.toUtf8 = utils.toUtf8;
|
Web3.prototype.toUtf8 = utils.toUtf8;
|
||||||
web3.fromAscii = utils.fromAscii;
|
Web3.prototype.fromAscii = utils.fromAscii;
|
||||||
web3.fromUtf8 = utils.fromUtf8;
|
Web3.prototype.fromUtf8 = utils.fromUtf8;
|
||||||
web3.toDecimal = utils.toDecimal;
|
Web3.prototype.toDecimal = utils.toDecimal;
|
||||||
web3.fromDecimal = utils.fromDecimal;
|
Web3.prototype.fromDecimal = utils.fromDecimal;
|
||||||
web3.toBigNumber = utils.toBigNumber;
|
Web3.prototype.toBigNumber = utils.toBigNumber;
|
||||||
web3.toWei = utils.toWei;
|
Web3.prototype.toWei = utils.toWei;
|
||||||
web3.fromWei = utils.fromWei;
|
Web3.prototype.fromWei = utils.fromWei;
|
||||||
web3.isAddress = utils.isAddress;
|
Web3.prototype.isAddress = utils.isAddress;
|
||||||
web3.isIBAN = utils.isIBAN;
|
Web3.prototype.isIBAN = utils.isIBAN;
|
||||||
web3.sha3 = sha3;
|
Web3.prototype.sha3 = sha3;
|
||||||
web3.createBatch = function () {
|
Web3.prototype.createBatch = function () {
|
||||||
return new Batch();
|
return new Batch();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms direct icap to address
|
* Transforms direct icap to address
|
||||||
*/
|
*/
|
||||||
web3.fromICAP = function (icap) {
|
Web3.prototype.fromICAP = function (icap) {
|
||||||
var iban = new Iban(icap);
|
var iban = new Iban(icap);
|
||||||
return iban.address();
|
return iban.address();
|
||||||
};
|
};
|
||||||
|
|
||||||
// ADD defaultblock
|
// ADD defaultblock
|
||||||
Object.defineProperty(web3.eth, 'defaultBlock', {
|
Object.defineProperty(Web3.prototype.eth, 'defaultBlock', {
|
||||||
get: function () {
|
get: function () {
|
||||||
return c.defaultBlock;
|
return c.defaultBlock;
|
||||||
},
|
},
|
||||||
|
@ -151,7 +162,7 @@ Object.defineProperty(web3.eth, 'defaultBlock', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperty(web3.eth, 'defaultAccount', {
|
Object.defineProperty(Web3.prototype.eth, 'defaultAccount', {
|
||||||
get: function () {
|
get: function () {
|
||||||
return c.defaultAccount;
|
return c.defaultAccount;
|
||||||
},
|
},
|
||||||
|
@ -163,29 +174,29 @@ Object.defineProperty(web3.eth, 'defaultAccount', {
|
||||||
|
|
||||||
|
|
||||||
// EXTEND
|
// EXTEND
|
||||||
web3._extend = function(extension){
|
Web3.prototype._extend = function(extension){
|
||||||
/*jshint maxcomplexity: 6 */
|
/*jshint maxcomplexity: 6 */
|
||||||
|
|
||||||
if(extension.property && !web3[extension.property])
|
if(extension.property && !this[extension.property])
|
||||||
web3[extension.property] = {};
|
this[extension.property] = {};
|
||||||
|
|
||||||
setupMethods(web3[extension.property] || web3, extension.methods || []);
|
setupMethods(this[extension.property] || this, extension.methods || []);
|
||||||
setupProperties(web3[extension.property] || web3, extension.properties || []);
|
setupProperties(this[extension.property] || this, extension.properties || []);
|
||||||
};
|
};
|
||||||
web3._extend.formatters = formatters;
|
Web3.prototype._extend.formatters = formatters;
|
||||||
web3._extend.utils = utils;
|
Web3.prototype._extend.utils = utils;
|
||||||
web3._extend.Method = require('./web3/method');
|
Web3.prototype._extend.Method = require('./web3/method');
|
||||||
web3._extend.Property = require('./web3/property');
|
Web3.prototype._extend.Property = require('./web3/property');
|
||||||
|
|
||||||
|
|
||||||
/// setups all api methods
|
/// setups all api methods
|
||||||
setupProperties(web3, web3Properties);
|
setupProperties(Web3.prototype, web3Properties);
|
||||||
setupMethods(web3.net, net.methods);
|
setupMethods(Web3.prototype.net, net.methods);
|
||||||
setupProperties(web3.net, net.properties);
|
setupProperties(Web3.prototype.net, net.properties);
|
||||||
setupMethods(web3.eth, eth.methods);
|
setupMethods(Web3.prototype.eth, eth.methods);
|
||||||
setupProperties(web3.eth, eth.properties);
|
setupProperties(Web3.prototype.eth, eth.properties);
|
||||||
setupMethods(web3.db, db.methods);
|
setupMethods(Web3.prototype.db, db.methods);
|
||||||
setupMethods(web3.shh, shh.methods);
|
setupMethods(Web3.prototype.shh, shh.methods);
|
||||||
|
|
||||||
module.exports = web3;
|
module.exports = Web3;
|
||||||
|
|
||||||
|
|
|
@ -168,5 +168,30 @@ Method.prototype.send = function () {
|
||||||
return this.formatOutput(RequestManager.getInstance().send(payload));
|
return this.formatOutput(RequestManager.getInstance().send(payload));
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Method;
|
Method.prototype.attachToObject1 = function (obj) {
|
||||||
|
var func = this.buildCall();
|
||||||
|
// func.request = this.request.bind(this);
|
||||||
|
// func.call = this.call; // that's ugly. filter.js uses it
|
||||||
|
var name = this.name.split('.');
|
||||||
|
if (name.length > 1) {
|
||||||
|
obj[name[0]] = obj[name[0]] || {};
|
||||||
|
obj[name[0]][name[1]] = func;
|
||||||
|
} else {
|
||||||
|
obj[name[0]] = func;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Method.prototype.buildCall = function() {
|
||||||
|
var method = this;
|
||||||
|
return function send() {
|
||||||
|
var payload = method.toPayload(Array.prototype.slice.call(arguments));
|
||||||
|
if (payload.callback) {
|
||||||
|
return this.web3.requestManager.sendAsync(payload, function (err, result) {
|
||||||
|
payload.callback(err, method.formatOutput(result));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return method.formatOutput(this.web3.requestManager.send(payload));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = Method;
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
var formatters = require('../formatters');
|
||||||
|
var utils = require('../../utils/utils');
|
||||||
|
var Method = require('../method');
|
||||||
|
var Property = require('../property');
|
||||||
|
var c = require('../../utils/config');
|
||||||
|
|
||||||
|
function Eth(web3) {
|
||||||
|
this.web3 = web3;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(Eth.prototype, 'defaultBlock', {
|
||||||
|
get: function () {
|
||||||
|
return c.defaultBlock;
|
||||||
|
},
|
||||||
|
set: function (val) {
|
||||||
|
c.defaultBlock = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(Eth.prototype, 'defaultAccount', {
|
||||||
|
get: function () {
|
||||||
|
return c.defaultAccount;
|
||||||
|
},
|
||||||
|
set: function (val) {
|
||||||
|
c.defaultAccount = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var methods = [
|
||||||
|
new Method({
|
||||||
|
name: 'getBalance',
|
||||||
|
call: 'eth_getBalance',
|
||||||
|
params: 2,
|
||||||
|
inputFormatter: [formatters.inputAddressFormatter, formatters.inputDefaultBlockNumberFormatter],
|
||||||
|
outputFormatter: formatters.outputBigNumberFormatter
|
||||||
|
})
|
||||||
|
];
|
||||||
|
methods.forEach(function(method) { method.attachToObject1(Eth.prototype) });
|
||||||
|
|
||||||
|
module.exports = Eth;
|
Loading…
Reference in New Issue