@dxos/echo-pipeline 0.4.8-next.fff1521 → 0.4.9-main.1057b49
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-3FVT6KX6.mjs → chunk-RTEEJ723.mjs} +289 -1807
- package/dist/lib/browser/chunk-RTEEJ723.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +633 -14
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +4 -332
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/chunk-7VZVCCNF.cjs +1948 -0
- package/dist/lib/node/chunk-7VZVCCNF.cjs.map +7 -0
- package/dist/lib/node/index.cjs +643 -34
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +13 -338
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/db-host/data-service.d.ts +3 -13
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +0 -2
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/index.d.ts +0 -1
- package/dist/types/src/space/index.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +1 -4
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +1 -7
- 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 +1 -3
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/package.json +30 -33
- package/src/automerge/automerge-host.ts +1 -1
- package/src/db-host/data-service.ts +10 -56
- package/src/db-host/index.ts +0 -2
- package/src/space/control-pipeline.ts +3 -1
- package/src/space/index.ts +0 -1
- package/src/space/space-manager.ts +1 -13
- package/src/space/space.test.ts +2 -112
- package/src/space/space.ts +2 -60
- package/src/testing/index.ts +0 -2
- package/src/testing/test-agent-builder.ts +3 -8
- package/dist/lib/browser/chunk-3FVT6KX6.mjs.map +0 -7
- package/dist/lib/node/chunk-WZ4WTAN6.cjs +0 -3454
- package/dist/lib/node/chunk-WZ4WTAN6.cjs.map +0 -7
- package/dist/types/src/db-host/data-service-host.d.ts +0 -38
- package/dist/types/src/db-host/data-service-host.d.ts.map +0 -1
- package/dist/types/src/db-host/database-host.d.ts +0 -27
- package/dist/types/src/db-host/database-host.d.ts.map +0 -1
- package/dist/types/src/space/data-pipeline.d.ts +0 -80
- package/dist/types/src/space/data-pipeline.d.ts.map +0 -1
- package/dist/types/src/space/data-pipeline.test.d.ts +0 -1
- package/dist/types/src/space/data-pipeline.test.d.ts.map +0 -1
- package/dist/types/src/testing/database-test-rig.d.ts +0 -67
- package/dist/types/src/testing/database-test-rig.d.ts.map +0 -1
- package/dist/types/src/testing/util.d.ts +0 -14
- package/dist/types/src/testing/util.d.ts.map +0 -1
- package/dist/types/src/tests/database.test.d.ts +0 -2
- package/dist/types/src/tests/database.test.d.ts.map +0 -1
- package/src/db-host/data-service-host.ts +0 -233
- package/src/db-host/database-host.ts +0 -63
- package/src/space/data-pipeline.test.ts +0 -3
- package/src/space/data-pipeline.ts +0 -468
- package/src/testing/database-test-rig.ts +0 -289
- package/src/testing/util.ts +0 -85
- package/src/tests/database.test.ts +0 -100
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/space/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/space/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type FeedStore } from '@dxos/feed-store';
|
|
2
2
|
import { PublicKey } from '@dxos/keys';
|
|
3
|
-
import { type ModelFactory } from '@dxos/model-factory';
|
|
4
3
|
import { type NetworkManager } from '@dxos/network-manager';
|
|
5
4
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
6
5
|
import { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
@@ -14,7 +13,6 @@ import { type MetadataStore } from '../metadata';
|
|
|
14
13
|
export type SpaceManagerParams = {
|
|
15
14
|
feedStore: FeedStore<FeedMessage>;
|
|
16
15
|
networkManager: NetworkManager;
|
|
17
|
-
modelFactory: ModelFactory;
|
|
18
16
|
metadataStore: MetadataStore;
|
|
19
17
|
/**
|
|
20
18
|
* @deprecated Replaced by BlobStore.
|
|
@@ -39,12 +37,11 @@ export declare class SpaceManager {
|
|
|
39
37
|
private readonly _spaces;
|
|
40
38
|
private readonly _feedStore;
|
|
41
39
|
private readonly _networkManager;
|
|
42
|
-
private readonly _modelFactory;
|
|
43
40
|
private readonly _metadataStore;
|
|
44
41
|
private readonly _snapshotStore;
|
|
45
42
|
private readonly _blobStore;
|
|
46
43
|
private readonly _instanceId;
|
|
47
|
-
constructor({ feedStore, networkManager,
|
|
44
|
+
constructor({ feedStore, networkManager, metadataStore, snapshotStore, blobStore }: SpaceManagerParams);
|
|
48
45
|
get spaces(): ComplexMap<PublicKey, Space>;
|
|
49
46
|
open(): Promise<void>;
|
|
50
47
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-manager.d.ts","sourceRoot":"","sources":["../../../../src/space/space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"space-manager.d.ts","sourceRoot":"","sources":["../../../../src/space/space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,sBAAsB,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,qBACa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE9C,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,kBAAkB;IAUtG,IAAI,MAAM,iCAET;IAGK,IAAI;IAGJ,KAAK;IAIL,cAAc,CAAC,EACnB,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,EAAE,oBAAoB;CAgCxB"}
|
|
@@ -3,12 +3,10 @@ import { type Context } from '@dxos/context';
|
|
|
3
3
|
import { type FeedInfo } from '@dxos/credentials';
|
|
4
4
|
import { type FeedOptions, type FeedWrapper } from '@dxos/feed-store';
|
|
5
5
|
import { type PublicKey } from '@dxos/keys';
|
|
6
|
-
import { type ModelFactory } from '@dxos/model-factory';
|
|
7
6
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
8
7
|
import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
9
8
|
import { type Timeframe } from '@dxos/timeframe';
|
|
10
|
-
import { type AsyncCallback
|
|
11
|
-
import { DataPipeline } from './data-pipeline';
|
|
9
|
+
import { Callback, type AsyncCallback } from '@dxos/util';
|
|
12
10
|
import { type SpaceProtocol } from './space-protocol';
|
|
13
11
|
import { type SnapshotManager } from '../db-host';
|
|
14
12
|
import { type MetadataStore } from '../metadata';
|
|
@@ -19,7 +17,6 @@ export type SpaceParams = {
|
|
|
19
17
|
protocol: SpaceProtocol;
|
|
20
18
|
genesisFeed: FeedWrapper<FeedMessage>;
|
|
21
19
|
feedProvider: FeedProvider;
|
|
22
|
-
modelFactory: ModelFactory;
|
|
23
20
|
metadataStore: MetadataStore;
|
|
24
21
|
snapshotManager: SnapshotManager;
|
|
25
22
|
memberKey: PublicKey;
|
|
@@ -40,7 +37,6 @@ export declare class Space {
|
|
|
40
37
|
private readonly _genesisFeedKey;
|
|
41
38
|
private readonly _feedProvider;
|
|
42
39
|
private readonly _controlPipeline;
|
|
43
|
-
private readonly _dataPipeline;
|
|
44
40
|
private readonly _snapshotManager;
|
|
45
41
|
private _isOpen;
|
|
46
42
|
private _controlFeed?;
|
|
@@ -56,7 +52,6 @@ export declare class Space {
|
|
|
56
52
|
* @test-only
|
|
57
53
|
*/
|
|
58
54
|
get controlPipeline(): PipelineAccessor;
|
|
59
|
-
get dataPipeline(): DataPipeline;
|
|
60
55
|
get snapshotManager(): SnapshotManager;
|
|
61
56
|
setControlFeed(feed: FeedWrapper<FeedMessage>): Promise<this>;
|
|
62
57
|
setDataFeed(feed: FeedWrapper<FeedMessage>): Promise<this>;
|
|
@@ -69,7 +64,6 @@ export declare class Space {
|
|
|
69
64
|
*/
|
|
70
65
|
open(ctx: Context): Promise<void>;
|
|
71
66
|
close(): Promise<void>;
|
|
72
|
-
initializeDataPipeline(): Promise<void>;
|
|
73
67
|
}
|
|
74
68
|
export {};
|
|
75
69
|
//# sourceMappingURL=space.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,CAAC;CAElB,CAAC;AAEF;;GAEG;AAEH,qBAEa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,SAAgB,qBAAqB,sCAA6C;IAClF,SAAgB,WAAW,cAAe;IAC1C,SACgB,QAAQ,EAAE,aAAa,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA2B;gBAEjC,MAAM,EAAE,WAAW;IAqC/B,IAEI,GAAG,cAEN;IAED,IAAI,MAAM,YAET;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,IAAI,cAAc,0BAEjB;IAED,IAAI,WAAW,0BAEd;IAED,IAAI,UAAU,2CAEb;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,gBAAgB,CAEtC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAEK,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAO7C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAMhD;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;IAI7B;;OAEG;IAMG,IAAI,CAAC,GAAG,EAAE,OAAO;IAejB,KAAK;CAaZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
|
|
@@ -2,7 +2,6 @@ import { type FeedStore } from '@dxos/feed-store';
|
|
|
2
2
|
import { type Keyring } from '@dxos/keyring';
|
|
3
3
|
import { PublicKey } from '@dxos/keys';
|
|
4
4
|
import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
5
|
-
import { ModelFactory } from '@dxos/model-factory';
|
|
6
5
|
import { NetworkManager } from '@dxos/network-manager';
|
|
7
6
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
8
7
|
import { type Storage } from '@dxos/random-access-storage';
|
|
@@ -11,7 +10,7 @@ import { BlobStore } from '@dxos/teleport-extension-object-sync';
|
|
|
11
10
|
import { TestFeedBuilder } from './test-feed-builder';
|
|
12
11
|
import { SnapshotStore } from '../db-host';
|
|
13
12
|
import { MetadataStore } from '../metadata';
|
|
14
|
-
import {
|
|
13
|
+
import { SpaceManager, SpaceProtocol, type Space } from '../space';
|
|
15
14
|
export type NetworkManagerProvider = () => NetworkManager;
|
|
16
15
|
export declare const MemoryNetworkManagerProvider: (signalContext: MemorySignalManagerContext) => NetworkManagerProvider;
|
|
17
16
|
export declare const WebsocketNetworkManagerProvider: (signalUrl: string) => NetworkManagerProvider;
|
|
@@ -50,7 +49,6 @@ export declare class TestAgent {
|
|
|
50
49
|
get snapshotStore(): SnapshotStore;
|
|
51
50
|
private _blobStore?;
|
|
52
51
|
get blobStore(): BlobStore;
|
|
53
|
-
modelFactory: ModelFactory;
|
|
54
52
|
constructor(_networkManagerProvider: NetworkManagerProvider, _feedBuilder: TestFeedBuilder, identityKey: PublicKey, deviceKey: PublicKey);
|
|
55
53
|
close(): Promise<void[]>;
|
|
56
54
|
get spaces(): Space[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/echo-pipeline",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9-main.1057b49",
|
|
4
4
|
"description": "ECHO database.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -36,38 +36,35 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"crc-32": "^1.2.2",
|
|
39
|
-
"@dxos/async": "0.4.
|
|
40
|
-
"@dxos/automerge": "0.4.
|
|
41
|
-
"@dxos/codec-protobuf": "0.4.
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/teleport": "0.4.
|
|
62
|
-
"@dxos/teleport-extension-automerge-replicator": "0.4.
|
|
63
|
-
"@dxos/teleport-extension-
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/tracing": "0.4.8-next.fff1521",
|
|
69
|
-
"@dxos/typings": "0.4.8-next.fff1521",
|
|
70
|
-
"@dxos/util": "0.4.8-next.fff1521"
|
|
39
|
+
"@dxos/async": "0.4.9-main.1057b49",
|
|
40
|
+
"@dxos/automerge": "0.4.9-main.1057b49",
|
|
41
|
+
"@dxos/codec-protobuf": "0.4.9-main.1057b49",
|
|
42
|
+
"@dxos/credentials": "0.4.9-main.1057b49",
|
|
43
|
+
"@dxos/crypto": "0.4.9-main.1057b49",
|
|
44
|
+
"@dxos/context": "0.4.9-main.1057b49",
|
|
45
|
+
"@dxos/debug": "0.4.9-main.1057b49",
|
|
46
|
+
"@dxos/echo-db": "0.4.9-main.1057b49",
|
|
47
|
+
"@dxos/hypercore": "0.4.9-main.1057b49",
|
|
48
|
+
"@dxos/invariant": "0.4.9-main.1057b49",
|
|
49
|
+
"@dxos/feed-store": "0.4.9-main.1057b49",
|
|
50
|
+
"@dxos/keys": "0.4.9-main.1057b49",
|
|
51
|
+
"@dxos/log": "0.4.9-main.1057b49",
|
|
52
|
+
"@dxos/keyring": "0.4.9-main.1057b49",
|
|
53
|
+
"@dxos/network-manager": "0.4.9-main.1057b49",
|
|
54
|
+
"@dxos/messaging": "0.4.9-main.1057b49",
|
|
55
|
+
"@dxos/node-std": "0.4.9-main.1057b49",
|
|
56
|
+
"@dxos/random-access-storage": "0.4.9-main.1057b49",
|
|
57
|
+
"@dxos/protocols": "0.4.9-main.1057b49",
|
|
58
|
+
"@dxos/rpc": "0.4.9-main.1057b49",
|
|
59
|
+
"@dxos/teleport": "0.4.9-main.1057b49",
|
|
60
|
+
"@dxos/teleport-extension-gossip": "0.4.9-main.1057b49",
|
|
61
|
+
"@dxos/teleport-extension-object-sync": "0.4.9-main.1057b49",
|
|
62
|
+
"@dxos/teleport-extension-automerge-replicator": "0.4.9-main.1057b49",
|
|
63
|
+
"@dxos/teleport-extension-replicator": "0.4.9-main.1057b49",
|
|
64
|
+
"@dxos/timeframe": "0.4.9-main.1057b49",
|
|
65
|
+
"@dxos/tracing": "0.4.9-main.1057b49",
|
|
66
|
+
"@dxos/typings": "0.4.9-main.1057b49",
|
|
67
|
+
"@dxos/util": "0.4.9-main.1057b49"
|
|
71
68
|
},
|
|
72
69
|
"devDependencies": {
|
|
73
70
|
"fast-check": "^3.15.1",
|
|
@@ -3,83 +3,37 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Stream } from '@dxos/codec-protobuf';
|
|
6
|
-
import { raise } from '@dxos/debug';
|
|
7
|
-
import { invariant } from '@dxos/invariant';
|
|
8
|
-
import { PublicKey } from '@dxos/keys';
|
|
9
|
-
import { log } from '@dxos/log';
|
|
10
6
|
import {
|
|
11
7
|
type DataService,
|
|
12
|
-
type MutationReceipt,
|
|
13
|
-
type SubscribeRequest,
|
|
14
8
|
type EchoEvent,
|
|
15
|
-
type WriteRequest,
|
|
16
9
|
type FlushRequest,
|
|
10
|
+
type HostInfo,
|
|
11
|
+
type MutationReceipt,
|
|
12
|
+
type SubscribeRequest,
|
|
17
13
|
type SyncRepoRequest,
|
|
18
14
|
type SyncRepoResponse,
|
|
19
|
-
type
|
|
15
|
+
type WriteRequest,
|
|
20
16
|
} from '@dxos/protocols/proto/dxos/echo/service';
|
|
21
|
-
import { ComplexMap } from '@dxos/util';
|
|
22
17
|
|
|
23
|
-
import { type DataServiceHost } from './data-service-host';
|
|
24
18
|
import { type AutomergeHost } from '../automerge';
|
|
25
19
|
|
|
26
|
-
// TODO(burdon): Clear on close.
|
|
27
|
-
export class DataServiceSubscriptions {
|
|
28
|
-
private readonly _spaces = new ComplexMap<PublicKey, DataServiceHost>(PublicKey.hash);
|
|
29
|
-
|
|
30
|
-
clear() {
|
|
31
|
-
this._spaces.clear();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async registerSpace(spaceKey: PublicKey, host: DataServiceHost) {
|
|
35
|
-
log('Registering space', { spaceKey });
|
|
36
|
-
invariant(!this._spaces.has(spaceKey));
|
|
37
|
-
await host.open();
|
|
38
|
-
this._spaces.set(spaceKey, host);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async unregisterSpace(spaceKey: PublicKey) {
|
|
42
|
-
log('Unregistering space', { spaceKey });
|
|
43
|
-
const host = this._spaces.get(spaceKey);
|
|
44
|
-
await host?.close();
|
|
45
|
-
this._spaces.delete(spaceKey);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
getDataService(spaceKey: PublicKey) {
|
|
49
|
-
return this._spaces.get(spaceKey);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
20
|
/**
|
|
54
|
-
*
|
|
21
|
+
* Data sync between client and services.
|
|
55
22
|
*/
|
|
56
23
|
// TODO(burdon): Move to client-services.
|
|
57
24
|
export class DataServiceImpl implements DataService {
|
|
58
|
-
constructor(
|
|
59
|
-
private readonly _subscriptions: DataServiceSubscriptions,
|
|
60
|
-
private readonly _automergeHost: AutomergeHost,
|
|
61
|
-
) {}
|
|
25
|
+
constructor(private readonly _automergeHost: AutomergeHost) {}
|
|
62
26
|
|
|
63
27
|
subscribe(request: SubscribeRequest): Stream<EchoEvent> {
|
|
64
|
-
|
|
65
|
-
const host =
|
|
66
|
-
this._subscriptions.getDataService(request.spaceKey) ?? raise(new Error(`space not found: ${request.spaceKey}`));
|
|
67
|
-
return host.subscribe();
|
|
28
|
+
throw new Error('Deprecated.');
|
|
68
29
|
}
|
|
69
30
|
|
|
70
31
|
write(request: WriteRequest): Promise<MutationReceipt> {
|
|
71
|
-
|
|
72
|
-
invariant(request.batch);
|
|
73
|
-
const host =
|
|
74
|
-
this._subscriptions.getDataService(request.spaceKey) ?? raise(new Error(`space not found: ${request.spaceKey}`));
|
|
75
|
-
return host.write(request);
|
|
32
|
+
throw new Error('Deprecated.');
|
|
76
33
|
}
|
|
77
34
|
|
|
78
|
-
flush(request: FlushRequest): Promise<void> {
|
|
79
|
-
|
|
80
|
-
const host =
|
|
81
|
-
this._subscriptions.getDataService(request.spaceKey) ?? raise(new Error(`space not found: ${request.spaceKey}`));
|
|
82
|
-
return host.flush();
|
|
35
|
+
async flush(request: FlushRequest): Promise<void> {
|
|
36
|
+
// TODO(dmaretskyi): Implement with automerge.
|
|
83
37
|
}
|
|
84
38
|
|
|
85
39
|
// Automerge specific.
|
package/src/db-host/index.ts
CHANGED
|
@@ -78,7 +78,9 @@ export class ControlPipeline {
|
|
|
78
78
|
queueMicrotask(async () => {
|
|
79
79
|
try {
|
|
80
80
|
const feed = await feedProvider(info.key);
|
|
81
|
-
|
|
81
|
+
if (!this._pipeline.hasFeed(feed.key)) {
|
|
82
|
+
await this._pipeline.addFeed(feed);
|
|
83
|
+
}
|
|
82
84
|
} catch (err: any) {
|
|
83
85
|
log.catch(err);
|
|
84
86
|
}
|
package/src/space/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { failUndefined } from '@dxos/debug';
|
|
|
7
7
|
import { type FeedStore } from '@dxos/feed-store';
|
|
8
8
|
import { PublicKey } from '@dxos/keys';
|
|
9
9
|
import { log } from '@dxos/log';
|
|
10
|
-
import { type ModelFactory } from '@dxos/model-factory';
|
|
11
10
|
import { type NetworkManager } from '@dxos/network-manager';
|
|
12
11
|
import { trace } from '@dxos/protocols';
|
|
13
12
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
@@ -24,7 +23,6 @@ import { type MetadataStore } from '../metadata';
|
|
|
24
23
|
export type SpaceManagerParams = {
|
|
25
24
|
feedStore: FeedStore<FeedMessage>;
|
|
26
25
|
networkManager: NetworkManager;
|
|
27
|
-
modelFactory: ModelFactory;
|
|
28
26
|
metadataStore: MetadataStore;
|
|
29
27
|
|
|
30
28
|
/**
|
|
@@ -54,24 +52,15 @@ export class SpaceManager {
|
|
|
54
52
|
private readonly _spaces = new ComplexMap<PublicKey, Space>(PublicKey.hash);
|
|
55
53
|
private readonly _feedStore: FeedStore<FeedMessage>;
|
|
56
54
|
private readonly _networkManager: NetworkManager;
|
|
57
|
-
private readonly _modelFactory: ModelFactory;
|
|
58
55
|
private readonly _metadataStore: MetadataStore;
|
|
59
56
|
private readonly _snapshotStore: SnapshotStore;
|
|
60
57
|
private readonly _blobStore: BlobStore;
|
|
61
58
|
private readonly _instanceId = PublicKey.random().toHex();
|
|
62
59
|
|
|
63
|
-
constructor({
|
|
64
|
-
feedStore,
|
|
65
|
-
networkManager,
|
|
66
|
-
modelFactory,
|
|
67
|
-
metadataStore,
|
|
68
|
-
snapshotStore,
|
|
69
|
-
blobStore,
|
|
70
|
-
}: SpaceManagerParams) {
|
|
60
|
+
constructor({ feedStore, networkManager, metadataStore, snapshotStore, blobStore }: SpaceManagerParams) {
|
|
71
61
|
// TODO(burdon): Assert.
|
|
72
62
|
this._feedStore = feedStore;
|
|
73
63
|
this._networkManager = networkManager;
|
|
74
|
-
this._modelFactory = modelFactory;
|
|
75
64
|
this._metadataStore = metadataStore;
|
|
76
65
|
this._snapshotStore = snapshotStore;
|
|
77
66
|
this._blobStore = blobStore;
|
|
@@ -119,7 +108,6 @@ export class SpaceManager {
|
|
|
119
108
|
protocol,
|
|
120
109
|
genesisFeed,
|
|
121
110
|
feedProvider: (feedKey, opts) => this._feedStore.openFeed(feedKey, opts),
|
|
122
|
-
modelFactory: this._modelFactory,
|
|
123
111
|
metadataStore: this._metadataStore,
|
|
124
112
|
snapshotManager,
|
|
125
113
|
memberKey,
|
package/src/space/space.test.ts
CHANGED
|
@@ -3,14 +3,12 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import expect from 'expect';
|
|
6
|
-
import { promisify } from 'node:util';
|
|
7
6
|
|
|
8
7
|
import { Context } from '@dxos/context';
|
|
9
|
-
import {
|
|
10
|
-
import { invariant } from '@dxos/invariant';
|
|
8
|
+
import { CredentialGenerator } from '@dxos/credentials';
|
|
11
9
|
import { afterTest, describe, test } from '@dxos/test';
|
|
12
10
|
|
|
13
|
-
import { TestAgentBuilder
|
|
11
|
+
import { TestAgentBuilder } from '../testing';
|
|
14
12
|
|
|
15
13
|
// TODO(burdon): Factor out?
|
|
16
14
|
const run = <T>(cb: () => Promise<T>): Promise<T> => cb();
|
|
@@ -29,11 +27,6 @@ describe('space/space', () => {
|
|
|
29
27
|
await agent.spaceGenesis(space);
|
|
30
28
|
|
|
31
29
|
await space.controlPipeline.state!.waitUntilTimeframe(space.controlPipeline.state!.endTimeframe);
|
|
32
|
-
await space.initializeDataPipeline();
|
|
33
|
-
await space.dataPipeline.ensureEpochInitialized();
|
|
34
|
-
|
|
35
|
-
invariant(space.dataPipeline.databaseHost);
|
|
36
|
-
await testLocalDatabase(space.dataPipeline);
|
|
37
30
|
|
|
38
31
|
await builder.close();
|
|
39
32
|
expect(space.isOpen).toBeFalsy();
|
|
@@ -57,8 +50,6 @@ describe('space/space', () => {
|
|
|
57
50
|
await agent.spaceGenesis(space);
|
|
58
51
|
|
|
59
52
|
await space.controlPipeline.state!.waitUntilTimeframe(space.controlPipeline.state!.endTimeframe);
|
|
60
|
-
await space.initializeDataPipeline();
|
|
61
|
-
await space.dataPipeline.ensureEpochInitialized();
|
|
62
53
|
|
|
63
54
|
return [agent, space];
|
|
64
55
|
});
|
|
@@ -100,9 +91,6 @@ describe('space/space', () => {
|
|
|
100
91
|
}
|
|
101
92
|
}
|
|
102
93
|
|
|
103
|
-
await space2.initializeDataPipeline();
|
|
104
|
-
await space2.dataPipeline.ensureEpochInitialized();
|
|
105
|
-
|
|
106
94
|
{
|
|
107
95
|
// Initial data exchange.
|
|
108
96
|
|
|
@@ -115,9 +103,6 @@ describe('space/space', () => {
|
|
|
115
103
|
|
|
116
104
|
// TODO(burdon): Write multiple items (extract for all tests).
|
|
117
105
|
|
|
118
|
-
await testLocalDatabase(space1.dataPipeline, space2.dataPipeline);
|
|
119
|
-
await testLocalDatabase(space2.dataPipeline, space1.dataPipeline);
|
|
120
|
-
|
|
121
106
|
await builder.close();
|
|
122
107
|
expect(space1.isOpen).toBeFalsy();
|
|
123
108
|
expect(space2.isOpen).toBeFalsy();
|
|
@@ -136,13 +121,6 @@ describe('space/space', () => {
|
|
|
136
121
|
await agent.spaceGenesis(space1);
|
|
137
122
|
|
|
138
123
|
await space1.controlPipeline.state!.waitUntilTimeframe(space1.controlPipeline.state!.endTimeframe);
|
|
139
|
-
await space1.initializeDataPipeline();
|
|
140
|
-
await space1.dataPipeline.ensureEpochInitialized();
|
|
141
|
-
|
|
142
|
-
invariant(space1.dataPipeline.databaseHost);
|
|
143
|
-
await testLocalDatabase(space1.dataPipeline);
|
|
144
|
-
|
|
145
|
-
const objectCount = space1.dataPipeline.itemManager.entities.size;
|
|
146
124
|
|
|
147
125
|
await space1.close();
|
|
148
126
|
expect(space1.isOpen).toBeFalsy();
|
|
@@ -152,16 +130,6 @@ describe('space/space', () => {
|
|
|
152
130
|
|
|
153
131
|
await space2.open(new Context());
|
|
154
132
|
await space2.controlPipeline.state!.waitUntilTimeframe(space2.controlPipeline.state!.endTimeframe);
|
|
155
|
-
await space2.initializeDataPipeline();
|
|
156
|
-
await space2.dataPipeline.ensureEpochInitialized();
|
|
157
|
-
|
|
158
|
-
space2.dataPipeline.setTargetTimeframe(space2.dataPipeline.pipelineState!.endTimeframe);
|
|
159
|
-
await space2.dataPipeline.pipelineState!.waitUntilReachedTargetTimeframe();
|
|
160
|
-
|
|
161
|
-
invariant(space2.dataPipeline.databaseHost);
|
|
162
|
-
expect(space2.dataPipeline.itemManager.entities.size).toEqual(objectCount);
|
|
163
|
-
|
|
164
|
-
await testLocalDatabase(space2.dataPipeline);
|
|
165
133
|
});
|
|
166
134
|
|
|
167
135
|
test('re-open', async () => {
|
|
@@ -170,7 +138,6 @@ describe('space/space', () => {
|
|
|
170
138
|
const agent = await builder.createPeer();
|
|
171
139
|
const space = await agent.createSpace();
|
|
172
140
|
|
|
173
|
-
let objectCount: number;
|
|
174
141
|
{
|
|
175
142
|
await space.open(new Context());
|
|
176
143
|
afterTest(() => space.close());
|
|
@@ -179,13 +146,6 @@ describe('space/space', () => {
|
|
|
179
146
|
await agent.spaceGenesis(space);
|
|
180
147
|
|
|
181
148
|
await space.controlPipeline.state!.waitUntilTimeframe(space.controlPipeline.state!.endTimeframe);
|
|
182
|
-
await space.initializeDataPipeline();
|
|
183
|
-
await space.dataPipeline.ensureEpochInitialized();
|
|
184
|
-
|
|
185
|
-
invariant(space.dataPipeline.databaseHost);
|
|
186
|
-
await testLocalDatabase(space.dataPipeline);
|
|
187
|
-
|
|
188
|
-
objectCount = space.dataPipeline.itemManager.entities.size;
|
|
189
149
|
|
|
190
150
|
await space.close();
|
|
191
151
|
expect(space.isOpen).toBeFalsy();
|
|
@@ -197,76 +157,6 @@ describe('space/space', () => {
|
|
|
197
157
|
expect(space.isOpen).toBeTruthy();
|
|
198
158
|
|
|
199
159
|
await space.controlPipeline.state!.waitUntilTimeframe(space.controlPipeline.state!.endTimeframe);
|
|
200
|
-
await space.initializeDataPipeline();
|
|
201
|
-
await space.dataPipeline.ensureEpochInitialized();
|
|
202
|
-
|
|
203
|
-
space.dataPipeline.setTargetTimeframe(space.dataPipeline.pipelineState!.endTimeframe);
|
|
204
|
-
await space.dataPipeline.pipelineState!.waitUntilReachedTargetTimeframe();
|
|
205
|
-
|
|
206
|
-
invariant(space.dataPipeline.databaseHost);
|
|
207
|
-
expect(space.dataPipeline.itemManager.entities.size).toEqual(objectCount);
|
|
208
|
-
|
|
209
|
-
await testLocalDatabase(space.dataPipeline);
|
|
210
160
|
}
|
|
211
161
|
});
|
|
212
|
-
|
|
213
|
-
test('create epoch', async () => {
|
|
214
|
-
const builder = new TestAgentBuilder();
|
|
215
|
-
afterTest(async () => await builder.close());
|
|
216
|
-
const agent = await builder.createPeer();
|
|
217
|
-
const space1 = await agent.createSpace();
|
|
218
|
-
|
|
219
|
-
await space1.open(new Context());
|
|
220
|
-
expect(space1.isOpen).toBeTruthy();
|
|
221
|
-
afterTest(() => space1.close());
|
|
222
|
-
|
|
223
|
-
await agent.spaceGenesis(space1);
|
|
224
|
-
|
|
225
|
-
await space1.controlPipeline.state!.waitUntilTimeframe(space1.controlPipeline.state!.endTimeframe);
|
|
226
|
-
await space1.initializeDataPipeline();
|
|
227
|
-
await space1.dataPipeline.ensureEpochInitialized();
|
|
228
|
-
|
|
229
|
-
invariant(space1.dataPipeline.databaseHost);
|
|
230
|
-
await testLocalDatabase(space1.dataPipeline);
|
|
231
|
-
|
|
232
|
-
const objectCount = space1.dataPipeline.itemManager.entities.size;
|
|
233
|
-
|
|
234
|
-
const epoch = await space1.dataPipeline.createEpoch();
|
|
235
|
-
await space1.controlPipeline.writer.write({
|
|
236
|
-
credential: {
|
|
237
|
-
credential: await createCredential({
|
|
238
|
-
issuer: agent.identityKey,
|
|
239
|
-
subject: space1.key,
|
|
240
|
-
assertion: {
|
|
241
|
-
'@type': 'dxos.halo.credentials.Epoch',
|
|
242
|
-
...epoch,
|
|
243
|
-
},
|
|
244
|
-
signer: agent.keyring,
|
|
245
|
-
}),
|
|
246
|
-
},
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
await space1.close();
|
|
250
|
-
expect(space1.isOpen).toBeFalsy();
|
|
251
|
-
|
|
252
|
-
// Clear the data feed - epoch snapshot should have the data.
|
|
253
|
-
const feed = await agent.feedStore.openFeed(space1.dataFeedKey!, { sparse: true });
|
|
254
|
-
await promisify(feed.core.clear.bind(feed.core))(0, feed.length);
|
|
255
|
-
|
|
256
|
-
// Re-open.
|
|
257
|
-
const space2 = await agent.createSpace(agent.identityKey, space1.key, space1.genesisFeedKey, space1.dataFeedKey);
|
|
258
|
-
|
|
259
|
-
await space2.open(new Context());
|
|
260
|
-
await space2.controlPipeline.state!.waitUntilTimeframe(space2.controlPipeline.state!.endTimeframe);
|
|
261
|
-
await space2.initializeDataPipeline();
|
|
262
|
-
await space2.dataPipeline.ensureEpochInitialized();
|
|
263
|
-
|
|
264
|
-
space2.dataPipeline.setTargetTimeframe(space2.dataPipeline.pipelineState!.endTimeframe);
|
|
265
|
-
await space2.dataPipeline.pipelineState!.waitUntilReachedTargetTimeframe();
|
|
266
|
-
|
|
267
|
-
invariant(space2.dataPipeline.databaseHost);
|
|
268
|
-
expect(space2.dataPipeline.itemManager.entities.size).toEqual(objectCount);
|
|
269
|
-
|
|
270
|
-
await testLocalDatabase(space2.dataPipeline);
|
|
271
|
-
});
|
|
272
162
|
});
|