Merge commit 'ab745d3b0eb89d67db1ed953020c665be3d072ed' into develop
Conflicts: libjsqrc/ethereumjs/.travis.yml libjsqrc/ethereumjs/README.md libjsqrc/ethereumjs/dist/ethereum.js libjsqrc/ethereumjs/dist/ethereum.js.map libjsqrc/ethereumjs/lib/abi.js libjsqrc/ethereumjs/package.json
This commit is contained in:
parent
47687cf085
commit
ded221fba2
|
@ -8,4 +8,6 @@ before_script:
|
|||
script:
|
||||
- "jshint *.js lib"
|
||||
after_script:
|
||||
- npm run-script gulp
|
||||
- npm run-script build
|
||||
- npm test
|
||||
|
||||
|
|
26
README.md
26
README.md
|
@ -50,13 +50,35 @@ web3.eth.coinbase.then(function(result){
|
|||
|
||||
For another example see `example/index.html`.
|
||||
|
||||
## Contribute!
|
||||
|
||||
### Requirements
|
||||
|
||||
* Node.js
|
||||
* npm
|
||||
* gulp (build)
|
||||
* mocha (tests)
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install nodejs
|
||||
sudo apt-get install npm
|
||||
sudo apt-get install nodejs-legacy
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
* `gulp build`
|
||||
```bash (gulp)
|
||||
npm run-script build
|
||||
```
|
||||
|
||||
|
||||
### Testing
|
||||
|
||||
```bash (mocha)
|
||||
npm test
|
||||
```
|
||||
|
||||
**Please note this repo is in it's early stage.**
|
||||
|
||||
If you'd like to run a WebSocket ethereum node check out
|
||||
|
@ -76,4 +98,4 @@ ethereum -ws -loglevel=4
|
|||
[dep-image]: https://david-dm.org/ethereum/ethereum.js.svg
|
||||
[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
|
||||
[dep-dev-url]: https://david-dm.org/ethereum/ethereum.js#info=devDependencies
|
||||
|
|
|
@ -93,6 +93,12 @@ var setupInputTypes = function () {
|
|||
}
|
||||
|
||||
var padding = calcPadding(type, expected);
|
||||
if (padding > 32)
|
||||
return false; // not allowed to be so big.
|
||||
padding = 32; // override as per the new ABI.
|
||||
|
||||
if (prefix === "string")
|
||||
return web3.fromAscii(value, padding).substr(2);
|
||||
if (typeof value === "number")
|
||||
value = value.toString(16);
|
||||
else if (typeof value === "string")
|
||||
|
@ -111,6 +117,8 @@ var setupInputTypes = function () {
|
|||
return false;
|
||||
}
|
||||
|
||||
padding = 32; //override as per the new ABI.
|
||||
|
||||
return padLeft(formatter ? formatter(value) : value, padding * 2);
|
||||
};
|
||||
};
|
||||
|
@ -166,12 +174,16 @@ var setupOutputTypes = function () {
|
|||
}
|
||||
|
||||
var padding = calcPadding(type, expected);
|
||||
if (padding > 32)
|
||||
return -1; // not allowed to be so big.
|
||||
padding = 32; // override as per the new ABI.
|
||||
return padding * 2;
|
||||
};
|
||||
};
|
||||
|
||||
var namedType = function (name, padding) {
|
||||
return function (type) {
|
||||
padding = 32; // override as per the new ABI.
|
||||
return name === type ? padding * 2 : -1;
|
||||
};
|
||||
};
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
12
lib/abi.js
12
lib/abi.js
|
@ -92,6 +92,12 @@ var setupInputTypes = function () {
|
|||
}
|
||||
|
||||
var padding = calcPadding(type, expected);
|
||||
if (padding > 32)
|
||||
return false; // not allowed to be so big.
|
||||
padding = 32; // override as per the new ABI.
|
||||
|
||||
if (prefix === "string")
|
||||
return web3.fromAscii(value, padding).substr(2);
|
||||
if (typeof value === "number")
|
||||
value = value.toString(16);
|
||||
else if (typeof value === "string")
|
||||
|
@ -110,6 +116,8 @@ var setupInputTypes = function () {
|
|||
return false;
|
||||
}
|
||||
|
||||
padding = 32; //override as per the new ABI.
|
||||
|
||||
return padLeft(formatter ? formatter(value) : value, padding * 2);
|
||||
};
|
||||
};
|
||||
|
@ -165,12 +173,16 @@ var setupOutputTypes = function () {
|
|||
}
|
||||
|
||||
var padding = calcPadding(type, expected);
|
||||
if (padding > 32)
|
||||
return -1; // not allowed to be so big.
|
||||
padding = 32; // override as per the new ABI.
|
||||
return padding * 2;
|
||||
};
|
||||
};
|
||||
|
||||
var namedType = function (name, padding) {
|
||||
return function (type) {
|
||||
padding = 32; // override as per the new ABI.
|
||||
return name === type ? padding * 2 : -1;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -25,12 +25,14 @@
|
|||
"jshint": ">=2.5.0",
|
||||
"uglifyify": "^2.6.0",
|
||||
"unreachable-branch-transform": "^0.1.0",
|
||||
"vinyl-source-stream": "^1.0.0"
|
||||
"vinyl-source-stream": "^1.0.0",
|
||||
"mocha": ">=2.1.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "gulp",
|
||||
"watch": "gulp watch",
|
||||
"lint": "gulp lint"
|
||||
"lint": "gulp lint",
|
||||
"test": "mocha"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
var assert = require('assert');
|
||||
var abi = require('../lib/abi.js');
|
||||
|
||||
describe('abi', function() {
|
||||
describe('inputParser', function() {
|
||||
it('should parse ...', function() {
|
||||
|
||||
var desc = [{
|
||||
"name": "multiply",
|
||||
"inputs": [
|
||||
{
|
||||
"name": "a",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "d",
|
||||
"type": "uint256"
|
||||
}
|
||||
]
|
||||
}];
|
||||
|
||||
var iParser = abi.inputParser(desc);
|
||||
assert.equal(iParser.multiply(1), "0x000000000000000000000000000000000000000000000000000000000000000001");
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('outputParser', function() {
|
||||
it('parse ...', function() {
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
|
||||
|
||||
describe('web3', function() {
|
||||
describe('db', function() {
|
||||
it('should have all methods implemented', function() {
|
||||
u.methodExists(web3.db, 'put');
|
||||
u.methodExists(web3.db, 'get');
|
||||
u.methodExists(web3.db, 'putString');
|
||||
u.methodExists(web3.db, 'getString');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
|
||||
|
||||
describe('web3', function() {
|
||||
describe('eth', function() {
|
||||
it('should have all methods implemented', function() {
|
||||
u.methodExists(web3.eth, 'balanceAt');
|
||||
u.methodExists(web3.eth, 'stateAt');
|
||||
u.methodExists(web3.eth, 'storageAt');
|
||||
u.methodExists(web3.eth, 'countAt');
|
||||
u.methodExists(web3.eth, 'codeAt');
|
||||
u.methodExists(web3.eth, 'transact');
|
||||
u.methodExists(web3.eth, 'call');
|
||||
u.methodExists(web3.eth, 'block');
|
||||
u.methodExists(web3.eth, 'transaction');
|
||||
u.methodExists(web3.eth, 'uncle');
|
||||
u.methodExists(web3.eth, 'compilers');
|
||||
u.methodExists(web3.eth, 'lll');
|
||||
u.methodExists(web3.eth, 'solidity');
|
||||
u.methodExists(web3.eth, 'serpent');
|
||||
u.methodExists(web3.eth, 'logs');
|
||||
});
|
||||
|
||||
it('should have all properties implemented', function () {
|
||||
u.propertyExists(web3.eth, 'coinbase');
|
||||
u.propertyExists(web3.eth, 'listening');
|
||||
u.propertyExists(web3.eth, 'mining');
|
||||
u.propertyExists(web3.eth, 'gasPrice');
|
||||
u.propertyExists(web3.eth, 'account');
|
||||
u.propertyExists(web3.eth, 'accounts');
|
||||
u.propertyExists(web3.eth, 'peerCount');
|
||||
u.propertyExists(web3.eth, 'defaultBlock');
|
||||
u.propertyExists(web3.eth, 'number');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
--reporter Spec
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
|
||||
|
||||
describe('web3', function() {
|
||||
describe('shh', function() {
|
||||
it('should have all methods implemented', function() {
|
||||
u.methodExists(web3.shh, 'post');
|
||||
u.methodExists(web3.shh, 'newIdentity');
|
||||
u.methodExists(web3.shh, 'haveIdentity');
|
||||
u.methodExists(web3.shh, 'newGroup');
|
||||
u.methodExists(web3.shh, 'addToGroup');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
var assert = require('assert');
|
||||
|
||||
var methodExists = function (object, method) {
|
||||
assert.equal('function', typeof object[method], 'method ' + method + ' is not implemented');
|
||||
};
|
||||
|
||||
var propertyExists = function (object, property) {
|
||||
assert.equal('object', typeof object[property], 'property ' + property + ' is not implemented');
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
methodExists: methodExists,
|
||||
propertyExists: propertyExists
|
||||
};
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
require('es6-promise').polyfill();
|
||||
|
||||
var assert = require('assert');
|
||||
var web3 = require('../index.js');
|
||||
var u = require('./utils.js');
|
||||
web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
|
||||
|
||||
describe('web3', function() {
|
||||
it('should have all methods implemented', function() {
|
||||
u.methodExists(web3, 'sha3');
|
||||
u.methodExists(web3, 'toAscii');
|
||||
u.methodExists(web3, 'fromAscii');
|
||||
u.methodExists(web3, 'toFixed');
|
||||
u.methodExists(web3, 'fromFixed');
|
||||
u.methodExists(web3, 'offset');
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue