@dxos/echo-pipeline 0.1.31-next.ea8f0bc → 0.1.32-next.77d513e
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-L44NG4N6.mjs → chunk-EM5HSJ7J.mjs} +192 -122
- package/dist/lib/browser/chunk-EM5HSJ7J.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3 -5
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +34 -17
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +189 -120
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +175 -119
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/dbhost/data-service-host.d.ts.map +1 -1
- package/dist/types/src/dbhost/database-backend.d.ts +2 -2
- package/dist/types/src/dbhost/database-backend.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +1 -2
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/pipeline/pipeline.d.ts +10 -1
- package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
- package/dist/types/src/space/{data-pipeline-controller.d.ts → data-pipeline.d.ts} +10 -18
- package/dist/types/src/space/data-pipeline.d.ts.map +1 -0
- package/dist/types/src/space/genesis.d.ts.map +1 -1
- package/dist/types/src/space/index.d.ts +1 -1
- package/dist/types/src/space/index.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +6 -4
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts +6 -5
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +2 -2
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/package.json +29 -29
- package/src/dbhost/data-service-host.ts +19 -25
- package/src/dbhost/database-backend.ts +1 -1
- package/src/metadata/metadata-store.ts +1 -2
- package/src/pipeline/pipeline.test.ts +12 -4
- package/src/pipeline/pipeline.ts +18 -3
- package/src/space/{data-pipeline-controller.ts → data-pipeline.ts} +62 -39
- package/src/space/genesis.ts +47 -7
- package/src/space/index.ts +1 -1
- package/src/space/space-protocol.browser.test.ts +8 -6
- package/src/space/space-protocol.test.ts +8 -6
- package/src/space/space.ts +22 -23
- package/src/testing/database-test-rig.ts +1 -1
- package/src/testing/test-agent-builder.ts +23 -11
- package/src/testing/util.ts +13 -12
- package/src/tests/database-unit.test.ts +25 -0
- package/src/tests/database.test.ts +5 -5
- package/dist/lib/browser/chunk-L44NG4N6.mjs.map +0 -7
- package/dist/types/src/space/data-pipeline-controller.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-service-host.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/data-service-host.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAuB,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"data-service-host.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/data-service-host.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAuB,WAAW,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGnG;;;GAGG;AAEH,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAPhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;gBAGiB,YAAY,EAAE,WAAW,EACzB,YAAY,EAAE,WAAW,EACzB,YAAY,CAAC,qCAAyB;IAGzD;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;IAwCxB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAsB7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EchoProcessor, ItemManager } from '@dxos/echo-db';
|
|
1
|
+
import { EchoProcessor, ItemDemuxer, ItemManager } from '@dxos/echo-db';
|
|
2
2
|
import { FeedWriter } from '@dxos/feed-store';
|
|
3
3
|
import { ModelFactory } from '@dxos/model-factory';
|
|
4
4
|
import { DataMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
@@ -14,7 +14,7 @@ export declare class DatabaseBackendHost {
|
|
|
14
14
|
private readonly _snapshot?;
|
|
15
15
|
private _echoProcessor;
|
|
16
16
|
private _itemManager;
|
|
17
|
-
|
|
17
|
+
_itemDemuxer: ItemDemuxer;
|
|
18
18
|
constructor(_outboundStream: FeedWriter<DataMessage> | undefined, _snapshot?: EchoSnapshot | undefined);
|
|
19
19
|
get isReadOnly(): boolean;
|
|
20
20
|
get echoProcessor(): EchoProcessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-backend.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/database-backend.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"database-backend.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/database-backend.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAN7B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IAC5B,YAAY,EAAG,WAAW,CAAC;gBAGf,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,EACpD,SAAS,CAAC,0BAAc;IAG3C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,aAAa,kBAEhB;IAEK,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY;IAYzD,KAAK;IAEX,cAAc,IAAI,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS;IAIrD,cAAc;IAId,qBAAqB;CAGtB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PublicKey } from '@dxos/keys';
|
|
2
|
-
import { SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
3
|
-
import { IdentityRecord } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
2
|
+
import { SpaceMetadata, IdentityRecord } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
4
3
|
import { Directory } from '@dxos/random-access-storage';
|
|
5
4
|
import { Timeframe } from '@dxos/timeframe';
|
|
6
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAgB,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAgB,aAAa,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;CACxB;AASD,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,SAAS,CAAqC;gBAInC,UAAU,EAAE,SAAS;IAGxC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA6Bb,KAAK;IAwBnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAIzC,iBAAiB,CAAC,MAAM,EAAE,cAAc;IAOxC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAU9B,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAQjE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAQtD,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CAQjG"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
import { Context } from '@dxos/context';
|
|
1
2
|
import { FeedSetIterator, FeedWrapper, FeedWriter } from '@dxos/feed-store';
|
|
2
3
|
import { FeedMessageBlock } from '@dxos/protocols';
|
|
3
4
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
4
5
|
import { Timeframe } from '@dxos/timeframe';
|
|
5
6
|
import { TimeframeClock } from './timeframe-clock';
|
|
6
7
|
export declare type WaitUntilReachedTargetParams = {
|
|
8
|
+
/**
|
|
9
|
+
* For cancellation.
|
|
10
|
+
*/
|
|
11
|
+
ctx?: Context;
|
|
7
12
|
timeout?: number;
|
|
13
|
+
/**
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
16
|
+
breakOnStall?: boolean;
|
|
8
17
|
};
|
|
9
18
|
/**
|
|
10
19
|
* External state accessor.
|
|
@@ -35,7 +44,7 @@ export declare class PipelineState {
|
|
|
35
44
|
*
|
|
36
45
|
* @param timeout Timeout in milliseconds to specify the maximum wait time.
|
|
37
46
|
*/
|
|
38
|
-
waitUntilReachedTargetTimeframe({ timeout }?: WaitUntilReachedTargetParams): Promise<void>;
|
|
47
|
+
waitUntilReachedTargetTimeframe({ ctx, timeout, breakOnStall }?: WaitUntilReachedTargetParams): Promise<void>;
|
|
39
48
|
}
|
|
40
49
|
export interface PipelineAccessor {
|
|
41
50
|
state: PipelineState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAwD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEzG,oBAAY,4BAA4B,GAAG;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAwD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEzG,oBAAY,4BAA4B,GAAG;IACzC;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,eAAe;IAZzB,SAAgB,eAAe,yCAA+B;IAE9D;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,qBAAqB,CAA4B;gBAI/C,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAC/B,eAAe,EAAE,cAAc;IAGzC;;;OAGG;IACH,IAAI,YAAY,cASf;IAED,IAAI,SAAS,cAEZ;IAED,IAAI,eAAe,cAElB;IAEK,kBAAkB,CAAC,MAAM,EAAE,SAAS;IAI1C,kBAAkB,CAAC,MAAM,EAAE,SAAS;IAIpC;;;;;;OAMG;IACG,+BAA+B,CAAC,EACpC,GAAmB,EACnB,OAAO,EACP,YAAmB,EACpB,GAAE,4BAAiC;CAuCrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAS,YAAW,gBAAgB;IAsB7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IArBpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8C;IAG9E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAG9B;IAGH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiF;IAGxG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAG3D,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,OAAO,CAAS;gBAIL,iBAAiB,GAAE,SAA2B;IAOjE,IAAI,KAAK,kBAER;IAED,IAAI,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAG5C;IAED,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE;IAIhC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAI5C,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAarC,KAAK;IAML,IAAI;IAOV;;;OAGG;IACI,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC;CAelD"}
|
|
@@ -8,22 +8,10 @@ import { Timeframe } from '@dxos/timeframe';
|
|
|
8
8
|
import { DatabaseBackendHost, SnapshotManager } from '../dbhost';
|
|
9
9
|
import { MetadataStore } from '../metadata';
|
|
10
10
|
import { Pipeline } from '../pipeline';
|
|
11
|
-
export
|
|
11
|
+
export interface PipelineFactory {
|
|
12
12
|
openPipeline: (start: Timeframe) => Promise<Pipeline>;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Controls data pipeline in the space.
|
|
16
|
-
* Consumes mutations from the feed and applies them to the database.
|
|
17
|
-
*/
|
|
18
|
-
export interface DataPipelineController {
|
|
19
|
-
open(context: DataPipelineControllerContext): Promise<void>;
|
|
20
|
-
close(): Promise<void>;
|
|
21
|
-
}
|
|
22
|
-
export declare class NoopDataPipelineController implements DataPipelineController {
|
|
23
|
-
open(context: DataPipelineControllerContext): Promise<void>;
|
|
24
|
-
close(): Promise<void>;
|
|
25
13
|
}
|
|
26
|
-
export declare type
|
|
14
|
+
export declare type DataPipelineParams = {
|
|
27
15
|
modelFactory: ModelFactory;
|
|
28
16
|
snapshotManager: SnapshotManager;
|
|
29
17
|
metadataStore: MetadataStore;
|
|
@@ -37,21 +25,25 @@ export declare type DataPipelineControllerImplParams = {
|
|
|
37
25
|
* Consumes the pipeline and updates the database.
|
|
38
26
|
* Reacts to new epochs to restart the pipeline.
|
|
39
27
|
*/
|
|
40
|
-
export declare class
|
|
28
|
+
export declare class DataPipeline {
|
|
41
29
|
private readonly _params;
|
|
42
30
|
private _ctx;
|
|
43
31
|
private _spaceContext;
|
|
44
32
|
private _pipeline?;
|
|
45
33
|
private _snapshot?;
|
|
34
|
+
private _targetTimeframe?;
|
|
46
35
|
private _lastAutomaticSnapshotTimeframe;
|
|
36
|
+
private _isOpen;
|
|
47
37
|
readonly onTimeframeReached: Event<Timeframe>;
|
|
48
|
-
constructor(_params:
|
|
38
|
+
constructor(_params: DataPipelineParams);
|
|
49
39
|
_itemManager: ItemManager;
|
|
50
40
|
databaseBackend?: DatabaseBackendHost;
|
|
41
|
+
get isOpen(): boolean;
|
|
51
42
|
get pipelineState(): import("../pipeline/pipeline").PipelineState | undefined;
|
|
52
43
|
get snapshotTimeframe(): Timeframe | undefined;
|
|
53
44
|
getStartTimeframe(): Timeframe;
|
|
54
|
-
|
|
45
|
+
setTargetTimeframe(timeframe: Timeframe): void;
|
|
46
|
+
open(spaceContext: PipelineFactory): Promise<void>;
|
|
55
47
|
private _createPeriodicSnapshots;
|
|
56
48
|
private _saveSnapshot;
|
|
57
49
|
private _saveLatestTimeframe;
|
|
@@ -60,4 +52,4 @@ export declare class DataPipelineControllerImpl implements DataPipelineControlle
|
|
|
60
52
|
private _consumePipeline;
|
|
61
53
|
waitUntilTimeframe(timeframe: Timeframe): Promise<void>;
|
|
62
54
|
}
|
|
63
|
-
//# sourceMappingURL=data-pipeline
|
|
55
|
+
//# sourceMappingURL=data-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-pipeline.d.ts","sourceRoot":"","sources":["../../../../src/space/data-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA0C,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvD;AAED,oBAAY,kBAAkB,GAAG;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IAC/D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAsBF;;;;GAIG;AACH,qBACa,YAAY;IAYX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,+BAA+B,CAAmB;IAC1D,OAAO,CAAC,OAAO,CAAS;IAExB,SAAgB,kBAAkB,mBAA0B;gBAE/B,OAAO,EAAE,kBAAkB;IAEjD,YAAY,EAAG,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAE7C,IAAI,MAAM,YAET;IAED,IAAI,aAAa,6DAEhB;IAED,IAAI,iBAAiB,0BAEpB;IAED,iBAAiB,IAAI,SAAS;IAI9B,kBAAkB,CAAC,SAAS,EAAE,SAAS;IAMjC,IAAI,CAAC,YAAY,EAAE,eAAe;IAsCxC,OAAO,CAAC,wBAAwB;YA0BlB,aAAa;YAOb,oBAAoB;IAU5B,KAAK;IAoBX,cAAc,IAAI,aAAa;YASjB,gBAAgB;IA+BxB,kBAAkB,CAAC,SAAS,EAAE,SAAS;CAI9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../../src/space/genesis.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,YAAY,YAAmB,OAAO,kBAAkB,cAAc,SAAS,KAAK,
|
|
1
|
+
{"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../../src/space/genesis.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,YAAY,YAAmB,OAAO,kBAAkB,cAAc,SAAS,KAAK,gFAwDhG,CAAC"}
|
|
@@ -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;AACjC,cAAc,WAAW,CAAC;AAC1B,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;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
@@ -4,9 +4,9 @@ import { FeedWrapper } from '@dxos/feed-store';
|
|
|
4
4
|
import { PublicKey } from '@dxos/keys';
|
|
5
5
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
6
6
|
import { Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
7
|
+
import { Timeframe } from '@dxos/timeframe';
|
|
7
8
|
import { AsyncCallback, Callback } from '@dxos/util';
|
|
8
|
-
import { PipelineAccessor } from '../pipeline';
|
|
9
|
-
import { DataPipelineController } from './data-pipeline-controller';
|
|
9
|
+
import { Pipeline, PipelineAccessor } from '../pipeline';
|
|
10
10
|
import { SpaceProtocol } from './space-protocol';
|
|
11
11
|
declare type FeedProvider = (feedKey: PublicKey) => Promise<FeedWrapper<FeedMessage>>;
|
|
12
12
|
export declare type SpaceParams = {
|
|
@@ -15,6 +15,9 @@ export declare type SpaceParams = {
|
|
|
15
15
|
genesisFeed: FeedWrapper<FeedMessage>;
|
|
16
16
|
feedProvider: FeedProvider;
|
|
17
17
|
};
|
|
18
|
+
export declare type CreatePipelineParams = {
|
|
19
|
+
start: Timeframe;
|
|
20
|
+
};
|
|
18
21
|
/**
|
|
19
22
|
* Spaces are globally addressable databases with access control.
|
|
20
23
|
*/
|
|
@@ -30,7 +33,6 @@ export declare class Space {
|
|
|
30
33
|
private _controlFeed?;
|
|
31
34
|
private _dataFeed?;
|
|
32
35
|
private _dataPipeline?;
|
|
33
|
-
private _dataPipelineController?;
|
|
34
36
|
constructor({ spaceKey, protocol, genesisFeed, feedProvider }: SpaceParams);
|
|
35
37
|
get key(): PublicKey;
|
|
36
38
|
get isOpen(): boolean;
|
|
@@ -53,7 +55,7 @@ export declare class Space {
|
|
|
53
55
|
*/
|
|
54
56
|
open(): Promise<void>;
|
|
55
57
|
close(): Promise<void>;
|
|
56
|
-
|
|
58
|
+
createDataPipeline({ start }: CreatePipelineParams): Promise<Pipeline>;
|
|
57
59
|
}
|
|
58
60
|
export {};
|
|
59
61
|
//# sourceMappingURL=space.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAgB,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAgB,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,aAAK,YAAY,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAE9E,oBAAY,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;CAC5B,CAAC;AAEF,oBAAY,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,CAAC;CAElB,CAAC;AAEF;;GAEG;AAEH,qBACa,KAAK;IAChB,SAAgB,qBAAqB,sCAA6C;IAClF,SAAgB,WAAW,cAAe;IAC1C,SAAgB,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;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA2B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAW;gBAErB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,WAAW;IAgC1E,IACI,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,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAO7C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAO1C;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;IAI7B;;OAEG;IAKG,IAAI;IAeJ,KAAK;IAeL,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,oBAAoB;CAoBzD"}
|
|
@@ -5,9 +5,9 @@ import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
|
5
5
|
import { NetworkManager } from '@dxos/network-manager';
|
|
6
6
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
7
7
|
import { Storage } from '@dxos/random-access-storage';
|
|
8
|
-
import { Presence } from '@dxos/teleport-extension-
|
|
8
|
+
import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
|
|
9
9
|
import { Space, SpaceManager, SpaceProtocol } from '../space';
|
|
10
|
-
import {
|
|
10
|
+
import { DataPipeline } from '../space/data-pipeline';
|
|
11
11
|
import { TestFeedBuilder } from './test-feed-builder';
|
|
12
12
|
export declare type NetworkManagerProvider = () => NetworkManager;
|
|
13
13
|
export declare const MemoryNetworkManagerProvider: (signalContext: MemorySignalManagerContext) => NetworkManagerProvider;
|
|
@@ -45,8 +45,9 @@ export declare class TestAgent {
|
|
|
45
45
|
get spaces(): Space[];
|
|
46
46
|
getSpace(spaceKey: PublicKey): Space | undefined;
|
|
47
47
|
createSpaceManager(): SpaceManager;
|
|
48
|
-
createSpace(identityKey?: PublicKey, spaceKey?: PublicKey, genesisKey?: PublicKey): Promise<[Space,
|
|
49
|
-
createSpaceProtocol(topic: PublicKey,
|
|
50
|
-
|
|
48
|
+
createSpace(identityKey?: PublicKey, spaceKey?: PublicKey, genesisKey?: PublicKey): Promise<[Space, DataPipeline]>;
|
|
49
|
+
createSpaceProtocol(topic: PublicKey, gossip?: Gossip): SpaceProtocol;
|
|
50
|
+
createGossip(): Gossip;
|
|
51
|
+
createPresence(gossip?: Gossip): Presence;
|
|
51
52
|
}
|
|
52
53
|
//# sourceMappingURL=test-agent-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAuB,0BAA0B,EAA0B,MAAM,iBAAiB,CAAC;AAE1G,OAAO,EAAwD,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAuB,0BAA0B,EAA0B,MAAM,iBAAiB,CAAC;AAE1G,OAAO,EAAwD,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAKnE,OAAO,EAA0C,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,oBAAY,sBAAsB,GAAG,MAAM,cAAc,CAAC;AAE1D,eAAO,MAAM,4BAA4B,kBACvB,0BAA0B,KAAG,sBAKzC,CAAC;AAEP,eAAO,MAAM,+BAA+B,cAC9B,MAAM,KAAG,sBAKjB,CAAC;AAEP,oBAAY,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD,CAAC;AAEF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAChF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAyB;gBAErD,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAE,uBAA4B;IAMvE,KAAK;IAIX,IAAI,MAAM,gBAET;IAED,QAAQ,CAAC,SAAS,EAAE,SAAS;IAIvB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;CAYvC;AAED;;GAEG;AACH,qBAAa,SAAS;IAOlB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY;aACb,WAAW,EAAE,SAAS;aACtB,SAAS,EAAE,SAAS;IATtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAE5E,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAG/B,uBAAuB,EAAE,sBAAsB,EAC/C,YAAY,EAAE,eAAe,EAC9B,WAAW,EAAE,SAAS,EACtB,SAAS,EAAE,SAAS;IAMhC,KAAK;IAIX,IAAI,MAAM,YAET;IAED,QAAQ,CAAC,QAAQ,EAAE,SAAS;IAI5B,kBAAkB;IAOZ,WAAW,CACf,WAAW,GAAE,SAA4B,EACzC,QAAQ,CAAC,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IA6CjC,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM;IAkBrD,YAAY;IAMZ,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM;CAQ/B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DatabaseBackendProxy, ItemManager } from '@dxos/echo-db';
|
|
2
2
|
import { ModelFactory } from '@dxos/model-factory';
|
|
3
3
|
import { DatabaseBackendHost, DataServiceHost } from '../dbhost';
|
|
4
|
-
import {
|
|
4
|
+
import { DataPipeline } from '../space';
|
|
5
5
|
export declare const createMemoryDatabase: (modelFactory: ModelFactory) => Promise<{
|
|
6
6
|
backend: DatabaseBackendHost;
|
|
7
7
|
itemManager: ItemManager;
|
|
@@ -10,5 +10,5 @@ export declare const createRemoteDatabaseFromDataServiceHost: (modelFactory: Mod
|
|
|
10
10
|
itemManager: ItemManager;
|
|
11
11
|
backend: DatabaseBackendProxy;
|
|
12
12
|
}>;
|
|
13
|
-
export declare const testLocalDatabase: (create:
|
|
13
|
+
export declare const testLocalDatabase: (create: DataPipeline, check?: DataPipeline) => Promise<void>;
|
|
14
14
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/testing/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAA6C,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/testing/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAA6C,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,oBAAoB,iBAAwB,YAAY;;;EAqBpE,CAAC;AAEF,eAAO,MAAM,uCAAuC,iBACpC,YAAY,mBACT,eAAe;;;EAejC,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAkB,YAAY,UAAS,YAAY,kBAmBhF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/echo-pipeline",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32-next.77d513e",
|
|
4
4
|
"description": "ECHO database.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -20,40 +20,40 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"debug": "^4.3.3",
|
|
23
|
-
"@dxos/async": "0.1.
|
|
24
|
-
"@dxos/codec-protobuf": "0.1.
|
|
25
|
-
"@dxos/context": "0.1.
|
|
26
|
-
"@dxos/credentials": "0.1.
|
|
27
|
-
"@dxos/crypto": "0.1.
|
|
28
|
-
"@dxos/debug": "0.1.
|
|
29
|
-
"@dxos/document-model": "0.1.
|
|
30
|
-
"@dxos/echo-db": "0.1.
|
|
31
|
-
"@dxos/feed-store": "0.1.
|
|
32
|
-
"@dxos/hypercore": "0.1.
|
|
33
|
-
"@dxos/keyring": "0.1.
|
|
34
|
-
"@dxos/keys": "0.1.
|
|
35
|
-
"@dxos/log": "0.1.
|
|
36
|
-
"@dxos/messaging": "0.1.
|
|
37
|
-
"@dxos/model-factory": "0.1.
|
|
38
|
-
"@dxos/network-manager": "0.1.
|
|
39
|
-
"@dxos/node-std": "0.1.
|
|
40
|
-
"@dxos/protocols": "0.1.
|
|
41
|
-
"@dxos/random-access-storage": "0.1.
|
|
42
|
-
"@dxos/rpc": "0.1.
|
|
43
|
-
"@dxos/teleport": "0.1.
|
|
44
|
-
"@dxos/teleport-extension-
|
|
45
|
-
"@dxos/teleport-extension-
|
|
46
|
-
"@dxos/teleport-extension-replicator": "0.1.
|
|
47
|
-
"@dxos/timeframe": "0.1.
|
|
48
|
-
"@dxos/typings": "0.1.
|
|
49
|
-
"@dxos/util": "0.1.
|
|
23
|
+
"@dxos/async": "0.1.32-next.77d513e",
|
|
24
|
+
"@dxos/codec-protobuf": "0.1.32-next.77d513e",
|
|
25
|
+
"@dxos/context": "0.1.32-next.77d513e",
|
|
26
|
+
"@dxos/credentials": "0.1.32-next.77d513e",
|
|
27
|
+
"@dxos/crypto": "0.1.32-next.77d513e",
|
|
28
|
+
"@dxos/debug": "0.1.32-next.77d513e",
|
|
29
|
+
"@dxos/document-model": "0.1.32-next.77d513e",
|
|
30
|
+
"@dxos/echo-db": "0.1.32-next.77d513e",
|
|
31
|
+
"@dxos/feed-store": "0.1.32-next.77d513e",
|
|
32
|
+
"@dxos/hypercore": "0.1.32-next.77d513e",
|
|
33
|
+
"@dxos/keyring": "0.1.32-next.77d513e",
|
|
34
|
+
"@dxos/keys": "0.1.32-next.77d513e",
|
|
35
|
+
"@dxos/log": "0.1.32-next.77d513e",
|
|
36
|
+
"@dxos/messaging": "0.1.32-next.77d513e",
|
|
37
|
+
"@dxos/model-factory": "0.1.32-next.77d513e",
|
|
38
|
+
"@dxos/network-manager": "0.1.32-next.77d513e",
|
|
39
|
+
"@dxos/node-std": "0.1.32-next.77d513e",
|
|
40
|
+
"@dxos/protocols": "0.1.32-next.77d513e",
|
|
41
|
+
"@dxos/random-access-storage": "0.1.32-next.77d513e",
|
|
42
|
+
"@dxos/rpc": "0.1.32-next.77d513e",
|
|
43
|
+
"@dxos/teleport": "0.1.32-next.77d513e",
|
|
44
|
+
"@dxos/teleport-extension-gossip": "0.1.32-next.77d513e",
|
|
45
|
+
"@dxos/teleport-extension-object-sync": "0.1.32-next.77d513e",
|
|
46
|
+
"@dxos/teleport-extension-replicator": "0.1.32-next.77d513e",
|
|
47
|
+
"@dxos/timeframe": "0.1.32-next.77d513e",
|
|
48
|
+
"@dxos/typings": "0.1.32-next.77d513e",
|
|
49
|
+
"@dxos/util": "0.1.32-next.77d513e"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/debug": "^4.1.7",
|
|
53
53
|
"hypercore-protocol": "^8.0.7",
|
|
54
54
|
"source-map-support": "^0.5.12",
|
|
55
55
|
"wait-for-expect": "^3.0.2",
|
|
56
|
-
"@dxos/text-model": "0.1.
|
|
56
|
+
"@dxos/text-model": "0.1.32-next.77d513e"
|
|
57
57
|
},
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import assert from 'node:assert';
|
|
6
6
|
|
|
7
7
|
import { Stream } from '@dxos/codec-protobuf';
|
|
8
|
-
import { tagMutationsInBatch, ItemDemuxer, ItemManager } from '@dxos/echo-db';
|
|
8
|
+
import { tagMutationsInBatch, ItemDemuxer, ItemManager, setMetadataOnObject } from '@dxos/echo-db';
|
|
9
9
|
import { FeedWriter } from '@dxos/feed-store';
|
|
10
10
|
import { PublicKey } from '@dxos/keys';
|
|
11
11
|
import { log } from '@dxos/log';
|
|
@@ -45,25 +45,17 @@ export class DataServiceHost {
|
|
|
45
45
|
|
|
46
46
|
// subscribe to mutations
|
|
47
47
|
|
|
48
|
-
this._itemDemuxer.mutation.on(ctx, (
|
|
49
|
-
|
|
48
|
+
this._itemDemuxer.mutation.on(ctx, (message) => {
|
|
49
|
+
const { batch, meta } = message;
|
|
50
|
+
log('Object update', { batch, meta });
|
|
50
51
|
|
|
51
|
-
const clientTag = this._clientTagMap.get([
|
|
52
|
+
const clientTag = this._clientTagMap.get([message.meta.feedKey, message.meta.seq]);
|
|
52
53
|
// TODO(dmaretskyi): Memorąąy leak with _clientTagMap not getting cleared.
|
|
53
54
|
|
|
54
55
|
// Assign feed metadata
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
...mutation.data,
|
|
59
|
-
mutations: mutation.data.mutations?.map((m, mutationIdx) => ({
|
|
60
|
-
...m,
|
|
61
|
-
meta: mutation.meta
|
|
62
|
-
})),
|
|
63
|
-
meta: mutation.meta
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
};
|
|
56
|
+
batch.objects?.forEach((object) => {
|
|
57
|
+
setMetadataOnObject(object, meta);
|
|
58
|
+
});
|
|
67
59
|
|
|
68
60
|
// Assign client tag metadata
|
|
69
61
|
if (clientTag) {
|
|
@@ -72,8 +64,8 @@ export class DataServiceHost {
|
|
|
72
64
|
|
|
73
65
|
next({
|
|
74
66
|
clientTag,
|
|
75
|
-
feedKey:
|
|
76
|
-
seq:
|
|
67
|
+
feedKey: message.meta.feedKey,
|
|
68
|
+
seq: message.meta.seq,
|
|
77
69
|
batch
|
|
78
70
|
});
|
|
79
71
|
});
|
|
@@ -82,16 +74,18 @@ export class DataServiceHost {
|
|
|
82
74
|
|
|
83
75
|
async write(request: WriteRequest): Promise<MutationReceipt> {
|
|
84
76
|
assert(this._writeStream, 'Cannot write mutations in readonly mode');
|
|
85
|
-
assert(request.batch.objects?.length === 1, 'Only single object mutations are supported');
|
|
86
77
|
|
|
78
|
+
// Clear client metadata.
|
|
87
79
|
const receipt = await this._writeStream.write({
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
80
|
+
batch: {
|
|
81
|
+
objects: request.batch.objects?.map((object) => ({
|
|
82
|
+
...object,
|
|
83
|
+
mutations: object.mutations?.map((m) => ({
|
|
84
|
+
...m,
|
|
85
|
+
meta: undefined
|
|
86
|
+
})),
|
|
92
87
|
meta: undefined
|
|
93
|
-
}))
|
|
94
|
-
meta: undefined
|
|
88
|
+
}))
|
|
95
89
|
}
|
|
96
90
|
});
|
|
97
91
|
if (request.clientTag) {
|
|
@@ -20,7 +20,7 @@ import { DataServiceHost } from './data-service-host';
|
|
|
20
20
|
export class DatabaseBackendHost {
|
|
21
21
|
private _echoProcessor!: EchoProcessor;
|
|
22
22
|
private _itemManager!: ItemManager;
|
|
23
|
-
|
|
23
|
+
public _itemDemuxer!: ItemDemuxer;
|
|
24
24
|
|
|
25
25
|
constructor(
|
|
26
26
|
private readonly _outboundStream: FeedWriter<DataMessage> | undefined,
|
|
@@ -8,8 +8,7 @@ import { synchronized } from '@dxos/async';
|
|
|
8
8
|
import { PublicKey } from '@dxos/keys';
|
|
9
9
|
import { log } from '@dxos/log';
|
|
10
10
|
import { schema } from '@dxos/protocols';
|
|
11
|
-
import { EchoMetadata, SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
12
|
-
import { IdentityRecord } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
11
|
+
import { EchoMetadata, SpaceMetadata, IdentityRecord } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
13
12
|
import { Directory } from '@dxos/random-access-storage';
|
|
14
13
|
import { Timeframe } from '@dxos/timeframe';
|
|
15
14
|
|
|
@@ -34,8 +34,12 @@ describe('pipeline/Pipeline', () => {
|
|
|
34
34
|
timeframe: new Timeframe(),
|
|
35
35
|
payload: {
|
|
36
36
|
data: {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
batch: {
|
|
38
|
+
objects: [
|
|
39
|
+
{
|
|
40
|
+
objectId: `${feedIdx}-${msgIdx}`
|
|
41
|
+
}
|
|
42
|
+
]
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
}
|
|
@@ -54,8 +58,12 @@ describe('pipeline/Pipeline', () => {
|
|
|
54
58
|
for (const msgIdx in range(messagesPerFeed)) {
|
|
55
59
|
await pipeline.writer!.write({
|
|
56
60
|
data: {
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
batch: {
|
|
62
|
+
objects: [
|
|
63
|
+
{
|
|
64
|
+
objectId: `local-${msgIdx}`
|
|
65
|
+
}
|
|
66
|
+
]
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
69
|
});
|
package/src/pipeline/pipeline.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import assert from 'node:assert';
|
|
6
6
|
|
|
7
7
|
import { sleep, Trigger } from '@dxos/async';
|
|
8
|
+
import { Context, rejectOnDispose } from '@dxos/context';
|
|
8
9
|
import { FeedSetIterator, FeedWrapper, FeedWriter } from '@dxos/feed-store';
|
|
9
10
|
import { PublicKey } from '@dxos/keys';
|
|
10
11
|
import { log } from '@dxos/log';
|
|
@@ -17,7 +18,16 @@ import { createMessageSelector } from './message-selector';
|
|
|
17
18
|
import { mapFeedIndexesToTimeframe, mapTimeframeToFeedIndexes, TimeframeClock } from './timeframe-clock';
|
|
18
19
|
|
|
19
20
|
export type WaitUntilReachedTargetParams = {
|
|
21
|
+
/**
|
|
22
|
+
* For cancellation.
|
|
23
|
+
*/
|
|
24
|
+
ctx?: Context;
|
|
20
25
|
timeout?: number;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
breakOnStall?: boolean;
|
|
21
31
|
};
|
|
22
32
|
|
|
23
33
|
/**
|
|
@@ -60,7 +70,7 @@ export class PipelineState {
|
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
get targetTimeframe() {
|
|
63
|
-
return this._targetTimeframe ?
|
|
73
|
+
return this._targetTimeframe ? this._targetTimeframe : new Timeframe();
|
|
64
74
|
}
|
|
65
75
|
|
|
66
76
|
async waitUntilTimeframe(target: Timeframe) {
|
|
@@ -78,7 +88,11 @@ export class PipelineState {
|
|
|
78
88
|
*
|
|
79
89
|
* @param timeout Timeout in milliseconds to specify the maximum wait time.
|
|
80
90
|
*/
|
|
81
|
-
async waitUntilReachedTargetTimeframe({
|
|
91
|
+
async waitUntilReachedTargetTimeframe({
|
|
92
|
+
ctx = new Context(),
|
|
93
|
+
timeout,
|
|
94
|
+
breakOnStall = true
|
|
95
|
+
}: WaitUntilReachedTargetParams = {}) {
|
|
82
96
|
log('waitUntilReachedTargetTimeframe', {
|
|
83
97
|
timeout,
|
|
84
98
|
current: this.timeframe,
|
|
@@ -89,13 +103,14 @@ export class PipelineState {
|
|
|
89
103
|
this._timeframeClock.update.waitForCondition(() => {
|
|
90
104
|
return Timeframe.dependencies(this.targetTimeframe, this.timeframe).isEmpty();
|
|
91
105
|
}),
|
|
92
|
-
this._iterator.stalled.discardParameter().waitForCount(1)
|
|
106
|
+
...(breakOnStall ? [this._iterator.stalled.discardParameter().waitForCount(1)] : [])
|
|
93
107
|
]);
|
|
94
108
|
|
|
95
109
|
let done = false;
|
|
96
110
|
|
|
97
111
|
if (timeout) {
|
|
98
112
|
return Promise.race([
|
|
113
|
+
rejectOnDispose(ctx),
|
|
99
114
|
this._reachedTargetPromise.then(() => {
|
|
100
115
|
done = true;
|
|
101
116
|
}),
|