@dxos/echo-pipeline 0.8.1 → 0.8.2-main.10c050d

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 (182) hide show
  1. package/dist/lib/browser/{chunk-32WDI3LB.mjs → chunk-3XSXS5EX.mjs} +15 -21
  2. package/dist/lib/browser/chunk-3XSXS5EX.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-CGS2ULMK.mjs +11 -0
  4. package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-TQJTKNMS.mjs +126 -0
  6. package/dist/lib/browser/chunk-TQJTKNMS.mjs.map +7 -0
  7. package/dist/lib/browser/filter/index.mjs +11 -0
  8. package/dist/lib/browser/filter/index.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +1380 -516
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/testing/index.mjs +202 -22
  13. package/dist/lib/browser/testing/index.mjs.map +4 -4
  14. package/dist/lib/node/chunk-HOPOFWAL.cjs +147 -0
  15. package/dist/lib/node/chunk-HOPOFWAL.cjs.map +7 -0
  16. package/dist/lib/node/chunk-Q7SFCCGT.cjs +33 -0
  17. package/dist/lib/node/chunk-Q7SFCCGT.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-TC2PRBEU.cjs → chunk-SG2PL5RH.cjs} +18 -24
  19. package/dist/lib/node/chunk-SG2PL5RH.cjs.map +7 -0
  20. package/dist/lib/node/filter/index.cjs +32 -0
  21. package/dist/lib/node/filter/index.cjs.map +7 -0
  22. package/dist/lib/node/index.cjs +1381 -525
  23. package/dist/lib/node/index.cjs.map +4 -4
  24. package/dist/lib/node/meta.json +1 -1
  25. package/dist/lib/node/testing/index.cjs +207 -31
  26. package/dist/lib/node/testing/index.cjs.map +4 -4
  27. package/dist/lib/node-esm/{chunk-UKOLB3LW.mjs → chunk-3BZP75TJ.mjs} +15 -21
  28. package/dist/lib/node-esm/chunk-3BZP75TJ.mjs.map +7 -0
  29. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  30. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-RVK35BS7.mjs +126 -0
  32. package/dist/lib/node-esm/chunk-RVK35BS7.mjs.map +7 -0
  33. package/dist/lib/node-esm/filter/index.mjs +11 -0
  34. package/dist/lib/node-esm/filter/index.mjs.map +7 -0
  35. package/dist/lib/node-esm/index.mjs +1380 -516
  36. package/dist/lib/node-esm/index.mjs.map +4 -4
  37. package/dist/lib/node-esm/meta.json +1 -1
  38. package/dist/lib/node-esm/testing/index.mjs +202 -22
  39. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  40. package/dist/types/src/automerge/automerge-host.d.ts +6 -4
  41. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  42. package/dist/types/src/automerge/collection-synchronizer.d.ts +1 -1
  43. package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
  44. package/dist/types/src/automerge/echo-data-monitor.d.ts +6 -6
  45. package/dist/types/src/automerge/echo-data-monitor.d.ts.map +1 -1
  46. package/dist/types/src/automerge/echo-network-adapter.d.ts +4 -1
  47. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  48. package/dist/types/src/automerge/heads-store.d.ts +2 -2
  49. package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
  50. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +1 -1
  51. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
  52. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
  53. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
  54. package/dist/types/src/automerge/network-protocol.d.ts +1 -1
  55. package/dist/types/src/automerge/network-protocol.d.ts.map +1 -1
  56. package/dist/types/src/automerge/space-collection.d.ts +1 -1
  57. package/dist/types/src/automerge/space-collection.d.ts.map +1 -1
  58. package/dist/types/src/common/feeds.d.ts.map +1 -1
  59. package/dist/types/src/common/space-id.d.ts.map +1 -1
  60. package/dist/types/src/db-host/automerge-metrics.d.ts +1 -1
  61. package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -1
  62. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  63. package/dist/types/src/db-host/database-root.d.ts +7 -7
  64. package/dist/types/src/db-host/database-root.d.ts.map +1 -1
  65. package/dist/types/src/db-host/documents-iterator.d.ts +1 -1
  66. package/dist/types/src/db-host/documents-iterator.d.ts.map +1 -1
  67. package/dist/types/src/db-host/documents-synchronizer.d.ts +4 -4
  68. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
  69. package/dist/types/src/db-host/echo-host.d.ts +13 -2
  70. package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
  71. package/dist/types/src/db-host/index.d.ts +0 -1
  72. package/dist/types/src/db-host/index.d.ts.map +1 -1
  73. package/dist/types/src/db-host/query-service.d.ts +2 -0
  74. package/dist/types/src/db-host/query-service.d.ts.map +1 -1
  75. package/dist/types/src/db-host/space-state-manager.d.ts +4 -3
  76. package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
  77. package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
  78. package/dist/types/src/edge/inflight-request-limiter.d.ts.map +1 -1
  79. package/dist/types/src/filter/filter-match.d.ts +13 -0
  80. package/dist/types/src/filter/filter-match.d.ts.map +1 -0
  81. package/dist/types/src/filter/filter-match.test.d.ts +2 -0
  82. package/dist/types/src/filter/filter-match.test.d.ts.map +1 -0
  83. package/dist/types/src/filter/index.d.ts +2 -0
  84. package/dist/types/src/filter/index.d.ts.map +1 -0
  85. package/dist/types/src/index.d.ts +1 -0
  86. package/dist/types/src/index.d.ts.map +1 -1
  87. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  88. package/dist/types/src/pipeline/message-selector.d.ts.map +1 -1
  89. package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
  90. package/dist/types/src/pipeline/timeframe-clock.d.ts.map +1 -1
  91. package/dist/types/src/query/errors.d.ts +23 -0
  92. package/dist/types/src/query/errors.d.ts.map +1 -0
  93. package/dist/types/src/query/index.d.ts +5 -0
  94. package/dist/types/src/query/index.d.ts.map +1 -0
  95. package/dist/types/src/query/plan.d.ts +132 -0
  96. package/dist/types/src/query/plan.d.ts.map +1 -0
  97. package/dist/types/src/query/query-executor.d.ts +83 -0
  98. package/dist/types/src/query/query-executor.d.ts.map +1 -0
  99. package/dist/types/src/query/query-planner.d.ts +33 -0
  100. package/dist/types/src/query/query-planner.d.ts.map +1 -0
  101. package/dist/types/src/query/query-planner.test.d.ts +2 -0
  102. package/dist/types/src/query/query-planner.test.d.ts.map +1 -0
  103. package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
  104. package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
  105. package/dist/types/src/space/space-manager.d.ts.map +1 -1
  106. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  107. package/dist/types/src/space/space.d.ts.map +1 -1
  108. package/dist/types/src/testing/change-metadata.d.ts.map +1 -1
  109. package/dist/types/src/testing/index.d.ts +2 -0
  110. package/dist/types/src/testing/index.d.ts.map +1 -1
  111. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  112. package/dist/types/src/testing/test-data.d.ts +18 -0
  113. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  114. package/dist/types/src/testing/test-network-adapter.d.ts +3 -2
  115. package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
  116. package/dist/types/src/testing/test-schema.d.ts +39 -0
  117. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  118. package/dist/types/src/util.d.ts +2 -2
  119. package/dist/types/src/util.d.ts.map +1 -1
  120. package/dist/types/tsconfig.tsbuildinfo +1 -1
  121. package/package.json +43 -34
  122. package/src/automerge/automerge-host.test.ts +7 -7
  123. package/src/automerge/automerge-host.ts +58 -60
  124. package/src/automerge/automerge-repo.test.ts +65 -65
  125. package/src/automerge/collection-synchronizer.test.ts +1 -1
  126. package/src/automerge/collection-synchronizer.ts +11 -10
  127. package/src/automerge/echo-data-monitor.ts +21 -20
  128. package/src/automerge/echo-network-adapter.test.ts +1 -1
  129. package/src/automerge/echo-network-adapter.ts +25 -18
  130. package/src/automerge/heads-store.ts +4 -3
  131. package/src/automerge/leveldb-storage-adapter.ts +1 -1
  132. package/src/automerge/mesh-echo-replicator-connection.ts +6 -5
  133. package/src/automerge/mesh-echo-replicator.ts +2 -2
  134. package/src/automerge/network-protocol.ts +2 -1
  135. package/src/automerge/space-collection.ts +2 -1
  136. package/src/db-host/automerge-metrics.ts +2 -1
  137. package/src/db-host/data-service.ts +4 -3
  138. package/src/db-host/database-root.ts +17 -22
  139. package/src/db-host/documents-iterator.ts +9 -8
  140. package/src/db-host/documents-synchronizer.test.ts +2 -2
  141. package/src/db-host/documents-synchronizer.ts +20 -18
  142. package/src/db-host/echo-host.ts +44 -15
  143. package/src/db-host/index.ts +0 -1
  144. package/src/db-host/query-service.ts +43 -37
  145. package/src/db-host/space-state-manager.ts +14 -4
  146. package/src/edge/echo-edge-replicator.test.ts +3 -3
  147. package/src/edge/echo-edge-replicator.ts +9 -8
  148. package/src/edge/inflight-request-limiter.ts +4 -4
  149. package/src/filter/filter-match.test.ts +101 -0
  150. package/src/filter/filter-match.ts +174 -0
  151. package/src/filter/index.ts +5 -0
  152. package/src/index.ts +1 -0
  153. package/src/metadata/metadata-store.ts +13 -13
  154. package/src/pipeline/pipeline-stress.test.ts +9 -9
  155. package/src/pipeline/pipeline.ts +13 -13
  156. package/src/pipeline/timeframe-clock.ts +5 -5
  157. package/src/query/errors.ts +7 -0
  158. package/src/query/index.ts +8 -0
  159. package/src/query/plan.ts +179 -0
  160. package/src/query/query-executor.ts +648 -0
  161. package/src/query/query-planner.test.ts +613 -0
  162. package/src/query/query-planner.ts +470 -0
  163. package/src/space/admission-discovery-extension.ts +2 -2
  164. package/src/space/control-pipeline.ts +8 -8
  165. package/src/space/space-manager.ts +5 -4
  166. package/src/space/space-protocol.browser.test.ts +1 -0
  167. package/src/space/space-protocol.test.ts +1 -0
  168. package/src/space/space-protocol.ts +4 -4
  169. package/src/space/space.ts +5 -5
  170. package/src/testing/index.ts +2 -0
  171. package/src/testing/test-agent-builder.ts +6 -6
  172. package/src/testing/test-data.ts +127 -0
  173. package/src/testing/test-network-adapter.ts +15 -12
  174. package/src/testing/test-replicator.ts +2 -2
  175. package/src/testing/test-schema.ts +53 -0
  176. package/src/util.ts +7 -3
  177. package/dist/lib/browser/chunk-32WDI3LB.mjs.map +0 -7
  178. package/dist/lib/node/chunk-TC2PRBEU.cjs.map +0 -7
  179. package/dist/lib/node-esm/chunk-UKOLB3LW.mjs.map +0 -7
  180. package/dist/types/src/db-host/query-state.d.ts +0 -41
  181. package/dist/types/src/db-host/query-state.d.ts.map +0 -1
  182. package/src/db-host/query-state.ts +0 -217
