@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.
- package/dist/lib/neutral/chunk-FJPXA75J.mjs +235 -0
- package/dist/lib/neutral/chunk-FJPXA75J.mjs.map +7 -0
- package/dist/lib/{browser/chunk-35I6ERLG.mjs → neutral/chunk-WIQUYO7H.mjs} +300 -213
- package/dist/lib/neutral/chunk-WIQUYO7H.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/filter/index.mjs +3 -2
- package/dist/lib/{browser → neutral}/index.mjs +2832 -946
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/{browser → neutral}/testing/index.mjs +73 -224
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/automerge/automerge-host.d.ts +53 -42
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-repo.test.d.ts +1 -1
- package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts +6 -4
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts +22 -10
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-replicator.d.ts +37 -15
- package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/heads-store.d.ts +9 -2
- package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
- package/dist/types/src/automerge/index.d.ts +1 -1
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +5 -5
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +9 -8
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts +5 -5
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/common/codec.d.ts +1 -1
- package/dist/types/src/common/codec.d.ts.map +1 -1
- package/dist/types/src/db-host/automerge-data-source.d.ts +34 -0
- package/dist/types/src/db-host/automerge-data-source.d.ts.map +1 -0
- package/dist/types/src/db-host/automerge-data-source.test.d.ts +2 -0
- package/dist/types/src/db-host/automerge-data-source.test.d.ts.map +1 -0
- package/dist/types/src/db-host/data-service.d.ts +5 -4
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-synchronizer.d.ts +6 -5
- package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/echo-host.d.ts +44 -23
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +1 -0
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/db-host/local-queue-service.d.ts +16 -0
- package/dist/types/src/db-host/local-queue-service.d.ts.map +1 -0
- package/dist/types/src/db-host/query-service.d.ts +14 -9
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/db-host/queue-data-source.d.ts +28 -0
- package/dist/types/src/db-host/queue-data-source.d.ts.map +1 -0
- package/dist/types/src/db-host/queue-service.test.d.ts +2 -0
- package/dist/types/src/db-host/queue-service.test.d.ts.map +1 -0
- package/dist/types/src/db-host/space-state-manager.d.ts +2 -1
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
- package/dist/types/src/db-host/stub.d.ts +10 -0
- package/dist/types/src/db-host/stub.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-replicator.d.ts +8 -6
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
- package/dist/types/src/filter/filter-match.d.ts +4 -1
- package/dist/types/src/filter/filter-match.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/pipeline/pipeline.d.ts +3 -3
- package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
- package/dist/types/src/query/errors.d.ts +21 -9
- package/dist/types/src/query/errors.d.ts.map +1 -1
- package/dist/types/src/query/plan.d.ts +57 -5
- package/dist/types/src/query/plan.d.ts.map +1 -1
- package/dist/types/src/query/query-executor.d.ts +49 -10
- package/dist/types/src/query/query-executor.d.ts.map +1 -1
- package/dist/types/src/query/query-planner.d.ts +9 -0
- package/dist/types/src/query/query-planner.d.ts.map +1 -1
- package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
- package/dist/types/src/space/auth.d.ts +3 -3
- package/dist/types/src/space/auth.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts +3 -3
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +7 -7
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts +6 -6
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +4 -4
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts +2 -2
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-network-adapter.d.ts +1 -1
- package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
- package/dist/types/src/testing/test-replicator.d.ts +14 -13
- package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +53 -45
- package/src/automerge/automerge-host.test.ts +55 -24
- package/src/automerge/automerge-host.ts +399 -126
- package/src/automerge/automerge-repo.test.ts +214 -46
- package/src/automerge/collection-synchronizer.test.ts +22 -15
- package/src/automerge/collection-synchronizer.ts +57 -22
- package/src/automerge/echo-data-monitor.ts +1 -1
- package/src/automerge/echo-network-adapter.test.ts +3 -3
- package/src/automerge/echo-network-adapter.ts +73 -28
- package/src/automerge/echo-replicator.ts +40 -15
- package/src/automerge/heads-store.ts +42 -3
- package/src/automerge/index.ts +1 -1
- package/src/automerge/leveldb-storage-adapter.ts +11 -11
- package/src/automerge/mesh-echo-replicator-connection.ts +12 -8
- package/src/automerge/mesh-echo-replicator.ts +15 -11
- package/src/automerge/storage-adapter.test.ts +1 -1
- package/src/common/space-id.ts +1 -1
- package/src/db-host/automerge-data-source.test.ts +292 -0
- package/src/db-host/automerge-data-source.ts +144 -0
- package/src/db-host/data-service.ts +19 -20
- package/src/db-host/database-root.ts +2 -2
- package/src/db-host/documents-synchronizer.test.ts +73 -13
- package/src/db-host/documents-synchronizer.ts +58 -44
- package/src/db-host/echo-host.ts +194 -84
- package/src/db-host/index.ts +1 -0
- package/src/db-host/local-queue-service.ts +147 -0
- package/src/db-host/query-service.ts +28 -95
- package/src/db-host/queue-data-source.ts +132 -0
- package/src/db-host/queue-service.test.ts +145 -0
- package/src/db-host/space-state-manager.ts +6 -2
- package/src/db-host/stub.ts +28 -0
- package/src/edge/echo-edge-replicator.test.ts +8 -6
- package/src/edge/echo-edge-replicator.ts +124 -42
- package/src/filter/filter-match.test.ts +58 -32
- package/src/filter/filter-match.ts +163 -15
- package/src/metadata/metadata-store.ts +8 -5
- package/src/pipeline/pipeline-stress.test.ts +4 -2
- package/src/pipeline/pipeline.test.ts +3 -2
- package/src/pipeline/pipeline.ts +10 -7
- package/src/query/errors.ts +3 -1
- package/src/query/plan.ts +75 -5
- package/src/query/query-executor.ts +812 -117
- package/src/query/query-planner.test.ts +652 -34
- package/src/query/query-planner.ts +276 -13
- package/src/space/admission-discovery-extension.ts +3 -3
- package/src/space/auth.ts +6 -6
- package/src/space/control-pipeline.test.ts +4 -3
- package/src/space/control-pipeline.ts +11 -8
- package/src/space/space-manager.browser.test.ts +1 -1
- package/src/space/space-manager.ts +11 -10
- package/src/space/space-protocol.browser.test.ts +2 -2
- package/src/space/space-protocol.test.ts +3 -2
- package/src/space/space-protocol.ts +17 -14
- package/src/space/space.test.ts +1 -1
- package/src/space/space.ts +6 -5
- package/src/testing/index.ts +0 -2
- package/src/testing/test-agent-builder.ts +4 -3
- package/src/testing/test-network-adapter.ts +16 -3
- package/src/testing/test-replicator.ts +23 -18
- package/src/util.ts +7 -3
- package/dist/lib/browser/chunk-35I6ERLG.mjs.map +0 -7
- package/dist/lib/browser/chunk-CGS2ULMK.mjs +0 -11
- package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +0 -7
- package/dist/lib/browser/chunk-TQJTKNMS.mjs +0 -126
- package/dist/lib/browser/chunk-TQJTKNMS.mjs.map +0 -7
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node/chunk-HOPOFWAL.cjs +0 -147
- package/dist/lib/node/chunk-HOPOFWAL.cjs.map +0 -7
- package/dist/lib/node/chunk-JXX6LF5U.cjs +0 -2084
- package/dist/lib/node/chunk-JXX6LF5U.cjs.map +0 -7
- package/dist/lib/node/chunk-Q7SFCCGT.cjs +0 -33
- package/dist/lib/node/chunk-Q7SFCCGT.cjs.map +0 -7
- package/dist/lib/node/filter/index.cjs +0 -32
- package/dist/lib/node/filter/index.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -4699
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -753
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-5BHLPT24.mjs +0 -2067
- package/dist/lib/node-esm/chunk-5BHLPT24.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RVK35BS7.mjs +0 -126
- package/dist/lib/node-esm/chunk-RVK35BS7.mjs.map +0 -7
- package/dist/lib/node-esm/filter/index.mjs +0 -11
- package/dist/lib/node-esm/filter/index.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -4743
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -742
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/db-host/documents-iterator.d.ts +0 -7
- package/dist/types/src/db-host/documents-iterator.d.ts.map +0 -1
- package/dist/types/src/testing/test-data.d.ts +0 -18
- package/dist/types/src/testing/test-data.d.ts.map +0 -1
- package/dist/types/src/testing/test-schema.d.ts +0 -37
- package/dist/types/src/testing/test-schema.d.ts.map +0 -1
- package/src/db-host/documents-iterator.ts +0 -74
- package/src/testing/test-data.ts +0 -127
- package/src/testing/test-schema.ts +0 -53
- /package/dist/lib/{browser → neutral}/filter/index.mjs.map +0 -0
package/package.json
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/echo-pipeline",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4-main.1068cf700f",
|
|
4
4
|
"description": "ECHO database.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/dxos/dxos"
|
|
10
|
+
},
|
|
7
11
|
"license": "MIT",
|
|
8
12
|
"author": "info@dxos.org",
|
|
9
|
-
"sideEffects":
|
|
13
|
+
"sideEffects": false,
|
|
10
14
|
"type": "module",
|
|
11
15
|
"exports": {
|
|
12
16
|
".": {
|
|
17
|
+
"source": "./src/index.ts",
|
|
13
18
|
"types": "./dist/types/src/index.d.ts",
|
|
14
|
-
"
|
|
15
|
-
"node": "./dist/lib/node-esm/index.mjs"
|
|
19
|
+
"default": "./dist/lib/neutral/index.mjs"
|
|
16
20
|
},
|
|
17
21
|
"./testing": {
|
|
22
|
+
"source": "./src/testing/index.ts",
|
|
18
23
|
"types": "./dist/types/src/testing/index.d.ts",
|
|
19
|
-
"
|
|
20
|
-
"node": "./dist/lib/node-esm/testing/index.mjs"
|
|
24
|
+
"default": "./dist/lib/neutral/testing/index.mjs"
|
|
21
25
|
},
|
|
22
26
|
"./filter": {
|
|
27
|
+
"source": "./src/filter/index.ts",
|
|
23
28
|
"types": "./dist/types/src/filter/index.d.ts",
|
|
24
|
-
"
|
|
25
|
-
"node": "./dist/lib/node-esm/filter/index.mjs"
|
|
29
|
+
"default": "./dist/lib/neutral/filter/index.mjs"
|
|
26
30
|
}
|
|
27
31
|
},
|
|
28
32
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -40,51 +44,55 @@
|
|
|
40
44
|
"src"
|
|
41
45
|
],
|
|
42
46
|
"dependencies": {
|
|
43
|
-
"@automerge/automerge": "3.
|
|
44
|
-
"@automerge/automerge-repo": "2.
|
|
47
|
+
"@automerge/automerge": "3.2.3",
|
|
48
|
+
"@automerge/automerge-repo": "2.5.1",
|
|
49
|
+
"@effect/sql": "0.49.0",
|
|
50
|
+
"@effect/sql-sqlite-node": "0.50.1",
|
|
45
51
|
"crc-32": "^1.2.2",
|
|
46
|
-
"effect": "3.
|
|
52
|
+
"effect": "3.19.16",
|
|
47
53
|
"level-transcoder": "^1.0.1",
|
|
48
54
|
"lodash.isequal": "^4.5.0",
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/echo": "0.8.
|
|
56
|
-
"@dxos/echo
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/invariant": "0.8.
|
|
64
|
-
"@dxos/keyring": "0.8.
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/network-manager": "0.8.
|
|
70
|
-
"@dxos/node-std": "0.8.
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/protocols": "0.8.
|
|
73
|
-
"@dxos/random-access-storage": "0.8.
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/teleport
|
|
76
|
-
"@dxos/teleport-extension-
|
|
77
|
-
"@dxos/teleport-extension-
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/typings": "0.8.
|
|
55
|
+
"@dxos/async": "0.8.4-main.1068cf700f",
|
|
56
|
+
"@dxos/codec-protobuf": "0.8.4-main.1068cf700f",
|
|
57
|
+
"@dxos/credentials": "0.8.4-main.1068cf700f",
|
|
58
|
+
"@dxos/debug": "0.8.4-main.1068cf700f",
|
|
59
|
+
"@dxos/context": "0.8.4-main.1068cf700f",
|
|
60
|
+
"@dxos/crypto": "0.8.4-main.1068cf700f",
|
|
61
|
+
"@dxos/echo-protocol": "0.8.4-main.1068cf700f",
|
|
62
|
+
"@dxos/echo": "0.8.4-main.1068cf700f",
|
|
63
|
+
"@dxos/effect": "0.8.4-main.1068cf700f",
|
|
64
|
+
"@dxos/errors": "0.8.4-main.1068cf700f",
|
|
65
|
+
"@dxos/edge-client": "0.8.4-main.1068cf700f",
|
|
66
|
+
"@dxos/feed": "0.8.4-main.1068cf700f",
|
|
67
|
+
"@dxos/feed-store": "0.8.4-main.1068cf700f",
|
|
68
|
+
"@dxos/index-core": "0.8.4-main.1068cf700f",
|
|
69
|
+
"@dxos/invariant": "0.8.4-main.1068cf700f",
|
|
70
|
+
"@dxos/keyring": "0.8.4-main.1068cf700f",
|
|
71
|
+
"@dxos/hypercore": "0.8.4-main.1068cf700f",
|
|
72
|
+
"@dxos/keys": "0.8.4-main.1068cf700f",
|
|
73
|
+
"@dxos/kv-store": "0.8.4-main.1068cf700f",
|
|
74
|
+
"@dxos/log": "0.8.4-main.1068cf700f",
|
|
75
|
+
"@dxos/network-manager": "0.8.4-main.1068cf700f",
|
|
76
|
+
"@dxos/node-std": "0.8.4-main.1068cf700f",
|
|
77
|
+
"@dxos/messaging": "0.8.4-main.1068cf700f",
|
|
78
|
+
"@dxos/protocols": "0.8.4-main.1068cf700f",
|
|
79
|
+
"@dxos/random-access-storage": "0.8.4-main.1068cf700f",
|
|
80
|
+
"@dxos/sql-sqlite": "0.8.4-main.1068cf700f",
|
|
81
|
+
"@dxos/teleport": "0.8.4-main.1068cf700f",
|
|
82
|
+
"@dxos/teleport-extension-automerge-replicator": "0.8.4-main.1068cf700f",
|
|
83
|
+
"@dxos/teleport-extension-gossip": "0.8.4-main.1068cf700f",
|
|
84
|
+
"@dxos/teleport-extension-object-sync": "0.8.4-main.1068cf700f",
|
|
85
|
+
"@dxos/teleport-extension-replicator": "0.8.4-main.1068cf700f",
|
|
86
|
+
"@dxos/timeframe": "0.8.4-main.1068cf700f",
|
|
87
|
+
"@dxos/typings": "0.8.4-main.1068cf700f",
|
|
88
|
+
"@dxos/tracing": "0.8.4-main.1068cf700f",
|
|
89
|
+
"@dxos/util": "0.8.4-main.1068cf700f"
|
|
82
90
|
},
|
|
83
91
|
"devDependencies": {
|
|
84
92
|
"@types/lodash.isequal": "^4.5.0",
|
|
85
93
|
"fast-check": "^3.19.0",
|
|
86
94
|
"get-port-please": "^3.1.1",
|
|
87
|
-
"@dxos/test-utils": "0.8.
|
|
95
|
+
"@dxos/test-utils": "0.8.4-main.1068cf700f"
|
|
88
96
|
},
|
|
89
97
|
"publishConfig": {
|
|
90
98
|
"access": "public"
|
|
@@ -3,72 +3,98 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { getHeads } from '@automerge/automerge';
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import * as Automerge from '@automerge/automerge';
|
|
7
|
+
import { type DocumentId, type Heads, generateAutomergeUrl, parseAutomergeUrl } from '@automerge/automerge-repo';
|
|
8
|
+
import { describe, expect, onTestFinished, test } from 'vitest';
|
|
8
9
|
|
|
9
|
-
import {
|
|
10
|
+
import { Context } from '@dxos/context';
|
|
11
|
+
import { PublicKey } from '@dxos/keys';
|
|
10
12
|
import type { LevelDB } from '@dxos/kv-store';
|
|
11
13
|
import { createTestLevel } from '@dxos/kv-store/testing';
|
|
12
14
|
import { openAndClose } from '@dxos/test-utils';
|
|
13
15
|
import { range } from '@dxos/util';
|
|
14
16
|
|
|
15
|
-
import { AutomergeHost } from './automerge-host';
|
|
16
17
|
import { TestReplicationNetwork } from '../testing';
|
|
17
18
|
|
|
19
|
+
import { AutomergeHost } from './automerge-host';
|
|
20
|
+
|
|
18
21
|
describe('AutomergeHost', () => {
|
|
19
22
|
test('can create documents', async () => {
|
|
20
23
|
const level = await createLevel();
|
|
21
24
|
const host = await setupAutomergeHost({ level });
|
|
22
|
-
const handle = host.
|
|
25
|
+
const handle = await host.createDoc<any>();
|
|
23
26
|
handle.change((doc: any) => {
|
|
24
27
|
doc.text = 'Hello world';
|
|
25
28
|
});
|
|
26
|
-
await host.
|
|
29
|
+
await host.flush();
|
|
27
30
|
expect(handle.doc()!.text).toEqual('Hello world');
|
|
28
31
|
});
|
|
29
32
|
|
|
30
33
|
test('changes are preserved in storage', async () => {
|
|
31
34
|
const level = await createLevel();
|
|
32
|
-
|
|
33
35
|
const host = await setupAutomergeHost({ level });
|
|
34
|
-
const handle = host.
|
|
36
|
+
const handle = await host.createDoc<any>();
|
|
35
37
|
handle.change((doc: any) => {
|
|
36
38
|
doc.text = 'Hello world';
|
|
37
39
|
});
|
|
38
40
|
const url = handle.url;
|
|
39
41
|
|
|
40
|
-
await host.
|
|
42
|
+
await host.flush();
|
|
41
43
|
await host.close();
|
|
42
44
|
|
|
43
45
|
const host2 = await setupAutomergeHost({ level });
|
|
44
|
-
const handle2 = await host2.
|
|
46
|
+
const handle2 = await host2.loadDoc<any>(Context.default(), url);
|
|
45
47
|
await handle2.whenReady();
|
|
46
48
|
expect(handle2.doc()!.text).toEqual('Hello world');
|
|
47
|
-
await host2.
|
|
49
|
+
await host2.flush();
|
|
48
50
|
});
|
|
49
51
|
|
|
50
|
-
test('
|
|
52
|
+
test('load resolves when document is created from binary', async () => {
|
|
51
53
|
const level = await createLevel();
|
|
54
|
+
const host = await setupAutomergeHost({ level });
|
|
55
|
+
|
|
56
|
+
// Create a document to get its binary representation
|
|
57
|
+
const document = Automerge.from({ text: 'Hello world' });
|
|
58
|
+
const binary = Automerge.save(document);
|
|
59
|
+
const { documentId } = parseAutomergeUrl(generateAutomergeUrl());
|
|
60
|
+
|
|
61
|
+
// Start loading a non-existent document (should hang until created)
|
|
62
|
+
const loadPromise = host.loadDoc(Context.default(), documentId);
|
|
63
|
+
|
|
64
|
+
// Create the document from binary - this should resolve the load
|
|
65
|
+
const createdHandle = await host.createDoc(binary, { preserveHistory: true, documentId });
|
|
66
|
+
|
|
67
|
+
// The load should now resolve
|
|
68
|
+
const loadedHandle = await loadPromise;
|
|
69
|
+
expect(loadedHandle.doc()).toEqual(createdHandle.doc());
|
|
70
|
+
});
|
|
52
71
|
|
|
72
|
+
test('query single document heads', async () => {
|
|
73
|
+
const tmpPath = `/tmp/dxos-${PublicKey.random().toHex()}`;
|
|
74
|
+
|
|
75
|
+
const level = await createLevel(tmpPath);
|
|
53
76
|
const host = await setupAutomergeHost({ level });
|
|
54
|
-
const handle = host.createDoc({ text: 'Hello world' });
|
|
77
|
+
const handle = await host.createDoc({ text: 'Hello world' });
|
|
55
78
|
const expectedHeads = getHeads(handle.doc()!);
|
|
56
79
|
await host.flush();
|
|
57
80
|
|
|
58
81
|
expect(await host.getHeads([handle.documentId])).toEqual([expectedHeads]);
|
|
82
|
+
await host.close();
|
|
83
|
+
await level.close();
|
|
59
84
|
|
|
60
85
|
// Simulate a restart.
|
|
61
86
|
{
|
|
62
|
-
const host = await setupAutomergeHost({ level });
|
|
87
|
+
const host = await setupAutomergeHost({ level: await createLevel(tmpPath) });
|
|
63
88
|
expect(await host.getHeads([handle.documentId])).toEqual([expectedHeads]);
|
|
64
89
|
}
|
|
65
90
|
});
|
|
66
91
|
|
|
67
92
|
test('query multiple document heads', async () => {
|
|
68
|
-
const
|
|
93
|
+
const tmpPath = `/tmp/dxos-${PublicKey.random().toHex()}`;
|
|
69
94
|
|
|
95
|
+
const level = await createLevel(tmpPath);
|
|
70
96
|
const host = await setupAutomergeHost({ level });
|
|
71
|
-
const handles = range(2, () => host.createDoc({ text: 'Hello world' }));
|
|
97
|
+
const handles = await Promise.all(range(2, () => host.createDoc({ text: 'Hello world' })));
|
|
72
98
|
const expectedHeads: (Heads | undefined)[] = handles.map((handle) => getHeads(handle.doc()!));
|
|
73
99
|
await host.flush();
|
|
74
100
|
|
|
@@ -77,11 +103,16 @@ describe('AutomergeHost', () => {
|
|
|
77
103
|
expectedHeads.splice(1, 0, undefined);
|
|
78
104
|
|
|
79
105
|
expect(await host.getHeads(ids)).toEqual(expectedHeads);
|
|
106
|
+
await host.close();
|
|
107
|
+
await level.close();
|
|
80
108
|
|
|
81
109
|
// Simulate a restart.
|
|
82
110
|
{
|
|
111
|
+
const level = await createLevel(tmpPath);
|
|
83
112
|
const host = await setupAutomergeHost({ level });
|
|
84
113
|
expect(await host.getHeads(ids)).toEqual(expectedHeads);
|
|
114
|
+
await host.close();
|
|
115
|
+
await level.close();
|
|
85
116
|
}
|
|
86
117
|
});
|
|
87
118
|
|
|
@@ -96,7 +127,7 @@ describe('AutomergeHost', () => {
|
|
|
96
127
|
{
|
|
97
128
|
const host2 = await setupAutomergeHost({ level: level2 });
|
|
98
129
|
for (const i of range(NUM_DOCUMENTS)) {
|
|
99
|
-
const handle = host2.createDoc({ docIndex: i });
|
|
130
|
+
const handle = await host2.createDoc({ docIndex: i });
|
|
100
131
|
documentIds.push(handle.documentId);
|
|
101
132
|
}
|
|
102
133
|
await host2.flush();
|
|
@@ -105,24 +136,25 @@ describe('AutomergeHost', () => {
|
|
|
105
136
|
|
|
106
137
|
const host2 = await setupAutomergeHost({ level: level2 });
|
|
107
138
|
|
|
139
|
+
const network = await new TestReplicationNetwork().open();
|
|
140
|
+
await host1.addReplicator(await network.createReplicator());
|
|
141
|
+
await host2.addReplicator(await network.createReplicator());
|
|
142
|
+
|
|
108
143
|
const collectionId = 'test-collection';
|
|
109
144
|
await host1.updateLocalCollectionState(collectionId, documentIds);
|
|
110
145
|
await host2.updateLocalCollectionState(collectionId, documentIds);
|
|
111
146
|
|
|
112
|
-
await using network = await new TestReplicationNetwork().open();
|
|
113
|
-
await host1.addReplicator(await network.createReplicator());
|
|
114
|
-
await host2.addReplicator(await network.createReplicator());
|
|
115
|
-
|
|
116
147
|
for (const documentId of documentIds) {
|
|
117
148
|
await expect.poll(() => host1.getHeads([documentId])).toEqual(await host2.getHeads([documentId]));
|
|
118
149
|
}
|
|
119
150
|
|
|
120
151
|
await host1.close();
|
|
121
152
|
await host2.close();
|
|
153
|
+
await network.close();
|
|
122
154
|
});
|
|
123
155
|
|
|
124
|
-
const createLevel = async () => {
|
|
125
|
-
const level = createTestLevel();
|
|
156
|
+
const createLevel = async (tmpPath?: string) => {
|
|
157
|
+
const level = createTestLevel(tmpPath);
|
|
126
158
|
await openAndClose(level);
|
|
127
159
|
return level;
|
|
128
160
|
};
|
|
@@ -131,7 +163,6 @@ describe('AutomergeHost', () => {
|
|
|
131
163
|
const setupAutomergeHost = async ({ level }: { level: LevelDB }) => {
|
|
132
164
|
const host = new AutomergeHost({
|
|
133
165
|
db: level,
|
|
134
|
-
indexMetadataStore: new IndexMetadataStore({ db: level.sublevel('index-metadata') }),
|
|
135
166
|
});
|
|
136
167
|
await host.open();
|
|
137
168
|
onTestFinished(async () => {
|