libp2p 0.43.3 → 0.43.4-20c8ed4b

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 (187) hide show
  1. package/dist/index.min.js +30 -30
  2. package/dist/src/autonat/index.d.ts +1 -2
  3. package/dist/src/autonat/index.d.ts.map +1 -1
  4. package/dist/src/autonat/index.js +1 -3
  5. package/dist/src/autonat/index.js.map +1 -1
  6. package/dist/src/circuit-relay/constants.d.ts.map +1 -0
  7. package/dist/src/circuit-relay/constants.js.map +1 -0
  8. package/dist/src/circuit-relay/index.d.ts.map +1 -0
  9. package/dist/src/circuit-relay/index.js.map +1 -0
  10. package/dist/src/circuit-relay/pb/index.d.ts.map +1 -0
  11. package/dist/src/circuit-relay/pb/index.js.map +1 -0
  12. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -0
  13. package/dist/src/circuit-relay/server/advert-service.js.map +1 -0
  14. package/dist/src/circuit-relay/server/index.d.ts.map +1 -0
  15. package/dist/src/circuit-relay/server/index.js.map +1 -0
  16. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +1 -0
  17. package/dist/src/circuit-relay/server/reservation-store.js.map +1 -0
  18. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +1 -0
  19. package/dist/src/circuit-relay/server/reservation-voucher.js.map +1 -0
  20. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -0
  21. package/dist/src/circuit-relay/transport/discovery.js.map +1 -0
  22. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -0
  23. package/dist/src/circuit-relay/transport/index.js.map +1 -0
  24. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -0
  25. package/dist/src/circuit-relay/transport/listener.js.map +1 -0
  26. package/dist/src/{circuit → circuit-relay}/transport/reservation-store.d.ts +1 -1
  27. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -0
  28. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -0
  29. package/dist/src/circuit-relay/utils.d.ts.map +1 -0
  30. package/dist/src/{circuit → circuit-relay}/utils.js +3 -1
  31. package/dist/src/circuit-relay/utils.js.map +1 -0
  32. package/dist/src/components.d.ts +1 -6
  33. package/dist/src/components.d.ts.map +1 -1
  34. package/dist/src/components.js +0 -10
  35. package/dist/src/components.js.map +1 -1
  36. package/dist/src/config.d.ts.map +1 -1
  37. package/dist/src/config.js +0 -9
  38. package/dist/src/config.js.map +1 -1
  39. package/dist/src/connection-manager/auto-dial.d.ts +36 -0
  40. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -0
  41. package/dist/src/connection-manager/auto-dial.js +122 -0
  42. package/dist/src/connection-manager/auto-dial.js.map +1 -0
  43. package/dist/src/connection-manager/connection-pruner.d.ts +28 -0
  44. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -0
  45. package/dist/src/connection-manager/connection-pruner.js +96 -0
  46. package/dist/src/connection-manager/connection-pruner.js.map +1 -0
  47. package/dist/src/connection-manager/constants.d.ts +49 -0
  48. package/dist/src/connection-manager/constants.d.ts.map +1 -0
  49. package/dist/src/connection-manager/constants.js +49 -0
  50. package/dist/src/connection-manager/constants.js.map +1 -0
  51. package/dist/src/connection-manager/dial-queue.d.ts +77 -0
  52. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -0
  53. package/dist/src/connection-manager/dial-queue.js +366 -0
  54. package/dist/src/connection-manager/dial-queue.js.map +1 -0
  55. package/dist/src/connection-manager/index.d.ts +65 -69
  56. package/dist/src/connection-manager/index.d.ts.map +1 -1
  57. package/dist/src/connection-manager/index.js +116 -229
  58. package/dist/src/connection-manager/index.js.map +1 -1
  59. package/dist/src/connection-manager/utils.d.ts +9 -0
  60. package/dist/src/connection-manager/utils.d.ts.map +1 -0
  61. package/dist/src/connection-manager/utils.js +66 -0
  62. package/dist/src/connection-manager/utils.js.map +1 -0
  63. package/dist/src/content-routing/utils.js +1 -1
  64. package/dist/src/content-routing/utils.js.map +1 -1
  65. package/dist/src/get-peer.d.ts +6 -5
  66. package/dist/src/get-peer.d.ts.map +1 -1
  67. package/dist/src/get-peer.js +34 -12
  68. package/dist/src/get-peer.js.map +1 -1
  69. package/dist/src/identify/index.js +1 -1
  70. package/dist/src/identify/index.js.map +1 -1
  71. package/dist/src/index.d.ts +1 -1
  72. package/dist/src/index.d.ts.map +1 -1
  73. package/dist/src/libp2p.d.ts +13 -5
  74. package/dist/src/libp2p.d.ts.map +1 -1
  75. package/dist/src/libp2p.js +8 -12
  76. package/dist/src/libp2p.js.map +1 -1
  77. package/dist/src/upgrader.d.ts +1 -1
  78. package/dist/src/upgrader.d.ts.map +1 -1
  79. package/dist/src/upgrader.js +2 -1
  80. package/dist/src/upgrader.js.map +1 -1
  81. package/package.json +14 -14
  82. package/src/autonat/index.ts +2 -5
  83. package/src/{circuit → circuit-relay}/transport/reservation-store.ts +1 -1
  84. package/src/{circuit → circuit-relay}/utils.ts +3 -1
  85. package/src/components.ts +1 -17
  86. package/src/config.ts +0 -9
  87. package/src/connection-manager/auto-dial.ts +171 -0
  88. package/src/connection-manager/connection-pruner.ts +137 -0
  89. package/src/connection-manager/constants.ts +60 -0
  90. package/src/connection-manager/dial-queue.ts +504 -0
  91. package/src/connection-manager/index.ts +190 -319
  92. package/src/connection-manager/utils.ts +76 -0
  93. package/src/content-routing/utils.ts +1 -1
  94. package/src/get-peer.ts +45 -15
  95. package/src/identify/index.ts +1 -1
  96. package/src/index.ts +1 -1
  97. package/src/libp2p.ts +21 -17
  98. package/src/upgrader.ts +3 -2
  99. package/src/version.ts +1 -1
  100. package/dist/src/circuit/constants.d.ts.map +0 -1
  101. package/dist/src/circuit/constants.js.map +0 -1
  102. package/dist/src/circuit/index.d.ts.map +0 -1
  103. package/dist/src/circuit/index.js.map +0 -1
  104. package/dist/src/circuit/pb/index.d.ts.map +0 -1
  105. package/dist/src/circuit/pb/index.js.map +0 -1
  106. package/dist/src/circuit/server/advert-service.d.ts.map +0 -1
  107. package/dist/src/circuit/server/advert-service.js.map +0 -1
  108. package/dist/src/circuit/server/index.d.ts.map +0 -1
  109. package/dist/src/circuit/server/index.js.map +0 -1
  110. package/dist/src/circuit/server/reservation-store.d.ts.map +0 -1
  111. package/dist/src/circuit/server/reservation-store.js.map +0 -1
  112. package/dist/src/circuit/server/reservation-voucher.d.ts.map +0 -1
  113. package/dist/src/circuit/server/reservation-voucher.js.map +0 -1
  114. package/dist/src/circuit/transport/discovery.d.ts.map +0 -1
  115. package/dist/src/circuit/transport/discovery.js.map +0 -1
  116. package/dist/src/circuit/transport/index.d.ts.map +0 -1
  117. package/dist/src/circuit/transport/index.js.map +0 -1
  118. package/dist/src/circuit/transport/listener.d.ts.map +0 -1
  119. package/dist/src/circuit/transport/listener.js.map +0 -1
  120. package/dist/src/circuit/transport/reservation-store.d.ts.map +0 -1
  121. package/dist/src/circuit/transport/reservation-store.js.map +0 -1
  122. package/dist/src/circuit/utils.d.ts.map +0 -1
  123. package/dist/src/circuit/utils.js.map +0 -1
  124. package/dist/src/connection-manager/auto-dialler.d.ts +0 -42
  125. package/dist/src/connection-manager/auto-dialler.d.ts.map +0 -1
  126. package/dist/src/connection-manager/auto-dialler.js +0 -105
  127. package/dist/src/connection-manager/auto-dialler.js.map +0 -1
  128. package/dist/src/connection-manager/dialer/dial-request.d.ts +0 -27
  129. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +0 -1
  130. package/dist/src/connection-manager/dialer/dial-request.js +0 -114
  131. package/dist/src/connection-manager/dialer/dial-request.js.map +0 -1
  132. package/dist/src/connection-manager/dialer/index.d.ts +0 -122
  133. package/dist/src/connection-manager/dialer/index.d.ts.map +0 -1
  134. package/dist/src/connection-manager/dialer/index.js +0 -321
  135. package/dist/src/connection-manager/dialer/index.js.map +0 -1
  136. package/dist/src/connection-manager/latency-monitor.d.ts +0 -120
  137. package/dist/src/connection-manager/latency-monitor.d.ts.map +0 -1
  138. package/dist/src/connection-manager/latency-monitor.js +0 -220
  139. package/dist/src/connection-manager/latency-monitor.js.map +0 -1
  140. package/dist/src/connection-manager/visibility-change-emitter.d.ts +0 -66
  141. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +0 -1
  142. package/dist/src/connection-manager/visibility-change-emitter.js +0 -118
  143. package/dist/src/connection-manager/visibility-change-emitter.js.map +0 -1
  144. package/dist/src/constants.d.ts +0 -27
  145. package/dist/src/constants.d.ts.map +0 -1
  146. package/dist/src/constants.js +0 -31
  147. package/dist/src/constants.js.map +0 -1
  148. package/dist/typedoc-urls.json +0 -41
  149. package/src/connection-manager/auto-dialler.ts +0 -158
  150. package/src/connection-manager/dialer/dial-request.ts +0 -144
  151. package/src/connection-manager/dialer/index.ts +0 -457
  152. package/src/connection-manager/latency-monitor.ts +0 -319
  153. package/src/connection-manager/visibility-change-emitter.ts +0 -135
  154. package/src/constants.ts +0 -36
  155. /package/dist/src/{circuit → circuit-relay}/constants.d.ts +0 -0
  156. /package/dist/src/{circuit → circuit-relay}/constants.js +0 -0
  157. /package/dist/src/{circuit → circuit-relay}/index.d.ts +0 -0
  158. /package/dist/src/{circuit → circuit-relay}/index.js +0 -0
  159. /package/dist/src/{circuit → circuit-relay}/pb/index.d.ts +0 -0
  160. /package/dist/src/{circuit → circuit-relay}/pb/index.js +0 -0
  161. /package/dist/src/{circuit → circuit-relay}/server/advert-service.d.ts +0 -0
  162. /package/dist/src/{circuit → circuit-relay}/server/advert-service.js +0 -0
  163. /package/dist/src/{circuit → circuit-relay}/server/index.d.ts +0 -0
  164. /package/dist/src/{circuit → circuit-relay}/server/index.js +0 -0
  165. /package/dist/src/{circuit → circuit-relay}/server/reservation-store.d.ts +0 -0
  166. /package/dist/src/{circuit → circuit-relay}/server/reservation-store.js +0 -0
  167. /package/dist/src/{circuit → circuit-relay}/server/reservation-voucher.d.ts +0 -0
  168. /package/dist/src/{circuit → circuit-relay}/server/reservation-voucher.js +0 -0
  169. /package/dist/src/{circuit → circuit-relay}/transport/discovery.d.ts +0 -0
  170. /package/dist/src/{circuit → circuit-relay}/transport/discovery.js +0 -0
  171. /package/dist/src/{circuit → circuit-relay}/transport/index.d.ts +0 -0
  172. /package/dist/src/{circuit → circuit-relay}/transport/index.js +0 -0
  173. /package/dist/src/{circuit → circuit-relay}/transport/listener.d.ts +0 -0
  174. /package/dist/src/{circuit → circuit-relay}/transport/listener.js +0 -0
  175. /package/dist/src/{circuit → circuit-relay}/transport/reservation-store.js +0 -0
  176. /package/dist/src/{circuit → circuit-relay}/utils.d.ts +0 -0
  177. /package/src/{circuit → circuit-relay}/constants.ts +0 -0
  178. /package/src/{circuit → circuit-relay}/index.ts +0 -0
  179. /package/src/{circuit → circuit-relay}/pb/index.proto +0 -0
  180. /package/src/{circuit → circuit-relay}/pb/index.ts +0 -0
  181. /package/src/{circuit → circuit-relay}/server/advert-service.ts +0 -0
  182. /package/src/{circuit → circuit-relay}/server/index.ts +0 -0
  183. /package/src/{circuit → circuit-relay}/server/reservation-store.ts +0 -0
  184. /package/src/{circuit → circuit-relay}/server/reservation-voucher.ts +0 -0
  185. /package/src/{circuit → circuit-relay}/transport/discovery.ts +0 -0
  186. /package/src/{circuit → circuit-relay}/transport/index.ts +0 -0
  187. /package/src/{circuit → circuit-relay}/transport/listener.ts +0 -0
