@libp2p/interface-compliance-tests 3.0.7-ea8a0637 → 3.0.7-eabf6f36

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 (183) hide show
  1. package/README.md +9 -0
  2. package/dist/src/connection/index.d.ts +5 -0
  3. package/dist/src/connection/index.d.ts.map +1 -0
  4. package/dist/src/connection/index.js +150 -0
  5. package/dist/src/connection/index.js.map +1 -0
  6. package/dist/src/connection-encryption/index.d.ts +5 -0
  7. package/dist/src/connection-encryption/index.d.ts.map +1 -0
  8. package/dist/src/connection-encryption/index.js +71 -0
  9. package/dist/src/connection-encryption/index.js.map +1 -0
  10. package/dist/src/connection-encryption/utils/index.d.ts +3 -0
  11. package/dist/src/connection-encryption/utils/index.d.ts.map +1 -0
  12. package/dist/src/connection-encryption/utils/index.js +19 -0
  13. package/dist/src/connection-encryption/utils/index.js.map +1 -0
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/is-valid-tick.d.ts.map +1 -1
  16. package/dist/src/is-valid-tick.js.map +1 -1
  17. package/dist/src/mocks/connection-encrypter.d.ts +3 -0
  18. package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
  19. package/dist/src/mocks/connection-encrypter.js +98 -0
  20. package/dist/src/mocks/connection-encrypter.js.map +1 -0
  21. package/dist/src/mocks/connection-gater.d.ts +3 -0
  22. package/dist/src/mocks/connection-gater.d.ts.map +1 -0
  23. package/dist/src/mocks/connection-gater.js +17 -0
  24. package/dist/src/mocks/connection-gater.js.map +1 -0
  25. package/dist/src/mocks/connection-manager.d.ts +29 -0
  26. package/dist/src/mocks/connection-manager.d.ts.map +1 -0
  27. package/dist/src/mocks/connection-manager.js +145 -0
  28. package/dist/src/mocks/connection-manager.js.map +1 -0
  29. package/dist/src/mocks/connection.d.ts +32 -0
  30. package/dist/src/mocks/connection.d.ts.map +1 -0
  31. package/dist/src/mocks/connection.js +167 -0
  32. package/dist/src/mocks/connection.js.map +1 -0
  33. package/dist/src/mocks/duplex.d.ts +3 -0
  34. package/dist/src/mocks/duplex.d.ts.map +1 -0
  35. package/dist/src/mocks/duplex.js +9 -0
  36. package/dist/src/mocks/duplex.js.map +1 -0
  37. package/dist/src/mocks/index.d.ts +13 -0
  38. package/dist/src/mocks/index.d.ts.map +1 -0
  39. package/dist/src/mocks/index.js +11 -0
  40. package/dist/src/mocks/index.js.map +1 -0
  41. package/dist/src/mocks/metrics.d.ts +3 -0
  42. package/dist/src/mocks/metrics.d.ts.map +1 -0
  43. package/dist/src/mocks/metrics.js +115 -0
  44. package/dist/src/mocks/metrics.js.map +1 -0
  45. package/dist/src/mocks/multiaddr-connection.d.ts +17 -0
  46. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
  47. package/dist/src/mocks/multiaddr-connection.js +60 -0
  48. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  49. package/dist/src/mocks/muxer.d.ts +36 -0
  50. package/dist/src/mocks/muxer.d.ts.map +1 -0
  51. package/dist/src/mocks/muxer.js +213 -0
  52. package/dist/src/mocks/muxer.js.map +1 -0
  53. package/dist/src/mocks/peer-discovery.d.ts +22 -0
  54. package/dist/src/mocks/peer-discovery.d.ts.map +1 -0
  55. package/dist/src/mocks/peer-discovery.js +47 -0
  56. package/dist/src/mocks/peer-discovery.js.map +1 -0
  57. package/dist/src/mocks/registrar.d.ts +18 -0
  58. package/dist/src/mocks/registrar.d.ts.map +1 -0
  59. package/dist/src/mocks/registrar.js +66 -0
  60. package/dist/src/mocks/registrar.js.map +1 -0
  61. package/dist/src/mocks/upgrader.d.ts +10 -0
  62. package/dist/src/mocks/upgrader.d.ts.map +1 -0
  63. package/dist/src/mocks/upgrader.js +31 -0
  64. package/dist/src/mocks/upgrader.js.map +1 -0
  65. package/dist/src/peer-discovery/index.d.ts +5 -0
  66. package/dist/src/peer-discovery/index.d.ts.map +1 -0
  67. package/dist/src/peer-discovery/index.js +66 -0
  68. package/dist/src/peer-discovery/index.js.map +1 -0
  69. package/dist/src/pubsub/api.d.ts +6 -0
  70. package/dist/src/pubsub/api.d.ts.map +1 -0
  71. package/dist/src/pubsub/api.js +87 -0
  72. package/dist/src/pubsub/api.js.map +1 -0
  73. package/dist/src/pubsub/connection-handlers.d.ts +6 -0
  74. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -0
  75. package/dist/src/pubsub/connection-handlers.js +329 -0
  76. package/dist/src/pubsub/connection-handlers.js.map +1 -0
  77. package/dist/src/pubsub/emit-self.d.ts +6 -0
  78. package/dist/src/pubsub/emit-self.d.ts.map +1 -0
  79. package/dist/src/pubsub/emit-self.js +80 -0
  80. package/dist/src/pubsub/emit-self.js.map +1 -0
  81. package/dist/src/pubsub/index.d.ts +18 -0
  82. package/dist/src/pubsub/index.d.ts.map +1 -0
  83. package/dist/src/pubsub/index.js +17 -0
  84. package/dist/src/pubsub/index.js.map +1 -0
  85. package/dist/src/pubsub/messages.d.ts +6 -0
  86. package/dist/src/pubsub/messages.d.ts.map +1 -0
  87. package/dist/src/pubsub/messages.js +48 -0
  88. package/dist/src/pubsub/messages.js.map +1 -0
  89. package/dist/src/pubsub/multiple-nodes.d.ts +6 -0
  90. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -0
  91. package/dist/src/pubsub/multiple-nodes.js +350 -0
  92. package/dist/src/pubsub/multiple-nodes.js.map +1 -0
  93. package/dist/src/pubsub/two-nodes.d.ts +6 -0
  94. package/dist/src/pubsub/two-nodes.d.ts.map +1 -0
  95. package/dist/src/pubsub/two-nodes.js +217 -0
  96. package/dist/src/pubsub/two-nodes.js.map +1 -0
  97. package/dist/src/pubsub/utils.d.ts +6 -0
  98. package/dist/src/pubsub/utils.d.ts.map +1 -0
  99. package/dist/src/pubsub/utils.js +22 -0
  100. package/dist/src/pubsub/utils.js.map +1 -0
  101. package/dist/src/stream-muxer/base-test.d.ts +5 -0
  102. package/dist/src/stream-muxer/base-test.d.ts.map +1 -0
  103. package/dist/src/stream-muxer/base-test.js +153 -0
  104. package/dist/src/stream-muxer/base-test.js.map +1 -0
  105. package/dist/src/stream-muxer/close-test.d.ts +5 -0
  106. package/dist/src/stream-muxer/close-test.d.ts.map +1 -0
  107. package/dist/src/stream-muxer/close-test.js +357 -0
  108. package/dist/src/stream-muxer/close-test.js.map +1 -0
  109. package/dist/src/stream-muxer/fixtures/pb/message.d.ts +13 -0
  110. package/dist/src/stream-muxer/fixtures/pb/message.d.ts.map +1 -0
  111. package/dist/src/stream-muxer/fixtures/pb/message.js +67 -0
  112. package/dist/src/stream-muxer/fixtures/pb/message.js.map +1 -0
  113. package/dist/src/stream-muxer/index.d.ts +5 -0
  114. package/dist/src/stream-muxer/index.d.ts.map +1 -0
  115. package/dist/src/stream-muxer/index.js +13 -0
  116. package/dist/src/stream-muxer/index.js.map +1 -0
  117. package/dist/src/stream-muxer/mega-stress-test.d.ts +5 -0
  118. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -0
  119. package/dist/src/stream-muxer/mega-stress-test.js +11 -0
  120. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -0
  121. package/dist/src/stream-muxer/spawner.d.ts +4 -0
  122. package/dist/src/stream-muxer/spawner.d.ts.map +1 -0
  123. package/dist/src/stream-muxer/spawner.js +37 -0
  124. package/dist/src/stream-muxer/spawner.js.map +1 -0
  125. package/dist/src/stream-muxer/stress-test.d.ts +5 -0
  126. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -0
  127. package/dist/src/stream-muxer/stress-test.js +23 -0
  128. package/dist/src/stream-muxer/stress-test.js.map +1 -0
  129. package/dist/src/transport/dial-test.d.ts +5 -0
  130. package/dist/src/transport/dial-test.d.ts.map +1 -0
  131. package/dist/src/transport/dial-test.js +98 -0
  132. package/dist/src/transport/dial-test.js.map +1 -0
  133. package/dist/src/transport/filter-test.d.ts +5 -0
  134. package/dist/src/transport/filter-test.d.ts.map +1 -0
  135. package/dist/src/transport/filter-test.js +18 -0
  136. package/dist/src/transport/filter-test.js.map +1 -0
  137. package/dist/src/transport/index.d.ts +15 -0
  138. package/dist/src/transport/index.d.ts.map +1 -0
  139. package/dist/src/transport/index.js +11 -0
  140. package/dist/src/transport/index.js.map +1 -0
  141. package/dist/src/transport/listen-test.d.ts +5 -0
  142. package/dist/src/transport/listen-test.d.ts.map +1 -0
  143. package/dist/src/transport/listen-test.js +152 -0
  144. package/dist/src/transport/listen-test.js.map +1 -0
  145. package/package.json +72 -5
  146. package/src/connection/index.ts +182 -0
  147. package/src/connection-encryption/index.ts +97 -0
  148. package/src/connection-encryption/utils/index.ts +24 -0
  149. package/src/index.ts +0 -1
  150. package/src/is-valid-tick.ts +0 -1
  151. package/src/mocks/connection-encrypter.ts +113 -0
  152. package/src/mocks/connection-gater.ts +18 -0
  153. package/src/mocks/connection-manager.ts +211 -0
  154. package/src/mocks/connection.ts +226 -0
  155. package/src/mocks/duplex.ts +10 -0
  156. package/src/mocks/index.ts +12 -0
  157. package/src/mocks/metrics.ts +162 -0
  158. package/src/mocks/multiaddr-connection.ts +76 -0
  159. package/src/mocks/muxer.ts +303 -0
  160. package/src/mocks/peer-discovery.ts +60 -0
  161. package/src/mocks/registrar.ts +88 -0
  162. package/src/mocks/upgrader.ts +49 -0
  163. package/src/peer-discovery/index.ts +90 -0
  164. package/src/pubsub/api.ts +114 -0
  165. package/src/pubsub/connection-handlers.ts +413 -0
  166. package/src/pubsub/emit-self.ts +99 -0
  167. package/src/pubsub/index.ts +34 -0
  168. package/src/pubsub/messages.ts +59 -0
  169. package/src/pubsub/multiple-nodes.ts +440 -0
  170. package/src/pubsub/two-nodes.ts +273 -0
  171. package/src/pubsub/utils.ts +29 -0
  172. package/src/stream-muxer/base-test.ts +196 -0
  173. package/src/stream-muxer/close-test.ts +442 -0
  174. package/src/stream-muxer/fixtures/pb/message.proto +7 -0
  175. package/src/stream-muxer/fixtures/pb/message.ts +87 -0
  176. package/src/stream-muxer/index.ts +15 -0
  177. package/src/stream-muxer/mega-stress-test.ts +14 -0
  178. package/src/stream-muxer/spawner.ts +55 -0
  179. package/src/stream-muxer/stress-test.ts +27 -0
  180. package/src/transport/dial-test.ts +124 -0
  181. package/src/transport/filter-test.ts +25 -0
  182. package/src/transport/index.ts +25 -0
  183. package/src/transport/listen-test.ts +191 -0
