@dxos/echo-pipeline 0.5.2 → 0.5.3-main.088a2c8

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 (48) hide show
  1. package/dist/lib/browser/{chunk-VQQD32DM.mjs → chunk-VUJXFVSK.mjs} +49 -30
  2. package/dist/lib/browser/{chunk-VQQD32DM.mjs.map → chunk-VUJXFVSK.mjs.map} +3 -3
  3. package/dist/lib/browser/index.mjs +435 -288
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +3 -1
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-P7L7ICAH.cjs → chunk-6733E3WM.cjs} +50 -32
  9. package/dist/lib/node/{chunk-P7L7ICAH.cjs.map → chunk-6733E3WM.cjs.map} +3 -3
  10. package/dist/lib/node/index.cjs +446 -299
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +13 -11
  14. package/dist/lib/node/testing/index.cjs.map +3 -3
  15. package/dist/types/src/automerge/automerge-host.d.ts +4 -11
  16. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  17. package/dist/types/src/automerge/echo-network-adapter.d.ts +6 -0
  18. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  19. package/dist/types/src/automerge/echo-replicator.d.ts +2 -0
  20. package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
  21. package/dist/types/src/automerge/index.d.ts +1 -1
  22. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +2 -2
  23. package/dist/types/src/automerge/mesh-echo-replicator.d.ts +23 -0
  24. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -0
  25. package/dist/types/src/automerge/migrations.d.ts +2 -2
  26. package/dist/types/src/space/space-manager.d.ts +3 -2
  27. package/dist/types/src/space/space-manager.d.ts.map +1 -1
  28. package/dist/types/src/space/space-protocol.d.ts +2 -0
  29. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  30. package/dist/types/src/space/space.d.ts +4 -3
  31. package/dist/types/src/space/space.d.ts.map +1 -1
  32. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  33. package/package.json +33 -33
  34. package/src/automerge/automerge-host.test.ts +22 -9
  35. package/src/automerge/automerge-host.ts +62 -88
  36. package/src/automerge/echo-network-adapter.ts +19 -0
  37. package/src/automerge/echo-replicator.ts +3 -0
  38. package/src/automerge/index.ts +1 -1
  39. package/src/automerge/leveldb-storage-adapter.ts +2 -2
  40. package/src/automerge/mesh-echo-replicator.ts +232 -0
  41. package/src/automerge/migrations.ts +2 -2
  42. package/src/space/space-manager.ts +4 -1
  43. package/src/space/space-protocol.ts +11 -8
  44. package/src/space/space.ts +8 -3
  45. package/src/testing/test-agent-builder.ts +1 -0
  46. package/dist/types/src/automerge/mesh-network-adapter.d.ts +0 -18
  47. package/dist/types/src/automerge/mesh-network-adapter.d.ts.map +0 -1
  48. package/src/automerge/mesh-network-adapter.ts +0 -107
@@ -1,7 +1,7 @@
1
- import { type SubLevelDB } from '@dxos/kv-store';
1
+ import { type SublevelDB } from '@dxos/kv-store';
2
2
  import { type Directory } from '@dxos/random-access-storage';
3
3
  export declare const levelMigration: ({ db, directory }: {
4
- db: SubLevelDB;
4
+ db: SublevelDB;
5
5
  directory: Directory;
6
6
  }) => Promise<void>;
7
7
  //# sourceMappingURL=migrations.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type DelegateInvitationCredential } from '@dxos/credentials';
1
+ import { type DelegateInvitationCredential, type MemberInfo } from '@dxos/credentials';
2
2
  import { type FeedStore } from '@dxos/feed-store';
3
3
  import { PublicKey } from '@dxos/keys';
4
4
  import { type NetworkManager } from '@dxos/network-manager';
@@ -31,6 +31,7 @@ export type ConstructSpaceParams = {
31
31
  onAuthorizedConnection: (session: Teleport) => void;
32
32
  onAuthFailure?: (session: Teleport) => void;
33
33
  onDelegatedInvitationStatusChange: (invitation: DelegateInvitationCredential, isActive: boolean) => Promise<void>;
34
+ onMemberRolesChanged: (member: MemberInfo[]) => Promise<void>;
34
35
  };
