@dxos/echo-pipeline 0.8.3 → 0.8.4-main.05e74ebcff

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