@dxos/echo-pipeline 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc

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 (221) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/{browser/chunk-WJJXJTNS.mjs → neutral/chunk-46DCRDA7.mjs} +44 -13
  4. package/dist/lib/neutral/chunk-46DCRDA7.mjs.map +7 -0
  5. package/dist/lib/{browser/chunk-FR6GJ4S4.mjs → neutral/chunk-LR7UFVQX.mjs} +145 -618
  6. package/dist/lib/neutral/chunk-LR7UFVQX.mjs.map +7 -0
  7. package/dist/lib/{browser → neutral}/filter/index.mjs +1 -2
  8. package/dist/lib/neutral/index.mjs +7332 -0
  9. package/dist/lib/neutral/index.mjs.map +7 -0
  10. package/dist/lib/neutral/meta.json +1 -0
  11. package/dist/lib/{browser → neutral}/testing/index.mjs +49 -292
  12. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  13. package/dist/types/src/automerge/automerge-host-subduction.test.d.ts +2 -0
  14. package/dist/types/src/automerge/automerge-host-subduction.test.d.ts.map +1 -0
  15. package/dist/types/src/automerge/automerge-host.d.ts +105 -27
  16. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  17. package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts +2 -0
  18. package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts.map +1 -0
  19. package/dist/types/src/automerge/automerge-repo.test.d.ts +1 -1
  20. package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -1
  21. package/dist/types/src/automerge/automerge-subduction.test.d.ts +2 -0
  22. package/dist/types/src/automerge/automerge-subduction.test.d.ts.map +1 -0
  23. package/dist/types/src/automerge/collection-synchronizer.d.ts +22 -2
  24. package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
  25. package/dist/types/src/automerge/echo-data-monitor.d.ts.map +1 -1
  26. package/dist/types/src/automerge/echo-network-adapter.d.ts +17 -11
  27. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  28. package/dist/types/src/automerge/echo-replicator.d.ts +28 -16
  29. package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
  30. package/dist/types/src/automerge/errors.d.ts +35 -0
  31. package/dist/types/src/automerge/errors.d.ts.map +1 -0
  32. package/dist/types/src/automerge/handle-state.d.ts +52 -0
  33. package/dist/types/src/automerge/handle-state.d.ts.map +1 -0
  34. package/dist/types/src/automerge/heads-store.d.ts +9 -2
  35. package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
  36. package/dist/types/src/automerge/index.d.ts +2 -0
  37. package/dist/types/src/automerge/index.d.ts.map +1 -1
  38. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +10 -4
  39. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
  40. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +8 -8
  41. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
  42. package/dist/types/src/automerge/mesh-echo-replicator.d.ts +6 -5
  43. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
  44. package/dist/types/src/automerge/network-protocol.d.ts.map +1 -1
  45. package/dist/types/src/automerge/space-collection.d.ts.map +1 -1
  46. package/dist/types/src/common/feeds.d.ts.map +1 -1
  47. package/dist/types/src/common/space-id.d.ts.map +1 -1
  48. package/dist/types/src/db-host/automerge-data-source.d.ts +35 -0
  49. package/dist/types/src/db-host/automerge-data-source.d.ts.map +1 -0
  50. package/dist/types/src/db-host/automerge-data-source.test.d.ts +2 -0
  51. package/dist/types/src/db-host/automerge-data-source.test.d.ts.map +1 -0
  52. package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -1
  53. package/dist/types/src/db-host/data-service.d.ts +12 -6
  54. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  55. package/dist/types/src/db-host/database-root.d.ts +9 -3
  56. package/dist/types/src/db-host/database-root.d.ts.map +1 -1
  57. package/dist/types/src/db-host/documents-synchronizer.d.ts +30 -8
  58. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
  59. package/dist/types/src/db-host/echo-host.d.ts +74 -28
  60. package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
  61. package/dist/types/src/db-host/index.d.ts +2 -0
  62. package/dist/types/src/db-host/index.d.ts.map +1 -1
  63. package/dist/types/src/db-host/invalidation-hint.d.ts +19 -0
  64. package/dist/types/src/db-host/invalidation-hint.d.ts.map +1 -0
  65. package/dist/types/src/db-host/local-queue-service.d.ts +19 -0
  66. package/dist/types/src/db-host/local-queue-service.d.ts.map +1 -0
  67. package/dist/types/src/db-host/query-invalidation.test.d.ts +2 -0
  68. package/dist/types/src/db-host/query-invalidation.test.d.ts.map +1 -0
  69. package/dist/types/src/db-host/query-service.d.ts +18 -10
  70. package/dist/types/src/db-host/query-service.d.ts.map +1 -1
  71. package/dist/types/src/db-host/queue-data-source.d.ts +38 -0
  72. package/dist/types/src/db-host/queue-data-source.d.ts.map +1 -0
  73. package/dist/types/src/db-host/queue-service.test.d.ts +2 -0
  74. package/dist/types/src/db-host/queue-service.test.d.ts.map +1 -0
  75. package/dist/types/src/db-host/space-state-manager.d.ts +3 -2
  76. package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
  77. package/dist/types/src/db-host/stub.d.ts +11 -0
  78. package/dist/types/src/db-host/stub.d.ts.map +1 -0
  79. package/dist/types/src/edge/echo-edge-replicator.d.ts +7 -6
  80. package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
  81. package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts +39 -0
  82. package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts.map +1 -0
  83. package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts +2 -0
  84. package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts.map +1 -0
  85. package/dist/types/src/edge/index.d.ts +1 -0
  86. package/dist/types/src/edge/index.d.ts.map +1 -1
  87. package/dist/types/src/edge/inflight-request-limiter.d.ts.map +1 -1
  88. package/dist/types/src/filter/filter-match.d.ts +1 -1
  89. package/dist/types/src/filter/filter-match.d.ts.map +1 -1
  90. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  91. package/dist/types/src/pipeline/message-selector.d.ts.map +1 -1
  92. package/dist/types/src/pipeline/pipeline.d.ts +2 -2
  93. package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
  94. package/dist/types/src/pipeline/timeframe-clock.d.ts.map +1 -1
  95. package/dist/types/src/query/errors.d.ts +16 -20
  96. package/dist/types/src/query/errors.d.ts.map +1 -1
  97. package/dist/types/src/query/plan.d.ts +59 -8
  98. package/dist/types/src/query/plan.d.ts.map +1 -1
  99. package/dist/types/src/query/query-executor.d.ts +55 -12
  100. package/dist/types/src/query/query-executor.d.ts.map +1 -1
  101. package/dist/types/src/query/query-planner.d.ts +10 -1
  102. package/dist/types/src/query/query-planner.d.ts.map +1 -1
  103. package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
  104. package/dist/types/src/space/auth.d.ts +3 -3
  105. package/dist/types/src/space/auth.d.ts.map +1 -1
  106. package/dist/types/src/space/control-pipeline.d.ts +4 -3
  107. package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
  108. package/dist/types/src/space/space-manager.d.ts +7 -7
  109. package/dist/types/src/space/space-manager.d.ts.map +1 -1
  110. package/dist/types/src/space/space-protocol.d.ts +9 -8
  111. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  112. package/dist/types/src/space/space.d.ts +5 -5
  113. package/dist/types/src/space/space.d.ts.map +1 -1
  114. package/dist/types/src/testing/change-metadata.d.ts.map +1 -1
  115. package/dist/types/src/testing/index.d.ts +0 -2
  116. package/dist/types/src/testing/index.d.ts.map +1 -1
  117. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  118. package/dist/types/src/testing/test-feed-builder.d.ts.map +1 -1
  119. package/dist/types/src/testing/test-network-adapter.d.ts +1 -1
  120. package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
  121. package/dist/types/src/testing/test-replicator.d.ts +13 -13
  122. package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
  123. package/dist/types/src/util.d.ts.map +1 -1
  124. package/dist/types/tsconfig.tsbuildinfo +1 -1
  125. package/package.json +56 -54
  126. package/src/automerge/automerge-host-subduction.test.ts +263 -0
  127. package/src/automerge/automerge-host.test.ts +145 -32
  128. package/src/automerge/automerge-host.ts +442 -163
  129. package/src/automerge/automerge-repo-subduction.test.ts +1054 -0
  130. package/src/automerge/automerge-repo.test.ts +284 -77
  131. package/src/automerge/automerge-subduction.test.ts +330 -0
  132. package/src/automerge/collection-synchronizer.test.ts +96 -16
  133. package/src/automerge/collection-synchronizer.ts +125 -26
  134. package/src/automerge/echo-network-adapter.test.ts +2 -1
  135. package/src/automerge/echo-network-adapter.ts +44 -32
  136. package/src/automerge/echo-replicator.ts +30 -16
  137. package/src/automerge/errors.ts +10 -0
  138. package/src/automerge/handle-state.ts +62 -0
  139. package/src/automerge/heads-store.ts +42 -3
  140. package/src/automerge/index.ts +2 -0
  141. package/src/automerge/leveldb-storage-adapter.ts +70 -4
  142. package/src/automerge/mesh-echo-replicator-connection.ts +8 -8
  143. package/src/automerge/mesh-echo-replicator.ts +14 -11
  144. package/src/db-host/automerge-data-source.test.ts +299 -0
  145. package/src/db-host/automerge-data-source.ts +187 -0
  146. package/src/db-host/data-service.ts +27 -10
  147. package/src/db-host/database-root.ts +19 -7
  148. package/src/db-host/documents-synchronizer.test.ts +145 -14
  149. package/src/db-host/documents-synchronizer.ts +158 -59
  150. package/src/db-host/echo-host.ts +376 -90
  151. package/src/db-host/index.ts +2 -0
  152. package/src/db-host/invalidation-hint.ts +50 -0
  153. package/src/db-host/local-queue-service.ts +127 -0
  154. package/src/db-host/query-invalidation.test.ts +270 -0
  155. package/src/db-host/query-service.ts +108 -111
  156. package/src/db-host/queue-data-source.ts +160 -0
  157. package/src/db-host/queue-service.test.ts +145 -0
  158. package/src/db-host/space-state-manager.ts +11 -9
  159. package/src/db-host/stub.ts +33 -0
  160. package/src/edge/echo-edge-replicator.test.ts +9 -9
  161. package/src/edge/echo-edge-replicator.ts +50 -42
  162. package/src/edge/echo-edge-subduction-replicator.test.ts +158 -0
  163. package/src/edge/echo-edge-subduction-replicator.ts +377 -0
  164. package/src/edge/index.ts +1 -0
  165. package/src/filter/filter-match.test.ts +41 -25
  166. package/src/filter/filter-match.ts +75 -20
  167. package/src/metadata/metadata-store.ts +8 -5
  168. package/src/pipeline/pipeline-stress.test.ts +1 -3
  169. package/src/pipeline/pipeline.test.ts +0 -1
  170. package/src/pipeline/pipeline.ts +2 -3
  171. package/src/query/errors.ts +2 -2
  172. package/src/query/plan.ts +73 -9
  173. package/src/query/query-executor.ts +1064 -172
  174. package/src/query/query-planner.test.ts +854 -86
  175. package/src/query/query-planner.ts +444 -38
  176. package/src/space/admission-discovery-extension.ts +1 -1
  177. package/src/space/auth.ts +6 -6
  178. package/src/space/control-pipeline.test.ts +2 -2
  179. package/src/space/control-pipeline.ts +7 -7
  180. package/src/space/space-manager.ts +12 -17
  181. package/src/space/space-protocol.browser.test.ts +13 -12
  182. package/src/space/space-protocol.test.ts +13 -13
  183. package/src/space/space-protocol.ts +16 -15
  184. package/src/space/space.test.ts +2 -2
  185. package/src/space/space.ts +9 -10
  186. package/src/testing/index.ts +0 -2
  187. package/src/testing/test-agent-builder.ts +0 -1
  188. package/src/testing/test-network-adapter.ts +24 -3
  189. package/src/testing/test-replicator.ts +15 -20
  190. package/src/util.ts +7 -3
  191. package/dist/lib/browser/chunk-CGS2ULMK.mjs +0 -11
  192. package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-FR6GJ4S4.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-WJJXJTNS.mjs.map +0 -7
  195. package/dist/lib/browser/index.mjs +0 -5492
  196. package/dist/lib/browser/index.mjs.map +0 -7
  197. package/dist/lib/browser/meta.json +0 -1
  198. package/dist/lib/browser/testing/index.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  200. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  201. package/dist/lib/node-esm/chunk-JQCCVDLT.mjs +0 -2144
  202. package/dist/lib/node-esm/chunk-JQCCVDLT.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-LEQ77KAT.mjs +0 -240
  204. package/dist/lib/node-esm/chunk-LEQ77KAT.mjs.map +0 -7
  205. package/dist/lib/node-esm/filter/index.mjs +0 -13
  206. package/dist/lib/node-esm/filter/index.mjs.map +0 -7
  207. package/dist/lib/node-esm/index.mjs +0 -5492
  208. package/dist/lib/node-esm/index.mjs.map +0 -7
  209. package/dist/lib/node-esm/meta.json +0 -1
  210. package/dist/lib/node-esm/testing/index.mjs +0 -764
  211. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  212. package/dist/types/src/db-host/documents-iterator.d.ts +0 -7
  213. package/dist/types/src/db-host/documents-iterator.d.ts.map +0 -1
  214. package/dist/types/src/testing/test-data.d.ts +0 -18
  215. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  216. package/dist/types/src/testing/test-schema.d.ts +0 -37
  217. package/dist/types/src/testing/test-schema.d.ts.map +0 -1
  218. package/src/db-host/documents-iterator.ts +0 -74
  219. package/src/testing/test-data.ts +0 -127
  220. package/src/testing/test-schema.ts +0 -53
  221. /package/dist/lib/{browser → neutral}/filter/index.mjs.map +0 -0
