@dxos/client-services 0.5.1-main.16a1d7d → 0.5.1-next.2ad6c47

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-XEGUH2J7.mjs → chunk-CMVTOS5E.mjs} +163 -104
  2. package/dist/lib/browser/chunk-CMVTOS5E.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4 -6
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/packlets/testing/index.mjs +6 -8
  7. package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-6YZIP6PI.cjs → chunk-EAWN3LCD.cjs} +172 -117
  9. package/dist/lib/node/chunk-EAWN3LCD.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +46 -48
  11. package/dist/lib/node/index.cjs.map +3 -3
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/packlets/testing/index.cjs +11 -13
  14. package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
  15. package/dist/types/src/packlets/indexing/index.d.ts +2 -0
  16. package/dist/types/src/packlets/indexing/index.d.ts.map +1 -0
  17. package/dist/types/src/packlets/indexing/util.d.ts +11 -0
  18. package/dist/types/src/packlets/indexing/util.d.ts.map +1 -0
  19. package/dist/types/src/packlets/services/service-context.d.ts +6 -4
  20. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  21. package/dist/types/src/packlets/services/service-host.d.ts +1 -0
  22. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  23. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +3 -4
  24. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  25. package/dist/types/src/packlets/spaces/data-space.d.ts +3 -4
  26. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  27. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  28. package/dist/types/src/packlets/testing/test-builder.d.ts +3 -4
  29. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  30. package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +1 -1
  31. package/dist/types/src/version.d.ts +1 -1
  32. package/package.json +34 -34
  33. package/src/packlets/indexing/index.ts +5 -0
  34. package/src/packlets/indexing/util.ts +32 -0
  35. package/src/packlets/services/automerge-host.test.ts +3 -3
  36. package/src/packlets/services/service-context.test.ts +3 -3
  37. package/src/packlets/services/service-context.ts +25 -11
  38. package/src/packlets/services/service-host.test.ts +0 -6
  39. package/src/packlets/services/service-host.ts +21 -5
  40. package/src/packlets/spaces/data-space-manager.test.ts +4 -4
  41. package/src/packlets/spaces/data-space-manager.ts +11 -8
  42. package/src/packlets/spaces/data-space.ts +18 -13
  43. package/src/packlets/storage/level.ts +0 -1
  44. package/src/packlets/testing/test-builder.ts +13 -8
  45. package/src/packlets/vault/worker-runtime.ts +1 -3
  46. package/src/version.ts +1 -1
  47. package/dist/lib/browser/chunk-XEGUH2J7.mjs.map +0 -7
  48. package/dist/lib/node/chunk-6YZIP6PI.cjs.map +0 -7
@@ -3277,7 +3277,7 @@ var DataSpace = class {
3277
3277
  this._metadataStore = params.metadataStore;
3278
3278
  this._signingContext = params.signingContext;
3279
3279
  this._callbacks = params.callbacks ?? {};
3280
- this._echoHost = params.echoHost;
3280
+ this._automergeHost = params.automergeHost;
3281
3281
  this.authVerifier = new TrustedKeySetAuthVerifier({
3282
3282
  trustedKeysProvider: () => new ComplexSet3(PublicKey9.hash, Array.from(this._inner.spaceState.members.values()).filter((member) => !member.removed).map((member) => member.key)),
3283
3283
  update: this._inner.stateUpdate,
@@ -3289,7 +3289,7 @@ var DataSpace = class {
3289
3289
  state: SpaceState[this._state]
3290
3290
  }, {
3291
3291
  F: __dxlog_file11,
3292
- L: 135,
3292
+ L: 140,
3293
3293
  S: this,
3294
3294
  C: (f, a) => f(...a)
3295
3295
  });
@@ -3339,7 +3339,7 @@ var DataSpace = class {
3339
3339
  state: SpaceState[this._state]
3340
3340
  }, {
3341
3341
  F: __dxlog_file11,
3342
- L: 193,
3342
+ L: 198,
3343
3343
  S: this,
3344
3344
  C: (f, a) => f(...a)
3345
3345
  });
@@ -3357,7 +3357,7 @@ var DataSpace = class {
3357
3357
  state: SpaceState[this._state]
3358
3358
  }, {
3359
3359
  F: __dxlog_file11,
3360
- L: 207,
3360
+ L: 212,
3361
3361
  S: this,
3362
3362
  C: (f, a) => f(...a)
3363
3363
  });
@@ -3389,7 +3389,7 @@ var DataSpace = class {
3389
3389
  if (err instanceof CancelledError || err instanceof ContextDisposedError) {
3390
3390
  log9("data pipeline initialization cancelled", err, {
3391
3391
  F: __dxlog_file11,
3392
- L: 240,
3392
+ L: 245,
3393
3393
  S: this,
3394
3394
  C: (f, a) => f(...a)
3395
3395
  });
@@ -3397,7 +3397,7 @@ var DataSpace = class {
3397
3397
  }
3398
3398
  log9.error("Error initializing data pipeline", err, {
3399
3399
  F: __dxlog_file11,
3400
- L: 244,
3400
+ L: 249,
3401
3401
  S: this,
3402
3402
  C: (f, a) => f(...a)
3403
3403
  });
@@ -3406,7 +3406,7 @@ var DataSpace = class {
3406
3406
  state: SpaceState[this._state]
3407
3407
  }, {
3408
3408
  F: __dxlog_file11,
3409
- L: 246,
3409
+ L: 251,
3410
3410
  S: this,
3411
3411
  C: (f, a) => f(...a)
3412
3412
  });
@@ -3426,7 +3426,7 @@ var DataSpace = class {
3426
3426
  state: SpaceState[this._state]
3427
3427
  }, {
3428
3428
  F: __dxlog_file11,
3429
- L: 262,
3429
+ L: 267,
3430
3430
  S: this,
3431
3431
  C: (f, a) => f(...a)
3432
3432
  });
