@dxos/echo-pipeline 0.1.52 → 0.1.53-main.00be1a9

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 (34) hide show
  1. package/dist/lib/browser/{chunk-AXGWKSM3.mjs → chunk-SCMKAWNW.mjs} +386 -366
  2. package/dist/lib/browser/chunk-SCMKAWNW.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +2 -2
  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 +2 -2
  7. package/dist/lib/browser/testing/index.mjs.map +1 -1
  8. package/dist/lib/node/index.cjs +452 -432
  9. package/dist/lib/node/index.cjs.map +3 -3
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/testing/index.cjs +436 -416
  12. package/dist/lib/node/testing/index.cjs.map +3 -3
  13. package/dist/types/src/dbhost/snapshot-store.d.ts +3 -0
  14. package/dist/types/src/dbhost/snapshot-store.d.ts.map +1 -1
  15. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  16. package/dist/types/src/pipeline/message-selector.d.ts.map +1 -1
  17. package/dist/types/src/space/data-pipeline.d.ts.map +1 -1
  18. package/dist/types/src/space/space-protocol.d.ts +3 -0
  19. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  20. package/package.json +31 -32
  21. package/src/common/feeds.ts +3 -3
  22. package/src/dbhost/data-service-host.ts +3 -3
  23. package/src/dbhost/data-service.ts +4 -4
  24. package/src/dbhost/snapshot-store.ts +3 -0
  25. package/src/metadata/metadata-store.ts +6 -5
  26. package/src/pipeline/message-selector.ts +3 -5
  27. package/src/pipeline/pipeline.ts +11 -11
  28. package/src/space/auth.ts +3 -3
  29. package/src/space/data-pipeline.ts +11 -10
  30. package/src/space/space-protocol.browser.test.ts +2 -2
  31. package/src/space/space-protocol.test.ts +2 -2
  32. package/src/space/space-protocol.ts +10 -4
  33. package/src/space/space.ts +5 -5
  34. package/dist/lib/browser/chunk-AXGWKSM3.mjs.map +0 -7
@@ -1,6 +1,9 @@
1
1
  import { StoredSnapshotInfo } from '@dxos/protocols/proto/dxos/devtools/host';
