Browse Source

Squashed 'libjsqrc/ethereumjs/' changes from d509360..eceeda7

eceeda7 gulp
cc3e373 Merge pull request #109 from LefterisJP/string_hash_rename
3a22498 string type basically becomes bytes type
760634a Changing abi tests to use fixed bytes type
6554479 Merge pull request #108 from frozeman/apiOverhaul
b322378 removed unecessary utils
9a3d320 changed my author url
8516a2f removed uncommented line
1730f21 add version replacement use version.json now
27e5706 bumped version
3614cea bumped version
9c3d1b2 merged develop
2e320ed add versions
08a38b3 removed unecessary open in httpprovidor
5636510 add inputformatter for sha3
50ca903 add build
f351e95 removed unecessary log
67ab5ef removed unecessary log

git-subtree-dir: libjsqrc/ethereumjs
git-subtree-split: eceeda7d0878579cdc6324f3026ae88079c30720
cl-refactor
Marek Kotewicz 10 years ago
parent
commit
5bbd7b5c15
  1. 71
      dist/ethereum.js
  2. 20
      dist/ethereum.js.map
  3. 2
      dist/ethereum.min.js
  4. 16
      gulpfile.js
  5. 8
      lib/solidity/abi.js
  6. 6
      lib/solidity/types.js
  7. 34
      lib/web3.js
  8. 9
      lib/web3/db.js
  9. 3
      lib/web3/eth.js
  10. 1
      lib/web3/filter.js
  11. 2
      lib/web3/httpprovider.js
  12. 2
      lib/web3/requestmanager.js
  13. 2
      package.js
  14. 7
      package.json
  15. 66
      test/abi.inputParser.js
  16. 72
      test/abi.outputParser.js
  17. 4
      test/db.methods.js
  18. 3
      version.json

71
dist/ethereum.js

