libp2p 0.43.4 → 0.44.0-17eb162a

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 (162) hide show
  1. package/dist/index.min.js +29 -29
  2. package/dist/src/address-manager/index.d.ts +4 -4
  3. package/dist/src/address-manager/index.d.ts.map +1 -1
  4. package/dist/src/address-manager/index.js +9 -6
  5. package/dist/src/address-manager/index.js.map +1 -1
  6. package/dist/src/autonat/index.d.ts +1 -2
  7. package/dist/src/autonat/index.d.ts.map +1 -1
  8. package/dist/src/autonat/index.js +4 -6
  9. package/dist/src/autonat/index.js.map +1 -1
  10. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
  11. package/dist/src/circuit-relay/server/advert-service.js +2 -2
  12. package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
  13. package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
  14. package/dist/src/circuit-relay/server/index.js +7 -3
  15. package/dist/src/circuit-relay/server/index.js.map +1 -1
  16. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
  17. package/dist/src/circuit-relay/transport/discovery.js +3 -1
  18. package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
  19. package/dist/src/circuit-relay/transport/index.d.ts +3 -0
  20. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
  21. package/dist/src/circuit-relay/transport/index.js +6 -2
  22. package/dist/src/circuit-relay/transport/index.js.map +1 -1
  23. package/dist/src/circuit-relay/transport/listener.d.ts +3 -0
  24. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
  25. package/dist/src/circuit-relay/transport/listener.js +5 -4
  26. package/dist/src/circuit-relay/transport/listener.js.map +1 -1
  27. package/dist/src/circuit-relay/transport/reservation-store.d.ts +4 -1
  28. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  29. package/dist/src/circuit-relay/transport/reservation-store.js +11 -6
  30. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
  31. package/dist/src/circuit-relay/utils.d.ts.map +1 -1
  32. package/dist/src/circuit-relay/utils.js +3 -1
  33. package/dist/src/circuit-relay/utils.js.map +1 -1
  34. package/dist/src/components.d.ts +8 -6
  35. package/dist/src/components.d.ts.map +1 -1
  36. package/dist/src/components.js +10 -10
  37. package/dist/src/components.js.map +1 -1
  38. package/dist/src/config.d.ts.map +1 -1
  39. package/dist/src/config.js +0 -9
  40. package/dist/src/config.js.map +1 -1
  41. package/dist/src/connection-manager/auto-dial.d.ts +39 -0
  42. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -0
  43. package/dist/src/connection-manager/auto-dial.js +131 -0
  44. package/dist/src/connection-manager/auto-dial.js.map +1 -0
  45. package/dist/src/connection-manager/connection-pruner.d.ts +32 -0
  46. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -0
  47. package/dist/src/connection-manager/connection-pruner.js +111 -0
  48. package/dist/src/connection-manager/connection-pruner.js.map +1 -0
  49. package/dist/src/connection-manager/constants.d.ts +49 -0
  50. package/dist/src/connection-manager/constants.d.ts.map +1 -0
  51. package/dist/src/connection-manager/constants.js +49 -0
  52. package/dist/src/connection-manager/constants.js.map +1 -0
  53. package/dist/src/connection-manager/dial-queue.d.ts +78 -0
  54. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -0
  55. package/dist/src/connection-manager/dial-queue.js +374 -0
  56. package/dist/src/connection-manager/dial-queue.js.map +1 -0
  57. package/dist/src/connection-manager/index.d.ts +70 -73
  58. package/dist/src/connection-manager/index.d.ts.map +1 -1
  59. package/dist/src/connection-manager/index.js +116 -248
  60. package/dist/src/connection-manager/index.js.map +1 -1
  61. package/dist/src/connection-manager/utils.d.ts +9 -0
  62. package/dist/src/connection-manager/utils.d.ts.map +1 -0
  63. package/dist/src/connection-manager/utils.js +66 -0
  64. package/dist/src/connection-manager/utils.js.map +1 -0
  65. package/dist/src/content-routing/index.js +1 -1
  66. package/dist/src/content-routing/index.js.map +1 -1
  67. package/dist/src/content-routing/utils.d.ts.map +1 -1
  68. package/dist/src/content-routing/utils.js +3 -1
  69. package/dist/src/content-routing/utils.js.map +1 -1
  70. package/dist/src/fetch/index.js +3 -3
  71. package/dist/src/fetch/index.js.map +1 -1
  72. package/dist/src/identify/index.d.ts +4 -0
  73. package/dist/src/identify/index.d.ts.map +1 -1
  74. package/dist/src/identify/index.js +104 -128
  75. package/dist/src/identify/index.js.map +1 -1
  76. package/dist/src/index.d.ts +2 -19
  77. package/dist/src/index.d.ts.map +1 -1
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/insecure/index.d.ts.map +1 -1
  80. package/dist/src/insecure/index.js +3 -1
  81. package/dist/src/insecure/index.js.map +1 -1
  82. package/dist/src/libp2p.d.ts +5 -3
  83. package/dist/src/libp2p.d.ts.map +1 -1
  84. package/dist/src/libp2p.js +47 -50
  85. package/dist/src/libp2p.js.map +1 -1
  86. package/dist/src/registrar.d.ts +5 -2
  87. package/dist/src/registrar.d.ts.map +1 -1
  88. package/dist/src/registrar.js +25 -23
  89. package/dist/src/registrar.js.map +1 -1
  90. package/dist/src/transport-manager.d.ts +9 -3
  91. package/dist/src/transport-manager.d.ts.map +1 -1
  92. package/dist/src/transport-manager.js +23 -9
  93. package/dist/src/transport-manager.js.map +1 -1
  94. package/dist/src/upgrader.d.ts +14 -11
  95. package/dist/src/upgrader.d.ts.map +1 -1
  96. package/dist/src/upgrader.js +14 -10
  97. package/dist/src/upgrader.js.map +1 -1
  98. package/package.json +46 -45
  99. package/src/address-manager/index.ts +12 -8
  100. package/src/autonat/index.ts +6 -9
  101. package/src/circuit-relay/server/advert-service.ts +2 -2
  102. package/src/circuit-relay/server/index.ts +7 -3
  103. package/src/circuit-relay/transport/discovery.ts +3 -1
  104. package/src/circuit-relay/transport/index.ts +10 -2
  105. package/src/circuit-relay/transport/listener.ts +8 -4
  106. package/src/circuit-relay/transport/reservation-store.ts +15 -7
  107. package/src/circuit-relay/utils.ts +3 -1
  108. package/src/components.ts +19 -17
  109. package/src/config.ts +0 -9
  110. package/src/connection-manager/auto-dial.ts +183 -0
  111. package/src/connection-manager/connection-pruner.ts +157 -0
  112. package/src/connection-manager/constants.ts +60 -0
  113. package/src/connection-manager/dial-queue.ts +512 -0
  114. package/src/connection-manager/index.ts +191 -340
  115. package/src/connection-manager/utils.ts +76 -0
  116. package/src/content-routing/index.ts +1 -1
  117. package/src/content-routing/utils.ts +3 -1
  118. package/src/fetch/index.ts +4 -4
  119. package/src/identify/index.ts +100 -140
  120. package/src/index.ts +2 -20
  121. package/src/insecure/index.ts +9 -5
  122. package/src/libp2p.ts +54 -60
  123. package/src/registrar.ts +29 -25
  124. package/src/transport-manager.ts +31 -11
  125. package/src/upgrader.ts +31 -22
  126. package/src/version.ts +1 -1
  127. package/dist/src/connection-manager/auto-dialler.d.ts +0 -42
  128. package/dist/src/connection-manager/auto-dialler.d.ts.map +0 -1
  129. package/dist/src/connection-manager/auto-dialler.js +0 -105
  130. package/dist/src/connection-manager/auto-dialler.js.map +0 -1
  131. package/dist/src/connection-manager/dialer/dial-request.d.ts +0 -27
  132. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +0 -1
  133. package/dist/src/connection-manager/dialer/dial-request.js +0 -114
  134. package/dist/src/connection-manager/dialer/dial-request.js.map +0 -1
  135. package/dist/src/connection-manager/dialer/index.d.ts +0 -121
  136. package/dist/src/connection-manager/dialer/index.d.ts.map +0 -1
  137. package/dist/src/connection-manager/dialer/index.js +0 -324
  138. package/dist/src/connection-manager/dialer/index.js.map +0 -1
  139. package/dist/src/connection-manager/latency-monitor.d.ts +0 -120
  140. package/dist/src/connection-manager/latency-monitor.d.ts.map +0 -1
  141. package/dist/src/connection-manager/latency-monitor.js +0 -220
  142. package/dist/src/connection-manager/latency-monitor.js.map +0 -1
  143. package/dist/src/connection-manager/visibility-change-emitter.d.ts +0 -66
  144. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +0 -1
  145. package/dist/src/connection-manager/visibility-change-emitter.js +0 -118
  146. package/dist/src/connection-manager/visibility-change-emitter.js.map +0 -1
  147. package/dist/src/constants.d.ts +0 -27
  148. package/dist/src/constants.d.ts.map +0 -1
  149. package/dist/src/constants.js +0 -31
  150. package/dist/src/constants.js.map +0 -1
  151. package/dist/src/peer-record-updater.d.ts +0 -24
  152. package/dist/src/peer-record-updater.d.ts.map +0 -1
  153. package/dist/src/peer-record-updater.js +0 -44
  154. package/dist/src/peer-record-updater.js.map +0 -1
  155. package/dist/typedoc-urls.json +0 -41
  156. package/src/connection-manager/auto-dialler.ts +0 -158
  157. package/src/connection-manager/dialer/dial-request.ts +0 -144
  158. package/src/connection-manager/dialer/index.ts +0 -461
  159. package/src/connection-manager/latency-monitor.ts +0 -319
  160. package/src/connection-manager/visibility-change-emitter.ts +0 -135
  161. package/src/constants.ts +0 -36
  162. package/src/peer-record-updater.ts +0 -65
