Merge branch 'develop' into cpp
Conflicts: dist/ethereum.js.map dist/ethereum.min.js
This commit is contained in:
commit
1f5a6f1341
15
README.md
15
README.md
@ -1,6 +1,6 @@
|
||||
# Ethereum JavaScript API
|
||||
|
||||
This is the Ethereum compatible JavaScript API using `Promise`s
|
||||
This is the Ethereum compatible [JavaScript API](https://github.com/ethereum/wiki/wiki/JavaScript-API)
|
||||
which implements the [Generic JSON RPC](https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC) spec. It's available on npm as a node module and also for bower and component as an embeddable js
|
||||
|
||||
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![dependency status][dep-image]][dep-url] [![dev dependency status][dep-dev-image]][dep-dev-url]
|
||||
@ -23,7 +23,7 @@ Component
|
||||
component install ethereum/ethereum.js
|
||||
|
||||
* Include `ethereum.min.js` in your html file.
|
||||
* Include [es6-promise](https://github.com/jakearchibald/es6-promise) or another ES6-Shim if your browser doesn't support ECMAScript 6.
|
||||
* Include [bignumber.js](https://github.com/MikeMcl/bignumber.js/)
|
||||
|
||||
## Usage
|
||||
Require the library:
|
||||
@ -37,14 +37,8 @@ Set a provider (QtProvider, WebSocketProvider, HttpRpcProvider)
|
||||
There you go, now you can use it:
|
||||
|
||||
```
|
||||
web3.eth.coinbase.then(function(result){
|
||||
console.log(result);
|
||||
return web3.eth.balanceAt(result);
|
||||
}).then(function(balance){
|
||||
console.log(web3.toDecimal(balance));
|
||||
}).catch(function(err){
|
||||
console.log(err);
|
||||
});
|
||||
var coinbase = web3.eth.coinbase;
|
||||
var balance = web3.eth.balanceAt(coinbase);
|
||||
```
|
||||
|
||||
|
||||
@ -99,3 +93,4 @@ ethereum -ws -loglevel=4
|
||||
[dep-url]: https://david-dm.org/ethereum/ethereum.js
|
||||
[dep-dev-image]: https://david-dm.org/ethereum/ethereum.js/dev-status.svg
|
||||
[dep-dev-url]: https://david-dm.org/ethereum/ethereum.js#info=devDependencies
|
||||
|
||||
|
@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "ethereum.js",
|
||||
"namespace": "ethereum",
|
||||
"version": "0.0.8",
|
||||
"version": "0.0.10",
|
||||
"description": "Ethereum Compatible JavaScript API",
|
||||
"main": ["./dist/ethereum.js", "./dist/ethereum.min.js"],
|
||||
"dependencies": {
|
||||
"es6-promise": "#master",
|
||||
"bignumber.js": ">=2.0.0"
|
||||
},
|
||||
"repository": {
|
||||
|
32
dist/ethereum.js
vendored
32
dist/ethereum.js
vendored
@ -129,7 +129,7 @@ var formatInputReal = function (value) {
|
||||
|
||||
var dynamicTypeBytes = function (type, value) {
|
||||
// TODO: decide what to do with array of strings
|
||||
if (arrayType(type) || type == 'string') // only string itself that is dynamic; stringX is static length.
|
||||
if (arrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length.
|
||||
return formatInputInt(value.length);
|
||||
return "";
|
||||
};
|
||||
@ -252,7 +252,7 @@ var formatOutputAddress = function (value) {
|
||||
};
|
||||
|
||||
var dynamicBytesLength = function (type) {
|
||||
if (arrayType(type) || type == 'string') // only string itself that is dynamic; stringX is static length.
|
||||
if (arrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length.
|
||||
return ETH_PADDING * 2;
|
||||
return 0;
|
||||
};
|
||||
@ -464,7 +464,7 @@ var contract = function (address, desc) {
|
||||
// prototype, so we make it so as a workaround.
|
||||
if (method.name.indexOf('(') === -1) {
|
||||
var displayName = method.name;
|
||||
var typeName = method.inputs.map(function(i){return i.type}).join();
|
||||
var typeName = method.inputs.map(function(i){return i.type; }).join();
|
||||
method.name = displayName + '(' + typeName + ')';
|
||||
}
|
||||
});
|
||||
@ -531,9 +531,9 @@ var contract = function (address, desc) {
|
||||
var ret = outputParser[displayName][typeName](output);
|
||||
if (collapse)
|
||||
{
|
||||
if (ret.length == 1)
|
||||
if (ret.length === 1)
|
||||
ret = ret[0];
|
||||
else if (ret.length == 0)
|
||||
else if (ret.length === 0)
|
||||
ret = null;
|
||||
}
|
||||
return ret;
|
||||
@ -603,8 +603,10 @@ Filter.prototype.changed = function(callback) {
|
||||
|
||||
/// trigger calling new message from people
|
||||
Filter.prototype.trigger = function(messages) {
|
||||
for(var i = 0; i < this.callbacks.length; i++) {
|
||||
this.callbacks[i].call(this, messages);
|
||||
for (var i = 0; i < this.callbacks.length; i++) {
|
||||
for (var j = 0; j < messages; j++) {
|
||||
this.callbacks[i].call(this, messages[j]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -650,6 +652,10 @@ module.exports = Filter;
|
||||
* @date 2014
|
||||
*/
|
||||
|
||||
if ("build" !== 'build') {/*
|
||||
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
|
||||
*/}
|
||||
|
||||
var HttpSyncProvider = function (host) {
|
||||
this.handlers = [];
|
||||
this.host = host || 'http://localhost:8080';
|
||||
@ -746,15 +752,15 @@ var ProviderManager = function() {
|
||||
|
||||
result = JSON.parse(result);
|
||||
|
||||
// dont call the callback if result is an error, empty array or false
|
||||
if (result.error || (result.result instanceof Array ? result.result.length === 0 : !result.result)) {
|
||||
// dont call the callback if result is not an array, or empty one
|
||||
if (result.error || !(result.result instanceof Array) || result.result.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
data.callback(result);
|
||||
data.callback(result.result);
|
||||
});
|
||||
}
|
||||
setTimeout(poll, 12000);
|
||||
setTimeout(poll, 1000);
|
||||
};
|
||||
poll();
|
||||
};
|
||||
@ -767,7 +773,7 @@ ProviderManager.prototype.send = function(data) {
|
||||
|
||||
if (this.provider === undefined) {
|
||||
console.error('provider is not set');
|
||||
return undefined;
|
||||
return null;
|
||||
}
|
||||
|
||||
//TODO: handle error here?
|
||||
@ -982,7 +988,7 @@ var shhWatchMethods = function () {
|
||||
return [
|
||||
{ name: 'newFilter', call: 'shh_newFilter' },
|
||||
{ name: 'uninstallFilter', call: 'shh_uninstallFilter' },
|
||||
{ name: 'getMessage', call: 'shh_getMessages' }
|
||||
{ name: 'getMessages', call: 'shh_getMessages' }
|
||||
];
|
||||
};
|
||||
|
||||
|
14
dist/ethereum.js.map
vendored
14
dist/ethereum.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/ethereum.min.js
vendored
2
dist/ethereum.min.js
vendored
File diff suppressed because one or more lines are too long
@ -2,7 +2,6 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script type="text/javascript" src="js/es6-promise/promise.min.js"></script>
|
||||
<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
|
||||
<script type="text/javascript" src="../dist/ethereum.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
@ -2,7 +2,6 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script type="text/javascript" src="js/es6-promise/promise.min.js"></script>
|
||||
<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
|
||||
<script type="text/javascript" src="../dist/ethereum.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
@ -1,16 +1,12 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var web3 = require("../index.js");
|
||||
|
||||
web3.setProvider(new web3.providers.HttpRpcProvider('http://localhost:8080'));
|
||||
web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8080'));
|
||||
|
||||
var coinbase = web3.eth.coinbase;
|
||||
console.log(coinbase);
|
||||
|
||||
var balance = web3.eth.balanceAt(coinbase);
|
||||
console.log(balance);
|
||||
|
||||
web3.eth.coinbase.then(function(result){
|
||||
console.log(result);
|
||||
return web3.eth.balanceAt(result);
|
||||
}).then(function(balance){
|
||||
console.log(web3.toDecimal(balance));
|
||||
}).catch(function(err){
|
||||
console.log(err);
|
||||
});
|
@ -128,7 +128,7 @@ var formatInputReal = function (value) {
|
||||
|
||||
var dynamicTypeBytes = function (type, value) {
|
||||
// TODO: decide what to do with array of strings
|
||||
if (arrayType(type) || type == 'string') // only string itself that is dynamic; stringX is static length.
|
||||
if (arrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length.
|
||||
return formatInputInt(value.length);
|
||||
return "";
|
||||
};
|
||||
@ -251,7 +251,7 @@ var formatOutputAddress = function (value) {
|
||||
};
|
||||
|
||||
var dynamicBytesLength = function (type) {
|
||||
if (arrayType(type) || type == 'string') // only string itself that is dynamic; stringX is static length.
|
||||
if (arrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length.
|
||||
return ETH_PADDING * 2;
|
||||
return 0;
|
||||
};
|
||||
|
@ -53,7 +53,7 @@ var contract = function (address, desc) {
|
||||
// prototype, so we make it so as a workaround.
|
||||
if (method.name.indexOf('(') === -1) {
|
||||
var displayName = method.name;
|
||||
var typeName = method.inputs.map(function(i){return i.type}).join();
|
||||
var typeName = method.inputs.map(function(i){return i.type; }).join();
|
||||
method.name = displayName + '(' + typeName + ')';
|
||||
}
|
||||
});
|
||||
@ -120,9 +120,9 @@ var contract = function (address, desc) {
|
||||
var ret = outputParser[displayName][typeName](output);
|
||||
if (collapse)
|
||||
{
|
||||
if (ret.length == 1)
|
||||
if (ret.length === 1)
|
||||
ret = ret[0];
|
||||
else if (ret.length == 0)
|
||||
else if (ret.length === 0)
|
||||
ret = null;
|
||||
}
|
||||
return ret;
|
||||
|
@ -47,8 +47,10 @@ Filter.prototype.changed = function(callback) {
|
||||
|
||||
/// trigger calling new message from people
|
||||
Filter.prototype.trigger = function(messages) {
|
||||
for(var i = 0; i < this.callbacks.length; i++) {
|
||||
this.callbacks[i].call(this, messages);
|
||||
for (var i = 0; i < this.callbacks.length; i++) {
|
||||
for (var j = 0; j < messages; j++) {
|
||||
this.callbacks[i].call(this, messages[j]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -21,6 +21,10 @@
|
||||
* @date 2014
|
||||
*/
|
||||
|
||||
if (process.env.NODE_ENV !== 'build') {
|
||||
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
|
||||
}
|
||||
|
||||
var HttpSyncProvider = function (host) {
|
||||
this.handlers = [];
|
||||
this.host = host || 'http://localhost:8080';
|
||||
|
18
lib/local.js
Normal file
18
lib/local.js
Normal file
@ -0,0 +1,18 @@
|
||||
var addressName = {"0x12378912345789": "Gav", "0x57835893478594739854": "Jeff"};
|
||||
var nameAddress = {};
|
||||
|
||||
for (var prop in addressName) {
|
||||
if (addressName.hasOwnProperty(prop)) {
|
||||
nameAddress[addressName[prop]] = prop;
|
||||
}
|
||||
}
|
||||
|
||||
var local = {
|
||||
addressBook:{
|
||||
byName: addressName,
|
||||
byAddress: nameAddress
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof(module) !== "undefined")
|
||||
module.exports = local;
|
@ -49,15 +49,15 @@ var ProviderManager = function() {
|
||||
|
||||
result = JSON.parse(result);
|
||||
|
||||
// dont call the callback if result is an error, empty array or false
|
||||
if (result.error || (result.result instanceof Array ? result.result.length === 0 : !result.result)) {
|
||||
// dont call the callback if result is not an array, or empty one
|
||||
if (result.error || !(result.result instanceof Array) || result.result.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
data.callback(result);
|
||||
data.callback(result.result);
|
||||
});
|
||||
}
|
||||
setTimeout(poll, 12000);
|
||||
setTimeout(poll, 1000);
|
||||
};
|
||||
poll();
|
||||
};
|
||||
@ -70,7 +70,7 @@ ProviderManager.prototype.send = function(data) {
|
||||
|
||||
if (this.provider === undefined) {
|
||||
console.error('provider is not set');
|
||||
return undefined;
|
||||
return null;
|
||||
}
|
||||
|
||||
//TODO: handle error here?
|
||||
|
@ -145,7 +145,7 @@ var shhWatchMethods = function () {
|
||||
return [
|
||||
{ name: 'newFilter', call: 'shh_newFilter' },
|
||||
{ name: 'uninstallFilter', call: 'shh_uninstallFilter' },
|
||||
{ name: 'getMessage', call: 'shh_getMessages' }
|
||||
{ name: 'getMessages', call: 'shh_getMessages' }
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -1,14 +1,13 @@
|
||||
{
|
||||
"name": "ethereum.js",
|
||||
"namespace": "ethereum",
|
||||
"version": "0.0.8",
|
||||
"version": "0.0.10",
|
||||
"description": "Ethereum Compatible JavaScript API",
|
||||
"main": "./index.js",
|
||||
"directories": {
|
||||
"lib": "./lib"
|
||||
},
|
||||
"dependencies": {
|
||||
"es6-promise": "*",
|
||||
"ws": "*",
|
||||
"xmlhttprequest": "*",
|
||||
"bignumber.js": ">=2.0.0"
|
||||
|
@ -1,4 +1,3 @@
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
|
@ -1,5 +1,3 @@
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
|
@ -1,5 +1,3 @@
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
|
@ -1,5 +1,3 @@
|
||||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
|
Loading…
Reference in New Issue
Block a user