@@ -22,17 +22,20 @@ __export(testing_exports, {
22
22
  TestAdapter: () => TestAdapter,
23
23
  TestAgent: () => TestAgent,
24
24
  TestAgentBuilder: () => TestAgentBuilder,
25
+ TestData: () => test_data_exports,
25
26
  TestFeedBuilder: () => TestFeedBuilder,
26
27
  TestReplicationNetwork: () => TestReplicationNetwork,
27
28
  TestReplicator: () => TestReplicator,
28
29
  TestReplicatorConnection: () => TestReplicatorConnection,
30
+ TestSchema: () => test_schema_exports,
29
31
  WebsocketNetworkManagerProvider: () => WebsocketNetworkManagerProvider,
30
32
  brokenAutomergeReplicatorFactory: () => brokenAutomergeReplicatorFactory,
31
33
  changeStorageVersionInMetadata: () => changeStorageVersionInMetadata,
32
34
  testAutomergeReplicatorFactory: () => testAutomergeReplicatorFactory
33
35
  });
34
36
  module.exports = __toCommonJS(testing_exports);
35
- var import_chunk_TC2PRBEU = require("../chunk-TC2PRBEU.cjs");
37
+ var import_chunk_SG2PL5RH = require("../chunk-SG2PL5RH.cjs");
38
+ var import_chunk_Q7SFCCGT = require("../chunk-Q7SFCCGT.cjs");
36
39
  var import_log = require("@dxos/log");
