Skip to content
This repository was archived by the owner on Jul 21, 2023. It is now read-only.

Commit f31fa94

Browse files
committed
chore: convert to typescript
Converts this module to typescript Track: libp2p/js-libp2p#1021 BREAKING CHANGE: No more default exports, no more CJS
1 parent 3730ffb commit f31fa94

20 files changed

+249
-260
lines changed

package.json

+29-11
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,27 @@
33
"version": "0.4.1",
44
"description": "Package to aggregate shared logic and dependencies for the libp2p ecosystem",
55
"leadMaintainer": "Vasco Santos <[email protected]>",
6-
"main": "src/index.js",
7-
"types": "dist/src/index.d.ts",
6+
"type": "module",
7+
"exports": {
8+
"multiaddr/is-loopback": {
9+
"import": "./dist/src/multiaddr/is-loopback.js"
10+
},
11+
"multiaddr/is-private": {
12+
"import": "./dist/src/multiaddr/is-private.js"
13+
},
14+
"address-sort": {
15+
"import": "./dist/src/address-sort.js"
16+
},
17+
"array-equals": {
18+
"import": "./dist/src/array-equals.js"
19+
},
20+
"ip-port-to-multiaddr": {
21+
"import": "./dist/src/ip-port-to-multiaddr.js"
22+
},
23+
"stream-to-ma-conn": {
24+
"import": "./dist/src/stream-to-ma-connr.js"
25+
}
26+
},
827
"typesVersions": {
928
"*": {
1029
"src/*": [
@@ -18,17 +37,16 @@
1837
"dist"
1938
],
2039
"scripts": {
21-
"prepare": "aegir build --no-bundle",
22-
"test": "aegir test",
23-
"test:browser": "aegir test -t browser",
24-
"test:node": "aegir test -t node",
25-
"test:electron": "aegir test -t electron-main",
26-
"test:electron-renderer": "aegir test -t electron-renderer",
40+
"pretest": "npm run build",
41+
"test": "aegir test -f ./dist/test/*.js",
42+
"test:browser": "aegir test -t browser -f ./dist/test/*.js",
43+
"test:node": "aegir test -t node -f ./dist/test/*.js",
44+
"test:electron": "aegir test -t electron-main -f ./dist/test/*.js",
2745
"lint": "aegir lint",
2846
"release": "aegir release --docs",
2947
"release-minor": "aegir release --target node --type minor --docs",
3048
"release-major": "aegir release --type major --docs",
31-
"build": "aegir build"
49+
"build": "tsc"
3250
},
3351
"pre-push": [
3452
"lint"
@@ -44,10 +62,10 @@
4462
"homepage": "https://github.com/libp2p/js-libp2p-utils#readme",
4563
"devDependencies": {
4664
"@types/debug": "^4.1.5",
47-
"aegir": "^33.0.0",
65+
"aegir": "^36.0.0",
4866
"it-pair": "^1.0.0",
4967
"it-pipe": "^1.1.0",
50-
"libp2p-interfaces": "^1.0.0",
68+
"libp2p-interfaces": "^2.0.0",
5169
"streaming-iterables": "^6.0.0",
5270
"util": "^0.12.3"
5371
},

src/address-sort.js renamed to src/address-sort.ts

+8-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
'use strict'
1+
import type { Multiaddr } from 'multiaddr'
2+
import { isPrivate } from './multiaddr/is-private.js'
23

3-
const isPrivate = require('./multiaddr/is-private')
4-
5-
/**
6-
* @typedef {import('multiaddr').Multiaddr} Multiaddr
7-
*/
4+
interface Address {
5+
multiaddr: Multiaddr
6+
isCertified: boolean
7+
}
88

99
/**
1010
* @typedef {Object} Address
@@ -21,7 +21,7 @@ const isPrivate = require('./multiaddr/is-private')
2121
* @param {Address} b
2222
* @returns {number}
2323
*/
24-
function addressesPublicFirstCompareFunction (a, b) {
24+
function addressesPublicFirstCompareFunction (a: Address, b: Address) {
2525
const isAPrivate = isPrivate(a.multiaddr)
2626
const isBPrivate = isPrivate(b.multiaddr)
2727

@@ -43,12 +43,7 @@ function addressesPublicFirstCompareFunction (a, b) {
4343
/**
4444
* Sort given addresses by putting public addresses first.
4545
* In case of equality, a certified address will come first.
46-
*
47-
* @param {Array<Address>} addresses
48-
* @returns {Array<Address>}
4946
*/
50-
function publicAddressesFirst (addresses) {
47+
export function publicAddressesFirst (addresses: Address[]) {
5148
return [...addresses].sort(addressesPublicFirstCompareFunction)
5249
}
53-
54-
module.exports.publicAddressesFirst = publicAddressesFirst

src/array-equals.js

-15
This file was deleted.

src/array-equals.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/**
2+
* Verify if two arrays of non primitive types with the "equals" function are equal.
3+
* Compatible with multiaddr, peer-id and others.
4+
*/
5+
export function arrayEquals (a: any[], b: any[]) {
6+
const sort = (a: any, b: any) => a.toString().localeCompare(b.toString())
7+
return a.length === b.length && b.sort(sort) && a.sort(sort).every((item, index) => b[index].equals(item))
8+
}

src/index.js

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,32 @@
1-
'use strict'
1+
import debug from 'debug'
2+
import { Multiaddr } from 'multiaddr'
3+
import errCode from 'err-code'
4+
import { Address4, Address6 } from 'ip-address'
25

3-
const debug = require('debug')
46
const log = Object.assign(debug('libp2p:ip-port-to-multiaddr'), {
57
error: debug('libp2p:ip-port-to-multiaddr:err')
68
})
7-
const { Multiaddr } = require('multiaddr')
8-
const errCode = require('err-code')
9-
const { Address4, Address6 } = require('ip-address')
109

11-
const errors = {
10+
export const Errors = {
1211
ERR_INVALID_IP_PARAMETER: 'ERR_INVALID_IP_PARAMETER',
1312
ERR_INVALID_PORT_PARAMETER: 'ERR_INVALID_PORT_PARAMETER',
1413
ERR_INVALID_IP: 'ERR_INVALID_IP'
1514
}
1615

1716
/**
1817
* Transform an IP, Port pair into a multiaddr
19-
*
20-
* @param {string} ip
21-
* @param {number|string} port
2218
*/
23-
function ipPortToMultiaddr (ip, port) {
19+
export function ipPortToMultiaddr (ip: string, port: number | string) {
2420
if (typeof ip !== 'string') {
25-
throw errCode(new Error(`invalid ip provided: ${ip}`), errors.ERR_INVALID_IP_PARAMETER)
21+
throw errCode(new Error(`invalid ip provided: ${ip}`), Errors.ERR_INVALID_IP_PARAMETER) // eslint-disable-line @typescript-eslint/restrict-template-expressions
2622
}
2723

2824
if (typeof port === 'string') {
2925
port = parseInt(port)
3026
}
3127

3228
if (isNaN(port)) {
33-
throw errCode(new Error(`invalid port provided: ${port}`), errors.ERR_INVALID_PORT_PARAMETER)
29+
throw errCode(new Error(`invalid port provided: ${port}`), Errors.ERR_INVALID_PORT_PARAMETER)
3430
}
3531

3632
try {
@@ -48,10 +44,6 @@ function ipPortToMultiaddr (ip, port) {
4844
} catch (err) {
4945
const errMsg = `invalid ip:port for creating a multiaddr: ${ip}:${port}`
5046
log.error(errMsg)
51-
throw errCode(new Error(errMsg), errors.ERR_INVALID_IP)
47+
throw errCode(new Error(errMsg), Errors.ERR_INVALID_IP)
5248
}
5349
}
54-
55-
module.exports = ipPortToMultiaddr
56-
57-
module.exports.Errors = errors

src/multiaddr/is-loopback.js

-22
This file was deleted.

src/multiaddr/is-loopback.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// @ts-expect-error is-loopback-addr does not publish types
2+
import isLoopbackAddr from 'is-loopback-addr'
3+
import type { Multiaddr } from 'multiaddr'
4+
5+
/**
6+
* Check if a given multiaddr is a loopback address.
7+
*/
8+
export function isLoopback (ma: Multiaddr) {
9+
const { address } = ma.nodeAddress()
10+
11+
return isLoopbackAddr(address)
12+
}

src/multiaddr/is-private.js

-22
This file was deleted.

src/multiaddr/is-private.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { Multiaddr } from 'multiaddr'
2+
import isIpPrivate from 'private-ip'
3+
4+
/**
5+
* Check if a given multiaddr has a private address.
6+
*/
7+
export function isPrivate (ma: Multiaddr) {
8+
const { address } = ma.nodeAddress()
9+
10+
return isIpPrivate(address)
11+
}

src/stream-to-ma-conn.js

-76
This file was deleted.

0 commit comments

Comments
 (0)