Comparing version 1.1.3 to 1.2.0
{ | ||
"name": "multiaddr", | ||
"version": "1.1.3", | ||
"version": "1.2.0", | ||
"description": "multiaddr implementation (binary + string representation of network addresses)", | ||
@@ -39,6 +39,6 @@ "main": "src/index.js", | ||
"dependencies": { | ||
"buffer-equal": "1.0.0", | ||
"ip": "^1.0.2", | ||
"lodash.filter": "^4.2.1", | ||
"lodash.map": "^4.2.1", | ||
"varint": "^4.0.0", | ||
"xtend": "^4.0.1" | ||
@@ -45,0 +45,0 @@ }, |
var map = require('lodash.map') | ||
var filter = require('lodash.filter') | ||
// var log = console.log | ||
var convert = require('./convert') | ||
var protocols = require('./protocols') | ||
var varint = require('varint') | ||
@@ -43,3 +43,4 @@ // export codec | ||
if (proto.size === 0) { | ||
return [part] | ||
tuples.push([part]) | ||
return tuples | ||
} | ||
@@ -67,2 +68,6 @@ | ||
}) | ||
if (parts[parts.length - 1] === '') { | ||
parts.pop() | ||
} | ||
return '/' + parts.join('/') | ||
@@ -74,2 +79,5 @@ } | ||
return map(tuples, function (tup) { | ||
if (!Array.isArray(tup)) { | ||
tup = [tup] | ||
} | ||
var proto = protoFromTuple(tup) | ||
@@ -98,3 +106,3 @@ if (tup.length > 1) { | ||
var proto = protoFromTuple(tup) | ||
var buf = new Buffer([proto.code]) | ||
var buf = new Buffer(varint.encode(proto.code)) | ||
if (tup.length > 1) { | ||
@@ -111,3 +119,4 @@ buf = Buffer.concat([buf, tup[1]]) // add address buffer | ||
for (var i = 0; i < buf.length;) { | ||
var code = buf[i] | ||
var code = varint.decode(buf, i) | ||
var proto = protocols(code) | ||
@@ -119,3 +128,3 @@ if (!proto) { | ||
var size = (proto.size / 8) | ||
code = 0 + buf[i] | ||
code = Number(code) | ||
var addr = buf.slice(i + 1, i + 1 + size) | ||
@@ -129,2 +138,3 @@ i += 1 + size | ||
tuples.push([code, addr]) | ||
i = i + varint.decode.bytes - 1 | ||
} | ||
@@ -184,6 +194,3 @@ return tuples | ||
var proto = protocols(tup[0]) | ||
if (tup.length > 1 && proto.size === 0) { | ||
throw ParseError('tuple has address but protocol size is 0') | ||
} | ||
return proto | ||
} |
var map = require('lodash.map') | ||
var extend = require('xtend') | ||
var codec = require('./codec') | ||
var bufeq = require('buffer-equal') | ||
var protocols = require('./protocols') | ||
@@ -10,4 +9,2 @@ var NotImplemented = new Error('Sorry, Not Implemented Yet.') | ||
exports.Buffer = Buffer | ||
function Multiaddr (addr) { | ||
@@ -30,3 +27,3 @@ if (!(this instanceof Multiaddr)) { | ||
} else { | ||
throw new Error('addr must be a string, Buffer, or Multiaddr') | ||
throw new Error('addr must be a string, Buffer, or another Multiaddr') | ||
} | ||
@@ -52,3 +49,3 @@ } | ||
Multiaddr.prototype.inspect = function inspect () { | ||
return '<Mutliaddr ' + | ||
return '<Multiaddr ' + | ||
this.buffer.toString('hex') + ' - ' + | ||
@@ -70,3 +67,3 @@ codec.bufferToString(this.buffer) + '>' | ||
return extend(protocols(code)) | ||
// copy to prevent users from modifying the internal objs. | ||
// copy to prevent users from modifying the internal objs. | ||
}) | ||
@@ -121,3 +118,3 @@ } | ||
Multiaddr.prototype.equals = function equals (addr) { | ||
return bufeq(this.buffer, addr.buffer) | ||
return this.buffer.equals(addr.buffer) | ||
} | ||
@@ -124,0 +121,0 @@ |
@@ -34,6 +34,8 @@ var map = require('lodash.map') | ||
[41, 128, 'ip6'], | ||
// these require varint: | ||
[132, 16, 'sctp'] | ||
// [480, 0, 'http'], | ||
// [443, 0, 'https'], | ||
[132, 16, 'sctp'], | ||
// these require varint for the protocol code | ||
[302, 0, 'utp'], | ||
[480, 0, 'http'], | ||
[443, 0, 'https'], | ||
[477, 0, 'websockets'] | ||
] | ||
@@ -40,0 +42,0 @@ |
@@ -45,2 +45,41 @@ /* eslint-env mocha */ | ||
describe('requiring varint', (done) => { | ||
var uTPAddr | ||
it('create multiaddr', (done) => { | ||
uTPAddr = multiaddr('/ip4/127.0.0.1/udp/1234/utp') | ||
expect(uTPAddr instanceof multiaddr).to.equal(true) | ||
done() | ||
}) | ||
it('clone multiaddr', (done) => { | ||
const uTPAddrClone = multiaddr(uTPAddr) | ||
expect(uTPAddrClone !== uTPAddr).to.equal(true) | ||
done() | ||
}) | ||
it('reconstruct with buffer', (done) => { | ||
expect(multiaddr(uTPAddr.buffer).buffer === uTPAddr.buffer).to.equal(false) | ||
expect(multiaddr(uTPAddr.buffer).buffer).to.deep.equal(uTPAddr.buffer) | ||
done() | ||
}) | ||
it('reconstruct with string', (done) => { | ||
expect(multiaddr(uTPAddr.toString()).buffer === uTPAddr.buffer).to.equal(false) | ||
expect(multiaddr(uTPAddr.toString()).buffer).to.deep.equal(uTPAddr.buffer) | ||
done() | ||
}) | ||
it('reconstruct with object', (done) => { | ||
expect(multiaddr(uTPAddr).buffer === uTPAddr.buffer).to.equal(false) | ||
expect(multiaddr(uTPAddr).buffer).to.deep.equal(uTPAddr.buffer) | ||
done() | ||
}) | ||
it('empty construct still works', (done) => { | ||
expect(multiaddr('').toString()).to.equal('/') | ||
done() | ||
}) | ||
}) | ||
describe('manipulation', () => { | ||
@@ -71,1 +110,121 @@ it('basic', (done) => { | ||
}) | ||
describe('variants', () => { | ||
it('ip4', (done) => { | ||
const str = '/ip4/127.0.0.1' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip4 + tcp', (done) => { | ||
const str = '/ip4/127.0.0.1/tcp/5000' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + tcp', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/5000' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip4 + udp', (done) => { | ||
const str = '/ip4/127.0.0.1/udp/5000' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + udp', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/udp/5000' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it.skip('ip4 + dccp', (done) => {}) | ||
it.skip('ip6 + dccp', (done) => {}) | ||
it.skip('ip4 + sctp', (done) => {}) | ||
it.skip('ip6 + sctp', (done) => {}) | ||
it('ip4 + udp + utp', (done) => { | ||
const str = '/ip4/127.0.0.1/udp/5000/utp' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + udp + utp', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/udp/5000/utp' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip4 + tcp + http', (done) => { | ||
const str = '/ip4/127.0.0.1/tcp/8000/http' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + tcp + http', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/http' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip4 + tcp + https', (done) => { | ||
const str = '/ip4/127.0.0.1/tcp/8000/https' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + tcp + https', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/https' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip4 + tcp + websockets', (done) => { | ||
const str = '/ip4/127.0.0.1/tcp/8000/websockets' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
it('ip6 + tcp + websockets', (done) => { | ||
const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/websockets' | ||
const addr = multiaddr(str) | ||
expect(addr).to.have.property('buffer') | ||
expect(addr.toString()).to.equal(str) | ||
done() | ||
}) | ||
}) |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
183252
5681
+ Addedvarint@^4.0.0
+ Addedvarint@4.0.1(transitive)
- Removedbuffer-equal@1.0.0
- Removedbuffer-equal@1.0.0(transitive)