37
40
  var import_proto = require("@dxos/protocols/proto");
38
41
  var import_context = require("@dxos/context");
@@ -46,8 +49,8 @@ var import_teleport_extension_gossip = require("@dxos/teleport-extension-gossip"
46
49
  var import_teleport_extension_object_sync = require("@dxos/teleport-extension-object-sync");
47
50
  var import_util = require("@dxos/util");
48
51
  var import_testing = require("@dxos/feed-store/testing");
52
+ var import_automerge_repo = require("@automerge/automerge-repo");
49
53
  var import_async = require("@dxos/async");
50
- var import_automerge_repo = require("@dxos/automerge/automerge-repo");
51
54
  var import_invariant = require("@dxos/invariant");
52
55
  var import_log2 = require("@dxos/log");
53
56
  var import_async2 = require("@dxos/async");
@@ -55,6 +58,11 @@ var import_context2 = require("@dxos/context");
55
58
  var import_invariant2 = require("@dxos/invariant");
56
59
  var import_log3 = require("@dxos/log");
57
60
  var import_teleport_extension_automerge_replicator = require("@dxos/teleport-extension-automerge-replicator");
61
+ var import_effect = require("effect");
62
+ var import_echo = require("@dxos/echo");
63
+ var import_echo_protocol = require("@dxos/echo-protocol");
64
+ var import_echo_schema = require("@dxos/echo-schema");
65
+ var import_keys2 = require("@dxos/keys");
58
66
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
59
67
  var EchoMetadata = import_proto.schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
60
68
  var changeStorageVersionInMetadata = async (storage, version) => {
@@ -64,7 +72,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
64
72
  S: void 0,
65
73
  C: (f, a) => f(...a)
66
74
  });
