@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.
Files changed (68) hide show
  1. package/dist/index.min.js +2 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/abstract-message-stream.d.ts.map +1 -1
  4. package/dist/src/abstract-message-stream.js +8 -4
  5. package/dist/src/abstract-message-stream.js.map +1 -1
  6. package/dist/src/abstract-multiaddr-connection.d.ts +2 -2
  7. package/dist/src/abstract-multiaddr-connection.d.ts.map +1 -1
  8. package/dist/src/get-thin-waist-addresses.browser.d.ts +1 -1
  9. package/dist/src/get-thin-waist-addresses.browser.d.ts.map +1 -1
  10. package/dist/src/get-thin-waist-addresses.browser.js +4 -3
  11. package/dist/src/get-thin-waist-addresses.browser.js.map +1 -1
  12. package/dist/src/get-thin-waist-addresses.d.ts +1 -1
  13. package/dist/src/get-thin-waist-addresses.d.ts.map +1 -1
  14. package/dist/src/get-thin-waist-addresses.js +7 -9
  15. package/dist/src/get-thin-waist-addresses.js.map +1 -1
  16. package/dist/src/mock-muxer.js +1 -1
  17. package/dist/src/mock-muxer.js.map +1 -1
  18. package/dist/src/multiaddr/get-net-config.d.ts +55 -0
  19. package/dist/src/multiaddr/get-net-config.d.ts.map +1 -0
  20. package/dist/src/multiaddr/get-net-config.js +54 -0
  21. package/dist/src/multiaddr/get-net-config.js.map +1 -0
  22. package/dist/src/multiaddr/index.d.ts +1 -1
  23. package/dist/src/multiaddr/index.d.ts.map +1 -1
  24. package/dist/src/multiaddr/index.js +1 -1
  25. package/dist/src/multiaddr/index.js.map +1 -1
  26. package/dist/src/multiaddr/is-global-unicast.d.ts.map +1 -1
  27. package/dist/src/multiaddr/is-global-unicast.js +8 -9
  28. package/dist/src/multiaddr/is-global-unicast.js.map +1 -1
  29. package/dist/src/multiaddr/is-link-local.d.ts.map +1 -1
  30. package/dist/src/multiaddr/is-link-local.js +11 -16
  31. package/dist/src/multiaddr/is-link-local.js.map +1 -1
  32. package/dist/src/multiaddr/is-loopback.d.ts.map +1 -1
  33. package/dist/src/multiaddr/is-loopback.js +12 -5
  34. package/dist/src/multiaddr/is-loopback.js.map +1 -1
  35. package/dist/src/multiaddr/is-network-address.d.ts.map +1 -1
  36. package/dist/src/multiaddr/is-network-address.js +4 -16
  37. package/dist/src/multiaddr/is-network-address.js.map +1 -1
  38. package/dist/src/multiaddr/is-private.d.ts.map +1 -1
  39. package/dist/src/multiaddr/is-private.js +9 -10
  40. package/dist/src/multiaddr/is-private.js.map +1 -1
  41. package/dist/src/multiaddr/utils.d.ts +5 -0
  42. package/dist/src/multiaddr/utils.d.ts.map +1 -0
  43. package/dist/src/multiaddr/utils.js +32 -0
  44. package/dist/src/multiaddr/utils.js.map +1 -0
  45. package/dist/src/stream-utils.d.ts +1 -9
  46. package/dist/src/stream-utils.d.ts.map +1 -1
  47. package/dist/src/stream-utils.js +4 -3
  48. package/dist/src/stream-utils.js.map +1 -1
  49. package/package.json +7 -7
  50. package/src/abstract-message-stream.ts +8 -4
  51. package/src/abstract-multiaddr-connection.ts +2 -2
  52. package/src/get-thin-waist-addresses.browser.ts +5 -4
  53. package/src/get-thin-waist-addresses.ts +8 -12
  54. package/src/mock-muxer.ts +1 -1
  55. package/src/multiaddr/get-net-config.ts +112 -0
  56. package/src/multiaddr/index.ts +1 -1
  57. package/src/multiaddr/is-global-unicast.ts +8 -11
  58. package/src/multiaddr/is-link-local.ts +11 -20
  59. package/src/multiaddr/is-loopback.ts +12 -7
  60. package/src/multiaddr/is-network-address.ts +4 -19
  61. package/src/multiaddr/is-private.ts +9 -14
  62. package/src/multiaddr/utils.ts +46 -0
  63. package/src/stream-utils.ts +5 -14
  64. package/dist/src/multiaddr/is-ip-based.d.ts +0 -6
  65. package/dist/src/multiaddr/is-ip-based.d.ts.map +0 -1
  66. package/dist/src/multiaddr/is-ip-based.js +0 -18
  67. package/dist/src/multiaddr/is-ip-based.js.map +0 -1
  68. package/src/multiaddr/is-ip-based.ts +0 -21
@@ -1,30 +1,15 @@
1
- import { CODE_IP4, CODE_IP6, CODE_IP6ZONE, CODE_DNS, CODE_DNS4, CODE_DNS6, CODE_DNSADDR } from '@multiformats/multiaddr'
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
- for (const { code } of ma.getComponents()) {
19
- if (code === CODE_IP6ZONE) {
20
- continue
21
- }
9
+ getNetConfig(ma)
22
10
 
23
- return NETWORK_CODECS.includes(code)
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 { isIpBased } from './is-ip-based.js'
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
- if (!isIpBased(ma)) {
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
- if (value == null) {
18
- return false
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
+ }
@@ -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,6 +0,0 @@
1
- import type { Multiaddr } from '@multiformats/multiaddr';
2
- /**
3
- * Check if a given multiaddr is IP-based
4
- */
5
- export declare function isIpBased(ma: Multiaddr): boolean;
6
- //# sourceMappingURL=is-ip-based.d.ts.map
@@ -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
- }