libp2p 0.46.13 → 0.46.14

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.
@@ -1,7 +1,7 @@
1
1
  import { CID } from 'multiformats/cid';
2
2
  import type { Limit } from './pb/index.js';
3
3
  import type { Stream } from '@libp2p/interface/connection';
4
- export declare function createLimitedRelay(source: Stream, destination: Stream, abortSignal: AbortSignal, limit?: Limit): void;
4
+ export declare function createLimitedRelay(src: Stream, dst: Stream, abortSignal: AbortSignal, limit?: Limit): void;
5
5
  /**
6
6
  * Convert a namespace string into a cid
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/circuit-relay/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAItC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAmG1D,wBAAgB,kBAAkB,CAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAQtH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAM5E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/circuit-relay/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAiC1D,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CA0E3G;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAM5E"}
@@ -4,9 +4,9 @@ import { anySignal } from 'any-signal';
4
4
  import { CID } from 'multiformats/cid';
5
5
  import { sha256 } from 'multiformats/hashes/sha2';
6
6
  import { codes } from '../errors.js';
7
- import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT } from './constants.js';
8
7
  const log = logger('libp2p:circuit-relay:utils');
9
8
  async function* countStreamBytes(source, limit) {
9
+ const limitBytes = limit.remaining;
10
10
  for await (const buf of source) {
11
11
  const len = BigInt(buf.byteLength);
12
12
  if ((limit.remaining - len) < 0) {
@@ -21,13 +21,13 @@ async function* countStreamBytes(source, limit) {
21
21
  catch (err) {
22
22
  log.error(err);
23
23
  }
24
- throw new Error('data limit exceeded');
24
+ throw new CodeError(`data limit of ${limitBytes} bytes exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED);
25
25
  }
26
26
  limit.remaining -= len;
27
27
  yield buf;
28
28
  }
29
29
  }
30
- const doRelay = (src, dst, abortSignal, limit) => {
30
+ export function createLimitedRelay(src, dst, abortSignal, limit) {
31
31
  function abortStreams(err) {
32
32
  src.abort(err);
33
33
  dst.abort(err);
@@ -35,20 +35,26 @@ const doRelay = (src, dst, abortSignal, limit) => {
35
35
  }
36
36
  const abortController = new AbortController();
37
37
  const signal = anySignal([abortSignal, abortController.signal]);
38
- const timeout = setTimeout(() => {
39
- abortController.abort();
40
- }, limit.duration);
38
+ let timeout;
39
+ if (limit?.duration != null) {
40
+ timeout = setTimeout(() => {
41
+ abortController.abort();
42
+ }, limit.duration);
43
+ }
41
44
  let srcDstFinished = false;
42
45
  let dstSrcFinished = false;
43
- const dataLimit = {
44
- remaining: limit.data
45
- };
46
+ let dataLimit;
47
+ if (limit?.data != null) {
48
+ dataLimit = {
49
+ remaining: limit.data
50
+ };
51
+ }
46
52
  queueMicrotask(() => {
47
53
  const onAbort = () => {
48
- dst.abort(new CodeError('duration limit exceeded', codes.ERR_TIMEOUT));
54
+ dst.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED));
49
55
  };
50
56
  signal.addEventListener('abort', onAbort, { once: true });
51
- void dst.sink(countStreamBytes(src.source, dataLimit))
57
+ void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit))
52
58
  .catch(err => {
53
59
  log.error('error while relaying streams src -> dst', err);
54
60
  abortStreams(err);
@@ -64,10 +70,10 @@ const doRelay = (src, dst, abortSignal, limit) => {
64
70
  });
65
71
  queueMicrotask(() => {
66
72
  const onAbort = () => {
67
- src.abort(new CodeError('duration limit exceeded', codes.ERR_TIMEOUT));
73
+ src.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED));
68
74
  };
69
75
  signal.addEventListener('abort', onAbort, { once: true });
70
- void src.sink(countStreamBytes(dst.source, dataLimit))
76
+ void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit))
71
77
  .catch(err => {
72
78
  log.error('error while relaying streams dst -> src', err);
73
79
  abortStreams(err);
@@ -81,14 +87,6 @@ const doRelay = (src, dst, abortSignal, limit) => {
81
87
  }
82
88
  });
83
89
  });
84
- };
85
- export function createLimitedRelay(source, destination, abortSignal, limit) {
86
- const dataLimit = limit?.data ?? BigInt(DEFAULT_DATA_LIMIT);
87
- const durationLimit = limit?.duration ?? DEFAULT_DURATION_LIMIT;
88
- doRelay(source, destination, abortSignal, {
89
- data: dataLimit,
90
- duration: durationLimit
91
- });
92
90
  }
93
91
  /**
94
92
  * Convert a namespace string into a cid
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/circuit-relay/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/circuit-relay/utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const PROTOCOL_VERSION = "ipfs/0.1.0";
2
- export declare const AGENT_VERSION = "js-libp2p/0.46.13";
2
+ export declare const AGENT_VERSION = "js-libp2p/0.46.14";
3
3
  export declare const MULTICODEC_IDENTIFY = "/ipfs/id/1.0.0";
4
4
  export declare const MULTICODEC_IDENTIFY_PUSH = "/ipfs/id/push/1.0.0";
5
5
  export declare const IDENTIFY_PROTOCOL_VERSION = "0.1.0";
@@ -1,3 +1,3 @@
1
- export declare const version = "0.46.13";
1
+ export declare const version = "0.46.14";
2
2
  export declare const name = "libp2p";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
- export const version = '0.46.13';
1
+ export const version = '0.46.14';
2
2
  export const name = 'libp2p';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.46.13",
3
+ "version": "0.46.14",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/libp2p#readme",
@@ -4,7 +4,6 @@ import { anySignal } from 'any-signal'
4
4
  import { CID } from 'multiformats/cid'
5
5
  import { sha256 } from 'multiformats/hashes/sha2'
6
6
  import { codes } from '../errors.js'
7
- import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT } from './constants.js'
8
7
  import type { Limit } from './pb/index.js'
9
8
  import type { Stream } from '@libp2p/interface/connection'
10
9
  import type { Source } from 'it-stream-types'
@@ -13,6 +12,8 @@ import type { Uint8ArrayList } from 'uint8arraylist'
13
12
  const log = logger('libp2p:circuit-relay:utils')
14
13
 
15
14
  async function * countStreamBytes (source: Source<Uint8Array | Uint8ArrayList>, limit: { remaining: bigint }): AsyncGenerator<Uint8Array | Uint8ArrayList, void, unknown> {
15
+ const limitBytes = limit.remaining
16
+
16
17
  for await (const buf of source) {
17
18
  const len = BigInt(buf.byteLength)
18
19
 
@@ -29,7 +30,7 @@ async function * countStreamBytes (source: Source<Uint8Array | Uint8ArrayList>,
29
30
  log.error(err)
30
31
  }
31
32
 
32
- throw new Error('data limit exceeded')
33
+ throw new CodeError(`data limit of ${limitBytes} bytes exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED)
33
34
  }
34
35
 
35
36
  limit.remaining -= len
@@ -37,7 +38,7 @@ async function * countStreamBytes (source: Source<Uint8Array | Uint8ArrayList>,
37
38
  }
38
39
  }
39
40
 
40
- const doRelay = (src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Required<Limit>): void => {
41
+ export function createLimitedRelay (src: Stream, dst: Stream, abortSignal: AbortSignal, limit?: Limit): void {
41
42
  function abortStreams (err: Error): void {
42
43
  src.abort(err)
43
44
  dst.abort(err)
@@ -47,25 +48,33 @@ const doRelay = (src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Requ
47
48
  const abortController = new AbortController()
48
49
  const signal = anySignal([abortSignal, abortController.signal])
49
50
 
50
- const timeout = setTimeout(() => {
51
- abortController.abort()
52
- }, limit.duration)
51
+ let timeout: ReturnType<typeof setTimeout> | undefined
52
+
53
+ if (limit?.duration != null) {
54
+ timeout = setTimeout(() => {
55
+ abortController.abort()
56
+ }, limit.duration)
57
+ }
53
58
 
54
59
  let srcDstFinished = false
55
60
  let dstSrcFinished = false
56
61
 
57
- const dataLimit = {
58
- remaining: limit.data
62
+ let dataLimit: { remaining: bigint } | undefined
63
+
64
+ if (limit?.data != null) {
65
+ dataLimit = {
66
+ remaining: limit.data
67
+ }
59
68
  }
60
69
 
61
70
  queueMicrotask(() => {
62
71
  const onAbort = (): void => {
63
- dst.abort(new CodeError('duration limit exceeded', codes.ERR_TIMEOUT))
72
+ dst.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED))
64
73
  }
65
74
 
66
75
  signal.addEventListener('abort', onAbort, { once: true })
67
76
 
68
- void dst.sink(countStreamBytes(src.source, dataLimit))
77
+ void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit))
69
78
  .catch(err => {
70
79
  log.error('error while relaying streams src -> dst', err)
71
80
  abortStreams(err)
@@ -83,12 +92,12 @@ const doRelay = (src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Requ
83
92
 
84
93
  queueMicrotask(() => {
85
94
  const onAbort = (): void => {
86
- src.abort(new CodeError('duration limit exceeded', codes.ERR_TIMEOUT))
95
+ src.abort(new CodeError(`duration limit of ${limit?.duration} ms exceeded`, codes.ERR_TRANSFER_LIMIT_EXCEEDED))
87
96
  }
88
97
 
89
98
  signal.addEventListener('abort', onAbort, { once: true })
90
99
 
91
- void src.sink(countStreamBytes(dst.source, dataLimit))
100
+ void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit))
92
101
  .catch(err => {
93
102
  log.error('error while relaying streams dst -> src', err)
94
103
  abortStreams(err)
@@ -105,16 +114,6 @@ const doRelay = (src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Requ
105
114
  })
106
115
  }
107
116
 
108
- export function createLimitedRelay (source: Stream, destination: Stream, abortSignal: AbortSignal, limit?: Limit): void {
109
- const dataLimit = limit?.data ?? BigInt(DEFAULT_DATA_LIMIT)
110
- const durationLimit = limit?.duration ?? DEFAULT_DURATION_LIMIT
111
-
112
- doRelay(source, destination, abortSignal, {
113
- data: dataLimit,
114
- duration: durationLimit
115
- })
116
- }
117
-
118
117
  /**
119
118
  * Convert a namespace string into a cid
120
119
  */
package/src/errors.ts CHANGED
@@ -75,5 +75,5 @@ export enum codes {
75
75
  ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS = 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS',
76
76
  ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS = 'ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS',
77
77
  ERR_CONNECTION_DENIED = 'ERR_CONNECTION_DENIED',
78
- ERR_TRANSFER_LIMIT_EXCEEDED = 'ERR_TRANSFER_LIMIT_EXCEEDED',
78
+ ERR_TRANSFER_LIMIT_EXCEEDED = 'ERR_TRANSFER_LIMIT_EXCEEDED'
79
79
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.46.13'
1
+ export const version = '0.46.14'
2
2
  export const name = 'libp2p'