libp2p 0.44.0 → 0.45.0-08d4c261

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 (238) hide show
  1. package/dist/index.min.js +32 -32
  2. package/dist/src/address-manager/index.d.ts +9 -5
  3. package/dist/src/address-manager/index.d.ts.map +1 -1
  4. package/dist/src/address-manager/index.js +44 -7
  5. package/dist/src/address-manager/index.js.map +1 -1
  6. package/dist/src/address-manager/utils.d.ts +2 -0
  7. package/dist/src/address-manager/utils.d.ts.map +1 -0
  8. package/dist/src/address-manager/utils.js +12 -0
  9. package/dist/src/address-manager/utils.js.map +1 -0
  10. package/dist/src/autonat/constants.d.ts +16 -2
  11. package/dist/src/autonat/constants.d.ts.map +1 -1
  12. package/dist/src/autonat/constants.js +16 -2
  13. package/dist/src/autonat/constants.js.map +1 -1
  14. package/dist/src/autonat/index.d.ts +12 -33
  15. package/dist/src/autonat/index.d.ts.map +1 -1
  16. package/dist/src/autonat/index.js +48 -33
  17. package/dist/src/autonat/index.js.map +1 -1
  18. package/dist/src/circuit-relay/index.d.ts +1 -1
  19. package/dist/src/circuit-relay/index.d.ts.map +1 -1
  20. package/dist/src/circuit-relay/server/advert-service.d.ts +2 -2
  21. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
  22. package/dist/src/circuit-relay/server/advert-service.js +8 -4
  23. package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
  24. package/dist/src/circuit-relay/server/index.d.ts +8 -8
  25. package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
  26. package/dist/src/circuit-relay/server/index.js +32 -12
  27. package/dist/src/circuit-relay/server/index.js.map +1 -1
  28. package/dist/src/circuit-relay/server/reservation-store.d.ts +5 -5
  29. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +1 -1
  30. package/dist/src/circuit-relay/server/reservation-store.js +10 -3
  31. package/dist/src/circuit-relay/server/reservation-store.js.map +1 -1
  32. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +1 -1
  33. package/dist/src/circuit-relay/server/reservation-voucher.js +5 -2
  34. package/dist/src/circuit-relay/server/reservation-voucher.js.map +1 -1
  35. package/dist/src/circuit-relay/transport/discovery.d.ts +4 -4
  36. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
  37. package/dist/src/circuit-relay/transport/discovery.js +13 -5
  38. package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
  39. package/dist/src/circuit-relay/transport/index.d.ts +10 -8
  40. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
  41. package/dist/src/circuit-relay/transport/index.js +26 -18
  42. package/dist/src/circuit-relay/transport/index.js.map +1 -1
  43. package/dist/src/circuit-relay/transport/listener.d.ts +1 -1
  44. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
  45. package/dist/src/circuit-relay/transport/listener.js +43 -43
  46. package/dist/src/circuit-relay/transport/listener.js.map +1 -1
  47. package/dist/src/circuit-relay/transport/reservation-store.d.ts +8 -7
  48. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  49. package/dist/src/circuit-relay/transport/reservation-store.js +65 -52
  50. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
  51. package/dist/src/circuit-relay/utils.d.ts.map +1 -1
  52. package/dist/src/circuit-relay/utils.js +3 -3
  53. package/dist/src/circuit-relay/utils.js.map +1 -1
  54. package/dist/src/components.d.ts +10 -67
  55. package/dist/src/components.d.ts.map +1 -1
  56. package/dist/src/components.js +61 -165
  57. package/dist/src/components.js.map +1 -1
  58. package/dist/src/config/connection-gater.browser.d.ts +8 -0
  59. package/dist/src/config/connection-gater.browser.d.ts.map +1 -0
  60. package/dist/src/config/connection-gater.browser.js +27 -0
  61. package/dist/src/config/connection-gater.browser.js.map +1 -0
  62. package/dist/src/config/connection-gater.d.ts +6 -0
  63. package/dist/src/config/connection-gater.d.ts.map +1 -0
  64. package/dist/src/config/connection-gater.js +18 -0
  65. package/dist/src/config/connection-gater.js.map +1 -0
  66. package/dist/src/config.d.ts +2 -1
  67. package/dist/src/config.d.ts.map +1 -1
  68. package/dist/src/config.js +4 -66
  69. package/dist/src/config.js.map +1 -1
  70. package/dist/src/connection/index.d.ts +3 -3
  71. package/dist/src/connection/index.d.ts.map +1 -1
  72. package/dist/src/connection/index.js +38 -8
  73. package/dist/src/connection/index.js.map +1 -1
  74. package/dist/src/connection-manager/auto-dial.d.ts +4 -1
  75. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  76. package/dist/src/connection-manager/auto-dial.js +44 -13
  77. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  78. package/dist/src/connection-manager/connection-pruner.d.ts +4 -0
  79. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  80. package/dist/src/connection-manager/connection-pruner.js +28 -8
  81. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  82. package/dist/src/connection-manager/dial-queue.d.ts +7 -6
  83. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  84. package/dist/src/connection-manager/dial-queue.js +59 -23
  85. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  86. package/dist/src/connection-manager/index.d.ts +16 -15
  87. package/dist/src/connection-manager/index.d.ts.map +1 -1
  88. package/dist/src/connection-manager/index.js +44 -41
  89. package/dist/src/connection-manager/index.js.map +1 -1
  90. package/dist/src/connection-manager/utils.d.ts +2 -3
  91. package/dist/src/connection-manager/utils.d.ts.map +1 -1
  92. package/dist/src/connection-manager/utils.js +3 -3
  93. package/dist/src/connection-manager/utils.js.map +1 -1
  94. package/dist/src/content-routing/index.d.ts +2 -12
  95. package/dist/src/content-routing/index.d.ts.map +1 -1
  96. package/dist/src/content-routing/index.js +12 -44
  97. package/dist/src/content-routing/index.js.map +1 -1
  98. package/dist/src/content-routing/utils.d.ts +1 -1
  99. package/dist/src/content-routing/utils.d.ts.map +1 -1
  100. package/dist/src/content-routing/utils.js +3 -1
  101. package/dist/src/content-routing/utils.js.map +1 -1
  102. package/dist/src/fetch/index.d.ts +15 -37
  103. package/dist/src/fetch/index.d.ts.map +1 -1
  104. package/dist/src/fetch/index.js +19 -16
  105. package/dist/src/fetch/index.js.map +1 -1
  106. package/dist/src/get-peer.d.ts +1 -1
  107. package/dist/src/get-peer.d.ts.map +1 -1
  108. package/dist/src/get-peer.js +3 -3
  109. package/dist/src/get-peer.js.map +1 -1
  110. package/dist/src/identify/identify.d.ts +53 -0
  111. package/dist/src/identify/identify.d.ts.map +1 -0
  112. package/dist/src/identify/identify.js +417 -0
  113. package/dist/src/identify/identify.js.map +1 -0
  114. package/dist/src/identify/index.d.ts +14 -59
  115. package/dist/src/identify/index.d.ts.map +1 -1
  116. package/dist/src/identify/index.js +5 -388
  117. package/dist/src/identify/index.js.map +1 -1
  118. package/dist/src/index.d.ts +28 -79
  119. package/dist/src/index.d.ts.map +1 -1
  120. package/dist/src/index.js +2 -1
  121. package/dist/src/index.js.map +1 -1
  122. package/dist/src/insecure/index.js +6 -8
  123. package/dist/src/insecure/index.js.map +1 -1
  124. package/dist/src/libp2p.d.ts +16 -47
  125. package/dist/src/libp2p.d.ts.map +1 -1
  126. package/dist/src/libp2p.js +141 -201
  127. package/dist/src/libp2p.js.map +1 -1
  128. package/dist/src/peer-routing.d.ts +3 -40
  129. package/dist/src/peer-routing.d.ts.map +1 -1
  130. package/dist/src/peer-routing.js +8 -65
  131. package/dist/src/peer-routing.js.map +1 -1
  132. package/dist/src/ping/constants.d.ts +4 -0
  133. package/dist/src/ping/constants.d.ts.map +1 -1
  134. package/dist/src/ping/constants.js +10 -0
  135. package/dist/src/ping/constants.js.map +1 -1
  136. package/dist/src/ping/index.d.ts +11 -28
  137. package/dist/src/ping/index.d.ts.map +1 -1
  138. package/dist/src/ping/index.js +31 -28
  139. package/dist/src/ping/index.js.map +1 -1
  140. package/dist/src/pnet/crypto.js +3 -3
  141. package/dist/src/pnet/crypto.js.map +1 -1
  142. package/dist/src/pnet/index.d.ts.map +1 -1
  143. package/dist/src/pnet/index.js +9 -6
  144. package/dist/src/pnet/index.js.map +1 -1
  145. package/dist/src/pnet/key-generator.js +1 -1
  146. package/dist/src/pnet/key-generator.js.map +1 -1
  147. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -1
  148. package/dist/src/pubsub/dummy-pubsub.js +2 -5
  149. package/dist/src/pubsub/dummy-pubsub.js.map +1 -1
  150. package/dist/src/registrar.d.ts +6 -4
  151. package/dist/src/registrar.d.ts.map +1 -1
  152. package/dist/src/registrar.js +33 -28
  153. package/dist/src/registrar.js.map +1 -1
  154. package/dist/src/transport-manager.d.ts +14 -7
  155. package/dist/src/transport-manager.d.ts.map +1 -1
  156. package/dist/src/transport-manager.js +27 -13
  157. package/dist/src/transport-manager.js.map +1 -1
  158. package/dist/src/upgrader.d.ts +20 -15
  159. package/dist/src/upgrader.d.ts.map +1 -1
  160. package/dist/src/upgrader.js +49 -53
  161. package/dist/src/upgrader.js.map +1 -1
  162. package/dist/src/{nat-manager.d.ts → upnp-nat/index.d.ts} +12 -15
  163. package/dist/src/upnp-nat/index.d.ts.map +1 -0
  164. package/dist/src/{nat-manager.js → upnp-nat/index.js} +23 -10
  165. package/dist/src/upnp-nat/index.js.map +1 -0
  166. package/dist/src/version.d.ts +1 -1
  167. package/dist/src/version.d.ts.map +1 -1
  168. package/dist/src/version.js +1 -1
  169. package/dist/src/version.js.map +1 -1
  170. package/package.json +62 -47
  171. package/src/address-manager/index.ts +52 -10
  172. package/src/address-manager/utils.ts +14 -0
  173. package/src/autonat/constants.ts +17 -2
  174. package/src/autonat/index.ts +65 -57
  175. package/src/circuit-relay/index.ts +1 -1
  176. package/src/circuit-relay/server/advert-service.ts +5 -5
  177. package/src/circuit-relay/server/index.ts +28 -20
  178. package/src/circuit-relay/server/reservation-store.ts +5 -5
  179. package/src/circuit-relay/server/reservation-voucher.ts +1 -1
  180. package/src/circuit-relay/transport/discovery.ts +12 -10
  181. package/src/circuit-relay/transport/index.ts +26 -26
  182. package/src/circuit-relay/transport/listener.ts +43 -33
  183. package/src/circuit-relay/transport/reservation-store.ts +42 -28
  184. package/src/circuit-relay/utils.ts +6 -6
  185. package/src/components.ts +75 -238
  186. package/src/config/connection-gater.browser.ts +31 -0
  187. package/src/config/connection-gater.ts +19 -0
  188. package/src/config.ts +9 -70
  189. package/src/connection/index.ts +6 -10
  190. package/src/connection-manager/auto-dial.ts +46 -17
  191. package/src/connection-manager/connection-pruner.ts +30 -10
  192. package/src/connection-manager/dial-queue.ts +56 -35
  193. package/src/connection-manager/index.ts +45 -57
  194. package/src/connection-manager/utils.ts +4 -5
  195. package/src/content-routing/index.ts +11 -59
  196. package/src/content-routing/utils.ts +4 -2
  197. package/src/fetch/index.ts +63 -26
  198. package/src/get-peer.ts +4 -4
  199. package/src/identify/identify.ts +519 -0
  200. package/src/identify/index.ts +19 -509
  201. package/src/index.ts +25 -88
  202. package/src/insecure/index.ts +10 -10
  203. package/src/libp2p.ts +158 -279
  204. package/src/peer-routing.ts +10 -110
  205. package/src/ping/constants.ts +11 -0
  206. package/src/ping/index.ts +43 -39
  207. package/src/pnet/crypto.ts +3 -3
  208. package/src/pnet/index.ts +6 -6
  209. package/src/pnet/key-generator.ts +1 -1
  210. package/src/pubsub/dummy-pubsub.ts +2 -2
  211. package/src/registrar.ts +34 -31
  212. package/src/transport-manager.ts +33 -19
  213. package/src/upgrader.ts +75 -71
  214. package/src/{nat-manager.ts → upnp-nat/index.ts} +23 -24
  215. package/src/version.ts +1 -1
  216. package/dist/src/dht/dht-content-routing.d.ts +0 -17
  217. package/dist/src/dht/dht-content-routing.d.ts.map +0 -1
  218. package/dist/src/dht/dht-content-routing.js +0 -32
  219. package/dist/src/dht/dht-content-routing.js.map +0 -1
  220. package/dist/src/dht/dht-peer-routing.d.ts +0 -15
  221. package/dist/src/dht/dht-peer-routing.d.ts.map +0 -1
  222. package/dist/src/dht/dht-peer-routing.js +0 -26
  223. package/dist/src/dht/dht-peer-routing.js.map +0 -1
  224. package/dist/src/dht/dummy-dht.d.ts +0 -20
  225. package/dist/src/dht/dummy-dht.d.ts.map +0 -1
  226. package/dist/src/dht/dummy-dht.js +0 -46
  227. package/dist/src/dht/dummy-dht.js.map +0 -1
  228. package/dist/src/nat-manager.d.ts.map +0 -1
  229. package/dist/src/nat-manager.js.map +0 -1
  230. package/dist/src/peer-record-updater.d.ts +0 -24
  231. package/dist/src/peer-record-updater.d.ts.map +0 -1
  232. package/dist/src/peer-record-updater.js +0 -44
  233. package/dist/src/peer-record-updater.js.map +0 -1
  234. package/dist/typedoc-urls.json +0 -41
  235. package/src/dht/dht-content-routing.ts +0 -44
  236. package/src/dht/dht-peer-routing.ts +0 -36
  237. package/src/dht/dummy-dht.ts +0 -60
  238. package/src/peer-record-updater.ts +0 -65
