Compare commits

...

5 Commits

Author SHA1 Message Date
Pavel Murygin
cacef402ee fix types 2021-04-09 18:55:39 +03:00
Pavel Murygin
5bfad1908b bump dependencies 2021-04-09 18:12:25 +03:00
Vasco Santos
4326d714d9 chore: release version v0.3.0 2021-04-08 11:55:53 +02:00
Vasco Santos
c206807805 chore: update contributors 2021-04-08 11:55:52 +02:00
Vasco Santos
e0552b5b6b
feat: add types (#16) 2021-04-08 11:52:55 +02:00
15 changed files with 245 additions and 142 deletions

74
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,74 @@
name: ci
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npx aegir lint
- run: npx aegir ts -p check
- run: npx aegir build
- run: npx aegir dep-check
- uses: ipfs/aegir/actions/bundle-size@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
test-node:
needs: check
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
node: [14, 15]
fail-fast: true
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- run: npm install
- run: npx nyc --reporter=lcov aegir test -t node -- --bail
- uses: codecov/codecov-action@v1
test-chrome:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npx aegir test -t browser -t webworker --bail
test-firefox:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npx aegir test -t browser -t webworker --bail -- --browsers FirefoxHeadless
test-webkit:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: microsoft/playwright-github-action@v1
- run: npm install
- run: npx aegir test -t browser -t webworker --bail -- --browser webkit
test-electron-main:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npx xvfb-maybe aegir test -t electron-main --bail
test-electron-renderer:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npx xvfb-maybe aegir test -t electron-renderer --bail

View File

@ -1,52 +0,0 @@
language: node_js
cache: npm
stages:
- check
- test
- cov
node_js:
- '10'
- '12'
os:
- linux
- osx
script: npx nyc -s npm run test:node -- --bail
after_success: npx nyc report --reporter=text-lcov > coverage.lcov && npx codecov
jobs:
include:
- os: windows
filter_secrets: false
cache: false
- stage: check
script:
- npx aegir commitlint --travis
- npx aegir dep-check
- npm run lint
- stage: test
name: chrome
addons:
chrome: stable
script: npx aegir test -t browser -t webworker
- stage: test
name: firefox
addons:
firefox: latest
script: npx aegir test -t browser -t webworker -- --browsers FirefoxHeadless
- stage: test
name: electron
services:
- xvfb
script:
- npm run test:electron
- npm run test:electron-renderer
notifications:
email: false

View File

@ -1,3 +1,12 @@
# [0.3.0](https://github.com/libp2p/js-libp2p-utils/compare/v0.2.3...v0.3.0) (2021-04-08)
### Features
* add types ([#16](https://github.com/libp2p/js-libp2p-utils/issues/16)) ([e0552b5](https://github.com/libp2p/js-libp2p-utils/commit/e0552b5b6b1d912a8f6f1e39b1a4b70fca91f547))
<a name="0.2.3"></a> <a name="0.2.3"></a>
## [0.2.3](https://github.com/libp2p/js-libp2p-utils/compare/v0.2.2...v0.2.3) (2020-11-30) ## [0.2.3](https://github.com/libp2p/js-libp2p-utils/compare/v0.2.2...v0.2.3) (2020-11-30)

View File

@ -1,10 +1,24 @@
{ {
"name": "libp2p-utils", "name": "libp2p-utils",
"version": "0.2.3", "version": "0.3.0",
"description": "Package to aggregate shared logic and dependencies for the libp2p ecosystem", "description": "Package to aggregate shared logic and dependencies for the libp2p ecosystem",
"leadMaintainer": "Vasco Santos <santos.vasco10@gmail.com>", "leadMaintainer": "Vasco Santos <santos.vasco10@gmail.com>",
"main": "src/index.js", "main": "src/index.js",
"types": "dist/src/index.d.ts",
"typesVersions": {
"*": {
"src/*": [
"dist/src/*",
"dist/src/*/index"
]
}
},
"files": [
"src",
"dist"
],
"scripts": { "scripts": {
"prepare": "aegir build --no-bundle",
"test": "aegir test", "test": "aegir test",
"test:browser": "aegir test -t browser", "test:browser": "aegir test -t browser",
"test:node": "aegir test -t node", "test:node": "aegir test -t node",
@ -29,18 +43,21 @@
}, },
"homepage": "https://github.com/libp2p/js-libp2p-utils#readme", "homepage": "https://github.com/libp2p/js-libp2p-utils#readme",
"devDependencies": { "devDependencies": {
"aegir": "^27.0.0", "@types/debug": "^4.1.5",
"aegir": "^32.1.0",
"it-pair": "^1.0.0", "it-pair": "^1.0.0",
"it-pipe": "^1.1.0", "it-pipe": "^1.1.0",
"streaming-iterables": "^5.0.3" "libp2p-interfaces": "fluencelabs/js-libp2p-interfaces",
"streaming-iterables": "^5.0.3",
"util": "^0.12.3"
}, },
"dependencies": { "dependencies": {
"abortable-iterator": "^3.0.0", "abortable-iterator": "^3.0.0",
"debug": "^4.2.0", "debug": "^4.3.0",
"err-code": "^2.0.3", "err-code": "^3.0.1",
"ip-address": "^6.1.0", "ip-address": "^7.1.0",
"is-loopback-addr": "^1.0.0", "is-loopback-addr": "^1.0.0",
"multiaddr": "^8.0.0", "multiaddr": "^9.0.1",
"private-ip": "^2.1.1" "private-ip": "^2.1.1"
}, },
"contributors": [ "contributors": [

View File

@ -2,6 +2,16 @@
const isPrivate = require('./multiaddr/is-private') const isPrivate = require('./multiaddr/is-private')
/**
* @typedef {import('multiaddr').Multiaddr} Multiaddr
*/
/**
* @typedef {Object} Address
* @property {Multiaddr} multiaddr peer multiaddr.
* @property {boolean} isCertified obtained from a signed peer record.
*/
/** /**
* Compare function for array.sort(). * Compare function for array.sort().
* This sort aims to move the private adresses to the end of the array. * This sort aims to move the private adresses to the end of the array.

View File

@ -1,5 +1,9 @@
'use strict' 'use strict'
const debug = require('debug')
const log = Object.assign(debug('libp2p:ip-port-to-multiaddr'), {
error: debug('libp2p:ip-port-to-multiaddr:err')
})
const multiaddr = require('multiaddr') const multiaddr = require('multiaddr')
const errCode = require('err-code') const errCode = require('err-code')
const { Address4, Address6 } = require('ip-address') const { Address4, Address6 } = require('ip-address')
@ -21,25 +25,31 @@ function ipPortToMultiaddr (ip, port) {
throw errCode(new Error(`invalid ip provided: ${ip}`), errors.ERR_INVALID_IP_PARAMETER) throw errCode(new Error(`invalid ip provided: ${ip}`), errors.ERR_INVALID_IP_PARAMETER)
} }
port = parseInt(port) if (typeof port === 'string') {
port = parseInt(port)
}
if (isNaN(port)) { if (isNaN(port)) {
throw errCode(new Error(`invalid port provided: ${port}`), errors.ERR_INVALID_PORT_PARAMETER) throw errCode(new Error(`invalid port provided: ${port}`), errors.ERR_INVALID_PORT_PARAMETER)
} }
if (new Address4(ip).isValid()) { try {
return multiaddr(`/ip4/${ip}/tcp/${port}`) // Test valid IPv4
} new Address4(ip) // eslint-disable-line no-new
return new multiaddr.Multiaddr(`/ip4/${ip}/tcp/${port}`)
} catch {}
const ip6 = new Address6(ip) try {
// Test valid IPv6
if (ip6.isValid()) { const ip6 = new Address6(ip)
return ip6.is4() return ip6.is4()
? multiaddr(`/ip4/${ip6.to4().correctForm()}/tcp/${port}`) ? new multiaddr.Multiaddr(`/ip4/${ip6.to4().correctForm()}/tcp/${port}`)
: multiaddr(`/ip6/${ip}/tcp/${port}`) : new multiaddr.Multiaddr(`/ip6/${ip}/tcp/${port}`)
} catch (err) {
const errMsg = `invalid ip:port for creating a multiaddr: ${ip}:${port}`
log.error(errMsg)
throw errCode(new Error(errMsg), errors.ERR_INVALID_IP)
} }
throw errCode(new Error(`invalid ip:port for creating a multiaddr: ${ip}:${port}`), errors.ERR_INVALID_IP)
} }
module.exports = ipPortToMultiaddr module.exports = ipPortToMultiaddr

View File

@ -1,7 +1,12 @@
'use strict' 'use strict'
// @ts-ignore is-loopback-addr does not publish types
const isLoopbackAddr = require('is-loopback-addr') const isLoopbackAddr = require('is-loopback-addr')
/**
* @typedef {import('multiaddr').Multiaddr} Multiaddr
*/
/** /**
* Check if a given multiaddr is a loopback address. * Check if a given multiaddr is a loopback address.
* *

View File

@ -1,7 +1,12 @@
'use strict' 'use strict'
// @ts-ignore private-ip does not publish types
const isIpPrivate = require('private-ip') const isIpPrivate = require('private-ip')
/**
* @typedef {import('multiaddr').Multiaddr} Multiaddr
*/
/** /**
* Check if a given multiaddr has a private address. * Check if a given multiaddr has a private address.
* *

View File

@ -1,24 +1,40 @@
'use strict' 'use strict'
const abortable = require('abortable-iterator') const { source: abortable } = require('abortable-iterator')
const log = require('debug')('libp2p:stream:converter') const debug = require('debug')
const log = debug('libp2p:stream:converter')
/**
* @typedef {import('multiaddr').Multiaddr} Multiaddr
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
*
* @typedef {Object} Timeline
* @property {number} open - connection opening timestamp.
* @property {number} [upgraded] - connection upgraded timestamp.
* @property {number} [close]
*/
/** /**
* Convert a duplex iterable into a MultiaddrConnection. * Convert a duplex iterable into a MultiaddrConnection.
* https://github.com/libp2p/interface-transport#multiaddrconnection * https://github.com/libp2p/interface-transport#multiaddrconnection
* *
* @param {object} streamProperties * @param {object} streamProperties
* @param {DuplexStream} streamProperties.stream * @param {MuxedStream} streamProperties.stream
* @param {Multiaddr} streamProperties.remoteAddr * @param {Multiaddr} streamProperties.remoteAddr
* @param {Multiaddr} streamProperties.localAddr * @param {Multiaddr} streamProperties.localAddr
* @param {object} [options] * @param {object} [options]
* @param {AbortSignal} [options.signal] * @param {AbortSignal} [options.signal]
* @returns {import('libp2p-interfaces/src/transport/types').MultiaddrConnection}
*/ */
function streamToMaConnection ({ stream, remoteAddr, localAddr }, options = {}) { function streamToMaConnection ({ stream, remoteAddr, localAddr }, options = {}) {
const { sink, source } = stream const { sink, source } = stream
const maConn = { const maConn = {
/**
* @param {Uint8Array} source
*/
async sink (source) { async sink (source) {
if (options.signal) { if (options.signal) {
// @ts-ignore ts infers source template will be a number
source = abortable(source, options.signal) source = abortable(source, options.signal)
} }
@ -35,16 +51,15 @@ function streamToMaConnection ({ stream, remoteAddr, localAddr }, options = {})
} }
close() close()
}, },
source: options.signal ? abortable(source, options.signal) : source, source: options.signal ? abortable(source, options.signal) : source,
conn: stream, conn: stream,
localAddr, localAddr,
remoteAddr, remoteAddr,
timeline: { open: Date.now() }, /** @type {Timeline} */
timeline: { open: Date.now(), close: undefined },
close () { close () {
sink([]) sink(new Uint8Array(0))
close() return close()
} }
} }
@ -52,6 +67,7 @@ function streamToMaConnection ({ stream, remoteAddr, localAddr }, options = {})
if (!maConn.timeline.close) { if (!maConn.timeline.close) {
maConn.timeline.close = Date.now() maConn.timeline.close = Date.now()
} }
return Promise.resolve()
} }
return maConn return maConn

View File

@ -10,44 +10,44 @@ describe('address-sort', () => {
it('should sort public addresses first', () => { it('should sort public addresses first', () => {
const addresses = [ const addresses = [
{ {
multiaddr: multiaddr('/ip4/127.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/4000'),
isCertified: false isCertified: false
}, },
{ {
multiaddr: multiaddr('/ip4/30.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/30.0.0.1/tcp/4000'),
isCertified: false isCertified: false
}, },
{ {
multiaddr: multiaddr('/ip4/31.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/31.0.0.1/tcp/4000'),
isCertified: false isCertified: false
} }
] ]
const sortedAddresses = publicAddressesFirst(addresses) const sortedAddresses = publicAddressesFirst(addresses)
expect(sortedAddresses[0].multiaddr.equals(multiaddr('/ip4/30.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[0].multiaddr.equals(new multiaddr.Multiaddr('/ip4/30.0.0.1/tcp/4000'))).to.eql(true)
expect(sortedAddresses[1].multiaddr.equals(multiaddr('/ip4/31.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[1].multiaddr.equals(new multiaddr.Multiaddr('/ip4/31.0.0.1/tcp/4000'))).to.eql(true)
expect(sortedAddresses[2].multiaddr.equals(multiaddr('/ip4/127.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[2].multiaddr.equals(new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/4000'))).to.eql(true)
}) })
it('should sort public certified addresses first', () => { it('should sort public certified addresses first', () => {
const addresses = [ const addresses = [
{ {
multiaddr: multiaddr('/ip4/127.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/4000'),
isCertified: false isCertified: false
}, },
{ {
multiaddr: multiaddr('/ip4/30.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/30.0.0.1/tcp/4000'),
isCertified: false isCertified: false
}, },
{ {
multiaddr: multiaddr('/ip4/31.0.0.1/tcp/4000'), multiaddr: new multiaddr.Multiaddr('/ip4/31.0.0.1/tcp/4000'),
isCertified: true isCertified: true
} }
] ]
const sortedAddresses = publicAddressesFirst(addresses) const sortedAddresses = publicAddressesFirst(addresses)
expect(sortedAddresses[0].multiaddr.equals(multiaddr('/ip4/31.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[0].multiaddr.equals(new multiaddr.Multiaddr('/ip4/31.0.0.1/tcp/4000'))).to.eql(true)
expect(sortedAddresses[1].multiaddr.equals(multiaddr('/ip4/30.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[1].multiaddr.equals(new multiaddr.Multiaddr('/ip4/30.0.0.1/tcp/4000'))).to.eql(true)
expect(sortedAddresses[2].multiaddr.equals(multiaddr('/ip4/127.0.0.1/tcp/4000'))).to.eql(true) expect(sortedAddresses[2].multiaddr.equals(new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/4000'))).to.eql(true)
}) })
}) })

View File

@ -9,15 +9,15 @@ const arrayEquals = require('../src/array-equals')
describe('non primitive array equals', () => { describe('non primitive array equals', () => {
it('returns true if two arrays of multiaddrs are equal', () => { it('returns true if two arrays of multiaddrs are equal', () => {
const a = [ const a = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
const b = [ const b = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
expect(arrayEquals(a, b)).to.eql(true) expect(arrayEquals(a, b)).to.eql(true)
@ -25,15 +25,15 @@ describe('non primitive array equals', () => {
it('returns true if two arrays of multiaddrs have the same content but different orders', () => { it('returns true if two arrays of multiaddrs have the same content but different orders', () => {
const a = [ const a = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
const b = [ const b = [
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
expect(arrayEquals(a, b)).to.eql(true) expect(arrayEquals(a, b)).to.eql(true)
@ -41,15 +41,15 @@ describe('non primitive array equals', () => {
it('returns false if two arrays of multiaddrs are different', () => { it('returns false if two arrays of multiaddrs are different', () => {
const a = [ const a = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
const b = [ const b = [
multiaddr('/ip4/127.0.0.1/tcp/8001'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8001'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
expect(arrayEquals(a, b)).to.eql(false) expect(arrayEquals(a, b)).to.eql(false)
@ -57,14 +57,14 @@ describe('non primitive array equals', () => {
it('returns false if two arrays of multiaddrs are partially equal, but different lengths', () => { it('returns false if two arrays of multiaddrs are partially equal, but different lengths', () => {
const a = [ const a = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/ip4/127.0.0.1/tcp/3000/ws'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/3000/ws'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
const b = [ const b = [
multiaddr('/ip4/127.0.0.1/tcp/8000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/8000'),
multiaddr('/dns4/test.libp2p.io') new multiaddr.Multiaddr('/dns4/test.libp2p.io')
] ]
expect(arrayEquals(a, b)).to.eql(false) expect(arrayEquals(a, b)).to.eql(false)

View File

@ -9,10 +9,10 @@ const isLoopback = require('../../src/multiaddr/is-loopback')
describe('multiaddr isLoopback', () => { describe('multiaddr isLoopback', () => {
it('identifies loopback ip4 multiaddrs', () => { it('identifies loopback ip4 multiaddrs', () => {
[ [
multiaddr('/ip4/127.0.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/1000'),
multiaddr('/ip4/127.0.1.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/127.0.1.1/tcp/1000'),
multiaddr('/ip4/127.1.1.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/127.1.1.1/tcp/1000'),
multiaddr('/ip4/127.255.255.255/tcp/1000') new multiaddr.Multiaddr('/ip4/127.255.255.255/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isLoopback(ma)).to.eql(true) expect(isLoopback(ma)).to.eql(true)
}) })
@ -20,10 +20,10 @@ describe('multiaddr isLoopback', () => {
it('identifies non loopback ip4 multiaddrs', () => { it('identifies non loopback ip4 multiaddrs', () => {
[ [
multiaddr('/ip4/101.0.26.90/tcp/1000'), new multiaddr.Multiaddr('/ip4/101.0.26.90/tcp/1000'),
multiaddr('/ip4/10.0.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/10.0.0.1/tcp/1000'),
multiaddr('/ip4/192.168.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/192.168.0.1/tcp/1000'),
multiaddr('/ip4/172.16.0.1/tcp/1000') new multiaddr.Multiaddr('/ip4/172.16.0.1/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isLoopback(ma)).to.eql(false) expect(isLoopback(ma)).to.eql(false)
}) })
@ -31,7 +31,7 @@ describe('multiaddr isLoopback', () => {
it('identifies loopback ip6 multiaddrs', () => { it('identifies loopback ip6 multiaddrs', () => {
[ [
multiaddr('/ip6/::1/tcp/1000') new multiaddr.Multiaddr('/ip6/::1/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isLoopback(ma)).to.eql(true) expect(isLoopback(ma)).to.eql(true)
}) })
@ -39,8 +39,8 @@ describe('multiaddr isLoopback', () => {
it('identifies non loopback ip6 multiaddrs', () => { it('identifies non loopback ip6 multiaddrs', () => {
[ [
multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'), new multiaddr.Multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/::/tcp/1000') new multiaddr.Multiaddr('/ip6/::/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isLoopback(ma)).to.eql(false) expect(isLoopback(ma)).to.eql(false)
}) })
@ -48,8 +48,8 @@ describe('multiaddr isLoopback', () => {
it('identifies other multiaddrs as not loopback addresses', () => { it('identifies other multiaddrs as not loopback addresses', () => {
[ [
multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'), new multiaddr.Multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'),
multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443') new multiaddr.Multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443')
].forEach(ma => { ].forEach(ma => {
expect(isLoopback(ma)).to.eql(false) expect(isLoopback(ma)).to.eql(false)
}) })

View File

@ -9,10 +9,10 @@ const isPrivate = require('../../src/multiaddr/is-private')
describe('multiaddr isPrivate', () => { describe('multiaddr isPrivate', () => {
it('identifies private ip4 multiaddrs', () => { it('identifies private ip4 multiaddrs', () => {
[ [
multiaddr('/ip4/127.0.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/127.0.0.1/tcp/1000'),
multiaddr('/ip4/10.0.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/10.0.0.1/tcp/1000'),
multiaddr('/ip4/192.168.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/192.168.0.1/tcp/1000'),
multiaddr('/ip4/172.16.0.1/tcp/1000') new multiaddr.Multiaddr('/ip4/172.16.0.1/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isPrivate(ma)).to.eql(true) expect(isPrivate(ma)).to.eql(true)
}) })
@ -20,10 +20,10 @@ describe('multiaddr isPrivate', () => {
it('identifies public ip4 multiaddrs', () => { it('identifies public ip4 multiaddrs', () => {
[ [
multiaddr('/ip4/101.0.26.90/tcp/1000'), new multiaddr.Multiaddr('/ip4/101.0.26.90/tcp/1000'),
multiaddr('/ip4/40.1.20.9/tcp/1000'), new multiaddr.Multiaddr('/ip4/40.1.20.9/tcp/1000'),
multiaddr('/ip4/92.168.0.1/tcp/1000'), new multiaddr.Multiaddr('/ip4/92.168.0.1/tcp/1000'),
multiaddr('/ip4/2.16.0.1/tcp/1000') new multiaddr.Multiaddr('/ip4/2.16.0.1/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isPrivate(ma)).to.eql(false) expect(isPrivate(ma)).to.eql(false)
}) })
@ -31,8 +31,8 @@ describe('multiaddr isPrivate', () => {
it('identifies private ip6 multiaddrs', () => { it('identifies private ip6 multiaddrs', () => {
[ [
multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:7095/tcp/1000'), new multiaddr.Multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:1/tcp/1000') new multiaddr.Multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:1/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isPrivate(ma)).to.eql(true) expect(isPrivate(ma)).to.eql(true)
}) })
@ -40,8 +40,8 @@ describe('multiaddr isPrivate', () => {
it('identifies public ip6 multiaddrs', () => { it('identifies public ip6 multiaddrs', () => {
[ [
multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'), new multiaddr.Multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/2000:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000') new multiaddr.Multiaddr('/ip6/2000:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000')
].forEach(ma => { ].forEach(ma => {
expect(isPrivate(ma)).to.eql(false) expect(isPrivate(ma)).to.eql(false)
}) })
@ -49,8 +49,8 @@ describe('multiaddr isPrivate', () => {
it('identifies other multiaddrs as not private addresses', () => { it('identifies other multiaddrs as not private addresses', () => {
[ [
multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'), new multiaddr.Multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'),
multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443') new multiaddr.Multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443')
].forEach(ma => { ].forEach(ma => {
expect(isPrivate(ma)).to.eql(false) expect(isPrivate(ma)).to.eql(false)
}) })

View File

@ -12,8 +12,8 @@ const streamToMaConn = require('../src/stream-to-ma-conn')
describe('Convert stream into a multiaddr connection', () => { describe('Convert stream into a multiaddr connection', () => {
it('converts a stream and adds the provided metadata', () => { it('converts a stream and adds the provided metadata', () => {
const stream = pair() const stream = pair()
const localAddr = multiaddr('/ip4/101.45.75.219/tcp/6000') const localAddr = new multiaddr.Multiaddr('/ip4/101.45.75.219/tcp/6000')
const remoteAddr = multiaddr('/ip4/100.46.74.201/tcp/6002') const remoteAddr = new multiaddr.Multiaddr('/ip4/100.46.74.201/tcp/6002')
const maConn = streamToMaConn({ const maConn = streamToMaConn({
stream, stream,

9
tsconfig.json Normal file
View File

@ -0,0 +1,9 @@
{
"extends": "aegir/src/config/tsconfig.aegir.json",
"compilerOptions": {
"outDir": "dist"
},
"include": [
"src"
]
}