@@ -1,42 +0,0 @@
1
- import type { Startable } from '@libp2p/interfaces/startable';
2
- import type { PeerId } from '@libp2p/interface-peer-id';
3
- import type { ConnectionManager } from '@libp2p/interface-connection-manager';
4
- import type { PeerStore } from '@libp2p/interface-peer-store';
5
- export interface AutoDiallerInit {
6
- /**
7
- * The minimum number of connections to avoid pruning
8
- */
9
- minConnections?: number;
10
- /**
11
- * How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
12
- */
13
- autoDialInterval?: number;
14
- }
15
- export interface AutoDiallerComponents {
16
- peerId: PeerId;
17
- connectionManager: ConnectionManager;
18
- peerStore: PeerStore;
19
- }
20
- export declare class AutoDialler implements Startable {
21
- private readonly components;
22
- private readonly options;
23
- private running;
24
- private autoDialTimeout?;
25
- /**
26
- * Proactively tries to connect to known peers stored in the PeerStore.
27
- * It will keep the number of connections below the upper limit and sort
28
- * the peers to connect based on wether we know their keys and protocols.
29
- */
30
- constructor(components: AutoDiallerComponents, init: AutoDiallerInit);
31
- isStarted(): boolean;
32
- /**
33
- * Starts the auto dialer
34
- */
35
- start(): Promise<void>;
36
- /**
37
- * Stops the auto dialler
38
- */
39
- stop(): Promise<void>;
40
- _autoDial(): Promise<void>;
41
- }
42
- //# sourceMappingURL=auto-dialler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-dialler.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/auto-dialler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;CACrB;AAOD,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAqB;IAE7C;;;;OAIG;gBACU,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe;IASrE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAU7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAUtB,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CAyElC"}
@@ -1,105 +0,0 @@
1
- import { logger } from '@libp2p/logger';
2
- import mergeOptions from 'merge-options';
3
- // @ts-expect-error retimer does not have types
4
- import retimer from 'retimer';
5
- const log = logger('libp2p:connection-manager:auto-dialler');
6
- const defaultOptions = {
7
- minConnections: 0,
8
- autoDialInterval: 10000
9
- };
10
- export class AutoDialler {
11
- /**
12
- * Proactively tries to connect to known peers stored in the PeerStore.
13
- * It will keep the number of connections below the upper limit and sort
14
- * the peers to connect based on wether we know their keys and protocols.
15
- */
16
- constructor(components, init) {
17
- this.components = components;
18
- this.options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, init);
19
- this.running = false;
20
- this._autoDial = this._autoDial.bind(this);
21
- log('options: %j', this.options);
22
- }
23
- isStarted() {
24
- return this.running;
25
- }
26
- /**
27
- * Starts the auto dialer
28
- */
29
- async start() {
30
- this.running = true;
31
- void this._autoDial().catch(err => {
32
- log.error('could not start autodial', err);
33
- });
34
- log('started');
35
- }
36
- /**
37
- * Stops the auto dialler
38
- */
39
- async stop() {
40
- this.running = false;
41
- if (this.autoDialTimeout != null) {
42
- this.autoDialTimeout.clear();
43
- }
44
- log('stopped');
45
- }
46
- async _autoDial() {
47
- if (this.autoDialTimeout != null) {
48
- this.autoDialTimeout.clear();
49
- }
50
- const minConnections = this.options.minConnections;
51
- // Already has enough connections
52
- if (this.components.connectionManager.getConnections().length >= minConnections) {
53
- this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval);
54
- return;
55
- }
56
- // Sort peers on whether we know protocols or public keys for them
57
- let peers = await this.components.peerStore.all();
58
- peers = peers.filter((peer) => {
59
- // do not dial ourselves
60
- if (peer.id.equals(this.components.peerId)) {
61
- return false;
62
- }
63
- // do not dial peers without multiaddrs
64
- if (peer.addresses.length === 0) {
65
- return false;
66
- }
67
- return true;
68
- });
69
- // shuffle the peers
70
- peers = peers.sort(() => Math.random() > 0.5 ? 1 : -1);
71
- peers = peers.sort((a, b) => {
72
- // dial peers with the most protocols first
73
- if (b.protocols.length > a.protocols.length) {
74
- return 1;
75
- }
76
- // dial peers with public keys first
77
- if (b.id.publicKey != null && a.id.publicKey == null) {
78
- return 1;
79
- }
80
- return -1;
81
- });
82
- for (let i = 0; this.running && i < peers.length && this.components.connectionManager.getConnections().length < minConnections; i++) {
83
- // Connection Manager was stopped during async dial
84
- if (!this.running) {
85
- return;
86
- }
87
- const peer = peers[i];
88
- if (this.components.connectionManager.getConnections(peer.id).length === 0) {
89
- log('connecting to a peerStore stored peer %p', peer.id);
90
- try {
91
- await this.components.connectionManager.openConnection(peer.id);
92
- }
93
- catch (err) {
94
- log.error('could not connect to peerStore stored peer', err);
95
- }
96
- }
97
- }
98
- // Connection Manager was stopped
99
- if (!this.running) {
100
- return;
101
- }
102
- this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval);
103
- }
104
- }
105
- //# sourceMappingURL=auto-dialler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-dialler.js","sourceRoot":"","sources":["../../../src/connection-manager/auto-dialler.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { Multiaddr } from '@multiformats/multiaddr';
2
- import type { Connection } from '@libp2p/interface-connection';
3
- import type { AbortOptions } from '@libp2p/interfaces';
4
- import type { Dialer } from '@libp2p/interface-connection-manager';
5
- export interface DialAction {
6
- (m: Multiaddr, options: AbortOptions): Promise<Connection>;
7
- }
8
- export interface DialRequestOptions {
9
- addrs: Multiaddr[];
10
- dialAction: DialAction;
11
- dialer: Dialer;
12
- }
13
- export declare class DialRequest {
14
- private readonly addrs;
15
- private readonly dialer;
16
- private readonly dialAction;
17
- /**
18
- * Manages running the `dialAction` on multiple provided `addrs` in parallel
19
- * up to a maximum determined by the number of tokens returned
20
- * from `dialer.getTokens`. Once a DialRequest is created, it can be
21
- * started using `DialRequest.run(options)`. Once a single dial has succeeded,
22
- * all other dials in the request will be cancelled.
23
- */
24
- constructor(options: DialRequestOptions);
25
- run(options?: AbortOptions): Promise<Connection>;
26
- }
27
- //# sourceMappingURL=dial-request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dial-request.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAA;AAIlE,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;;;;OAMG;gBACU,OAAO,EAAE,kBAAkB;IAYlC,GAAG,CAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAgG5D"}
@@ -1,114 +0,0 @@
1
- import { CodeError } from '@libp2p/interfaces/errors';
2
- import { anySignal } from 'any-signal';
3
- import FIFO from 'p-fifo';
4
- import { setMaxListeners } from 'events';
5
- import { codes } from '../../errors.js';
6
- import { logger } from '@libp2p/logger';
7
- const log = logger('libp2p:dialer:dial-request');
8
- export class DialRequest {
9
- /**
10
- * Manages running the `dialAction` on multiple provided `addrs` in parallel
11
- * up to a maximum determined by the number of tokens returned
12
- * from `dialer.getTokens`. Once a DialRequest is created, it can be
13
- * started using `DialRequest.run(options)`. Once a single dial has succeeded,
14
- * all other dials in the request will be cancelled.
15
- */
16
- constructor(options) {
17
- const { addrs, dialAction, dialer } = options;
18
- this.addrs = addrs;
19
- this.dialer = dialer;
20
- this.dialAction = dialAction;
21
- }
22
- async run(options = {}) {
23
- const tokens = this.dialer.getTokens(this.addrs.length);
24
- // If no tokens are available, throw
25
- if (tokens.length < 1) {
26
- throw new CodeError('No dial tokens available', codes.ERR_NO_DIAL_TOKENS);
27
- }
28
- const tokenHolder = new FIFO();
29
- for (const token of tokens) {
30
- void tokenHolder.push(token).catch(err => {
31
- log.error(err);
32
- });
33
- }
34
- const dialAbortControllers = this.addrs.map(() => {
35
- const controller = new AbortController();
36
- try {
37
- // fails on node < 15.4
38
- setMaxListeners?.(Infinity, controller.signal);
39
- }
40
- catch { }
41
- return controller;
42
- });
43
- if (options.signal != null) {
44
- try {
45
- // fails on node < 15.4
46
- setMaxListeners?.(Infinity, options.signal);
47
- }
48
- catch { }
49
- }
50
- let completedDials = 0;
51
- let done = false;
52
- try {
53
- return await Promise.any(this.addrs.map(async (addr, i) => {
54
- const token = await tokenHolder.shift(); // get token
55
- // End attempt once another attempt succeeded
56
- if (done) {
57
- this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0]);
58
- throw new CodeError('dialAction already succeeded', codes.ERR_ALREADY_SUCCEEDED);
59
- }
60
- const controller = dialAbortControllers[i];
61
- if (controller == null) {
62
- throw new CodeError('dialAction did not come with an AbortController', codes.ERR_INVALID_PARAMETERS);
63
- }
64
- let conn;
65
- try {
66
- const signal = controller.signal;
67
- conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal });
68
- // Remove the successful AbortController so it is not aborted
69
- dialAbortControllers[i] = undefined;
70
- }
71
- finally {
72
- completedDials++;
73
- // If we have more or equal dials remaining than tokens, recycle the token, otherwise release it
74
- if (this.addrs.length - completedDials >= tokens.length) {
75
- void tokenHolder.push(token).catch(err => {
76
- log.error(err);
77
- });
78
- }
79
- else {
80
- this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0]);
81
- }
82
- }
83
- if (conn == null) {
84
- // Notify Promise.any that attempt was not successful
85
- // to prevent from returning undefined despite there
86
- // were successful dial attempts
87
- throw new CodeError('dialAction led to empty object', codes.ERR_TRANSPORT_DIAL_FAILED);
88
- }
89
- else {
90
- // This dial succeeded, don't attempt anything else
91
- done = true;
92
- }
93
- return conn;
94
- }));
95
- }
96
- catch (err) {
97
- // if we only dialed one address, unwrap the AggregateError
98
- if (this.addrs.length === 1 && err.name === 'AggregateError') {
99
- throw err.errors[0];
100
- }
101
- throw err;
102
- }
103
- finally {
104
- // success/failure happened, abort everything else
105
- dialAbortControllers.forEach(c => {
106
- if (c !== undefined) {
107
- c.abort();
108
- }
109
- });
110
- tokens.forEach(token => { this.dialer.releaseToken(token); }); // release tokens back to the dialer
111
- }
112
- }
113
- }
114
- //# sourceMappingURL=dial-request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dial-request.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"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"}
@@ -1,121 +0,0 @@
1
- import { Multiaddr, Resolver } from '@multiformats/multiaddr';
2
- import { TimeoutController } from 'timeout-abort-controller';
3
- import { DialRequest } from './dial-request.js';
4
- import type { Connection } from '@libp2p/interface-connection';
5
- import type { AbortOptions } from '@libp2p/interfaces';
6
- import type { Startable } from '@libp2p/interfaces/startable';
7
- import { PeerId } from '@libp2p/interface-peer-id';
8
- import { PeerAddress } from '../../get-peer.js';
9
- import type { AddressSorter, PeerStore } from '@libp2p/interface-peer-store';
10
- import type { Metrics } from '@libp2p/interface-metrics';
11
- import type { Dialer } from '@libp2p/interface-connection-manager';
12
- import type { TransportManager } from '@libp2p/interface-transport';
13
- import type { ConnectionGater } from '@libp2p/interface-connection-gater';
14
- export interface DialTarget {
15
- id: string;
16
- addrs: Multiaddr[];
17
- }
18
- export interface PendingDial {
19
- dialRequest: DialRequest;
20
- controller: TimeoutController;
21
- promise: Promise<Connection>;
22
- destroy: () => void;
23
- }
24
- export interface PendingDialTarget {
25
- resolve: (value: any) => void;
26
- reject: (err: Error) => void;
27
- }
28
- export interface DialerInit {
29
- /**
30
- * Sort the known addresses of a peer before trying to dial
31
- */
32
- addressSorter?: AddressSorter;
33
- /**
34
- * Number of max concurrent dials
35
- */
36
- maxParallelDials?: number;
37
- /**
38
- * Number of max addresses to dial for a given peer
39
- */
40
- maxAddrsToDial?: number;
41
- /**
42
- * How long a dial attempt is allowed to take
43
- */
44
- dialTimeout?: number;
45
- /**
46
- * Number of max concurrent dials per peer
47
- */
48
- maxDialsPerPeer?: number;
49
- /**
50
- * Multiaddr resolvers to use when dialing
51
- */
52
- resolvers?: Record<string, Resolver>;
53
- }
54
- export interface DefaultDialerComponents {
55
- peerId: PeerId;
56
- metrics?: Metrics;
57
- peerStore: PeerStore;
58
- transportManager: TransportManager;
59
- connectionGater: ConnectionGater;
60
- }
61
- export declare class DefaultDialer implements Startable, Dialer {
62
- private readonly components;
63
- private readonly addressSorter;
64
- private readonly maxAddrsToDial;
65
- private readonly timeout;
66
- private readonly maxDialsPerPeer;
67
- tokens: number[];
68
- pendingDials: Map<string, PendingDial>;
69
- pendingDialTargets: Map<string, AbortController>;
70
- private started;
71
- constructor(components: DefaultDialerComponents, init?: DialerInit);
72
- isStarted(): boolean;
73
- start(): Promise<void>;
74
- /**
75
- * Clears any pending dials
76
- */
77
- stop(): Promise<void>;
78
- /**
79
- * Connects to a given `peer` by dialing all of its known addresses.
80
- * The dial to the first address that is successfully able to upgrade a connection
81
- * will be used.
82
- */
83
- dial(peerIdOrMultiaddr: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<Connection>;
84
- createDialTarget(peerAddress: PeerAddress, options?: AbortOptions): Promise<Connection>;
85
- /**
86
- * Get the current dial targets which are pending
87
- */
88
- getPendingDialTargets(): Map<string, AbortController>;
89
- /**
90
- * Returns true if the peer id is in the pending dials
91
- */
92
- hasPendingDial(peerId: PeerId | Multiaddr): boolean;
93
- /**
94
- * Creates a DialTarget. The DialTarget is used to create and track
95
- * the DialRequest to a given peer.
96
- *
97
- * If a multiaddr is received it should be the only address attempted.
98
- *
99
- * Multiaddrs not supported by the available transports will be filtered out.
100
- */
101
- _createDialTarget(peerIdOrMultiaddr: PeerAddress, options: AbortOptions): Promise<DialTarget>;
102
- /**
103
- * Loads a list of addresses from the peer store for the passed peer id
104
- */
105
- _loadAddresses(peer: PeerId): Promise<Multiaddr[]>;
106
- /**
107
- * Creates a PendingDial that wraps the underlying DialRequest
108
- */
109
- _createPendingDial(dialTarget: DialTarget, options?: AbortOptions): PendingDial;
110
- getTokens(num: number): number[];
111
- releaseToken(token: number): void;
112
- /**
113
- * Resolve multiaddr recursively
114
- */
115
- _resolve(ma: Multiaddr, options: AbortOptions): Promise<Multiaddr[]>;
116
- /**
117
- * Resolve a given multiaddr. If this fails, an empty array will be returned
118
- */
119
- _resolveRecord(ma: Multiaddr, options: AbortOptions): Promise<Multiaddr[]>;
120
- }
121
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"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"}