@@ -1,191 +1,170 @@
1
- import { logger } from '@libp2p/logger';
1
+ import { setMaxListeners } from 'events';
2
+ import { unmarshalPublicKey } from '@libp2p/crypto/keys';
3
+ import { contentRouting } from '@libp2p/interface-content-routing';
4
+ import { peerDiscovery } from '@libp2p/interface-peer-discovery';
5
+ import { peerRouting } from '@libp2p/interface-peer-routing';
6
+ import { CodeError } from '@libp2p/interfaces/errors';
2
7
  import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events';
3
- import { isStartable } from '@libp2p/interfaces/startable';
8
+ import { DefaultKeyChain } from '@libp2p/keychain';
9
+ import { logger } from '@libp2p/logger';
10
+ import { PeerSet } from '@libp2p/peer-collections';
11
+ import { peerIdFromString } from '@libp2p/peer-id';
12
+ import { createEd25519PeerId } from '@libp2p/peer-id-factory';
13
+ import { PersistentPeerStore } from '@libp2p/peer-store';
4
14
  import { isMultiaddr } from '@multiformats/multiaddr';
5
15
  import { MemoryDatastore } from 'datastore-core/memory';
6
- import { DefaultPeerRouting } from './peer-routing.js';
7
- import { CompoundContentRouting } from './content-routing/index.js';
8
- import { codes } from './errors.js';
16
+ import mergeOptions from 'merge-options';
17
+ import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
18
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
19
  import { DefaultAddressManager } from './address-manager/index.js';
