@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.
Files changed (49) hide show
  1. package/dist/lib/browser/{chunk-L44NG4N6.mjs → chunk-EM5HSJ7J.mjs} +192 -122
  2. package/dist/lib/browser/chunk-EM5HSJ7J.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3 -5
  4. package/dist/lib/browser/index.mjs.map +1 -1
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +34 -17
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/index.cjs +189 -120
  9. package/dist/lib/node/index.cjs.map +4 -4
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/testing/index.cjs +175 -119
  12. package/dist/lib/node/testing/index.cjs.map +4 -4
  13. package/dist/types/src/dbhost/data-service-host.d.ts.map +1 -1
  14. package/dist/types/src/dbhost/database-backend.d.ts +2 -2
  15. package/dist/types/src/dbhost/database-backend.d.ts.map +1 -1
  16. package/dist/types/src/metadata/metadata-store.d.ts +1 -2
  17. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  18. package/dist/types/src/pipeline/pipeline.d.ts +10 -1
  19. package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
  20. package/dist/types/src/space/{data-pipeline-controller.d.ts → data-pipeline.d.ts} +10 -18
  21. package/dist/types/src/space/data-pipeline.d.ts.map +1 -0
  22. package/dist/types/src/space/genesis.d.ts.map +1 -1
  23. package/dist/types/src/space/index.d.ts +1 -1
  24. package/dist/types/src/space/index.d.ts.map +1 -1
  25. package/dist/types/src/space/space.d.ts +6 -4
  26. package/dist/types/src/space/space.d.ts.map +1 -1
  27. package/dist/types/src/testing/test-agent-builder.d.ts +6 -5
  28. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  29. package/dist/types/src/testing/util.d.ts +2 -2
  30. package/dist/types/src/testing/util.d.ts.map +1 -1
  31. package/package.json +29 -29
  32. package/src/dbhost/data-service-host.ts +19 -25
  33. package/src/dbhost/database-backend.ts +1 -1
  34. package/src/metadata/metadata-store.ts +1 -2
  35. package/src/pipeline/pipeline.test.ts +12 -4
  36. package/src/pipeline/pipeline.ts +18 -3
  37. package/src/space/{data-pipeline-controller.ts → data-pipeline.ts} +62 -39
  38. package/src/space/genesis.ts +47 -7
  39. package/src/space/index.ts +1 -1
  40. package/src/space/space-protocol.browser.test.ts +8 -6
  41. package/src/space/space-protocol.test.ts +8 -6
  42. package/src/space/space.ts +22 -23
  43. package/src/testing/database-test-rig.ts +1 -1
  44. package/src/testing/test-agent-builder.ts +23 -11
  45. package/src/testing/util.ts +13 -12
  46. package/src/tests/database-unit.test.ts +25 -0
  47. package/src/tests/database.test.ts +5 -5
  48. package/dist/lib/browser/chunk-L44NG4N6.mjs.map +0 -7
  49. 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,EAAE,MAAM,eAAe,CAAC;AAC9E,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;IAgDxB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAoB7D"}
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
- private _itemDemuxer;
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,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;IACnC,OAAO,CAAC,YAAY,CAAe;gBAGhB,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
+ {"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,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,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
+ {"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;CAClB,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,EAAE,OAAO,EAAE,GAAE,4BAAiC;CAsCrF;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"}
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 declare type DataPipelineControllerContext = {
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 DataPipelineControllerImplParams = {
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 DataPipelineControllerImpl implements DataPipelineController {
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: DataPipelineControllerImplParams);
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
- open(spaceContext: DataPipelineControllerContext): Promise<void>;
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-controller.d.ts.map
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,gFAgBhG,CAAC"}
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"}
@@ -3,5 +3,5 @@ export * from './space';
3
3
  export * from './space-manager';
4
4
  export * from './space-protocol';
5
5
  export * from './genesis';
6
- export * from './data-pipeline-controller';
6
+ export * from './data-pipeline';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -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,4BAA4B,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
- initDataPipeline(controller: DataPipelineController): Promise<void>;
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,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAY,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,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;;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;IACjC,OAAO,CAAC,uBAAuB,CAAC,CAAyB;gBAE7C,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,WAAW;IA+B1E,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;IAMG,IAAI;IAeJ,KAAK;IAeL,gBAAgB,CAAC,UAAU,EAAE,sBAAsB;CAyB1D"}
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-presence';
8
+ import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
9
9
  import { Space, SpaceManager, SpaceProtocol } from '../space';
10
- import { DataPipelineControllerImpl } from '../space/data-pipeline-controller';
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, DataPipelineControllerImpl]>;
49
- createSpaceProtocol(topic: PublicKey, presence?: Presence): SpaceProtocol;
50
- createPresence(): Presence;
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,mCAAmC,CAAC;AAK7D,OAAO,EAA0C,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,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,0BAA0B,CAAC,CAAC;IAuC/C,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAkBzD,cAAc;CAQf"}
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 { DataPipelineControllerImpl } from '../space';
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: DataPipelineControllerImpl, check?: DataPipelineControllerImpl) => Promise<void>;
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,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD,eAAO,MAAM,oBAAoB,iBAAwB,YAAY;;;EAqBpE,CAAC;AAEF,eAAO,MAAM,uCAAuC,iBACpC,YAAY,mBACT,eAAe;;;EAejC,CAAC;AAEF,eAAO,MAAM,iBAAiB,WACpB,0BAA0B,UAC3B,0BAA0B,kBAgBlC,CAAC"}
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.31-next.ea8f0bc",
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.31-next.ea8f0bc",
24
- "@dxos/codec-protobuf": "0.1.31-next.ea8f0bc",
25
- "@dxos/context": "0.1.31-next.ea8f0bc",
26
- "@dxos/credentials": "0.1.31-next.ea8f0bc",
27
- "@dxos/crypto": "0.1.31-next.ea8f0bc",
28
- "@dxos/debug": "0.1.31-next.ea8f0bc",
29
- "@dxos/document-model": "0.1.31-next.ea8f0bc",
30
- "@dxos/echo-db": "0.1.31-next.ea8f0bc",
31
- "@dxos/feed-store": "0.1.31-next.ea8f0bc",
32
- "@dxos/hypercore": "0.1.31-next.ea8f0bc",
33
- "@dxos/keyring": "0.1.31-next.ea8f0bc",
34
- "@dxos/keys": "0.1.31-next.ea8f0bc",
35
- "@dxos/log": "0.1.31-next.ea8f0bc",
36
- "@dxos/messaging": "0.1.31-next.ea8f0bc",
37
- "@dxos/model-factory": "0.1.31-next.ea8f0bc",
38
- "@dxos/network-manager": "0.1.31-next.ea8f0bc",
39
- "@dxos/node-std": "0.1.31-next.ea8f0bc",
40
- "@dxos/protocols": "0.1.31-next.ea8f0bc",
41
- "@dxos/random-access-storage": "0.1.31-next.ea8f0bc",
42
- "@dxos/rpc": "0.1.31-next.ea8f0bc",
43
- "@dxos/teleport": "0.1.31-next.ea8f0bc",
44
- "@dxos/teleport-extension-object-sync": "0.1.31-next.ea8f0bc",
45
- "@dxos/teleport-extension-presence": "0.1.31-next.ea8f0bc",
46
- "@dxos/teleport-extension-replicator": "0.1.31-next.ea8f0bc",
47
- "@dxos/timeframe": "0.1.31-next.ea8f0bc",
48
- "@dxos/typings": "0.1.31-next.ea8f0bc",
49
- "@dxos/util": "0.1.31-next.ea8f0bc"
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.31-next.ea8f0bc"
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, (mutation) => {
49
- log('Object update', { mutation });
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([mutation.meta.feedKey, mutation.meta.seq]);
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
- const batch = {
56
- objects: [
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: mutation.meta.feedKey,
76
- seq: mutation.meta.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
- object: {
89
- ...request.batch.objects[0],
90
- mutations: request.batch.objects[0].mutations?.map((m) => ({
91
- ...m,
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
- private _itemDemuxer!: ItemDemuxer;
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
- object: {
38
- objectId: `${feedIdx}-${msgIdx}`
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
- object: {
58
- objectId: `local-${msgIdx}`
61
+ batch: {
62
+ objects: [
63
+ {
64
+ objectId: `local-${msgIdx}`
65
+ }
66
+ ]
59
67
  }
60
68
  }
61
69
  });
@@ -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 ? Timeframe.merge(this.endTimeframe, this._targetTimeframe) : this.endTimeframe;
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({ timeout }: WaitUntilReachedTargetParams = {}) {
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
  }),