libp2p 0.37.3 → 0.38.0

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 (189) hide show
  1. package/README.md +1 -2
  2. package/dist/src/address-manager/index.d.ts +2 -2
  3. package/dist/src/address-manager/index.d.ts.map +1 -1
  4. package/dist/src/circuit/auto-relay.d.ts +4 -4
  5. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  6. package/dist/src/circuit/circuit/hop.d.ts +7 -5
  7. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  8. package/dist/src/circuit/circuit/hop.js +8 -4
  9. package/dist/src/circuit/circuit/hop.js.map +1 -1
  10. package/dist/src/circuit/circuit/stop.d.ts +6 -4
  11. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  12. package/dist/src/circuit/circuit/stop.js +4 -2
  13. package/dist/src/circuit/circuit/stop.js.map +1 -1
  14. package/dist/src/circuit/circuit/stream-handler.d.ts +3 -2
  15. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  16. package/dist/src/circuit/circuit/stream-handler.js +2 -2
  17. package/dist/src/circuit/circuit/stream-handler.js.map +1 -1
  18. package/dist/src/circuit/index.d.ts +4 -12
  19. package/dist/src/circuit/index.d.ts.map +1 -1
  20. package/dist/src/circuit/index.js.map +1 -1
  21. package/dist/src/circuit/listener.d.ts +3 -3
  22. package/dist/src/circuit/listener.d.ts.map +1 -1
  23. package/dist/src/circuit/pb/index.d.ts +5 -4
  24. package/dist/src/circuit/pb/index.d.ts.map +1 -1
  25. package/dist/src/circuit/pb/index.js +107 -11
  26. package/dist/src/circuit/pb/index.js.map +1 -1
  27. package/dist/src/circuit/transport.d.ts +8 -5
  28. package/dist/src/circuit/transport.d.ts.map +1 -1
  29. package/dist/src/circuit/transport.js +81 -59
  30. package/dist/src/circuit/transport.js.map +1 -1
  31. package/dist/src/config.d.ts.map +1 -1
  32. package/dist/src/config.js +27 -4
  33. package/dist/src/config.js.map +1 -1
  34. package/dist/src/connection-manager/auto-dialler.d.ts +1 -1
  35. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  36. package/dist/src/connection-manager/dialer/auto-dialer.d.ts +2 -2
  37. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -1
  38. package/dist/src/connection-manager/dialer/auto-dialer.js +6 -0
  39. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -1
  40. package/dist/src/connection-manager/dialer/dial-request.d.ts +1 -1
  41. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -1
  42. package/dist/src/connection-manager/dialer/index.d.ts +9 -9
  43. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
  44. package/dist/src/connection-manager/dialer/index.js +11 -11
  45. package/dist/src/connection-manager/dialer/index.js.map +1 -1
  46. package/dist/src/connection-manager/index.d.ts +20 -16
  47. package/dist/src/connection-manager/index.d.ts.map +1 -1
  48. package/dist/src/connection-manager/index.js +185 -65
  49. package/dist/src/connection-manager/index.js.map +1 -1
  50. package/dist/src/constants.d.ts +4 -0
  51. package/dist/src/constants.d.ts.map +1 -1
  52. package/dist/src/constants.js +4 -0
  53. package/dist/src/constants.js.map +1 -1
  54. package/dist/src/content-routing/index.d.ts +4 -4
  55. package/dist/src/content-routing/index.d.ts.map +1 -1
  56. package/dist/src/content-routing/utils.d.ts +2 -2
  57. package/dist/src/content-routing/utils.d.ts.map +1 -1
  58. package/dist/src/dht/dht-content-routing.d.ts +3 -3
  59. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  60. package/dist/src/dht/dht-peer-routing.d.ts +5 -5
  61. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  62. package/dist/src/dht/dummy-dht.d.ts +3 -3
  63. package/dist/src/dht/dummy-dht.d.ts.map +1 -1
  64. package/dist/src/dht/dummy-dht.js +1 -1
  65. package/dist/src/dht/dummy-dht.js.map +1 -1
  66. package/dist/src/errors.d.ts +4 -1
  67. package/dist/src/errors.d.ts.map +1 -1
  68. package/dist/src/errors.js +3 -0
  69. package/dist/src/errors.js.map +1 -1
  70. package/dist/src/fetch/index.d.ts +11 -4
  71. package/dist/src/fetch/index.d.ts.map +1 -1
  72. package/dist/src/fetch/index.js +82 -41
  73. package/dist/src/fetch/index.js.map +1 -1
  74. package/dist/src/fetch/pb/proto.d.ts +4 -3
  75. package/dist/src/fetch/pb/proto.d.ts.map +1 -1
  76. package/dist/src/fetch/pb/proto.js +88 -8
  77. package/dist/src/fetch/pb/proto.js.map +1 -1
  78. package/dist/src/get-peer.d.ts +2 -2
  79. package/dist/src/get-peer.d.ts.map +1 -1
  80. package/dist/src/get-peer.js +1 -1
  81. package/dist/src/get-peer.js.map +1 -1
  82. package/dist/src/identify/index.d.ts +8 -8
  83. package/dist/src/identify/index.d.ts.map +1 -1
  84. package/dist/src/identify/index.js +49 -34
  85. package/dist/src/identify/index.js.map +1 -1
  86. package/dist/src/identify/pb/message.d.ts +2 -1
  87. package/dist/src/identify/pb/message.d.ts.map +1 -1
  88. package/dist/src/identify/pb/message.js +94 -10
  89. package/dist/src/identify/pb/message.js.map +1 -1
  90. package/dist/src/index.d.ts +18 -17
  91. package/dist/src/index.d.ts.map +1 -1
  92. package/dist/src/index.js.map +1 -1
  93. package/dist/src/insecure/index.d.ts +2 -2
  94. package/dist/src/insecure/index.d.ts.map +1 -1
  95. package/dist/src/insecure/index.js +8 -4
  96. package/dist/src/insecure/index.js.map +1 -1
  97. package/dist/src/insecure/pb/proto.d.ts +4 -3
  98. package/dist/src/insecure/pb/proto.d.ts.map +1 -1
  99. package/dist/src/insecure/pb/proto.js +89 -9
  100. package/dist/src/insecure/pb/proto.js.map +1 -1
  101. package/dist/src/keychain/index.d.ts +2 -2
  102. package/dist/src/keychain/index.d.ts.map +1 -1
  103. package/dist/src/libp2p.d.ts +14 -14
  104. package/dist/src/libp2p.d.ts.map +1 -1
  105. package/dist/src/libp2p.js +17 -17
  106. package/dist/src/libp2p.js.map +1 -1
  107. package/dist/src/metrics/index.d.ts +4 -5
  108. package/dist/src/metrics/index.d.ts.map +1 -1
  109. package/dist/src/metrics/index.js +9 -6
  110. package/dist/src/metrics/index.js.map +1 -1
  111. package/dist/src/metrics/moving-average.d.ts +1 -1
  112. package/dist/src/metrics/moving-average.d.ts.map +1 -1
  113. package/dist/src/metrics/stats.d.ts +1 -1
  114. package/dist/src/metrics/stats.d.ts.map +1 -1
  115. package/dist/src/nat-manager.d.ts +1 -1
  116. package/dist/src/nat-manager.d.ts.map +1 -1
  117. package/dist/src/peer-record-updater.d.ts +1 -1
  118. package/dist/src/peer-record-updater.d.ts.map +1 -1
  119. package/dist/src/peer-routing.d.ts +4 -4
  120. package/dist/src/peer-routing.d.ts.map +1 -1
  121. package/dist/src/ping/index.d.ts +10 -3
  122. package/dist/src/ping/index.d.ts.map +1 -1
  123. package/dist/src/ping/index.js +32 -9
  124. package/dist/src/ping/index.js.map +1 -1
  125. package/dist/src/pnet/index.d.ts +1 -2
  126. package/dist/src/pnet/index.d.ts.map +1 -1
  127. package/dist/src/pnet/index.js +2 -1
  128. package/dist/src/pnet/index.js.map +1 -1
  129. package/dist/src/pubsub/dummy-pubsub.d.ts +2 -2
  130. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -1
  131. package/dist/src/registrar.d.ts +10 -8
  132. package/dist/src/registrar.d.ts.map +1 -1
  133. package/dist/src/registrar.js +63 -44
  134. package/dist/src/registrar.js.map +1 -1
  135. package/dist/src/transport-manager.d.ts +3 -3
  136. package/dist/src/transport-manager.d.ts.map +1 -1
  137. package/dist/src/upgrader.d.ts +12 -6
  138. package/dist/src/upgrader.d.ts.map +1 -1
  139. package/dist/src/upgrader.js +183 -82
  140. package/dist/src/upgrader.js.map +1 -1
  141. package/dist/src/version.d.ts.map +1 -1
  142. package/dist/src/version.js.map +1 -1
  143. package/package.json +66 -42
  144. package/src/address-manager/index.ts +2 -2
  145. package/src/circuit/README.md +2 -2
  146. package/src/circuit/auto-relay.ts +4 -4
  147. package/src/circuit/circuit/hop.ts +20 -11
  148. package/src/circuit/circuit/stop.ts +10 -5
  149. package/src/circuit/circuit/stream-handler.ts +6 -5
  150. package/src/circuit/index.ts +4 -13
  151. package/src/circuit/listener.ts +3 -3
  152. package/src/circuit/pb/index.ts +133 -15
  153. package/src/circuit/transport.ts +92 -63
  154. package/src/config.ts +27 -4
  155. package/src/connection-manager/auto-dialler.ts +1 -1
  156. package/src/connection-manager/dialer/auto-dialer.ts +8 -2
  157. package/src/connection-manager/dialer/dial-request.ts +1 -1
  158. package/src/connection-manager/dialer/index.ts +15 -15
  159. package/src/connection-manager/index.ts +239 -82
  160. package/src/constants.ts +5 -0
  161. package/src/content-routing/index.ts +2 -2
  162. package/src/content-routing/utils.ts +2 -2
  163. package/src/dht/dht-content-routing.ts +2 -2
  164. package/src/dht/dht-peer-routing.ts +3 -3
  165. package/src/dht/dummy-dht.ts +3 -3
  166. package/src/errors.ts +4 -1
  167. package/src/fetch/index.ts +120 -53
  168. package/src/fetch/pb/proto.ts +109 -11
  169. package/src/get-peer.ts +3 -3
  170. package/src/identify/index.ts +64 -47
  171. package/src/identify/pb/message.ts +111 -11
  172. package/src/index.ts +18 -17
  173. package/src/insecure/index.ts +11 -6
  174. package/src/insecure/pb/proto.ts +111 -12
  175. package/src/keychain/index.ts +2 -2
  176. package/src/libp2p.ts +34 -29
  177. package/src/metrics/index.ts +13 -12
  178. package/src/metrics/moving-average.ts +1 -1
  179. package/src/metrics/stats.ts +1 -1
  180. package/src/nat-manager.ts +1 -1
  181. package/src/peer-record-updater.ts +1 -1
  182. package/src/peer-routing.ts +4 -4
  183. package/src/ping/index.ts +48 -15
  184. package/src/pnet/index.ts +3 -2
  185. package/src/pubsub/dummy-pubsub.ts +2 -2
  186. package/src/registrar.ts +79 -55
  187. package/src/transport-manager.ts +3 -3
  188. package/src/upgrader.ts +223 -93
  189. package/src/version.ts +1 -2
