Skip to content

Commit 3c7f4d1

Browse files
committed
Merge remote-tracking branch 'utils/master'
2 parents 7de907d + a226369 commit 3c7f4d1

21 files changed

+1459
-0
lines changed

packages/utils/API.md

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
# API
2+
3+
* [addressSort.publicAddressesFirst(addresses)](#addresssortpublicaddressesfirstaddresses)
4+
* [Parameters](#parameters)
5+
* [Returns](#returns)
6+
* [Example](#example)
7+
* [arrayEquals(a, b)](#arrayequalsa-b)
8+
* [Parameters](#parameters)
9+
* [Returns](#returns)
10+
* [Example](#example)
11+
* [multiaddr .isLoopback(ma)](#multiaddr-isloopbackma)
12+
* [Parameters](#parameters-1)
13+
* [Returns](#returns-1)
14+
* [Example](#example-1)
15+
* [multiaddr .isPrivate(ma)](#multiaddr-isprivatema)
16+
* [Parameters](#parameters-2)
17+
* [Returns](#returns-2)
18+
* [Example](#example-2)
19+
* [ipPortToMultiaddr(ip, port)](#ipporttomultiaddrip-port)
20+
* [Parameters](#parameters-3)
21+
* [Returns](#returns-3)
22+
* [Example](#example-3)
23+
* [streamToMaConnection(streamProperties, options)](#streamtomaconnectionstreamproperties-options)
24+
* [Parameters](#parameters-4)
25+
* [Returns](#returns-4)
26+
* [Example](#example-4)
27+
28+
## addressSort.publicAddressesFirst(addresses)
29+
30+
Sort given addresses by putting public addresses first. In case of equality, a certified address will come first.
31+
32+
### Parameters
33+
34+
| Name | Type | Description |
35+
|------|------|-------------|
36+
| addresses | `Array<Address>` | Array of AddressBook addresses |
37+
38+
### Returns
39+
40+
| Type | Description |
41+
|------|-------------|
42+
| `Array<Address>` | returns array of sorted addresses |
43+
44+
### Example
45+
46+
```js
47+
const multiaddr = require('multiaddr')
48+
const { publicAddressesFirst } = require('libp2p-utils/src/address-sort')
49+
50+
const addresses = [
51+
{
52+
multiaddr: multiaddr('/ip4/127.0.0.1/tcp/4000'),
53+
isCertified: false
54+
},
55+
{
56+
multiaddr: multiaddr('/ip4/30.0.0.1/tcp/4000'),
57+
isCertified: false
58+
}
59+
]
60+
61+
const sortedAddresses = publicAddressesFirst(addresses)
62+
```
63+
64+
## arrayEquals(a, b)
65+
66+
Verify if two arrays of non primitive types with the "equals" function are equal.
67+
Compatible with multiaddr, peer-id and others.
68+
69+
### Parameters
70+
71+
| Name | Type | Description |
72+
|------|------|-------------|
73+
| a | `Array<*>` | First array to verify |
74+
| b | `Array<*>` | Second array to verify |
75+
76+
### Returns
77+
78+
| Type | Description |
79+
|------|-------------|
80+
| `boolean` | returns true if arrays are equal, false otherwise |
81+
82+
### Example
83+
84+
```js
85+
const PeerId = require('peer-id')
86+
const arrayEquals = require('libp2p-utils/src/array-equals')
87+
88+
const peerId1 = await PeerId.create()
89+
const peerId2 = await PeerId.create()
90+
91+
const equals = arrayEquals([peerId1], [peerId2])
92+
```
93+
94+
## multiaddr `.isLoopback(ma)`
95+
96+
Check if a given multiaddr is a loopback address.
97+
98+
### Parameters
99+
100+
| Name | Type | Description |
101+
|------|------|-------------|
102+
| ma | `Multiaddr` | multiaddr to verify |
103+
104+
### Returns
105+
106+
| Type | Description |
107+
|------|-------------|
108+
| `boolean` | returns true if multiaddr is a loopback address, false otherwise |
109+
110+
### Example
111+
112+
```js
113+
const multiaddr = require('multiaddr')
114+
const isLoopback = require('libp2p-utils/src/multiaddr/is-loopback')
115+
116+
const ma = multiaddr('/ip4/127.0.0.1/tcp/1000')
117+
isMultiaddrLoopbackAddrs = isLoopback(ma)
118+
```
119+
120+
## multiaddr `.isPrivate(ma)`
121+
122+
Check if a given multiaddr has a private address.
123+
124+
### Parameters
125+
126+
| Name | Type | Description |
127+
|------|------|-------------|
128+
| ma | `Multiaddr` | multiaddr to verify |
129+
130+
### Returns
131+
132+
| Type | Description |
133+
|------|-------------|
134+
| `boolean` | returns true if multiaddr is a private address, false otherwise |
135+
136+
### Example
137+
138+
```js
139+
const multiaddr = require('multiaddr')
140+
const isPrivate = require('libp2p-utils/src/multiaddr/is-private')
141+
142+
const ma = multiaddr('/ip4/10.0.0.1/tcp/1000')
143+
isMultiaddrPrivateAddrs = isPrivate(ma)
144+
```
145+
146+
## ipPortToMultiaddr(ip, port)
147+
148+
Transform an IP, Port pair into a multiaddr with tcp transport.
149+
150+
### Parameters
151+
152+
| Name | Type | Description |
153+
|------|------|-------------|
154+
| ip | `string` | ip for multiaddr |
155+
| port | `number|string` | port for multiaddr |
156+
157+
### Returns
158+
159+
| Type | Description |
160+
|------|-------------|
161+
| `Multiaddr` | returns created multiaddr |
162+
163+
### Example
164+
165+
```js
166+
const ipPortPairToMultiaddr = require('libp2p-utils/src/multiaddr/ip-port-to-multiaddr')
167+
const ip = '127.0.0.1'
168+
const port = '9090'
169+
170+
const ma = ipPortPairToMultiaddr(ma)
171+
```
172+
173+
## streamToMaConnection(streamProperties, options)
174+
175+
Convert a duplex stream into a [MultiaddrConnection](https://github.com/libp2p/interface-transport#multiaddrconnection).
176+
177+
### Parameters
178+
179+
| Name | Type | Description |
180+
|------|------|-------------|
181+
| streamProperties | `object` | duplex stream properties |
182+
| streamProperties.stream | [`DuplexStream`](https://github.com/libp2p/js-libp2p/blob/master/doc/STREAMING_ITERABLES.md#duplex) | duplex stream |
183+
| streamProperties.remoteAddr | `Multiaddr` | stream remote address |
184+
| streamProperties.localAddr | `Multiaddr` | stream local address |
185+
| [options] | `object` | options |
186+
| [options.signal] | `AbortSignal` | abort signal |
187+
188+
### Returns
189+
190+
| Type | Description |
191+
|------|-------------|
192+
| `Connection` | returns a multiaddr [Connection](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection) |
193+
194+
### Example
195+
196+
```js
197+
const streamToMaConnection = require('libp2p-utils/src/stream-to-ma-conn')
198+
199+
const stream = {
200+
sink: async source => {/* ... */},
201+
source: { [Symbol.asyncIterator] () {/* ... */} }
202+
}
203+
204+
const conn = streamToMaConnection({
205+
stream,
206+
remoteAddr: /* ... */
207+
localAddr; /* ... */
208+
})
209+
```

0 commit comments

Comments
 (0)