@@ -1,321 +0,0 @@
1
- import { logger } from '@libp2p/logger';
2
- import { CodeError } from '@libp2p/interfaces/errors';
3
- import { isMultiaddr, multiaddr, resolvers } from '@multiformats/multiaddr';
4
- import { TimeoutController } from 'timeout-abort-controller';
5
- import { anySignal } from 'any-signal';
6
- import { setMaxListeners } from 'events';
7
- import { DialRequest } from './dial-request.js';
8
- import { publicAddressesFirst } from '@libp2p/utils/address-sort';
9
- import { trackedMap } from '@libp2p/tracked-map';
10
- import { codes } from '../../errors.js';
11
- import { DIAL_TIMEOUT, MAX_PARALLEL_DIALS, MAX_PER_PEER_DIALS, MAX_ADDRS_TO_DIAL } from '../../constants.js';
12
- import { isPeerId } from '@libp2p/interface-peer-id';
13
- import { getPeerAddress } from '../../get-peer.js';
14
- const log = logger('libp2p:dialer');
15
- export class DefaultDialer {
16
- constructor(components, init = {}) {
17
- this.started = false;
18
- this.addressSorter = init.addressSorter ?? publicAddressesFirst;
19
- this.maxAddrsToDial = init.maxAddrsToDial ?? MAX_ADDRS_TO_DIAL;
20
- this.timeout = init.dialTimeout ?? DIAL_TIMEOUT;
21
- this.maxDialsPerPeer = init.maxDialsPerPeer ?? MAX_PER_PEER_DIALS;
22
- this.tokens = [...new Array(init.maxParallelDials ?? MAX_PARALLEL_DIALS)].map((_, index) => index);
23
- this.components = components;
24
- this.pendingDials = trackedMap({
25
- name: 'libp2p_dialler_pending_dials',
26
- metrics: components.metrics
27
- });
28
- this.pendingDialTargets = trackedMap({
29
- name: 'libp2p_dialler_pending_dial_targets',
30
- metrics: components.metrics
31
- });
32
- for (const [key, value] of Object.entries(init.resolvers ?? {})) {
33
- resolvers.set(key, value);
34
- }
35
- }
36
- isStarted() {
37
- return this.started;
38
- }
39
- async start() {
40
- this.started = true;
41
- }
42
- /**
43
- * Clears any pending dials
44
- */
45
- async stop() {
46
- this.started = false;
47
- for (const dial of this.pendingDials.values()) {
48
- try {
49
- dial.controller.abort();
50
- }
51
- catch (err) {
52
- log.error(err);
53
- }
54
- }
55
- this.pendingDials.clear();
56
- for (const pendingTarget of this.pendingDialTargets.values()) {
57
- pendingTarget.abort();
58
- }
59
- this.pendingDialTargets.clear();
60
- }
61
- /**
62
- * Connects to a given `peer` by dialing all of its known addresses.
63
- * The dial to the first address that is successfully able to upgrade a connection
64
- * will be used.
65
- */
66
- async dial(peerIdOrMultiaddr, options = {}) {
67
- const { peerId, multiaddr } = getPeerAddress(peerIdOrMultiaddr);
68
- if (peerId != null) {
69
- if (this.components.peerId.equals(peerId)) {
70
- throw new CodeError('Tried to dial self', codes.ERR_DIALED_SELF);
71
- }
72
- if (multiaddr != null) {
73
- log('storing multiaddrs %p', peerId, multiaddr);
74
- await this.components.peerStore.addressBook.add(peerId, [multiaddr]);
75
- }
76
- if ((await this.components.connectionGater.denyDialPeer?.(peerId)) === true) {
77
- throw new CodeError('The dial request is blocked by gater.allowDialPeer', codes.ERR_PEER_DIAL_INTERCEPTED);
78
- }
79
- }
80
- log('creating dial target for %p', peerId);
81
- // resolving multiaddrs can involve dns lookups so allow them to be aborted
82
- const controller = new AbortController();
83
- const controllerId = randomId();
84
- this.pendingDialTargets.set(controllerId, controller);
85
- let signal = controller.signal;
86
- // merge with the passed signal, if any
87
- if (options.signal != null) {
88
- signal = anySignal([signal, options.signal]);
89
- }
90
- let dialTarget;
91
- try {
92
- dialTarget = await this._createDialTarget({ peerId, multiaddr }, {
93
- ...options,
94
- signal
95
- });
96
- }
97
- finally {
98
- // done resolving the multiaddrs so remove the abort controller
99
- this.pendingDialTargets.delete(controllerId);
100
- }
101
- if (dialTarget.addrs.length === 0) {
102
- throw new CodeError('The dial request has no valid addresses', codes.ERR_NO_VALID_ADDRESSES);
103
- }
104
- // try to join an in-flight dial for this peer if one is available
105
- const pendingDial = this.pendingDials.get(dialTarget.id) ?? this._createPendingDial(dialTarget, options);
106
- try {
107
- const connection = await pendingDial.promise;
108
- log('dial succeeded to %s', dialTarget.id);
109
- return connection;
110
- }
111
- catch (err) {
112
- log('dial failed to %s', dialTarget.id, err);
113
- // Error is a timeout
114
- if (pendingDial.controller.signal.aborted) {
115
- const error = new CodeError(err.message, codes.ERR_TIMEOUT);
116
- log.error(error);
117
- throw error;
118
- }
119
- log.error(err);
120
- throw err;
121
- }
122
- finally {
123
- pendingDial.destroy();
124
- }
125
- }
126
- /**
127
- * Get the current dial targets which are pending
128
- */
129
- getPendingDialTargets() {
130
- return this.pendingDialTargets;
131
- }
132
- /**
133
- * Returns true if the peer id is in the pending dials
134
- */
135
- hasPendingDial(peerId) {
136
- if (isMultiaddr(peerId)) {
137
- return this.pendingDials.has(peerId.getPeerId() ?? '');
138
- }
139
- return this.pendingDials.has(peerId.toString());
140
- }
141
- /**
142
- * Creates a DialTarget. The DialTarget is used to create and track
143
- * the DialRequest to a given peer.
144
- *
145
- * If a multiaddr is received it should be the only address attempted.
146
- *
147
- * Multiaddrs not supported by the available transports will be filtered out.
148
- */
149
- async _createDialTarget(peerIdOrMultiaddr, options) {
150
- let addrs = [];
151
- if (isMultiaddr(peerIdOrMultiaddr.multiaddr)) {
152
- addrs.push(peerIdOrMultiaddr.multiaddr);
153
- }
154
- // only load addresses if a peer id was passed, otherwise only dial the passed multiaddr
155
- if (!isMultiaddr(peerIdOrMultiaddr.multiaddr) && isPeerId(peerIdOrMultiaddr.peerId)) {
156
- addrs.push(...await this._loadAddresses(peerIdOrMultiaddr.peerId));
157
- }
158
- addrs = (await Promise.all(addrs.map(async (ma) => await this._resolve(ma, options))))
159
- .flat();
160
- // Multiaddrs not supported by the available transports will be filtered out.
161
- const filteredAddrs = addrs.filter(ma => Boolean(this.components.transportManager.transportForMultiaddr(ma)));
162
- // deduplicate addresses
163
- const dedupedAddrs = [...new Set(filteredAddrs.map(ma => ma.toString()))];
164
- let dedupedMultiaddrs = dedupedAddrs.map(ma => multiaddr(ma));
165
- if (dedupedMultiaddrs.length > this.maxAddrsToDial) {
166
- log('addresses after filtering', dedupedMultiaddrs.map(ma => ma.toString()));
167
- throw new CodeError('dial with more addresses than allowed', codes.ERR_TOO_MANY_ADDRESSES);
168
- }
169
- if (dedupedMultiaddrs.length === 0) {
170
- log('addresses before filtering', addrs.map(ma => ma.toString()));
171
- log('addresses after filtering', dedupedMultiaddrs.map(ma => ma.toString()));
172
- }
173
- const peerId = isPeerId(peerIdOrMultiaddr.peerId) ? peerIdOrMultiaddr.peerId : undefined;
174
- if (peerId != null) {
175
- const peerIdMultiaddr = `/p2p/${peerId.toString()}`;
176
- dedupedMultiaddrs = dedupedMultiaddrs.map(addr => {
177
- const addressPeerId = addr.getPeerId();
178
- const lastProto = addr.protos().pop();
179
- // do not append peer id to path multiaddrs
180
- if (lastProto?.path === true) {
181
- return addr;
182
- }
183
- if (addressPeerId == null) {
184
- return addr.encapsulate(peerIdMultiaddr);
185
- }
186
- return addr;
187
- });
188
- }
189
- return {
190
- id: peerId == null ? randomId() : peerId.toString(),
191
- addrs: dedupedMultiaddrs
192
- };
193
- }
194
- /**
195
- * Loads a list of addresses from the peer store for the passed peer id
196
- */
197
- async _loadAddresses(peer) {
198
- const addresses = await this.components.peerStore.addressBook.get(peer);
199
- return (await Promise.all(addresses.map(async (address) => {
200
- const deny = await this.components.connectionGater.denyDialMultiaddr?.(peer, address.multiaddr);
201
- if (deny === true) {
202
- return false;
203
- }
204
- return address;
205
- })))
206
- .filter(isTruthy)
207
- // Sort addresses so, for example, we try certified public address first
208
- .sort(this.addressSorter)
209
- .map(address => address.multiaddr);
210
- }
211
- /**
212
- * Creates a PendingDial that wraps the underlying DialRequest
213
- */
214
- _createPendingDial(dialTarget, options = {}) {
215
- /**
216
- * @param {Multiaddr} addr
217
- * @param {{ signal: { aborted: any; }; }} options
218
- */
219
- const dialAction = async (addr, options = {}) => {
220
- if (options.signal?.aborted === true) {
221
- throw new CodeError('already aborted', codes.ERR_ALREADY_ABORTED);
222
- }
223
- return await this.components.transportManager.dial(addr, options).catch(err => {
224
- log.error('dial to %s failed', addr, err);
225
- throw err;
226
- });
227
- };
228
- const dialRequest = new DialRequest({
229
- addrs: dialTarget.addrs,
230
- dialAction,
231
- dialer: this
232
- });
233
- // Combine the timeout signal and options.signal, if provided
234
- const timeoutController = new TimeoutController(this.timeout);
235
- const signals = [timeoutController.signal];
236
- (options.signal != null) && signals.push(options.signal);
237
- const signal = anySignal(signals);
238
- // this signal will potentially be used while dialing lots of
239
- // peers so prevent MaxListenersExceededWarning appearing in the console
240
- try {
241
- // fails on node < 15.4
242
- setMaxListeners?.(Infinity, signal);
243
- }
244
- catch { }
245
- const pendingDial = {
246
- dialRequest,
247
- controller: timeoutController,
248
- promise: dialRequest.run({ ...options, signal }),
249
- destroy: () => {
250
- timeoutController.clear();
251
- this.pendingDials.delete(dialTarget.id);
252
- }
253
- };
254
- this.pendingDials.set(dialTarget.id, pendingDial);
255
- return pendingDial;
256
- }
257
- getTokens(num) {
258
- const total = Math.min(num, this.maxDialsPerPeer, this.tokens.length);
259
- const tokens = this.tokens.splice(0, total);
260
- log('%d tokens request, returning %d, %d remaining', num, total, this.tokens.length);
261
- return tokens;
262
- }
263
- releaseToken(token) {
264
- // Guard against duplicate releases
265
- if (this.tokens.includes(token)) {
266
- return;
267
- }
268
- log('token %d released', token);
269
- this.tokens.push(token);
270
- }
271
- /**
272
- * Resolve multiaddr recursively
273
- */
274
- async _resolve(ma, options) {
275
- // TODO: recursive logic should live in multiaddr once dns4/dns6 support is in place
276
- // Now only supporting resolve for dnsaddr
277
- const resolvableProto = ma.protoNames().includes('dnsaddr');
278
- // Multiaddr is not resolvable? End recursion!
279
- if (!resolvableProto) {
280
- return [ma];
281
- }
282
- const resolvedMultiaddrs = await this._resolveRecord(ma, options);
283
- const recursiveMultiaddrs = await Promise.all(resolvedMultiaddrs.map(async (nm) => {
284
- return await this._resolve(nm, options);
285
- }));
286
- const addrs = recursiveMultiaddrs.flat();
287
- return addrs.reduce((array, newM) => {
288
- if (array.find(m => m.equals(newM)) == null) {
289
- array.push(newM);
290
- }
291
- return array;
292
- }, ([]));
293
- }
294
- /**
295
- * Resolve a given multiaddr. If this fails, an empty array will be returned
296
- */
297
- async _resolveRecord(ma, options) {
298
- try {
299
- ma = multiaddr(ma.toString()); // Use current multiaddr module
300
- const multiaddrs = await ma.resolve(options);
301
- return multiaddrs;
302
- }
303
- catch (err) {
304
- log.error(`multiaddr ${ma.toString()} could not be resolved`, err);
305
- return [];
306
- }
307
- }
308
- }
309
- /**
310
- * Type safe version of `list.filter(Boolean)`
311
- */
312
- function isTruthy(e) {
313
- return Boolean(e);
314
- }
315
- /**
316
- * Returns a random string
317
- */
318
- function randomId() {
319
- return `${(parseInt(String(Math.random() * 1e9), 10)).toString()}${Date.now()}`;
320
- }
321
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- /**
2
- * This code is based on `latency-monitor` (https://github.com/mlucool/latency-monitor) by `mlucool` (https://github.com/mlucool), available under Apache License 2.0 (https://github.com/mlucool/latency-monitor/blob/master/LICENSE)
3
- */
4
- import { EventEmitter } from '@libp2p/interfaces/events';
5
- export interface LatencyMonitorEvents {
6
- 'data': CustomEvent<SummaryObject>;
7
- }
8
- export interface LatencyMonitorInit {
9
- /**
10
- * How often to add a latency check event (ms)
11
- */
12
- latencyCheckIntervalMs?: number;
13
- /**
14
- * How often to summarize latency check events. null or 0 disables event firing
15
- */
16
- dataEmitIntervalMs?: number;
17
- /**
18
- * What cb-style async function to use
19
- */
20
- asyncTestFn?: (cb: () => void) => void;
21
- /**
22
- * What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
23
- */
24
- latencyRandomPercentage?: number;
25
- }
26
- export interface SummaryObject {
27
- /**
28
- * How many events were called
29
- */
30
- events: number;
31
- /**
32
- * What was the min time for a cb to be called
33
- */
34
- minMs: number;
35
- /**
36
- * What was the max time for a cb to be called
37
- */
38
- maxMs: number;
39
- /**
40
- * What was the average time for a cb to be called
41
- */
42
- avgMs: number;
43
- /**
44
- * How long this interval was in ms
45
- */
46
- lengthMs: number;
47
- }
48
- interface LatencyData {
49
- startTime: number;
50
- events: number;
51
- minMs: number;
52
- maxMs: number;
53
- totalMs: number;
54
- }
55
- /**
56
- * A class to monitor latency of any async function which works in a browser or node. This works by periodically calling
57
- * the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.
58
- * This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.
59
- *
60
- * @extends {EventEmitter}
61
- *
62
- * The default implementation is an event loop latency monitor. This works by firing periodic events into the event loop
63
- * and timing how long it takes to get back.
64
- *
65
- * @example
66
- * const monitor = new LatencyMonitor();
67
- * monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));
68
- *
69
- * @example
70
- * const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});
71
- * monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));
72
- */
73
- export declare class LatencyMonitor extends EventEmitter<LatencyMonitorEvents> {
74
- private readonly latencyCheckIntervalMs;
75
- private readonly latencyRandomPercentage;
76
- private readonly latencyCheckMultiply;
77
- private readonly latencyCheckSubtract;
78
- private readonly dataEmitIntervalMs?;
79
- private readonly asyncTestFn?;
80
- private readonly now;
81
- private readonly getDeltaMS;
82
- private visibilityChangeEmitter?;
83
- private latencyData;
84
- private checkLatencyID?;
85
- private emitIntervalID?;
86
- constructor(init?: LatencyMonitorInit);
87
- start(): void;
88
- stop(): void;
89
- /**
90
- * Start internal timers
91
- *
92
- * @private
93
- */
94
- _startTimers(): void;
95
- /**
96
- * Stop internal timers
97
- *
98
- * @private
99
- */
100
- _stopTimers(): void;
101
- /**
102
- * Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show
103
- *
104
- * @private
105
- */
106
- _emitSummary(): void;
107
- /**
108
- * Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,
109
- * it will not count for this time period
110
- */
111
- getSummary(): SummaryObject;
112
- /**
113
- * Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,
114
- * it will simply report on event loop latency.
115
- */
116
- checkLatency(): void;
117
- initLatencyData(): LatencyData;
118
- }
119
- export {};
120
- //# sourceMappingURL=latency-monitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"latency-monitor.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/latency-monitor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAMrE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAEtC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA0B;IAEvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,uBAAuB,CAAC,CAAyB;IACzD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAE1B,IAAI,GAAE,kBAAuB;IA8C1C,KAAK,IAAK,IAAI;IAwBd,IAAI,IAAK,IAAI;IAIb;;;;OAIG;IACH,YAAY,IAAK,IAAI;IAgBrB;;;;OAIG;IACH,WAAW,IAAK,IAAI;IAWpB;;;;OAIG;IACH,YAAY,IAAK,IAAI;IASrB;;;OAGG;IACH,UAAU,IAAK,aAAa;IAmB5B;;;OAGG;IACH,YAAY,IAAK,IAAI;IAiDrB,eAAe,IAAK,WAAW;CAShC"}