20
+ import { defaultComponents } from './components.js';
21
+ import { connectionGater } from './config/connection-gater.js';
22
+ import { validateConfig } from './config.js';
10
23
  import { DefaultConnectionManager } from './connection-manager/index.js';
11
- import { DefaultKeyChain } from '@libp2p/keychain';
24
+ import { CompoundContentRouting } from './content-routing/index.js';
25
+ import { codes } from './errors.js';
26
+ import { DefaultPeerRouting } from './peer-routing.js';
27
+ import { DefaultRegistrar } from './registrar.js';
12
28
  import { DefaultTransportManager } from './transport-manager.js';
13
29
  import { DefaultUpgrader } from './upgrader.js';
14
- import { DefaultRegistrar } from './registrar.js';
15
- import { IdentifyService } from './identify/index.js';
16
- import { FetchService } from './fetch/index.js';
17
- import { PingService } from './ping/index.js';
18
- import { NatManager } from './nat-manager.js';
19
- import { PeerRecordUpdater } from './peer-record-updater.js';
20
- import { DHTPeerRouting } from './dht/dht-peer-routing.js';
21
- import { PersistentPeerStore } from '@libp2p/peer-store';
22
- import { DHTContentRouting } from './dht/dht-content-routing.js';
23
- import { AutonatService } from './autonat/index.js';
24
- import { DefaultComponents } from './components.js';
25
- import { validateConfig } from './config.js';
26
- import { createEd25519PeerId } from '@libp2p/peer-id-factory';
27
- import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
28
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
29
- import { CodeError } from '@libp2p/interfaces/errors';
30
- import { unmarshalPublicKey } from '@libp2p/crypto/keys';
31
- import { DummyDHT } from './dht/dummy-dht.js';
32
- import { DummyPubSub } from './pubsub/dummy-pubsub.js';
33
- import { PeerSet } from '@libp2p/peer-collections';
34
- import { peerIdFromString } from '@libp2p/peer-id';
35
- import mergeOptions from 'merge-options';
36
30
  const log = logger('libp2p');
