@libp2p/utils 6.7.2-a02cb0461 → 6.7.2-da78fa851
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +2 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/abstract-message-stream.d.ts.map +1 -1
- package/dist/src/abstract-message-stream.js +8 -4
- package/dist/src/abstract-message-stream.js.map +1 -1
- package/dist/src/abstract-multiaddr-connection.d.ts +2 -2
- package/dist/src/abstract-multiaddr-connection.d.ts.map +1 -1
- package/dist/src/get-thin-waist-addresses.browser.d.ts +1 -1
- package/dist/src/get-thin-waist-addresses.browser.d.ts.map +1 -1
- package/dist/src/get-thin-waist-addresses.browser.js +4 -3
- package/dist/src/get-thin-waist-addresses.browser.js.map +1 -1
- package/dist/src/get-thin-waist-addresses.d.ts +1 -1
- package/dist/src/get-thin-waist-addresses.d.ts.map +1 -1
- package/dist/src/get-thin-waist-addresses.js +7 -9
- package/dist/src/get-thin-waist-addresses.js.map +1 -1
- package/dist/src/mock-muxer.js +1 -1
- package/dist/src/mock-muxer.js.map +1 -1
- package/dist/src/multiaddr/get-net-config.d.ts +55 -0
- package/dist/src/multiaddr/get-net-config.d.ts.map +1 -0
- package/dist/src/multiaddr/get-net-config.js +54 -0
- package/dist/src/multiaddr/get-net-config.js.map +1 -0
- package/dist/src/multiaddr/index.d.ts +1 -1
- package/dist/src/multiaddr/index.d.ts.map +1 -1
- package/dist/src/multiaddr/index.js +1 -1
- package/dist/src/multiaddr/index.js.map +1 -1
- package/dist/src/multiaddr/is-global-unicast.d.ts.map +1 -1
- package/dist/src/multiaddr/is-global-unicast.js +8 -9
- package/dist/src/multiaddr/is-global-unicast.js.map +1 -1
- package/dist/src/multiaddr/is-link-local.d.ts.map +1 -1
- package/dist/src/multiaddr/is-link-local.js +11 -16
- package/dist/src/multiaddr/is-link-local.js.map +1 -1
- package/dist/src/multiaddr/is-loopback.d.ts.map +1 -1
- package/dist/src/multiaddr/is-loopback.js +12 -5
- package/dist/src/multiaddr/is-loopback.js.map +1 -1
- package/dist/src/multiaddr/is-network-address.d.ts.map +1 -1
- package/dist/src/multiaddr/is-network-address.js +4 -16
- package/dist/src/multiaddr/is-network-address.js.map +1 -1
- package/dist/src/multiaddr/is-private.d.ts.map +1 -1
- package/dist/src/multiaddr/is-private.js +9 -10
- package/dist/src/multiaddr/is-private.js.map +1 -1
- package/dist/src/multiaddr/utils.d.ts +5 -0
- package/dist/src/multiaddr/utils.d.ts.map +1 -0
- package/dist/src/multiaddr/utils.js +32 -0
- package/dist/src/multiaddr/utils.js.map +1 -0
- package/dist/src/stream-utils.d.ts +1 -9
- package/dist/src/stream-utils.d.ts.map +1 -1
- package/dist/src/stream-utils.js +4 -3
- package/dist/src/stream-utils.js.map +1 -1
- package/package.json +7 -7
- package/src/abstract-message-stream.ts +8 -4
- package/src/abstract-multiaddr-connection.ts +2 -2
- package/src/get-thin-waist-addresses.browser.ts +5 -4
- package/src/get-thin-waist-addresses.ts +8 -12
- package/src/mock-muxer.ts +1 -1
- package/src/multiaddr/get-net-config.ts +112 -0
- package/src/multiaddr/index.ts +1 -1
- package/src/multiaddr/is-global-unicast.ts +8 -11
- package/src/multiaddr/is-link-local.ts +11 -20
- package/src/multiaddr/is-loopback.ts +12 -7
- package/src/multiaddr/is-network-address.ts +4 -19
- package/src/multiaddr/is-private.ts +9 -14
- package/src/multiaddr/utils.ts +46 -0
- package/src/stream-utils.ts +5 -14
- package/dist/src/multiaddr/is-ip-based.d.ts +0 -6
- package/dist/src/multiaddr/is-ip-based.d.ts.map +0 -1
- package/dist/src/multiaddr/is-ip-based.js +0 -18
- package/dist/src/multiaddr/is-ip-based.js.map +0 -1
- package/src/multiaddr/is-ip-based.ts +0 -21
|
@@ -1,30 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getNetConfig } from './get-net-config.ts'
|
|
2
2
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
3
3
|
|
|
4
|
-
const NETWORK_CODECS = [
|
|
5
|
-
CODE_IP4,
|
|
6
|
-
CODE_IP6,
|
|
7
|
-
CODE_DNS,
|
|
8
|
-
CODE_DNS4,
|
|
9
|
-
CODE_DNS6,
|
|
10
|
-
CODE_DNSADDR
|
|
11
|
-
]
|
|
12
|
-
|
|
13
4
|
/**
|
|
14
5
|
* Check if a given multiaddr is a network address
|
|
15
6
|
*/
|
|
16
7
|
export function isNetworkAddress (ma: Multiaddr): boolean {
|
|
17
8
|
try {
|
|
18
|
-
|
|
19
|
-
if (code === CODE_IP6ZONE) {
|
|
20
|
-
continue
|
|
21
|
-
}
|
|
9
|
+
getNetConfig(ma)
|
|
22
10
|
|
|
23
|
-
|
|
24
|
-
}
|
|
11
|
+
return true
|
|
25
12
|
} catch {
|
|
26
|
-
|
|
13
|
+
return false
|
|
27
14
|
}
|
|
28
|
-
|
|
29
|
-
return false
|
|
30
15
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isPrivateIp } from '../private-ip.js'
|
|
2
|
-
import {
|
|
2
|
+
import { getNetConfig } from './get-net-config.ts'
|
|
3
3
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -7,21 +7,16 @@ import type { Multiaddr } from '@multiformats/multiaddr'
|
|
|
7
7
|
*/
|
|
8
8
|
export function isPrivate (ma: Multiaddr): boolean {
|
|
9
9
|
try {
|
|
10
|
-
|
|
11
|
-
// not an IP based multiaddr, cannot be private
|
|
12
|
-
return false
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const [[, value]] = ma.stringTuples()
|
|
10
|
+
const config = getNetConfig(ma)
|
|
16
11
|
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
switch (config.type) {
|
|
13
|
+
case 'ip4':
|
|
14
|
+
case 'ip6':
|
|
15
|
+
return isPrivateIp(config.host) ?? false
|
|
16
|
+
default:
|
|
17
|
+
return config.host === 'localhost'
|
|
19
18
|
}
|
|
20
|
-
|
|
21
|
-
return isPrivateIp(value) ?? false
|
|
22
19
|
} catch {
|
|
23
|
-
|
|
20
|
+
return false
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
return true
|
|
27
22
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CODE_IP4, CODE_IP6, CODE_IP6ZONE, multiaddr } from '@multiformats/multiaddr'
|
|
2
|
+
import type { NetConfig } from './get-net-config.ts'
|
|
3
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
4
|
+
|
|
5
|
+
export function getIpFromMultiaddr (ma: Multiaddr): string | undefined {
|
|
6
|
+
const components = ma.getComponents()
|
|
7
|
+
let index = 0
|
|
8
|
+
|
|
9
|
+
if (components[0]?.code === CODE_IP6ZONE) {
|
|
10
|
+
index++
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (components[index]?.code !== CODE_IP4 && components[index]?.code !== CODE_IP6) {
|
|
14
|
+
return
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return components[index]?.value
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function netConfigToMultiaddr (config: NetConfig, port?: number | string, host?: string): Multiaddr {
|
|
21
|
+
const parts: Array<string | number> = [
|
|
22
|
+
config.type,
|
|
23
|
+
host ?? config.host
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
if (config.protocol != null) {
|
|
27
|
+
const p = port ?? config.port
|
|
28
|
+
|
|
29
|
+
if (p != null) {
|
|
30
|
+
parts.push(
|
|
31
|
+
config.protocol,
|
|
32
|
+
p
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (config.type === 'ip6' && config.zone != null) {
|
|
38
|
+
parts.unshift('ip6zone', config.zone)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (config.cidr != null) {
|
|
42
|
+
parts.push('ipcidr', config.cidr)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return multiaddr(`/${parts.join('/')}`)
|
|
46
|
+
}
|
package/src/stream-utils.ts
CHANGED
|
@@ -6,8 +6,7 @@ import { raceSignal } from 'race-signal'
|
|
|
6
6
|
import * as varint from 'uint8-varint'
|
|
7
7
|
import { Uint8ArrayList } from 'uint8arraylist'
|
|
8
8
|
import { UnexpectedEOFError } from './errors.js'
|
|
9
|
-
import type { MessageStream, MultiaddrConnection, Stream } from '@libp2p/interface'
|
|
10
|
-
import type { AbortOptions } from '@multiformats/multiaddr'
|
|
9
|
+
import type { MessageStream, MultiaddrConnection, Stream, AbortOptions } from '@libp2p/interface'
|
|
11
10
|
import type { Duplex, Source, Transform, Sink } from 'it-stream-types'
|
|
12
11
|
|
|
13
12
|
const DEFAULT_MAX_BUFFER_SIZE = 4_194_304
|
|
@@ -51,14 +50,6 @@ export interface ByteStreamOpts {
|
|
|
51
50
|
* @default 4_194_304
|
|
52
51
|
*/
|
|
53
52
|
maxBufferSize?: number
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* If true, prevent message events propagating after they have been received,
|
|
57
|
-
*
|
|
58
|
-
* This is useful for when there are be other observers of messages and the
|
|
59
|
-
* caller does not wish to them to receive anything
|
|
60
|
-
*/
|
|
61
|
-
stopPropagation?: boolean
|
|
62
53
|
}
|
|
63
54
|
|
|
64
55
|
export interface ReadBytesOptions extends AbortOptions {
|
|
@@ -133,10 +124,6 @@ export function byteStream <T extends MessageStream> (stream: T, opts?: ByteStre
|
|
|
133
124
|
}
|
|
134
125
|
|
|
135
126
|
const byteStreamOnMessageListener = (evt: StreamMessageEvent): void => {
|
|
136
|
-
if (opts?.stopPropagation === true) {
|
|
137
|
-
// evt.stopImmediatePropagation()
|
|
138
|
-
}
|
|
139
|
-
|
|
140
127
|
readBuffer.append(evt.data)
|
|
141
128
|
|
|
142
129
|
if (readBuffer.byteLength > maxBufferSize) {
|
|
@@ -178,6 +165,7 @@ export function byteStream <T extends MessageStream> (stream: T, opts?: ByteStre
|
|
|
178
165
|
}
|
|
179
166
|
|
|
180
167
|
if (readBuffer.byteLength < options.bytes) {
|
|
168
|
+
stream.log.error('closed after reading %d/%d bytes', readBuffer.byteLength, options.bytes)
|
|
181
169
|
throw new UnexpectedEOFError(`Unexpected EOF - stream closed after reading ${readBuffer.byteLength}/${options.bytes} bytes`)
|
|
182
170
|
}
|
|
183
171
|
}
|
|
@@ -211,6 +199,7 @@ export function byteStream <T extends MessageStream> (stream: T, opts?: ByteStre
|
|
|
211
199
|
|
|
212
200
|
if (readBuffer.byteLength < toRead) {
|
|
213
201
|
if (isEOF(stream)) {
|
|
202
|
+
stream.log.error('closed while reading %d/%d bytes', readBuffer.byteLength, toRead)
|
|
214
203
|
throw new UnexpectedEOFError(`Unexpected EOF - stream closed while reading ${readBuffer.byteLength}/${toRead} bytes`)
|
|
215
204
|
}
|
|
216
205
|
|
|
@@ -353,10 +342,12 @@ export function lpStream <T extends MessageStream> (stream: T, opts: Partial<Len
|
|
|
353
342
|
})
|
|
354
343
|
|
|
355
344
|
if (buf == null) {
|
|
345
|
+
stream.log.error('tried to read %d bytes but the stream closed', dataLength)
|
|
356
346
|
throw new UnexpectedEOFError(`Unexpected EOF - tried to read ${dataLength} bytes but the stream closed`)
|
|
357
347
|
}
|
|
358
348
|
|
|
359
349
|
if (buf.byteLength !== dataLength) {
|
|
350
|
+
stream.log.error('read %d/%d bytes before the stream closed', buf.byteLength, dataLength)
|
|
360
351
|
throw new UnexpectedEOFError(`Unexpected EOF - read ${buf.byteLength}/${dataLength} bytes before the stream closed`)
|
|
361
352
|
}
|
|
362
353
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-ip-based.d.ts","sourceRoot":"","sources":["../../../src/multiaddr/is-ip-based.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAcjD"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { CODE_IP4, CODE_IP6, CODE_IP6ZONE } from '@multiformats/multiaddr';
|
|
2
|
-
/**
|
|
3
|
-
* Check if a given multiaddr is IP-based
|
|
4
|
-
*/
|
|
5
|
-
export function isIpBased(ma) {
|
|
6
|
-
try {
|
|
7
|
-
for (const { code } of ma.getComponents()) {
|
|
8
|
-
if (code === CODE_IP6ZONE) {
|
|
9
|
-
continue;
|
|
10
|
-
}
|
|
11
|
-
return code === CODE_IP4 || code === CODE_IP6;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
}
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=is-ip-based.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-ip-based.js","sourceRoot":"","sources":["../../../src/multiaddr/is-ip-based.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG1E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAE,EAAa;IACtC,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1C,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,SAAQ;YACV,CAAC;YAED,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAA;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CODE_IP4, CODE_IP6, CODE_IP6ZONE } from '@multiformats/multiaddr'
|
|
2
|
-
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Check if a given multiaddr is IP-based
|
|
6
|
-
*/
|
|
7
|
-
export function isIpBased (ma: Multiaddr): boolean {
|
|
8
|
-
try {
|
|
9
|
-
for (const { code } of ma.getComponents()) {
|
|
10
|
-
if (code === CODE_IP6ZONE) {
|
|
11
|
-
continue
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
return code === CODE_IP4 || code === CODE_IP6
|
|
15
|
-
}
|
|
16
|
-
} catch {
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return false
|
|
21
|
-
}
|