@@ -6,10 +6,7 @@ import {
6
6
  SpaceManager,
7
7
  SpaceProtocol,
8
8
  valueEncoding
9
- } from "../chunk-FR6GJ4S4.mjs";
10
- import {
11
- __export
12
- } from "../chunk-CGS2ULMK.mjs";
9
+ } from "../chunk-LR7UFVQX.mjs";
13
10
 
14
11
  // src/testing/change-metadata.ts
15
12
  import { log } from "@dxos/log";
@@ -17,12 +14,7 @@ import { schema } from "@dxos/protocols/proto";
17
14
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
18
15
  var EchoMetadata = schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
19
16
  var changeStorageVersionInMetadata = async (storage, version) => {
20
- log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, {
21
- F: __dxlog_file,
22
- L: 19,
23
- S: void 0,
24
- C: (f, a) => f(...a)
25
- });
17
+ log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 13, S: void 0 });
26
18
  const metadata = new MetadataStore(storage.createDirectory("metadata"));
27
19
  await metadata.load();
28
20
  const echoMetadata = metadata.metadata;
@@ -130,8 +122,8 @@ var TestAgent = class {
130
122
  get spaces() {
131
123
  return Array.from(this._spaces.values());
132
124
  }
133
- getSpace(spaceKey2) {
134
- return this._spaces.get(spaceKey2);
125
+ getSpace(spaceKey) {
126
+ return this._spaces.get(spaceKey);
135
127
  }
136
128
  _networkManager;
137
129
  get networkManager() {
@@ -154,10 +146,10 @@ var TestAgent = class {
154
146
  blobStore: this.blobStore
155
147
  });
156
148
  }
157
- async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
158
- if (!spaceKey2) {
149
+ async createSpace(identityKey = this.identityKey, spaceKey, genesisKey, dataKey, saveMetadata = false) {
150
+ if (!spaceKey) {
159
151
  saveMetadata = true;
160
- spaceKey2 = await this.keyring.createKey();
152
+ spaceKey = await this.keyring.createKey();
161
153
  }
162
154
  if (!genesisKey) {
163
155
  genesisKey = await this.keyring.createKey();
@@ -170,7 +162,7 @@ var TestAgent = class {
170
162
  sparse: true
171
163
  });
172
164
  const metadata = {
173
- key: spaceKey2,
165
+ key: spaceKey,
174
166
  genesisFeedKey: genesisKey,
175
167
  controlFeedKey: controlFeed.key,
176
168
  dataFeedKey: dataFeed.key
@@ -200,11 +192,8 @@ var TestAgent = class {
200
192
  });
201
193
  await space.setControlFeed(controlFeed);
202
194
  await space.setDataFeed(dataFeed);
203
- await space.open(new Context(void 0, {
204
- F: __dxlog_file2,
205
- L: 206
206
- }));
207
- this._spaces.set(spaceKey2, space);
195
+ await space.open(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 164 }));
196
+ this._spaces.set(spaceKey, space);
208
197
  return space;
209
198
  }