@@ -3436,7 +3436,7 @@ var DataSpace = class {
3436
3436
  await cancelWithContext2(this._ctx, this.automergeSpaceState.ensureEpochInitialized());
3437
3437
  log9("data pipeline ready", void 0, {
3438
3438
  F: __dxlog_file11,
3439
- L: 274,
3439
+ L: 279,
3440
3440
  S: this,
3441
3441
  C: (f, a) => f(...a)
3442
3442
  });
@@ -3446,7 +3446,7 @@ var DataSpace = class {
3446
3446
  state: SpaceState[this._state]
3447
3447
  }, {
3448
3448
  F: __dxlog_file11,
3449
- L: 278,
3449
+ L: 283,
3450
3450
  S: this,
3451
3451
  C: (f, a) => f(...a)
3452
3452
  });
@@ -3462,7 +3462,7 @@ var DataSpace = class {
3462
3462
  await this._createWritableFeeds();
3463
3463
  log9("writable feeds created", void 0, {
3464
3464
  F: __dxlog_file11,
3465
- L: 294,
3465
+ L: 299,
3466
3466
  S: this,
3467
3467
  C: (f, a) => f(...a)
3468
3468
  });
@@ -3525,12 +3525,12 @@ var DataSpace = class {
3525
3525
  rootUrl
3526
3526
  }, {
3527
3527
  F: __dxlog_file11,
3528
- L: 360,
3528
+ L: 365,
3529
3529
  S: this,
3530
3530
  C: (f, a) => f(...a)
3531
3531
  });
