From bd1bd971016fa96041d2b6d8c8a413ce6dd02837 Mon Sep 17 00:00:00 2001 From: Zane Starr Date: Sat, 10 Mar 2018 16:00:29 -0800 Subject: [PATCH 1/3] add filter functionality for multiaddr --- src/multiaddr-set.js | 4 ++++ test/index.spec.js | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/multiaddr-set.js b/src/multiaddr-set.js index a8f9bdf..894582c 100644 --- a/src/multiaddr-set.js +++ b/src/multiaddr-set.js @@ -52,6 +52,10 @@ class MultiaddrSet { return this._multiaddrs.forEach(fn) } + filter (fn) { + return this._multiaddrs.filter(fn) + } + has (ma) { ma = ensureMultiaddr(ma) return this._multiaddrs.some((m) => m.equals(ma)) diff --git a/test/index.spec.js b/test/index.spec.js index 76edc74..4a8e49e 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -260,6 +260,16 @@ describe('peer-info', () => { }) }) + it('multiaddrs.filter', () => { + const ma1 = Multiaddr('/ip4/127.0.0.1/tcp/7000') + const ma2 = Multiaddr('/ip4/127.0.0.1/tcp/5001') + pi.multiaddrs.add(ma1) + pi.multiaddrs.add(ma2) + const maddrs = pi.multiaddrs.filter((ma) => (ma.equals(ma1))) + expect(maddrs.length).to.eq(1) + expect(maddrs[0].equals(ma1)).to.eq(true) + }) + it('multiaddrs.toArray', () => { pi.multiaddrs.add('/ip4/127.0.0.1/tcp/5001') pi.multiaddrs.toArray().forEach((ma) => { From a97f5705b1d902be8e2d59850a47e2c09c95a3e5 Mon Sep 17 00:00:00 2001 From: Zane Starr Date: Tue, 13 Mar 2018 17:24:20 -0700 Subject: [PATCH 2/3] Refactor filter to use mafmt --- package.json | 3 ++- src/multiaddr-set.js | 9 +++++++-- test/index.spec.js | 7 ++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index c6320ff..a361b75 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,9 @@ "pre-commit": "^1.2.2" }, "dependencies": { - "multiaddr": "^3.0.2", + "js-mafmt": "^1.0.0", "lodash.uniqby": "^4.7.0", + "multiaddr": "^3.0.2", "peer-id": "~0.10.5" }, "contributors": [ diff --git a/src/multiaddr-set.js b/src/multiaddr-set.js index 894582c..8235556 100644 --- a/src/multiaddr-set.js +++ b/src/multiaddr-set.js @@ -52,8 +52,13 @@ class MultiaddrSet { return this._multiaddrs.forEach(fn) } - filter (fn) { - return this._multiaddrs.filter(fn) + filterBy (maFmt) { + if (typeof maFmt !== 'object' || + typeof maFmt.matches !== 'function' || + typeof maFmt.partialMatch !== 'function' || + typeof maFmt.toString !== 'function') return [] + + return this._multiaddrs.filter((ma) => maFmt.matches(ma)) } has (ma) { diff --git a/test/index.spec.js b/test/index.spec.js index 4a8e49e..88c0a08 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -7,6 +7,7 @@ chai.use(dirtyChai) const expect = chai.expect const Id = require('peer-id') const Multiaddr = require('multiaddr') +const mafmt = require('mafmt') const Info = require('../src') const peerIdJSON = require('./peer-test.json') @@ -260,12 +261,12 @@ describe('peer-info', () => { }) }) - it('multiaddrs.filter', () => { + it('multiaddrs.filterBy', () => { const ma1 = Multiaddr('/ip4/127.0.0.1/tcp/7000') - const ma2 = Multiaddr('/ip4/127.0.0.1/tcp/5001') + const ma2 = Multiaddr('/ip4/127.0.0.1/udp/5001') pi.multiaddrs.add(ma1) pi.multiaddrs.add(ma2) - const maddrs = pi.multiaddrs.filter((ma) => (ma.equals(ma1))) + const maddrs = pi.multiaddrs.filterBy(mafmt.TCP) expect(maddrs.length).to.eq(1) expect(maddrs[0].equals(ma1)).to.eq(true) }) From 4db47ed560cf108cc82d95354741aa77452b0345 Mon Sep 17 00:00:00 2001 From: Zane Starr Date: Tue, 13 Mar 2018 18:37:00 -0700 Subject: [PATCH 3/3] Fix package reference --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a361b75..5a910f3 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,8 @@ "pre-commit": "^1.2.2" }, "dependencies": { - "js-mafmt": "^1.0.0", "lodash.uniqby": "^4.7.0", + "mafmt": "^4.0.0", "multiaddr": "^3.0.2", "peer-id": "~0.10.5" },