210
199
  createSpaceProtocol(topic, gossip) {
@@ -263,12 +252,30 @@ import { log as log2 } from "@dxos/log";
263
252
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
264
253
  var TestAdapter = class _TestAdapter extends NetworkAdapter {
265
254
  _params;
266
- static createPair(connectionStateProvider = () => "on") {
255
+ static createPair(connectionStateProvider = () => "on", onMessage) {
267
256
  const adapter1 = new _TestAdapter({
268
- send: (message) => connectionStateProvider() === "on" && sleep(10).then(() => adapter2.receive(message))
257
+ send: (message) => {
258
+ onMessage?.(message);
259
+ if (connectionStateProvider() === "on") {
260
+ void sleep(10).then(() => {
261
+ if (connectionStateProvider() === "on" && adapter2.peerId) {
262
+ adapter2.receive(message);
263
+ }
264
+ });
265
+ }
266
+ }
269
267
  });
270
268
  const adapter2 = new _TestAdapter({
271
- send: (message) => connectionStateProvider() === "on" && sleep(10).then(() => adapter1.receive(message))
269
+ send: (message) => {
270
+ onMessage?.(message);
271
+ if (connectionStateProvider() === "on") {
272
+ void sleep(10).then(() => {
273
+ if (connectionStateProvider() === "on" && adapter1.peerId) {
274
+ adapter1.receive(message);
275
+ }
276
+ });
277
+ }
278
+ }
272
279
  });
273
280
  return [
274
281
  adapter1,
@@ -290,30 +297,14 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
290
297
  this.onConnect.wake();
291
298
  }
292
299
  peerCandidate(peerId) {
293
- invariant(peerId, "PeerId is required", {
294
- F: __dxlog_file3,
295
- L: 45,
296
- S: this,
297
- A: [
298
- "peerId",
299
- "'PeerId is required'"
300
- ]
301
- });
300
+ invariant(peerId, "PeerId is required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 55, S: this, A: ["peerId", "'PeerId is required'"] });
302
301
  this.emit("peer-candidate", {
303
302
  peerId,
304
303
  peerMetadata: {}
305
304
  });
306
305
  }
307
306
  peerDisconnected(peerId) {
308
- invariant(peerId, "PeerId is required", {
309
- F: __dxlog_file3,
310
- L: 50,
311
- S: this,
312
- A: [
313
- "peerId",
314
- "'PeerId is required'"
315
- ]
316
- });
307
+ invariant(peerId, "PeerId is required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 62, S: this, A: ["peerId", "'PeerId is required'"] });
317
308
  this.emit("peer-disconnected", {
318
309
  peerId
319
310
  });
@@ -323,27 +314,14 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
323
314
  from: message.senderId,
324
315
  to: message.targetId,
325
316
  type: message.type
326
- }, {
327
- F: __dxlog_file3,
328
- L: 55,
329
- S: this,
330
- C: (f, a) => f(...a)
331
- });
317
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 68, S: this });
332
318
  this._params.send(message);
333
319
  }
334
320
  disconnect() {
335
321
  this.peerId = void 0;
336
322
  }
337
323
  receive(message) {
338
- invariant(this.peerId, "Peer id is not set", {
339
- F: __dxlog_file3,
340
- L: 64,
341
- S: this,
342
- A: [
343
- "this.peerId",
344
- "'Peer id is not set'"
345
- ]
346
- });
324
+ invariant(this.peerId, "Peer id is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this, A: ["this.peerId", "'Peer id is not set'"] });
347
325
  this.emit("message", message);
348
326
  }
349
327
  };
@@ -353,14 +331,14 @@ import { sleep as sleep2, synchronized } from "@dxos/async";
353
331
  import { LifecycleState, Resource } from "@dxos/context";
354
332
  import { invariant as invariant2 } from "@dxos/invariant";
355
333
  import { log as log3 } from "@dxos/log";
356
- import { AutomergeReplicator } from "@dxos/teleport-extension-automerge-replicator";
334
+ import * as TeleportAutomergeReplicator from "@dxos/teleport-extension-automerge-replicator";
335
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
357
336
  function _ts_decorate(decorators, target, key, desc) {
358
337
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
359
338
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
360
339
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
361
340
  return c > 3 && r && Object.defineProperty(target, key, r), r;
362
341
  }
363
- var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
364
342
  var TestReplicationNetwork = class extends Resource {
365
343
  _replicators = /* @__PURE__ */ new Set();
366
344
  _latency = void 0;
@@ -368,7 +346,7 @@ var TestReplicationNetwork = class extends Resource {
368
346
  super();
369
347
  this._latency = options.latency;
370
348
  }
371
- async _close(ctx) {
349
+ async _close(_ctx) {
372
350
  for (const replicator of this._replicators) {
373
351
  for (const connection of replicator.connections) {
374
352
  void connection.writable.abort();
@@ -379,27 +357,11 @@ var TestReplicationNetwork = class extends Resource {
379
357
  async createReplicator() {
380
358
  const replicator = new TestReplicator({
381
359
  onConnect: async () => {
382
- invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, {
383
- F: __dxlog_file4,
384
- L: 45,
385
- S: this,
386
- A: [
387
- "this._lifecycleState === LifecycleState.OPEN",
388
- ""
389
- ]
390
- });
360
+ invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 33, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
391
361
  await this._connectReplicator(replicator);
392
362
  },
393
363
  onDisconnect: async () => {
394
- invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, {
395
- F: __dxlog_file4,
396
- L: 49,
397
- S: this,
398
- A: [
399
- "this._lifecycleState === LifecycleState.OPEN",
400
- ""
401
- ]
402
- });
364
+ invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 37, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
403
365
  await this._disconnectReplicator(replicator);
404
366
  }
405
367
  });
@@ -414,12 +376,7 @@ var TestReplicationNetwork = class extends Resource {
414
376
  log3("create connection", {
415
377
  from: replicator.context.peerId,
416
378
  to: otherReplicator.context.peerId
417
- }, {
418
- F: __dxlog_file4,
419
- L: 63,
420
- S: this,
421
- C: (f, a) => f(...a)
422
- });
379
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 49, S: this });
423
380
  const [connection1, connection2] = this._createConnectionPair(replicator.context.peerId, otherReplicator.context.peerId);
424
381
  await replicator.context.onConnectionOpen(connection1);
425
382
  await otherReplicator.context.onConnectionOpen(connection2);
@@ -440,12 +397,7 @@ var TestReplicationNetwork = class extends Resource {
440
397
  from: peer1,
441
398
  to: peer2,
442
399
  message
443
- }, {
444
- F: __dxlog_file4,
445
- L: 86,
446
- S: this,
447
- C: (f, a) => f(...a)
448
- });
400
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 69, S: this });
449
401
  }
450
402
  if (this._latency !== void 0) {
451
403
  await sleep2(this._latency);
@@ -460,12 +412,7 @@ var TestReplicationNetwork = class extends Resource {
460
412
  from: peer2,
461
413
  to: peer1,
462
414
  message
463
- }, {
464
- F: __dxlog_file4,
465
- L: 99,
466
- S: this,
467
- C: (f, a) => f(...a)
468
- });
415
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 84, S: this });
469
416
  }