@ -58,7 +58,7 @@ var isArrayType = function (type) {
*/ */
var dynamicTypeBytes = function (type, value) { var dynamicTypeBytes = function (type, value) {
// TODO: decide what to do with array of strings // TODO: decide what to do with array of strings
if (isArrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length. if (isArrayType(type) || type === 'bytes')
return f.formatInputInt(value.length); return f.formatInputInt(value.length);
return ""; return "";
}; };
@ -99,7 +99,7 @@ var formatInput = function (inputs, params) {
toAppendArrayContent += params[i].reduce(function (acc, curr) { toAppendArrayContent += params[i].reduce(function (acc, curr) {
return acc + formatter(curr); return acc + formatter(curr);
}, ""); }, "");
else if (inputs[i].type === 'string') else if (inputs[i].type === 'bytes')
toAppendArrayContent += formatter(params[i]); toAppendArrayContent += formatter(params[i]);
else else
toAppendConstant += formatter(params[i]); toAppendConstant += formatter(params[i]);
@ -118,7 +118,7 @@ var formatInput = function (inputs, params) {
* @returns {Number} length of dynamic type, 0 or multiplication of ETH_PADDING (32) * @returns {Number} length of dynamic type, 0 or multiplication of ETH_PADDING (32)
*/ */
var dynamicBytesLength = function (type) { var dynamicBytesLength = function (type) {
if (isArrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length. if (isArrayType(type) || type === 'bytes')
return c.ETH_PADDING * 2; return c.ETH_PADDING * 2;
return 0; return 0;
}; };
@ -168,7 +168,7 @@ var formatOutput = function (outs, output) {
} }
result.push(array); result.push(array);
} }
else if (types.prefixedType('string')(outs[i].type)) { else if (types.prefixedType('bytes')(outs[i].type)) {
dynamicPart = dynamicPart.slice(padding); dynamicPart = dynamicPart.slice(padding);
result.push(formatter(output.slice(0, padding))); result.push(formatter(output.slice(0, padding)));
output = output.slice(padding); output = output.slice(padding);
@ -509,8 +509,7 @@ var inputTypes = function () {
return [ return [
{ type: prefixedType('uint'), format: f.formatInputInt }, { type: prefixedType('uint'), format: f.formatInputInt },
{ type: prefixedType('int'), format: f.formatInputInt }, { type: prefixedType('int'), format: f.formatInputInt },
{ type: prefixedType('hash'), format: f.formatInputInt }, { type: prefixedType('bytes'), format: f.formatInputString },
{ type: prefixedType('string'), format: f.formatInputString },
{ type: prefixedType('real'), format: f.formatInputReal }, { type: prefixedType('real'), format: f.formatInputReal },
{ type: prefixedType('ureal'), format: f.formatInputReal }, { type: prefixedType('ureal'), format: f.formatInputReal },
{ type: namedType('address'), format: f.formatInputInt }, { type: namedType('address'), format: f.formatInputInt },
@ -525,8 +524,7 @@ var outputTypes = function () {
return [ return [
{ type: prefixedType('uint'), format: f.formatOutputUInt }, { type: prefixedType('uint'), format: f.formatOutputUInt },
{ type: prefixedType('int'), format: f.formatOutputInt }, { type: prefixedType('int'), format: f.formatOutputInt },
{ type: prefixedType('hash'), format: f.formatOutputHash }, { type: prefixedType('bytes'), format: f.formatOutputString },
{ type: prefixedType('string'), format: f.formatOutputString },
{ type: prefixedType('real'), format: f.formatOutputReal }, { type: prefixedType('real'), format: f.formatOutputReal },
{ type: prefixedType('ureal'), format: f.formatOutputUReal }, { type: prefixedType('ureal'), format: f.formatOutputUReal },
{ type: namedType('address'), format: f.formatOutputAddress }, { type: namedType('address'), format: f.formatOutputAddress },
@ -1087,10 +1085,12 @@ module.exports = {
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */
var version = require('../version.json');
var net = require('./web3/net'); var net = require('./web3/net');
var eth = require('./web3/eth'); var eth = require('./web3/eth');
var db = require('./web3/db'); var db = require('./web3/db');
@ -1103,11 +1103,14 @@ var requestManager = require('./web3/requestmanager');
var c = require('./utils/config'); var c = require('./utils/config');
/// @returns an array of objects describing web3 api methods /// @returns an array of objects describing web3 api methods
var web3Methods = function () { var web3Methods = [
return [ { name: 'sha3', call: 'web3_sha3', inputFormatter: utils.toHex },
{ name: 'sha3', call: 'web3_sha3' } ];
]; var web3Properties = [
}; { name: 'version.client', getter: 'web3_clientVersion' },
{ name: 'version.network', getter: 'net_version' }
];
/// creates methods in a given object based on method description on input /// creates methods in a given object based on method description on input
/// setups api calls for these methods /// setups api calls for these methods
@ -1167,7 +1170,9 @@ var setupMethods = function (obj, methods) {
/// setups api calls for these properties /// setups api calls for these properties
var setupProperties = function (obj, properties) { var setupProperties = function (obj, properties) {
properties.forEach(function (property) { properties.forEach(function (property) {
var proto = {}; var objectProperties = property.name.split('.'),
proto = {};
proto.get = function () { proto.get = function () {
// show deprecated warning // show deprecated warning
@ -1197,6 +1202,13 @@ var setupProperties = function (obj, properties) {
} }
proto.enumerable = !property.newProperty; proto.enumerable = !property.newProperty;
if(objectProperties.length > 1) {
if(!obj[objectProperties[0]])
obj[objectProperties[0]] = {};
Object.defineProperty(obj[objectProperties[0]], objectProperties[1], proto);
} else
Object.defineProperty(obj, property.name, proto); Object.defineProperty(obj, property.name, proto);
}); });
@ -1227,6 +1239,11 @@ var shhWatch = {
/// setups web3 object, and it's in-browser executed methods /// setups web3 object, and it's in-browser executed methods
var web3 = { var web3 = {
version: {
api: version.version
},
manager: requestManager(), manager: requestManager(),
providers: {}, providers: {},
@ -1334,7 +1351,8 @@ Object.defineProperty(web3.eth, 'defaultBlock', {
/// setups all api methods /// setups all api methods
setupMethods(web3, web3Methods()); setupMethods(web3, web3Methods);
setupProperties(web3, web3Properties);
setupMethods(web3.net, net.methods); setupMethods(web3.net, net.methods);
setupProperties(web3.net, net.properties); setupProperties(web3.net, net.properties);
setupMethods(web3.eth, eth.methods); setupMethods(web3.eth, eth.methods);
@ -1347,7 +1365,7 @@ setupMethods(shhWatch, watches.shh());
module.exports = web3; module.exports = web3;
},{"./solidity/formatters":2,"./utils/config":4,"./utils/utils":5,"./web3/db":8,"./web3/eth":9,"./web3/filter":11,"./web3/net":15,"./web3/requestmanager":17,"./web3/shh":18,"./web3/watches":20}],7:[function(require,module,exports){ },{"../version.json":21,"./solidity/formatters":2,"./utils/config":4,"./utils/utils":5,"./web3/db":8,"./web3/eth":9,"./web3/filter":11,"./web3/net":15,"./web3/requestmanager":17,"./web3/shh":18,"./web3/watches":20}],7:[function(require,module,exports){
/* /*
This file is part of ethereum.js. This file is part of ethereum.js.
@ -1615,13 +1633,14 @@ module.exports = contract;
* @date 2015 * @date 2015
*/ */
/// @returns an array of objects describing web3.db api methods /// @returns an array of objects describing web3.db api methods
var methods = function () { var methods = function () {
return [ return [
{ name: 'put', call: 'db_put' }, { name: 'putString', call: 'db_putString'},
{ name: 'get', call: 'db_get' }, { name: 'getString', call: 'db_getString'},
{ name: 'putString', call: 'db_putString' }, { name: 'putHex', call: 'db_putHex'},
{ name: 'getString', call: 'db_getString' } { name: 'getHex', call: 'db_getHex'}
]; ];
}; };
@ -1649,6 +1668,7 @@ module.exports = {
/** @file eth.js /** @file eth.js
* @authors: * @authors:
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* @date 2015 * @date 2015
*/ */
@ -1734,7 +1754,7 @@ var methods = [
inputFormatter: formatters.inputTransactionFormatter }, inputFormatter: formatters.inputTransactionFormatter },
{ name: 'call', call: 'eth_call', addDefaultblock: 2, { name: 'call', call: 'eth_call', addDefaultblock: 2,
inputFormatter: formatters.inputCallFormatter }, inputFormatter: formatters.inputCallFormatter },
{ name: 'compile.solidity', call: 'eth_compileSolidity', inputFormatter: utils.toHex }, { name: 'compile.solidity', call: 'eth_compileSolidity' },
{ name: 'compile.lll', call: 'eth_compileLLL', inputFormatter: utils.toHex }, { name: 'compile.lll', call: 'eth_compileLLL', inputFormatter: utils.toHex },
{ name: 'compile.serpent', call: 'eth_compileSerpent', inputFormatter: utils.toHex }, { name: 'compile.serpent', call: 'eth_compileSerpent', inputFormatter: utils.toHex },
{ name: 'flush', call: 'eth_flush' }, { name: 'flush', call: 'eth_flush' },
@ -1941,6 +1961,7 @@ module.exports = {
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */
@ -2322,6 +2343,7 @@ module.exports = {
* @authors: * @authors:
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* @date 2014 * @date 2014
*/ */
@ -2337,7 +2359,6 @@ var HttpProvider = function (host) {
HttpProvider.prototype.send = function (payload, callback) { HttpProvider.prototype.send = function (payload, callback) {
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open('POST', this.host, false);
// ASYNC // ASYNC
if(typeof callback === 'function') { if(typeof callback === 'function') {
@ -2539,6 +2560,7 @@ module.exports = QtSyncProvider;
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */
@ -2609,7 +2631,6 @@ var requestManager = function() {
var result = provider.send(payload); var result = provider.send(payload);
if (!jsonrpc.isValidResponse(result)) { if (!jsonrpc.isValidResponse(result)) {
console.log(result);
if(typeof result === 'object' && result.error && result.error.message) if(typeof result === 'object' && result.error && result.error.message)
console.error(result.error.message); console.error(result.error.message);
return null; return null;
@ -2819,6 +2840,10 @@ module.exports = {
}; };
},{}],21:[function(require,module,exports){
module.exports={
"version": "0.1.3"
}
},{}],"web3":[function(require,module,exports){ },{}],"web3":[function(require,module,exports){
var web3 = require('./lib/web3'); var web3 = require('./lib/web3');
web3.providers.HttpProvider = require('./lib/web3/httpprovider'); web3.providers.HttpProvider = require('./lib/web3/httpprovider');

20
dist/ethereum.js.map

File diff suppressed because one or more lines are too long

2
dist/ethereum.min.js

File diff suppressed because one or more lines are too long

16
gulpfile.js

@ -2,6 +2,7 @@
'use strict'; 'use strict';
var version = require('./version.json');
var path = require('path'); var path = require('path');
var del = require('del'); var del = require('del');
@ -14,6 +15,7 @@ var source = require('vinyl-source-stream');
var exorcist = require('exorcist'); var exorcist = require('exorcist');
var bower = require('bower'); var bower = require('bower');
var streamify = require('gulp-streamify'); var streamify = require('gulp-streamify');
var replace = require('gulp-replace');
var DEST = './dist/'; var DEST = './dist/';
var src = 'index'; var src = 'index';
@ -26,6 +28,15 @@ var browserifyOptions = {
bundleExternal: false bundleExternal: false
}; };
gulp.task('versionReplace', function(){
gulp.src(['./package.json'])
.pipe(replace(/\"version\"\: \"(.{5})\"/, '"version": "'+ version.version + '"'))
.pipe(gulp.dest('./'));
gulp.src(['./package.js'])
.pipe(replace(/version\: \'(.{5})\'/, "version: '"+ version.version + "'"))
.pipe(gulp.dest('./'));
});
gulp.task('bower', function(cb){ gulp.task('bower', function(cb){
bower.commands.install().on('end', function (installed){ bower.commands.install().on('end', function (installed){
console.log(installed); console.log(installed);
@ -60,6 +71,9 @@ gulp.task('watch', function() {
gulp.watch(['./lib/*.js'], ['lint', 'build']); gulp.watch(['./lib/*.js'], ['lint', 'build']);
}); });
gulp.task('dev', ['bower', 'lint', 'build']); gulp.task('dev', ['versionReplace','bower', 'lint', 'build']);
gulp.task('default', ['dev']); gulp.task('default', ['dev']);
gulp.task('version', ['versionReplace']);

8
lib/solidity/abi.js

@ -57,7 +57,7 @@ var isArrayType = function (type) {
*/ */
var dynamicTypeBytes = function (type, value) { var dynamicTypeBytes = function (type, value) {
// TODO: decide what to do with array of strings // TODO: decide what to do with array of strings
if (isArrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length. if (isArrayType(type) || type === 'bytes')
return f.formatInputInt(value.length); return f.formatInputInt(value.length);
return ""; return "";
}; };
@ -98,7 +98,7 @@ var formatInput = function (inputs, params) {
toAppendArrayContent += params[i].reduce(function (acc, curr) { toAppendArrayContent += params[i].reduce(function (acc, curr) {
return acc + formatter(curr); return acc + formatter(curr);
}, ""); }, "");
else if (inputs[i].type === 'string') else if (inputs[i].type === 'bytes')
toAppendArrayContent += formatter(params[i]); toAppendArrayContent += formatter(params[i]);
else else
toAppendConstant += formatter(params[i]); toAppendConstant += formatter(params[i]);
@ -117,7 +117,7 @@ var formatInput = function (inputs, params) {
* @returns {Number} length of dynamic type, 0 or multiplication of ETH_PADDING (32) * @returns {Number} length of dynamic type, 0 or multiplication of ETH_PADDING (32)
*/ */
var dynamicBytesLength = function (type) { var dynamicBytesLength = function (type) {
if (isArrayType(type) || type === 'string') // only string itself that is dynamic; stringX is static length. if (isArrayType(type) || type === 'bytes')
return c.ETH_PADDING * 2; return c.ETH_PADDING * 2;
return 0; return 0;
}; };
@ -167,7 +167,7 @@ var formatOutput = function (outs, output) {
} }
result.push(array); result.push(array);
} }
else if (types.prefixedType('string')(outs[i].type)) { else if (types.prefixedType('bytes')(outs[i].type)) {
dynamicPart = dynamicPart.slice(padding); dynamicPart = dynamicPart.slice(padding);
result.push(formatter(output.slice(0, padding))); result.push(formatter(output.slice(0, padding)));
output = output.slice(padding); output = output.slice(padding);

6
lib/solidity/types.js

@ -45,8 +45,7 @@ var inputTypes = function () {
return [ return [
{ type: prefixedType('uint'), format: f.formatInputInt }, { type: prefixedType('uint'), format: f.formatInputInt },
{ type: prefixedType('int'), format: f.formatInputInt }, { type: prefixedType('int'), format: f.formatInputInt },
{ type: prefixedType('hash'), format: f.formatInputInt }, { type: prefixedType('bytes'), format: f.formatInputString },
{ type: prefixedType('string'), format: f.formatInputString },
{ type: prefixedType('real'), format: f.formatInputReal }, { type: prefixedType('real'), format: f.formatInputReal },
{ type: prefixedType('ureal'), format: f.formatInputReal }, { type: prefixedType('ureal'), format: f.formatInputReal },
{ type: namedType('address'), format: f.formatInputInt }, { type: namedType('address'), format: f.formatInputInt },
@ -61,8 +60,7 @@ var outputTypes = function () {
return [ return [
{ type: prefixedType('uint'), format: f.formatOutputUInt }, { type: prefixedType('uint'), format: f.formatOutputUInt },
{ type: prefixedType('int'), format: f.formatOutputInt }, { type: prefixedType('int'), format: f.formatOutputInt },
{ type: prefixedType('hash'), format: f.formatOutputHash }, { type: prefixedType('bytes'), format: f.formatOutputString },
{ type: prefixedType('string'), format: f.formatOutputString },
{ type: prefixedType('real'), format: f.formatOutputReal }, { type: prefixedType('real'), format: f.formatOutputReal },
{ type: prefixedType('ureal'), format: f.formatOutputUReal }, { type: prefixedType('ureal'), format: f.formatOutputUReal },
{ type: namedType('address'), format: f.formatOutputAddress }, { type: namedType('address'), format: f.formatOutputAddress },

34
lib/web3.js

@ -19,10 +19,12 @@
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */
var version = require('../version.json');
var net = require('./web3/net'); var net = require('./web3/net');
var eth = require('./web3/eth'); var eth = require('./web3/eth');
var db = require('./web3/db'); var db = require('./web3/db');
@ -35,11 +37,14 @@ var requestManager = require('./web3/requestmanager');
var c = require('./utils/config'); var c = require('./utils/config');
/// @returns an array of objects describing web3 api methods /// @returns an array of objects describing web3 api methods
var web3Methods = function () { var web3Methods = [
return [ { name: 'sha3', call: 'web3_sha3', inputFormatter: utils.toHex },
{ name: 'sha3', call: 'web3_sha3' } ];
]; var web3Properties = [
}; { name: 'version.client', getter: 'web3_clientVersion' },
{ name: 'version.network', getter: 'net_version' }
];
/// creates methods in a given object based on method description on input /// creates methods in a given object based on method description on input
/// setups api calls for these methods /// setups api calls for these methods
@ -99,7 +104,9 @@ var setupMethods = function (obj, methods) {
/// setups api calls for these properties /// setups api calls for these properties
var setupProperties = function (obj, properties) { var setupProperties = function (obj, properties) {
properties.forEach(function (property) { properties.forEach(function (property) {
var proto = {}; var objectProperties = property.name.split('.'),
proto = {};
proto.get = function () { proto.get = function () {
// show deprecated warning // show deprecated warning
@ -129,6 +136,13 @@ var setupProperties = function (obj, properties) {
} }
proto.enumerable = !property.newProperty; proto.enumerable = !property.newProperty;
if(objectProperties.length > 1) {
if(!obj[objectProperties[0]])
obj[objectProperties[0]] = {};
Object.defineProperty(obj[objectProperties[0]], objectProperties[1], proto);
} else
Object.defineProperty(obj, property.name, proto); Object.defineProperty(obj, property.name, proto);
}); });
@ -159,6 +173,11 @@ var shhWatch = {
/// setups web3 object, and it's in-browser executed methods /// setups web3 object, and it's in-browser executed methods
var web3 = { var web3 = {
version: {
api: version.version
},
manager: requestManager(), manager: requestManager(),
providers: {}, providers: {},
@ -266,7 +285,8 @@ Object.defineProperty(web3.eth, 'defaultBlock', {
/// setups all api methods /// setups all api methods
setupMethods(web3, web3Methods()); setupMethods(web3, web3Methods);
setupProperties(web3, web3Properties);
setupMethods(web3.net, net.methods); setupMethods(web3.net, net.methods);
setupProperties(web3.net, net.properties); setupProperties(web3.net, net.properties);
setupMethods(web3.eth, eth.methods); setupMethods(web3.eth, eth.methods);

9
lib/web3/db.js

@ -20,13 +20,14 @@
* @date 2015 * @date 2015
*/ */
/// @returns an array of objects describing web3.db api methods /// @returns an array of objects describing web3.db api methods
var methods = function () { var methods = function () {
return [ return [
{ name: 'put', call: 'db_put' }, { name: 'putString', call: 'db_putString'},
{ name: 'get', call: 'db_get' }, { name: 'getString', call: 'db_getString'},
{ name: 'putString', call: 'db_putString' }, { name: 'putHex', call: 'db_putHex'},
{ name: 'getString', call: 'db_getString' } { name: 'getHex', call: 'db_getHex'}
]; ];
}; };

3
lib/web3/eth.js

@ -17,6 +17,7 @@
/** @file eth.js /** @file eth.js
* @authors: * @authors:
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* @date 2015 * @date 2015
*/ */
@ -102,7 +103,7 @@ var methods = [
inputFormatter: formatters.inputTransactionFormatter }, inputFormatter: formatters.inputTransactionFormatter },
{ name: 'call', call: 'eth_call', addDefaultblock: 2, { name: 'call', call: 'eth_call', addDefaultblock: 2,
inputFormatter: formatters.inputCallFormatter }, inputFormatter: formatters.inputCallFormatter },
{ name: 'compile.solidity', call: 'eth_compileSolidity', inputFormatter: utils.toHex }, { name: 'compile.solidity', call: 'eth_compileSolidity' },
{ name: 'compile.lll', call: 'eth_compileLLL', inputFormatter: utils.toHex }, { name: 'compile.lll', call: 'eth_compileLLL', inputFormatter: utils.toHex },
{ name: 'compile.serpent', call: 'eth_compileSerpent', inputFormatter: utils.toHex }, { name: 'compile.serpent', call: 'eth_compileSerpent', inputFormatter: utils.toHex },
{ name: 'flush', call: 'eth_flush' }, { name: 'flush', call: 'eth_flush' },

1
lib/web3/filter.js

@ -19,6 +19,7 @@
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */

2
lib/web3/httpprovider.js

@ -18,6 +18,7 @@
* @authors: * @authors:
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* @date 2014 * @date 2014
*/ */
@ -33,7 +34,6 @@ var HttpProvider = function (host) {
HttpProvider.prototype.send = function (payload, callback) { HttpProvider.prototype.send = function (payload, callback) {
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open('POST', this.host, false);
// ASYNC // ASYNC
if(typeof callback === 'function') { if(typeof callback === 'function') {

2
lib/web3/requestmanager.js

@ -19,6 +19,7 @@
* Jeffrey Wilcke <jeff@ethdev.com> * Jeffrey Wilcke <jeff@ethdev.com>
* Marek Kotewicz <marek@ethdev.com> * Marek Kotewicz <marek@ethdev.com>
* Marian Oancea <marian@ethdev.com> * Marian Oancea <marian@ethdev.com>
* Fabian Vogelsteller <fabian@ethdev.com>
* Gav Wood <g@ethdev.com> * Gav Wood <g@ethdev.com>
* @date 2014 * @date 2014
*/ */
@ -89,7 +90,6 @@ var requestManager = function() {
var result = provider.send(payload); var result = provider.send(payload);
if (!jsonrpc.isValidResponse(result)) { if (!jsonrpc.isValidResponse(result)) {
console.log(result);
if(typeof result === 'object' && result.error && result.error.message) if(typeof result === 'object' && result.error && result.error.message)
console.error(result.error.message); console.error(result.error.message);
return null; return null;

2
package.js

@ -1,7 +1,7 @@
/* jshint ignore:start */ /* jshint ignore:start */
Package.describe({ Package.describe({
name: 'ethereum:js', name: 'ethereum:js',
version: '0.1.2', version: '0.1.3',
summary: 'Ethereum JavaScript API, middleware to talk to a ethreum node over RPC', summary: 'Ethereum JavaScript API, middleware to talk to a ethreum node over RPC',
git: 'https://github.com/ethereum/ethereum.js', git: 'https://github.com/ethereum/ethereum.js',
// By default, Meteor will default to using README.md for documentation. // By default, Meteor will default to using README.md for documentation.

7
package.json

@ -1,7 +1,7 @@
{ {
"name": "ethereum.js", "name": "ethereum.js",
"namespace": "ethereum", "namespace": "ethereum",
"version": "0.1.2", "version": "0.1.3",
"description": "Ethereum JavaScript API, middleware to talk to a ethreum node over RPC", "description": "Ethereum JavaScript API, middleware to talk to a ethreum node over RPC",
"main": "./index.js", "main": "./index.js",
"directories": { "directories": {
@ -23,6 +23,7 @@
"gulp": ">=3.4.0", "gulp": ">=3.4.0",
"gulp-jshint": ">=1.5.0", "gulp-jshint": ">=1.5.0",
"gulp-rename": ">=1.2.0", "gulp-rename": ">=1.2.0",
"gulp-replace": "^0.5.3",
"gulp-streamify": "0.0.5", "gulp-streamify": "0.0.5",
"gulp-uglify": ">=1.0.0", "gulp-uglify": ">=1.0.0",
"istanbul": "^0.3.5", "istanbul": "^0.3.5",
@ -89,8 +90,8 @@
}, },
{ {
"name": "Fabian Vogelsteller", "name": "Fabian Vogelsteller",
"email": "fabian@ethdev.com", "email": "fabian@frozeman.de",
"homepage": "https://github.com/frozeman" "homepage": "http://frozeman.de"
} }
], ],
"license": "LGPL-3.0" "license": "LGPL-3.0"

66
test/abi.inputParser.js

@ -227,56 +227,6 @@ describe('abi', function() {
}); });
it('should parse input hash', function() {
// given
var d = clone(description);
d[0].inputs = [
{ type: "hash" }
];
// when
var parser = abi.inputParser(d);
// then
assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
});
it('should parse input hash256', function() {
// given
var d = clone(description);
d[0].inputs = [
{ type: "hash256" }
];
// when
var parser = abi.inputParser(d);
// then
assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
});
it('should parse input hash160', function() {
// given
var d = clone(description);
d[0].inputs = [
{ type: "hash160" }
];
// when
var parser = abi.inputParser(d);
// then
assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
});
it('should parse input address', function () { it('should parse input address', function () {
// given // given
@ -294,13 +244,13 @@ describe('abi', function() {
}); });
it('should parse input string', function () { it('should parse input fixed bytes type', function () {
// given // given
var d = clone(description); var d = clone(description);
d[0].inputs = [ d[0].inputs = [
{ type: "string" } { type: "bytes" }
]; ];
// when // when
@ -318,14 +268,14 @@ describe('abi', function() {
); );
}); });
it('should parse input int followed by a string', function () { it('should parse input int followed by a fixed bytes type', function () {
// given // given
var d = clone(description); var d = clone(description);
d[0].inputs = [ d[0].inputs = [
{ type: "int" }, { type: "int" },
{ type: "string" } { type: "bytes" }
]; ];
// when // when
@ -340,13 +290,13 @@ describe('abi', function() {
); );
}); });
it('should parse input string followed by an int', function () { it('should parse input fixed bytes type followed by an int', function () {
// given // given
var d = clone(description); var d = clone(description);
d[0].inputs = [ d[0].inputs = [
{ type: "string" }, { type: "bytes" },
{ type: "int" } { type: "int" }
]; ];
@ -391,8 +341,8 @@ describe('abi', function() {
},{ },{
name: "test2", name: "test2",
type: "function", type: "function",
inputs: [{ type: "string" }], inputs: [{ type: "bytes" }],
outputs: [{ type: "string" }] outputs: [{ type: "bytes" }]
}]; }];
// when // when

72
test/abi.outputParser.js

@ -21,13 +21,13 @@ var description = [{
describe('abi', function() { describe('abi', function() {
describe('outputParser', function() { describe('outputParser', function() {
it('should parse output string', function() { it('should parse output fixed bytes type', function() {
// given // given
var d = clone(description); var d = clone(description);
d[0].outputs = [ d[0].outputs = [
{ type: "string" } { type: "bytes" }
]; ];
// when // when
@ -181,64 +181,6 @@ describe('abi', function() {
assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16); assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
}); });
it('should parse output hash', function() {
// given
var d = clone(description);
d[0].outputs = [
{ type: 'hash' }
];
// when
var parser = abi.outputParser(d);
// then
assert.equal(
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
);
});
it('should parse output hash256', function() {
// given
var d = clone(description);
d[0].outputs = [
{ type: 'hash256' }
];
// when
var parser = abi.outputParser(d);
// then
assert.equal(
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
);
});
it('should parse output hash160', function() {
// given
var d = clone(description);
d[0].outputs = [
{ type: 'hash160' }
];
// when
var parser = abi.outputParser(d);
// then
assert.equal(
parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
"0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
);
// TODO shouldnt' the expected hash be shorter?
});
it('should parse output address', function() { it('should parse output address', function() {
// given // given
@ -317,14 +259,14 @@ describe('abi', function() {
}); });
it('should parse multiple output strings', function() { it('should parse multiple output fixed bytes type', function() {
// given // given
var d = clone(description); var d = clone(description);
d[0].outputs = [ d[0].outputs = [
{ type: "string" }, { type: "bytes" },
{ type: "string" } { type: "bytes" }
]; ];
// when // when
@ -380,8 +322,8 @@ describe('abi', function() {
},{ },{
name: "test2", name: "test2",
type: "function", type: "function",
inputs: [{ type: "string" }], inputs: [{ type: "bytes" }],
outputs: [{ type: "string" }] outputs: [{ type: "bytes" }]
}]; }];
// when // when

4
test/db.methods.js

@ -5,8 +5,8 @@ var u = require('./test.utils.js');
describe('web3', function() { describe('web3', function() {
describe('db', function() { describe('db', function() {
u.methodExists(web3.db, 'put'); u.methodExists(web3.db, 'putHex');
u.methodExists(web3.db, 'get'); u.methodExists(web3.db, 'getHex');
u.methodExists(web3.db, 'putString'); u.methodExists(web3.db, 'putString');
u.methodExists(web3.db, 'getString'); u.methodExists(web3.db, 'getString');
}); });

3
version.json

@ -0,0 +1,3 @@
{
"version": "0.1.3"
}
Loading…
Cancel
Save