2
2
  import { SpaceSnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';
3
3
  import { Directory } from '@dxos/random-access-storage';
4
+ /**
5
+ * @deprecated
6
+ */
4
7
  export declare class SnapshotStore {
5
8
  private readonly _directory;
6
9
  constructor(_directory: Directory);
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-store.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/snapshot-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,qBAAa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS;IAGlC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAetD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAe7D,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAarD"}
1
+ {"version":3,"file":"snapshot-store.d.ts","sourceRoot":"","sources":["../../../../src/dbhost/snapshot-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD;;GAEG;AACH,qBAAa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS;IAGlC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAetD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAe7D,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAarD"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;CACxB;AASD,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,SAAS,CAAqC;IACtD,SAAgB,MAAM,sBAA6B;gBAIhC,UAAU,EAAE,SAAS;IAGxC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCb,KAAK;IA8BnB,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa;IAW7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAIzC,iBAAiB,CAAC,MAAM,EAAE,cAAc;IAOxC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAU9B,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAKrE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAKxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;IAK/C,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CAMjG"}
1
+ {"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;CACxB;AASD,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,SAAS,CAAqC;IACtD,SAAgB,MAAM,sBAA6B;gBAIhC,UAAU,EAAE,SAAS;IAGxC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCb,KAAK;IA8BnB,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa;IAW7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAIzC,iBAAiB,CAAC,MAAM,EAAE,cAAc;IAOxC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAU9B,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAKrE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAKxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;IAK/C,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CAMjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-selector.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/message-selector.ts"],"names":[],"mappings":"AAOA,OAAO,EAAa,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,mBAAoB,cAAc,KAAG,kBAAkB,WAAW,CAiBnG,CAAC"}
1
+ {"version":3,"file":"message-selector.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/message-selector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,mBAAoB,cAAc,KAAG,kBAAkB,WAAW,CAiBnG,CAAC"}
@@ -1 +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,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAA2B,WAAW,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1D,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,MAAM,MAAM,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;IAE/B;;OAEG;IACH,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D,CAAC;AAiBF;;;;GAIG;AACH,qBACa,YAAY;IAWX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,+BAA+B,CAAmB;IAC1D,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,qBAAqB,CAAK;gBAEL,OAAO,EAAE,kBAAkB;IAEjD,WAAW,EAAG,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAEnC;;OAEG;IACI,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhD;;OAEG;IACI,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,CAAC,mBAAmB,CAAM;IAC1B,UAAU,oBAA2B;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAU;IAE5B,IAAI,MAAM,YAET;IAED,IAAI,QAAQ,yBAEX;IAED,IAAI,aAAa,6DAEhB;IAED,kBAAkB,CAAC,SAAS,EAAE,SAAS;IAKvC,yBAAyB,IAAI,mBAAmB;IAiB1C,IAAI;IAsCJ,KAAK;YAwBG,gBAAgB;IA6C9B,OAAO,CAAC,eAAe;YAST,oBAAoB;YAMpB,UAAU;YAqBV,wBAAwB;YAiBxB,2BAA2B;YA6B3B,aAAa;IAoBrB,kBAAkB,CAAC,SAAS,EAAE,SAAS;IAMvC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAqB7B,sBAAsB;CAG7B"}
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,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAA2B,WAAW,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1D,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,MAAM,MAAM,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;IAE/B;;OAEG;IACH,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D,CAAC;AAiBF;;;;GAIG;AACH,qBACa,YAAY;IAWX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,+BAA+B,CAAmB;IAC1D,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,qBAAqB,CAAK;gBAEL,OAAO,EAAE,kBAAkB;IAEjD,WAAW,EAAG,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAEnC;;OAEG;IACI,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhD;;OAEG;IACI,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,CAAC,mBAAmB,CAAM;IAC1B,UAAU,oBAA2B;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAU;IAE5B,IAAI,MAAM,YAET;IAED,IAAI,QAAQ,yBAEX;IAED,IAAI,aAAa,6DAEhB;IAED,kBAAkB,CAAC,SAAS,EAAE,SAAS;IAKvC,yBAAyB,IAAI,mBAAmB;IAiB1C,IAAI;IAsCJ,KAAK;YAwBG,gBAAgB;IA6C9B,OAAO,CAAC,eAAe;YAST,oBAAoB;YAMpB,UAAU;YAsBV,wBAAwB;YAiBxB,2BAA2B;YA6B3B,aAAa;IAoBrB,kBAAkB,CAAC,SAAS,EAAE,SAAS;IAMvC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAqB7B,sBAAsB;CAG7B"}
@@ -1,7 +1,9 @@
1
1
  /// <reference types="node" />
2
+ import { Event } from '@dxos/async';
2
3
  import { FeedWrapper } from '@dxos/feed-store';
3
4
  import { PublicKey } from '@dxos/keys';
4
5
  import { NetworkManager, WireProtocol, WireProtocolParams } from '@dxos/network-manager';
6
+ import { ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';
5
7
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
6
8
  import { Teleport } from '@dxos/teleport';
7
9
  import { BlobStore, BlobSync } from '@dxos/teleport-extension-object-sync';
@@ -77,6 +79,7 @@ export declare class SpaceProtocolSession implements WireProtocol {
77
79
  readonly replicator: ReplicatorExtension;
78
80
  private _authStatus;
79
81
  get authStatus(): AuthStatus;
82
+ get stats(): Event<ConnectionInfo.StreamStats[]>;
80
83
  constructor({ wireParams, swarmIdentity, onSessionAuth, onAuthFailure, blobSync }: SpaceProtocolSessionParams);
81
84
  get stream(): import("stream").Duplex;
82
85
  initialize(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"space-protocol.d.ts","sourceRoot":"","sources":["../../../../src/space/space-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"space-protocol.d.ts","sourceRoot":"","sources":["../../../../src/space/space-protocol.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.1.52",
3
+ "version": "0.1.53-main.00be1a9",
4
4
  "description": "ECHO database.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -20,43 +20,42 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "crc-32": "^1.2.2",
23
- "debug": "^4.3.3",
24
- "@dxos/async": "0.1.52",
25
- "@dxos/codec-protobuf": "0.1.52",
26
- "@dxos/context": "0.1.52",
27
- "@dxos/credentials": "0.1.52",
28
- "@dxos/crypto": "0.1.52",
29
- "@dxos/debug": "0.1.52",
30
- "@dxos/document-model": "0.1.52",
31
- "@dxos/echo-db": "0.1.52",
32
- "@dxos/errors": "0.1.52",
33
- "@dxos/feed-store": "0.1.52",
34
- "@dxos/hypercore": "0.1.52",
35
- "@dxos/keyring": "0.1.52",
36
- "@dxos/keys": "0.1.52",
37
- "@dxos/log": "0.1.52",
38
- "@dxos/messaging": "0.1.52",
39
- "@dxos/model-factory": "0.1.52",
40
- "@dxos/network-manager": "0.1.52",
41
- "@dxos/node-std": "0.1.52",
42
- "@dxos/protocols": "0.1.52",
43
- "@dxos/random-access-storage": "0.1.52",
44
- "@dxos/rpc": "0.1.52",
45
- "@dxos/teleport": "0.1.52",
46
- "@dxos/teleport-extension-gossip": "0.1.52",
47
- "@dxos/teleport-extension-object-sync": "0.1.52",
48
- "@dxos/teleport-extension-replicator": "0.1.52",
49
- "@dxos/timeframe": "0.1.52",
50
- "@dxos/typings": "0.1.52",
51
- "@dxos/util": "0.1.52"
23
+ "tiny-invariant": "^1.3.1",
24
+ "@dxos/async": "0.1.53-main.00be1a9",
25
+ "@dxos/codec-protobuf": "0.1.53-main.00be1a9",
26
+ "@dxos/context": "0.1.53-main.00be1a9",
27
+ "@dxos/credentials": "0.1.53-main.00be1a9",
28
+ "@dxos/crypto": "0.1.53-main.00be1a9",
29
+ "@dxos/debug": "0.1.53-main.00be1a9",
30
+ "@dxos/document-model": "0.1.53-main.00be1a9",
31
+ "@dxos/echo-db": "0.1.53-main.00be1a9",
32
+ "@dxos/errors": "0.1.53-main.00be1a9",
33
+ "@dxos/feed-store": "0.1.53-main.00be1a9",
34
+ "@dxos/hypercore": "0.1.53-main.00be1a9",
35
+ "@dxos/keyring": "0.1.53-main.00be1a9",
36
+ "@dxos/keys": "0.1.53-main.00be1a9",
37
+ "@dxos/log": "0.1.53-main.00be1a9",
38
+ "@dxos/messaging": "0.1.53-main.00be1a9",
39
+ "@dxos/model-factory": "0.1.53-main.00be1a9",
40
+ "@dxos/network-manager": "0.1.53-main.00be1a9",
41
+ "@dxos/node-std": "0.1.53-main.00be1a9",
42
+ "@dxos/protocols": "0.1.53-main.00be1a9",
43
+ "@dxos/random-access-storage": "0.1.53-main.00be1a9",
44
+ "@dxos/rpc": "0.1.53-main.00be1a9",
45
+ "@dxos/teleport": "0.1.53-main.00be1a9",
46
+ "@dxos/teleport-extension-gossip": "0.1.53-main.00be1a9",
47
+ "@dxos/teleport-extension-object-sync": "0.1.53-main.00be1a9",
48
+ "@dxos/teleport-extension-replicator": "0.1.53-main.00be1a9",
49
+ "@dxos/timeframe": "0.1.53-main.00be1a9",
50
+ "@dxos/typings": "0.1.53-main.00be1a9",
51
+ "@dxos/util": "0.1.53-main.00be1a9"
52
52
  },
53
53
  "devDependencies": {
54
- "@types/debug": "^4.1.7",
55
54
  "fast-check": "~3.3.0",
56
55
  "hypercore-protocol": "^8.0.7",
57
56
  "source-map-support": "^0.5.12",
58
57
  "wait-for-expect": "^3.0.2",
59
- "@dxos/text-model": "0.1.52"
58
+ "@dxos/text-model": "0.1.53-main.00be1a9"
60
59
  },
61
60
  "publishConfig": {
62
61
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { FeedWriter } from '@dxos/feed-store';
8
8
  import { MaybePromise } from '@dxos/util';
@@ -14,8 +14,8 @@ export const createMappedFeedWriter = <Source extends {}, Target extends {}>(
14
14
  mapper: (arg: Source) => MaybePromise<Target>,
15
15
  writer: FeedWriter<Target>,
16
16
  ): FeedWriter<Source> => {
17
- assert(mapper);
18
- assert(writer);
17
+ invariant(mapper);
18
+ invariant(writer);
19
19
 
20
20
  return {
21
21
  write: async (data: Source, options) => await writer.write(await mapper(data), options),
@@ -2,7 +2,7 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { Stream } from '@dxos/codec-protobuf';
8
8
  import { tagMutationsInBatch, ItemDemuxer, ItemManager, setMetadataOnObject } from '@dxos/echo-db';
@@ -47,7 +47,7 @@ export class DataServiceHost {
47
47
 
48
48
  this._itemDemuxer.mutation.on(ctx, (message) => {
49
49
  const { batch, meta } = message;
50
- assert(!(meta as any).clientTag, 'Unexpected client tag in mutation message');
50
+ invariant(!(meta as any).clientTag, 'Unexpected client tag in mutation message');
51
51
  log('message', { batch, meta });
52
52
 
53
53
  const clientTag = this._clientTagMap.get([message.meta.feedKey, message.meta.seq]);
@@ -74,7 +74,7 @@ export class DataServiceHost {
74
74
  }
75
75
 
76
76
  async write(request: WriteRequest): Promise<MutationReceipt> {
77
- assert(this._writeStream, 'Cannot write mutations in readonly mode');
77
+ invariant(this._writeStream, 'Cannot write mutations in readonly mode');
78
78
 
79
79
  log('write', { clientTag: request.clientTag, objectCount: request.batch.objects?.length ?? 0 });
80
80
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { Stream } from '@dxos/codec-protobuf';
8
8
  import { raise } from '@dxos/debug';
@@ -50,15 +50,15 @@ export class DataServiceImpl implements DataService {
50
50
  constructor(private readonly _subscriptions: DataServiceSubscriptions) {}
51
51
 
52
52
  subscribe(request: SubscribeRequest): Stream<EchoEvent> {
53
- assert(request.spaceKey);
53
+ invariant(request.spaceKey);
54
54
  const host =
55
55
  this._subscriptions.getDataService(request.spaceKey) ?? raise(new Error(`space not found: ${request.spaceKey}`));
56
56
  return host.subscribe();
57
57
  }
58
58
 
59
59
  write(request: WriteRequest): Promise<MutationReceipt> {
60
- assert(request.spaceKey);
61
- assert(request.batch);
60
+ invariant(request.spaceKey);
61
+ invariant(request.batch);
62
62
  const host =
63
63
  this._subscriptions.getDataService(request.spaceKey) ?? raise(new Error(`space not found: ${request.spaceKey}`));
64
64
  return host.write(request);
@@ -8,6 +8,9 @@ import { StoredSnapshotInfo } from '@dxos/protocols/proto/dxos/devtools/host';
8
8
  import { SpaceSnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';
9
9
  import { Directory } from '@dxos/random-access-storage';
10
10
 
11
+ /**
12
+ * @deprecated
13
+ */
11
14
  export class SnapshotStore {
12
15
  // prettier-ignore
13
16
  constructor(
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import CRC32 from 'crc-32';
6
- import assert from 'node:assert';
6
+ import invariant from 'tiny-invariant';
7
7
 
8
8
  import { synchronized, Event } from '@dxos/async';
9
9
  import { DataCorruptionError } from '@dxos/errors';
@@ -13,6 +13,7 @@ import { STORAGE_VERSION, schema } from '@dxos/protocols';
13
13
  import { EchoMetadata, SpaceMetadata, IdentityRecord, SpaceCache } from '@dxos/protocols/proto/dxos/echo/metadata';
14
14
  import { Directory } from '@dxos/random-access-storage';
15
15
  import { Timeframe } from '@dxos/timeframe';
16
+ import { arrayToBuffer } from '@dxos/util';
16
17
 
17
18
  export interface AddSpaceOptions {
18
19
  key: PublicKey;
@@ -100,7 +101,7 @@ export class MetadataStore {
100
101
  const file = this._directory.getOrCreateFile('EchoMetadata');
101
102
 
102
103
  try {
103
- const encoded = Buffer.from(schema.getCodecForType('dxos.echo.metadata.EchoMetadata').encode(data));
104
+ const encoded = arrayToBuffer(schema.getCodecForType('dxos.echo.metadata.EchoMetadata').encode(data));
104
105
  const checksum = CRC32.buf(encoded);
105
106
 
106
107
  const result = Buffer.alloc(8 + encoded.length);
@@ -125,7 +126,7 @@ export class MetadataStore {
125
126
  }
126
127
 
127
128
  const space = this.spaces.find((space) => space.key === spaceKey);
128
- assert(space, 'Space not found');
129
+ invariant(space, 'Space not found');
129
130
  return space;
130
131
  }
131
132
 
@@ -143,14 +144,14 @@ export class MetadataStore {
143
144
  }
144
145
 
145
146
  async setIdentityRecord(record: IdentityRecord) {
146
- assert(!this._metadata.identity, 'Cannot overwrite existing identity in metadata');
147
+ invariant(!this._metadata.identity, 'Cannot overwrite existing identity in metadata');
147
148
 
148
149
  this._metadata.identity = record;
149
150
  await this._save();
150
151
  }
151
152
 
152
153
  async addSpace(record: SpaceMetadata) {
153
- assert(
154
+ invariant(
154
155
  !(this._metadata.spaces ?? []).find((space) => space.key === record.key),
155
156
  'Cannot overwrite existing space in metadata',
156
157
  );
@@ -2,16 +2,14 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import debug from 'debug';
6
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
7
6
 
8
7
  import { FeedBlock, FeedBlockSelector } from '@dxos/feed-store';
8
+ import { log } from '@dxos/log';
9
9
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
10
10
 
11
11
  import { TimeframeClock } from './timeframe-clock';
12
12
 
13
- const log = debug('dxos:echo-db:message-selector');
14
-
15
13
  /**
16
14
  * The MessageSelector makes sure that we read in a trusted order.
17
15
  * The first message we wish to process is the SpaceGenesis, which will admit a Feed.
@@ -25,7 +23,7 @@ export const createMessageSelector = (timeframeClock: TimeframeClock): FeedBlock
25
23
  const {
26
24
  data: { timeframe },
27
25
  } = messages[i];
28
- assert(timeframe);
26
+ invariant(timeframe);
29
27
 
30
28
  if (!timeframeClock.hasGaps(timeframe)) {
31
29
  return i;
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { Event, sleep, synchronized, Trigger } from '@dxos/async';
8
8
  import { Context, rejectOnDispose } from '@dxos/context';
@@ -224,7 +224,7 @@ export class Pipeline implements PipelineAccessor {
224
224
  }
225
225
 
226
226
  get writer(): FeedWriter<FeedMessage.Payload> {
227
- assert(this._writer, 'Writer not set.');
227
+ invariant(this._writer, 'Writer not set.');
228
228
  return this._writer;
229
229
  }
230
230
 
@@ -247,8 +247,8 @@ export class Pipeline implements PipelineAccessor {
247
247
  }
248
248
 
249
249
  setWriteFeed(feed: FeedWrapper<FeedMessage>) {
250
- assert(!this._writer, 'Writer already set.');
251
- assert(feed.properties.writable, 'Feed must be writable.');
250
+ invariant(!this._writer, 'Writer already set.');
251
+ invariant(feed.properties.writable, 'Feed must be writable.');
252
252
 
253
253
  this._writer = createMappedFeedWriter<FeedMessage.Payload, FeedMessage>(
254
254
  (payload: FeedMessage.Payload) => ({
@@ -283,7 +283,7 @@ export class Pipeline implements PipelineAccessor {
283
283
  */
284
284
  @synchronized
285
285
  async setCursor(timeframe: Timeframe) {
286
- assert(!this._isStarted || this._isPaused, 'Invalid state.');
286
+ invariant(!this._isStarted || this._isPaused, 'Invalid state.');
287
287
 
288
288
  this._state._startTimeframe = timeframe;
289
289
  this._timeframeClock.setTimeframe(timeframe);
@@ -305,7 +305,7 @@ export class Pipeline implements PipelineAccessor {
305
305
  */
306
306
  @synchronized
307
307
  async pause() {
308
- assert(this._isStarted, 'Pipeline is not open.');
308
+ invariant(this._isStarted, 'Pipeline is not open.');
309
309
  if (this._isPaused) {
310
310
  return;
311
311
  }
@@ -317,8 +317,8 @@ export class Pipeline implements PipelineAccessor {
317
317
 
318
318
  @synchronized
319
319
  async unpause() {
320
- assert(this._isStarted, 'Pipeline is not open.');
321
- assert(this._isPaused, 'Pipeline is not paused.');
320
+ invariant(this._isStarted, 'Pipeline is not open.');
321
+ invariant(this._isPaused, 'Pipeline is not paused.');
322
322
 
323
323
  this._pauseTrigger.wake();
324
324
  this._isPaused = false;
@@ -329,10 +329,10 @@ export class Pipeline implements PipelineAccessor {
329
329
  * Updates the timeframe clock after the message has bee processed.
330
330
  */
331
331
  async *consume(): AsyncIterable<FeedMessageBlock> {
332
- assert(!this._isOpen, 'Pipeline is already being consumed.');
332
+ invariant(!this._isOpen, 'Pipeline is already being consumed.');
333
333
  this._isOpen = true;
334
334
 
335
- assert(this._feedSetIterator, 'Iterator not initialized.');
335
+ invariant(this._feedSetIterator, 'Iterator not initialized.');
336
336
  let lastFeedSetIterator = this._feedSetIterator;
337
337
  let iterable = lastFeedSetIterator[Symbol.asyncIterator]();
338
338
 
@@ -341,7 +341,7 @@ export class Pipeline implements PipelineAccessor {
341
341
 
342
342
  // Iterator might have been changed while we were waiting for the processing to complete.
343
343
  if (lastFeedSetIterator !== this._feedSetIterator) {
344
- assert(this._feedSetIterator, 'Iterator not initialized.');
344
+ invariant(this._feedSetIterator, 'Iterator not initialized.');
345
345
  lastFeedSetIterator = this._feedSetIterator;
346
346
  iterable = lastFeedSetIterator[Symbol.asyncIterator]();
347
347
  }
package/src/space/auth.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2019 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { runInContext, scheduleTask } from '@dxos/async';
8
8
  import { Context } from '@dxos/context';
@@ -67,9 +67,9 @@ export class AuthExtension extends RpcExtension<Services, Services> {
67
67
  try {
68
68
  const challenge = randomBytes(32);
69
69
  const { credential } = await this.rpc.AuthService.authenticate({ challenge });
70
- assert(credential?.length > 0, 'invalid credential');
70
+ invariant(credential?.length > 0, 'invalid credential');
71
71
  const success = await this._authParams.verifier(challenge, credential);
72
- assert(success, 'credential not verified');
72
+ invariant(success, 'credential not verified');
73
73
  runInContext(this._ctx, () => this._authParams.onAuthSuccess());
74
74
  } catch (err) {
75
75
  log('auth failed', err);
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { Event, scheduleTask, synchronized, trackLeaks } from '@dxos/async';
8
8
  import { Context } from '@dxos/context';
@@ -146,8 +146,8 @@ export class DataPipeline {
146
146
  // Create database backend.
147
147
  const feedWriter: FeedWriter<DataMessage> = {
148
148
  write: (data, options) => {
149
- assert(this._pipeline, 'Pipeline is not initialized.');
150
- assert(this.currentEpoch, 'Epoch is not initialized.');
149
+ invariant(this._pipeline, 'Pipeline is not initialized.');
150
+ invariant(this.currentEpoch, 'Epoch is not initialized.');
151
151
  return this._pipeline.writer.write({ data }, options);
152
152
  },
153
153
  };
@@ -198,7 +198,7 @@ export class DataPipeline {
198
198
  await waitForOneEpoch;
199
199
  }
200
200
 
201
- assert(this._pipeline, 'Pipeline is not initialized.');
201
+ invariant(this._pipeline, 'Pipeline is not initialized.');
202
202
  for await (const msg of this._pipeline.consume()) {
203
203
  const { feedKey, seq, data } = msg;
204
204
  log('processing message', { feedKey, seq });
@@ -237,7 +237,7 @@ export class DataPipeline {
237
237
  }
238
238
 
239
239
  private _createSnapshot(): SpaceSnapshot {
240
- assert(this.databaseHost, 'Database backend is not initialized.');
240
+ invariant(this.databaseHost, 'Database backend is not initialized.');
241
241
  return {
242
242
  spaceKey: this._params.spaceKey.asUint8Array(),
243
243
  timeframe: this._pipeline!.state.timeframe,
@@ -259,6 +259,7 @@ export class DataPipeline {
259
259
  const propertiesItem = this.itemManager.items.find(
260
260
  (item) =>
261
261
  item.modelMeta?.type === 'dxos:model/document' &&
262
+ // TODO(burdon): Document?
262
263
  (getStateMachineFromItem(item)?.snapshot() as ObjectSnapshot).type === 'dxos.sdk.client.Properties',
263
264
  );
264
265
  if (propertiesItem) {
@@ -319,8 +320,8 @@ export class DataPipeline {
319
320
 
320
321
  @synchronized
321
322
  private async _processEpoch(ctx: Context, epoch: Epoch) {
322
- assert(this._isOpen, 'Space is closed.');
323
- assert(this._pipeline);
323
+ invariant(this._isOpen, 'Space is closed.');
324
+ invariant(this._pipeline);
324
325
  this._lastProcessedEpoch = epoch.number;
325
326
 
326
327
  log('Processing epoch', { epoch });
@@ -339,14 +340,14 @@ export class DataPipeline {
339
340
  }
340
341
 
341
342
  async waitUntilTimeframe(timeframe: Timeframe) {
342
- assert(this._pipeline, 'Pipeline is not initialized.');
343
+ invariant(this._pipeline, 'Pipeline is not initialized.');
343
344
  await this._pipeline.state.waitUntilTimeframe(timeframe);
344
345
  }
345
346
 
346
347
  @synchronized
347
348
  async createEpoch(): Promise<Epoch> {
348
- assert(this._pipeline);
349
- assert(this.currentEpoch);
349
+ invariant(this._pipeline);
350
+ invariant(this.currentEpoch);
350
351
 
351
352
  await this._pipeline.pause();
352
353
 
@@ -43,8 +43,8 @@ describe('space/space-protocol', () => {
43
43
  afterTest(() => protocol2.stop());
44
44
 
45
45
  await waitForExpect(() => {
46
- expect(presence1.getPeersOnline().map(({ identityKey }) => identityKey)).toContainEqual(peer2.identityKey);
47
- expect(presence2.getPeersOnline().map(({ identityKey }) => identityKey)).toContainEqual(peer1.identityKey);
46
+ expect(presence1.getPeersOnline().some(({ identityKey }) => identityKey.equals(peer2.identityKey))).toBeTruthy();
47
+ expect(presence2.getPeersOnline().some(({ identityKey }) => identityKey.equals(peer1.identityKey))).toBeTruthy();
48
48
  });
49
49
  });
50
50
 
@@ -39,8 +39,8 @@ describe('space/space-protocol', () => {
39
39
  afterTest(() => protocol2.stop());
40
40
 
41
41
  await waitForExpect(() => {
42
- expect(presence1.getPeersOnline().map(({ identityKey }) => identityKey)).toContainEqual(peer2.identityKey);
43
- expect(presence2.getPeersOnline().map(({ identityKey }) => identityKey)).toContainEqual(peer1.identityKey);
42
+ expect(presence1.getPeersOnline().some(({ identityKey }) => identityKey.equals(peer2.identityKey))).toBeTruthy();
43
+ expect(presence2.getPeersOnline().some(({ identityKey }) => identityKey.equals(peer1.identityKey))).toBeTruthy();
44
44
  }, 1_000);
45
45
  });
46
46
 
@@ -2,7 +2,8 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { discoveryKey, sha256 } from '@dxos/crypto';
5
+ import { Event } from '@dxos/async';
6
+ import { discoveryKey, subtleCrypto } from '@dxos/crypto';
6
7
  import { FeedWrapper } from '@dxos/feed-store';
7
8
  import { PublicKey } from '@dxos/keys';
8
9
  import { log, logInfo } from '@dxos/log';
@@ -14,6 +15,7 @@ import {
14
15
  WireProtocolParams,
15
16
  WireProtocolProvider,
16
17
  } from '@dxos/network-manager';
18
+ import { ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';
17
19
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
18
20
  import { Teleport } from '@dxos/teleport';
19
21
  import { BlobStore, BlobSync } from '@dxos/teleport-extension-object-sync';
@@ -59,7 +61,7 @@ export class SpaceProtocol {
59
61
  public readonly blobSync: BlobSync;
60
62
 
61
63
  @logInfo
62
- private readonly _topic: PublicKey;
64
+ private readonly _topic: Promise<PublicKey>;
63
65
 
64
66
  private readonly _feeds = new Set<FeedWrapper<FeedMessage>>();
65
67
  private readonly _sessions = new ComplexMap<PublicKey, SpaceProtocolSession>(PublicKey.hash);
@@ -86,7 +88,7 @@ export class SpaceProtocol {
86
88
  this._onAuthFailure = onAuthFailure;
87
89
  this.blobSync = new BlobSync({ blobStore });
88
90
 
89
- this._topic = PublicKey.from(discoveryKey(sha256(topic.toHex())));
91
+ this._topic = subtleCrypto.digest('SHA-256', topic.asBuffer()).then(discoveryKey).then(PublicKey.from);
90
92
  }
91
93
 
92
94
  // TODO(burdon): Create abstraction for Space (e.g., add keys and have provider).
@@ -120,7 +122,7 @@ export class SpaceProtocol {
120
122
  this._connection = await this._networkManager.joinSwarm({
121
123
  protocolProvider: this._createProtocolProvider(credentials),
122
124
  peerId: this._swarmIdentity.peerKey,
123
- topic: this._topic,
125
+ topic: await this._topic,
124
126
  topology: new MMSTTopology(topologyConfig),
125
127
  label: `Protocol swarm: ${this._topic}`,
126
128
  });
@@ -204,6 +206,10 @@ export class SpaceProtocolSession implements WireProtocol {
204
206
  return this._authStatus;
205
207
  }
206
208
 
209
+ get stats(): Event<ConnectionInfo.StreamStats[]> {
210
+ return this._teleport.stats;
211
+ }
212
+
207
213
  // TODO(dmaretskyi): Allow to pass in extra extensions.
208
214
  constructor({ wireParams, swarmIdentity, onSessionAuth, onAuthFailure, blobSync }: SpaceProtocolSessionParams) {
209
215
  this._wireParams = wireParams;
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'node:assert';
5
+ import invariant from 'tiny-invariant';
6
6
 
7
7
  import { Event, synchronized, trackLeaks, Lock } from '@dxos/async';
8
8
  import { CredentialConsumer, FeedInfo } from '@dxos/credentials';
@@ -71,7 +71,7 @@ export class Space {
71
71
  private _dataFeed?: FeedWrapper<FeedMessage>;
72
72
 
73
73
  constructor(params: SpaceParams) {
74
- assert(params.spaceKey && params.feedProvider);
74
+ invariant(params.spaceKey && params.feedProvider);
75
75
  this._key = params.spaceKey;
76
76
  this._genesisFeedKey = params.genesisFeed.key;
77
77
  this._feedProvider = params.feedProvider;
@@ -181,14 +181,14 @@ export class Space {
181
181
  }
182
182
 
183
183
  setControlFeed(feed: FeedWrapper<FeedMessage>) {
184
- assert(!this._controlFeed, 'Control feed already set.');
184
+ invariant(!this._controlFeed, 'Control feed already set.');
185
185
  this._controlFeed = feed;
186
186
  this._controlPipeline.setWriteFeed(feed);
187
187
  return this;
188
188
  }
189
189
 
190
190
  setDataFeed(feed: FeedWrapper<FeedMessage>) {
191
- assert(!this._dataFeed, 'Data feed already set.');
191
+ invariant(!this._dataFeed, 'Data feed already set.');
192
192
  this._dataFeed = feed;
193
193
  this._dataPipeline.pipeline?.setWriteFeed(feed);
194
194
  return this;
@@ -250,7 +250,7 @@ export class Space {
250
250
  @synchronized
251
251
  async initializeDataPipeline() {
252
252
  log('initializeDataPipeline');
253
- assert(this._isOpen, 'Space must be open to initialize data pipeline.');
253
+ invariant(this._isOpen, 'Space must be open to initialize data pipeline.');
254
254
  await this._dataPipeline.open();
255
255
  }
256
256
  }