67
- const metadata = new import_chunk_TC2PRBEU.MetadataStore(storage.createDirectory("metadata"));
75
+ const metadata = new import_chunk_SG2PL5RH.MetadataStore(storage.createDirectory("metadata"));
68
76
  await metadata.load();
69
77
  const echoMetadata = metadata.metadata;
70
78
  echoMetadata.version = version;
@@ -75,7 +83,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
75
83
  var TestFeedBuilder = class extends import_testing.TestBuilder {
76
84
  constructor() {
77
85
  super({
78
- valueEncoding: import_chunk_TC2PRBEU.valueEncoding
86
+ valueEncoding: import_chunk_SG2PL5RH.valueEncoding
79
87
  });
80
88
  }
81
89
  };
@@ -120,7 +128,7 @@ var TestAgentBuilder = class {
120
128
  };
121
129
  var TestAgent = class {
122
130
  get metadataStore() {
123
- return this._metadataStore ??= new import_chunk_TC2PRBEU.MetadataStore(this.storage.createDirectory("metadata"));
131
+ return this._metadataStore ??= new import_chunk_SG2PL5RH.MetadataStore(this.storage.createDirectory("metadata"));
124
132
  }
125
133
  get blobStore() {
126
134
  return this._blobStore ??= new import_teleport_extension_object_sync.BlobStore(this.storage.createDirectory("blobs"));
@@ -143,8 +151,8 @@ var TestAgent = class {
143
151
  get spaces() {
144
152
  return Array.from(this._spaces.values());
145
153
  }
146
- getSpace(spaceKey) {
147
- return this._spaces.get(spaceKey);
154
+ getSpace(spaceKey2) {
155
+ return this._spaces.get(spaceKey2);
148
156
  }
149
157
  get networkManager() {
150
158
  if (this._networkManager) {
@@ -158,17 +166,17 @@ var TestAgent = class {
158
166
  return this._networkManager;
159
167
  }
160
168
  get spaceManager() {
161
- return this._spaceManager ??= new import_chunk_TC2PRBEU.SpaceManager({
169
+ return this._spaceManager ??= new import_chunk_SG2PL5RH.SpaceManager({
162
170
  feedStore: this.feedStore,
163
171
  networkManager: this.networkManager,
164
172
  metadataStore: this.metadataStore,
165
173
  blobStore: this.blobStore
166
174
  });
167
175
  }
168
- async createSpace(identityKey = this.identityKey, spaceKey, genesisKey, dataKey, saveMetadata = false) {
169
- if (!spaceKey) {
176
+ async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
177
+ if (!spaceKey2) {
170
178
  saveMetadata = true;
171
- spaceKey = await this.keyring.createKey();
179
+ spaceKey2 = await this.keyring.createKey();
172
180
  }
173
181
  if (!genesisKey) {
174
182
  genesisKey = await this.keyring.createKey();
@@ -181,7 +189,7 @@ var TestAgent = class {
181
189
  sparse: true
182
190
  });
183
191
  const metadata = {
184
- key: spaceKey,
192
+ key: spaceKey2,
185
193
  genesisFeedKey: genesisKey,
186
194
  controlFeedKey: controlFeed.key,
187
195
  dataFeedKey: dataFeed.key
@@ -195,8 +203,8 @@ var TestAgent = class {
195
203
  swarmIdentity: {
196
204
  identityKey: this.identityKey,
197
205
  peerKey: this.deviceKey,
198
- credentialProvider: import_chunk_TC2PRBEU.MOCK_AUTH_PROVIDER,
199
- credentialAuthenticator: import_chunk_TC2PRBEU.MOCK_AUTH_VERIFIER
206
+ credentialProvider: import_chunk_SG2PL5RH.MOCK_AUTH_PROVIDER,
207
+ credentialAuthenticator: import_chunk_SG2PL5RH.MOCK_AUTH_VERIFIER
200
208
  },
201
209
  memberKey: identityKey,
202
210
  onAuthorizedConnection: (session) => {
@@ -215,17 +223,17 @@ var TestAgent = class {
215
223
  F: __dxlog_file2,
216
224
  L: 205
217
225
  }));
218
- this._spaces.set(spaceKey, space);
226
+ this._spaces.set(spaceKey2, space);
219
227
  return space;
220
228
  }
221
229
  createSpaceProtocol(topic, gossip) {
222
- return new import_chunk_TC2PRBEU.SpaceProtocol({
230
+ return new import_chunk_SG2PL5RH.SpaceProtocol({
223
231
  topic,
224
232
  swarmIdentity: {
225
233
  identityKey: this.identityKey,
226
234
  peerKey: this.deviceKey,
227
- credentialProvider: import_chunk_TC2PRBEU.MOCK_AUTH_PROVIDER,
228
- credentialAuthenticator: import_chunk_TC2PRBEU.MOCK_AUTH_VERIFIER
235
+ credentialProvider: import_chunk_SG2PL5RH.MOCK_AUTH_PROVIDER,
236
+ credentialAuthenticator: import_chunk_SG2PL5RH.MOCK_AUTH_VERIFIER
229
237
  },
230
238
  networkManager: this.networkManager,
231
239
  blobStore: this.blobStore,
@@ -280,16 +288,13 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
280
288
  ];
281
289
  }
282
290
  constructor(_params) {
283
- super();
284
- this._params = _params;
285
- this.onConnect = new import_async.Trigger();
291
+ super(), this._params = _params, this.onConnect = new import_async.Trigger();
286
292
  }
287
- // NOTE: Emitting `ready` event in NetworkAdapter`s constructor causes a race condition
288
- // because `Repo` waits for `ready` event (which it never receives) before it starts using the adapter.
289
- ready() {
290
- this.emit("ready", {
291
- network: this
292
- });
293
+ isReady() {
294
+ return true;
295
+ }
296
+ whenReady() {
297
+ return Promise.resolve();
293
298
  }
294
299
  connect(peerId) {
295
300
  this.peerId = peerId;
@@ -298,7 +303,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
298
303
  peerCandidate(peerId) {
299
304
  (0, import_invariant.invariant)(peerId, "PeerId is required", {
300
305
  F: __dxlog_file3,
301
- L: 42,
306
+ L: 45,
302
307
  S: this,
303
308
  A: [
304
309
  "peerId",
@@ -313,7 +318,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
313
318
  peerDisconnected(peerId) {
314
319
  (0, import_invariant.invariant)(peerId, "PeerId is required", {
315
320
  F: __dxlog_file3,
316
- L: 47,
321
+ L: 50,
317
322
  S: this,
318
323
  A: [
319
324
  "peerId",
@@ -331,7 +336,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
331
336
  type: message.type
332
337
  }, {
333
338
  F: __dxlog_file3,
334
- L: 52,
339
+ L: 55,
335
340
  S: this,
336
341
  C: (f, a) => f(...a)
337
342
  });
@@ -343,7 +348,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
343
348
  receive(message) {
344
349
  (0, import_invariant.invariant)(this.peerId, "Peer id is not set", {
345
350
  F: __dxlog_file3,
346
- L: 61,
351
+ L: 64,
347
352
  S: this,
348
353
  A: [
349
354
  "this.peerId",
@@ -559,16 +564,187 @@ var brokenAutomergeReplicatorFactory = (params) => {
559
564
  };
560
565
  return testAutomergeReplicatorFactory(params);
561
566
  };
567
+ var test_schema_exports = {};
568
+ (0, import_chunk_Q7SFCCGT.__export)(test_schema_exports, {
569
+ Organization: () => Organization,
570
+ Person: () => Person,
571
+ Task: () => Task,
572
+ WorksFor: () => WorksFor
573
+ });
574
+ var Person = import_effect.Schema.Struct({
575
+ name: import_effect.Schema.String,
576
+ email: import_effect.Schema.optional(import_effect.Schema.String),
577
+ age: import_effect.Schema.optional(import_effect.Schema.Number)
578
+ }).pipe(import_echo.Type.Obj({
579
+ typename: "dxos.org/type/Person",
580
+ version: "0.1.0"
581
+ }));
582
+ var Organization = import_effect.Schema.Struct({
583
+ name: import_effect.Schema.String
584
+ }).pipe(import_echo.Type.Obj({
585
+ typename: "dxos.org/type/Organization",
586
+ version: "0.1.0"
587
+ }));
588
+ var WorksFor = import_effect.Schema.Struct({
589
+ since: import_effect.Schema.String
590
+ }).pipe(import_echo.Type.Relation({
591
+ typename: "dxos.org/type/WorksFor",
592
+ version: "0.1.0",
593
+ source: Person,
594
+ target: Organization
595
+ }));
596
+ var Task = import_effect.Schema.Struct({
597
+ title: import_effect.Schema.String,
598
+ createdAt: import_effect.Schema.String,
599
+ assignee: import_echo.Type.Ref(Person)
600
+ }).pipe(import_echo.Type.Obj({
601
+ typename: "dxos.org/type/Task",
602
+ version: "0.1.0"
603
+ }));
604
+ var test_data_exports = {};
605
+ (0, import_chunk_Q7SFCCGT.__export)(test_data_exports, {
606
+ ORGS: () => ORGS,
607
+ PEOPLE: () => PEOPLE,
608
+ TASKS: () => TASKS,
609
+ WORKS_FOR: () => WORKS_FOR
610
+ });
611
+ var spaceKey = import_keys2.PublicKey.random();
612
+ var PEOPLE = {
613
+ fred: import_echo_protocol.DatabaseDirectory.make({
614
+ spaceKey: spaceKey.toHex(),
615
+ objects: {
616
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
617
+ type: (0, import_echo_schema.getSchemaDXN)(Person).toString(),
618
+ data: {
619
+ name: "Fred"
620
+ }
621
+ })
622
+ }
623
+ }),
624
+ alice: import_echo_protocol.DatabaseDirectory.make({
625
+ spaceKey: spaceKey.toHex(),
626
+ objects: {
627
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
628
+ type: (0, import_echo_schema.getSchemaDXN)(Person).toString(),
629
+ data: {
630
+ name: "Alice"
631
+ }
632
+ })
633
+ }
634
+ })
635
+ };
636
+ var ORGS = {
637
+ cyberdyne: import_echo_protocol.DatabaseDirectory.make({
638
+ spaceKey: spaceKey.toHex(),
639
+ objects: {
640
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
641
+ type: (0, import_echo_schema.getSchemaDXN)(Organization).toString(),
642
+ data: {
643
+ name: "Cyberdyne Systems",
644
+ founded: "1984"
645
+ }
646
+ })
647
+ }
648
+ }),
649
+ aperture: import_echo_protocol.DatabaseDirectory.make({
650
+ spaceKey: spaceKey.toHex(),
651
+ objects: {
652
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
653
+ type: (0, import_echo_schema.getSchemaDXN)(Organization).toString(),
654
+ data: {
655
+ name: "Aperture Science",
656
+ founded: "1953"
657
+ }
658
+ })
659
+ }
660
+ })
661
+ };
662
+ var WORKS_FOR = {
663
+ fredWorksForCyberdyne: import_echo_protocol.DatabaseDirectory.make({
664
+ spaceKey: spaceKey.toHex(),
665
+ objects: {
666
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeRelation({
667
+ type: (0, import_echo_schema.getSchemaDXN)(WorksFor).toString(),
668
+ source: {
669
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
670
+ },
671
+ target: {
672
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
673
+ },
674
+ data: {
675
+ since: "2020",
676
+ position: "Engineer"
677
+ }
678
+ })
679
+ }
680
+ }),
681
+ aliceWorksForAperture: import_echo_protocol.DatabaseDirectory.make({
682
+ spaceKey: spaceKey.toHex(),
683
+ objects: {
684
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeRelation({
685
+ type: (0, import_echo_schema.getSchemaDXN)(WorksFor).toString(),
686
+ source: {
687
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
688
+ },
689
+ target: {
690
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects)[0]).toString()
691
+ },
692
+ data: {
693
+ since: "2018",
694
+ position: "Research Scientist"
695
+ }
696
+ })
697
+ }
698
+ })
699
+ };
700
+ var TASKS = {
701
+ task1: import_echo_protocol.DatabaseDirectory.make({
702
+ spaceKey: spaceKey.toHex(),
703
+ objects: {
704
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
705
+ type: (0, import_echo_schema.getSchemaDXN)(Task).toString(),
706
+ data: {
707
+ title: "Complete project documentation",
708
+ description: "Write comprehensive documentation for the new system",
709
+ status: "in-progress",
710
+ dueDate: "2023-12-31",
711
+ assignee: {
712
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
713
+ }
714
+ }
715
+ })
716
+ }
717
+ }),
718
+ task2: import_echo_protocol.DatabaseDirectory.make({
719
+ spaceKey: spaceKey.toHex(),
720
+ objects: {
721
+ [import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
722
+ type: (0, import_echo_schema.getSchemaDXN)(Task).toString(),
723
+ data: {
724
+ title: "Run experiments",
725
+ description: "Conduct series of experiments on the portal device",
726
+ status: "pending",
727
+ dueDate: "2023-11-15",
728
+ assignee: {
729
+ "/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
730
+ }
731
+ }
732
+ })
733
+ }
734
+ })
735
+ };
562
736
  // Annotate the CommonJS export names for ESM import in node:
563
737
  0 && (module.exports = {
564
738
  MemoryNetworkManagerProvider,
565
739
  TestAdapter,
566
740
  TestAgent,
567
741
  TestAgentBuilder,
742
+ TestData,
568
743
  TestFeedBuilder,
569
744
  TestReplicationNetwork,
570
745
  TestReplicator,
571
746
  TestReplicatorConnection,
747
+ TestSchema,
572
748
  WebsocketNetworkManagerProvider,
573
749
  brokenAutomergeReplicatorFactory,
574
750
  changeStorageVersionInMetadata,
@@ -1,7 +1,7 @@
1
1
  {
2
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.info('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 { StorageType, createStorage, type Storage } 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 { TestFeedBuilder } from './test-feed-builder';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } from '../space';\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) {\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) {\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) {\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() {\n return new Gossip({\n localPeerId: this.deviceKey,\n });\n }\n\n createPresence(gossip?: Gossip) {\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) {\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 { Trigger, sleep } from '@dxos/async';\nimport { type Message, NetworkAdapter, type PeerId } from '@dxos/automerge/automerge-repo';\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(connectionStateProvider: TestConnectionStateProvider = () => 'on') {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter2.receive(message)),\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter1.receive(message)),\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 // NOTE: Emitting `ready` event in NetworkAdapter`s constructor causes a race condition\n // because `Repo` waits for `ready` event (which it never receives) before it starts using the adapter.\n ready() {\n this.emit('ready', { network: this });\n }\n\n override connect(peerId: PeerId) {\n this.peerId = peerId;\n this.onConnect.wake();\n }\n\n peerCandidate(peerId: PeerId) {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-candidate', { peerId, peerMetadata: {} });\n }\n\n peerDisconnected(peerId: PeerId) {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-disconnected', { peerId });\n }\n\n override send(message: Message) {\n log('send', { from: message.senderId, to: message.targetId, type: message.type });\n this._params.send(message);\n }\n\n override disconnect() {\n this.peerId = undefined;\n }\n\n receive(message: Message) {\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 { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';\n\nimport type {\n EchoReplicator,\n EchoReplicatorContext,\n ReplicatorConnection,\n ShouldAdvertiseParams,\n ShouldSyncCollectionParams,\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) {\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) {\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.info('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.info('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 TestReplicatorParams = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements EchoReplicator {\n constructor(private readonly _params: TestReplicatorParams) {}\n\n public connected = false;\n public context: EchoReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(context: EchoReplicatorContext): 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 ReplicatorConnection {\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 async shouldAdvertise(params: ShouldAdvertiseParams): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(params: ShouldSyncCollectionParams): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {\n return new 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: AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n return testAutomergeReplicatorFactory(params);\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_credentials", "import_log", "import_async", "import_context", "import_invariant", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "networkManager", "_networkManager", "setPeerInfo", "peerKey", "toHex", "spaceManager", "_spaceManager", "SpaceManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "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", "TestAdapter", "NetworkAdapter", "createPair", "connectionStateProvider", "adapter1", "send", "message", "sleep", "then", "adapter2", "receive", "_params", "onConnect", "Trigger", "ready", "emit", "network", "connect", "peerId", "wake", "peerCandidate", "invariant", "peerMetadata", "peerDisconnected", "senderId", "to", "targetId", "disconnect", "undefined", "TestReplicationNetwork", "Resource", "options", "_replicators", "Set", "_latency", "latency", "_close", "ctx", "replicator", "connection", "connections", "abort", "readable", "cancel", "createReplicator", "TestReplicator", "_lifecycleState", "LifecycleState", "OPEN", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "add", "otherReplicator", "connected", "context", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "owningReplicator", "removeConnection", "peer1", "peer2", "LOG", "forward", "TransformStream", "transform", "controller", "enqueue", "backwards", "TestReplicatorConnection", "synchronized", "addConnection", "delete", "shouldAdvertise", "params", "shouldSyncCollection", "testAutomergeReplicatorFactory", "AutomergeReplicator", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error"]
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", "../../../../src/testing/test-schema.ts", "../../../../src/testing/test-data.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.info('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 { StorageType, createStorage, type Storage } 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 { TestFeedBuilder } from './test-feed-builder';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } from '../space';\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(connectionStateProvider: TestConnectionStateProvider = () => 'on'): TestAdapter[] {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter2.receive(message)),\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter1.receive(message)),\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 { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';\n\nimport type {\n EchoReplicator,\n EchoReplicatorContext,\n ReplicatorConnection,\n ShouldAdvertiseParams,\n ShouldSyncCollectionParams,\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.info('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.info('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 TestReplicatorParams = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements EchoReplicator {\n constructor(private readonly _params: TestReplicatorParams) {}\n\n public connected = false;\n public context: EchoReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(context: EchoReplicatorContext): 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 ReplicatorConnection {\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 async shouldAdvertise(params: ShouldAdvertiseParams): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(params: ShouldSyncCollectionParams): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {\n return new 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: AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n return testAutomergeReplicatorFactory(params);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\n//\n// Example schema\n//\n\n// TODO(dmaretskyi): Need common set of test types.\nexport const Person = Schema.Struct({\n name: Schema.String,\n email: Schema.optional(Schema.String),\n age: Schema.optional(Schema.Number),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Person',\n version: '0.1.0',\n }),\n);\nexport interface Person extends Schema.Schema.Type<typeof Person> {}\n\nexport const Organization = Schema.Struct({\n name: Schema.String,\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Organization',\n version: '0.1.0',\n }),\n);\nexport interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\nexport const WorksFor = Schema.Struct({\n since: Schema.String,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/type/WorksFor',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n);\nexport interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n\nexport const Task = Schema.Struct({\n title: Schema.String,\n createdAt: Schema.String,\n assignee: Type.Ref(Person),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Task', version: '0.1.0' }));\nexport interface Task extends Schema.Schema.Type<typeof Task> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { getSchemaDXN } from '@dxos/echo-schema';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport * as TestSchema from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\nexport const PEOPLE = {\n fred: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Fred',\n },\n }),\n },\n }),\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n aperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Aperture Science',\n founded: '1953',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_credentials", "import_log", "import_async", "import_context", "import_invariant", "import_keys", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "TestFeedBuilder", "TestBuilder", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "networkManager", "_networkManager", "setPeerInfo", "peerKey", "toHex", "spaceManager", "_spaceManager", "SpaceManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "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", "TestAdapter", "NetworkAdapter", "createPair", "connectionStateProvider", "adapter1", "send", "message", "sleep", "then", "adapter2", "receive", "_params", "onConnect", "Trigger", "isReady", "whenReady", "resolve", "connect", "peerId", "wake", "peerCandidate", "invariant", "emit", "peerMetadata", "peerDisconnected", "senderId", "to", "targetId", "disconnect", "undefined", "TestReplicationNetwork", "Resource", "options", "_replicators", "Set", "_latency", "latency", "_close", "ctx", "replicator", "connection", "connections", "abort", "readable", "cancel", "createReplicator", "TestReplicator", "_lifecycleState", "LifecycleState", "OPEN", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "add", "otherReplicator", "connected", "context", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "owningReplicator", "removeConnection", "peer1", "peer2", "LOG", "forward", "TransformStream", "transform", "controller", "enqueue", "backwards", "TestReplicatorConnection", "addConnection", "delete", "shouldAdvertise", "params", "shouldSyncCollection", "testAutomergeReplicatorFactory", "AutomergeReplicator", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error", "Person", "Schema", "Struct", "name", "String", "email", "optional", "age", "Number", "pipe", "Type", "Obj", "typename", "Organization", "WorksFor", "since", "Relation", "source", "target", "Task", "title", "createdAt", "assignee", "Ref", "random", "PEOPLE", "fred", "DatabaseDirectory", "make", "objects", "ObjectId", "ObjectStructure", "makeObject", "getSchemaDXN", "toString", "data", "alice", "ORGS", "cyberdyne", "founded", "aperture", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "DXN", "fromLocalObjectId", "Object", "keys", "position", "aliceWorksForAperture", "TASKS", "task1", "description", "status", "dueDate", "task2"]
7
7
  }