35
36
  /**
36
37
  * Manages a collection of ECHO (Data) Spaces.
@@ -47,6 +48,6 @@ export declare class SpaceManager {
47
48
  get spaces(): ComplexMap<PublicKey, Space>;
48
49
  open(): Promise<void>;
49
50
  close(): Promise<void>;
50
- constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, onDelegatedInvitationStatusChange, memberKey, }: ConstructSpaceParams): Promise<Space>;
51
+ constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, onDelegatedInvitationStatusChange, onMemberRolesChanged, memberKey, }: ConstructSpaceParams): Promise<Space>;
51
52
  }
52
53
  //# sourceMappingURL=space-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space-manager.d.ts","sourceRoot":"","sources":["../../../../src/space/space-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,sBAAsB,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,iCAAiC,EAAE,CAAC,UAAU,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnH,CAAC;AAEF;;GAEG;AACH,qBACa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE9C,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,kBAAkB;IAUtG,IAAI,MAAM,iCAET;IAGK,IAAI;IAGJ,KAAK;IAIL,cAAc,CAAC,EACnB,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,iCAAiC,EACjC,SAAS,GACV,EAAE,oBAAoB;CAiCxB"}
1
+ {"version":3,"file":"space-manager.d.ts","sourceRoot":"","sources":["../../../../src/space/space-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,4BAA4B,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,sBAAsB,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,iCAAiC,EAAE,CAAC,UAAU,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClH,oBAAoB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC;AAEF;;GAEG;AACH,qBACa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE9C,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,kBAAkB;IAUtG,IAAI,MAAM,iCAET;IAGK,IAAI;IAGJ,KAAK;IAIL,cAAc,CAAC,EACnB,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,iCAAiC,EACjC,oBAAoB,EACpB,SAAS,GACV,EAAE,oBAAoB;CAkCxB"}
@@ -40,6 +40,7 @@ export declare class SpaceProtocol {
40
40
  private readonly _spaceKey;
41
41
  private readonly _feeds;
42
42
  private readonly _sessions;
43
+ private readonly _topology;
43
44
  private _connection?;
44
45
  get sessions(): ReadonlyMap<PublicKey, SpaceProtocolSession>;
45
46
  get feeds(): ReadonlySet<FeedWrapper<FeedMessage>>;
@@ -47,6 +48,7 @@ export declare class SpaceProtocol {
47
48
  constructor({ topic, swarmIdentity, networkManager, onSessionAuth, onAuthFailure, blobStore }: SpaceProtocolOptions);
48
49
  addFeed(feed: FeedWrapper<FeedMessage>): void;
49
50
  start(): Promise<void>;
51
+ updateTopology(): void;
50
52
  stop(): Promise<void>;
51
53
  private _createProtocolProvider;
52
54
  }
@@ -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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"}
@@ -1,12 +1,12 @@
1
1
  import { Event } from '@dxos/async';
2
- import { Resource, type Context } from '@dxos/context';
3
- import { type FeedInfo, type DelegateInvitationCredential } from '@dxos/credentials';
2
+ import { type Context, Resource } from '@dxos/context';
3
+ import { type DelegateInvitationCredential, type FeedInfo, type MemberInfo } from '@dxos/credentials';
4
4
  import { type FeedOptions, type FeedWrapper } from '@dxos/feed-store';
5
5
  import { type PublicKey } from '@dxos/keys';
6
6
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
7
7
  import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
8
8
  import { type Timeframe } from '@dxos/timeframe';
9
- import { Callback, type AsyncCallback } from '@dxos/util';
9
+ import { type AsyncCallback, Callback } from '@dxos/util';
10
10
  import { type SpaceProtocol } from './space-protocol';
11
11
  import { type SnapshotManager } from '../db-host';
12
12
  import { type MetadataStore } from '../metadata';
@@ -22,6 +22,7 @@ export type SpaceParams = {
22
22
  memberKey: PublicKey;
23
23
  snapshotId?: string | undefined;
24
24
  onDelegatedInvitationStatusChange: (invitation: DelegateInvitationCredential, isActive: boolean) => Promise<void>;
25
+ onMemberRolesChanged: (member: MemberInfo[]) => Promise<void>;
25
26
  };
26
27
  export type CreatePipelineParams = {
27
28
  start: Timeframe;
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAkB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,iCAAiC,EAAE,CAAC,UAAU,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnH,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,CAAC;CAElB,CAAC;AAEF;;GAEG;AAEH,qBAEa,KAAM,SAAQ,QAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,SAAgB,qBAAqB,sCAA6C;IAClF,SAAgB,WAAW,cAAe;IAC1C,SACgB,QAAQ,EAAE,aAAa,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,YAAY,CAAC,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA2B;gBAEjC,MAAM,EAAE,WAAW;IA8C/B,IAEI,GAAG,cAEN;IAED,IAAI,MAAM,YAET;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,IAAI,cAAc,0BAEjB;IAED,IAAI,WAAW,0BAEd;IAED,IAAI,UAAU,2CAEb;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,gBAAgB,CAEtC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAEK,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAO7C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAMhD;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;cAKJ,KAAK,CAAC,GAAG,EAAE,OAAO;cAWlB,MAAM;CAShC"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-agent-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-agent-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/echo-pipeline",
3
- "version": "0.5.2",
3
+ "version": "0.5.3-main.088a2c8",
4
4
  "description": "ECHO database.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -39,38 +39,38 @@
39
39
  "crc-32": "^1.2.2",
40
40
  "level": "^8.0.1",
41
41
  "level-transcoder": "^1.0.1",
42
- "@dxos/async": "0.5.2",
43
- "@dxos/automerge": "0.5.2",
44
- "@dxos/codec-protobuf": "0.5.2",
45
- "@dxos/context": "0.5.2",
46
- "@dxos/credentials": "0.5.2",
47
- "@dxos/crypto": "0.5.2",
48
- "@dxos/debug": "0.5.2",
49
- "@dxos/echo-protocol": "0.5.2",
50
- "@dxos/echo-schema": "0.5.2",
51
- "@dxos/hypercore": "0.5.2",
52
- "@dxos/invariant": "0.5.2",
53
- "@dxos/indexing": "0.5.2",
54
- "@dxos/feed-store": "0.5.2",
55
- "@dxos/keyring": "0.5.2",
56
- "@dxos/kv-store": "0.5.2",
57
- "@dxos/log": "0.5.2",
58
- "@dxos/messaging": "0.5.2",
59
- "@dxos/keys": "0.5.2",
60
- "@dxos/network-manager": "0.5.2",
61
- "@dxos/node-std": "0.5.2",
62
- "@dxos/protocols": "0.5.2",
63
- "@dxos/rpc": "0.5.2",
64
- "@dxos/random-access-storage": "0.5.2",
65
- "@dxos/teleport-extension-automerge-replicator": "0.5.2",
66
- "@dxos/teleport": "0.5.2",
67
- "@dxos/teleport-extension-gossip": "0.5.2",
68
- "@dxos/teleport-extension-replicator": "0.5.2",
69
- "@dxos/teleport-extension-object-sync": "0.5.2",
70
- "@dxos/tracing": "0.5.2",
71
- "@dxos/timeframe": "0.5.2",
72
- "@dxos/typings": "0.5.2",
73
- "@dxos/util": "0.5.2"
42
+ "@dxos/async": "0.5.3-main.088a2c8",
43
+ "@dxos/automerge": "0.5.3-main.088a2c8",
44
+ "@dxos/codec-protobuf": "0.5.3-main.088a2c8",
45
+ "@dxos/context": "0.5.3-main.088a2c8",
46
+ "@dxos/crypto": "0.5.3-main.088a2c8",
47
+ "@dxos/credentials": "0.5.3-main.088a2c8",
48
+ "@dxos/debug": "0.5.3-main.088a2c8",
49
+ "@dxos/echo-protocol": "0.5.3-main.088a2c8",
50
+ "@dxos/echo-schema": "0.5.3-main.088a2c8",
51
+ "@dxos/hypercore": "0.5.3-main.088a2c8",
52
+ "@dxos/feed-store": "0.5.3-main.088a2c8",
53
+ "@dxos/invariant": "0.5.3-main.088a2c8",
54
+ "@dxos/indexing": "0.5.3-main.088a2c8",
55
+ "@dxos/kv-store": "0.5.3-main.088a2c8",
56
+ "@dxos/keyring": "0.5.3-main.088a2c8",
57
+ "@dxos/keys": "0.5.3-main.088a2c8",
58
+ "@dxos/messaging": "0.5.3-main.088a2c8",
59
+ "@dxos/log": "0.5.3-main.088a2c8",
60
+ "@dxos/network-manager": "0.5.3-main.088a2c8",
61
+ "@dxos/protocols": "0.5.3-main.088a2c8",
62
+ "@dxos/node-std": "0.5.3-main.088a2c8",
63
+ "@dxos/random-access-storage": "0.5.3-main.088a2c8",
64
+ "@dxos/rpc": "0.5.3-main.088a2c8",
65
+ "@dxos/teleport": "0.5.3-main.088a2c8",
66
+ "@dxos/teleport-extension-gossip": "0.5.3-main.088a2c8",
67
+ "@dxos/teleport-extension-object-sync": "0.5.3-main.088a2c8",
68
+ "@dxos/teleport-extension-replicator": "0.5.3-main.088a2c8",
69
+ "@dxos/teleport-extension-automerge-replicator": "0.5.3-main.088a2c8",
70
+ "@dxos/timeframe": "0.5.3-main.088a2c8",
71
+ "@dxos/typings": "0.5.3-main.088a2c8",
72
+ "@dxos/tracing": "0.5.3-main.088a2c8",
73
+ "@dxos/util": "0.5.3-main.088a2c8"
74
74
  },
75
75
  "devDependencies": {
76
76
  "fast-check": "^3.15.1",
@@ -17,6 +17,7 @@ import {
17
17
  } from '@dxos/automerge/automerge-repo';
18
18
  import { IndexMetadataStore } from '@dxos/indexing';
19
19
  import { invariant } from '@dxos/invariant';
20
+ import { PublicKey } from '@dxos/keys';
20
21
  import { createTestLevel } from '@dxos/kv-store/testing';
21
22
  import { log } from '@dxos/log';
22
23
  import { TestBuilder as TeleportBuilder, TestPeer as TeleportPeer } from '@dxos/teleport/testing';
@@ -24,8 +25,9 @@ import { afterTest, describe, openAndClose, test } from '@dxos/test';
24
25
  import { arrayToBuffer, bufferToArray } from '@dxos/util';
25
26
 
26
27
  import { AutomergeHost } from './automerge-host';
28
+ import { EchoNetworkAdapter } from './echo-network-adapter';
27
29
  import { LevelDBStorageAdapter } from './leveldb-storage-adapter';
28
- import { MeshNetworkAdapter } from './mesh-network-adapter';
30
+ import { MeshEchoReplicator } from './mesh-echo-replicator';
29
31
 
30
32
  describe('AutomergeHost', () => {
31
33
  test('can create documents', async () => {
@@ -267,16 +269,24 @@ describe('AutomergeHost', () => {
267
269
  });
268
270
 
269
271
  test('integration test with teleport', async () => {
270
- const createAutomergeRepo = () => {
271
- const meshAdapter = new MeshNetworkAdapter();
272
+ const [spaceKey] = PublicKey.randomSequence();
273
+
274
+ const createAutomergeRepo = async () => {
275
+ const meshAdapter = new MeshEchoReplicator();
276
+ const echoAdapter = new EchoNetworkAdapter({
277
+ getContainingSpaceForDocument: async () => spaceKey,
278
+ });
272
279
  const repo = new Repo({
273
- network: [meshAdapter],
280
+ network: [echoAdapter],
274
281
  });
275
- meshAdapter.ready();
282
+ await echoAdapter.open();
283
+ await echoAdapter.whenConnected();
284
+ await echoAdapter.addReplicator(meshAdapter);
276
285
  return { repo, meshAdapter };
277
286
  };
278
- const peer1 = createAutomergeRepo();
279
- const peer2 = createAutomergeRepo();
287
+ const peer1 = await createAutomergeRepo();
288
+ const peer2 = await createAutomergeRepo();
289
+
280
290
  const handle = peer1.repo.create();
281
291
 
282
292
  const teleportBuilder = new TeleportBuilder();
@@ -294,8 +304,11 @@ describe('AutomergeHost', () => {
294
304
  handle.change((doc: any) => {
295
305
  doc.text = text;
296
306
  });
297
- const docOnPeer2 = peer2.repo.find(handle.url);
298
- await waitForExpect(async () => expect((await asyncTimeout(docOnPeer2.doc(), 1000)).text).toEqual(text), 1000);
307
+ await waitForExpect(async () => {
308
+ const docOnPeer2 = peer2.repo.find(handle.url);
309
+ const doc = await asyncTimeout(docOnPeer2.doc(), 1000);
310
+ expect(doc.text).toEqual(text);
311
+ }, 1000);
299
312
  }
300
313
 
301
314
  const offlineText = 'This has been written while the connection was off';
@@ -3,14 +3,14 @@
3
3
  //
4
4
 
5
5
  import { Event } from '@dxos/async';
6
- import { type Doc, next as automerge, getBackend, type Heads, getHeads } from '@dxos/automerge/automerge';
6
+ import { next as automerge, getBackend, getHeads, type Doc, type Heads } from '@dxos/automerge/automerge';
7
7
  import {
8
- type DocHandle,
9
8
  Repo,
9
+ type DocHandle,
10
+ type DocHandleChangePayload,
10
11
  type DocumentId,
11
12
  type PeerId,
12
13
  type StorageAdapterInterface,
13
- type DocHandleChangePayload,
14
14
  } from '@dxos/automerge/automerge-repo';
15
15
  import { type Stream } from '@dxos/codec-protobuf';
16
16
  import { Context, type Lifecycle } from '@dxos/context';
@@ -18,7 +18,7 @@ import { type SpaceDoc } from '@dxos/echo-protocol';
18
18
  import { type IndexMetadataStore } from '@dxos/indexing';
19
19
  import { invariant } from '@dxos/invariant';
20
20
  import { PublicKey } from '@dxos/keys';
21
- import { type SubLevelDB } from '@dxos/kv-store';
21
+ import { type SublevelDB } from '@dxos/kv-store';
22
22
  import { log } from '@dxos/log';
23
23
  import { idCodec } from '@dxos/protocols';
24
24
  import {
@@ -28,22 +28,20 @@ import {
28
28
  type SyncRepoResponse,
29
29
  } from '@dxos/protocols/proto/dxos/echo/service';
30
30
  import { type Directory } from '@dxos/random-access-storage';
31
- import { type AutomergeReplicator } from '@dxos/teleport-extension-automerge-replicator';
32
31
  import { trace } from '@dxos/tracing';
33
- import { ComplexMap, ComplexSet, defaultMap, mapValues } from '@dxos/util';
32
+ import { mapValues } from '@dxos/util';
34
33
 
35
34
  import { EchoNetworkAdapter } from './echo-network-adapter';
36
35
  import { type EchoReplicator } from './echo-replicator';
37
- import { type BeforeSaveParams, LevelDBStorageAdapter } from './leveldb-storage-adapter';
36
+ import { LevelDBStorageAdapter, type BeforeSaveParams } from './leveldb-storage-adapter';
38
37
  import { LocalHostNetworkAdapter } from './local-host-network-adapter';
39
- import { MeshNetworkAdapter } from './mesh-network-adapter';
40
38
  import { levelMigration } from './migrations';
41
39
 
42
40
  // TODO: Remove
43
41
  export type { DocumentId };
44
42
 
45
43
  export type AutomergeHostParams = {
46
- db: SubLevelDB;
44
+ db: SublevelDB;
47
45
  /**
48
46
  * For migration purposes.
49
47
  */
