@dxos/echo-pipeline 0.8.3 → 0.8.4-main.1068cf700f

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 (199) hide show
  1. package/dist/lib/neutral/chunk-FJPXA75J.mjs +235 -0
  2. package/dist/lib/neutral/chunk-FJPXA75J.mjs.map +7 -0
  3. package/dist/lib/{browser/chunk-35I6ERLG.mjs → neutral/chunk-WIQUYO7H.mjs} +300 -213
  4. package/dist/lib/neutral/chunk-WIQUYO7H.mjs.map +7 -0
  5. package/dist/lib/{browser → neutral}/filter/index.mjs +3 -2
  6. package/dist/lib/{browser → neutral}/index.mjs +2832 -946
  7. package/dist/lib/neutral/index.mjs.map +7 -0
  8. package/dist/lib/neutral/meta.json +1 -0
  9. package/dist/lib/{browser → neutral}/testing/index.mjs +73 -224
  10. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  11. package/dist/types/src/automerge/automerge-host.d.ts +53 -42
  12. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  13. package/dist/types/src/automerge/automerge-repo.test.d.ts +1 -1
  14. package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -1
  15. package/dist/types/src/automerge/collection-synchronizer.d.ts +6 -4
  16. package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
  17. package/dist/types/src/automerge/echo-network-adapter.d.ts +22 -10
  18. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  19. package/dist/types/src/automerge/echo-replicator.d.ts +37 -15
  20. package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
  21. package/dist/types/src/automerge/heads-store.d.ts +9 -2
  22. package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
  23. package/dist/types/src/automerge/index.d.ts +1 -1
  24. package/dist/types/src/automerge/index.d.ts.map +1 -1
  25. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +5 -5
  26. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
  27. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +9 -8
  28. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
  29. package/dist/types/src/automerge/mesh-echo-replicator.d.ts +5 -5
  30. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
  31. package/dist/types/src/common/codec.d.ts +1 -1
  32. package/dist/types/src/common/codec.d.ts.map +1 -1
  33. package/dist/types/src/db-host/automerge-data-source.d.ts +34 -0
  34. package/dist/types/src/db-host/automerge-data-source.d.ts.map +1 -0
  35. package/dist/types/src/db-host/automerge-data-source.test.d.ts +2 -0
  36. package/dist/types/src/db-host/automerge-data-source.test.d.ts.map +1 -0
  37. package/dist/types/src/db-host/data-service.d.ts +5 -4
  38. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  39. package/dist/types/src/db-host/database-root.d.ts.map +1 -1
  40. package/dist/types/src/db-host/documents-synchronizer.d.ts +6 -5
  41. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
  42. package/dist/types/src/db-host/echo-host.d.ts +44 -23
  43. package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
  44. package/dist/types/src/db-host/index.d.ts +1 -0
  45. package/dist/types/src/db-host/index.d.ts.map +1 -1
  46. package/dist/types/src/db-host/local-queue-service.d.ts +16 -0
  47. package/dist/types/src/db-host/local-queue-service.d.ts.map +1 -0
  48. package/dist/types/src/db-host/query-service.d.ts +14 -9
  49. package/dist/types/src/db-host/query-service.d.ts.map +1 -1
  50. package/dist/types/src/db-host/queue-data-source.d.ts +28 -0
  51. package/dist/types/src/db-host/queue-data-source.d.ts.map +1 -0
  52. package/dist/types/src/db-host/queue-service.test.d.ts +2 -0
  53. package/dist/types/src/db-host/queue-service.test.d.ts.map +1 -0
  54. package/dist/types/src/db-host/space-state-manager.d.ts +2 -1
  55. package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
  56. package/dist/types/src/db-host/stub.d.ts +10 -0
  57. package/dist/types/src/db-host/stub.d.ts.map +1 -0
  58. package/dist/types/src/edge/echo-edge-replicator.d.ts +8 -6
  59. package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
  60. package/dist/types/src/filter/filter-match.d.ts +4 -1
  61. package/dist/types/src/filter/filter-match.d.ts.map +1 -1
  62. package/dist/types/src/metadata/metadata-store.d.ts +1 -1
  63. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  64. package/dist/types/src/pipeline/pipeline.d.ts +3 -3
  65. package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
  66. package/dist/types/src/query/errors.d.ts +21 -9
  67. package/dist/types/src/query/errors.d.ts.map +1 -1
  68. package/dist/types/src/query/plan.d.ts +57 -5
  69. package/dist/types/src/query/plan.d.ts.map +1 -1
  70. package/dist/types/src/query/query-executor.d.ts +49 -10
  71. package/dist/types/src/query/query-executor.d.ts.map +1 -1
  72. package/dist/types/src/query/query-planner.d.ts +9 -0
  73. package/dist/types/src/query/query-planner.d.ts.map +1 -1
  74. package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
  75. package/dist/types/src/space/auth.d.ts +3 -3
  76. package/dist/types/src/space/auth.d.ts.map +1 -1
  77. package/dist/types/src/space/control-pipeline.d.ts +3 -3
  78. package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
  79. package/dist/types/src/space/space-manager.d.ts +7 -7
  80. package/dist/types/src/space/space-manager.d.ts.map +1 -1
  81. package/dist/types/src/space/space-protocol.d.ts +6 -6
  82. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  83. package/dist/types/src/space/space.d.ts +4 -4
  84. package/dist/types/src/space/space.d.ts.map +1 -1
  85. package/dist/types/src/testing/index.d.ts +0 -2
  86. package/dist/types/src/testing/index.d.ts.map +1 -1
  87. package/dist/types/src/testing/test-agent-builder.d.ts +2 -2
  88. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  89. package/dist/types/src/testing/test-network-adapter.d.ts +1 -1
  90. package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
  91. package/dist/types/src/testing/test-replicator.d.ts +14 -13
  92. package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
  93. package/dist/types/src/util.d.ts +1 -1
  94. package/dist/types/src/util.d.ts.map +1 -1
  95. package/dist/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +53 -45
  97. package/src/automerge/automerge-host.test.ts +55 -24
  98. package/src/automerge/automerge-host.ts +399 -126
  99. package/src/automerge/automerge-repo.test.ts +214 -46
  100. package/src/automerge/collection-synchronizer.test.ts +22 -15
  101. package/src/automerge/collection-synchronizer.ts +57 -22
  102. package/src/automerge/echo-data-monitor.ts +1 -1
  103. package/src/automerge/echo-network-adapter.test.ts +3 -3
  104. package/src/automerge/echo-network-adapter.ts +73 -28
  105. package/src/automerge/echo-replicator.ts +40 -15
  106. package/src/automerge/heads-store.ts +42 -3
  107. package/src/automerge/index.ts +1 -1
  108. package/src/automerge/leveldb-storage-adapter.ts +11 -11
  109. package/src/automerge/mesh-echo-replicator-connection.ts +12 -8
  110. package/src/automerge/mesh-echo-replicator.ts +15 -11
  111. package/src/automerge/storage-adapter.test.ts +1 -1
  112. package/src/common/space-id.ts +1 -1
  113. package/src/db-host/automerge-data-source.test.ts +292 -0
  114. package/src/db-host/automerge-data-source.ts +144 -0
  115. package/src/db-host/data-service.ts +19 -20
  116. package/src/db-host/database-root.ts +2 -2
  117. package/src/db-host/documents-synchronizer.test.ts +73 -13
  118. package/src/db-host/documents-synchronizer.ts +58 -44
  119. package/src/db-host/echo-host.ts +194 -84
  120. package/src/db-host/index.ts +1 -0
  121. package/src/db-host/local-queue-service.ts +147 -0
  122. package/src/db-host/query-service.ts +28 -95
  123. package/src/db-host/queue-data-source.ts +132 -0
  124. package/src/db-host/queue-service.test.ts +145 -0
  125. package/src/db-host/space-state-manager.ts +6 -2
  126. package/src/db-host/stub.ts +28 -0
  127. package/src/edge/echo-edge-replicator.test.ts +8 -6
  128. package/src/edge/echo-edge-replicator.ts +124 -42
  129. package/src/filter/filter-match.test.ts +58 -32
  130. package/src/filter/filter-match.ts +163 -15
  131. package/src/metadata/metadata-store.ts +8 -5
  132. package/src/pipeline/pipeline-stress.test.ts +4 -2
  133. package/src/pipeline/pipeline.test.ts +3 -2
  134. package/src/pipeline/pipeline.ts +10 -7
  135. package/src/query/errors.ts +3 -1
  136. package/src/query/plan.ts +75 -5
  137. package/src/query/query-executor.ts +812 -117
  138. package/src/query/query-planner.test.ts +652 -34
  139. package/src/query/query-planner.ts +276 -13
  140. package/src/space/admission-discovery-extension.ts +3 -3
  141. package/src/space/auth.ts +6 -6
  142. package/src/space/control-pipeline.test.ts +4 -3
  143. package/src/space/control-pipeline.ts +11 -8
  144. package/src/space/space-manager.browser.test.ts +1 -1
  145. package/src/space/space-manager.ts +11 -10
  146. package/src/space/space-protocol.browser.test.ts +2 -2
  147. package/src/space/space-protocol.test.ts +3 -2
  148. package/src/space/space-protocol.ts +17 -14
  149. package/src/space/space.test.ts +1 -1
  150. package/src/space/space.ts +6 -5
  151. package/src/testing/index.ts +0 -2
  152. package/src/testing/test-agent-builder.ts +4 -3
  153. package/src/testing/test-network-adapter.ts +16 -3
  154. package/src/testing/test-replicator.ts +23 -18
  155. package/src/util.ts +7 -3
  156. package/dist/lib/browser/chunk-35I6ERLG.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-CGS2ULMK.mjs +0 -11
  158. package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-TQJTKNMS.mjs +0 -126
  160. package/dist/lib/browser/chunk-TQJTKNMS.mjs.map +0 -7
  161. package/dist/lib/browser/index.mjs.map +0 -7
  162. package/dist/lib/browser/meta.json +0 -1
  163. package/dist/lib/browser/testing/index.mjs.map +0 -7
  164. package/dist/lib/node/chunk-HOPOFWAL.cjs +0 -147
  165. package/dist/lib/node/chunk-HOPOFWAL.cjs.map +0 -7
  166. package/dist/lib/node/chunk-JXX6LF5U.cjs +0 -2084
  167. package/dist/lib/node/chunk-JXX6LF5U.cjs.map +0 -7
  168. package/dist/lib/node/chunk-Q7SFCCGT.cjs +0 -33
  169. package/dist/lib/node/chunk-Q7SFCCGT.cjs.map +0 -7
  170. package/dist/lib/node/filter/index.cjs +0 -32
  171. package/dist/lib/node/filter/index.cjs.map +0 -7
  172. package/dist/lib/node/index.cjs +0 -4699
  173. package/dist/lib/node/index.cjs.map +0 -7
  174. package/dist/lib/node/meta.json +0 -1
  175. package/dist/lib/node/testing/index.cjs +0 -753
  176. package/dist/lib/node/testing/index.cjs.map +0 -7
  177. package/dist/lib/node-esm/chunk-5BHLPT24.mjs +0 -2067
  178. package/dist/lib/node-esm/chunk-5BHLPT24.mjs.map +0 -7
  179. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  180. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  181. package/dist/lib/node-esm/chunk-RVK35BS7.mjs +0 -126
  182. package/dist/lib/node-esm/chunk-RVK35BS7.mjs.map +0 -7
  183. package/dist/lib/node-esm/filter/index.mjs +0 -11
  184. package/dist/lib/node-esm/filter/index.mjs.map +0 -7
  185. package/dist/lib/node-esm/index.mjs +0 -4743
  186. package/dist/lib/node-esm/index.mjs.map +0 -7
  187. package/dist/lib/node-esm/meta.json +0 -1
  188. package/dist/lib/node-esm/testing/index.mjs +0 -742
  189. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  190. package/dist/types/src/db-host/documents-iterator.d.ts +0 -7
  191. package/dist/types/src/db-host/documents-iterator.d.ts.map +0 -1
  192. package/dist/types/src/testing/test-data.d.ts +0 -18
  193. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  194. package/dist/types/src/testing/test-schema.d.ts +0 -37
  195. package/dist/types/src/testing/test-schema.d.ts.map +0 -1
  196. package/src/db-host/documents-iterator.ts +0 -74
  197. package/src/testing/test-data.ts +0 -127
  198. package/src/testing/test-schema.ts +0 -53
  199. /package/dist/lib/{browser → neutral}/filter/index.mjs.map +0 -0