3532
- this._echoHost.replicateDocument(rootUrl);
3533
- const handle = this._echoHost.automergeRepo.find(rootUrl);
3532
+ this._automergeHost._requestedDocs.add(rootUrl);
3533
+ const handle = this._automergeHost.repo.find(rootUrl);
3534
3534
  queueMicrotask(async () => {
3535
3535
  try {
3536
3536
  await warnAfterTimeout(5e3, "Automerge root doc load timeout (DataSpace)", async () => {
@@ -3557,7 +3557,7 @@ var DataSpace = class {
3557
3557
  err
3558
3558
  }, {
3559
3559
  F: __dxlog_file11,
3560
- L: 383,
3560
+ L: 388,
3561
3561
  S: this,
3562
3562
  C: (f, a) => f(...a)
3563
3563
  });
@@ -3595,7 +3595,7 @@ var DataSpace = class {
3595
3595
  break;
3596
3596
  case CreateEpochRequest.Migration.INIT_AUTOMERGE:
3597
3597
  {
3598
- const document = this._echoHost.automergeRepo.create();
3598
+ const document = this._automergeHost.repo.create();
3599
3599
  epoch = {
3600
3600
  previousId: this._automergeSpaceState.lastEpoch?.id,
3601
3601
  number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
@@ -3607,12 +3607,12 @@ var DataSpace = class {
3607
3607
  case CreateEpochRequest.Migration.PRUNE_AUTOMERGE_ROOT_HISTORY:
3608
3608
  {
3609
3609
  const currentRootUrl = this._automergeSpaceState.rootUrl;
3610
- const rootHandle = this._echoHost.automergeRepo.find(currentRootUrl);
3610
+ const rootHandle = this._automergeHost.repo.find(currentRootUrl);
3611
3611
  await cancelWithContext2(this._ctx, asyncTimeout(rootHandle.whenReady(), 1e4));
3612
- const newRoot = this._echoHost.automergeRepo.create(rootHandle.docSync());
3612
+ const newRoot = this._automergeHost.repo.create(rootHandle.docSync());
3613
3613
  invariant10(typeof newRoot.url === "string" && newRoot.url.length > 0, void 0, {
3614
3614
  F: __dxlog_file11,
3615
- L: 433,
3615
+ L: 438,
3616
3616
  S: this,
3617
3617
  A: [
3618
3618
  "typeof newRoot.url === 'string' && newRoot.url.length > 0",
@@ -3631,19 +3631,19 @@ var DataSpace = class {
3631
3631
  {
3632
3632
  log9.info("Fragmenting", void 0, {
3633
3633
  F: __dxlog_file11,
3634
- L: 445,
3634
+ L: 450,
3635
3635
  S: this,
3636
3636
  C: (f, a) => f(...a)
3637
3637
  });
3638
3638
  const currentRootUrl = this._automergeSpaceState.rootUrl;
3639
- const rootHandle = this._echoHost.automergeRepo.find(currentRootUrl);
3639
+ const rootHandle = this._automergeHost.repo.find(currentRootUrl);
3640
3640
  await cancelWithContext2(this._ctx, asyncTimeout(rootHandle.whenReady(), 1e4));
3641
3641
  const objects = Object.entries(rootHandle.docSync().objects);
3642
3642
  const properties = objects.find(([_, value]) => value.system.type?.itemId === TYPE_PROPERTIES);
3643
3643
  const otherObjects = objects.filter(([key]) => key !== properties?.[0]);
3644
3644
  invariant10(properties, "Properties not found", {
3645
3645
  F: __dxlog_file11,
3646
- L: 455,
3646
+ L: 460,
3647
3647
  S: this,
3648
3648
  A: [
3649
3649
  "properties",
@@ -3656,17 +3656,17 @@ var DataSpace = class {
3656
3656
  properties
3657
3657
  ])
3658
3658
  };
3659
- const newRoot = this._echoHost.automergeRepo.create(newSpaceDoc);
3659
+ const newRoot = this._automergeHost.repo.create(newSpaceDoc);
3660
3660
  invariant10(typeof newRoot.url === "string" && newRoot.url.length > 0, void 0, {
3661
3661
  F: __dxlog_file11,
3662
- L: 460,
3662
+ L: 465,
3663
3663
  S: this,
3664
3664
  A: [
3665
3665
  "typeof newRoot.url === 'string' && newRoot.url.length > 0",
3666
3666
  ""
3667
3667
  ]
3668
3668
  });
3669
- const docLoader = new AutomergeDocumentLoaderImpl(this.key, this._echoHost.automergeRepo);
3669
+ const docLoader = new AutomergeDocumentLoaderImpl(this.key, this._automergeHost.repo);
3670
3670
  await docLoader.loadSpaceRootDocHandle(this._ctx, {
3671
3671
  rootUrl: newRoot.url
3672
3672
  });
@@ -3728,7 +3728,7 @@ var DataSpace = class {
3728
3728
  state: SpaceState[this._state]
3729
3729
  }, {
3730
3730
  F: __dxlog_file11,
3731
- L: 526,
3731
+ L: 531,
3732
3732
  S: this,
3733
3733
  C: (f, a) => f(...a)
3734
3734
  });
@@ -3878,13 +3878,13 @@ var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/s
3878
3878
  var PRESENCE_ANNOUNCE_INTERVAL = 1e4;
3879
3879
  var PRESENCE_OFFLINE_TIMEOUT = 2e4;
3880
3880
  var DataSpaceManager = class {
3881
- constructor(_spaceManager, _metadataStore, _keyring, _signingContext, _feedStore, _echoHost, _invitationsManager, params) {
3881
+ constructor(_spaceManager, _metadataStore, _keyring, _signingContext, _feedStore, _automergeHost, _invitationsManager, params) {
3882
3882
  this._spaceManager = _spaceManager;
3883
3883
  this._metadataStore = _metadataStore;
3884
3884
  this._keyring = _keyring;
3885
3885
  this._signingContext = _signingContext;
3886
3886
  this._feedStore = _feedStore;
3887
- this._echoHost = _echoHost;
3887
+ this._automergeHost = _automergeHost;
3888
3888
  this._invitationsManager = _invitationsManager;
3889
3889
  this._ctx = new Context9();
3890
3890
  this.updated = new Event7();
@@ -3902,7 +3902,7 @@ var DataSpaceManager = class {
3902
3902
  async open() {
3903
3903
  log10("open", void 0, {
3904
3904
  F: __dxlog_file12,
3905
- L: 102,
3905
+ L: 101,
3906
3906
  S: this,
3907
3907
  C: (f, a) => f(...a)
3908
3908
  });
@@ -3910,7 +3910,7 @@ var DataSpaceManager = class {
3910
3910
  id: this._instanceId
3911
3911
  }), {
3912
3912
  F: __dxlog_file12,
3913
- L: 103,
3913
+ L: 102,
3914
3914
  S: this,
3915
3915
  C: (f, a) => f(...a)
3916
3916
  });
@@ -3918,7 +3918,7 @@ var DataSpaceManager = class {
3918
3918
  spaces: this._metadataStore.spaces.length
3919
3919
  }, {
3920
3920
  F: __dxlog_file12,
3921
- L: 104,
3921
+ L: 103,
3922
3922
  S: this,
3923
3923
  C: (f, a) => f(...a)
3924
3924
  });
@@ -3928,7 +3928,7 @@ var DataSpaceManager = class {
3928
3928
  spaceMetadata
3929
3929
  }, {
3930
3930
  F: __dxlog_file12,
3931
- L: 108,
3931
+ L: 107,
3932
3932
  S: this,
3933
3933
  C: (f, a) => f(...a)
3934
3934
  });
@@ -3939,7 +3939,7 @@ var DataSpaceManager = class {
3939
3939
  err
3940
3940
  }, {
3941
3941
  F: __dxlog_file12,
3942
- L: 111,
3942
+ L: 110,
3943
3943
  S: this,
3944
3944
  C: (f, a) => f(...a)
3945
3945
  });
@@ -3956,7 +3956,7 @@ var DataSpaceManager = class {
3956
3956
  id: this._instanceId
3957
3957
  }), {
3958
3958
  F: __dxlog_file12,
3959
- L: 124,
3959
+ L: 123,
3960
3960
  S: this,
3961
3961
  C: (f, a) => f(...a)
3962
3962
  });
@@ -3964,7 +3964,7 @@ var DataSpaceManager = class {
3964
3964
  async close() {
3965
3965
  log10("close", void 0, {
3966
3966
  F: __dxlog_file12,
3967
- L: 129,
3967
+ L: 128,
3968
3968
  S: this,
3969
3969
  C: (f, a) => f(...a)
3970
3970
  });
@@ -3980,7 +3980,7 @@ var DataSpaceManager = class {
3980
3980
  async createSpace() {
3981
3981
  invariant11(this._isOpen, "Not open.", {
3982
3982
  F: __dxlog_file12,
3983
- L: 142,
3983
+ L: 141,
3984
3984
  S: this,
3985
3985
  A: [
3986
3986
  "this._isOpen",
@@ -4001,18 +4001,23 @@ var DataSpaceManager = class {
4001
4001
  spaceKey
4002
4002
  }, {
4003
4003
  F: __dxlog_file12,
4004
- L: 154,
4004
+ L: 153,
4005
4005
  S: this,
4006
4006
  C: (f, a) => f(...a)
4007
4007
  });
4008
- const automergeRootUrl = await this._echoHost.createSpaceRoot(spaceKey);
4008
+ const automergeRoot = this._automergeHost.repo.create();
4009
+ automergeRoot.change((doc) => {
4010
+ doc.access = {
4011
+ spaceKey: spaceKey.toHex()
4012
+ };
4013
+ });
4009
4014
  const space = await this._constructSpace(metadata);
4010
- const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner, automergeRootUrl);
4015
+ const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner, automergeRoot.url);
4011
4016
  await this._metadataStore.addSpace(metadata);
4012
4017
  const memberCredential = credentials[1];
4013
4018
  invariant11(getCredentialAssertion2(memberCredential)["@type"] === "dxos.halo.credentials.SpaceMember", void 0, {
4014
4019
  F: __dxlog_file12,
4015
- L: 163,
4020
+ L: 166,
4016
4021
  S: this,
4017
4022
  A: [
4018
4023
  "getCredentialAssertion(memberCredential)['@type'] === 'dxos.halo.credentials.SpaceMember'",
@@ -4030,13 +4035,13 @@ var DataSpaceManager = class {
4030
4035
  opts
4031
4036
  }, {
4032
4037
  F: __dxlog_file12,
4033
- L: 175,
4038
+ L: 178,
4034
4039
  S: this,
4035
4040
  C: (f, a) => f(...a)
4036
4041
  });
4037
4042
  invariant11(this._isOpen, "Not open.", {
4038
4043
  F: __dxlog_file12,
4039
- L: 176,
4044
+ L: 179,
4040
4045
  S: this,
4041
4046
  A: [
4042
4047
  "this._isOpen",
@@ -4045,7 +4050,7 @@ var DataSpaceManager = class {
4045
4050
  });
4046
4051
  invariant11(!this._spaces.has(opts.spaceKey), "Space already exists.", {
4047
4052
  F: __dxlog_file12,
4048
- L: 177,
4053
+ L: 180,
4049
4054
  S: this,
4050
4055
  A: [
4051
4056
  "!this._spaces.has(opts.spaceKey)",
@@ -4080,7 +4085,7 @@ var DataSpaceManager = class {
4080
4085
  metadata
4081
4086
  }, {
4082
4087
  F: __dxlog_file12,
4083
- L: 210,
4088
+ L: 213,
4084
4089
  S: this,
4085
4090
  C: (f, a) => f(...a)
4086
4091
  });
@@ -4112,13 +4117,13 @@ var DataSpaceManager = class {
4112
4117
  remotePeerId: session.remotePeerId
4113
4118
  }));
4114
4119
  session.addExtension("dxos.mesh.teleport.notarization", dataSpace.notarizationPlugin.createExtension());
4115
- this._echoHost.authorizeDevice(space.key, session.remotePeerId);
4116
- session.addExtension("dxos.mesh.teleport.automerge", this._echoHost.createReplicationExtension());
4120
+ this._automergeHost.authorizeDevice(space.key, session.remotePeerId);
4121
+ session.addExtension("dxos.mesh.teleport.automerge", this._automergeHost.createExtension());
4117
4122
  },
4118
4123
  onAuthFailure: () => {
4119
4124
  log10.warn("auth failure", void 0, {
4120
4125
  F: __dxlog_file12,
4121
- L: 247,
4126
+ L: 250,
4122
4127
  S: this,
4123
4128
  C: (f, a) => f(...a)
4124
4129
  });
@@ -4138,7 +4143,6 @@ var DataSpaceManager = class {
4138
4143
  presence,
4139
4144
  keyring: this._keyring,
4140
4145
  feedStore: this._feedStore,
4141
- echoHost: this._echoHost,
4142
4146
  signingContext: this._signingContext,
4143
4147
  callbacks: {
4144
4148
  beforeReady: async () => {
@@ -4146,7 +4150,7 @@ var DataSpaceManager = class {
4146
4150
  space: space.key
4147
4151
  }, {
4148
4152
  F: __dxlog_file12,
4149
- L: 269,
4153
+ L: 271,
4150
4154
  S: this,
4151
4155
  C: (f, a) => f(...a)
4152
4156
  });
@@ -4157,7 +4161,7 @@ var DataSpaceManager = class {
4157
4161
  open: this._isOpen
4158
4162
  }, {
4159
4163
  F: __dxlog_file12,
4160
- L: 272,
4164
+ L: 274,
4161
4165
  S: this,
4162
4166
  C: (f, a) => f(...a)
4163
4167
  });
@@ -4173,13 +4177,14 @@ var DataSpaceManager = class {
4173
4177
  space: space.key
4174
4178
  }, {
4175
4179
  F: __dxlog_file12,
4176
- L: 279,
4180
+ L: 281,
4177
4181
  S: this,
4178
4182
  C: (f, a) => f(...a)
4179
4183
  });
4180
4184
  }
4181
4185
  },
4182
- cache: metadata.cache
4186
+ cache: metadata.cache,
4187
+ automergeHost: this._automergeHost
4183
4188
  });
4184
4189
  if (metadata.state !== SpaceState2.INACTIVE) {
4185
4190
  await dataSpace.open();
@@ -4464,9 +4469,9 @@ import { Trigger as Trigger5 } from "@dxos/async";
4464
4469
  import { Context as Context10, Resource } from "@dxos/context";
4465
4470
  import { getCredentialAssertion as getCredentialAssertion3 } from "@dxos/credentials";
4466
4471
  import { failUndefined as failUndefined2 } from "@dxos/debug";
4467
- import { EchoHost } from "@dxos/echo-db";
4468
- import { MetadataStore, SnapshotStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
4472
+ import { AutomergeHost, MetadataStore, SnapshotStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
4469
4473
  import { FeedFactory, FeedStore } from "@dxos/feed-store";
4474
+ import { IndexMetadataStore, IndexStore, Indexer, createStorageCallbacks } from "@dxos/indexing";
4470
4475
  import { invariant as invariant13 } from "@dxos/invariant";
4471
4476
  import { Keyring } from "@dxos/keyring";
4472
4477
  import { PublicKey as PublicKey11 } from "@dxos/keys";
@@ -4476,6 +4481,37 @@ import { Invitation as Invitation7 } from "@dxos/protocols/proto/dxos/client/ser
4476
4481
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
4477
4482
  import { trace as Trace2 } from "@dxos/tracing";
4478
4483
  import { safeInstanceof } from "@dxos/util";
4484
+
4485
+ // packages/sdk/client-services/src/packlets/indexing/util.ts
4486
+ import { getHeads } from "@dxos/automerge/automerge";
4487
+ import { idCodec } from "@dxos/protocols";
4488
+ var createSelectedDocumentsIterator = (automergeHost) => (
4489
+ /**
4490
+ * Get object data blobs from Automerge Repo by ids.
4491
+ * @param ids
4492
+ */
4493
+ // TODO(mykola): Unload automerge handles after usage.
4494
+ async function* loadDocuments(ids) {
4495
+ for (const id of ids) {
4496
+ const { documentId, objectId } = idCodec.decode(id);
4497
+ const handle = automergeHost.repo.handles[documentId] ?? automergeHost.repo.find(documentId);
4498
+ if (!handle.isReady()) {
4499
+ await handle.whenReady();
4500
+ }
4501
+ const doc = handle.docSync();
4502
+ const hash = getHeads(doc).join("");
4503
+ yield doc.objects?.[objectId] ? [
4504
+ {
4505
+ id,
4506
+ object: doc.objects[objectId],
4507
+ currentHash: hash
4508
+ }
4509
+ ] : [];
4510
+ }
4511
+ }
4512
+ );
4513
+
4514
+ // packages/sdk/client-services/src/packlets/services/service-context.ts
4479
4515
  function _ts_decorate6(decorators, target, key, desc) {
4480
4516
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4481
4517
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -4520,9 +4556,24 @@ var ServiceContext = class extends Resource {
4520
4556
  snapshotStore: this.snapshotStore
4521
4557
  });
4522
4558
  this.identityManager = new IdentityManager(this.metadataStore, this.keyring, this.feedStore, this.spaceManager, this._runtimeParams);
4523
- this.echoHost = new EchoHost({
4524
- kv: this.level,
4525
- storage: this.storage
4559
+ this.indexMetadata = new IndexMetadataStore({
4560
+ db: level.sublevel("index-metadata")
4561
+ });
4562
+ this.automergeHost = new AutomergeHost({
4563
+ directory: storage.createDirectory("automerge"),
4564
+ db: level.sublevel("automerge"),
4565
+ storageCallbacks: createStorageCallbacks({
4566
+ host: () => this.automergeHost,
4567
+ metadata: this.indexMetadata
4568
+ })
4569
+ });
4570
+ this.indexer = new Indexer({
4571
+ db: this.level,
4572
+ indexStore: new IndexStore({
4573
+ db: level.sublevel("index-storage")
4574
+ }),
4575
+ metadataStore: this.indexMetadata,
4576
+ loadDocuments: createSelectedDocumentsIterator(this.automergeHost)
4526
4577
  });
4527
4578
  this.invitations = new InvitationsHandler(this.networkManager);
4528
4579
  this.invitationsManager = new InvitationsManager(this.invitations, (invitation) => this.getInvitationHandler(invitation), this.metadataStore);
@@ -4532,7 +4583,7 @@ var ServiceContext = class extends Resource {
4532
4583
  await this._checkStorageVersion();
4533
4584
  log12("opening...", void 0, {
4534
4585
  F: __dxlog_file14,
4535
- L: 151,
4586
+ L: 164,
4536
4587
  S: this,
4537
4588
  C: (f, a) => f(...a)
4538
4589
  });
@@ -4540,13 +4591,13 @@ var ServiceContext = class extends Resource {
4540
4591
  id: this._instanceId
4541
4592
  }), {
4542
4593
  F: __dxlog_file14,
4543
- L: 152,
4594
+ L: 165,
4544
4595
  S: this,
4545
4596
  C: (f, a) => f(...a)
4546
4597
  });
4547
4598
  await this.signalManager.open();
4548
4599
  await this.networkManager.open();
4549
- await this.echoHost.open(ctx);
4600
+ await this.automergeHost.open();
4550
4601
  await this.metadataStore.load();
4551
4602
  await this.spaceManager.open();
4552
4603
  await this.identityManager.open(ctx);
@@ -4558,7 +4609,7 @@ var ServiceContext = class extends Resource {
4558
4609
  count: loadedInvitations.invitations?.length
4559
4610
  }, {
4560
4611
  F: __dxlog_file14,
4561
- L: 165,
4612
+ L: 178,
4562
4613
  S: this,
4563
4614
  C: (f, a) => f(...a)
4564
4615
  });
@@ -4566,38 +4617,39 @@ var ServiceContext = class extends Resource {
4566
4617
  id: this._instanceId
4567
4618
  }), {
4568
4619
  F: __dxlog_file14,
4569
- L: 167,
4620
+ L: 180,
4570
4621
  S: this,
4571
4622
  C: (f, a) => f(...a)
4572
4623
  });
4573
4624
  log12("opened", void 0, {
4574
4625
  F: __dxlog_file14,
4575
- L: 168,
4626
+ L: 181,
4576
4627
  S: this,
4577
4628
  C: (f, a) => f(...a)
4578
4629
  });
4579
4630
  }
4580
- async _close(ctx) {
4631
+ async _close() {
4581
4632
  log12("closing...", void 0, {
4582
4633
  F: __dxlog_file14,
4583
- L: 172,
4634
+ L: 185,
4584
4635
  S: this,
4585
4636
  C: (f, a) => f(...a)
4586
4637
  });
4587
4638
  if (this._deviceSpaceSync && this.identityManager.identity) {
4588
4639
  await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
4589
4640
  }
4641
+ await this.automergeHost.close();
4590
4642
  await this.dataSpaceManager?.close();
4591
4643
  await this.identityManager.close();
4592
4644
  await this.spaceManager.close();
4593
4645
  await this.feedStore.close();
4594
- await this.metadataStore.close();
4595
- await this.echoHost.close(ctx);
4596
4646
  await this.networkManager.close();
4597
4647
  await this.signalManager.close();
4648
+ await this.metadataStore.close();
4649
+ await this.indexer.destroy();
4598
4650
  log12("closed", void 0, {
4599
4651
  F: __dxlog_file14,
4600
- L: 184,
4652
+ L: 198,
4601
4653
  S: this,
4602
4654
  C: (f, a) => f(...a)
4603
4655
  });
@@ -4611,7 +4663,7 @@ var ServiceContext = class extends Resource {
4611
4663
  const factory = this._handlerFactories.get(invitation.kind);
4612
4664
  invariant13(factory, `Unknown invitation kind: ${invitation.kind}`, {
4613
4665
  F: __dxlog_file14,
4614
- L: 195,
4666
+ L: 209,
4615
4667
  S: this,
4616
4668
  A: [
4617
4669
  "factory",
@@ -4643,7 +4695,7 @@ var ServiceContext = class extends Resource {
4643
4695
  async _initialize(ctx) {
4644
4696
  log12("initializing spaces...", void 0, {
4645
4697
  F: __dxlog_file14,
4646
- L: 226,
4698
+ L: 240,
4647
4699
  S: this,
4648
4700
  C: (f, a) => f(...a)
4649
4701
  });
@@ -4661,12 +4713,12 @@ var ServiceContext = class extends Resource {
4661
4713
  });
4662
4714
  }
4663
4715
  };
4664
- this.dataSpaceManager = new DataSpaceManager(this.spaceManager, this.metadataStore, this.keyring, signingContext, this.feedStore, this.echoHost, this.invitationsManager, this._runtimeParams);
4716
+ this.dataSpaceManager = new DataSpaceManager(this.spaceManager, this.metadataStore, this.keyring, signingContext, this.feedStore, this.automergeHost, this.invitationsManager, this._runtimeParams);
4665
4717
  await this.dataSpaceManager.open();
4666
4718
  this._handlerFactories.set(Invitation7.Kind.SPACE, (invitation) => {
4667
4719
  invariant13(this.dataSpaceManager, "dataSpaceManager not initialized yet", {
4668
4720
  F: __dxlog_file14,
4669
- L: 251,
4721
+ L: 265,
4670
4722
  S: this,
4671
4723
  A: [
4672
4724
  "this.dataSpaceManager",
@@ -4690,7 +4742,7 @@ var ServiceContext = class extends Resource {
4690
4742
  details: assertion
4691
4743
  }, {
4692
4744
  F: __dxlog_file14,
4693
- L: 267,
4745
+ L: 281,
4694
4746
  S: this,
4695
4747
  C: (f, a) => f(...a)
4696
4748
  });
@@ -4701,7 +4753,7 @@ var ServiceContext = class extends Resource {
4701
4753
  details: assertion
4702
4754
  }, {
4703
4755
  F: __dxlog_file14,
4704
- L: 271,
4756
+ L: 285,
4705
4757
  S: this,
4706
4758
  C: (f, a) => f(...a)
4707
4759
  });
@@ -4712,7 +4764,7 @@ var ServiceContext = class extends Resource {
4712
4764
  details: assertion
4713
4765
  }, {
4714
4766
  F: __dxlog_file14,
4715
- L: 276,
4767
+ L: 290,
4716
4768
  S: this,
4717
4769
  C: (f, a) => f(...a)
4718
4770
  });
@@ -4723,7 +4775,7 @@ var ServiceContext = class extends Resource {
4723
4775
  } catch (err) {
4724
4776
  log12.catch(err, void 0, {
4725
4777
  F: __dxlog_file14,
4726
- L: 282,
4778
+ L: 296,
4727
4779
  S: this,
4728
4780
  C: (f, a) => f(...a)
4729
4781
  });
@@ -4777,7 +4829,7 @@ import { SpaceMember as SpaceMember4 } from "@dxos/protocols/proto/dxos/client/s
4777
4829
  import { TRACE_PROCESSOR } from "@dxos/tracing";
4778
4830
 
4779
4831
  // packages/sdk/client-services/src/version.ts
4780
- var DXOS_VERSION = "0.5.1-main.16a1d7d";
4832
+ var DXOS_VERSION = "0.5.1-next.2ad6c47";
4781
4833
 
4782
4834
  // packages/sdk/client-services/src/packlets/services/platform.ts
4783
4835
  import { Platform } from "@dxos/protocols/proto/dxos/client/services";
@@ -5021,8 +5073,9 @@ import { jsonKeyReplacer as jsonKeyReplacer2, nonNullable } from "@dxos/util";
5021
5073
  import { Event as Event9, synchronized as synchronized3 } from "@dxos/async";
5022
5074
  import { clientServiceBundle, defaultKey, Properties } from "@dxos/client-protocol";
5023
5075
  import { Context as Context11 } from "@dxos/context";
5024
- import { encodeReference } from "@dxos/echo-pipeline";
5076
+ import { DataServiceImpl, encodeReference } from "@dxos/echo-pipeline";
5025
5077
  import { getTypeReference } from "@dxos/echo-schema";
5078
+ import { QueryServiceImpl } from "@dxos/indexing";
5026
5079
  import { invariant as invariant16 } from "@dxos/invariant";
5027
5080
  import { PublicKey as PublicKey14 } from "@dxos/keys";
5028
5081
  import { log as log16 } from "@dxos/log";
@@ -5629,7 +5682,7 @@ var ClientServicesHost = class {
5629
5682
  initialize({ config, ...options }) {
5630
5683
  invariant16(!this._open, "service host is open", {
5631
5684
  F: __dxlog_file19,
5632
- L: 190,
5685
+ L: 198,
5633
5686
  S: this,
5634
5687
  A: [
5635
5688
  "!this._open",
@@ -5638,14 +5691,14 @@ var ClientServicesHost = class {
5638
5691
  });
5639
5692
  log16("initializing...", void 0, {
5640
5693
  F: __dxlog_file19,
5641
- L: 191,
5694
+ L: 199,
5642
5695
  S: this,
5643
5696
  C: (f, a) => f(...a)
5644
5697
  });
5645
5698
  if (config) {
5646
5699
  invariant16(!this._config, "config already set", {
5647
5700
  F: __dxlog_file19,
5648
- L: 194,
5701
+ L: 202,
5649
5702
  S: this,
5650
5703
  A: [
5651
5704
  "!this._config",
@@ -5660,7 +5713,7 @@ var ClientServicesHost = class {
5660
5713
  if (!options.signalManager) {
5661
5714
  log16.warn("running signaling without telemetry metadata.", void 0, {
5662
5715
  F: __dxlog_file19,
5663
- L: 202,
5716
+ L: 210,
5664
5717
  S: this,
5665
5718
  C: (f, a) => f(...a)
5666
5719
  });
@@ -5671,7 +5724,7 @@ var ClientServicesHost = class {
5671
5724
  this._signalManager = signalManager;
5672
5725
  invariant16(!this._networkManager, "network manager already set", {
5673
5726
  F: __dxlog_file19,
5674
- L: 213,
5727
+ L: 221,
5675
5728
  S: this,
5676
5729
  A: [
5677
5730
  "!this._networkManager",
@@ -5685,7 +5738,7 @@ var ClientServicesHost = class {
5685
5738
  });
5686
5739
  log16("initialized", void 0, {
5687
5740
  F: __dxlog_file19,
5688
- L: 220,
5741
+ L: 228,
5689
5742
  S: this,
5690
5743
  C: (f, a) => f(...a)
5691
5744
  });
@@ -5699,13 +5752,13 @@ var ClientServicesHost = class {
5699
5752
  id: traceId
5700
5753
  }), {
5701
5754
  F: __dxlog_file19,
5702
- L: 231,
5755
+ L: 239,
5703
5756
  S: this,
5704
5757
  C: (f, a) => f(...a)
5705
5758
  });
5706
5759
  invariant16(this._config, "config not set", {
5707
5760
  F: __dxlog_file19,
5708
- L: 233,
5761
+ L: 241,
5709
5762
  S: this,
5710
5763
  A: [
5711
5764
  "this._config",
@@ -5714,7 +5767,7 @@ var ClientServicesHost = class {
5714
5767
  });
5715
5768
  invariant16(this._storage, "storage not set", {
5716
5769
  F: __dxlog_file19,
5717
- L: 234,
5770
+ L: 242,
5718
5771
  S: this,
5719
5772
  A: [
5720
5773
  "this._storage",
@@ -5723,7 +5776,7 @@ var ClientServicesHost = class {
5723
5776
  });
5724
5777
  invariant16(this._signalManager, "signal manager not set", {
5725
5778
  F: __dxlog_file19,
5726
- L: 235,
5779
+ L: 243,
5727
5780
  S: this,
5728
5781
  A: [
5729
5782
  "this._signalManager",
@@ -5732,7 +5785,7 @@ var ClientServicesHost = class {
5732
5785
  });
5733
5786
  invariant16(this._networkManager, "network manager not set", {
5734
5787
  F: __dxlog_file19,
5735
- L: 236,
5788
+ L: 244,
5736
5789
  S: this,
5737
5790
  A: [
5738
5791
  "this._networkManager",
@@ -5744,7 +5797,7 @@ var ClientServicesHost = class {
5744
5797
  lockKey: this._resourceLock?.lockKey
5745
5798
  }, {
5746
5799
  F: __dxlog_file19,
5747
- L: 239,
5800
+ L: 247,
5748
5801
  S: this,
5749
5802
  C: (f, a) => f(...a)
5750
5803
  });
@@ -5755,6 +5808,11 @@ var ClientServicesHost = class {
5755
5808
  await this._resourceLock?.acquire();
5756
5809
  await this._loggingService.open();
5757
5810
  this._serviceContext = new ServiceContext(this._storage, this._level, this._networkManager, this._signalManager, this._runtimeParams);
5811
+ this._queryService = new QueryServiceImpl({
5812
+ indexer: this._serviceContext.indexer,
5813
+ automergeHost: this._serviceContext.automergeHost
5814
+ });
5815
+ await this._queryService.open(ctx);
5758
5816
  this._serviceRegistry.setServices({
5759
5817
  SystemService: this._systemService,
5760
5818
  IdentityService: new IdentityServiceImpl((params) => this._createIdentity(params), this._serviceContext.identityManager, this._serviceContext.keyring, (profile) => this._serviceContext.broadcastProfileUpdate(profile)),
@@ -5764,8 +5822,8 @@ var ClientServicesHost = class {
5764
5822
  await this._serviceContext.initialized.wait();
5765
5823
  return this._serviceContext.dataSpaceManager;
5766
5824
  }),
5767
- DataService: this._serviceContext.echoHost.dataService,
5768
- QueryService: this._serviceContext.echoHost.queryService,
5825
+ DataService: new DataServiceImpl(this._serviceContext.automergeHost),
5826
+ QueryService: this._queryService,
5769
5827
  NetworkService: new NetworkServiceImpl(this._serviceContext.networkManager, this._serviceContext.signalManager),
5770
5828
  LoggingService: this._loggingService,
5771
5829
  TracingService: this._tracingService,
@@ -5796,7 +5854,7 @@ var ClientServicesHost = class {
5796
5854
  deviceKey
5797
5855
  }, {
5798
5856
  F: __dxlog_file19,
5799
- L: 315,
5857
+ L: 330,
5800
5858
  S: this,
5801
5859
  C: (f, a) => f(...a)
5802
5860
  });
@@ -5804,7 +5862,7 @@ var ClientServicesHost = class {
5804
5862
  id: traceId
5805
5863
  }), {
5806
5864
  F: __dxlog_file19,
5807
- L: 316,
5865
+ L: 331,
5808
5866
  S: this,
5809
5867
  C: (f, a) => f(...a)
5810
5868
  });
@@ -5818,7 +5876,7 @@ var ClientServicesHost = class {
5818
5876
  deviceKey
5819
5877
  }, {
5820
5878
  F: __dxlog_file19,
5821
- L: 327,
5879
+ L: 342,
5822
5880
  S: this,
5823
5881
  C: (f, a) => f(...a)
5824
5882
  });
@@ -5828,6 +5886,7 @@ var ClientServicesHost = class {
5828
5886
  SystemService: this._systemService
5829
5887
  });
5830
5888
  await this._loggingService.close();
5889
+ await this._queryService.close();
5831
5890
  await this._serviceContext.close();
5832
5891
  await this._level?.close();
5833
5892
  this._open = false;
@@ -5836,7 +5895,7 @@ var ClientServicesHost = class {
5836
5895
  deviceKey
5837
5896
  }, {
5838
5897
  F: __dxlog_file19,
5839
- L: 336,
5898
+ L: 352,
5840
5899
  S: this,
5841
5900
  C: (f, a) => f(...a)
5842
5901
  });
@@ -5847,13 +5906,13 @@ var ClientServicesHost = class {
5847
5906
  id: traceId
5848
5907
  }), {
5849
5908
  F: __dxlog_file19,
5850
- L: 341,
5909
+ L: 357,
5851
5910
  S: this,
5852
5911
  C: (f, a) => f(...a)
5853
5912
  });
5854
5913
  log16("resetting...", void 0, {
5855
5914
  F: __dxlog_file19,
5856
- L: 343,
5915
+ L: 359,
5857
5916
  S: this,
5858
5917
  C: (f, a) => f(...a)
5859
5918
  });
@@ -5861,7 +5920,7 @@ var ClientServicesHost = class {
5861
5920
  await this._storage.reset();
5862
5921
  log16("reset", void 0, {
5863
5922
  F: __dxlog_file19,
5864
- L: 346,
5923
+ L: 362,
5865
5924
  S: this,
5866
5925
  C: (f, a) => f(...a)
5867
5926
  });
@@ -5869,7 +5928,7 @@ var ClientServicesHost = class {
5869
5928
  id: traceId
5870
5929
  }), {
5871
5930
  F: __dxlog_file19,
5872
- L: 347,
5931
+ L: 363,
5873
5932
  S: this,
5874
5933
  C: (f, a) => f(...a)
5875
5934
  });
@@ -5882,14 +5941,14 @@ var ClientServicesHost = class {
5882
5941
  const automergeIndex = space.automergeSpaceState.rootUrl;
5883
5942
  invariant16(automergeIndex, void 0, {
5884
5943
  F: __dxlog_file19,
5885
- L: 359,
5944
+ L: 375,
5886
5945
  S: this,
5887
5946
  A: [
5888
5947
  "automergeIndex",
5889
5948
  ""
5890
5949
  ]
5891
5950
  });
5892
- const document = await this._serviceContext.echoHost.automergeRepo.find(automergeIndex);
5951
+ const document = await this._serviceContext.automergeHost.repo.find(automergeIndex);
5893
5952
  await document.whenReady();
5894
5953
  const properties = {
5895
5954
  system: {
@@ -5909,7 +5968,7 @@ var ClientServicesHost = class {
5909
5968
  propertiesId
5910
5969
  ], properties);
5911
5970
  });
5912
- await this._serviceContext.echoHost.flush();
5971
+ await this._serviceContext.automergeHost.repo.flush();
5913
5972
  return identity;
5914
5973
  }
5915
5974
  };
@@ -6009,4 +6068,4 @@ export {
6009
6068
  ClientServicesHost,
6010
6069
  ClientServicesProviderResource
6011
6070
  };
6012
- //# sourceMappingURL=chunk-XEGUH2J7.mjs.map
6071
+ //# sourceMappingURL=chunk-CMVTOS5E.mjs.map