@@ -57,22 +55,18 @@ export class AutomergeHost {
57
55
  private readonly _indexMetadataStore: IndexMetadataStore;
58
56
  private readonly _ctx = new Context();
59
57
  private readonly _directory?: Directory;
60
- private readonly _db: SubLevelDB;
61
- private readonly _echoNetworkAdapter = new EchoNetworkAdapter();
58
+ private readonly _db: SublevelDB;
59
+ private readonly _echoNetworkAdapter = new EchoNetworkAdapter({
60
+ getContainingSpaceForDocument: this._getContainingSpaceForDocument.bind(this),
61
+ });
62
62
 
63
63
  private _repo!: Repo;
64
- private _meshNetwork!: MeshNetworkAdapter;
65
64
  private _clientNetwork!: LocalHostNetworkAdapter;
66
65
  private _storage!: StorageAdapterInterface & Lifecycle;
67
66
 
68
67
  @trace.info()
69
68
  private _peerId!: string;
70
69
 
71
- /**
72
- * spaceKey -> deviceKey[]
73
- */
74
- private readonly _authorizedDevices = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);
75
-
76
70
  public _requestedDocs = new Set<string>();
77
71
 
78
72
  constructor({ directory, db, indexMetadataStore }: AutomergeHostParams) {
@@ -94,72 +88,16 @@ export class AutomergeHost {
94
88
  await this._storage.open?.();
95
89
  this._peerId = `host-${PublicKey.random().toHex()}` as PeerId;
96
90
 
97
- this._meshNetwork = new MeshNetworkAdapter();
98
91
  this._clientNetwork = new LocalHostNetworkAdapter();
99
92
 
100
93
  this._repo = new Repo({
101
94
  peerId: this._peerId as PeerId,
102
- network: [this._clientNetwork, this._meshNetwork, this._echoNetworkAdapter],
95
+ network: [this._clientNetwork, this._echoNetworkAdapter],
103
96
  storage: this._storage,
104
97
 
105
- // TODO(dmaretskyi): Share based on HALO permissions and space affinity.
106
- // Hosts, running in the worker, don't share documents unless requested by other peers.
107
- sharePolicy: async (peerId /* device key */, documentId /* space key */) => {
108
- if (peerId.startsWith('client-')) {
109
- return false; // Only send docs to clients if they are requested.
110
- }
111
-
112
- if (!documentId) {
113
- return false;
114
- }
115
-
116
- const peerMetadata = this.repo.peerMetadataByPeerId[peerId];
117
- if ((peerMetadata as any)?.dxos_peerSource === 'EchoNetworkAdapter') {
118
- return this._echoNetworkAdapter.shouldAdvertize(peerId, { documentId });
119
- }
120
-
121
- const doc = this._repo.handles[documentId]?.docSync();
122
- if (!doc) {
123
- const isRequested = this._requestedDocs.has(`automerge:${documentId}`);
124
- log('doc share policy check', { peerId, documentId, isRequested });
125
- return isRequested;
126
- }
127
-
128
- try {
129
- const spaceKey = getSpaceKeyFromDoc(doc);
130
- if (!spaceKey) {
131
- log('space key not found for share policy check', { peerId, documentId });
132
- return false;
133
- }
134
-
135
- const authorizedDevices = this._authorizedDevices.get(PublicKey.from(spaceKey));
136
-
137
- // TODO(mykola): Hack, stop abusing `peerMetadata` field.
138
- const deviceKeyHex = (peerMetadata as any)?.dxos_deviceKey;
139
- if (!deviceKeyHex) {
140
- log('device key not found for share policy check', { peerId, documentId });
141
- return false;
142
- }
143
- const deviceKey = PublicKey.from(deviceKeyHex);
144
-
145
- const isAuthorized = authorizedDevices?.has(deviceKey) ?? false;
146
- log('share policy check', {
147
- localPeer: this._peerId,
148
- remotePeer: peerId,
149
- documentId,
150
- deviceKey,
151
- spaceKey,
152
- isAuthorized,
153
- });
154
- return isAuthorized;
155
- } catch (err) {
156
- log.catch(err);
157
- return false;
158
- }
159
- },
98
+ sharePolicy: this._sharePolicy.bind(this),
160
99
  });
161
100
  this._clientNetwork.ready();
162
- this._meshNetwork.ready();
163
101
  await this._echoNetworkAdapter.open();
164
102
 
165
103
  await this._clientNetwork.whenConnected();
@@ -185,6 +123,41 @@ export class AutomergeHost {
185
123
  await this._echoNetworkAdapter.removeReplicator(replicator);
186
124
  }
187
125
 
126
+ // TODO(dmaretskyi): Share based on HALO permissions and space affinity.
127
+ // Hosts, running in the worker, don't share documents unless requested by other peers.
128
+ // NOTE: If both peers return sharePolicy=false the replication will not happen
129
+ // https://github.com/automerge/automerge-repo/pull/292
130
+ private async _sharePolicy(
131
+ peerId: PeerId /* device key */,
132
+ documentId?: DocumentId /* space key */,
133
+ ): Promise<boolean> {
134
+ if (peerId.startsWith('client-')) {
135
+ return false; // Only send docs to clients if they are requested.
136
+ }
137
+
138
+ if (!documentId) {
139
+ return false;
140
+ }
141
+
142
+ // Workaround for https://github.com/automerge/automerge-repo/pull/292
143
+ // NOTE: This must override the per-connection policy.
144
+ const doc = this._repo.handles[documentId]?.docSync();
145
+ if (!doc) {
146
+ // TODO(dmaretskyi): Verify that this works as intended.
147
+ // TODO(dmaretskyi): Move to MESH replicator?
148
+ const isRequested = this._requestedDocs.has(`automerge:${documentId}`);
149
+ log('doc share policy check', { peerId, documentId, isRequested });
150
+ return isRequested;
151
+ }
152
+
153
+ const peerMetadata = this.repo.peerMetadataByPeerId[peerId];
154
+ if ((peerMetadata as any)?.dxos_peerSource === 'EchoNetworkAdapter') {
155
+ return this._echoNetworkAdapter.shouldAdvertize(peerId, { documentId });
156
+ }
157
+
158
+ return false;
159
+ }
160
+
188
161
  private async _beforeSave({ path, batch }: BeforeSaveParams) {
189
162
  const handle = this._repo.handles[path[0] as DocumentId];
190
163
  if (!handle) {
@@ -241,6 +214,20 @@ export class AutomergeHost {
241
214
  return this._repo.peers;
242
215
  }
243
216
 
217
+ private async _getContainingSpaceForDocument(documentId: string): Promise<PublicKey | null> {
218
+ const doc = this._repo.handles[documentId as any]?.docSync();
219
+ if (!doc) {
220
+ return null;
221
+ }
222
+
223
+ const spaceKeyHex = getSpaceKeyFromDoc(doc);
224
+ if (!spaceKeyHex) {
225
+ return null;
226
+ }
227
+
228
+ return PublicKey.from(spaceKeyHex);
229
+ }
230
+
244
231
  //
245
232
  // Methods for client-services.
246
233
  //
@@ -269,19 +256,6 @@ export class AutomergeHost {
269
256
  async getHostInfo(): Promise<HostInfo> {
270
257
  return this._clientNetwork.getHostInfo();
271
258
  }
272
-
273
- //
274
- // Mesh replication.
275
- //
276
-
277
- createExtension(): AutomergeReplicator {
278
- return this._meshNetwork.createExtension();
279
- }
280
-
281
- authorizeDevice(spaceKey: PublicKey, deviceKey: PublicKey) {
282
- log('authorizeDevice', { spaceKey, deviceKey });
283
- defaultMap(this._authorizedDevices, spaceKey, () => new ComplexSet(PublicKey.hash)).add(deviceKey);
284
- }
285
259
  }
286
260
 
287
261
  export const getSpaceKeyFromDoc = (doc: any): string | null => {
@@ -6,10 +6,15 @@ import { Trigger, synchronized } from '@dxos/async';
6
6
  import { type Message, NetworkAdapter, type PeerId, type PeerMetadata } from '@dxos/automerge/automerge-repo';
7
7
  import { LifecycleState } from '@dxos/context';
8
8
  import { invariant } from '@dxos/invariant';
9
+ import { type PublicKey } from '@dxos/keys';
9
10
  import { log } from '@dxos/log';
10
11
 
11
12
  import { type EchoReplicator, type ReplicatorConnection, type ShouldAdvertizeParams } from './echo-replicator';
12
13
 
14
+ export type EchoNetworkAdapterParams = {
15
+ getContainingSpaceForDocument: (documentId: string) => Promise<PublicKey | null>;
16
+ };
17
+
13
18
  /**
14
19
  * Manages a set of {@link EchoReplicator} instances.
15
20
  */
@@ -22,6 +27,10 @@ export class EchoNetworkAdapter extends NetworkAdapter {
22
27
  private _lifecycleState: LifecycleState = LifecycleState.CLOSED;
23
28
  private readonly _connected = new Trigger();
24
29
 
30
+ constructor(private readonly _params: EchoNetworkAdapterParams) {
31
+ super();
32
+ }
33
+
25
34
  override connect(peerId: PeerId, peerMetadata?: PeerMetadata | undefined): void {
26
35
  this.peerId = peerId;
27
36
  this.peerMetadata = peerMetadata;
@@ -51,6 +60,7 @@ export class EchoNetworkAdapter extends NetworkAdapter {
51
60
  invariant(this._lifecycleState === LifecycleState.CLOSED);
52
61
  this._lifecycleState = LifecycleState.OPEN;
53
62
 
63
+ log('emit ready');
54
64
  this.emit('ready', {
55
65
  network: this,
56
66
  });
@@ -74,20 +84,26 @@ export class EchoNetworkAdapter extends NetworkAdapter {
74
84
 
75
85
  @synchronized
76
86
  async addReplicator(replicator: EchoReplicator) {
87
+ invariant(this._lifecycleState === LifecycleState.OPEN);
77
88
  invariant(this.peerId);
78
89
  invariant(!this._replicators.has(replicator));
79
90
 
91
+ this._replicators.add(replicator);
80
92
  await replicator.connect({
81
93
  peerId: this.peerId,
82
94
  onConnectionOpen: this._onConnectionOpen.bind(this),
83
95
  onConnectionClosed: this._onConnectionClosed.bind(this),
96
+ getContainingSpaceForDocument: this._params.getContainingSpaceForDocument,
84
97
  });
85
98
  }
86
99
 
87
100
  @synchronized
88
101
  async removeReplicator(replicator: EchoReplicator) {
102
+ invariant(this._lifecycleState === LifecycleState.OPEN);
89
103
  invariant(this._replicators.has(replicator));
104
+ ('');
90
105
  await replicator.disconnect();
106
+ this._replicators.delete(replicator);
91
107
  }
92
108
 
93
109
  async shouldAdvertize(peerId: PeerId, params: ShouldAdvertizeParams): Promise<boolean> {
@@ -100,6 +116,7 @@ export class EchoNetworkAdapter extends NetworkAdapter {
100
116
  }
101
117
 
102
118
  private _onConnectionOpen(connection: ReplicatorConnection) {
119
+ log('Connection opened', { peerId: connection.peerId });
103
120
  invariant(!this._connections.has(connection.peerId as PeerId));
104
121
  const reader = connection.readable.getReader();
105
122
  const writer = connection.writable.getWriter();
@@ -124,6 +141,7 @@ export class EchoNetworkAdapter extends NetworkAdapter {
124
141
  }
125
142
  });
126
143
 
144
+ log('emit peer-candidate', { peerId: connection.peerId });
127
145
  this.emit('peer-candidate', {
128
146
  peerId: connection.peerId as PeerId,
129
147
  peerMetadata: {
@@ -134,6 +152,7 @@ export class EchoNetworkAdapter extends NetworkAdapter {
134
152
  }
135
153
 
136
154
  private _onConnectionClosed(connection: ReplicatorConnection) {
155
+ log('Connection closed', { peerId: connection.peerId });
137
156
  const entry = this._connections.get(connection.peerId as PeerId);
138
157
  invariant(entry);
139
158
 
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type Message } from '@dxos/automerge/automerge-repo';
6
+ import { type PublicKey } from '@dxos/keys';
6
7
 
7
8
  export interface EchoReplicator {
8
9
  /**
@@ -25,6 +26,8 @@ export interface EchoReplicatorContext {
25
26
  onConnectionOpen(connection: ReplicatorConnection): void;
26
27
 
27
28
  onConnectionClosed(connection: ReplicatorConnection): void;
29
+
30
+ getContainingSpaceForDocument(documentId: string): Promise<PublicKey | null>;
28
31
  }
29
32
 
30
33
  export interface ReplicatorConnection {
@@ -7,5 +7,5 @@ export * from './automerge-storage-adapter';
7
7
  export * from './automerge-doc-loader';
8
8
  export * from './leveldb-storage-adapter';
9
9
  export * from './local-host-network-adapter';
10
- export * from './mesh-network-adapter';
10
+ export * from './mesh-echo-replicator';
11
11
  export * from './echo-replicator';
@@ -6,11 +6,11 @@ import { type MixedEncoding } from 'level-transcoder';
6
6
 
7
7
  import { type StorageAdapterInterface, type Chunk, type StorageKey } from '@dxos/automerge/automerge-repo';
8
8
  import { LifecycleState, Resource } from '@dxos/context';
9
- import { type BatchLevel, type SubLevelDB } from '@dxos/kv-store';
9
+ import { type BatchLevel, type SublevelDB } from '@dxos/kv-store';
10
10
  import { type MaybePromise } from '@dxos/util';
11
11
 
12
12
  export type LevelDBStorageAdapterParams = {
13
- db: SubLevelDB;
13
+ db: SublevelDB;
14
14
  callbacks?: StorageCallbacks;
15
15
  };
16
16