@@ -6,15 +6,12 @@ import {
6
6
  SpaceManager,
7
7
  SpaceProtocol,
8
8
  valueEncoding
9
- } from "../chunk-35I6ERLG.mjs";
10
- import {
11
- __export
12
- } from "../chunk-CGS2ULMK.mjs";
9
+ } from "../chunk-WIQUYO7H.mjs";
13
10
 
14
- // packages/core/echo/echo-pipeline/src/testing/change-metadata.ts
11
+ // src/testing/change-metadata.ts
15
12
  import { log } from "@dxos/log";
16
13
  import { schema } from "@dxos/protocols/proto";
17
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
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
17
  log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, {
@@ -32,7 +29,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
32
29
  await metadata._directory.flush();
33
30
  };
34
31
 
35
- // packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts
32
+ // src/testing/test-agent-builder.ts
36
33
  import { Context } from "@dxos/context";
37
34
  import { CredentialGenerator } from "@dxos/credentials";
38
35
  import { PublicKey } from "@dxos/keys";
@@ -44,7 +41,7 @@ import { Gossip, Presence } from "@dxos/teleport-extension-gossip";
44
41
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
45
42
  import { ComplexMap } from "@dxos/util";
46
43
 
47
- // packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts
44
+ // src/testing/test-feed-builder.ts
48
45
  import { TestBuilder } from "@dxos/feed-store/testing";
