Compare commits

...

10 Commits

Author SHA1 Message Date
e206c46549 chore: release version v0.8.6 2017-03-30 10:06:09 +01:00
41d3e5be5b chore: update contributors 2017-03-30 10:06:09 +01:00
bc213dd818 Merge pull request #58 from libp2p/feat/isEqual
feat: isEqual
2017-03-30 10:02:36 +01:00
3f4f670691 feat: isEqual 2017-03-30 09:47:11 +01:00
d2894bfa32 chore: release version v0.8.5 2017-03-27 14:20:31 +01:00
c3e3b70d09 chore: update contributors 2017-03-27 14:20:31 +01:00
f08866047d Merge pull request #57 from libp2p/feat/isPeerId
isPeerId
2017-03-27 14:17:09 +01:00
a3fe1a2f03 fix: avoid using constructor.name 2017-03-27 13:58:21 +01:00
0acc572fd3 feat: isPeerId 2017-03-27 13:23:18 +01:00
8c49610dff chore: update deps 2017-03-27 12:38:48 +01:00
4 changed files with 49 additions and 6 deletions

View File

@ -203,6 +203,9 @@ Returns an `obj` of the form
Alias for `.toJSON()`. Alias for `.toJSON()`.
### `isEqual(id)`
- `id` can be a PeerId or a Buffer containing the id
# License # License

View File

@ -1,6 +1,6 @@
{ {
"name": "peer-id", "name": "peer-id",
"version": "0.8.4", "version": "0.8.6",
"description": "IPFS Peer Id implementation in Node.js", "description": "IPFS Peer Id implementation in Node.js",
"main": "src/index.js", "main": "src/index.js",
"bin": "src/bin.js", "bin": "src/bin.js",
@ -34,15 +34,16 @@
}, },
"homepage": "https://github.com/libp2p/js-peer-id", "homepage": "https://github.com/libp2p/js-peer-id",
"devDependencies": { "devDependencies": {
"aegir": "^11.0.0", "aegir": "^11.0.1",
"chai": "^3.5.0", "chai": "^3.5.0",
"dirty-chai": "^1.2.2", "dirty-chai": "^1.2.2",
"pre-commit": "^1.2.2" "pre-commit": "^1.2.2"
}, },
"dependencies": { "dependencies": {
"libp2p-crypto": "~0.8.6", "async": "^2.2.0",
"multihashes": "~0.4.4", "libp2p-crypto": "~0.8.7",
"async": "^2.1.5" "lodash": "^4.17.4",
"multihashes": "~0.4.5"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -88,10 +88,19 @@ class PeerId {
toB58String () { toB58String () {
return this._idB58String return this._idB58String
} }
isEqual (id) {
if (Buffer.isBuffer(id)) {
return this.id.equals(id)
} else if (id.id) {
return this.id.equals(id.id)
} else {
throw new Error('not valid Id')
}
}
} }
exports = module.exports = PeerId exports = module.exports = PeerId
exports.Buffer = Buffer
// generation // generation
exports.create = function (opts, callback) { exports.create = function (opts, callback) {
@ -219,6 +228,12 @@ exports.createFromJSON = function (obj, callback) {
} }
} }
exports.isPeerId = function (peerId) {
return Boolean(typeof peerId === 'object' &&
peerId._id &&
peerId._idB58String)
}
function toB64Opt (val) { function toB64Opt (val) {
if (val) { if (val) {
return val.toString('base64') return val.toString('base64')

View File

@ -32,6 +32,16 @@ describe('PeerId', () => {
}) })
}) })
it('isPeerId', (done) => {
PeerId.create((err, id) => {
expect(err).to.not.exist()
expect(PeerId.isPeerId(id)).to.equal(true)
expect(PeerId.isPeerId('aaa')).to.equal(false)
expect(PeerId.isPeerId(new Buffer('batatas'))).to.equal(false)
done()
})
})
it('throws on changing the id', (done) => { it('throws on changing the id', (done) => {
PeerId.create((err, id) => { PeerId.create((err, id) => {
expect(err).to.not.exist() expect(err).to.not.exist()
@ -119,6 +129,20 @@ describe('PeerId', () => {
expect(id.toBytes().toString('hex')).to.equal(testIdBytes.toString('hex')) expect(id.toBytes().toString('hex')).to.equal(testIdBytes.toString('hex'))
}) })
it('isEqual', (done) => {
parallel([
(cb) => PeerId.create(cb),
(cb) => PeerId.create(cb)
], (err, ids) => {
expect(err).to.not.exist()
expect(ids[0].isEqual(ids[0])).to.equal(true)
expect(ids[0].isEqual(ids[1])).to.equal(false)
expect(ids[0].isEqual(ids[0].id)).to.equal(true)
expect(ids[0].isEqual(ids[1].id)).to.equal(false)
done()
})
})
describe('fromJSON', () => { describe('fromJSON', () => {
it('full node', (done) => { it('full node', (done) => {
PeerId.create({ bits: 1024 }, (err, id) => { PeerId.create({ bits: 1024 }, (err, id) => {