@dxos/echo-pipeline 0.8.3 → 0.8.4-main.03d5cd7b56
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/{browser/chunk-35I6ERLG.mjs → neutral/chunk-VIHYDCCC.mjs} +313 -709
- package/dist/lib/neutral/chunk-VIHYDCCC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YBC6ONBZ.mjs +247 -0
- package/dist/lib/neutral/chunk-YBC6ONBZ.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/filter/index.mjs +3 -2
- package/dist/lib/neutral/index.mjs +7065 -0
- 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 +90 -311
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/automerge/automerge-host-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-host-subduction.test.d.ts.map +1 -0
- package/dist/types/src/automerge/automerge-host.d.ts +99 -54
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts.map +1 -0
- 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/automerge-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-subduction.test.d.ts.map +1 -0
- package/dist/types/src/automerge/collection-synchronizer.d.ts +25 -4
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-data-monitor.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts +23 -10
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-replicator.d.ts +38 -15
- package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/handle-state.d.ts +52 -0
- package/dist/types/src/automerge/handle-state.d.ts.map +1 -0
- 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 +2 -1
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +9 -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 +6 -5
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/network-protocol.d.ts.map +1 -1
- package/dist/types/src/automerge/space-collection.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/common/feeds.d.ts.map +1 -1
- package/dist/types/src/common/space-id.d.ts.map +1 -1
- package/dist/types/src/db-host/automerge-data-source.d.ts +35 -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/automerge-metrics.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service.d.ts +8 -7
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts +9 -3
- package/dist/types/src/db-host/database-root.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-synchronizer.d.ts +9 -8
- package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/echo-host.d.ts +62 -27
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +2 -0
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/db-host/invalidation-hint.d.ts +19 -0
- package/dist/types/src/db-host/invalidation-hint.d.ts.map +1 -0
- package/dist/types/src/db-host/local-queue-service.d.ts +19 -0
- package/dist/types/src/db-host/local-queue-service.d.ts.map +1 -0
- package/dist/types/src/db-host/query-invalidation.test.d.ts +2 -0
- package/dist/types/src/db-host/query-invalidation.test.d.ts.map +1 -0
- package/dist/types/src/db-host/query-service.d.ts +19 -11
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/db-host/queue-data-source.d.ts +38 -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 +4 -3
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
- package/dist/types/src/db-host/stub.d.ts +11 -0
- package/dist/types/src/db-host/stub.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-replicator.d.ts +10 -7
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
- package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts +39 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts +2 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts.map +1 -0
- package/dist/types/src/edge/index.d.ts +1 -0
- package/dist/types/src/edge/index.d.ts.map +1 -1
- package/dist/types/src/edge/inflight-request-limiter.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/message-selector.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/pipeline/timeframe-clock.d.ts.map +1 -1
- package/dist/types/src/query/errors.d.ts +22 -10
- package/dist/types/src/query/errors.d.ts.map +1 -1
- package/dist/types/src/query/plan.d.ts +66 -8
- package/dist/types/src/query/plan.d.ts.map +1 -1
- package/dist/types/src/query/query-executor.d.ts +66 -11
- package/dist/types/src/query/query-executor.d.ts.map +1 -1
- package/dist/types/src/query/query-planner.d.ts +12 -1
- 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 +5 -4
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +8 -8
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts +10 -9
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +6 -6
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/change-metadata.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-feed-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 +56 -54
- package/src/automerge/automerge-host-subduction.test.ts +247 -0
- package/src/automerge/automerge-host.test.ts +65 -39
- package/src/automerge/automerge-host.ts +589 -206
- package/src/automerge/automerge-repo-subduction.test.ts +1049 -0
- package/src/automerge/automerge-repo.test.ts +349 -91
- package/src/automerge/automerge-subduction.test.ts +330 -0
- package/src/automerge/collection-synchronizer.test.ts +53 -17
- package/src/automerge/collection-synchronizer.ts +119 -36
- package/src/automerge/echo-data-monitor.ts +1 -1
- package/src/automerge/echo-network-adapter.test.ts +5 -4
- package/src/automerge/echo-network-adapter.ts +74 -30
- package/src/automerge/echo-replicator.ts +41 -15
- package/src/automerge/handle-state.ts +62 -0
- package/src/automerge/heads-store.ts +42 -3
- package/src/automerge/index.ts +2 -1
- package/src/automerge/leveldb-storage-adapter.ts +40 -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 +299 -0
- package/src/db-host/automerge-data-source.ts +187 -0
- package/src/db-host/data-service.ts +25 -26
- package/src/db-host/database-root.ts +20 -8
- package/src/db-host/documents-synchronizer.test.ts +143 -14
- package/src/db-host/documents-synchronizer.ts +72 -55
- package/src/db-host/echo-host.ts +348 -96
- package/src/db-host/index.ts +2 -0
- package/src/db-host/invalidation-hint.ts +50 -0
- package/src/db-host/local-queue-service.ts +127 -0
- package/src/db-host/query-invalidation.test.ts +270 -0
- package/src/db-host/query-service.ts +111 -106
- package/src/db-host/queue-data-source.ts +160 -0
- package/src/db-host/queue-service.test.ts +145 -0
- package/src/db-host/space-state-manager.ts +12 -10
- package/src/db-host/stub.ts +33 -0
- package/src/edge/echo-edge-replicator.test.ts +12 -10
- package/src/edge/echo-edge-replicator.ts +144 -58
- package/src/edge/echo-edge-subduction-replicator.test.ts +158 -0
- package/src/edge/echo-edge-subduction-replicator.ts +377 -0
- package/src/edge/index.ts +1 -0
- package/src/filter/filter-match.test.ts +68 -32
- package/src/filter/filter-match.ts +184 -20
- package/src/metadata/metadata-store.ts +11 -8
- package/src/pipeline/pipeline-stress.test.ts +1 -1
- package/src/pipeline/pipeline.test.ts +2 -2
- package/src/pipeline/pipeline.ts +9 -7
- package/src/query/errors.ts +3 -1
- package/src/query/plan.ts +82 -8
- package/src/query/query-executor.ts +1199 -164
- package/src/query/query-planner.test.ts +993 -81
- package/src/query/query-planner.ts +467 -27
- package/src/space/admission-discovery-extension.ts +3 -3
- package/src/space/auth.ts +6 -6
- package/src/space/control-pipeline.test.ts +5 -4
- package/src/space/control-pipeline.ts +16 -13
- package/src/space/space-manager.browser.test.ts +1 -1
- package/src/space/space-manager.ts +16 -20
- package/src/space/space-protocol.browser.test.ts +15 -14
- package/src/space/space-protocol.test.ts +15 -14
- package/src/space/space-protocol.ts +22 -18
- package/src/space/space.test.ts +3 -3
- package/src/space/space.ts +11 -11
- package/src/testing/index.ts +0 -2
- package/src/testing/test-agent-builder.ts +3 -3
- package/src/testing/test-network-adapter.ts +24 -3
- package/src/testing/test-replicator.ts +19 -20
- 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 +0 -4743
- 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
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
import { type Heads } from '@automerge/automerge';
|
|
2
|
+
import { type DocumentId } from '@automerge/automerge-repo';
|
|
3
|
+
import { type Context } from '@dxos/context';
|
|
1
4
|
import { type PublicKey, type SpaceId } from '@dxos/keys';
|
|
2
|
-
import type
|
|
3
|
-
export interface
|
|
5
|
+
import { type AutomergeProtocolMessage } from '@dxos/protocols';
|
|
6
|
+
export interface AutomergeReplicator {
|
|
4
7
|
/**
|
|
5
8
|
* Called on when replicator is added to EchoHost.
|
|
6
9
|
*/
|
|
7
|
-
connect(context:
|
|
10
|
+
connect(ctx: Context, context: AutomergeReplicatorContext): Promise<void>;
|
|
8
11
|
/**
|
|
9
12
|
* Called on when replicator is removed from EchoHost.
|
|
10
13
|
*/
|
|
11
14
|
disconnect(): Promise<void>;
|
|
12
15
|
}
|
|
13
|
-
export interface
|
|
16
|
+
export interface AutomergeReplicatorContext {
|
|
14
17
|
/**
|
|
15
18
|
* Our own peer id.
|
|
16
19
|
*/
|
|
@@ -20,14 +23,17 @@ export interface EchoReplicatorContext {
|
|
|
20
23
|
*/
|
|
21
24
|
getContainingSpaceForDocument(documentId: string): Promise<PublicKey | null>;
|
|
22
25
|
getContainingSpaceIdForDocument(documentId: string): Promise<SpaceId | null>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Returns false if collection sync hasn't happened yet.
|
|
28
|
+
*/
|
|
29
|
+
isDocumentInRemoteCollection(params: RemoteDocumentExistenceCheckProps): Promise<boolean>;
|
|
30
|
+
onConnectionOpen(connection: AutomergeReplicatorConnection): void;
|
|
31
|
+
onConnectionClosed(connection: AutomergeReplicatorConnection): void;
|
|
32
|
+
onConnectionAuthScopeChanged(connection: AutomergeReplicatorConnection): void;
|
|
27
33
|
}
|
|
28
|
-
export interface
|
|
34
|
+
export interface AutomergeReplicatorConnection {
|
|
29
35
|
/**
|
|
30
|
-
*
|
|
36
|
+
* Remote peer id.
|
|
31
37
|
*/
|
|
32
38
|
get peerId(): string;
|
|
33
39
|
/**
|
|
@@ -42,19 +48,36 @@ export interface ReplicatorConnection {
|
|
|
42
48
|
* @returns true if the document should be advertised to this peer.
|
|
43
49
|
* The remote peer can still request the document by its id bypassing this check.
|
|
44
50
|
*/
|
|
45
|
-
shouldAdvertise(params:
|
|
51
|
+
shouldAdvertise(params: ShouldAdvertiseProps): Promise<boolean>;
|
|
46
52
|
/**
|
|
47
53
|
* @returns true if the collection should be synced to this peer.
|
|
48
54
|
*/
|
|
49
|
-
shouldSyncCollection(params:
|
|
55
|
+
shouldSyncCollection(params: ShouldSyncCollectionProps): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Batch syncing considered enabled if AutomergeReplicatorConnection implements `pushBatch` and `pullBatch` methods.
|
|
58
|
+
* @returns true if the batch syncing is enabled.
|
|
59
|
+
*/
|
|
60
|
+
get bundleSyncEnabled(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Pushes the batch of documents to the remote peer.
|
|
63
|
+
*/
|
|
64
|
+
pushBundle?(ctx: Context, bundle: {
|
|
65
|
+
documentId: DocumentId;
|
|
66
|
+
data: Uint8Array;
|
|
67
|
+
heads: Heads;
|
|
68
|
+
}[]): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Pulls the batch of documents from the remote peer.
|
|
71
|
+
*/
|
|
72
|
+
pullBundle?(ctx: Context, docHeads: Record<DocumentId, Heads>): Promise<Record<DocumentId, Uint8Array>>;
|
|
50
73
|
}
|
|
51
|
-
export type
|
|
74
|
+
export type ShouldAdvertiseProps = {
|
|
52
75
|
documentId: string;
|
|
53
76
|
};
|
|
54
|
-
export type
|
|
77
|
+
export type ShouldSyncCollectionProps = {
|
|
55
78
|
collectionId: string;
|
|
56
79
|
};
|
|
57
|
-
export type
|
|
80
|
+
export type RemoteDocumentExistenceCheckProps = {
|
|
58
81
|
peerId: string;
|
|
59
82
|
documentId: string;
|
|
60
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo-replicator.d.ts","sourceRoot":"","sources":["../../../../src/automerge/echo-replicator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"echo-replicator.d.ts","sourceRoot":"","sources":["../../../../src/automerge/echo-replicator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAGhE,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAAC;IAErB;;OAEG;IACH,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC7E,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE7E;;OAEG;IACH,4BAA4B,CAAC,MAAM,EAAE,iCAAiC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F,gBAAgB,CAAC,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC;IAClE,kBAAkB,CAAC,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACpE,4BAA4B,CAAC,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC;CAC/E;AAED,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAEnD;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC;IAEjE;;;OAGG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAAC;IAEjC;;OAEG;IACH,UAAU,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/G;;OAEG;IAEH,UAAU,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;CACzG;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type DocumentId, type QueryState, type Repo } from '@automerge/automerge-repo';
|
|
2
|
+
/**
|
|
3
|
+
* Variants reported by {@link QueryState}: `'loading' | 'ready' | 'unavailable' | 'failed'`.
|
|
4
|
+
*/
|
|
5
|
+
export type HandleQueryState = QueryState<unknown>['state'];
|
|
6
|
+
/**
|
|
7
|
+
* Returns the {@link QueryState} variant for a document already known to the
|
|
8
|
+
* repo (i.e. one for which a handle has been registered via `Repo.find` /
|
|
9
|
+
* `Repo.findWithProgress` / `Repo.create`), or `undefined` if no handle/query
|
|
10
|
+
* exists for this document yet.
|
|
11
|
+
*
|
|
12
|
+
* Use this anywhere you need to ask "is this document loaded?" / "did sync
|
|
13
|
+
* give up?" — read the result against the {@link HandleQueryState} variants
|
|
14
|
+
* (e.g. `=== 'ready'`).
|
|
15
|
+
*
|
|
16
|
+
* # Why we can't just call `DocHandle.isReady()` / read `DocHandle.state`
|
|
17
|
+
*
|
|
18
|
+
* The current subduction fork of `@automerge/automerge-repo`
|
|
19
|
+
* (`2.6.0-subduction.10`) **gutted** the per-handle state machine. Inside the
|
|
20
|
+
* fork, every `DocHandle` state predicate is a constant placeholder:
|
|
21
|
+
*
|
|
22
|
+
* ```
|
|
23
|
+
* isReady = () => true
|
|
24
|
+
* isUnloaded = () => false
|
|
25
|
+
* isDeleted = () => false
|
|
26
|
+
* isUnavailable = () => false
|
|
27
|
+
* inState = (states) => states.includes('ready')
|
|
28
|
+
* get state = () => 'ready'
|
|
29
|
+
* whenReady = async () => {} // resolves immediately, ignores argument
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* That means `handle.isReady()` always lies "yes", `handle.state` always reads
|
|
33
|
+
* `'ready'`, and `await handle.whenReady()` never blocks — even for handles
|
|
34
|
+
* whose document has never been loaded from storage or synced from a peer.
|
|
35
|
+
* Reading `handle.doc()` on such a "ready" handle returns the empty initial
|
|
36
|
+
* doc (`A.init()` or `A.emptyChange(A.init())`) rather than throwing or
|
|
37
|
+
* returning undefined, which can silently corrupt downstream logic that
|
|
38
|
+
* trusted the handle's `isReady()` signal.
|
|
39
|
+
*
|
|
40
|
+
* Real liveness moved to the {@link DocumentQuery} returned by
|
|
41
|
+
* `Repo.findWithProgress`, whose state goes through
|
|
42
|
+
* `'loading' → 'ready' | 'unavailable' | 'failed'`. Production code that
|
|
43
|
+
* needs to know whether a document is actually loaded must consult the query
|
|
44
|
+
* state through this helper instead of any `DocHandle.*` predicate.
|
|
45
|
+
*
|
|
46
|
+
* TODO(mykola): Remove this helper once the fork either (a) restores the
|
|
47
|
+
* `DocHandle` state machine, or (b) every caller is migrated to query
|
|
48
|
+
* `DocumentProgress` directly with a richer API surface (await on state
|
|
49
|
+
* transitions, etc.).
|
|
50
|
+
*/
|
|
51
|
+
export declare const getHandleState: (repo: Repo, documentId: DocumentId) => HandleQueryState | undefined;
|
|
52
|
+
//# sourceMappingURL=handle-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-state.d.ts","sourceRoot":"","sources":["../../../../src/automerge/handle-state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,cAAc,SAAU,IAAI,cAAc,UAAU,KAAG,gBAAgB,GAAG,SAKtF,CAAC"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import type { Heads } from '@automerge/automerge';
|
|
2
2
|
import type { DocumentId } from '@automerge/automerge-repo';
|
|
3
3
|
import type { BatchLevel, SublevelDB } from '@dxos/kv-store';
|
|
4
|
-
export type
|
|
4
|
+
export type HeadsStoreProps = {
|
|
5
5
|
db: SublevelDB;
|
|
6
6
|
};
|
|
7
7
|
export declare class HeadsStore {
|
|
8
8
|
private readonly _db;
|
|
9
|
-
constructor({ db }:
|
|
9
|
+
constructor({ db }: HeadsStoreProps);
|
|
10
10
|
setHeads(documentId: DocumentId, heads: Heads, batch: BatchLevel): void;
|
|
11
11
|
getHeads(documentIds: DocumentId[]): Promise<Array<Heads | undefined>>;
|
|
12
|
+
/**
|
|
13
|
+
* Iterate over all document IDs and their heads.
|
|
14
|
+
*/
|
|
15
|
+
iterateAll(): AsyncGenerator<{
|
|
16
|
+
documentId: DocumentId;
|
|
17
|
+
heads: Heads;
|
|
18
|
+
}>;
|
|
12
19
|
}
|
|
13
20
|
//# sourceMappingURL=heads-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heads-store.d.ts","sourceRoot":"","sources":["../../../../src/automerge/heads-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"heads-store.d.ts","sourceRoot":"","sources":["../../../../src/automerge/heads-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4B7D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC;AAEF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IAEjC,YAAY,EAAE,EAAE,EAAE,EAAE,eAAe,EAElC;IAED,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAMtE;IAGK,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAK3E;IAED;;OAEG;IACI,UAAU,IAAI,cAAc,CAAC;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAO5E;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './automerge-host';
|
|
2
|
+
export * from './handle-state';
|
|
2
3
|
export * from './leveldb-storage-adapter';
|
|
3
4
|
export * from './mesh-echo-replicator';
|
|
4
|
-
export * from './echo-replicator';
|
|
5
|
+
export type * from './echo-replicator';
|
|
5
6
|
export { diffCollectionState } from './collection-synchronizer';
|
|
6
7
|
export * from './space-collection';
|
|
7
8
|
export * from './echo-data-monitor';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,mBAAmB,mBAAmB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Chunk, type StorageAdapterInterface, type StorageKey } from '@automerge/automerge-repo';
|
|
2
2
|
import { type MixedEncoding } from 'level-transcoder';
|
|
3
3
|
import { Resource } from '@dxos/context';
|
|
4
4
|
import { type BatchLevel, type SublevelDB } from '@dxos/kv-store';
|
|
@@ -9,24 +9,28 @@ export interface StorageAdapterDataMonitor {
|
|
|
9
9
|
recordLoadDuration(durationMs: number): void;
|
|
10
10
|
recordStoreDuration(durationMs: number): void;
|
|
11
11
|
}
|
|
12
|
-
export type
|
|
12
|
+
export type LevelDBStorageAdapterProps = {
|
|
13
13
|
db: SublevelDB;
|
|
14
14
|
callbacks?: StorageCallbacks;
|
|
15
15
|
monitor?: StorageAdapterDataMonitor;
|
|
16
16
|
};
|
|
17
|
-
export type
|
|
17
|
+
export type BeforeSaveProps = {
|
|
18
18
|
path: StorageKey;
|
|
19
19
|
batch: BatchLevel;
|
|
20
20
|
};
|
|
21
21
|
export interface StorageCallbacks {
|
|
22
|
-
beforeSave(params:
|
|
22
|
+
beforeSave(params: BeforeSaveProps): MaybePromise<void>;
|
|
23
23
|
afterSave(path: StorageKey): MaybePromise<void>;
|
|
24
24
|
}
|
|
25
25
|
export declare class LevelDBStorageAdapter extends Resource implements StorageAdapterInterface {
|
|
26
26
|
private readonly _params;
|
|
27
|
-
constructor(_params:
|
|
27
|
+
constructor(_params: LevelDBStorageAdapterProps);
|
|
28
28
|
load(keyArray: StorageKey): Promise<Uint8Array | undefined>;
|
|
29
29
|
save(keyArray: StorageKey, binary: Uint8Array): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Atomically persist multiple key/value entries in a single LevelDB batch write.
|
|
32
|
+
*/
|
|
33
|
+
saveBatch(entries: Array<[StorageKey, Uint8Array]>): Promise<void>;
|
|
30
34
|
remove(keyArray: StorageKey): Promise<void>;
|
|
31
35
|
loadRange(keyPrefix: StorageKey): Promise<Chunk[]>;
|
|
32
36
|
removeRange(keyPrefix: StorageKey): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leveldb-storage-adapter.d.ts","sourceRoot":"","sources":["../../../../src/automerge/leveldb-storage-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"leveldb-storage-adapter.d.ts","sourceRoot":"","sources":["../../../../src/automerge/leveldb-storage-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,uBAAuB,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,qBAAa,qBAAsB,SAAQ,QAAS,YAAW,uBAAuB;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,0BAA0B,EAE/D;IAEK,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAiBhE;IAEK,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlE;IAED;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvE;IAEK,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAEK,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAmBvD;IAEK,WAAW,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CActD;CACF;AAaD,eAAO,MAAM,eAAe;IAC1B,WAAW;IACX,aAAa;CACd,CAAC"}
|
|
@@ -2,16 +2,16 @@ import { Resource } from '@dxos/context';
|
|
|
2
2
|
import { type PublicKey } from '@dxos/keys';
|
|
3
3
|
import type { AutomergeProtocolMessage } from '@dxos/protocols';
|
|
4
4
|
import { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';
|
|
5
|
-
import type {
|
|
6
|
-
export type
|
|
5
|
+
import type { AutomergeReplicatorConnection, ShouldAdvertiseProps, ShouldSyncCollectionProps } from './echo-replicator';
|
|
6
|
+
export type MeshReplicatorConnectionProps = {
|
|
7
7
|
ownPeerId: string;
|
|
8
8
|
onRemoteConnected: () => void;
|
|
9
9
|
onRemoteDisconnected: () => void;
|
|
10
|
-
shouldAdvertise: (params:
|
|
11
|
-
shouldSyncCollection: (params:
|
|
10
|
+
shouldAdvertise: (params: ShouldAdvertiseProps) => Promise<boolean>;
|
|
11
|
+
shouldSyncCollection: (params: ShouldSyncCollectionProps) => boolean;
|
|
12
12
|
replicatorFactory?: AutomergeReplicatorFactory;
|
|
13
13
|
};
|
|
14
|
-
export declare class MeshReplicatorConnection extends Resource implements
|
|
14
|
+
export declare class MeshReplicatorConnection extends Resource implements AutomergeReplicatorConnection {
|
|
15
15
|
private readonly _params;
|
|
16
16
|
readable: ReadableStream<AutomergeProtocolMessage>;
|
|
17
17
|
writable: WritableStream<AutomergeProtocolMessage>;
|
|
@@ -19,12 +19,13 @@ export declare class MeshReplicatorConnection extends Resource implements Replic
|
|
|
19
19
|
readonly replicatorExtension: AutomergeReplicator;
|
|
20
20
|
private _remotePeerId;
|
|
21
21
|
private _isEnabled;
|
|
22
|
-
constructor(_params:
|
|
22
|
+
constructor(_params: MeshReplicatorConnectionProps);
|
|
23
23
|
private _disconnectIfEnabled;
|
|
24
24
|
get peerId(): string;
|
|
25
25
|
get isEnabled(): boolean;
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
get bundleSyncEnabled(): boolean;
|
|
27
|
+
shouldAdvertise(params: ShouldAdvertiseProps): Promise<boolean>;
|
|
28
|
+
shouldSyncCollection(params: ShouldSyncCollectionProps): boolean;
|
|
28
29
|
/**
|
|
29
30
|
* Start exchanging messages with the remote peer.
|
|
30
31
|
* Call after the remote peer has connected.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-echo-replicator-connection.d.ts","sourceRoot":"","sources":["../../../../src/automerge/mesh-echo-replicator-connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAErH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mesh-echo-replicator-connection.d.ts","sourceRoot":"","sources":["../../../../src/automerge/mesh-echo-replicator-connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAErH,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAIxH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,eAAe,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,oBAAoB,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,OAAO,CAAC;IACrE,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;CAChD,CAAC;AAEF,qBAAa,wBAAyB,SAAQ,QAAS,YAAW,6BAA6B;IAUjF,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT7B,QAAQ,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACnD,QAAQ,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACnD,eAAe,EAAE,SAAS,GAAG,IAAI,CAAQ;IAEhD,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC;IAEzD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAE3B,YAA6B,OAAO,EAAE,6BAA6B,EA2DlE;IAED,OAAO,CAAC,oBAAoB;IAM5B,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAEK,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE;IAED,oBAAoB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAE/D;IAED;;;OAGG;IACH,MAAM,IAAI,IAAI,CAGb;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAEd;CACF"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { type Context } from '@dxos/context';
|
|
1
2
|
import { PublicKey } from '@dxos/keys';
|
|
2
|
-
import
|
|
3
|
-
import { type
|
|
3
|
+
import type * as TeleportAutomergeReplicator from '@dxos/teleport-extension-automerge-replicator';
|
|
4
|
+
import { type AutomergeReplicator, type AutomergeReplicatorContext } from './echo-replicator';
|
|
4
5
|
/**
|
|
5
6
|
* Used to replicate with other peers over the network.
|
|
6
7
|
*/
|
|
7
|
-
export declare class MeshEchoReplicator implements
|
|
8
|
+
export declare class MeshEchoReplicator implements AutomergeReplicator {
|
|
8
9
|
/**
|
|
9
10
|
* We might have multiple connections open with a peer (one per space), but there'll be only one enabled
|
|
10
11
|
* connection at any given moment, because there's a single repo for all the spaces.
|
|
@@ -21,9 +22,9 @@ export declare class MeshEchoReplicator implements EchoReplicator {
|
|
|
21
22
|
*/
|
|
22
23
|
private readonly _authorizedDevices;
|
|
23
24
|
private _context;
|
|
24
|
-
connect(context:
|
|
25
|
+
connect(_ctx: Context, context: AutomergeReplicatorContext): Promise<void>;
|
|
25
26
|
disconnect(): Promise<void>;
|
|
26
|
-
createExtension(extensionFactory?: AutomergeReplicatorFactory): AutomergeReplicator;
|
|
27
|
+
createExtension(extensionFactory?: TeleportAutomergeReplicator.AutomergeReplicatorFactory): TeleportAutomergeReplicator.AutomergeReplicator;
|
|
27
28
|
authorizeDevice(spaceKey: PublicKey, deviceKey: PublicKey): Promise<void>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=mesh-echo-replicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-echo-replicator.d.ts","sourceRoot":"","sources":["../../../../src/automerge/mesh-echo-replicator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mesh-echo-replicator.d.ts","sourceRoot":"","sources":["../../../../src/automerge/mesh-echo-replicator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAC;AAErD,OAAO,KAAK,KAAK,2BAA2B,MAAM,+CAA+C,CAAC;AAIlG,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAEhC,MAAM,mBAAmB,CAAC;AAM3B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiD;IACrF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IAEpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAEhF,OAAO,CAAC,QAAQ,CAA2C;IAErD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAehC;IAED,eAAe,CACb,gBAAgB,CAAC,EAAE,2BAA2B,CAAC,0BAA0B,GACxE,2BAA2B,CAAC,mBAAmB,CAoHjD;IAEK,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9E;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-protocol.d.ts","sourceRoot":"","sources":["../../../../src/automerge/network-protocol.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,CAAC;AAEpE,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"network-protocol.d.ts","sourceRoot":"","sources":["../../../../src/automerge/network-protocol.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,CAAC;AAEpE,eAAO,MAAM,wBAAwB,YAAa,OAAO,KAAG,OAAO,IAAI,sBACvB,CAAC;AAEjD,eAAO,MAAM,wBAAwB,YAAa,OAAO,KAAG,OAAO,IAAI,sBACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-collection.d.ts","sourceRoot":"","sources":["../../../../src/automerge/space-collection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"space-collection.d.ts","sourceRoot":"","sources":["../../../../src/automerge/space-collection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,6BAA6B,YAAa,OAAO,mBAAmB,UAAU,KAAG,YACA,CAAC;AAE/F,eAAO,MAAM,0BAA0B,iBAAkB,YAAY,KAAG,OAIvE,CAAC"}
|
|
@@ -7,5 +7,5 @@ export declare const codec: Codec<FeedMessage>;
|
|
|
7
7
|
/**
|
|
8
8
|
* Value encoding used by feed store.
|
|
9
9
|
*/
|
|
10
|
-
export declare const valueEncoding: import("hypercore").AbstractValueEncoding<FeedMessage>;
|
|
10
|
+
export declare const valueEncoding: import("@dxos/vendor-hypercore/hypercore").AbstractValueEncoding<FeedMessage>;
|
|
11
11
|
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../src/common/codec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,WAAW,CAAwD,CAAC;AAE9F;;GAEG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../src/common/codec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,WAAW,CAAwD,CAAC;AAE9F;;GAEG;AACH,eAAO,MAAM,aAAa,+EAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../src/common/feeds.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,EAAE,EAAE,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../src/common/feeds.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,EAAE,EAAE,MAAM,SAAS,EAAE,UACjE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,UACrC,UAAU,CAAC,MAAM,CAAC,KACzB,UAAU,CAAC,MAAM,CAOnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-id.d.ts","sourceRoot":"","sources":["../../../../src/common/space-id.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"space-id.d.ts","sourceRoot":"","sources":["../../../../src/common/space-id.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aAAoB,SAAS,KAAG,OAAO,CAAC,OAAO,CAY/E,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as A from '@automerge/automerge';
|
|
2
|
+
import * as Effect from 'effect/Effect';
|
|
3
|
+
import { type Context } from '@dxos/context';
|
|
4
|
+
import { type DataSourceCursor, type IndexDataSource, type IndexerObject } from '@dxos/index-core';
|
|
5
|
+
import { type AutomergeHost } from '../automerge';
|
|
6
|
+
/**
|
|
7
|
+
* Codec for serializing/deserializing Automerge heads to cursor strings.
|
|
8
|
+
*/
|
|
9
|
+
export declare const headsCodec: {
|
|
10
|
+
/**
|
|
11
|
+
* Serialize automerge heads to a cursor string.
|
|
12
|
+
* Heads are sorted to ensure consistent comparison.
|
|
13
|
+
*/
|
|
14
|
+
encode: (heads: A.Heads) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Deserialize a cursor string back to heads array.
|
|
17
|
+
*/
|
|
18
|
+
decode: (cursor: string) => string[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Data source that fetches objects from AutomergeHost.
|
|
22
|
+
* Iterates all documents from HeadsStore and tracks document heads as cursors to detect changes.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AutomergeDataSource implements IndexDataSource {
|
|
25
|
+
#private;
|
|
26
|
+
readonly sourceName = "automerge";
|
|
27
|
+
constructor(automergeHost: AutomergeHost);
|
|
28
|
+
getChangedObjects(ctx: Context, cursors: DataSourceCursor[], opts?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
}): Effect.Effect<{
|
|
31
|
+
objects: IndexerObject[];
|
|
32
|
+
cursors: DataSourceCursor[];
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=automerge-data-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automerge-data-source.d.ts","sourceRoot":"","sources":["../../../../src/db-host/automerge-data-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAInG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;;OAGG;IACH,MAAM,UAAU,CAAC,CAAC,KAAK,KAAG,MAAM;IAEhC;;OAEG;IACH,MAAM,WAAW,MAAM,KAAG,MAAM,EAAE;CACnC,CAAC;AAYF;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,eAAe;;IACzD,QAAQ,CAAC,UAAU,eAAe;IAIlC,YAAY,aAAa,EAAE,aAAa,EAEvC;IAED,iBAAiB,CACf,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,gBAAgB,EAAE,EAC3B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxB,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAqF1E;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automerge-data-source.test.d.ts","sourceRoot":"","sources":["../../../../src/db-host/automerge-data-source.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge-metrics.d.ts","sourceRoot":"","sources":["../../../../src/db-host/automerge-metrics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAI1C,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"automerge-metrics.d.ts","sourceRoot":"","sources":["../../../../src/db-host/automerge-metrics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAI1C,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAG,UAqBnD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type RequestOptions } from '@dxos/codec-protobuf';
|
|
2
2
|
import { Stream } from '@dxos/codec-protobuf/stream';
|
|
3
|
-
import { type
|
|
4
|
-
import { type SpaceStateManager } from './space-state-manager';
|
|
3
|
+
import { type BatchedDocumentUpdates, type CreateDocumentRequest, type CreateDocumentResponse, type DataService, type FlushRequest, type GetDocumentHeadsRequest, type GetDocumentHeadsResponse, type GetSpaceSyncStateRequest, type ReIndexHeadsRequest, type SpaceSyncState, type SubscribeRequest, type UpdateRequest, type UpdateSubscriptionRequest, type WaitUntilHeadsReplicatedRequest } from '@dxos/protocols/proto/dxos/echo/service';
|
|
5
4
|
import { type AutomergeHost } from '../automerge';
|
|
6
|
-
|
|
5
|
+
import { type SpaceStateManager } from './space-state-manager';
|
|
6
|
+
export type DataServiceProps = {
|
|
7
7
|
automergeHost: AutomergeHost;
|
|
8
8
|
spaceStateManager: SpaceStateManager;
|
|
9
9
|
updateIndexes: () => Promise<void>;
|
|
@@ -20,14 +20,15 @@ export declare class DataServiceImpl implements DataService {
|
|
|
20
20
|
private readonly _automergeHost;
|
|
21
21
|
private readonly _spaceStateManager;
|
|
22
22
|
private readonly _updateIndexes;
|
|
23
|
-
constructor(params:
|
|
23
|
+
constructor(params: DataServiceProps);
|
|
24
24
|
subscribe(request: SubscribeRequest): Stream<BatchedDocumentUpdates>;
|
|
25
25
|
updateSubscription(request: UpdateSubscriptionRequest): Promise<void>;
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
createDocument(request: CreateDocumentRequest): Promise<CreateDocumentResponse>;
|
|
27
|
+
update(request: UpdateRequest, options?: RequestOptions): Promise<void>;
|
|
28
|
+
flush(request: FlushRequest, options?: RequestOptions): Promise<void>;
|
|
28
29
|
getDocumentHeads(request: GetDocumentHeadsRequest): Promise<GetDocumentHeadsResponse>;
|
|
29
30
|
waitUntilHeadsReplicated(request: WaitUntilHeadsReplicatedRequest, options?: RequestOptions | undefined): Promise<void>;
|
|
30
|
-
reIndexHeads(request: ReIndexHeadsRequest,
|
|
31
|
+
reIndexHeads(request: ReIndexHeadsRequest, _options?: RequestOptions): Promise<void>;
|
|
31
32
|
updateIndexes(): Promise<void>;
|
|
32
33
|
subscribeSpaceSyncState(request: GetSpaceSyncStateRequest): Stream<SpaceSyncState>;
|
|
33
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../../../src/db-host/data-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../../../src/db-host/data-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAKrD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACrC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,KAAK,aAAa,EAAiC,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF;;GAEG;AAEH,qBAAa,eAAgB,YAAW,WAAW;IACjD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;IAE3E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IAErD,YAAY,MAAM,EAAE,gBAAgB,EAInC;IAED,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAenE;IAEK,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1E;IAEK,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAGpF;IAEK,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;IAEK,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;IAEK,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAW1F;IAEK,wBAAwB,CAC5B,OAAO,EAAE,+BAA+B,EACxC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,GACnC,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;IAEK,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnC;IAED,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAAC,cAAc,CAAC,CA4BjF;CACF"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type * as A from '@automerge/automerge';
|
|
2
|
-
import { type AutomergeUrl, type DocHandle, type DocumentId } from '@automerge/automerge-repo';
|
|
2
|
+
import { type AutomergeUrl, type DocHandle, type DocumentId, type DocumentQuery } from '@automerge/automerge-repo';
|
|
3
3
|
import { DatabaseDirectory, SpaceDocVersion } from '@dxos/echo-protocol';
|
|
4
4
|
import { type DocMetrics } from './automerge-metrics';
|
|
5
5
|
export declare class DatabaseRoot {
|
|
6
|
-
private readonly
|
|
6
|
+
private readonly _query;
|
|
7
7
|
static mapLinks(doc: DocHandle<DatabaseDirectory>, mapping: Record<DocumentId, DocumentId>): void;
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @param _query - Live `DocumentQuery` for the root doc. Carries both the
|
|
10
|
+
* `DocHandle` (synchronously created with the query) and the actual
|
|
11
|
+
* readiness state. See `getHandleState` in `@dxos/echo-pipeline` for why
|
|
12
|
+
* we read liveness off the query rather than `DocHandle.*` predicates.
|
|
13
|
+
*/
|
|
14
|
+
constructor(_query: DocumentQuery<DatabaseDirectory>);
|
|
9
15
|
get documentId(): DocumentId;
|
|
10
16
|
get url(): AutomergeUrl;
|
|
11
17
|
get isLoaded(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-root.d.ts","sourceRoot":"","sources":["../../../../src/db-host/database-root.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"database-root.d.ts","sourceRoot":"","sources":["../../../../src/db-host/database-root.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,qBAAqB,CAAC;AAEzE,qBAAa,YAAY;IAqBX,OAAO,CAAC,QAAQ,CAAC,MAAM;IApBnC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI,CAYhG;IAED;;;;;OAKG;IACH,YAA6B,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAI;IAEzE,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,GAAG,iBAEN;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAEzC;IAED,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAErC;IAED,UAAU,IAAI,eAAe,GAAG,IAAI,CAOnC;IAED,WAAW,IAAI,MAAM,GAAG,IAAI,CAO3B;IAED,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAOpC;IAED,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAOpC;IAED,qBAAqB,IAAI,YAAY,EAAE,CAMtC;IAED,cAAc,IAAI,UAAU,GAAG,IAAI,CAMlC;CACF"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type Heads } from '@automerge/automerge';
|
|
2
|
-
import { type
|
|
3
|
-
import { Resource } from '@dxos/context';
|
|
2
|
+
import { type DocumentId, type DocumentQuery } from '@automerge/automerge-repo';
|
|
3
|
+
import { Context, Resource } from '@dxos/context';
|
|
4
4
|
import { type DatabaseDirectory } from '@dxos/echo-protocol';
|
|
5
5
|
import { type BatchedDocumentUpdates, type DocumentUpdate } from '@dxos/protocols/proto/dxos/echo/service';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import type { AutomergeHost } from '../automerge';
|
|
7
|
+
export type DocumentsSynchronizerProps = {
|
|
8
|
+
automergeHost: AutomergeHost;
|
|
8
9
|
sendUpdates: (updates: BatchedDocumentUpdates) => void;
|
|
9
10
|
};
|
|
10
11
|
interface DocSyncState {
|
|
11
|
-
|
|
12
|
+
docQuery: DocumentQuery<DatabaseDirectory>;
|
|
12
13
|
lastSentHead?: Heads;
|
|
13
14
|
clearSubscriptions?: () => void;
|
|
14
15
|
}
|
|
@@ -27,12 +28,12 @@ export declare class DocumentsSynchronizer extends Resource {
|
|
|
27
28
|
* Job that schedules if there are pending updates.
|
|
28
29
|
*/
|
|
29
30
|
private _sendUpdatesJob?;
|
|
30
|
-
constructor(_params:
|
|
31
|
-
addDocuments(documentIds: DocumentId[]
|
|
31
|
+
constructor(_params: DocumentsSynchronizerProps);
|
|
32
|
+
addDocuments(documentIds: DocumentId[]): Promise<void>;
|
|
32
33
|
removeDocuments(documentIds: DocumentId[]): void;
|
|
33
34
|
protected _open(): Promise<void>;
|
|
34
35
|
protected _close(): Promise<void>;
|
|
35
|
-
update(updates: DocumentUpdate[]): Promise<void>;
|
|
36
|
+
update(ctx: Context, updates: DocumentUpdate[]): Promise<void>;
|
|
36
37
|
private _startSync;
|
|
37
38
|
_subscribeForChanges(syncState: DocSyncState): void;
|
|
38
39
|
private _checkAndSendUpdates;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents-synchronizer.d.ts","sourceRoot":"","sources":["../../../../src/db-host/documents-synchronizer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"documents-synchronizer.d.ts","sourceRoot":"","sources":["../../../../src/db-host/documents-synchronizer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,OAAO,EAAkB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAG3G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,UAAU,YAAY;IACpB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAKD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IAarC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAA8B;IAEtD,YAA6B,OAAO,EAAE,0BAA0B,EAE/D;IAEK,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B3D;IAED,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAM/C;IAED,UAAyB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9C;IAED,UAAyB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C;IAEK,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnE;IAED,OAAO,CAAC,UAAU;IAYlB,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAOlD;YAEa,oBAAoB;IAqBlC,OAAO,CAAC,kBAAkB;YAmBZ,cAAc;CAiB7B"}
|