49
46
  var TestFeedBuilder = class extends TestBuilder {
50
47
  constructor() {
@@ -54,8 +51,8 @@ var TestFeedBuilder = class extends TestBuilder {
54
51
  }
55
52
  };
56
53
 
57
- // packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts
58
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts";
54
+ // src/testing/test-agent-builder.ts
55
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts";
59
56
  var MemoryNetworkManagerProvider = (signalContext) => () => new SwarmNetworkManager({
60
57
  signalManager: new MemorySignalManager(signalContext),
61
58
  transportFactory: MemoryTransportFactory
@@ -69,8 +66,10 @@ var WebsocketNetworkManagerProvider = (signalUrl) => () => new SwarmNetworkManag
69
66
  transportFactory: createRtcTransportFactory()
70
67
  });
71
68
  var TestAgentBuilder = class {
69
+ _agents = new ComplexMap(PublicKey.hash);
70
+ _storage;
71
+ _networkManagerProvider;
72
72
  constructor({ storage, networkManagerProvider } = {}) {
73
- this._agents = new ComplexMap(PublicKey.hash);
74
73
  this._storage = storage ?? createStorage({
75
74
  type: StorageType.RAM
76
75
  });
@@ -95,9 +94,19 @@ var TestAgentBuilder = class {
95
94
  }
96
95
  };
97
96
  var TestAgent = class {
97
+ _networkManagerProvider;
98
+ _feedBuilder;
99
+ identityKey;
100
+ deviceKey;
101
+ _spaces = new ComplexMap(PublicKey.hash);
102
+ storage;
103
+ keyring;
104
+ feedStore;
105
+ _metadataStore;
98
106
  get metadataStore() {
99
107
  return this._metadataStore ??= new MetadataStore(this.storage.createDirectory("metadata"));
100
108
  }
109
+ _blobStore;
101
110
  get blobStore() {
102
111
  return this._blobStore ??= new BlobStore(this.storage.createDirectory("blobs"));
103
112
  }
@@ -106,7 +115,6 @@ var TestAgent = class {
106
115
  this._feedBuilder = _feedBuilder;
107
116
  this.identityKey = identityKey;
108
117
  this.deviceKey = deviceKey;
109
- this._spaces = new ComplexMap(PublicKey.hash);
110
118
  this.storage = this._feedBuilder.storage;
111
119
  this.keyring = this._feedBuilder.keyring;
112
120
  this.feedStore = this._feedBuilder.createFeedStore();
@@ -119,9 +127,10 @@ var TestAgent = class {
119
127
  get spaces() {
120
128
  return Array.from(this._spaces.values());
121
129
  }
122
- getSpace(spaceKey2) {
123
- return this._spaces.get(spaceKey2);
130
+ getSpace(spaceKey) {
131
+ return this._spaces.get(spaceKey);
124
132
  }
133
+ _networkManager;
125
134
  get networkManager() {
126
135
  if (this._networkManager) {
127
136
  return this._networkManager;
@@ -133,6 +142,7 @@ var TestAgent = class {
133
142
  });
134
143
  return this._networkManager;
135
144
  }
145
+ _spaceManager;
136
146
  get spaceManager() {
137
147
  return this._spaceManager ??= new SpaceManager({
138
148
  feedStore: this.feedStore,
@@ -141,10 +151,10 @@ var TestAgent = class {
141
151
  blobStore: this.blobStore
142
152
  });
143
153
  }
144
- async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
145
- if (!spaceKey2) {
154
+ async createSpace(identityKey = this.identityKey, spaceKey, genesisKey, dataKey, saveMetadata = false) {
155
+ if (!spaceKey) {
146
156
  saveMetadata = true;
147
- spaceKey2 = await this.keyring.createKey();
157
+ spaceKey = await this.keyring.createKey();
148
158
  }
149
159
  if (!genesisKey) {
150
160
  genesisKey = await this.keyring.createKey();
@@ -157,7 +167,7 @@ var TestAgent = class {
157
167
  sparse: true
158
168
  });
159
169
  const metadata = {
160
- key: spaceKey2,
170
+ key: spaceKey,
161
171
  genesisFeedKey: genesisKey,
162
172
  controlFeedKey: controlFeed.key,
163
173
  dataFeedKey: dataFeed.key
@@ -189,9 +199,9 @@ var TestAgent = class {
189
199
  await space.setDataFeed(dataFeed);
190
200
  await space.open(new Context(void 0, {
191
201
  F: __dxlog_file2,
192
- L: 205
202
+ L: 206
193
203
  }));
194
- this._spaces.set(spaceKey2, space);
204
+ this._spaces.set(spaceKey, space);
195
205
  return space;
196
206
  }
197
207
  createSpaceProtocol(topic, gossip) {
@@ -242,27 +252,39 @@ var TestAgent = class {
242
252
  }
243
253
  };
244
254
 
245
- // packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts
255
+ // src/testing/test-network-adapter.ts
246
256
  import { NetworkAdapter } from "@automerge/automerge-repo";
247
257
  import { Trigger, sleep } from "@dxos/async";
248
258
  import { invariant } from "@dxos/invariant";
249
259
  import { log as log2 } from "@dxos/log";
250
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
260
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
251
261
  var TestAdapter = class _TestAdapter extends NetworkAdapter {
252
- static createPair(connectionStateProvider = () => "on") {
262
+ _params;
263
+ static createPair(connectionStateProvider = () => "on", onMessage) {
253
264
  const adapter1 = new _TestAdapter({
254
- send: (message) => connectionStateProvider() === "on" && sleep(10).then(() => adapter2.receive(message))
265
+ send: (message) => {
266
+ onMessage?.(message);
267
+ if (connectionStateProvider() === "on") {
268
+ void sleep(10).then(() => adapter2.receive(message));
269
+ }
270
+ }
255
271
  });
256
272
  const adapter2 = new _TestAdapter({
257
- send: (message) => connectionStateProvider() === "on" && sleep(10).then(() => adapter1.receive(message))
273
+ send: (message) => {
274
+ onMessage?.(message);
275
+ if (connectionStateProvider() === "on") {
276
+ void sleep(10).then(() => adapter1.receive(message));
277
+ }
278
+ }
258
279
  });
259
280
  return [
260
281
  adapter1,
261
282
  adapter2
262
283
  ];
263
284
  }
285
+ onConnect = new Trigger();
264
286
  constructor(_params) {
265
- super(), this._params = _params, this.onConnect = new Trigger();
287
+ super(), this._params = _params;
266
288
  }
267
289
  isReady() {
268
290
  return true;
@@ -277,7 +299,7 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
277
299
  peerCandidate(peerId) {
278
300
  invariant(peerId, "PeerId is required", {
279
301
  F: __dxlog_file3,
280
- L: 45,
302
+ L: 58,
281
303
  S: this,
282
304
  A: [
283
305
  "peerId",
@@ -292,7 +314,7 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
292
314
  peerDisconnected(peerId) {
293
315
  invariant(peerId, "PeerId is required", {
294
316
  F: __dxlog_file3,
295
- L: 50,
317
+ L: 63,
296
318
  S: this,
297
319
  A: [
298
320
  "peerId",
@@ -310,7 +332,7 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
310
332
  type: message.type
311
333
  }, {
312
334
  F: __dxlog_file3,
313
- L: 55,
335
+ L: 68,
314
336
  S: this,
315
337
  C: (f, a) => f(...a)
316
338
  });
@@ -322,7 +344,7 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
322
344
  receive(message) {
323
345
  invariant(this.peerId, "Peer id is not set", {
324
346
  F: __dxlog_file3,
325
- L: 64,
347
+ L: 77,
326
348
  S: this,
327
349
  A: [
328
350
  "this.peerId",
@@ -333,27 +355,27 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
333
355
  }
334
356
  };
335
357
 
336
- // packages/core/echo/echo-pipeline/src/testing/test-replicator.ts
358
+ // src/testing/test-replicator.ts
337
359
  import { sleep as sleep2, synchronized } from "@dxos/async";
338
360
  import { LifecycleState, Resource } from "@dxos/context";
339
361
  import { invariant as invariant2 } from "@dxos/invariant";
340
362
  import { log as log3 } from "@dxos/log";
341
- import { AutomergeReplicator } from "@dxos/teleport-extension-automerge-replicator";
363
+ import * as TeleportAutomergeReplicator from "@dxos/teleport-extension-automerge-replicator";
342
364
  function _ts_decorate(decorators, target, key, desc) {
343
365
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
344
366
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
345
367
  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;
346
368
  return c > 3 && r && Object.defineProperty(target, key, r), r;
347
369
  }
348
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
370
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
349
371
  var TestReplicationNetwork = class extends Resource {
372
+ _replicators = /* @__PURE__ */ new Set();
373
+ _latency = void 0;
350
374
  constructor(options = {}) {
351
375
  super();
352
- this._replicators = /* @__PURE__ */ new Set();
353
- this._latency = void 0;
354
376
  this._latency = options.latency;
355
377
  }
356
- async _close(ctx) {
378
+ async _close(_ctx) {
357
379
  for (const replicator of this._replicators) {
358
380
  for (const connection of replicator.connections) {
359
381
  void connection.writable.abort();
@@ -472,12 +494,13 @@ _ts_decorate([
472
494
  synchronized
473
495
  ], TestReplicationNetwork.prototype, "_connectReplicator", null);
474
496
  var TestReplicator = class {
497
+ _params;
475
498
  constructor(_params) {
476
499
  this._params = _params;
477
- this.connected = false;
478
- this.context = void 0;
479
- this.connections = /* @__PURE__ */ new Set();
480
500
  }
501
+ connected = false;
502
+ context = void 0;
503
+ connections = /* @__PURE__ */ new Set();
481
504
  async connect(context) {
482
505
  log3("connect", {
483
506
  peerId: context.peerId
@@ -515,22 +538,28 @@ var TestReplicator = class {
515
538
  }
516
539
  };
517
540
  var TestReplicatorConnection = class {
541
+ peerId;
542
+ readable;
543
+ writable;
544
+ otherSide = void 0;
545
+ owningReplicator = void 0;
518
546
  constructor(peerId, readable, writable) {
519
547
  this.peerId = peerId;
520
548
  this.readable = readable;
521
549
  this.writable = writable;
522
- this.otherSide = void 0;
523
- this.owningReplicator = void 0;
524
550
  }
525
- async shouldAdvertise(params) {
551
+ get bundleSyncEnabled() {
552
+ return false;
553
+ }
554
+ async shouldAdvertise(_params) {
526
555
  return true;
527
556
  }
528
- shouldSyncCollection(params) {
557
+ shouldSyncCollection(_params) {
529
558
  return true;
530
559
  }
531
560
  };
532
561
  var testAutomergeReplicatorFactory = (params) => {
533
- return new AutomergeReplicator({
562
+ return new TeleportAutomergeReplicator.AutomergeReplicator({
534
563
  ...params[0],
535
564
  sendSyncRetryPolicy: {
536
565
  retryBackoff: 20,
@@ -545,195 +574,15 @@ var brokenAutomergeReplicatorFactory = (params) => {
545
574
  };
546
575
  return testAutomergeReplicatorFactory(params);
547
576
  };
548
-
549
- // packages/core/echo/echo-pipeline/src/testing/test-schema.ts
550
- var test_schema_exports = {};
551
- __export(test_schema_exports, {
552
- Organization: () => Organization,
553
- Person: () => Person,
554
- Task: () => Task,
555
- WorksFor: () => WorksFor
556
- });
557
- import { Schema } from "effect";
558
- import { Type } from "@dxos/echo";
559
- var Person = Schema.Struct({
560
- name: Schema.String,
561
- email: Schema.optional(Schema.String),
562
- age: Schema.optional(Schema.Number)
563
- }).pipe(Type.Obj({
564
- typename: "dxos.org/type/Person",
565
- version: "0.1.0"
566
- }));
567
- var Organization = Schema.Struct({
568
- name: Schema.String
569
- }).pipe(Type.Obj({
570
- typename: "dxos.org/type/Organization",
571
- version: "0.1.0"
572
- }));
573
- var WorksFor = Schema.Struct({
574
- since: Schema.String
575
- }).pipe(Type.Relation({
576
- typename: "dxos.org/type/WorksFor",
577
- version: "0.1.0",
578
- source: Person,
579
- target: Organization
580
- }));
581
- var Task = Schema.Struct({
582
- title: Schema.String,
583
- createdAt: Schema.String,
584
- assignee: Type.Ref(Person)
585
- }).pipe(Type.Obj({
586
- typename: "dxos.org/type/Task",
587
- version: "0.1.0"
588
- }));
589
-
590
- // packages/core/echo/echo-pipeline/src/testing/test-data.ts
591
- var test_data_exports = {};
592
- __export(test_data_exports, {
593
- ORGS: () => ORGS,
594
- PEOPLE: () => PEOPLE,
595
- TASKS: () => TASKS,
596
- WORKS_FOR: () => WORKS_FOR
597
- });
598
- import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
599
- import { getSchemaDXN } from "@dxos/echo-schema";
600
- import { DXN, ObjectId, PublicKey as PublicKey2 } from "@dxos/keys";
601
- var spaceKey = PublicKey2.random();
602
- var PEOPLE = {
603
- fred: DatabaseDirectory.make({
604
- spaceKey: spaceKey.toHex(),
605
- objects: {
606
- [ObjectId.random()]: ObjectStructure.makeObject({
607
- type: getSchemaDXN(Person).toString(),
608
- data: {
609
- name: "Fred"
610
- }
611
- })
612
- }
613
- }),
614
- alice: DatabaseDirectory.make({
615
- spaceKey: spaceKey.toHex(),
616
- objects: {
617
- [ObjectId.random()]: ObjectStructure.makeObject({
618
- type: getSchemaDXN(Person).toString(),
619
- data: {
620
- name: "Alice"
621
- }
622
- })
623
- }
624
- })
625
- };
626
- var ORGS = {
627
- cyberdyne: DatabaseDirectory.make({
628
- spaceKey: spaceKey.toHex(),
629
- objects: {
630
- [ObjectId.random()]: ObjectStructure.makeObject({
631
- type: getSchemaDXN(Organization).toString(),
632
- data: {
633
- name: "Cyberdyne Systems",
634
- founded: "1984"
635
- }
636
- })
637
- }
638
- }),
639
- aperture: DatabaseDirectory.make({
640
- spaceKey: spaceKey.toHex(),
641
- objects: {
642
- [ObjectId.random()]: ObjectStructure.makeObject({
643
- type: getSchemaDXN(Organization).toString(),
644
- data: {
645
- name: "Aperture Science",
646
- founded: "1953"
647
- }
648
- })
649
- }
650
- })
651
- };
652
- var WORKS_FOR = {
653
- fredWorksForCyberdyne: DatabaseDirectory.make({
654
- spaceKey: spaceKey.toHex(),
655
- objects: {
656
- [ObjectId.random()]: ObjectStructure.makeRelation({
657
- type: getSchemaDXN(WorksFor).toString(),
658
- source: {
659
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
660
- },
661
- target: {
662
- "/": DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
663
- },
664
- data: {
665
- since: "2020",
666
- position: "Engineer"
667
- }
668
- })
669
- }
670
- }),
671
- aliceWorksForAperture: DatabaseDirectory.make({
672
- spaceKey: spaceKey.toHex(),
673
- objects: {
674
- [ObjectId.random()]: ObjectStructure.makeRelation({
675
- type: getSchemaDXN(WorksFor).toString(),
676
- source: {
677
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
678
- },
679
- target: {
680
- "/": DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects)[0]).toString()
681
- },
682
- data: {
683
- since: "2018",
684
- position: "Research Scientist"
685
- }
686
- })
687
- }
688
- })
689
- };
690
- var TASKS = {
691
- task1: DatabaseDirectory.make({
692
- spaceKey: spaceKey.toHex(),
693
- objects: {
694
- [ObjectId.random()]: ObjectStructure.makeObject({
695
- type: getSchemaDXN(Task).toString(),
696
- data: {
697
- title: "Complete project documentation",
698
- description: "Write comprehensive documentation for the new system",
699
- status: "in-progress",
700
- dueDate: "2023-12-31",
701
- assignee: {
702
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
703
- }
704
- }
705
- })
706
- }
707
- }),
708
- task2: DatabaseDirectory.make({
709
- spaceKey: spaceKey.toHex(),
710
- objects: {
711
- [ObjectId.random()]: ObjectStructure.makeObject({
712
- type: getSchemaDXN(Task).toString(),
713
- data: {
714
- title: "Run experiments",
715
- description: "Conduct series of experiments on the portal device",
716
- status: "pending",
717
- dueDate: "2023-11-15",
718
- assignee: {
719
- "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
720
- }
721
- }
722
- })
723
- }
724
- })
725
- };
726
577
  export {
727
578
  MemoryNetworkManagerProvider,
728
579
  TestAdapter,
729
580
  TestAgent,
730
581
  TestAgentBuilder,
731
- test_data_exports as TestData,
732
582
  TestFeedBuilder,
733
583
  TestReplicationNetwork,
734
584
  TestReplicator,
735
585
  TestReplicatorConnection,
736
- test_schema_exports as TestSchema,
737
586
  WebsocketNetworkManagerProvider,
738
587
  brokenAutomergeReplicatorFactory,
739
588
  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';\n\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(() => adapter2.receive(message));\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(() => adapter1.receive(message));\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 {\n AutomergeReplicator,\n AutomergeReplicatorConnection,\n AutomergeReplicatorContext,\n ShouldAdvertiseProps,\n ShouldSyncCollectionProps,\n} 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(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(_params: ShouldAdvertiseProps): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(_params: ShouldSyncCollectionProps): 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": "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",
6
+ "names": ["log", "schema", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "SwarmNetworkManager", "createRtcTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "_networkManagerProvider", "storage", "networkManagerProvider", "createStorage", "type", "StorageType", "RAM", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "_spaces", "feedStore", "_metadataStore", "metadataStore", "MetadataStore", "createDirectory", "_blobStore", "blobStore", "BlobStore", "_feedBuilder", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "_networkManager", "networkManager", "setPeerInfo", "peerKey", "toHex", "_spaceManager", "spaceManager", "SpaceManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "onAuthorizedConnection", "session", "addExtension", "createGossip", "createExtension", "remotePeerId", "onDelegatedInvitationStatusChange", "onMemberRolesChanged", "setControlFeed", "setDataFeed", "Context", "createSpaceProtocol", "topic", "gossip", "SpaceProtocol", "onSessionAuth", "Gossip", "localPeerId", "createPresence", "Presence", "announceInterval", "offlineTimeout", "spaceGenesis", "generator", "CredentialGenerator", "credentials", "createSpaceGenesis", "createFeedAdmission", "AdmittedFeed", "Designation", "DATA", "createEpochCredential", "credential", "controlPipeline", "writer", "write", "NetworkAdapter", "Trigger", "sleep", "invariant", "log", "TestAdapter", "createPair", "connectionStateProvider", "onMessage", "adapter1", "send", "message", "then", "adapter2", "receive", "onConnect", "_params", "isReady", "whenReady", "Promise", "resolve", "connect", "peerId", "wake", "peerCandidate", "emit", "peerMetadata", "peerDisconnected", "from", "senderId", "to", "targetId", "type", "disconnect", "undefined", "sleep", "synchronized", "LifecycleState", "Resource", "invariant", "log", "TeleportAutomergeReplicator", "TestReplicationNetwork", "_replicators", "Set", "_latency", "undefined", "options", "latency", "_close", "_ctx", "replicator", "connection", "connections", "writable", "abort", "readable", "cancel", "createReplicator", "TestReplicator", "onConnect", "_lifecycleState", "OPEN", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "add", "otherReplicator", "values", "connected", "from", "context", "peerId", "to", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "owningReplicator", "removeConnection", "peer1", "peer2", "LOG", "forward", "TransformStream", "transform", "message", "controller", "enqueue", "backwards", "TestReplicatorConnection", "_params", "connect", "disconnect", "addConnection", "delete", "bundleSyncEnabled", "shouldAdvertise", "shouldSyncCollection", "testAutomergeReplicatorFactory", "params", "AutomergeReplicator", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error"]
7
+ }