@@ -0,0 +1,145 @@
1
+ import { CodeError } from '@libp2p/interface/errors';
2
+ import { isPeerId } from '@libp2p/interface/peer-id';
3
+ import { PeerMap } from '@libp2p/peer-collections';
4
+ import { peerIdFromString } from '@libp2p/peer-id';
5
+ import { isMultiaddr } from '@multiformats/multiaddr';
6
+ import { connectionPair } from './connection.js';
7
+ class MockNetwork {
8
+ components = [];
9
+ addNode(components) {
10
+ this.components.push(components);
11
+ }
12
+ getNode(peerId) {
13
+ if (Array.isArray(peerId) && peerId.length > 0) {
14
+ peerId = peerIdFromString(peerId[0].getPeerId() ?? '');
15
+ }
16
+ else if (isPeerId(peerId)) {
17
+ for (const components of this.components) {
18
+ if (peerId.equals(components.peerId)) {
19
+ return components;
20
+ }
21
+ }
22
+ }
23
+ throw new CodeError('Peer not found', 'ERR_PEER_NOT_FOUND');
24
+ }
25
+ reset() {
26
+ this.components = [];
27
+ }
28
+ }
29
+ export const mockNetwork = new MockNetwork();
30
+ class MockConnectionManager {
31
+ connections = [];
32
+ components;
33
+ started = false;
34
+ constructor(components) {
35
+ this.components = components;
36
+ }
37
+ isStarted() {
38
+ return this.started;
39
+ }
40
+ async start() {
41
+ this.started = true;
42
+ }
43
+ async stop() {
44
+ for (const connection of this.connections) {
45
+ await this.closeConnections(connection.remotePeer);
46
+ }
47
+ this.started = false;
48
+ }
49
+ getConnections(peerId) {
50
+ if (peerId != null) {
51
+ return this.connections
52
+ .filter(c => c.remotePeer.toString() === peerId.toString());
53
+ }
54
+ return this.connections;
55
+ }
56
+ getConnectionsMap() {
57
+ const map = new PeerMap();
58
+ for (const conn of this.connections) {
59
+ const conns = map.get(conn.remotePeer) ?? [];
60
+ conns.push(conn);
61
+ map.set(conn.remotePeer, conns);
62
+ }
63
+ return map;
64
+ }
65
+ async openConnection(peerId) {
66
+ if (this.components == null) {
67
+ throw new CodeError('Not initialized', 'ERR_NOT_INITIALIZED');
68
+ }
69
+ if (isMultiaddr(peerId)) {
70
+ throw new CodeError('Dialing multiaddrs not supported', 'ERR_NOT_SUPPORTED');
71
+ }
72
+ let existingConnections = [];
73
+ if (Array.isArray(peerId) && peerId.length > 0) {
74
+ existingConnections = this.getConnections(peerIdFromString(peerId[0].getPeerId() ?? ''));
75
+ }
76
+ else if (isPeerId(peerId)) {
77
+ existingConnections = this.getConnections(peerId);
78
+ }
79
+ if (existingConnections.length > 0) {
80
+ return existingConnections[0];
81
+ }
82
+ const componentsB = mockNetwork.getNode(peerId);
83
+ const [aToB, bToA] = connectionPair(this.components, componentsB);
84
+ // track connections
85
+ this.connections.push(aToB);
86
+ componentsB.connectionManager.connections.push(bToA);
87
+ this.components.events.safeDispatchEvent('connection:open', {
88
+ detail: aToB
89
+ });
90
+ for (const protocol of this.components.registrar.getProtocols()) {
91
+ for (const topology of this.components.registrar.getTopologies(protocol)) {
92
+ topology.onConnect?.(componentsB.peerId, aToB);
93
+ }
94
+ }
95
+ this.components.events.safeDispatchEvent('peer:connect', { detail: componentsB.peerId });
96
+ componentsB.events.safeDispatchEvent('connection:open', {
97
+ detail: bToA
98
+ });
99
+ for (const protocol of componentsB.registrar.getProtocols()) {
100
+ for (const topology of componentsB.registrar.getTopologies(protocol)) {
101
+ topology.onConnect?.(this.components.peerId, bToA);
102
+ }
103
+ }
104
+ componentsB.events.safeDispatchEvent('peer:connect', { detail: this.components.peerId });
105
+ return aToB;
106
+ }
107
+ async closeConnections(peerId) {
108
+ if (this.components == null) {
109
+ throw new CodeError('Not initialized', 'ERR_NOT_INITIALIZED');
110
+ }
111
+ const connections = this.getConnections(peerId);
112
+ if (connections.length === 0) {
113
+ return;
114
+ }
115
+ const componentsB = mockNetwork.getNode(peerId);
116
+ for (const protocol of this.components.registrar.getProtocols()) {
117
+ this.components.registrar.getTopologies(protocol).forEach(topology => {
118
+ topology.onDisconnect?.(componentsB.peerId);
119
+ });
120
+ }
121
+ for (const conn of connections) {
122
+ await conn.close();
123
+ }
124
+ this.connections = this.connections.filter(c => !c.remotePeer.equals(peerId));
125
+ if (this.connections.filter(c => !c.remotePeer.equals(peerId)).length === 0) {
126
+ componentsB.events.safeDispatchEvent('peer:disconnect', { detail: peerId });
127
+ }
128
+ await componentsB.connectionManager?.closeConnections(this.components.peerId);
129
+ if (componentsB.connectionManager?.getConnectionsMap().get(this.components.peerId) == null) {
130
+ componentsB.events.safeDispatchEvent('peer:disconnect', { detail: this.components.peerId });
131
+ }
132
+ }
133
+ async acceptIncomingConnection() {
134
+ return true;
135
+ }
136
+ afterUpgradeInbound() {
137
+ }
138
+ getDialQueue() {
139
+ return [];
140
+ }
141
+ }
142
+ export function mockConnectionManager(components) {
143
+ return new MockConnectionManager(components);
144
+ }
145
+ //# sourceMappingURL=connection-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { MultiaddrConnection, Connection, Stream, Direction } from '@libp2p/interface/connection';
2
+ import type { PeerId } from '@libp2p/interface/peer-id';
3
+ import type { StreamMuxerFactory } from '@libp2p/interface/stream-muxer';
4
+ import type { Registrar } from '@libp2p/interface-internal/registrar';
5
+ import type { Duplex, Source } from 'it-stream-types';
6
+ import type { Uint8ArrayList } from 'uint8arraylist';
7
+ export interface MockConnectionOptions {
8
+ direction?: Direction;
9
+ registrar?: Registrar;
10
+ muxerFactory?: StreamMuxerFactory;
11
+ }
12
+ export declare function mockConnection(maConn: MultiaddrConnection, opts?: MockConnectionOptions): Connection;
13
+ export declare function mockStream(stream: Duplex<AsyncGenerator<Uint8ArrayList>, Source<Uint8ArrayList | Uint8Array>, Promise<void>>): Stream;
14
+ export interface Peer {
15
+ peerId: PeerId;
16
+ registrar: Registrar;
17
+ }
18
+ export declare function multiaddrConnectionPair(a: {
19
+ peerId: PeerId;
20
+ registrar: Registrar;
21
+ }, b: {
22
+ peerId: PeerId;
23
+ registrar: Registrar;
24
+ }): [MultiaddrConnection, MultiaddrConnection];
25
+ export declare function connectionPair(a: {
26
+ peerId: PeerId;
27
+ registrar: Registrar;
28
+ }, b: {
29
+ peerId: PeerId;
30
+ registrar: Registrar;
31
+ }): [Connection, Connection];
32
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/mocks/connection.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAwC,MAAM,8BAA8B,CAAA;AAC5I,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AAqGD,wBAAgB,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,GAAE,qBAA0B,GAAG,UAAU,CAqDzG;AAED,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAkBtI;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,uBAAuB,CAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG,CAAE,mBAAmB,EAAE,mBAAmB,CAAE,CAO/K;AAED,wBAAgB,cAAc,CAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG,CAAE,UAAU,EAAE,UAAU,CAAE,CAWpJ"}
@@ -0,0 +1,167 @@
1
+ import { CodeError } from '@libp2p/interface/errors';
2
+ import { logger } from '@libp2p/logger';
3
+ import * as mss from '@libp2p/multistream-select';
4
+ import { peerIdFromString } from '@libp2p/peer-id';
5
+ import { duplexPair } from 'it-pair/duplex';
6
+ import { pipe } from 'it-pipe';
7
+ import { mockMultiaddrConnection } from './multiaddr-connection.js';
8
+ import { mockMuxer } from './muxer.js';
9
+ import { mockRegistrar } from './registrar.js';
10
+ const log = logger('libp2p:mock-connection');
11
+ class MockConnection {
12
+ id;
13
+ remoteAddr;
14
+ remotePeer;
15
+ direction;
16
+ timeline;
17
+ multiplexer;
18
+ encryption;
19
+ status;
20
+ streams;
21
+ tags;
22
+ transient;
23
+ muxer;
24
+ maConn;
25
+ constructor(init) {
26
+ const { remoteAddr, remotePeer, direction, maConn, muxer } = init;
27
+ this.id = `mock-connection-${Math.random()}`;
28
+ this.remoteAddr = remoteAddr;
29
+ this.remotePeer = remotePeer;
30
+ this.direction = direction;
31
+ this.status = 'open';
32
+ this.direction = direction;
33
+ this.timeline = maConn.timeline;
34
+ this.multiplexer = 'test-multiplexer';
35
+ this.encryption = 'yes-yes-very-secure';
36
+ this.streams = [];
37
+ this.tags = [];
38
+ this.muxer = muxer;
39
+ this.maConn = maConn;
40
+ this.transient = false;
41
+ }
42
+ async newStream(protocols, options) {
43
+ if (!Array.isArray(protocols)) {
44
+ protocols = [protocols];
45
+ }
46
+ if (protocols.length === 0) {
47
+ throw new Error('protocols must have a length');
48
+ }
49
+ if (this.status !== 'open') {
50
+ throw new CodeError('connection must be open to create streams', 'ERR_CONNECTION_CLOSED');
51
+ }
52
+ const id = `${Math.random()}`;
53
+ const stream = await this.muxer.newStream(id);
54
+ const result = await mss.select(stream, protocols, options);
55
+ stream.protocol = result.protocol;
56
+ stream.direction = 'outbound';
57
+ stream.sink = result.stream.sink;
58
+ stream.source = result.stream.source;
59
+ this.streams.push(stream);
60
+ return stream;
61
+ }
62
+ addStream(stream) {
63
+ this.streams.push(stream);
64
+ }
65
+ removeStream(id) {
66
+ this.streams = this.streams.filter(stream => stream.id !== id);
67
+ }
68
+ async close(options) {
69
+ this.status = 'closing';
70
+ await Promise.all(this.streams.map(async (s) => s.close(options)));
71
+ await this.maConn.close();
72
+ this.status = 'closed';
73
+ this.timeline.close = Date.now();
74
+ }
75
+ abort(err) {
76
+ this.status = 'closing';
77
+ this.streams.forEach(s => {
78
+ s.abort(err);
79
+ });
80
+ this.maConn.abort(err);
81
+ this.status = 'closed';
82
+ this.timeline.close = Date.now();
83
+ }
84
+ }
85
+ export function mockConnection(maConn, opts = {}) {
86
+ const remoteAddr = maConn.remoteAddr;
87
+ const remotePeerIdStr = remoteAddr.getPeerId() ?? '12D3KooWCrhmFM1BCPGBkNzbPfDk4cjYmtAYSpZwUBC69Qg2kZyq';
88
+ if (remotePeerIdStr == null) {
89
+ throw new Error('Remote multiaddr must contain a peer id');
90
+ }
91
+ const remotePeer = peerIdFromString(remotePeerIdStr);
92
+ const direction = opts.direction ?? 'inbound';
93
+ const registrar = opts.registrar ?? mockRegistrar();
94
+ const muxerFactory = opts.muxerFactory ?? mockMuxer();
95
+ const muxer = muxerFactory.createStreamMuxer({
96
+ direction,
97
+ onIncomingStream: (muxedStream) => {
98
+ try {
99
+ mss.handle(muxedStream, registrar.getProtocols())
100
+ .then(({ stream, protocol }) => {
101
+ log('%s: incoming stream opened on %s', direction, protocol);
102
+ muxedStream.protocol = protocol;
103
+ muxedStream.sink = stream.sink;
104
+ muxedStream.source = stream.source;
105
+ connection.addStream(muxedStream);
106
+ const { handler } = registrar.getHandler(protocol);
107
+ handler({ connection, stream: muxedStream });
108
+ }).catch(err => {
109
+ log.error(err);
110
+ });
111
+ }
112
+ catch (err) {
113
+ log.error(err);
114
+ }
115
+ },
116
+ onStreamEnd: (muxedStream) => {
117
+ connection.removeStream(muxedStream.id);
118
+ }
119
+ });
120
+ void pipe(maConn, muxer, maConn);
121
+ const connection = new MockConnection({
122
+ remoteAddr,
123
+ remotePeer,
124
+ direction,
125
+ maConn,
126
+ muxer
127
+ });
128
+ return connection;
129
+ }
130
+ export function mockStream(stream) {
131
+ return {
132
+ ...stream,
133
+ close: async () => { },
134
+ closeRead: async () => { },
135
+ closeWrite: async () => { },
136
+ abort: () => { },
137
+ direction: 'outbound',
138
+ protocol: '/foo/1.0.0',
139
+ timeline: {
140
+ open: Date.now()
141
+ },
142
+ metadata: {},
143
+ id: `stream-${Date.now()}`,
144
+ status: 'open',
145
+ readStatus: 'ready',
146
+ writeStatus: 'ready'
147
+ };
148
+ }
149
+ export function multiaddrConnectionPair(a, b) {
150
+ const [peerBtoPeerA, peerAtoPeerB] = duplexPair();
151
+ return [
152
+ mockMultiaddrConnection(peerAtoPeerB, b.peerId),
153
+ mockMultiaddrConnection(peerBtoPeerA, a.peerId)
154
+ ];
155
+ }
156
+ export function connectionPair(a, b) {
157
+ const [peerBtoPeerA, peerAtoPeerB] = multiaddrConnectionPair(a, b);
158
+ return [
159
+ mockConnection(peerBtoPeerA, {
160
+ registrar: a.registrar
161
+ }),
162
+ mockConnection(peerAtoPeerB, {
163
+ registrar: b.registrar
164
+ })
165
+ ];
166
+ }
167
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/mocks/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Duplex, Source } from 'it-stream-types';
2
+ export declare function mockDuplex(): Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>, Promise<void>>;
3
+ //# sourceMappingURL=duplex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../../../src/mocks/duplex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD,wBAAgB,UAAU,IAAK,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAOnG"}
@@ -0,0 +1,9 @@
1
+ export function mockDuplex() {
2
+ return {
3
+ source: (async function* () {
4
+ yield* [];
5
+ }()),
6
+ sink: async () => { }
7
+ };
8
+ }
9
+ //# sourceMappingURL=duplex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../../../src/mocks/duplex.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,SAAU,CAAC;YACvB,KAAM,CAAC,CAAC,EAAE,CAAA;QACZ,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KACrB,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { mockConnectionEncrypter } from './connection-encrypter.js';
2
+ export { mockConnectionGater } from './connection-gater.js';
3
+ export { mockConnectionManager, mockNetwork } from './connection-manager.js';
4
+ export { mockConnection, mockStream, connectionPair } from './connection.js';
5
+ export { mockMultiaddrConnection, mockMultiaddrConnPair } from './multiaddr-connection.js';
6
+ export { mockMuxer } from './muxer.js';
7
+ export { mockRegistrar } from './registrar.js';
8
+ export { mockUpgrader } from './upgrader.js';
9
+ export { mockDuplex } from './duplex.js';
10
+ export { mockMetrics } from './metrics.js';
11
+ export type { MockUpgraderInit } from './upgrader.js';
12
+ export type { MockNetworkComponents } from './connection-manager.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,11 @@
1
+ export { mockConnectionEncrypter } from './connection-encrypter.js';
2
+ export { mockConnectionGater } from './connection-gater.js';
3
+ export { mockConnectionManager, mockNetwork } from './connection-manager.js';
4
+ export { mockConnection, mockStream, connectionPair } from './connection.js';
5
+ export { mockMultiaddrConnection, mockMultiaddrConnPair } from './multiaddr-connection.js';
6
+ export { mockMuxer } from './muxer.js';
7
+ export { mockRegistrar } from './registrar.js';
8
+ export { mockUpgrader } from './upgrader.js';
9
+ export { mockDuplex } from './duplex.js';
10
+ export { mockMetrics } from './metrics.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Metrics } from '@libp2p/interface/metrics';
2
+ export declare function mockMetrics(): () => Metrics;
3
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/mocks/metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkC,OAAO,EAA0C,MAAM,2BAA2B,CAAA;AA8JhI,wBAAgB,WAAW,IAAK,MAAM,OAAO,CAE5C"}
@@ -0,0 +1,115 @@
1
+ class DefaultMetric {
2
+ value = 0;
3
+ update(value) {
4
+ this.value = value;
5
+ }
6
+ increment(value = 1) {
7
+ this.value += value;
8
+ }
9
+ decrement(value = 1) {
10
+ this.value -= value;
11
+ }
12
+ reset() {
13
+ this.value = 0;
14
+ }
15
+ timer() {
16
+ const start = Date.now();
17
+ return () => {
18
+ this.value = Date.now() - start;
19
+ };
20
+ }
21
+ }
22
+ class DefaultGroupMetric {
23
+ values = {};
24
+ update(values) {
25
+ Object.entries(values).forEach(([key, value]) => {
26
+ this.values[key] = value;
27
+ });
28
+ }
29
+ increment(values) {
30
+ Object.entries(values).forEach(([key, value]) => {
31
+ this.values[key] = this.values[key] ?? 0;
32
+ const inc = typeof value === 'number' ? value : 1;
33
+ this.values[key] += Number(inc);
34
+ });
35
+ }
36
+ decrement(values) {
37
+ Object.entries(values).forEach(([key, value]) => {
38
+ this.values[key] = this.values[key] ?? 0;
39
+ const dec = typeof value === 'number' ? value : 1;
40
+ this.values[key] -= Number(dec);
41
+ });
42
+ }
43
+ reset() {
44
+ this.values = {};
45
+ }
46
+ timer(key) {
47
+ const start = Date.now();
48
+ return () => {
49
+ this.values[key] = Date.now() - start;
50
+ };
51
+ }
52
+ }
53
+ class MockMetrics {
54
+ metrics = new Map();
55
+ trackMultiaddrConnection(maConn) {
56
+ }
57
+ trackProtocolStream(stream, connection) {
58
+ }
59
+ registerMetric(name, opts) {
60
+ if (name == null ?? name.trim() === '') {
61
+ throw new Error('Metric name is required');
62
+ }
63
+ if (opts?.calculate != null) {
64
+ // calculated metric
65
+ this.metrics.set(name, opts.calculate);
66
+ return;
67
+ }
68
+ const metric = new DefaultMetric();
69
+ this.metrics.set(name, metric);
70
+ return metric;
71
+ }
72
+ registerCounter(name, opts) {
73
+ if (name == null ?? name.trim() === '') {
74
+ throw new Error('Metric name is required');
75
+ }
76
+ if (opts?.calculate != null) {
77
+ // calculated metric
78
+ this.metrics.set(name, opts.calculate);
79
+ return;
80
+ }
81
+ const metric = new DefaultMetric();
82
+ this.metrics.set(name, metric);
83
+ return metric;
84
+ }
85
+ registerMetricGroup(name, opts) {
86
+ if (name == null ?? name.trim() === '') {
87
+ throw new Error('Metric name is required');
88
+ }
89
+ if (opts?.calculate != null) {
90
+ // calculated metric
91
+ this.metrics.set(name, opts.calculate);
92
+ return;
93
+ }
94
+ const metric = new DefaultGroupMetric();
95
+ this.metrics.set(name, metric);
96
+ return metric;
97
+ }
98
+ registerCounterGroup(name, opts) {
99
+ if (name == null ?? name.trim() === '') {
100
+ throw new Error('Metric name is required');
101
+ }
102
+ if (opts?.calculate != null) {
103
+ // calculated metric
104
+ this.metrics.set(name, opts.calculate);
105
+ return;
106
+ }
107
+ const metric = new DefaultGroupMetric();
108
+ this.metrics.set(name, metric);
109
+ return metric;
110
+ }
111
+ }
112
+ export function mockMetrics() {
113
+ return () => new MockMetrics();
114
+ }
115
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/mocks/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { MultiaddrConnection } from '@libp2p/interface/connection';
2
+ import type { PeerId } from '@libp2p/interface/peer-id';
3
+ import type { Multiaddr } from '@multiformats/multiaddr';
4
+ import type { Duplex } from 'it-stream-types';
5
+ export declare function mockMultiaddrConnection(source: Duplex<AsyncGenerator<Uint8Array>> & Partial<MultiaddrConnection>, peerId: PeerId): MultiaddrConnection;
6
+ export interface MockMultiaddrConnPairOptions {
7
+ addrs: Multiaddr[];
8
+ remotePeer: PeerId;
9
+ }
10
+ /**
11
+ * Returns both sides of a mocked MultiaddrConnection
12
+ */
13
+ export declare function mockMultiaddrConnPair(opts: MockMultiaddrConnPairOptions): {
14
+ inbound: MultiaddrConnection;
15
+ outbound: MultiaddrConnection;
16
+ };
17
+ //# sourceMappingURL=multiaddr-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiaddr-connection.d.ts","sourceRoot":"","sources":["../../../src/mocks/multiaddr-connection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAcvJ;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAE,IAAI,EAAE,4BAA4B,GAAG;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CA2C1I"}
@@ -0,0 +1,60 @@
1
+ import { multiaddr } from '@multiformats/multiaddr';
2
+ import { abortableSource } from 'abortable-iterator';
3
+ import { duplexPair } from 'it-pair/duplex';
4
+ export function mockMultiaddrConnection(source, peerId) {
5
+ const maConn = {
6
+ async close() {
7
+ },
8
+ abort: () => { },
9
+ timeline: {
10
+ open: Date.now()
11
+ },
12
+ remoteAddr: multiaddr(`/ip4/127.0.0.1/tcp/4001/p2p/${peerId.toString()}`),
13
+ ...source
14
+ };
15
+ return maConn;
16
+ }
17
+ /**
18
+ * Returns both sides of a mocked MultiaddrConnection
19
+ */
20
+ export function mockMultiaddrConnPair(opts) {
21
+ const { addrs, remotePeer } = opts;
22
+ const controller = new AbortController();
23
+ const [localAddr, remoteAddr] = addrs;
24
+ const [inboundStream, outboundStream] = duplexPair();
25
+ const outbound = {
26
+ ...outboundStream,
27
+ remoteAddr: remoteAddr.toString().includes(`/p2p/${remotePeer.toString()}`) ? remoteAddr : remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`),
28
+ timeline: {
29
+ open: Date.now()
30
+ },
31
+ close: async () => {
32
+ outbound.timeline.close = Date.now();
33
+ controller.abort();
34
+ },
35
+ abort: (err) => {
36
+ outbound.timeline.close = Date.now();
37
+ controller.abort(err);
38
+ }
39
+ };
40
+ const inbound = {
41
+ ...inboundStream,
42
+ remoteAddr: localAddr,
43
+ timeline: {
44
+ open: Date.now()
45
+ },
46
+ close: async () => {
47
+ inbound.timeline.close = Date.now();
48
+ controller.abort();
49
+ },
50
+ abort: (err) => {
51
+ outbound.timeline.close = Date.now();
52
+ controller.abort(err);
53
+ }
54
+ };
55
+ // Make the sources abortable so we can close them easily
56
+ inbound.source = abortableSource(inbound.source, controller.signal);
57
+ outbound.source = abortableSource(outbound.source, controller.signal);
58
+ return { inbound, outbound };
59
+ }
60
+ //# sourceMappingURL=multiaddr-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiaddr-connection.js","sourceRoot":"","sources":["../../../src/mocks/multiaddr-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAM3C,MAAM,UAAU,uBAAuB,CAAE,MAAyE,EAAE,MAAc;IAChI,MAAM,MAAM,GAAwB;QAClC,KAAK,CAAC,KAAK;QAEX,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,UAAU,EAAE,SAAS,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzE,GAAG,MAAM;KACV,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAE,IAAkC;IACvE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAA;IACrC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,UAAU,EAAc,CAAA;IAEhE,MAAM,QAAQ,GAAwB;QACpC,GAAG,cAAc;QACjB,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClJ,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;IAED,MAAM,OAAO,GAAwB;QACnC,GAAG,aAAa;QAChB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;IAED,yDAAyD;IACzD,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACnE,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAErE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC"}