@@ -2,12 +2,12 @@ import { SummaryObject } from './latency-monitor.js';
2
2
  import type { AbortOptions } from '@libp2p/interfaces';
3
3
  import { EventEmitter } from '@libp2p/interfaces/events';
4
4
  import type { Startable } from '@libp2p/interfaces/startable';
5
- import { PeerId } from '@libp2p/interfaces/peer-id';
6
- import type { Connection } from '@libp2p/interfaces/connection';
7
- import type { ConnectionManager } from '@libp2p/interfaces/connection-manager';
8
- import { Components, Initializable } from '@libp2p/interfaces/components';
5
+ import { PeerId } from '@libp2p/interface-peer-id';
6
+ import type { Connection } from '@libp2p/interface-connection';
7
+ import type { ConnectionManager } from '@libp2p/interface-connection-manager';
8
+ import { Components, Initializable } from '@libp2p/components';
9
9
  import { Dialer } from './dialer/index.js';
10
- import type { AddressSorter } from '@libp2p/interfaces/peer-store';
10
+ import type { AddressSorter } from '@libp2p/interface-peer-store';
11
11
  import type { Resolver } from '@multiformats/multiaddr';
12
12
  export interface ConnectionManagerInit {
13
13
  /**
@@ -42,10 +42,6 @@ export interface ConnectionManagerInit {
42
42
  * How often, in milliseconds, to compute averages
43
43
  */
44
44
  movingAverageInterval?: number;
45
- /**
46
- * The value of the peer
47
- */
48
- defaultPeerValue?: number;
49
45
  /**
50
46
  * If true, try to connect to all discovered peers up to the connection manager limit
51
47
  */
@@ -68,9 +64,15 @@ export interface ConnectionManagerInit {
68
64
  */
69
65
  maxAddrsToDial?: number;
70
66
  /**
71
- * How long a dial attempt is allowed to take
67
+ * How long a dial attempt is allowed to take, including DNS resolution
68
+ * of the multiaddr, opening a socket and upgrading it to a Connection.
72
69
  */
73
70
  dialTimeout?: number;
71
+ /**
72
+ * When a new inbound connection is opened, the upgrade process (e.g. protect,
73
+ * encrypt, multiplex etc) must complete within this number of ms.
74
+ */
75
+ inboundUpgradeTimeout: number;
74
76
  /**
75
77
  * Number of max concurrent dials per peer
76
78
  */
@@ -79,6 +81,11 @@ export interface ConnectionManagerInit {
79
81
  * Multiaddr resolvers to use when dialing
80
82
  */
81
83
  resolvers?: Record<string, Resolver>;
84
+ /**
85
+ * On startup we try to dial any peer that has previously been
86
+ * tagged with KEEP_ALIVE up to this timeout in ms. (default: 60000)
87
+ */
88
+ startupReconnectTimeout?: number;
82
89
  }
83
90
  export interface ConnectionManagerEvents {
84
91
  'peer:connect': CustomEvent<PeerId>;
@@ -91,11 +98,13 @@ export declare class DefaultConnectionManager extends EventEmitter<ConnectionMan
91
98
  readonly dialer: Dialer;
92
99
  private components;
93
100
  private readonly opts;
94
- private readonly peerValues;
95
101
  private readonly connections;
96
102
  private started;
97
103
  private timer?;
98
104
  private readonly latencyMonitor;
105
+ private readonly startupReconnectTimeout;
106
+ private connectOnStartupController?;
107
+ private readonly dialTimeout;
99
108
  constructor(init: ConnectionManagerInit);
100
109
  init(components: Components): void;
101
110
  isStarted(): boolean;
@@ -114,11 +123,6 @@ export declare class DefaultConnectionManager extends EventEmitter<ConnectionMan
114
123
  * Cleans up the connections
115
124
  */
116
125
  _close(): Promise<void>;
117
- /**
118
- * Sets the value of the given peer. Peers with lower values
119
- * will be disconnected first.
120
- */
121
- setPeerValue(peerId: PeerId, value: number): void;
122
126
  /**
123
127
  * Checks the libp2p metrics to determine if any values have exceeded
124
128
  * the configured maximums.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAAY,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAqBvD,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACvC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,YAAY,CAAC,uBAAuB,CAAE,YAAW,iBAAiB,EAAE,SAAS,EAAE,aAAa;IACxI,SAAgB,MAAM,EAAE,MAAM,CAAA;IAC9B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAElC,IAAI,EAAE,qBAAqB;IAkDxC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAMnC,SAAS;IAIT;;;OAGG;IACG,KAAK;IAeL,UAAU;IAKV,UAAU;IAKhB;;OAEG;IACG,IAAI;IAYV;;OAEG;IACG,MAAM;IAoBZ;;;OAGG;IACH,YAAY,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQ3C;;;;;OAKG;IACG,aAAa;IAmBnB,SAAS,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC;IAMvC;;OAEG;IACG,UAAU,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC;IAkC9C;;OAEG;IACH,YAAY,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC;IAuB1C,cAAc,CAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAcxC,cAAc,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAoC5E,gBAAgB,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;OAEG;IACH,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAgBrC;;OAEG;IACH,iBAAiB,CAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC;IASlD;;OAEG;IACG,cAAc,CAAE,IAAI,EAAE,MAAM,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU;IAS3F;;;OAGG;IACG,sBAAsB,CAAE,OAAO,EAAE,MAAM;CA0C9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,15 @@ import { LatencyMonitor } from './latency-monitor.js';
5
5
  // @ts-expect-error retimer does not have types
6
6
  import retimer from 'retimer';
7
7
  import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
8
- import { trackedMap } from '@libp2p/tracked-map';
9
8
  import { codes } from '../errors.js';
10
- import { isPeerId } from '@libp2p/interfaces/peer-id';
9
+ import { isPeerId } from '@libp2p/interface-peer-id';
11
10
  import { setMaxListeners } from 'events';
12
- import { Components } from '@libp2p/interfaces/components';
13
- import * as STATUS from '@libp2p/interfaces/connection/status';
11
+ import { Components } from '@libp2p/components';
12
+ import * as STATUS from '@libp2p/interface-connection/status';
14
13
  import { Dialer } from './dialer/index.js';
14
+ import { PeerMap } from '@libp2p/peer-collections';
15
+ import { TimeoutController } from 'timeout-abort-controller';
16
+ import { KEEP_ALIVE } from '@libp2p/interface-peer-store/tags';
15
17
  const log = logger('libp2p:connection-manager');
16
18
  const defaultOptions = {
17
19
  maxConnections: Infinity,
@@ -22,12 +24,11 @@ const defaultOptions = {
22
24
  maxEventLoopDelay: Infinity,
23
25
  pollInterval: 2000,
24
26
  autoDialInterval: 10000,
25
- movingAverageInterval: 60000,
26
- defaultPeerValue: 0.5
27
+ movingAverageInterval: 60000
27
28
  };
29
+ const METRICS_SYSTEM = 'libp2p';
28
30
  const METRICS_COMPONENT = 'connection-manager';
29
- const METRICS_PEER_CONNECTIONS = 'peer-connections';
30
- const METRICS_PEER_VALUES = 'peer-values';
31
+ const STARTUP_RECONNECT_TIMEOUT = 60000;
31
32
  /**
32
33
  * Responsible for managing known connections.
33
34
  */
@@ -40,24 +41,10 @@ export class DefaultConnectionManager extends EventEmitter {
40
41
  throw errCode(new Error('Connection Manager maxConnections must be greater than minConnections'), codes.ERR_INVALID_PARAMETERS);
41
42
  }
42
43
  log('options: %o', this.opts);
43
- /**
44
- * Map of peer identifiers to their peer value for pruning connections.
45
- *
46
- * @type {Map<string, number>}
47
- */
48
- this.peerValues = trackedMap({
49
- component: METRICS_COMPONENT,
50
- metric: METRICS_PEER_VALUES,
51
- metrics: this.components.getMetrics()
52
- });
53
44
  /**
54
45
  * Map of connections per peer
55
46
  */
56
- this.connections = trackedMap({
57
- component: METRICS_COMPONENT,
58
- metric: METRICS_PEER_CONNECTIONS,
59
- metrics: this.components.getMetrics()
60
- });
47
+ this.connections = new Map();
61
48
  this.started = false;
62
49
  this._checkMetrics = this._checkMetrics.bind(this);
63
50
  this.latencyMonitor = new LatencyMonitor({
@@ -72,10 +59,85 @@ export class DefaultConnectionManager extends EventEmitter {
72
59
  this.dialer = new Dialer(this.opts);
73
60
  this.onConnect = this.onConnect.bind(this);
74
61
  this.onDisconnect = this.onDisconnect.bind(this);
62
+ this.startupReconnectTimeout = init.startupReconnectTimeout ?? STARTUP_RECONNECT_TIMEOUT;
63
+ this.dialTimeout = init.dialTimeout ?? 30000;
75
64
  }
76
65
  init(components) {
77
66
  this.components = components;
78
67
  this.dialer.init(components);
68
+ // track inbound/outbound connections
69
+ this.components.getMetrics()?.updateComponentMetric({
70
+ system: METRICS_SYSTEM,
71
+ component: METRICS_COMPONENT,
72
+ metric: 'connections',
73
+ label: 'direction',
74
+ value: () => {
75
+ const metric = {
76
+ inbound: 0,
77
+ outbound: 0
78
+ };
79
+ for (const conns of this.connections.values()) {
80
+ for (const conn of conns) {
81
+ if (conn.stat.direction === 'inbound') {
82
+ metric.inbound++;
83
+ }
84
+ else {
85
+ metric.outbound++;
86
+ }
87
+ }
88
+ }
89
+ return metric;
90
+ }
91
+ });
92
+ // track total number of streams per protocol
93
+ this.components.getMetrics()?.updateComponentMetric({
94
+ system: METRICS_SYSTEM,
95
+ component: METRICS_COMPONENT,
96
+ metric: 'protocol-streams-total',
97
+ label: 'protocol',
98
+ value: () => {
99
+ const metric = {};
100
+ for (const conns of this.connections.values()) {
101
+ for (const conn of conns) {
102
+ for (const stream of conn.streams) {
103
+ const key = `${stream.stat.direction} ${stream.stat.protocol ?? 'unnegotiated'}`;
104
+ metric[key] = (metric[key] ?? 0) + 1;
105
+ }
106
+ }
107
+ }
108
+ return metric;
109
+ }
110
+ });
111
+ // track 90th percentile of streams per protocol
112
+ this.components.getMetrics()?.updateComponentMetric({
113
+ system: METRICS_SYSTEM,
114
+ component: METRICS_COMPONENT,
115
+ metric: 'protocol-streams-per-connection-90th-percentile',
116
+ label: 'protocol',
117
+ value: () => {
118
+ const allStreams = {};
119
+ for (const conns of this.connections.values()) {
120
+ for (const conn of conns) {
121
+ const streams = {};
122
+ for (const stream of conn.streams) {
123
+ const key = `${stream.stat.direction} ${stream.stat.protocol ?? 'unnegotiated'}`;
124
+ streams[key] = (streams[key] ?? 0) + 1;
125
+ }
126
+ for (const [protocol, count] of Object.entries(streams)) {
127
+ allStreams[protocol] = allStreams[protocol] ?? [];
128
+ allStreams[protocol].push(count);
129
+ }
130
+ }
131
+ }
132
+ const metric = {};
133
+ for (let [protocol, counts] of Object.entries(allStreams)) {
134
+ counts = counts.sort((a, b) => a - b);
135
+ const index = Math.floor(counts.length * 0.9);
136
+ metric[protocol] = counts[index];
137
+ }
138
+ return metric;
139
+ }
140
+ });
79
141
  }
80
142
  isStarted() {
81
143
  return this.started;
@@ -99,8 +161,43 @@ export class DefaultConnectionManager extends EventEmitter {
99
161
  async afterStart() {
100
162
  this.components.getUpgrader().addEventListener('connection', this.onConnect);
101
163
  this.components.getUpgrader().addEventListener('connectionEnd', this.onDisconnect);
164
+ // re-connect to any peers with the KEEP_ALIVE tag
165
+ void Promise.resolve()
166
+ .then(async () => {
167
+ const keepAlivePeers = [];
168
+ for (const peer of await this.components.getPeerStore().all()) {
169
+ const tags = await this.components.getPeerStore().getTags(peer.id);
170
+ const hasKeepAlive = tags.filter(tag => tag.name === KEEP_ALIVE).length > 0;
171
+ if (hasKeepAlive) {
172
+ keepAlivePeers.push(peer.id);
173
+ }
174
+ }
175
+ this.connectOnStartupController?.clear();
176
+ this.connectOnStartupController = new TimeoutController(this.startupReconnectTimeout);
177
+ try {
178
+ // fails on node < 15.4
179
+ setMaxListeners?.(Infinity, this.connectOnStartupController.signal);
180
+ }
181
+ catch { }
182
+ await Promise.all(keepAlivePeers.map(async (peer) => {
183
+ await this.openConnection(peer, {
184
+ signal: this.connectOnStartupController?.signal
185
+ })
186
+ .catch(err => {
187
+ log.error(err);
188
+ });
189
+ }));
190
+ })
191
+ .catch(err => {
192
+ log.error(err);
193
+ })
194
+ .finally(() => {
195
+ this.connectOnStartupController?.clear();
196
+ });
102
197
  }
103
198
  async beforeStop() {
199
+ // if we are still dialing KEEP_ALIVE peers, abort those dials
200
+ this.connectOnStartupController?.abort();
104
201
  this.components.getUpgrader().removeEventListener('connection', this.onConnect);
105
202
  this.components.getUpgrader().removeEventListener('connectionEnd', this.onDisconnect);
106
203
  }
@@ -138,16 +235,6 @@ export class DefaultConnectionManager extends EventEmitter {
138
235
  await Promise.all(tasks);
139
236
  this.connections.clear();
140
237
  }
141
- /**
142
- * Sets the value of the given peer. Peers with lower values
143
- * will be disconnected first.
144
- */
145
- setPeerValue(peerId, value) {
146
- if (value < 0 || value > 1) {
147
- throw new Error('value should be a number between 0 and 1');
148
- }
149
- this.peerValues.set(peerId.toString(), value);
150
- }
151
238
  /**
152
239
  * Checks the libp2p metrics to determine if any values have exceeded
153
240
  * the configured maximums.
@@ -199,9 +286,6 @@ export class DefaultConnectionManager extends EventEmitter {
199
286
  if (peerId.publicKey != null) {
200
287
  await this.components.getPeerStore().keyBook.set(peerId, peerId.publicKey);
201
288
  }
202
- if (!this.peerValues.has(peerIdStr)) {
203
- this.peerValues.set(peerIdStr, this.opts.defaultPeerValue);
204
- }
205
289
  const numConnections = this.getConnections().length;
206
290
  const toPrune = numConnections - this.opts.maxConnections;
207
291
  await this._checkMaxLimit('maxConnections', numConnections, toPrune);
@@ -224,7 +308,6 @@ export class DefaultConnectionManager extends EventEmitter {
224
308
  }
225
309
  else if (storedConn != null) {
226
310
  this.connections.delete(peerId);
227
- this.peerValues.delete(connection.remotePeer.toString());
228
311
  this.dispatchEvent(new CustomEvent('peer:disconnect', { detail: connection }));
229
312
  this.components.getMetrics()?.onPeerDisconnected(connection.remotePeer);
230
313
  }
@@ -239,32 +322,49 @@ export class DefaultConnectionManager extends EventEmitter {
239
322
  }
240
323
  return conns;
241
324
  }
242
- async openConnection(peerId, options) {
325
+ async openConnection(peerId, options = {}) {
243
326
  log('dial to %p', peerId);
244
327
  const existingConnections = this.getConnections(peerId);
245
328
  if (existingConnections.length > 0) {
246
329
  log('had an existing connection to %p', peerId);
247
330
  return existingConnections[0];
248
331
  }
249
- const connection = await this.dialer.dial(peerId, options);
250
- let peerConnections = this.connections.get(peerId.toString());
251
- if (peerConnections == null) {
252
- peerConnections = [];
253
- this.connections.set(peerId.toString(), peerConnections);
332
+ let timeoutController;
333
+ if (options?.signal == null) {
334
+ timeoutController = new TimeoutController(this.dialTimeout);
335
+ options.signal = timeoutController.signal;
336
+ try {
337
+ // fails on node < 15.4
338
+ setMaxListeners?.(Infinity, timeoutController.signal);
339
+ }
340
+ catch { }
254
341
  }
255
- // we get notified of connections via the Upgrader emitting "connection"
256
- // events, double check we aren't already tracking this connection before
257
- // storing it
258
- let trackedConnection = false;
259
- for (const conn of peerConnections) {
260
- if (conn.id === connection.id) {
261
- trackedConnection = true;
342
+ try {
343
+ const connection = await this.dialer.dial(peerId, options);
344
+ let peerConnections = this.connections.get(peerId.toString());
345
+ if (peerConnections == null) {
346
+ peerConnections = [];
347
+ this.connections.set(peerId.toString(), peerConnections);
348
+ }
349
+ // we get notified of connections via the Upgrader emitting "connection"
350
+ // events, double check we aren't already tracking this connection before
351
+ // storing it
352
+ let trackedConnection = false;
353
+ for (const conn of peerConnections) {
354
+ if (conn.id === connection.id) {
355
+ trackedConnection = true;
356
+ }
262
357
  }
358
+ if (!trackedConnection) {
359
+ peerConnections.push(connection);
360
+ }
361
+ return connection;
263
362
  }
264
- if (!trackedConnection) {
265
- peerConnections.push(connection);
363
+ finally {
364
+ if (timeoutController != null) {
365
+ timeoutController.clear();
366
+ }
266
367
  }
267
- return connection;
268
368
  }
269
369
  async closeConnections(peerId) {
270
370
  const connections = this.connections.get(peerId.toString()) ?? [];
@@ -304,7 +404,7 @@ export class DefaultConnectionManager extends EventEmitter {
304
404
  const limit = this.opts[name];
305
405
  log.trace('checking limit of %s. current value: %d of %d', name, value, limit);
306
406
  if (value > limit) {
307
- log('%s: limit exceeded: %p, %d, pruning %d connection(s)', this.components.getPeerId(), name, value, toPrune);
407
+ log('%s: limit exceeded: %p, %d/%d, pruning %d connection(s)', this.components.getPeerId(), name, value, limit, toPrune);
308
408
  await this._maybePruneConnections(toPrune);
309
409
  }
310
410
  }
@@ -317,18 +417,38 @@ export class DefaultConnectionManager extends EventEmitter {
317
417
  if (connections.length <= this.opts.minConnections || toPrune < 1) {
318
418
  return;
319
419
  }
320
- const peerValues = Array.from(new Map([...this.peerValues.entries()].sort((a, b) => a[1] - b[1])));
321
- log.trace('sorted peer values: %j', peerValues);
420
+ const peerValues = new PeerMap();
421
+ // work out peer values
422
+ for (const connection of connections) {
423
+ const remotePeer = connection.remotePeer;
424
+ if (peerValues.has(remotePeer)) {
425
+ continue;
426
+ }
427
+ const tags = await this.components.getPeerStore().getTags(remotePeer);
428
+ // sum all tag values
429
+ peerValues.set(remotePeer, tags.reduce((acc, curr) => {
430
+ return acc + curr.value;
431
+ }, 0));
432
+ }
433
+ // sort by value, lowest to highest
434
+ const sortedConnections = connections.sort((a, b) => {
435
+ const peerAValue = peerValues.get(a.remotePeer) ?? 0;
436
+ const peerBValue = peerValues.get(b.remotePeer) ?? 0;
437
+ if (peerAValue > peerBValue) {
438
+ return 1;
439
+ }
440
+ if (peerAValue < peerBValue) {
441
+ return -1;
442
+ }
443
+ return 0;
444
+ });
445
+ // close some connections
322
446
  const toClose = [];
323
- for (const [peerId] of peerValues) {
324
- log('too many connections open - closing a connection to %p', peerId);
325
- for (const connection of connections) {
326
- if (connection.remotePeer.toString() === peerId) {
327
- toClose.push(connection);
328
- }
329
- if (toClose.length === toPrune) {
330
- break;
331
- }
447
+ for (const connection of sortedConnections) {
448
+ log('too many connections open - closing a connection to %p', connection.remotePeer);
449
+ toClose.push(connection);
450
+ if (toClose.length === toPrune) {
451
+ break;
332
452
  }
333
453
  }
334
454
  // close connections
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAA;AACpE,+CAA+C;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAU,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAiB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,MAAM,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI1C,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAE/C,MAAM,cAAc,GAAmC;IACrD,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,QAAQ;IACrB,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,GAAG;CACtB,CAAA;AAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAC9C,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AACnD,MAAM,mBAAmB,GAAG,aAAa,CAAA;AA+FzC;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,YAAqC;IAUjF,YAAa,IAA2B;QACtC,KAAK,EAAE,CAAA;QATD,eAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAWnC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;QAE9E,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACvD,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uEAAuE,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChI;QAED,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7B;;;;WAIG;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC3B,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;SACtC,CAAC,CAAA;QAEF;;WAEG;QACH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC5B,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;SACtC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,sBAAsB,EAAE,IAAI,CAAC,YAAY;YACzC,kBAAkB,EAAE,IAAI,CAAC,YAAY;SACtC,CAAC,CAAA;QAEF,IAAI;YACF,sCAAsC;YACtC,eAAe,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;SAClC;QAAC,MAAM,GAAE;QAEV,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAE,UAAsB;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC/E;QAED,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACpF,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;QAEnB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACvE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAExB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,uCAAuC;QACvC,MAAM,KAAK,GAAyB,EAAE,CAAA;QACtC,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACtD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrB,IAAI;wBACF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;qBACzB;oBAAC,OAAO,GAAG,EAAE;wBACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;qBACf;gBACH,CAAC,CAAC,EAAE,CAAC,CAAA;aACN;SACF;QAED,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,YAAY,CAAE,MAAc,EAAE,KAAa;QACzC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;QAE5C,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBAC3F,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;gBACtD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBACnF,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBAC9C,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAA;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBAC3C,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;aACnC;oBAAS;gBACR,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;aACjE;SACF;IACH,CAAC;IAED,SAAS,CAAE,GAA4B;QACrC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAE,GAA4B;QAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAEnD,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;SAC9C;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;SAC3E;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;SAC3D;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAA;QACnD,MAAM,OAAO,GAAG,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;QAEzD,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACzF,CAAC;IAED;;OAEG;IACH,YAAY,CAAE,GAA4B;QACxC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE7C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;SACzC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YACxD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;YAE1F,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;SACxE;IACH,CAAC;IAED,cAAc,CAAE,MAAe;QAC7B,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;SACrD;QAED,IAAI,KAAK,GAAiB,EAAE,CAAA;QAE5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACxB;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,MAAc,EAAE,OAAsB;QAC1D,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAA;YAE/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAA;SAC9B;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC1D,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE7D,IAAI,eAAe,IAAI,IAAI,EAAE;YAC3B,eAAe,GAAG,EAAE,CAAA;YACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;SACzD;QAED,wEAAwE;QACxE,yEAAyE;QACzE,aAAa;QACb,IAAI,iBAAiB,GAAG,KAAK,CAAA;QAE7B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;YAClC,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE;gBAC7B,iBAAiB,GAAG,IAAI,CAAA;aACzB;SACF;QAED,IAAI,CAAC,iBAAiB,EAAE;YACtB,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACjC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAE,MAAc;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;QAEjE,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YACjC,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;QACjC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,MAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChG;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE5C,8BAA8B;QAC9B,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;SAChF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAE,GAA+B;QAChD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;QAE/B,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;aACvD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAE,IAAiC,EAAE,KAAa,EAAE,UAAkB,CAAC;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9E,IAAI,KAAK,GAAG,KAAK,EAAE;YACjB,GAAG,CAAC,sDAAsD,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YAC9G,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;SAC3C;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAAE,OAAe;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAEzC,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,CAAC,EAAE;YACjE,OAAM;SACP;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAClG,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAA;QAE/C,MAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE;YACjC,GAAG,CAAC,wDAAwD,EAAE,MAAM,CAAC,CAAA;YAErE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACpC,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;oBAC/C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBACzB;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;oBAC9B,MAAK;iBACN;aACF;SACF;QAED,oBAAoB;QACpB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YAC7B,IAAI;gBACF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;aACzB;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aACf;YAED,gDAAgD;YAChD,IAAI,CAAC,YAAY,CAAC,IAAI,WAAW,CAAa,eAAe,EAAE;gBAC7D,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAA;AACpE,+CAA+C;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAU,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,MAAM,MAAM,qCAAqC,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAE9D,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAE/C,MAAM,cAAc,GAAmC;IACrD,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,QAAQ;IACrB,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,KAAK;CAC7B,CAAA;AAED,MAAM,cAAc,GAAG,QAAQ,CAAA;AAC/B,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAC9C,MAAM,yBAAyB,GAAG,KAAK,CAAA;AAuGvC;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,YAAqC;IAYjF,YAAa,IAA2B;QACtC,KAAK,EAAE,CAAA;QAXD,eAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAanC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;QAE9E,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACvD,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uEAAuE,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChI;QAED,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7B;;WAEG;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,sBAAsB,EAAE,IAAI,CAAC,YAAY;YACzC,kBAAkB,EAAE,IAAI,CAAC,YAAY;SACtC,CAAC,CAAA;QAEF,IAAI;YACF,sCAAsC;YACtC,eAAe,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;SAClC;QAAC,MAAM,GAAE;QAEV,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI,yBAAyB,CAAA;QACxF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA;IAC9C,CAAC;IAED,IAAI,CAAE,UAAsB;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE5B,qCAAqC;QACrC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,qBAAqB,CAAC;YAClD,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,MAAM,GAAG;oBACb,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,CAAC;iBACZ,CAAA;gBAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;oBAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;wBACxB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;4BACrC,MAAM,CAAC,OAAO,EAAE,CAAA;yBACjB;6BAAM;4BACL,MAAM,CAAC,QAAQ,EAAE,CAAA;yBAClB;qBACF;iBACF;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAEF,6CAA6C;QAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,qBAAqB,CAAC;YAClD,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,MAAM,GAA2B,EAAE,CAAA;gBAEzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;oBAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;wBACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;4BACjC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAA;4BAEhF,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;yBACrC;qBACF;iBACF;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAEF,gDAAgD;QAChD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,qBAAqB,CAAC;YAClD,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,UAAU,GAA6B,EAAE,CAAA;gBAE/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;oBAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;wBACxB,MAAM,OAAO,GAA2B,EAAE,CAAA;wBAE1C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;4BACjC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAA;4BAEhF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;yBACvC;wBAED,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;4BACvD,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;4BACjD,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;yBACjC;qBACF;iBACF;gBAED,MAAM,MAAM,GAA2B,EAAE,CAAA;gBAEzC,KAAK,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBACzD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBAErC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;oBAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;iBACjC;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC/E;QAED,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QAElF,kDAAkD;QAClD,KAAK,OAAO,CAAC,OAAO,EAAE;aACnB,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,cAAc,GAAa,EAAE,CAAA;YAEnC,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;gBAE3E,IAAI,YAAY,EAAE;oBAChB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;iBAC7B;aACF;YAED,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAA;YACxC,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;YAErF,IAAI;gBACF,uBAAuB;gBACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAA;aACpE;YAAC,MAAM,GAAE;YAEV,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBAC9B,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,MAAM;iBAChD,CAAC;qBACC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChB,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CACH,CAAA;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAA;QAC1C,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,UAAU;QACd,8DAA8D;QAC9D,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAA;QACxC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;QAEnB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACvE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAExB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,uCAAuC;QACvC,MAAM,KAAK,GAAyB,EAAE,CAAA;QACtC,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACtD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrB,IAAI;wBACF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;qBACzB;oBAAC,OAAO,GAAG,EAAE;wBACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;qBACf;gBACH,CAAC,CAAC,EAAE,CAAC,CAAA;aACN;SACF;QAED,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;QAE5C,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBAC3F,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;gBACtD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBACnF,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBAC9C,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAA;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBAC3C,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;aACnC;oBAAS;gBACR,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;aACjE;SACF;IACH,CAAC;IAED,SAAS,CAAE,GAA4B;QACrC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAE,GAA4B;QAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAEnD,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;SAC9C;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;SAC3E;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAA;QACnD,MAAM,OAAO,GAAG,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;QAEzD,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACzF,CAAC;IAED;;OAEG;IACH,YAAY,CAAE,GAA4B;QACxC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE7C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;SACzC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;YAE1F,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;SACxE;IACH,CAAC;IAED,cAAc,CAAE,MAAe;QAC7B,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;SACrD;QAED,IAAI,KAAK,GAAiB,EAAE,CAAA;QAE5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACxB;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,MAAc,EAAE,UAAwB,EAAE;QAC9D,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAA;YAE/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAA;SAC9B;QAED,IAAI,iBAAgD,CAAA;QAEpD,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE;YAC3B,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3D,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAA;YAEzC,IAAI;gBACF,uBAAuB;gBACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;aACtD;YAAC,MAAM,GAAE;SACX;QAED,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC1D,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAE7D,IAAI,eAAe,IAAI,IAAI,EAAE;gBAC3B,eAAe,GAAG,EAAE,CAAA;gBACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;aACzD;YAED,wEAAwE;YACxE,yEAAyE;YACzE,aAAa;YACb,IAAI,iBAAiB,GAAG,KAAK,CAAA;YAE7B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;gBAClC,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE;oBAC7B,iBAAiB,GAAG,IAAI,CAAA;iBACzB;aACF;YAED,IAAI,CAAC,iBAAiB,EAAE;gBACtB,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;aACjC;YAED,OAAO,UAAU,CAAA;SAClB;gBAAS;YACR,IAAI,iBAAiB,IAAI,IAAI,EAAE;gBAC7B,iBAAiB,CAAC,KAAK,EAAE,CAAA;aAC1B;SACF;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAE,MAAc;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;QAEjE,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YACjC,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;QACjC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,MAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChG;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE5C,8BAA8B;QAC9B,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;SAChF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAE,GAA+B;QAChD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;QAE/B,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;aACvD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAE,IAAiC,EAAE,KAAa,EAAE,UAAkB,CAAC;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9E,IAAI,KAAK,GAAG,KAAK,EAAE;YACjB,GAAG,CAAC,yDAAyD,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACxH,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;SAC3C;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAAE,OAAe;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAEzC,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,CAAC,EAAE;YACjE,OAAM;SACP;QAED,MAAM,UAAU,GAAG,IAAI,OAAO,EAAU,CAAA;QAExC,uBAAuB;QACvB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;YAExC,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBAC9B,SAAQ;aACT;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAErE,qBAAqB;YACrB,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACnD,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SACP;QAED,mCAAmC;QACnC,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACpD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAEpD,IAAI,UAAU,GAAG,UAAU,EAAE;gBAC3B,OAAO,CAAC,CAAA;aACT;YAED,IAAI,UAAU,GAAG,UAAU,EAAE;gBAC3B,OAAO,CAAC,CAAC,CAAA;aACV;YAED,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,yBAAyB;QACzB,MAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;YAC1C,GAAG,CAAC,wDAAwD,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACpF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAExB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;gBAC9B,MAAK;aACN;SACF;QAED,oBAAoB;QACpB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YAC7B,IAAI;gBACF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;aACzB;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aACf;YAED,gDAAgD;YAChD,IAAI,CAAC,YAAY,CAAC,IAAI,WAAW,CAAa,eAAe,EAAE;gBAC7D,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -2,6 +2,10 @@
2
2
  * How long in ms a dial attempt is allowed to take
3
3
  */
4
4
  export declare const DIAL_TIMEOUT = 30000;
5
+ /**
6
+ * How long in ms an inbound connection upgrade is allowed to take
7
+ */
8
+ export declare const INBOUND_UPGRADE_TIMEOUT = 30000;
5
9
  /**
6
10
  * Maximum allowed concurrent dials
7
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,CAAA;AAEhC;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,eAAO,MAAM,OAAO;;;;;CASnB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,CAAA;AAEhC;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,eAAO,MAAM,OAAO;;;;;CASnB,CAAA"}
@@ -2,6 +2,10 @@
2
2
  * How long in ms a dial attempt is allowed to take
3
3
  */
4
4
  export const DIAL_TIMEOUT = 30e3;
5
+ /**
6
+ * How long in ms an inbound connection upgrade is allowed to take
7
+ */
8
+ export const INBOUND_UPGRADE_TIMEOUT = 30e3;
5
9
  /**
6
10
  * Maximum allowed concurrent dials
7
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,2BAA2B,EAAE,IAAI;IACjC,sBAAsB,EAAE,IAAI;IAC5B,sBAAsB,EAAE;QACtB,EAAE,GAAG,IAAI;QACT,CAAC,GAAG,EAAE,GAAG,IAAI;QACb,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa;KAC7B;IACD,oBAAoB,EAAE,EAAE;CACzB,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,2BAA2B,EAAE,IAAI;IACjC,sBAAsB,EAAE,IAAI;IAC5B,sBAAsB,EAAE;QACtB,EAAE,GAAG,IAAI;QACT,CAAC,GAAG,EAAE,GAAG,IAAI;QACb,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa;KAC7B;IACD,oBAAoB,EAAE,EAAE;CACzB,CAAA"}
@@ -1,8 +1,8 @@
1
- import type { ContentRouting } from '@libp2p/interfaces/content-routing';
1
+ import type { ContentRouting } from '@libp2p/interface-content-routing';
2
2
  import type { AbortOptions } from '@libp2p/interfaces';
3
3
  import type { Startable } from '@libp2p/interfaces/startable';
4
4
  import type { CID } from 'multiformats/cid';
5
- import type { Components } from '@libp2p/interfaces/components';
5
+ import type { Components } from '@libp2p/components';
6
6
  export interface CompoundContentRoutingInit {
7
7
  routers: ContentRouting[];
8
8
  }
@@ -17,7 +17,7 @@ export declare class CompoundContentRouting implements ContentRouting, Startable
17
17
  /**
18
18
  * Iterates over all content routers in parallel to find providers of the given key
19
19
  */
20
- findProviders(key: CID, options?: AbortOptions): AsyncGenerator<import("@libp2p/interfaces/dist/src/peer-info").PeerInfo, void, unknown>;
20
+ findProviders(key: CID, options?: AbortOptions): AsyncGenerator<import("@libp2p/interface-peer-info").PeerInfo, void, unknown>;
21
21
  /**
22
22
  * Iterates over all content routers in parallel to notify it is
23
23
  * a provider of the given key
@@ -36,7 +36,7 @@ export declare class CompoundContentRouting implements ContentRouting, Startable
36
36
  * Get the `n` values to the given key without sorting
37
37
  */
38
38
  getMany(key: Uint8Array, nVals: number, options: AbortOptions): AsyncGenerator<{
39
- from: import("@libp2p/interfaces/dist/src/peer-id").PeerId;
39
+ from: import("@libp2p/interface-peer-id").PeerId;
40
40
  val: Uint8Array;
41
41
  }, void, unknown>;
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,qBAAa,sBAAuB,YAAW,cAAc,EAAE,SAAS;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE1B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,0BAA0B;IAMrE,SAAS;IAIH,KAAK;IAIL,IAAI;IAIV;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAe3D;;;OAGG;IACG,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAQnD;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY;IAYrE;;;OAGG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBxE;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;;;;CA8BvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,qBAAa,sBAAuB,YAAW,cAAc,EAAE,SAAS;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE1B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,0BAA0B;IAMrE,SAAS;IAIH,KAAK;IAIL,IAAI;IAIV;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAe3D;;;OAGG;IACG,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAQnD;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY;IAYrE;;;OAGG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBxE;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;;;;CA8BvE"}
@@ -1,6 +1,6 @@
1
1
  import type { Source } from 'it-stream-types';
2
- import type { PeerInfo } from '@libp2p/interfaces/peer-info';
3
- import type { PeerStore } from '@libp2p/interfaces/peer-store';
2
+ import type { PeerInfo } from '@libp2p/interface-peer-info';
3
+ import type { PeerStore } from '@libp2p/interface-peer-store';
4
4
  /**
5
5
  * Store the multiaddrs from every peer in the passed peer store
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D;;GAEG;AACH,wBAAwB,cAAc,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,6CAOrF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,2CAcpD;AAED;;GAEG;AACH,wBAAwB,YAAY,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAE,MAAU,2CAY9E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D;;GAEG;AACH,wBAAwB,cAAc,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,6CAOrF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,2CAcpD;AAED;;GAEG;AACH,wBAAwB,YAAY,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAE,MAAU,2CAY9E"}
@@ -1,5 +1,5 @@
1
- import type { DHT } from '@libp2p/interfaces/dht';
2
- import type { ContentRouting } from '@libp2p/interfaces/content-routing';
1
+ import type { DHT } from '@libp2p/interface-dht';
2
+ import type { ContentRouting } from '@libp2p/interface-content-routing';
3
3
  import type { CID } from 'multiformats/cid';
4
4
  import type { AbortOptions } from '@libp2p/interfaces';
5
5
  /**
@@ -9,7 +9,7 @@ export declare class DHTContentRouting implements ContentRouting {
9
9
  private readonly dht;
10
10
  constructor(dht: DHT);
11
11
  provide(cid: CID): Promise<void>;
12
- findProviders(cid: CID, options?: AbortOptions): AsyncGenerator<import("@libp2p/interfaces/dist/src/peer-info").PeerInfo, void, undefined>;
12
+ findProviders(cid: CID, options?: AbortOptions): AsyncGenerator<import("@libp2p/interface-peer-info").PeerInfo, void, undefined>;
13
13
  put(key: Uint8Array, value: Uint8Array, options?: AbortOptions): Promise<void>;
14
14
  get(key: Uint8Array, options?: AbortOptions): Promise<Uint8Array>;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dht-content-routing.d.ts","sourceRoot":"","sources":["../../../src/dht/dht-content-routing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;gBAEZ,GAAG,EAAE,GAAG;IAIf,OAAO,CAAE,GAAG,EAAE,GAAG;IAIf,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAQrD,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CASzE"}
1
+ {"version":3,"file":"dht-content-routing.d.ts","sourceRoot":"","sources":["../../../src/dht/dht-content-routing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;gBAEZ,GAAG,EAAE,GAAG;IAIf,OAAO,CAAE,GAAG,EAAE,GAAG;IAIf,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAQrD,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CASzE"}