@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
@@ -2,14 +2,14 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { describe, expect, test, onTestFinished } from 'vitest';
5
+ import { describe, expect, onTestFinished, test } from 'vitest';
6
6
 
7
7
  import { Keyring } from '@dxos/keyring';
8
8
  import { PublicKey } from '@dxos/keys';
9
9
  import { createStorage } from '@dxos/random-access-storage';
10
10
  import { Timeframe } from '@dxos/timeframe';
11
11
 
12
- import { TestFeedBuilder, TestAgentBuilder, WebsocketNetworkManagerProvider } from '../testing';
12
+ import { TestAgentBuilder, TestFeedBuilder, WebsocketNetworkManagerProvider } from '../testing';
13
13
 
14
14
  // TODO(burdon): Config.
15
15
  // Signal server will be started by the setup script.
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { describe, expect, test, onTestFinished } from 'vitest';
5
+ import { describe, expect, onTestFinished, test } from 'vitest';
6
6
 
7
7
  import { PublicKey } from '@dxos/keys';
8
8
  import { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';
@@ -11,9 +11,10 @@ import { StorageType, createStorage } from '@dxos/random-access-storage';
11
11
  import { BlobStore } from '@dxos/teleport-extension-object-sync';
12
12
  import { Timeframe } from '@dxos/timeframe';
13
13
 
14
- import { AuthStatus, MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceProtocol } from './space-protocol';
15
14
  import { TestAgentBuilder, TestFeedBuilder } from '../testing';
16
15
 
16
+ import { AuthStatus, MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceProtocol } from './space-protocol';
17
+
17
18
  describe('space/space-protocol', () => {
18
19
  // Flaky.
19
20
  test('two peers discover each other via presence', async () => {
@@ -9,10 +9,10 @@ import { PublicKey } from '@dxos/keys';
9
9
  import { log, logInfo } from '@dxos/log';
10
10
  import {
11
11
  MMSTTopology,
12
- type SwarmNetworkManager,
13
12
  type SwarmConnection,
13
+ type SwarmNetworkManager,
14
14
  type WireProtocol,
15
- type WireProtocolParams,
15
+ type WireProtocolProps,
16
16
  type WireProtocolProvider,
17
17
  } from '@dxos/network-manager';
18
18
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
@@ -20,7 +20,7 @@ import { type MuxerStats, Teleport } from '@dxos/teleport';
20
20
  import { type BlobStore, BlobSync } from '@dxos/teleport-extension-object-sync';
21
21
  import { ReplicatorExtension } from '@dxos/teleport-extension-replicator';
22
22
  import { trace } from '@dxos/tracing';
23
- import { CallbackCollection, ComplexMap, type AsyncCallback } from '@dxos/util';
23
+ import { type AsyncCallback, CallbackCollection, ComplexMap } from '@dxos/util';
24
24
 
25
25
  import { AuthExtension, type AuthProvider, type AuthVerifier } from './auth';
26
26
 
@@ -118,7 +118,10 @@ export class SpaceProtocol {
118
118
  this.blobSync = new BlobSync({ blobStore });
119
119
 
120
120
  // TODO(burdon): Async race condition? Move to start?
121
- this._topic = subtleCrypto.digest('SHA-256', topic.asBuffer()).then(discoveryKey).then(PublicKey.from);
121
+ this._topic = subtleCrypto
122
+ .digest('SHA-256', topic.asBuffer() as ArrayBufferView<ArrayBuffer>)
123
+ .then(discoveryKey)
124
+ .then(PublicKey.from);
122
125
 
123
126
  this._disableP2pReplication = disableP2pReplication ?? false;
124
127
  }
@@ -173,16 +176,16 @@ export class SpaceProtocol {
173
176
  }
174
177
 
175
178
  private _createProtocolProvider(credentials: Uint8Array | undefined): WireProtocolProvider {
176
- return (wireParams) => {
179
+ return (wireProps) => {
177
180
  const session = new SpaceProtocolSession({
178
- wireParams,
181
+ wireProps,
179
182
  swarmIdentity: this._swarmIdentity,
180
183
  onSessionAuth: this._onSessionAuth,
181
184
  onAuthFailure: this._onAuthFailure,
182
185
  blobSync: this.blobSync,
183
186
  disableP2pReplication: this._disableP2pReplication,
184
187
  });
185
- this._sessions.set(wireParams.remotePeerId, session);
188
+ this._sessions.set(wireProps.remotePeerId, session);
186
189
 
187
190
  for (const feed of this._feeds) {
188
191
  session.replicator.addFeed(feed);
@@ -193,8 +196,8 @@ export class SpaceProtocol {
193
196
  }
194
197
  }
195
198
 
196
- export type SpaceProtocolSessionParams = {
197
- wireParams: WireProtocolParams;
199
+ export type SpaceProtocolSessionProps = {
200
+ wireProps: WireProtocolProps;
198
201
  swarmIdentity: SwarmIdentity;
199
202
 
200
203
  blobSync: BlobSync;
@@ -222,7 +225,7 @@ export enum AuthStatus {
222
225
  */
223
226
  export class SpaceProtocolSession implements WireProtocol {
224
227
  @logInfo
225
- private readonly _wireParams: WireProtocolParams;
228
+ private readonly _wireProps: WireProtocolProps;
226
229
 
227
230
  private readonly _disableP2pReplication: boolean;
228
231
 
@@ -249,20 +252,20 @@ export class SpaceProtocolSession implements WireProtocol {
249
252
 
250
253
  // TODO(dmaretskyi): Allow to pass in extra extensions.
251
254
  constructor({
252
- wireParams,
255
+ wireProps,
253
256
  swarmIdentity,
254
257
  onSessionAuth,
255
258
  onAuthFailure,
256
259
  blobSync,
257
260
  disableP2pReplication,
258
- }: SpaceProtocolSessionParams) {
259
- this._wireParams = wireParams;
261
+ }: SpaceProtocolSessionProps) {
262
+ this._wireProps = wireProps;
260
263
  this._swarmIdentity = swarmIdentity;
261
264
  this._onSessionAuth = onSessionAuth;
262
265
  this._onAuthFailure = onAuthFailure;
263
266
  this._blobSync = blobSync;
264
267
 
265
- this._teleport = new Teleport(wireParams);
268
+ this._teleport = new Teleport(wireProps);
266
269
 
267
270
  this._disableP2pReplication = disableP2pReplication ?? false;
268
271
  }
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { onTestFinished, describe, expect, test } from 'vitest';
5
+ import { describe, expect, onTestFinished, test } from 'vitest';
6
6
 
7
7
  import { Context } from '@dxos/context';
8
8
  import { CredentialGenerator } from '@dxos/credentials';
@@ -15,15 +15,16 @@ import { type Timeframe } from '@dxos/timeframe';
15
15
  import { trace } from '@dxos/tracing';
16
16
  import { type AsyncCallback, Callback } from '@dxos/util';
17
17
 
18
- import { ControlPipeline } from './control-pipeline';
19
- import { type SpaceProtocol } from './space-protocol';
20
18
  import { type MetadataStore } from '../metadata';
21
19
  import { type PipelineAccessor } from '../pipeline';
22
20
 
21
+ import { ControlPipeline } from './control-pipeline';
22
+ import { type SpaceProtocol } from './space-protocol';
23
+
23
24
  // TODO(burdon): Factor out?
24
25
  type FeedProvider = (feedKey: PublicKey, opts?: FeedOptions) => Promise<FeedWrapper<FeedMessage>>;
25
26
 
26
- export type SpaceParams = {
27
+ export type SpaceProps = {
27
28
  id: SpaceId;
28
29
  spaceKey: PublicKey;
29
30
  protocol: SpaceProtocol;
@@ -39,7 +40,7 @@ export type SpaceParams = {
39
40
  onMemberRolesChanged: (member: MemberInfo[]) => Promise<void>;
40
41
  };
41
42
 
42
- export type CreatePipelineParams = {
43
+ export type CreatePipelineProps = {
43
44
  start: Timeframe;
44
45
  // designation: AdmittedFeed.Designation;
45
46
  };
@@ -67,7 +68,7 @@ export class Space extends Resource {
67
68
  private _controlFeed?: FeedWrapper<FeedMessage>;
68
69
  private _dataFeed?: FeedWrapper<FeedMessage>;
69
70
 
70
- constructor(params: SpaceParams) {
71
+ constructor(params: SpaceProps) {
71
72
  super();
72
73
  invariant(params.spaceKey && params.feedProvider);
73
74
  this._id = params.id;
@@ -7,5 +7,3 @@ export * from './test-agent-builder';
7
7
  export * from './test-feed-builder';
8
8
  export * from './test-network-adapter';
9
9
  export * from './test-replicator';
10
- export * as TestSchema from './test-schema';
11
- export * as TestData from './test-data';
@@ -12,14 +12,15 @@ import { MemoryTransportFactory, SwarmNetworkManager, createRtcTransportFactory
12
12
  import { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
13
13
  import { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
14
14
  import { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';
15
- import { StorageType, createStorage, type Storage } from '@dxos/random-access-storage';
15
+ import { type Storage, StorageType, createStorage } from '@dxos/random-access-storage';
16
16
  import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
17
17
  import { BlobStore } from '@dxos/teleport-extension-object-sync';
18
18
  import { ComplexMap } from '@dxos/util';
19
19
 
20
- import { TestFeedBuilder } from './test-feed-builder';
21
20
  import { MetadataStore } from '../metadata';
22
- import { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } from '../space';
21
+ import { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, type Space, SpaceManager, SpaceProtocol } from '../space';
22
+
23
+ import { TestFeedBuilder } from './test-feed-builder';
23
24
 
24
25
  export type NetworkManagerProvider = () => SwarmNetworkManager;
25
26
 
@@ -11,12 +11,25 @@ import { log } from '@dxos/log';
11
11
  export type TestConnectionStateProvider = () => 'on' | 'off';
12
12
 
13
13
  export class TestAdapter extends NetworkAdapter {
14
- static createPair(connectionStateProvider: TestConnectionStateProvider = () => 'on'): TestAdapter[] {
14
+ static createPair(
15
+ connectionStateProvider: TestConnectionStateProvider = () => 'on',
16
+ onMessage?: (message: Message) => void,
17
+ ): TestAdapter[] {
15
18
  const adapter1: TestAdapter = new TestAdapter({
16
- send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter2.receive(message)),
19
+ send: (message: Message) => {
20
+ onMessage?.(message);
21
+ if (connectionStateProvider() === 'on') {
22
+ void sleep(10).then(() => adapter2.receive(message));
23
+ }
24
+ },
17
25
  });
18
26
  const adapter2: TestAdapter = new TestAdapter({
19
- send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter1.receive(message)),
27
+ send: (message: Message) => {
28
+ onMessage?.(message);
29
+ if (connectionStateProvider() === 'on') {
30
+ void sleep(10).then(() => adapter1.receive(message));
31
+ }
32
+ },
20
33
  });
21
34
 
22
35
  return [adapter1, adapter2];
@@ -7,14 +7,14 @@ import { type Context, LifecycleState, Resource } from '@dxos/context';
7
7
  import { invariant } from '@dxos/invariant';
8
8
  import { log } from '@dxos/log';
9
9
  import type { AutomergeProtocolMessage } from '@dxos/protocols';
10
- import { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';
10
+ import * as TeleportAutomergeReplicator from '@dxos/teleport-extension-automerge-replicator';
11
11
 
12
12
  import type {
13
- EchoReplicator,
14
- EchoReplicatorContext,
15
- ReplicatorConnection,
16
- ShouldAdvertiseParams,
17
- ShouldSyncCollectionParams,
13
+ AutomergeReplicator,
14
+ AutomergeReplicatorConnection,
15
+ AutomergeReplicatorContext,
16
+ ShouldAdvertiseProps,
17
+ ShouldSyncCollectionProps,
18
18
  } from '../automerge';
19
19
 
20
20
  export type TestReplicatorNetworkOptions = {
@@ -30,7 +30,7 @@ export class TestReplicationNetwork extends Resource {
30
30
  this._latency = options.latency;
31
31
  }
32
32
 
33
- protected override async _close(ctx: Context): Promise<void> {
33
+ protected override async _close(_ctx: Context): Promise<void> {
34
34
  for (const replicator of this._replicators) {
35
35
  for (const connection of replicator.connections) {
36
36
  void connection.writable.abort();
@@ -115,19 +115,19 @@ export class TestReplicationNetwork extends Resource {
115
115
  }
116
116
  }
117
117
 
118
- type TestReplicatorParams = {
118
+ type TestReplicatorProps = {
119
119
  onConnect: () => Promise<void>;
120
120
  onDisconnect: () => Promise<void>;
121
121
  };
122
122
 
123
- export class TestReplicator implements EchoReplicator {
124
- constructor(private readonly _params: TestReplicatorParams) {}
123
+ export class TestReplicator implements AutomergeReplicator {
124
+ constructor(private readonly _params: TestReplicatorProps) {}
125
125
 
126
126
  public connected = false;
127
- public context: EchoReplicatorContext | undefined = undefined;
127
+ public context: AutomergeReplicatorContext | undefined = undefined;
128
128
  public connections = new Set<TestReplicatorConnection>();
129
129
 
130
- async connect(context: EchoReplicatorContext): Promise<void> {
130
+ async connect(context: AutomergeReplicatorContext): Promise<void> {
131
131
  log('connect', { peerId: context.peerId });
132
132
  this.context = context;
133
133
  this.connected = true;
@@ -153,7 +153,7 @@ export class TestReplicator implements EchoReplicator {
153
153
  }
154
154
  }
155
155
 
156
- export class TestReplicatorConnection implements ReplicatorConnection {
156
+ export class TestReplicatorConnection implements AutomergeReplicatorConnection {
157
157
  public otherSide: TestReplicatorConnection | undefined = undefined;
158
158
  public owningReplicator: TestReplicator | undefined = undefined;
159
159
 
@@ -163,17 +163,21 @@ export class TestReplicatorConnection implements ReplicatorConnection {
163
163
  public readonly writable: WritableStream<AutomergeProtocolMessage>,
164
164
  ) {}
165
165
 
166
- async shouldAdvertise(params: ShouldAdvertiseParams): Promise<boolean> {
166
+ get bundleSyncEnabled(): boolean {
167
+ return false;
168
+ }
169
+
170
+ async shouldAdvertise(_params: ShouldAdvertiseProps): Promise<boolean> {
167
171
  return true;
168
172
  }
169
173
 
170
- shouldSyncCollection(params: ShouldSyncCollectionParams): boolean {
174
+ shouldSyncCollection(_params: ShouldSyncCollectionProps): boolean {
171
175
  return true;
172
176
  }
173
177
  }
174
178
 
175
- export const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {
176
- return new AutomergeReplicator(
179
+ export const testAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {
180
+ return new TeleportAutomergeReplicator.AutomergeReplicator(
177
181
  {
178
182
  ...params[0],
179
183
  sendSyncRetryPolicy: {
@@ -186,9 +190,10 @@ export const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (param
186
190
  );
187
191
  };
188
192
 
189
- export const brokenAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {
193
+ export const brokenAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {
190
194
  params[1]!.onSyncMessage = () => {
191
195
  throw new Error();
192
196
  };
197
+
193
198
  return testAutomergeReplicatorFactory(params);
194
199
  };
package/src/util.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { decodeReference, ObjectStructure, type DatabaseDirectory } from '@dxos/echo-protocol';
5
+ import { type DatabaseDirectory, EncodedReference, ObjectStructure } from '@dxos/echo-protocol';
6
6
 
7
7
  /**
8
8
  * Assumes properties are at root.
@@ -14,8 +14,12 @@ export const findInlineObjectOfType = (
14
14
  for (const id in spaceDoc.objects ?? {}) {
15
15
  const obj = spaceDoc.objects![id];
16
16
  const objType = ObjectStructure.getTypeReference(obj);
17
- if (objType && decodeReference(objType).objectId === typename) {
18
- return [id, obj];
17
+ if (objType) {
18
+ const typeDXN = EncodedReference.toDXN(objType);
19
+ const typeDXNInfo = typeDXN.asTypeDXN();
20
+ if (typeDXNInfo?.type === typename) {
21
+ return [id, obj];
22
+ }
19
23
  }
20
24
  }
21
25