37
31
  export class Libp2pNode extends EventEmitter {
32
+ peerId;
33
+ peerStore;
34
+ contentRouting;
35
+ peerRouting;
36
+ keychain;
37
+ metrics;
38
+ services;
39
+ components;
40
+ #started;
38
41
  constructor(init) {
39
42
  super();
40
- this.started = false;
43
+ // event bus - components can listen to this emitter to be notified of system events
44
+ // and also cause them to be emitted
45
+ const events = new EventEmitter();
46
+ const originalDispatch = events.dispatchEvent.bind(events);
47
+ events.dispatchEvent = (evt) => {
48
+ const internalResult = originalDispatch(evt);
49
+ const externalResult = this.dispatchEvent(new CustomEvent(evt.type, { detail: evt.detail }));
50
+ return internalResult || externalResult;
51
+ };
52
+ try {
53
+ // This emitter gets listened to a lot
54
+ setMaxListeners?.(Infinity, events);
55
+ }
56
+ catch { }
57
+ this.#started = false;
41
58
  this.peerId = init.peerId;
42
- const components = this.components = new DefaultComponents({
59
+ // @ts-expect-error {} may not be of type T
60
+ this.services = {};
61
+ const components = this.components = defaultComponents({
43
62
  peerId: init.peerId,
63
+ events,
44
64
  datastore: init.datastore ?? new MemoryDatastore(),
45
- connectionGater: {
46
- denyDialPeer: async () => await Promise.resolve(false),
47
- denyDialMultiaddr: async () => await Promise.resolve(false),
48
- denyInboundConnection: async () => await Promise.resolve(false),
49
- denyOutboundConnection: async () => await Promise.resolve(false),
50
- denyInboundEncryptedConnection: async () => await Promise.resolve(false),
51
- denyOutboundEncryptedConnection: async () => await Promise.resolve(false),
52
- denyInboundUpgradedConnection: async () => await Promise.resolve(false),
53
- denyOutboundUpgradedConnection: async () => await Promise.resolve(false),
54
- filterMultiaddrForPeer: async () => await Promise.resolve(true),
55
- ...init.connectionGater
56
- }
65
+ connectionGater: connectionGater(init.connectionGater)
57
66
  });
58
- components.peerStore = new PersistentPeerStore(components, {
67
+ this.peerStore = this.configureComponent('peerStore', new PersistentPeerStore(components, {
59
68
  addressFilter: this.components.connectionGater.filterMultiaddrForPeer,
60
69
  ...init.peerStore
61
- });
62
- this.services = [
63
- components
64
- ];
70
+ }));
65
71
  // Create Metrics
66
72
  if (init.metrics != null) {
67
- this.metrics = this.components.metrics = this.configureComponent(init.metrics(this.components));
73
+ this.metrics = this.configureComponent('metrics', init.metrics(this.components));
68
74
  }
69
- this.peerStore = this.components.peerStore;
70
- this.peerStore.addEventListener('peer', evt => {
71
- const { detail: peerData } = evt;
72
- this.dispatchEvent(new CustomEvent('peer:discovery', { detail: peerData }));
75
+ components.events.addEventListener('peer:update', evt => {
76
+ // if there was no peer previously in the peer store this is a new peer
77
+ if (evt.detail.previous == null) {
78
+ this.safeDispatchEvent('peer:discovery', { detail: evt.detail.peer });
79
+ }
73
80
  });
74
81
  // Set up connection protector if configured
75
82
  if (init.connectionProtector != null) {
76
- this.components.connectionProtector = init.connectionProtector(components);
83
+ this.configureComponent('connectionProtector', init.connectionProtector(components));
77
84
  }
78
85
  // Set up the Upgrader
79
86
  this.components.upgrader = new DefaultUpgrader(this.components, {
80
- connectionEncryption: (init.connectionEncryption ?? []).map(fn => this.configureComponent(fn(this.components))),
81
- muxers: (init.streamMuxers ?? []).map(fn => this.configureComponent(fn(this.components))),
87
+ connectionEncryption: (init.connectionEncryption ?? []).map((fn, index) => this.configureComponent(`connection-encryption-${index}`, fn(this.components))),
88
+ muxers: (init.streamMuxers ?? []).map((fn, index) => this.configureComponent(`stream-muxers-${index}`, fn(this.components))),
82
89
  inboundUpgradeTimeout: init.connectionManager.inboundUpgradeTimeout
83
90
  });
84
91
  // Setup the transport manager
85
- this.components.transportManager = new DefaultTransportManager(this.components, init.transportManager);
92
+ this.configureComponent('transportManager', new DefaultTransportManager(this.components, init.transportManager));
86
93
  // Create the Connection Manager
87
- this.connectionManager = this.components.connectionManager = new DefaultConnectionManager(this.components, init.connectionManager);
88
- // forward connection manager events
89
- this.components.connectionManager.addEventListener('peer:disconnect', (event) => {
90
- this.dispatchEvent(new CustomEvent('peer:disconnect', { detail: event.detail }));
91
- });
92
- this.components.connectionManager.addEventListener('peer:connect', (event) => {
93
- this.dispatchEvent(new CustomEvent('peer:connect', { detail: event.detail }));
94
- });
94
+ this.configureComponent('connectionManager', new DefaultConnectionManager(this.components, init.connectionManager));
95
95
  // Create the Registrar
96
- this.registrar = this.components.registrar = new DefaultRegistrar(this.components);
96
+ this.configureComponent('registrar', new DefaultRegistrar(this.components));
97
97
  // Addresses {listen, announce, noAnnounce}
98
- this.components.addressManager = new DefaultAddressManager(this.components, init.addresses);
99
- // update our peer record when addresses change
100
- this.configureComponent(new PeerRecordUpdater(this.components));
98
+ this.configureComponent('addressManager', new DefaultAddressManager(this.components, init.addresses));
101
99
  // Create keychain
102
100
  const keychainOpts = DefaultKeyChain.generateOptions();
103
- this.keychain = this.configureComponent(new DefaultKeyChain(this.components, {
101
+ this.keychain = this.configureComponent('keyChain', new DefaultKeyChain(this.components, {
104
102
  ...keychainOpts,
105
103
  ...init.keychain
106
104
  }));
107
- // Create the Nat Manager
108
- this.services.push(new NatManager(this.components, init.nat));
109
- // Add the identify service
110
- this.identifyService = new IdentifyService(this.components, {
111
- ...init.identify
112
- });
113
- this.configureComponent(this.identifyService);
114
- // dht provided components (peerRouting, contentRouting, dht)
115
- if (init.dht != null) {
116
- this.dht = this.components.dht = init.dht(this.components);
117
- }
118
- else {
119
- this.dht = new DummyDHT();
120
- }
121
- // Create pubsub if provided
122
- if (init.pubsub != null) {
123
- this.pubsub = this.components.pubsub = init.pubsub(this.components);
124
- }
125
- else {
126
- this.pubsub = new DummyPubSub();
127
- }
128
- // Attach remaining APIs
129
- // peer and content routing will automatically get modules from _modules and _dht
130
- const peerRouters = (init.peerRouters ?? []).map(fn => this.configureComponent(fn(this.components)));
131
- if (init.dht != null) {
132
- // add dht to routers
133
- peerRouters.push(this.configureComponent(new DHTPeerRouting(this.dht)));
134
- // use dht for peer discovery
135
- this.dht.addEventListener('peer', (evt) => {
136
- this.onDiscoveryPeer(evt);
137
- });
138
- }
139
- this.peerRouting = this.components.peerRouting = this.configureComponent(new DefaultPeerRouting(this.components, {
140
- ...init.peerRouting,
105
+ // Peer routers
106
+ const peerRouters = (init.peerRouters ?? []).map((fn, index) => this.configureComponent(`peer-router-${index}`, fn(this.components)));
107
+ this.peerRouting = this.components.peerRouting = this.configureComponent('peerRouting', new DefaultPeerRouting(this.components, {
141
108
  routers: peerRouters
142
109
  }));
143
- const contentRouters = (init.contentRouters ?? []).map(fn => this.configureComponent(fn(this.components)));
144
- if (init.dht != null) {
145
- // add dht to routers
146
- contentRouters.push(this.configureComponent(new DHTContentRouting(this.dht)));
147
- }
148
- this.contentRouting = this.components.contentRouting = this.configureComponent(new CompoundContentRouting(this.components, {
110
+ // Content routers
111
+ const contentRouters = (init.contentRouters ?? []).map((fn, index) => this.configureComponent(`content-router-${index}`, fn(this.components)));
112
+ this.contentRouting = this.components.contentRouting = this.configureComponent('contentRouting', new CompoundContentRouting(this.components, {
149
113
  routers: contentRouters
150
114
  }));
151
- this.fetchService = this.configureComponent(new FetchService(this.components, {
152
- ...init.fetch
153
- }));
154
- this.pingService = this.configureComponent(new PingService(this.components, {
155
- ...init.ping
156
- }));
157
- this.autonatService = this.configureComponent(new AutonatService(this.components, {
158
- ...init.autonat
159
- }));
160
- if (init.relay != null) {
161
- this.circuitService = this.configureComponent(init.relay(this.components));
162
- }
163
- // Discovery modules
164
- for (const fn of init.peerDiscovery ?? []) {
165
- const service = this.configureComponent(fn(this.components));
115
+ (init.peerDiscovery ?? []).forEach((fn, index) => {
116
+ const service = this.configureComponent(`peer-discovery-${index}`, fn(this.components));
166
117
  service.addEventListener('peer', (evt) => {
167
- this.onDiscoveryPeer(evt);
118
+ this.#onDiscoveryPeer(evt);
168
119
  });
169
- }
120
+ });
170
121
  // Transport modules
171
- init.transports.forEach((fn) => {
172
- this.components.transportManager.add(this.configureComponent(fn(this.components)));
122
+ init.transports.forEach((fn, index) => {
123
+ this.components.transportManager.add(this.configureComponent(`transport-${index}`, fn(this.components)));
173
124
  });
125
+ // User defined modules
126
+ if (init.services != null) {
127
+ for (const name of Object.keys(init.services)) {
128
+ const createService = init.services[name];
129
+ const service = createService(this.components);
130
+ if (service == null) {
131
+ log.error('service factory %s returned null or undefined instance', name);
132
+ continue;
133
+ }
134
+ this.services[name] = service;
135
+ this.configureComponent(name, service);
136
+ if (service[contentRouting] != null) {
137
+ log('registering service %s for content routing', name);
138
+ contentRouters.push(service[contentRouting]);
139
+ }
140
+ if (service[peerRouting] != null) {
141
+ log('registering service %s for peer routing', name);
142
+ peerRouters.push(service[peerRouting]);
143
+ }
144
+ if (service[peerDiscovery] != null) {
145
+ log('registering service %s for peer discovery', name);
146
+ service[peerDiscovery].addEventListener('peer', (evt) => {
147
+ this.#onDiscoveryPeer(evt);
148
+ });
149
+ }
150
+ }
151
+ }
174
152
  }
175
- configureComponent(component) {
176
- if (isStartable(component)) {
177
- this.services.push(component);
153
+ configureComponent(name, component) {
154
+ if (component == null) {
155
+ log.error('component %s was null or undefined', name);
178
156
  }
157
+ this.components[name] = component;
179
158
  return component;
180
159
  }
181
160
  /**
182
161
  * Starts the libp2p node and all its subsystems
183
162
  */
184
163
  async start() {
185
- if (this.started) {
164
+ if (this.#started) {
186
165
  return;
187
166
  }
188
- this.started = true;
167
+ this.#started = true;
189
168
  log('libp2p is starting');
190
169
  const keys = await this.keychain.listKeys();
191
170
  if (keys.find(key => key.name === 'self') == null) {
@@ -193,18 +172,9 @@ export class Libp2pNode extends EventEmitter {
193
172
  await this.keychain.importPeer('self', this.components.peerId);
194
173
  }
195
174
  try {
196
- await Promise.all(this.services.map(async (service) => {
197
- if (service.beforeStart != null) {
198
- await service.beforeStart();
199
- }
200
- }));
201
- // start any startables
202
- await Promise.all(this.services.map(async (service) => { await service.start(); }));
203
- await Promise.all(this.services.map(async (service) => {
204
- if (service.afterStart != null) {
205
- await service.afterStart();
206
- }
207
- }));
175
+ await this.components.beforeStart?.();
176
+ await this.components.start();
177
+ await this.components.afterStart?.();
208
178
  log('libp2p has started');
209
179
  }
210
180
  catch (err) {
@@ -217,26 +187,18 @@ export class Libp2pNode extends EventEmitter {
217
187
  * Stop the libp2p node by closing its listeners and open connections
218
188
  */
219
189
  async stop() {
220
- if (!this.started) {
190
+ if (!this.#started) {
221
191
  return;
222
192
  }
223
193
  log('libp2p is stopping');
224
- this.started = false;
225
- await Promise.all(this.services.map(async (service) => {
226
- if (service.beforeStop != null) {
227
- await service.beforeStop();
228
- }
229
- }));
230
- await Promise.all(this.services.map(async (service) => { await service.stop(); }));
231
- await Promise.all(this.services.map(async (service) => {
232
- if (service.afterStop != null) {
233
- await service.afterStop();
234
- }
235
- }));
194
+ this.#started = false;
195
+ await this.components.beforeStop?.();
196
+ await this.components.stop();
197
+ await this.components.afterStop?.();
236
198
  log('libp2p has stopped');
237
199
  }
238
200
  isStarted() {
239
- return this.started;
201
+ return this.#started;
240
202
  }
241
203
  getConnections(peerId) {
242
204
  return this.components.connectionManager.getConnections(peerId);
@@ -252,7 +214,7 @@ export class Libp2pNode extends EventEmitter {
252
214
  return Array.from(peerSet);
253
215
  }
254
216
  async dial(peer, options = {}) {
255
- return await this.components.connectionManager.openConnection(peer, options);
217
+ return this.components.connectionManager.openConnection(peer, options);
256
218
  }
257
219
  async dialProtocol(peer, protocols, options = {}) {
258
220
  if (protocols == null) {
@@ -263,7 +225,7 @@ export class Libp2pNode extends EventEmitter {
263
225
  throw new CodeError('no protocols were provided to open a stream', codes.ERR_INVALID_PROTOCOLS_FOR_STREAM);
264
226
  }
265
227
  const connection = await this.dial(peer, options);
266
- return await connection.newStream(protocols, options);
228
+ return connection.newStream(protocols, options);
267
229
  }
268
230
  getMultiaddrs() {
269
231
  return this.components.addressManager.getAddresses();
@@ -286,41 +248,21 @@ export class Libp2pNode extends EventEmitter {
286
248
  return peer.publicKey;
287
249
  }
288
250
  const peerInfo = await this.peerStore.get(peer);
289
- if (peerInfo.pubKey != null) {
290
- return peerInfo.pubKey;
291
- }
292
- if (this.dht == null) {
293
- throw new CodeError('Public key was not in the peer store and the DHT is not enabled', codes.ERR_NO_ROUTERS_AVAILABLE);
251
+ if (peerInfo.id.publicKey != null) {
252
+ return peerInfo.id.publicKey;
294
253
  }
295
254
  const peerKey = uint8ArrayConcat([
296
255
  uint8ArrayFromString('/pk/'),
297
256
  peer.multihash.digest
298
257
  ]);
299
- // search the dht
300
- for await (const event of this.dht.get(peerKey, options)) {
301
- if (event.name === 'VALUE') {
302
- const key = unmarshalPublicKey(event.value);
303
- await this.peerStore.keyBook.set(peer, event.value);
304
- return key.bytes;
305
- }
306
- }
307
- throw new CodeError(`Node not responding with its public key: ${peer.toString()}`, codes.ERR_INVALID_RECORD);
308
- }
309
- async fetch(peer, key, options = {}) {
310
- if (isMultiaddr(peer)) {
311
- const peerId = peerIdFromString(peer.getPeerId() ?? '');
312
- await this.components.peerStore.addressBook.add(peerId, [peer]);
313
- peer = peerId;
314
- }
315
- return await this.fetchService.fetch(peer, key, options);
316
- }
317
- async ping(peer, options = {}) {
318
- if (isMultiaddr(peer)) {
319
- const peerId = peerIdFromString(peer.getPeerId() ?? '');
320
- await this.components.peerStore.addressBook.add(peerId, [peer]);
321
- peer = peerId;
322
- }
323
- return await this.pingService.ping(peer, options);
258
+ // search any available content routing methods
259
+ const bytes = await this.contentRouting.get(peerKey, options);
260
+ // ensure the returned key is valid
261
+ unmarshalPublicKey(bytes);
262
+ await this.peerStore.patch(peer, {
263
+ publicKey: bytes
264
+ });
265
+ return bytes;
324
266
  }
325
267
  async handle(protocols, handler, options) {
326
268
  if (!Array.isArray(protocols)) {
@@ -339,28 +281,26 @@ export class Libp2pNode extends EventEmitter {
339
281
  }));
340
282
  }
341
283
  async register(protocol, topology) {
342
- return await this.registrar.register(protocol, topology);
284
+ return this.components.registrar.register(protocol, topology);
343
285
  }
344
286
  unregister(id) {
345
- this.registrar.unregister(id);
287
+ this.components.registrar.unregister(id);
346
288
  }
347
289
  /**
348
290
  * Called whenever peer discovery services emit `peer` events and adds peers
349
291
  * to the peer store.
350
292
  */
351
- onDiscoveryPeer(evt) {
293
+ #onDiscoveryPeer(evt) {
352
294
  const { detail: peer } = evt;
353
295
  if (peer.id.toString() === this.peerId.toString()) {
354
296
  log.error(new Error(codes.ERR_DISCOVERED_SELF));
355
297
  return;
356
298
  }
357
- if (peer.multiaddrs.length > 0) {
358
- void this.components.peerStore.addressBook.add(peer.id, peer.multiaddrs).catch(err => { log.error(err); });
359
- }
360
- if (peer.protocols.length > 0) {
361
- void this.components.peerStore.protoBook.set(peer.id, peer.protocols).catch(err => { log.error(err); });
362
- }
363
- this.dispatchEvent(new CustomEvent('peer:discovery', { detail: peer }));
299
+ void this.components.peerStore.merge(peer.id, {
300
+ multiaddrs: peer.multiaddrs,
301
+ protocols: peer.protocols
302
+ })
303
+ .catch(err => { log.error(err); });
364
304
  }
365
305
  }
366
306
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAuB,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,EAAoB,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAc/C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAE5B,MAAM,OAAO,UAA2D,SAAQ,YAA0B;IACjG,MAAM,CAAQ;IACd,SAAS,CAAW;IACpB,cAAc,CAAgB;IAC9B,WAAW,CAAa;IACxB,QAAQ,CAAU;IAClB,OAAO,CAAU;IACjB,QAAQ,CAAG;IAEX,UAAU,CAAY;IAC7B,QAAQ,CAAS;IAEjB,YAAa,IAAmB;QAC9B,KAAK,EAAE,CAAA;QAEP,oFAAoF;QACpF,oCAAoC;QACpC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAgB,CAAA;QAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,CAAC,aAAa,GAAG,CAAC,GAAQ,EAAE,EAAE;YAClC,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CACvC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAClD,CAAA;YAED,OAAO,cAAc,IAAI,cAAc,CAAA;QACzC,CAAC,CAAA;QAED,IAAI;YACF,sCAAsC;YACtC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;SACpC;QAAC,MAAM,GAAE;QAEV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,2CAA2C;QAC3C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACrD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,eAAe,EAAE;YAClD,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;SACvD,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,UAAU,EAAE;YACxF,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,sBAAsB;YACrE,GAAG,IAAI,CAAC,SAAS;SAClB,CAAC,CAAC,CAAA;QAEH,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;SACjF;QAED,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;YACtD,uEAAuE;YACvE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;gBAC/B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;aACtE;QACH,CAAC,CAAC,CAAA;QAEF,4CAA4C;QAC5C,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE;YACpC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;SACrF;QAED,sBAAsB;QACtB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE;YAC9D,oBAAoB,EAAE,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1J,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5H,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB;SACpE,CAAC,CAAA;QAEF,8BAA8B;QAC9B,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAEhH,gCAAgC;QAChC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAEnH,uBAAuB;QACvB,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAE3E,2CAA2C;QAC3C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QAErG,kBAAkB;QAClB,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,EAAE,CAAA;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE;YACvF,GAAG,YAAY;YACf,GAAG,IAAI,CAAC,QAAQ;SACjB,CAAC,CAAC,CAAA;QAEH,eAAe;QACf,MAAM,WAAW,GAAkB,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACpJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE;YAC9H,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC,CAAA;QAEH,kBAAkB;QAClB,MAAM,cAAc,GAAqB,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAChK,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE;YAC3I,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC,CAGF;QAAA,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YAEvF,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,oBAAoB;QACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1G,CAAC,CAAC,CAAA;QAEF,uBAAuB;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACzB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBACzC,MAAM,OAAO,GAAQ,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAEnD,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,GAAG,CAAC,KAAK,CAAC,wDAAwD,EAAE,IAAI,CAAC,CAAA;oBACzE,SAAQ;iBACT;gBAED,IAAI,CAAC,QAAQ,CAAC,IAAe,CAAC,GAAG,OAAO,CAAA;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBAEtC,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE;oBACnC,GAAG,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAA;oBACvD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;iBAC7C;gBAED,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;oBAChC,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC,CAAA;oBACpD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;iBACvC;gBAED,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;oBAClC,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAA;oBACtD,OAAO,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAA0B,EAAE,EAAE;wBAC7E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;oBAC5B,CAAC,CAAC,CAAA;iBACH;aACF;SACF;IACH,CAAC;IAEO,kBAAkB,CAAM,IAAY,EAAE,SAAY;QACxD,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;SACtD;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;QAEjC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAEzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAE3C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACjD,GAAG,CAAC,kCAAkC,CAAC,CAAA;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAC/D;QAED,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAA;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAA;YACpC,GAAG,CAAC,oBAAoB,CAAC,CAAA;SAC1B;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;YACnD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YACjB,MAAM,GAAG,CAAA;SACV;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAM;SACP;QAED,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAEzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAA;QACpC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAA;QAEnC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,cAAc,CAAE,MAAe;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IACjE,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAA;IACzD,CAAC;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE;YACrE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC7B;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,IAAsC,EAAE,UAAwB,EAAE;QAC5E,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,IAAsC,EAAE,SAA4B,EAAE,UAAwB,EAAE;QAClH,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,6CAA6C,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAA;SAC3G;QAED,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE9D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,SAAS,CAAC,6CAA6C,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAA;SAC3G;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEjD,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,CAAA;IACtD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,IAAwB;QACpC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAE,IAAY,EAAE,UAAwB,EAAE;QAC1D,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;QAE5B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAA;SACtB;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE/C,IAAI,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,EAAE;YACjC,OAAO,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAA;SAC7B;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAC/B,oBAAoB,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,MAAM;SACtB,CAAC,CAAA;QAEF,+CAA+C;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC7D,mCAAmC;QACnC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;YAC/B,SAAS,EAAE,KAAK;SACjB,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,SAA4B,EAAE,OAAsB,EAAE,OAA8B;QAChG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;SACxB;QAED,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACpE,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,SAA4B;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;SACxB;QAED,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACpD,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,QAAgB,EAAE,QAAkB;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED,UAAU,CAAE,EAAU;QACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAE,GAA0B;QAC1C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAE5B,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;YACjD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC/C,OAAM;SACP;QAED,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAmD,OAAyB;IAChH,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAkC,CAAA;QAE5D,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI;gBACF,yCAAyC;gBACzC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;oBACnC,SAAS;iBACV,EAAE,YAAY,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAErE,OAAO,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;aACrD;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE;oBAChC,MAAM,GAAG,CAAA;iBACV;aACF;SACF;KACF;IAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;QAC1B,mDAAmD;QACnD,OAAO,CAAC,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAA;KAC7C;IAED,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AAChD,CAAC"}
@@ -1,56 +1,19 @@
1
1
  import type { PeerId } from '@libp2p/interface-peer-id';
2
- import type { PeerRouting } from '@libp2p/interface-peer-routing';
3
- import type { AbortOptions } from '@libp2p/interfaces';
4
- import type { Startable } from '@libp2p/interfaces/startable';
5
2
  import type { PeerInfo } from '@libp2p/interface-peer-info';
3
+ import type { PeerRouting } from '@libp2p/interface-peer-routing';
6
4
  import type { PeerStore } from '@libp2p/interface-peer-store';
7
- export interface RefreshManagerInit {
8
- /**
9
- * Whether to enable the Refresh manager
10
- */
11
- enabled?: boolean;
12
- /**
13
- * Boot delay to start the Refresh Manager (in ms)
14
- */
15
- bootDelay?: number;
16
- /**
17
- * Interval between each Refresh Manager run (in ms)
18
- */
19
- interval?: number;
20
- /**
21
- * How long to let each refresh run (in ms)
22
- */
23
- timeout?: number;
24
- }
5
+ import type { AbortOptions } from '@libp2p/interfaces';
25
6
  export interface PeerRoutingInit {
26
7
  routers?: PeerRouting[];
27
- refreshManager?: RefreshManagerInit;
28
8
  }
29
9
  export interface DefaultPeerRoutingComponents {
30
10
  peerId: PeerId;
31
11
  peerStore: PeerStore;
32
12
  }
33
- export declare class DefaultPeerRouting implements PeerRouting, Startable {
13
+ export declare class DefaultPeerRouting implements PeerRouting {
34
14
  private readonly components;
35
15
  private readonly routers;
36
- private readonly refreshManagerInit;
37
- private timeoutId?;
38
- private started;
39
- private abortController?;
40
16
  constructor(components: DefaultPeerRoutingComponents, init: PeerRoutingInit);
41
- isStarted(): boolean;
42
- /**
43
- * Start peer routing service.
44
- */
45
- start(): Promise<void>;
46
- /**
47
- * Recurrent task to find closest peers and add their addresses to the Address Book.
48
- */
49
- _findClosestPeersTask(): Promise<void>;
50
- /**
51
- * Stop peer routing service.
52
- */
53
- stop(): Promise<void>;
54
17
  /**
55
18
  * Iterates over all peer routers in parallel to find the given peer
56
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAmB,YAAW,WAAW,EAAE,SAAS;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,SAAS,CAAC,CAA+B;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAmB;gBAE9B,UAAU,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;IAS5E,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;IACG,qBAAqB,IAAK,OAAO,CAAC,IAAI,CAAC;IA0B7C;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}
1
+ {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE1B,UAAU,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;IAK5E;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}