470
417
  if (this._latency !== void 0) {
471
418
  await sleep2(this._latency);
@@ -494,15 +441,10 @@ var TestReplicator = class {
494
441
  connected = false;
495
442
  context = void 0;
496
443
  connections = /* @__PURE__ */ new Set();
497
- async connect(context) {
444
+ async connect(_ctx, context) {
498
445
  log3("connect", {
499
446
  peerId: context.peerId
500
- }, {
501
- F: __dxlog_file4,
502
- L: 131,
503
- S: this,
504
- C: (f, a) => f(...a)
505
- });
447
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 118, S: this });
506
448
  this.context = context;
507
449
  this.connected = true;
508
450
  await this._params.onConnect();
@@ -510,12 +452,7 @@ var TestReplicator = class {
510
452
  async disconnect() {
511
453
  log3("disconnect", {
512
454
  peerId: this.context.peerId
513
- }, {
514
- F: __dxlog_file4,
515
- L: 138,
516
- S: this,
517
- C: (f, a) => f(...a)
518
- });
455
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 126, S: this });
519
456
  this.connected = false;
520
457
  await this._params.onDisconnect();
521
458
  }
@@ -544,15 +481,15 @@ var TestReplicatorConnection = class {
544
481
  get bundleSyncEnabled() {
545
482
  return false;
546
483
  }
547
- async shouldAdvertise(params) {
484
+ async shouldAdvertise() {
548
485
  return true;
549
486
  }
550
- shouldSyncCollection(params) {
487
+ shouldSyncCollection() {
551
488
  return true;
552
489
  }
553
490
  };
554
491
  var testAutomergeReplicatorFactory = (params) => {
555
- return new AutomergeReplicator({
492
+ return new TeleportAutomergeReplicator.AutomergeReplicator({
556
493
  ...params[0],
557
494
  sendSyncRetryPolicy: {
558
495
  retryBackoff: 20,
@@ -567,195 +504,15 @@ var brokenAutomergeReplicatorFactory = (params) => {
567
504
  };
568
505
  return testAutomergeReplicatorFactory(params);
569
506
  };
570
-
571
- // src/testing/test-schema.ts
572
- var test_schema_exports = {};
573
- __export(test_schema_exports, {
574
- Organization: () => Organization,
575
- Person: () => Person,
576
- Task: () => Task,
577
- WorksFor: () => WorksFor
578
- });
579
- import * as Schema from "effect/Schema";
580
- import { Type } from "@dxos/echo";
581
- var Person = Schema.Struct({
582
- name: Schema.String,
583
- email: Schema.optional(Schema.String),
584
- age: Schema.optional(Schema.Number)
585
- }).pipe(Type.Obj({
586
- typename: "dxos.org/type/Person",
587
- version: "0.1.0"
588
- }));
589
- var Organization = Schema.Struct({
590
- name: Schema.String
591
- }).pipe(Type.Obj({
592
- typename: "dxos.org/type/Organization",
593
- version: "0.1.0"
594
- }));
595
- var WorksFor = Schema.Struct({
596
- since: Schema.String
597
- }).pipe(Type.Relation({
598
- typename: "dxos.org/type/WorksFor",
599
- version: "0.1.0",
600
- source: Person,
601
- target: Organization
602
- }));
603
- var Task = Schema.Struct({
604
- title: Schema.String,
605
- createdAt: Schema.String,
606
- assignee: Type.Ref(Person)
607
- }).pipe(Type.Obj({
608
- typename: "dxos.org/type/Task",
609
- version: "0.1.0"
610
- }));
611
-
612
- // src/testing/test-data.ts
613
- var test_data_exports = {};
614
- __export(test_data_exports, {
615
- ORGS: () => ORGS,
616
- PEOPLE: () => PEOPLE,
617
- TASKS: () => TASKS,
618
- WORKS_FOR: () => WORKS_FOR
619
- });
620
- import { getSchemaDXN } from "@dxos/echo/internal";
621
- import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
622
- import { DXN, ObjectId, PublicKey as PublicKey2 } from "@dxos/keys";
623
- var spaceKey = PublicKey2.random();
624
- var PEOPLE = {
625
- fred: DatabaseDirectory.make({
626
- spaceKey: spaceKey.toHex(),
627
- objects: {
628
- [ObjectId.random()]: ObjectStructure.makeObject({
629
- type: getSchemaDXN(Person).toString(),
630
- data: {
631
- name: "Fred"
632
- }
633
- })
634
- }
635
- }),
636
- alice: DatabaseDirectory.make({
637
- spaceKey: spaceKey.toHex(),
638
- objects: {
639
- [ObjectId.random()]: ObjectStructure.makeObject({
640
- type: getSchemaDXN(Person).toString(),
641
- data: {
642
- name: "Alice"
643
- }
644
- })
645
- }
646
- })
647
- };
648
- var ORGS = {
649
- cyberdyne: DatabaseDirectory.make({
650
- spaceKey: spaceKey.toHex(),
651
- objects: {
652
- [ObjectId.random()]: ObjectStructure.makeObject({
653
- type: getSchemaDXN(Organization).toString(),
654
- data: {
655
- name: "Cyberdyne Systems",
656
- founded: "1984"
657
- }
658
- })
659
- }
660
- }),
661
- aperture: DatabaseDirectory.make({
662
- spaceKey: spaceKey.toHex(),
663
- objects: {
664
- [ObjectId.random()]: ObjectStructure.makeObject({
665
- type: getSchemaDXN(Organization).toString(),
666
- data: {
667
- name: "Aperture Science",
668
- founded: "1953"
669
- }
670
- })
671
- }
672
- })
673
- };
674
- var WORKS_FOR = {
675
- fredWorksForCyberdyne: DatabaseDirectory.make({
676
- spaceKey: spaceKey.toHex(),
677
- objects: {
678
- [ObjectId.random()]: ObjectStructure.makeRelation({
679
- type: getSchemaDXN(WorksFor).toString(),
680
- source: {
681
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
682
- },
683
- target: {
684
- "/": DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
685
- },
686
- data: {
687
- since: "2020",
688
- position: "Engineer"
689
- }
690
- })
691
- }
692
- }),
693
- aliceWorksForAperture: DatabaseDirectory.make({
694
- spaceKey: spaceKey.toHex(),
695
- objects: {
696
- [ObjectId.random()]: ObjectStructure.makeRelation({
697
- type: getSchemaDXN(WorksFor).toString(),
698
- source: {
699
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
700
- },
701
- target: {
702
- "/": DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects)[0]).toString()
703
- },
704
- data: {
705
- since: "2018",
706
- position: "Research Scientist"
707
- }
708
- })
709
- }
710
- })
711
- };
712
- var TASKS = {
713
- task1: DatabaseDirectory.make({
714
- spaceKey: spaceKey.toHex(),
715
- objects: {
716
- [ObjectId.random()]: ObjectStructure.makeObject({
717
- type: getSchemaDXN(Task).toString(),
718
- data: {
719
- title: "Complete project documentation",
720
- description: "Write comprehensive documentation for the new system",
721
- status: "in-progress",
722
- dueDate: "2023-12-31",
723
- assignee: {
724
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
725
- }
726
- }
727
- })
728
- }
729
- }),
730
- task2: DatabaseDirectory.make({
731
- spaceKey: spaceKey.toHex(),
732
- objects: {
733
- [ObjectId.random()]: ObjectStructure.makeObject({
734
- type: getSchemaDXN(Task).toString(),
735
- data: {
736
- title: "Run experiments",
737
- description: "Conduct series of experiments on the portal device",
738
- status: "pending",
739
- dueDate: "2023-11-15",
740
- assignee: {
741
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
742
- }
743
- }
744
- })
745
- }
746
- })
747
- };
748
507
  export {
749
508
  MemoryNetworkManagerProvider,
750
509
  TestAdapter,
751
510
  TestAgent,
752
511
  TestAgentBuilder,
753
- test_data_exports as TestData,
754
512
  TestFeedBuilder,
755
513
  TestReplicationNetwork,
756
514
  TestReplicator,
757
515
  TestReplicatorConnection,
758
- test_schema_exports as TestSchema,
759
516
  WebsocketNetworkManagerProvider,
760
517
  brokenAutomergeReplicatorFactory,
761
518
  changeStorageVersionInMetadata,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/test-network-adapter.ts", "../../../../src/testing/test-replicator.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols/proto';\nimport type { Storage } from '@dxos/random-access-storage';\n\nimport { MetadataStore } from '../metadata';\n\nconst EchoMetadata = schema.getCodecForType('dxos.echo.metadata.EchoMetadata');\n\n/**\n * This function will change the storage version in the metadata.\n * This will break your storage and make it unusable.\n * Use this only for testing purposes.\n */\nexport const changeStorageVersionInMetadata = async (storage: Storage, version: number) => {\n log('Changing storage version in metadata. USE ONLY FOR TESTING.');\n const metadata = new MetadataStore(storage.createDirectory('metadata'));\n await metadata.load();\n const echoMetadata = metadata.metadata;\n echoMetadata.version = version;\n const file = metadata._directory.getOrCreateFile('EchoMetadata');\n await metadata._writeFile(file, EchoMetadata, echoMetadata);\n await metadata._directory.flush();\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\nimport { CredentialGenerator } from '@dxos/credentials';\nimport { type FeedStore } from '@dxos/feed-store';\nimport { type Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { MemoryTransportFactory, SwarmNetworkManager, createRtcTransportFactory } from '@dxos/network-manager';\nimport { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { type Storage, StorageType, createStorage } from '@dxos/random-access-storage';\nimport { Gossip, Presence } from '@dxos/teleport-extension-gossip';\nimport { BlobStore } from '@dxos/teleport-extension-object-sync';\nimport { ComplexMap } from '@dxos/util';\n\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, type Space, SpaceManager, SpaceProtocol } from '../space';\nimport { TestFeedBuilder } from './test-feed-builder';\n\nexport type NetworkManagerProvider = () => SwarmNetworkManager;\n\nexport const MemoryNetworkManagerProvider =\n (signalContext: MemorySignalManagerContext): NetworkManagerProvider =>\n () =>\n new SwarmNetworkManager({\n signalManager: new MemorySignalManager(signalContext),\n transportFactory: MemoryTransportFactory,\n });\n\nexport const WebsocketNetworkManagerProvider =\n (signalUrl: string): NetworkManagerProvider =>\n () =>\n new SwarmNetworkManager({\n signalManager: new WebsocketSignalManager([{ server: signalUrl }]),\n transportFactory: createRtcTransportFactory(),\n });\n\nexport type TestAgentBuilderOptions = {\n storage?: Storage;\n networkManagerProvider?: NetworkManagerProvider;\n};\n\n/**\n * Factory for test agents.\n */\nexport class TestAgentBuilder {\n private readonly _agents = new ComplexMap<PublicKey, TestAgent>(PublicKey.hash);\n private readonly _storage: Storage;\n private readonly _networkManagerProvider: NetworkManagerProvider;\n\n constructor({ storage, networkManagerProvider }: TestAgentBuilderOptions = {}) {\n this._storage = storage ?? createStorage({ type: StorageType.RAM });\n this._networkManagerProvider =\n networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());\n }\n\n async close() {\n return Promise.all(this.agents.map((agent) => agent.close()));\n }\n\n get agents() {\n return Array.from(this._agents.values());\n }\n\n getAgent(deviceKey: PublicKey): TestAgent | undefined {\n return this._agents.get(deviceKey);\n }\n\n async createPeer(): Promise<TestAgent> {\n // prettier-ignore\n const feedBuilder = new TestFeedBuilder()\n .setStorage(this._storage, `agent-${this._agents.size}`);\n\n const identityKey = await feedBuilder.keyring.createKey();\n const deviceKey = await feedBuilder.keyring.createKey();\n\n const agent = new TestAgent(this._networkManagerProvider, feedBuilder, identityKey, deviceKey);\n this._agents.set(deviceKey, agent);\n return agent;\n }\n}\n\n/**\n * Test agent that enables the creation and replication of multiple spaces.\n */\nexport class TestAgent {\n private readonly _spaces = new ComplexMap<PublicKey, Space>(PublicKey.hash);\n\n public readonly storage: Storage;\n public readonly keyring: Keyring;\n public readonly feedStore: FeedStore<FeedMessage>;\n\n private _metadataStore?: MetadataStore;\n get metadataStore() {\n return (this._metadataStore ??= new MetadataStore(this.storage.createDirectory('metadata')));\n }\n\n private _blobStore?: BlobStore;\n get blobStore() {\n return (this._blobStore ??= new BlobStore(this.storage.createDirectory('blobs')));\n }\n\n constructor(\n private readonly _networkManagerProvider: NetworkManagerProvider,\n private readonly _feedBuilder: TestFeedBuilder,\n public readonly identityKey: PublicKey,\n public readonly deviceKey: PublicKey,\n ) {\n this.storage = this._feedBuilder.storage;\n this.keyring = this._feedBuilder.keyring;\n this.feedStore = this._feedBuilder.createFeedStore();\n }\n\n async close() {\n return Promise.all([...this.spaces.map((space) => space.close())]);\n }\n\n get spaces() {\n return Array.from(this._spaces.values());\n }\n\n getSpace(spaceKey: PublicKey): Space | undefined {\n return this._spaces.get(spaceKey);\n }\n\n private _networkManager?: SwarmNetworkManager;\n get networkManager() {\n if (this._networkManager) {\n return this._networkManager;\n }\n\n this._networkManager = this._networkManagerProvider();\n this._networkManager.setPeerInfo({ peerKey: this.deviceKey.toHex(), identityKey: this.identityKey.toHex() });\n\n return this._networkManager;\n }\n\n private _spaceManager?: SpaceManager;\n get spaceManager() {\n return (this._spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this.networkManager,\n metadataStore: this.metadataStore,\n blobStore: this.blobStore,\n }));\n }\n\n async createSpace(\n identityKey: PublicKey = this.identityKey,\n spaceKey?: PublicKey,\n genesisKey?: PublicKey,\n dataKey?: PublicKey,\n saveMetadata = false,\n ): Promise<Space> {\n if (!spaceKey) {\n saveMetadata = true;\n spaceKey = await this.keyring.createKey();\n }\n if (!genesisKey) {\n genesisKey = await this.keyring.createKey();\n }\n\n const controlFeed = await this.feedStore.openFeed(genesisKey, { writable: true });\n const dataFeed = await this.feedStore.openFeed(dataKey ?? (await this.keyring.createKey()), {\n writable: true,\n sparse: true,\n });\n\n const metadata: SpaceMetadata = {\n key: spaceKey,\n genesisFeedKey: genesisKey,\n controlFeedKey: controlFeed.key,\n dataFeedKey: dataFeed.key,\n };\n if (saveMetadata) {\n await this.metadataStore.addSpace(metadata);\n }\n\n await this.spaceManager.open();\n const space = await this.spaceManager.constructSpace({\n metadata,\n swarmIdentity: {\n identityKey: this.identityKey,\n peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n memberKey: identityKey,\n onAuthorizedConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n onDelegatedInvitationStatusChange: async () => {},\n onMemberRolesChanged: async () => {},\n });\n await space.setControlFeed(controlFeed);\n await space.setDataFeed(dataFeed);\n\n await space.open(new Context());\n\n this._spaces.set(spaceKey, space);\n return space;\n }\n\n createSpaceProtocol(topic: PublicKey, gossip?: Gossip): SpaceProtocol {\n return new SpaceProtocol({\n topic,\n swarmIdentity: {\n identityKey: this.identityKey,\n peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n networkManager: this.networkManager,\n blobStore: this.blobStore,\n onSessionAuth: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n (gossip ?? this.createGossip()).createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n }\n\n createGossip(): Gossip {\n return new Gossip({\n localPeerId: this.deviceKey,\n });\n }\n\n createPresence(gossip?: Gossip): Presence {\n return new Presence({\n announceInterval: 30,\n offlineTimeout: 200,\n identityKey: this.identityKey,\n gossip: gossip ?? this.createGossip(),\n });\n }\n\n async spaceGenesis(space: Space): Promise<void> {\n const generator = new CredentialGenerator(this.keyring, this.identityKey, this.deviceKey);\n const credentials = [\n ...(await generator.createSpaceGenesis(space.key, space.controlFeedKey!)),\n await generator.createFeedAdmission(space.key, space.dataFeedKey!, AdmittedFeed.Designation.DATA),\n await generator.createEpochCredential(space.key),\n ];\n\n for (const credential of credentials) {\n await space.controlPipeline.writer.write({\n credential: { credential },\n });\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { TestBuilder } from '@dxos/feed-store/testing';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\n\nimport { valueEncoding } from '../common';\n\n/**\n * Builder with default encoder and generator.\n */\nexport class TestFeedBuilder extends TestBuilder<FeedMessage> {\n constructor() {\n super({\n valueEncoding,\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Message, NetworkAdapter, type PeerId } from '@automerge/automerge-repo';\n\nimport { Trigger, sleep } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nexport type TestConnectionStateProvider = () => 'on' | 'off';\n\nexport class TestAdapter extends NetworkAdapter {\n static createPair(\n connectionStateProvider: TestConnectionStateProvider = () => 'on',\n onMessage?: (message: Message) => void,\n ): TestAdapter[] {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => {\n onMessage?.(message);\n if (connectionStateProvider() === 'on') {\n void sleep(10).then(() => {\n if (connectionStateProvider() === 'on' && adapter2.peerId) {\n adapter2.receive(message);\n }\n });\n }\n },\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => {\n onMessage?.(message);\n if (connectionStateProvider() === 'on') {\n void sleep(10).then(() => {\n if (connectionStateProvider() === 'on' && adapter1.peerId) {\n adapter1.receive(message);\n }\n });\n }\n },\n });\n\n return [adapter1, adapter2];\n }\n\n public onConnect = new Trigger();\n\n constructor(private readonly _params: { send: (message: Message) => void }) {\n super();\n }\n\n override isReady(): boolean {\n return true;\n }\n\n override whenReady(): Promise<void> {\n return Promise.resolve();\n }\n\n override connect(peerId: PeerId): void {\n this.peerId = peerId;\n this.onConnect.wake();\n }\n\n peerCandidate(peerId: PeerId): void {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-candidate', { peerId, peerMetadata: {} });\n }\n\n peerDisconnected(peerId: PeerId): void {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-disconnected', { peerId });\n }\n\n override send(message: Message): void {\n log('send', { from: message.senderId, to: message.targetId, type: message.type });\n this._params.send(message);\n }\n\n override disconnect(): void {\n this.peerId = undefined;\n }\n\n receive(message: Message): void {\n invariant(this.peerId, 'Peer id is not set');\n this.emit('message', message);\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep, synchronized } from '@dxos/async';\nimport { type Context, LifecycleState, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport type { AutomergeProtocolMessage } from '@dxos/protocols';\nimport * as TeleportAutomergeReplicator from '@dxos/teleport-extension-automerge-replicator';\n\nimport type { AutomergeReplicator, AutomergeReplicatorConnection, AutomergeReplicatorContext } from '../automerge';\n\nexport type TestReplicatorNetworkOptions = {\n latency?: number;\n};\n\nexport class TestReplicationNetwork extends Resource {\n private readonly _replicators = new Set<TestReplicator>();\n private readonly _latency?: number = undefined;\n\n constructor(options: TestReplicatorNetworkOptions = {}) {\n super();\n this._latency = options.latency;\n }\n\n protected override async _close(_ctx: Context): Promise<void> {\n for (const replicator of this._replicators) {\n for (const connection of replicator.connections) {\n void connection.writable.abort();\n void connection.readable.cancel();\n }\n }\n }\n\n async createReplicator(): Promise<TestReplicator> {\n const replicator = new TestReplicator({\n onConnect: async () => {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._connectReplicator(replicator);\n },\n onDisconnect: async () => {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._disconnectReplicator(replicator);\n },\n });\n this._replicators.add(replicator);\n return replicator;\n }\n\n @synchronized\n private async _connectReplicator(replicator: TestReplicator): Promise<void> {\n for (const otherReplicator of this._replicators.values()) {\n if (otherReplicator === replicator || !otherReplicator.connected) {\n continue;\n }\n log('create connection', { from: replicator.context!.peerId, to: otherReplicator.context!.peerId });\n const [connection1, connection2] = this._createConnectionPair(\n replicator.context!.peerId,\n otherReplicator.context!.peerId,\n );\n await replicator.context!.onConnectionOpen(connection1);\n await otherReplicator.context!.onConnectionOpen(connection2);\n }\n }\n\n private async _disconnectReplicator(replicator: TestReplicator): Promise<void> {\n for (const connection of replicator.connections) {\n await replicator.context!.onConnectionClosed(connection);\n await connection.otherSide!.owningReplicator!.removeConnection(connection.otherSide!);\n }\n }\n\n private _createConnectionPair(peer1: string, peer2: string): [TestReplicatorConnection, TestReplicatorConnection] {\n const LOG = false;\n\n const forward = new TransformStream({\n transform: async (message, controller) => {\n if (LOG) {\n log('replicate', { from: peer1, to: peer2, message });\n }\n\n if (this._latency !== undefined) {\n await sleep(this._latency);\n }\n\n controller.enqueue(message);\n },\n });\n const backwards = new TransformStream({\n transform: async (message, controller) => {\n if (LOG) {\n log('replicate', { from: peer2, to: peer1, message });\n }\n\n if (this._latency !== undefined) {\n await sleep(this._latency);\n }\n\n controller.enqueue(message);\n },\n });\n\n const connection1 = new TestReplicatorConnection(peer2, backwards.readable, forward.writable);\n const connection2 = new TestReplicatorConnection(peer1, forward.readable, backwards.writable);\n connection1.otherSide = connection2;\n connection2.otherSide = connection1;\n return [connection1, connection2];\n }\n}\n\ntype TestReplicatorProps = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements AutomergeReplicator {\n constructor(private readonly _params: TestReplicatorProps) {}\n\n public connected = false;\n public context: AutomergeReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(_ctx: Context, context: AutomergeReplicatorContext): Promise<void> {\n log('connect', { peerId: context.peerId });\n this.context = context;\n this.connected = true;\n await this._params.onConnect();\n }\n\n async disconnect(): Promise<void> {\n log('disconnect', { peerId: this.context!.peerId });\n this.connected = false;\n await this._params.onDisconnect();\n }\n\n async addConnection(connection: TestReplicatorConnection): Promise<void> {\n connection.owningReplicator = this;\n this.connections.add(connection);\n this.context!.onConnectionOpen(connection);\n }\n\n async removeConnection(connection: TestReplicatorConnection): Promise<void> {\n connection.owningReplicator = undefined;\n this.context!.onConnectionClosed(connection);\n this.connections.delete(connection);\n }\n}\n\nexport class TestReplicatorConnection implements AutomergeReplicatorConnection {\n public otherSide: TestReplicatorConnection | undefined = undefined;\n public owningReplicator: TestReplicator | undefined = undefined;\n\n constructor(\n public readonly peerId: string,\n public readonly readable: ReadableStream<AutomergeProtocolMessage>,\n public readonly writable: WritableStream<AutomergeProtocolMessage>,\n ) {}\n\n get bundleSyncEnabled(): boolean {\n return false;\n }\n\n async shouldAdvertise(): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {\n return new TeleportAutomergeReplicator.AutomergeReplicator(\n {\n ...params[0],\n sendSyncRetryPolicy: {\n retryBackoff: 20,\n retriesBeforeBackoff: 2,\n maxRetries: 3,\n },\n },\n params[1],\n );\n};\n\nexport const brokenAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n\n return testAutomergeReplicatorFactory(params);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,SAASA,WAAW;AACpB,SAASC,cAAc;AAKvB,IAAA,eAAMC;;AASEC,IAAAA,iCAAqCC,OAAAA,SAAgB,YAAA;AAC3D,MAAA,+DAAmB,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;AACnB,QAAMC,WAAAA,IAAeF,cAASA,QAAQ,gBAAA,UAAA,CAAA;AACtCE,QAAAA,SAAaC,KAAO;AACpB,QAAMC,eAAOJ,SAASK;AACtB,eAAML,UAASM;AACf,QAAMN,OAAAA,SAASK,WAAgB,gBAAA,cAAA;AAC/B,QAAA,SAAA,WAAA,MAAA,cAAA,YAAA;;;;;ACtBF,SAASE,eAAe;AACxB,SAASC,2BAA2B;AAGpC,SAASC,iBAAiB;AAC1B,SAASC,qBAAqBC,4BAA4BC,8BAA8B;AACxF,SAASC,wBAAwBC,qBAAqBC,iCAAiC;AAGvF,SAASC,oBAAoB;AAC7B,SAAuBC,aAAaC,qBAAqB;AACzD,SAASC,QAAQC,gBAAgB;AACjC,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;;;ACb3B,SAASC,mBAAmB;AAQrB,IAAMC,kBAAN,cAA8BC,YAAAA;EACnC,cAAc;AACZ,UAAM;MACJC;IACF,CAAA;EACF;AACF;;;ADOA,IAAAC,gBAAaC;IAKPC,+BAAkBC,CAAAA,kBAAAA,MAAAA,IAAAA,oBAAAA;EACjB,eAAA,IAAA,oBAAA,aAAA;EAEA,kBAAMC;;sCAIoC,CAAA,cAAA,MAAA,IAAA,oBAAA;iBAAEC,IAAQC,uBAAAA;IAAU;MAAE,QAAA;IACjEJ;EACC,CAAA;EAOP,kBAAA,0BAAA;;AAKmBK,IAAkB,mBAAlBA,MAAkB;EAClBC,UAAAA,IAAAA,WAAgD,UAAA,IAAA;EAEjE;;cAC6CC,EAAMC,SAAAA,uBAAe,IAAA,CAAA,GAAA;AAAC,SAAA,WAAA,WAAA,cAAA;MAC7D,MAACF,YAAAA;IAEP,CAAA;AAEA,SAAMG,0BAAQ,0BAAA,6BAAA,IAAA,2BAAA,CAAA;;EAEd,MAAA,QAAA;AAEIC,WAAAA,QAAS,IAAA,KAAA,OAAA,IAAA,CAAA,UAAA,MAAA,MAAA,CAAA,CAAA;;EAEb,IAAA,SAAA;AAEAC,WAASC,MAAAA,KAA6C,KAAA,QAAA,OAAA,CAAA;;EAEtD,SAAA,WAAA;AAEA,WAAMC,KAAAA,QAAiC,IAAA,SAAA;;QAErC,aAAMC;AAIN,UAAMF,cAAY,IAAME,gBAAYC,EAAAA,WAAiB,KAAA,UAAA,SAAA,KAAA,QAAA,IAAA,EAAA;AAErD,UAAMC,cAAYC,MAAAA,YAAeX,QAAAA,UAAuB;AACxD,UAAKY,YAAYN,MAAAA,YAAWI,QAAAA,UAAAA;AAC5B,UAAA,QAAOA,IAAAA,UAAAA,KAAAA,yBAAAA,aAAAA,aAAAA,SAAAA;AACT,SAAA,QAAA,IAAA,WAAA,KAAA;AACF,WAAA;EAEA;;;;;EAImBG;EAEDC;EACAL,UAAiB,IAAA,WAAA,UAAA,IAAA;EACjBM;EAERC;EACR;;EAEA,IAAA,gBAAA;AAEQC,WAAuB,KAAA,mBAAA,IAAA,cAAA,KAAA,QAAA,gBAAA,UAAA,CAAA;EAC/B;;EAEA,IAAA,YAAA;AAEA,WAAA,KACmBjB,eAAAA,IAA+C,UAC/CkB,KAA6B,QAC9BC,gBAEhB,OAAA,CAAA;;cAHiBD,yBAAAA,cAAAA,aAAAA,WAAAA;SACDC,0BAAAA;SACAb,eAAAA;AAEhB,SAAKQ,cAAc;AACnB,SAAKL,YAAU;AACf,SAAKM,UAAS,KAAG,aAAKG;AACxB,SAAA,UAAA,KAAA,aAAA;AAEA,SAAMf,YAAQ,KAAA,aAAA,gBAAA;;gBACW;WAA0C,QAAA,IAAA;MACnE,GAAA,KAAA,OAAA,IAAA,CAAA,UAAA,MAAA,MAAA,CAAA;IAEIiB,CAAAA;;EAEJ,IAAA,SAAA;AAEAC,WAASC,MAAmB,KAAqB,KAAA,QAAA,OAAA,CAAA;;EAEjD,SAAA,UAAA;AAEQC,WAAAA,KAAsC,QAAA,IAAA,QAAA;EAC9C;;uBAEgBA;AACd,QAAA,KAAA,iBAAA;AAEI,aAACA,KAAAA;IACL;SAAmCC,kBAAclB,KAAUmB,wBAAK;SAAIN,gBAAiB,YAAY;MAAS,SAAA,KAAA,UAAA,MAAA;MAE1G,aAAYI,KAAAA,YAAe,MAAA;IAC7B,CAAA;AAEQG,WAAAA,KAA6B;EACrC;;qBAEe;WACXC,KAAAA,kBAAqBA,IAAAA,aAAc;MACnCC,WAAAA,KAAe;MACfC,gBAAgBA,KAAAA;MAClB,eAAA,KAAA;MACF,WAAA,KAAA;IAEA,CAAA;;oBAQIC,cAAe,KAAA,aAAA,UAAA,YAAA,SAAA,eAAA,OAAA;QACfR,CAAAA,UAAW;AACb,qBAAA;AACI,iBAACS,MAAY,KAAA,QAAA,UAAA;;AAEjB,QAAA,CAAA,YAAA;AAEA,mBAAMC,MAAc,KAAM,QAAKjB,UAAUkB;;AAAsC,UAAA,cAAA,MAAA,KAAA,UAAA,SAAA,YAAA;MAC/E,UAAMC;;UAEJC,WAAQ,MAAA,KAAA,UAAA,SAAA,WAAA,MAAA,KAAA,QAAA,UAAA,GAAA;MACV,UAAA;MAEA,QAAMC;;UAEJC,WAAAA;MACAC,KAAAA;MACAC,gBAAaL;MACf,gBAAA,YAAA;MACIJ,aAAAA,SAAc;;AAElB,QAAA,cAAA;AAEA,YAAU,KAACU,cAAiB,SAAA,QAAA;IAC5B;UACEJ,KAAAA,aAAAA,KAAAA;UACAK,QAAAA,MAAe,KAAA,aAAA,eAAA;;qBAEJ;QACTC,aAAAA,KAAAA;QACAC,SAAAA,KAAAA;QACF,oBAAA;QACAC,yBAAWzB;MACX0B;iBACEC;8BAEsDA,CAAAA,YAAQC;AAAa,gBAAA,aAAA,6BAAA,KAAA,aAAA,EAAA,gBAAA;UAE7E,cAAA,QAAA;QACAC,CAAAA,CAAAA;MACAC;MACF,mCAAA,YAAA;MAAA;MACA,sBAA0B,YAACjB;MAAAA;IAC3B,CAAA;AAEA,UAAMkB,MAAMC,eAASC,WAAAA;AAErB,UAAKvC,MAAO,YAAKS,QAAU4B;AAC3B,UAAA,MAAOA,KAAAA,IAAAA,QAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,CAAAA,CAAAA;AACT,SAAA,QAAA,IAAA,UAAA,KAAA;AAEAG,WAAAA;;sBAEIC,OAAAA,QAAAA;WACAb,IAAAA,cAAe;;qBAEJ;QACTC,aAAAA,KAAAA;QACAC,SAAAA,KAAAA;QACF,oBAAA;QACAhB,yBAAqBA;MACrBE;MACA0B,gBAAgBT,KAAAA;iBACdA,KAAQU;qBAE4CT,CAAAA,YAAcD;AAAqB,gBAAA,aAAA,8BAAA,UAAA,KAAA,aAAA,GAAA,gBAAA;UAEzF,cAAA,QAAA;QACF,CAAA,CAAA;MACF;IAEAW,CAAAA;;iBAEIC;AACF,WAAA,IAAA,OAAA;MACF,aAAA,KAAA;IAEAC,CAAAA;;iBAEIC,QAAAA;WACAC,IAAAA,SAAgB;MAChB1C,kBAAkBA;MAClB2C,gBAAQA;MACV,aAAA,KAAA;MACF,QAAA,UAAA,KAAA,aAAA;IAEA,CAAA;;QAEE,aAAMC,OAAc;sBACRC,IAAAA,oBAA6Bd,KAAAA,SAAWA,KAAMZ,aAAc,KAAA,SAAA;UACtE,cAAgB2B;MAChB,GAAA,MAAMD,UAAUE,mBAAsBhB,MAAMiB,KAAG,MAAA,cAAA;MAChD,MAAA,UAAA,oBAAA,MAAA,KAAA,MAAA,aAAA,aAAA,YAAA,IAAA;MAED,MAAK,UAAMC,sBAA2B,MAAA,GAAA;;eAElCA,cAAY,aAAA;kBAAEA,gBAAAA,OAAAA,MAAAA;QAAW,YAAA;UAC3B;QACF;MACF,CAAA;IACF;;;;;AE/PA,SAAuBC,sBAAmC;AAE1D,SAASC,SAASC,aAAa;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAIpB,IAAAC,gBAAaC;AACX,IAAOC,cAAP,MAAOA,qBACLC,eAAuD;;oBAI9CC,0BAAAA,MAAAA,MAAAA,WAAAA;qBACLC,IAAYD,aAAAA;YACZ,CAAA,YAAID;oBACGN,OAAUS;oCACTH,MAAAA,MAAAA;qBACFI,EAAAA,EAAAA,KAASC,MAAO;AAClB,gBAAA,wBAAA,MAAA,QAAA,SAAA,QAAA;AACF,uBAAA,QAAA,OAAA;YACF;UACF,CAAA;QACF;MACA;;qBAEIH,IAAYD,aAAAA;YACZ,CAAA,YAAID;oBACGN,OAAUS;oCACTH,MAAAA,MAAAA;qBACFM,EAAAA,EAAAA,KAASD,MAAO;AAClB,gBAAA,wBAAA,MAAA,QAAA,SAAA,QAAA;AACF,uBAAA,QAAA,OAAA;YACF;UACF,CAAA;QACF;MAEA;;WAAkBD;MAAS;MAC7B;IAEOG;EAEP;cACO,IAAA,QADsBC;EAE7B,YAAA,SAAA;AAESC,UAAmB,GAAA,KAAA,UAAA;;EAE5B,UAAA;AAESC,WAAAA;;EAET,YAAA;AAESC,WAAQC,QAAsB,QAAA;;UAEjC,QAACL;AACP,SAAA,SAAA;AAEAM,SAAAA,UAAcD,KAAsB;;gBAExB,QAAA;cAAoBA,QAAAA,sBAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,UAAAA,sBAAAA,EAAAA,CAAAA;SAAQE,KAAAA,kBAAe;MAAE;MACzD,cAAA,CAAA;IAEAC,CAAAA;;mBAEY,QAAA;cAAuBH,QAAAA,sBAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,UAAAA,sBAAAA,EAAAA,CAAAA;AAAO,SAAA,KAAA,qBAAA;MAC1C;IAESI,CAAKf;;gBACQA;SAAkBgB,QAAIhB;MAAkBiB,MAAMjB,QAAQiB;MAAK,IAAA,QAAA;MAC3E,MAACV,QAAaP;IACpB,GAAA,EAAA,YAAA,YAAA,GAAAJ,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AAESsB,SAAAA,QAAmB,KAAA,OAAA;;EAE5B,aAAA;AAEAd,SAAQJ,SAAwB;;UAE1B,SAAM;AACZ,cAAA,KAAA,QAAA,sBAAA,EAAA,YAAA,YAAA,GAAAJ,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,eAAA,sBAAA,EAAA,CAAA;AACF,SAAA,KAAA,WAAA,OAAA;;;;;AClFA,SAAuBuB,SAAAA,QAAAA,oBAAwB;AAC/C,SAASC,gBAAS,gBAAQ;AAC1B,SAASC,aAAAA,kBAAW;AAEpB,SAAA,OAAAA,YAAYC;AAQZ,YAAO,iCAAqCC;;;;;;;AAjB5C;AAkBmBC,IAAAA,yBAAAA,cAAyC,SAAA;EACzCC,eAAoBC,oBAAAA,IAAU;EAE/C,WAAA;cACO,UAAA,CAAA,GAAA;AACL,UAAKD;AACP,SAAA,WAAA,QAAA;EAEA;QACE,OAAK,MAAME;eACJ,cAAMC,KAAcD,cAAWE;iBAC7BD,cAAWE,WAAc,aAAA;AAC9B,aAAKF,WAAWG,SAASC,MAAM;AACjC,aAAA,WAAA,SAAA,OAAA;MACF;IACF;EAEA;QACE,mBAAmB;UACjBC,aAAW,IAAA,eAAA;iBACTb,YAAec;AACf,QAAAd,WAAU,KAACe,oBAAmBR,eAAAA,MAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,gDAAAA,EAAAA,EAAAA,CAAAA;AAChC,cAAA,KAAA,mBAAA,UAAA;MACAS;oBACY,YAAKF;AACf,QAAAd,WAAU,KAACiB,oBAAsBV,eAAAA,MAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,gDAAAA,EAAAA,EAAAA,CAAAA;AACnC,cAAA,KAAA,sBAAA,UAAA;MACF;IACA,CAAA;AACA,SAAA,aAAOA,IAAAA,UAAAA;AACT,WAAA;EAEA;QAEE,mBAAWW,YAAmB;eACxBA,mBAAoBX,KAAAA,aAAeW,OAAAA,GAAAA;UACrC,oBAAA,cAAA,CAAA,gBAAA,WAAA;AACF;MACAjB;WAA2BkB,qBAAiBC;QAAiBC,MAAIH,WAAAA,QAAgBE;QAAgB,IAAA,gBAAA,QAAA;MACjG,GAAA,EAAA,YAAOE,YAAaC,GAAAA,eAAoBC,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AAIxC,YAAMjB,CAAAA,aAAWa,WAASK,IAAAA,KAAAA,sBAAiBH,WAAAA,QAAAA,QAAAA,gBAAAA,QAAAA,MAAAA;AAC3C,YAAMJ,WAAAA,QAAgBE,iBAASK,WAAiBF;AAClD,YAAA,gBAAA,QAAA,iBAAA,WAAA;IACF;EAEA;QACE,sBAAWf,YAAyBC;eAC5BF,cAAWa,WAASM,aAAmBlB;AAC7C,YAAMA,WAAWmB,QAAAA,mBAA6BC,UAAAA;AAChD,YAAA,WAAA,UAAA,iBAAA,iBAAA,WAAA,SAAA;IACF;EAEQJ;wBACM,OAAA,OAAA;AAEZ,UAAMK,MAAAA;UACJC,UAAW,IAAA,gBAAgBC;iBACrBC,OAAK,SAAA,eAAA;YACP/B,KAAI;eAAekB,aAAMc;YAAOZ,MAAIa;YAAOC,IAAAA;YAAQ;UACrD,GAAA,EAAA,YAAA,YAAA,GAAAC,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;QAEA;YACE,KAAA,aAAiB/B,QAAQ;AAC3B,gBAAAgC,OAAA,KAAA,QAAA;QAEAN;AACF,mBAAA,QAAA,OAAA;MACF;IACA,CAAA;UACED,YAAW,IAAOK,gBAASJ;iBACrBC,OAAK,SAAA,eAAA;YACP/B,KAAI;eAAekB,aAAMe;YAAOb,MAAIY;YAAOE,IAAAA;YAAQ;UACrD,GAAA,EAAA,YAAA,YAAA,GAAAC,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;QAEA;YACE,KAAA,aAAiB/B,QAAQ;AAC3B,gBAAAgC,OAAA,KAAA,QAAA;QAEAN;AACF,mBAAA,QAAA,OAAA;MACF;IAEA,CAAA;AACA,UAAMR,cAAc,IAAIe,yBAAyBL,OAAOJ,UAAQlB,UAAU4B,QAAU7B,QAAQ;AAC5FY,UAAAA,cAAYK,IAAYJ,yBAAAA,OAAAA,QAAAA,UAAAA,UAAAA,QAAAA;AACxBA,gBAAYI,YAAYL;AACxB,gBAAO,YAAA;WAACA;MAAaC;MAAY;IACnC;EACF;;;;AAOA,GAAA,uBAAaiB,WAAAA,sBAAAA,IAAAA;;EACX;cAA6BC,SAAAA;AAA+B,SAAA,UAAA;EAErDC;EACAtB,YAAkDd;EAClDG,UAAAA;EAEP,cAAckC,oBAAa,IAAEvB;QAC3BnB,QAAI,MAAW,SAAA;SAAE2C,WAAQxB;MAAe,QAAA,QAAA;IACxC,GAAA,EAAA,YAAY,YAAGA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AACf,SAAKsB,UAAS;AACd,SAAA,YAAWD;AACb,UAAA,KAAA,QAAA,UAAA;EAEA;QACExC,aAAI;SAAgB2C,cAAaxB;MAAgB,QAAA,KAAA,QAAA;IACjD,GAAA,EAAA,YAAc,YAAG,GAAAgB,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACjB,SAAA,YAAWK;AACb,UAAA,KAAA,QAAA,aAAA;EAEA;QACEjC,cAAWqC,YAAgB;AAC3B,eAAKpC,mBAAgBD;AACrB,SAAKY,YAASK,IAAAA,UAAiBjB;AACjC,SAAA,QAAA,iBAAA,UAAA;EAEA;QACEA,iBAAWqC,YAAmBvC;AAC9B,eAAKc,mBAASM;AACd,SAAKjB,QAAAA,mBAAmBD,UAAAA;AAC1B,SAAA,YAAA,OAAA,UAAA;EACF;AAEA;;;;EACSmB;EACAkB,YAAAA;EAEP,mBACgC;cAAdD,QAAAA,UAAAA,UAAAA;SACAjC,SAAAA;SACAD,WAAAA;AACf,SAAA,WAAA;EAEH;MACE,oBAAO;AACT,WAAA;EAEA;QACE,kBAAO;AACT,WAAA;EAEAoC;yBACS;AACT,WAAA;EACF;AAEA;AACE,IAAO,iCAAgCC,CAAAA,WAAAA;SAEhCC,IAAS,gDAAA;IACZC,GAAAA,OAAAA,CAAAA;yBACgB;MACdC,cAAAA;MACAC,sBAAY;MACd,YAAA;IAEFH;EAEF,GAAA,OAAA,CAAA,CAAA;AAEF;AACEA,IAAS,mCAAkB,CAAA,WAAA;SACzB,CAAA,EAAM,gBAAII,MAAAA;AACZ,UAAA,IAAA,MAAA;EAEA;AACA,SAAA,+BAAA,MAAA;;",
6
+ "names": ["log", "schema", "EchoMetadata", "metadata", "createDirectory", "echoMetadata", "version", "file", "_directory", "_writeFile", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "SwarmNetworkManager", "createRtcTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "valueEncoding", "__dxlog_file", "MemoryNetworkManagerProvider", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "server", "signalUrl", "_storage", "_networkManagerProvider", "type", "StorageType", "close", "agents", "getAgent", "deviceKey", "createPeer", "feedBuilder", "keyring", "agent", "TestAgent", "_agents", "_spaces", "storage", "feedStore", "_metadataStore", "_blobStore", "_feedBuilder", "identityKey", "spaces", "getSpace", "spaceKey", "_networkManager", "peerKey", "toHex", "_spaceManager", "networkManager", "metadataStore", "blobStore", "saveMetadata", "genesisKey", "controlFeed", "openFeed", "dataFeed", "sparse", "metadata", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "spaceManager", "swarmIdentity", "credentialProvider", "credentialAuthenticator", "memberKey", "onAuthorizedConnection", "session", "remotePeerId", "onDelegatedInvitationStatusChange", "onMemberRolesChanged", "space", "open", "Context", "createSpaceProtocol", "topic", "onSessionAuth", "addExtension", "createGossip", "localPeerId", "createPresence", "announceInterval", "offlineTimeout", "gossip", "credentials", "generator", "createFeedAdmission", "createEpochCredential", "key", "credential", "NetworkAdapter", "Trigger", "sleep", "invariant", "log", "__dxlog_file", "TestAdapter", "createPair", "connectionStateProvider", "message", "onMessage", "then", "adapter2", "receive", "adapter1", "onConnect", "_params", "isReady", "whenReady", "connect", "peerId", "peerCandidate", "peerMetadata", "peerDisconnected", "send", "to", "type", "disconnect", "LifecycleState", "invariant", "log", "TeleportAutomergeReplicator", "Resource", "_replicators", "_latency", "undefined", "replicator", "connection", "connections", "writable", "readable", "cancel", "onConnect", "_lifecycleState", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "otherReplicator", "from", "context", "to", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "removeConnection", "forward", "transform", "controller", "LOG", "peer1", "peer2", "message", "__dxlog_file", "sleep", "TestReplicatorConnection", "backwards", "TestReplicator", "_params", "connected", "_ctx", "peerId", "owningReplicator", "shouldSyncCollection", "AutomergeReplicator", "params", "sendSyncRetryPolicy", "retriesBeforeBackoff", "maxRetries", "Error"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=automerge-host-subduction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automerge-host-subduction.test.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host-subduction.test.ts"],"names":[],"mappings":""}