diff --git a/packages/ripple-address-codec/.travis.yml b/packages/ripple-address-codec/.travis.yml index 9bf9623b..9e3e581f 100644 --- a/packages/ripple-address-codec/.travis.yml +++ b/packages/ripple-address-codec/.travis.yml @@ -3,6 +3,7 @@ node_js: - '0.12' script: - npm test --coverage +- npm run-script lint - npm run-script coveralls env: global: diff --git a/packages/ripple-address-codec/package.json b/packages/ripple-address-codec/package.json index 92d8cdd8..1abed7a3 100644 --- a/packages/ripple-address-codec/package.json +++ b/packages/ripple-address-codec/package.json @@ -6,15 +6,18 @@ "license": "ISC", "dependencies": { "hash.js": "^1.0.3", - "x-address-codec": "^0.5.0" + "x-address-codec": "^0.6.0" }, "scripts": { "test": "istanbul test _mocha", - "coveralls": "cat ./coverage/lcov.info | coveralls" + "prepublish": "npm test && npm run lint", + "coveralls": "cat ./coverage/lcov.info | coveralls", + "lint": "if ! [ -f eslintrc ]; then curl -o eslintrc 'https://raw.githubusercontent.com/ripple/javascript-style-guide/master/eslintrc'; fi; eslint --reset -c eslintrc src/*.js test/*.js" }, "devDependencies": { - "istanbul": "~0.3.5", "coveralls": "~2.10.0", + "eslint": "^0.24.1", + "istanbul": "~0.3.5", "mocha": "^2.2.5" }, "readmeFilename": "README.md", diff --git a/packages/ripple-address-codec/src/index.js b/packages/ripple-address-codec/src/index.js index d7918519..9f277191 100644 --- a/packages/ripple-address-codec/src/index.js +++ b/packages/ripple-address-codec/src/index.js @@ -1,3 +1,5 @@ +'use strict'; + var hashjs = require('hash.js'); var apiFactory = require('x-address-codec'); @@ -8,12 +10,12 @@ var FAMILY_SEED = 33; var ED25519_SEED = [0x01, 0xE1, 0x4B]; module.exports = apiFactory({ - sha256: function (bytes) { + sha256: function(bytes) { return hashjs.sha256().update(bytes).digest(); }, defaultAlphabet: 'ripple', codecMethods: { - EdSeed : { + EdSeed: { expectedLength: 16, version: ED25519_SEED }, @@ -23,9 +25,9 @@ module.exports = apiFactory({ versions: [ED25519_SEED, FAMILY_SEED], expectedLength: 16 }, - AccountID: {version: ACCOUNT_ID }, - NodePublic: {version: NODE_PUBLIC }, + AccountID: {version: ACCOUNT_ID}, + NodePublic: {version: NODE_PUBLIC}, NodePrivate: {version: NODE_PRIVATE}, - K256Seed : {version: FAMILY_SEED } + K256Seed: {version: FAMILY_SEED} } }); diff --git a/packages/ripple-address-codec/test/codec-test.js b/packages/ripple-address-codec/test/codec-test.js index bee0a3bd..ac13946e 100644 --- a/packages/ripple-address-codec/test/codec-test.js +++ b/packages/ripple-address-codec/test/codec-test.js @@ -1,3 +1,5 @@ +'use strict'; + var assert = require('assert'); var api = require('../'); @@ -26,22 +28,32 @@ describe('ripple-address-codec', function() { makeTest('AccountID', 'rJrRMgiRgrU6hDF4pgu5DXQdWyPbY35ErN', 'BA8E78626EE42C41B46D46C3048DF3A1C3C87072'); - makeTest('NodePublic', 'n9MXXueo837zYH36DvMc13BwHcqtfAWNJY5czWVbp7uYTj7x17TH', - '0388E5BA87A000CB807240DF8C848EB0B5FFA5C8E5A521BC8E105C0F0A44217828'); + makeTest( + 'NodePublic', + 'n9MXXueo837zYH36DvMc13BwHcqtfAWNJY5czWVbp7uYTj7x17TH', + '0388E5BA87A000CB807240DF8C848EB0B5FFA5C8E5A521BC8E105C0F0A44217828'); - makeTest('K256Seed', 'sn259rEFXrQrWyx3Q7XneWcwV6dfL', - 'CF2DE378FBDD7E2EE87D486DFB5A7BFF'); + makeTest('K256Seed', 'sn259rEFXrQrWyx3Q7XneWcwV6dfL', + 'CF2DE378FBDD7E2EE87D486DFB5A7BFF'); - makeTest('EdSeed', 'sEdTM1uX8pu2do5XvTnutH6HsouMaM2', - '4C3A1D213FBDFB14C7C28D609469B341'); + makeTest('EdSeed', 'sEdTM1uX8pu2do5XvTnutH6HsouMaM2', + '4C3A1D213FBDFB14C7C28D609469B341'); it('can decode arbitray seeds', function() { var decoded = api.decodeSeed('sEdTM1uX8pu2do5XvTnutH6HsouMaM2'); assert.equal(toHex(decoded.bytes), '4C3A1D213FBDFB14C7C28D609469B341'); assert.equal(decoded.type, 'ed25519'); - var decoded = api.decodeSeed('sn259rEFXrQrWyx3Q7XneWcwV6dfL'); - assert.equal(toHex(decoded.bytes), 'CF2DE378FBDD7E2EE87D486DFB5A7BFF'); - assert.equal(decoded.type, 'secp256k1'); + var decoded2 = api.decodeSeed('sn259rEFXrQrWyx3Q7XneWcwV6dfL'); + assert.equal(toHex(decoded2.bytes), 'CF2DE378FBDD7E2EE87D486DFB5A7BFF'); + assert.equal(decoded2.type, 'secp256k1'); + }); + + it('can pass a type as second arg to encodeSeed', function() { + var edSeed = 'sEdTM1uX8pu2do5XvTnutH6HsouMaM2'; + var decoded = api.decodeSeed(edSeed); + assert.equal(toHex(decoded.bytes), '4C3A1D213FBDFB14C7C28D609469B341'); + assert.equal(decoded.type, 'ed25519'); + assert.equal(api.encodeSeed(decoded.bytes, decoded.type), edSeed); }); });