diff --git a/src/protocols-table.js b/src/protocols-table.js index 0b8f2aa6..a9d6419d 100644 --- a/src/protocols-table.js +++ b/src/protocols-table.js @@ -36,9 +36,13 @@ Protocols.table = [ [132, 16, 'sctp'], // all of the below use varint for size [302, 0, 'utp'], - [421, Protocols.lengthPrefixedVarSize, 'ipfs'], - // preferred name for 421 (added below ipfs, p2p takes precedence during table population) + // `p2p` is the preferred name for 421 [421, Protocols.lengthPrefixedVarSize, 'p2p'], + // `ipfs` has been added after `p2p` so that it is used by default. + // The reason for this is to provide better backwards support for + // code bases that do not yet support the `p2p` proto name. Eventually + // `p2p` should become the default. + [421, Protocols.lengthPrefixedVarSize, 'ipfs'], [480, 0, 'http'], [443, 0, 'https'], [460, 0, 'quic'], diff --git a/test/index.spec.js b/test/index.spec.js index cfe00c1f..fa7171c9 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -215,6 +215,13 @@ describe('variants', () => { const str = '/ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234' const addr = multiaddr(str) expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) + }) + + it('ip4 + ipfs', () => { + const str = '/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') expect(addr.toString()).to.equal(str) }) @@ -222,7 +229,7 @@ describe('variants', () => { const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234' const addr = multiaddr(str) expect(addr).to.have.property('buffer') - expect(addr.toString()).to.equal(str) + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) }) it.skip('ip4 + dccp', () => {}) @@ -288,10 +295,24 @@ describe('variants', () => { expect(addr.toString()).to.equal(str) }) + it('ip6 + tcp + websockets + ipfs', () => { + const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str) + }) + it('ip6 + tcp + websockets + p2p', () => { const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/ws/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' const addr = multiaddr(str) expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) + }) + + it('ip6 + udp + quic + ipfs', () => { + const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/udp/4001/quic/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') expect(addr.toString()).to.equal(str) }) @@ -299,13 +320,20 @@ describe('variants', () => { const str = '/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/udp/4001/quic/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' const addr = multiaddr(str) expect(addr).to.have.property('buffer') - expect(addr.toString()).to.equal(str) + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) }) it('p2p', () => { const str = '/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' const addr = multiaddr(str) expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) + }) + + it('ipfs', () => { + const str = '/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') expect(addr.toString()).to.equal(str) }) @@ -313,13 +341,20 @@ describe('variants', () => { const str = '/p2p-circuit/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' const addr = multiaddr(str) expect(addr).to.have.property('buffer') - expect(addr.toString()).to.equal(str) + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) }) it('p2p-circuit p2p', () => { const str = '/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/p2p-circuit' const addr = multiaddr(str) expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) + }) + + it('p2p-circuit ipfs', () => { + const str = '/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/p2p-circuit' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') expect(addr.toString()).to.equal(str) }) @@ -327,6 +362,13 @@ describe('variants', () => { const str = '/ip4/127.0.0.1/tcp/9090/ws/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' const addr = multiaddr(str) expect(addr).to.have.property('buffer') + expect(addr.toString()).to.equal(str.replace('/p2p/', '/ipfs/')) + }) + + it('p2p-webrtc-star ipfs', () => { + const str = '/ip4/127.0.0.1/tcp/9090/ws/p2p-webrtc-star/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC' + const addr = multiaddr(str) + expect(addr).to.have.property('buffer') expect(addr.toString()).to.equal(str) }) @@ -381,7 +423,7 @@ describe('helpers', () => { }]) }) - it('works with ipfs/p2p', () => { + it('works with ipfs', () => { expect( multiaddr('/ip4/0.0.0.0/utp/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC').protos() ).to.be.eql([{ @@ -396,7 +438,28 @@ describe('helpers', () => { resolvable: false }, { code: 421, - name: 'p2p', + name: 'ipfs', + size: -1, + resolvable: false + }]) + }) + + it('works with p2p', () => { + expect( + multiaddr('/ip4/0.0.0.0/utp/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC').protos() + ).to.be.eql([{ + code: 4, + name: 'ip4', + size: 32, + resolvable: false + }, { + code: 302, + name: 'utp', + size: 0, + resolvable: false + }, { + code: 421, + name: 'ipfs', size: -1, resolvable: false }]) @@ -586,11 +649,16 @@ describe('helpers', () => { }) describe('.getPeerId should parse id from multiaddr', () => { - it('parses extracts the peer Id from a multiaddr', () => { + it('parses extracts the peer Id from a multiaddr, p2p', () => { expect( multiaddr('/p2p-circuit/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC').getPeerId() ).to.equal('QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') }) + it('parses extracts the peer Id from a multiaddr, ipfs', () => { + expect( + multiaddr('/p2p-circuit/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC').getPeerId() + ).to.equal('QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') + }) }) describe('.getPeerId should return null on missing peer id in multiaddr', () => {