@dxos/echo-pipeline 0.6.1 → 0.6.2-main.8a232a5

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 (45) hide show
  1. package/dist/lib/browser/{chunk-DMUP426Q.mjs → chunk-UJQ5VS5V.mjs} +383 -196
  2. package/dist/lib/browser/chunk-UJQ5VS5V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +59 -562
  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 +1 -1
  7. package/dist/lib/node/{chunk-NH5WJKOW.cjs → chunk-RH6TDRML.cjs} +438 -256
  8. package/dist/lib/node/chunk-RH6TDRML.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +80 -581
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/testing/index.cjs +11 -11
  13. package/dist/types/src/automerge/automerge-host.d.ts +2 -17
  14. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  15. package/dist/types/src/automerge/echo-network-adapter.d.ts +1 -1
  16. package/dist/types/src/automerge/index.d.ts +0 -2
  17. package/dist/types/src/automerge/index.d.ts.map +1 -1
  18. package/dist/types/src/db-host/data-service.d.ts +10 -7
  19. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  20. package/dist/types/src/db-host/documents-synchronizer.d.ts +43 -0
  21. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -0
  22. package/dist/types/src/db-host/documents-synchronizer.test.d.ts +2 -0
  23. package/dist/types/src/db-host/documents-synchronizer.test.d.ts.map +1 -0
  24. package/dist/types/src/db-host/index.d.ts +1 -0
  25. package/dist/types/src/db-host/index.d.ts.map +1 -1
  26. package/package.json +33 -33
  27. package/src/automerge/automerge-host.ts +6 -56
  28. package/src/automerge/automerge-repo.test.ts +124 -1
  29. package/src/automerge/echo-network-adapter.ts +1 -1
  30. package/src/automerge/index.ts +0 -2
  31. package/src/db-host/data-service.ts +49 -25
  32. package/src/db-host/documents-synchronizer.test.ts +40 -0
  33. package/src/db-host/documents-synchronizer.ts +156 -0
  34. package/src/db-host/index.ts +1 -0
  35. package/dist/lib/browser/chunk-DMUP426Q.mjs.map +0 -7
  36. package/dist/lib/node/chunk-NH5WJKOW.cjs.map +0 -7
  37. package/dist/types/src/automerge/automerge-doc-loader.d.ts +0 -71
  38. package/dist/types/src/automerge/automerge-doc-loader.d.ts.map +0 -1
  39. package/dist/types/src/automerge/automerge-doc-loader.test.d.ts +0 -2
  40. package/dist/types/src/automerge/automerge-doc-loader.test.d.ts.map +0 -1
  41. package/dist/types/src/automerge/local-host-network-adapter.d.ts +0 -30
  42. package/dist/types/src/automerge/local-host-network-adapter.d.ts.map +0 -1
  43. package/src/automerge/automerge-doc-loader.test.ts +0 -103
  44. package/src/automerge/automerge-doc-loader.ts +0 -267
  45. package/src/automerge/local-host-network-adapter.ts +0 -115
@@ -121,31 +121,217 @@ var SnapshotStore = class {
121
121
  }
122
122
  };
123
123
 
124
+ // packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts
125
+ import { UpdateScheduler } from "@dxos/async";
126
+ import { next as A } from "@dxos/automerge/automerge";
127
+ import { Resource } from "@dxos/context";
128
+ import { invariant as invariant2 } from "@dxos/invariant";
129
+ import { log } from "@dxos/log";
130
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts";
131
+ var MAX_UPDATE_FREQ = 10;
132
+ var DocumentsSynchronizer = class extends Resource {
133
+ constructor(_params) {
134
+ super();
135
+ this._params = _params;
136
+ this._syncStates = /* @__PURE__ */ new Map();
137
+ this._pendingUpdates = /* @__PURE__ */ new Set();
138
+ this._sendUpdatesJob = void 0;
139
+ }
140
+ async addDocuments(documentIds) {
141
+ for (const documentId of documentIds) {
142
+ const doc = this._params.repo.find(documentId);
143
+ await doc.whenReady();
144
+ this._startSync(doc);
145
+ this._pendingUpdates.add(doc.documentId);
146
+ }
147
+ this._sendUpdatesJob.trigger();
148
+ }
149
+ removeDocuments(documentIds) {
150
+ for (const documentId of documentIds) {
151
+ this._syncStates.get(documentId)?.clearSubscriptions?.();
152
+ this._syncStates.delete(documentId);
153
+ this._pendingUpdates.delete(documentId);
154
+ }
155
+ }
156
+ async _open() {
157
+ this._sendUpdatesJob = new UpdateScheduler(this._ctx, this._checkAndSendUpdates.bind(this), {
158
+ maxFrequency: MAX_UPDATE_FREQ
159
+ });
160
+ }
161
+ async _close() {
162
+ await this._sendUpdatesJob.join();
163
+ this._syncStates.clear();
164
+ }
165
+ update(updates) {
166
+ for (const { documentId, mutation, isNew } of updates) {
167
+ if (isNew) {
168
+ const doc = this._params.repo.find(documentId);
169
+ doc.update((doc2) => A.loadIncremental(doc2, mutation));
170
+ this._startSync(doc);
171
+ } else {
172
+ this._writeMutation(documentId, mutation);
173
+ }
174
+ }
175
+ }
176
+ _startSync(doc) {
177
+ if (this._syncStates.has(doc.documentId)) {
178
+ log.info("Document already being synced", {
179
+ documentId: doc.documentId
180
+ }, {
181
+ F: __dxlog_file2,
182
+ L: 90,
183
+ S: this,
184
+ C: (f, a) => f(...a)
185
+ });
186
+ return;
187
+ }
188
+ const syncState = {
189
+ handle: doc
190
+ };
191
+ this._subscribeForChanges(syncState);
192
+ this._syncStates.set(doc.documentId, syncState);
193
+ }
194
+ _subscribeForChanges(syncState) {
195
+ const handler = () => {
196
+ this._pendingUpdates.add(syncState.handle.documentId);
197
+ this._sendUpdatesJob.trigger();
198
+ };
199
+ syncState.handle.on("heads-changed", handler);
200
+ syncState.clearSubscriptions = () => syncState.handle.off("heads-changed", handler);
201
+ }
202
+ async _checkAndSendUpdates() {
203
+ const updates = [];
204
+ const docsWithPendingUpdates = Array.from(this._pendingUpdates);
205
+ this._pendingUpdates.clear();
206
+ for (const documentId of docsWithPendingUpdates) {
207
+ const update = this._getPendingChanges(documentId);
208
+ if (update) {
209
+ updates.push({
210
+ documentId,
211
+ mutation: update
212
+ });
213
+ }
214
+ }
215
+ if (updates.length > 0) {
216
+ this._params.sendUpdates({
217
+ updates
218
+ });
219
+ }
220
+ }
221
+ _getPendingChanges(documentId) {
222
+ const syncState = this._syncStates.get(documentId);
223
+ invariant2(syncState, "Sync state for document not found", {
224
+ F: __dxlog_file2,
225
+ L: 131,
226
+ S: this,
227
+ A: [
228
+ "syncState",
229
+ "'Sync state for document not found'"
230
+ ]
231
+ });
232
+ const doc = syncState.handle.docSync();
233
+ if (!doc) {
234
+ return;
235
+ }
236
+ const mutation = syncState.lastSentHead ? A.saveSince(doc, syncState.lastSentHead) : A.save(doc);
237
+ if (mutation.length === 0) {
238
+ return;
239
+ }
240
+ syncState.lastSentHead = A.getHeads(doc);
241
+ return mutation;
242
+ }
243
+ _writeMutation(documentId, mutation) {
244
+ const syncState = this._syncStates.get(documentId);
245
+ invariant2(syncState, "Sync state for document not found", {
246
+ F: __dxlog_file2,
247
+ L: 146,
248
+ S: this,
249
+ A: [
250
+ "syncState",
251
+ "'Sync state for document not found'"
252
+ ]
253
+ });
254
+ syncState.handle.update((doc) => {
255
+ const headsBefore = A.getHeads(doc);
256
+ const newDoc = A.loadIncremental(doc, mutation);
257
+ if (A.equals(headsBefore, syncState.lastSentHead)) {
258
+ syncState.lastSentHead = A.getHeads(newDoc);
259
+ }
260
+ return newDoc;
261
+ });
262
+ }
263
+ };
264
+
124
265
  // packages/core/echo/echo-pipeline/src/db-host/data-service.ts
266
+ import { Stream } from "@dxos/codec-protobuf";
267
+ import { invariant as invariant3 } from "@dxos/invariant";
268
+ import { log as log2 } from "@dxos/log";
269
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/data-service.ts";
125
270
  var DataServiceImpl = class {
126
271
  constructor(params) {
272
+ /**
273
+ * Map of subscriptions.
274
+ * subscriptionId -> DocumentsSynchronizer
275
+ */
276
+ this._subscriptions = /* @__PURE__ */ new Map();
127
277
  this._automergeHost = params.automergeHost;
128
278
  this._updateIndexes = params.updateIndexes;
129
279
  }
130
280
  subscribe(request) {
131
- throw new Error("Deprecated.");
281
+ return new Stream(({ next, ready }) => {
282
+ const synchronizer = new DocumentsSynchronizer({
283
+ repo: this._automergeHost.repo,
284
+ sendUpdates: (updates) => next(updates)
285
+ });
286
+ synchronizer.open().then(() => {
287
+ this._subscriptions.set(request.subscriptionId, synchronizer);
288
+ ready();
289
+ }).catch((err) => log2.catch(err, void 0, {
290
+ F: __dxlog_file3,
291
+ L: 62,
292
+ S: this,
293
+ C: (f, a) => f(...a)
294
+ }));
295
+ return () => synchronizer.close();
296
+ });
297
+ }
298
+ async updateSubscription(request) {
299
+ const synchronizer = this._subscriptions.get(request.subscriptionId);
300
+ invariant3(synchronizer, "Subscription not found", {
301
+ F: __dxlog_file3,
302
+ L: 69,
303
+ S: this,
304
+ A: [
305
+ "synchronizer",
306
+ "'Subscription not found'"
307
+ ]
308
+ });
309
+ if (request.addIds?.length) {
310
+ await synchronizer.addDocuments(request.addIds);
311
+ }
312
+ if (request.removeIds?.length) {
313
+ await synchronizer.removeDocuments(request.removeIds);
314
+ }
132
315
  }
133
- write(request) {
134
- throw new Error("Deprecated.");
316
+ async update(request) {
317
+ if (!request.updates) {
318
+ return;
319
+ }
320
+ const synchronizer = this._subscriptions.get(request.subscriptionId);
321
+ invariant3(synchronizer, "Subscription not found", {
322
+ F: __dxlog_file3,
323
+ L: 84,
324
+ S: this,
325
+ A: [
326
+ "synchronizer",
327
+ "'Subscription not found'"
328
+ ]
329
+ });
330
+ synchronizer.update(request.updates);
135
331
  }
136
332
  async flush(request) {
137
333
  await this._automergeHost.flush(request);
138
334
  }
139
- // Automerge specific.
140
- async getHostInfo(request) {
141
- return this._automergeHost.getHostInfo();
142
- }
143
- syncRepo(request) {
144
- return this._automergeHost.syncRepo(request);
145
- }
146
- sendSyncMessage(request) {
147
- return this._automergeHost.sendSyncMessage(request);
148
- }
149
335
  async getDocumentHeads(request) {
150
336
  const entries = await Promise.all(request.documentIds?.map(async (documentId) => {
151
337
  const heads = await this._automergeHost.getHeads(documentId);
@@ -175,9 +361,9 @@ var DataServiceImpl = class {
175
361
  import CRC32 from "crc-32";
176
362
  import { Event, scheduleTaskInterval, synchronized } from "@dxos/async";
177
363
  import { Context } from "@dxos/context";
178
- import { invariant as invariant2 } from "@dxos/invariant";
364
+ import { invariant as invariant4 } from "@dxos/invariant";
179
365
  import { PublicKey as PublicKey2 } from "@dxos/keys";
180
- import { log } from "@dxos/log";
366
+ import { log as log3 } from "@dxos/log";
181
367
  import { DataCorruptionError, STORAGE_VERSION, schema as schema4 } from "@dxos/protocols";
182
368
  import { Invitation, SpaceState } from "@dxos/protocols/proto/dxos/client/services";
183
369
  import { ComplexMap, arrayToBuffer, forEachAsync, isNotNullOrUndefined } from "@dxos/util";
@@ -191,7 +377,7 @@ function _ts_decorate(decorators, target, key, desc) {
191
377
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
192
378
  return c > 3 && r && Object.defineProperty(target, key, r), r;
193
379
  }
194
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts";
380
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts";
195
381
  var EXPIRED_INVITATION_CLEANUP_INTERVAL = 60 * 60 * 1e3;
196
382
  var emptyEchoMetadata = () => ({
197
383
  version: STORAGE_VERSION,
@@ -209,7 +395,7 @@ var MetadataStore = class {
209
395
  this._metadataFile = void 0;
210
396
  this.update = new Event();
211
397
  this._invitationCleanupCtx = new Context(void 0, {
212
- F: __dxlog_file2,
398
+ F: __dxlog_file4,
213
399
  L: 53
214
400
  });
215
401
  this._directory = directory;
@@ -235,12 +421,12 @@ var MetadataStore = class {
235
421
  }
236
422
  const dataSize = fromBytesInt32(await file.read(0, 4));
237
423
  const checksum = fromBytesInt32(await file.read(4, 4));
238
- log("loaded", {
424
+ log3("loaded", {
239
425
  size: dataSize,
240
426
  checksum,
241
427
  name: file.filename
242
428
  }, {
243
- F: __dxlog_file2,
429
+ F: __dxlog_file4,
244
430
  L: 89,
245
431
  S: this,
246
432
  C: (f, a) => f(...a)
@@ -272,11 +458,11 @@ var MetadataStore = class {
272
458
  result.writeInt32LE(checksum, 4);
273
459
  encoded.copy(result, 8);
274
460
  await file.write(0, result);
275
- log("saved", {
461
+ log3("saved", {
276
462
  size: encoded.length,
277
463
  checksum
278
464
  }, {
279
- F: __dxlog_file2,
465
+ F: __dxlog_file4,
280
466
  L: 124,
281
467
  S: this,
282
468
  C: (f, a) => f(...a)
@@ -306,10 +492,10 @@ var MetadataStore = class {
306
492
  space.state ??= SpaceState.ACTIVE;
307
493
  });
308
494
  } catch (err) {
309
- log.error("failed to load metadata", {
495
+ log3.error("failed to load metadata", {
310
496
  err
311
497
  }, {
312
- F: __dxlog_file2,
498
+ F: __dxlog_file4,
313
499
  L: 156,
314
500
  S: this,
315
501
  C: (f, a) => f(...a)
@@ -323,10 +509,10 @@ var MetadataStore = class {
323
509
  try {
324
510
  await this._loadSpaceLargeMetadata(key);
325
511
  } catch (err) {
326
- log.error("failed to load space large metadata", {
512
+ log3.error("failed to load space large metadata", {
327
513
  err
328
514
  }, {
329
- F: __dxlog_file2,
515
+ F: __dxlog_file4,
330
516
  L: 168,
331
517
  S: this,
332
518
  C: (f, a) => f(...a)
@@ -360,10 +546,10 @@ var MetadataStore = class {
360
546
  this._spaceLargeMetadata.set(key, metadata);
361
547
  }
362
548
  } catch (err) {
363
- log.error("failed to load space large metadata", {
549
+ log3.error("failed to load space large metadata", {
364
550
  err
365
551
  }, {
366
- F: __dxlog_file2,
552
+ F: __dxlog_file4,
367
553
  L: 210,
368
554
  S: this,
369
555
  C: (f, a) => f(...a)
@@ -383,8 +569,8 @@ var MetadataStore = class {
383
569
  return this._metadata.identity.haloSpace;
384
570
  }
385
571
  const space = this.spaces.find((space2) => space2.key === spaceKey);
386
- invariant2(space, "Space not found", {
387
- F: __dxlog_file2,
572
+ invariant4(space, "Space not found", {
573
+ F: __dxlog_file4,
388
574
  L: 232,
389
575
  S: this,
390
576
  A: [
@@ -407,8 +593,8 @@ var MetadataStore = class {
407
593
  * Clears storage - doesn't work for now.
408
594
  */
409
595
  async clear() {
410
- log("clearing all metadata", void 0, {
411
- F: __dxlog_file2,
596
+ log3("clearing all metadata", void 0, {
597
+ F: __dxlog_file4,
412
598
  L: 251,
413
599
  S: this,
414
600
  C: (f, a) => f(...a)
@@ -420,8 +606,8 @@ var MetadataStore = class {
420
606
  return this._metadata.identity;
421
607
  }
422
608
  async setIdentityRecord(record) {
423
- invariant2(!this._metadata.identity, "Cannot overwrite existing identity in metadata", {
424
- F: __dxlog_file2,
609
+ invariant4(!this._metadata.identity, "Cannot overwrite existing identity in metadata", {
610
+ F: __dxlog_file4,
425
611
  L: 261,
426
612
  S: this,
427
613
  A: [
@@ -450,8 +636,8 @@ var MetadataStore = class {
450
636
  await this.flush();
451
637
  }
452
638
  async addSpace(record) {
453
- invariant2(!(this._metadata.spaces ?? []).find((space) => space.key === record.key), "Cannot overwrite existing space in metadata", {
454
- F: __dxlog_file2,
639
+ invariant4(!(this._metadata.spaces ?? []).find((space) => space.key === record.key), "Cannot overwrite existing space in metadata", {
640
+ F: __dxlog_file4,
455
641
  L: 289,
456
642
  S: this,
457
643
  A: [
@@ -517,7 +703,7 @@ var isLegacyInvitationFormat = (invitation) => {
517
703
  // packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts
518
704
  import { Event as Event2 } from "@dxos/async";
519
705
  import { timed } from "@dxos/debug";
520
- import { log as log2 } from "@dxos/log";
706
+ import { log as log4 } from "@dxos/log";
521
707
  import { Timeframe } from "@dxos/timeframe";
522
708
  function _ts_decorate2(decorators, target, key, desc) {
523
709
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -529,7 +715,7 @@ function _ts_decorate2(decorators, target, key, desc) {
529
715
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
530
716
  return c > 3 && r && Object.defineProperty(target, key, r), r;
531
717
  }
532
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts";
718
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts";
533
719
  var mapTimeframeToFeedIndexes = (timeframe) => timeframe.frames().map(([feedKey, index]) => ({
534
720
  feedKey,
535
721
  index
@@ -583,22 +769,22 @@ var TimeframeClock = class {
583
769
  return !gaps.isEmpty();
584
770
  }
585
771
  async waitUntilReached(target) {
586
- log2("waitUntilReached", {
772
+ log4("waitUntilReached", {
587
773
  target,
588
774
  current: this._timeframe
589
775
  }, {
590
- F: __dxlog_file3,
776
+ F: __dxlog_file5,
591
777
  L: 70,
592
778
  S: this,
593
779
  C: (f, a) => f(...a)
594
780
  });
595
781
  await this.update.waitForCondition(() => {
596
- log2("check if reached", {
782
+ log4("check if reached", {
597
783
  target,
598
784
  current: this._timeframe,
599
785
  deps: Timeframe.dependencies(target, this._timeframe)
600
786
  }, {
601
- F: __dxlog_file3,
787
+ F: __dxlog_file5,
602
788
  L: 72,
603
789
  S: this,
604
790
  C: (f, a) => f(...a)
@@ -616,22 +802,22 @@ import { Event as Event3, sleepWithContext, synchronized as synchronized2, Trigg
616
802
  import { Context as Context2, rejectOnDispose } from "@dxos/context";
617
803
  import { failUndefined } from "@dxos/debug";
618
804
  import { FeedSetIterator } from "@dxos/feed-store";
619
- import { invariant as invariant4 } from "@dxos/invariant";
805
+ import { invariant as invariant6 } from "@dxos/invariant";
620
806
  import { PublicKey as PublicKey3 } from "@dxos/keys";
621
- import { log as log4 } from "@dxos/log";
807
+ import { log as log6 } from "@dxos/log";
622
808
  import { Timeframe as Timeframe2 } from "@dxos/timeframe";
623
809
  import { ComplexMap as ComplexMap2 } from "@dxos/util";
624
810
 
625
811
  // packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts
626
- import { invariant as invariant3 } from "@dxos/invariant";
627
- import { log as log3 } from "@dxos/log";
628
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts";
812
+ import { invariant as invariant5 } from "@dxos/invariant";
813
+ import { log as log5 } from "@dxos/log";
814
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts";
629
815
  var createMessageSelector = (timeframeClock) => {
630
816
  return (messages) => {
631
817
  for (let i = 0; i < messages.length; i++) {
632
818
  const { data: { timeframe } } = messages[i];
633
- invariant3(timeframe, void 0, {
634
- F: __dxlog_file4,
819
+ invariant5(timeframe, void 0, {
820
+ F: __dxlog_file6,
635
821
  L: 25,
636
822
  S: void 0,
637
823
  A: [
@@ -643,8 +829,8 @@ var createMessageSelector = (timeframeClock) => {
643
829
  return i;
644
830
  }
645
831
  }
646
- log3("Skipping...", void 0, {
647
- F: __dxlog_file4,
832
+ log5("Skipping...", void 0, {
833
+ F: __dxlog_file6,
648
834
  L: 33,
649
835
  S: void 0,
650
836
  C: (f, a) => f(...a)
@@ -663,13 +849,13 @@ function _ts_decorate3(decorators, target, key, desc) {
663
849
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
664
850
  return c > 3 && r && Object.defineProperty(target, key, r), r;
665
851
  }
666
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts";
852
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts";
667
853
  var PipelineState = class {
668
854
  constructor(_feeds, _timeframeClock) {
669
855
  this._feeds = _feeds;
670
856
  this._timeframeClock = _timeframeClock;
671
857
  this._ctx = new Context2(void 0, {
672
- F: __dxlog_file5,
858
+ F: __dxlog_file7,
673
859
  L: 41
674
860
  });
675
861
  this.timeframeUpdate = this._timeframeClock.update;
@@ -720,15 +906,15 @@ var PipelineState = class {
720
906
  * @param timeout Timeout in milliseconds to specify the maximum wait time.
721
907
  */
722
908
  async waitUntilReachedTargetTimeframe({ ctx = new Context2(void 0, {
723
- F: __dxlog_file5,
909
+ F: __dxlog_file7,
724
910
  L: 129
725
911
  }), timeout, breakOnStall = true } = {}) {
726
- log4("waitUntilReachedTargetTimeframe", {
912
+ log6("waitUntilReachedTargetTimeframe", {
727
913
  timeout,
728
914
  current: this.timeframe,
729
915
  target: this.targetTimeframe
730
916
  }, {
731
- F: __dxlog_file5,
917
+ F: __dxlog_file7,
732
918
  L: 133,
733
919
  S: this,
734
920
  C: (f, a) => f(...a)
@@ -754,13 +940,13 @@ var PipelineState = class {
754
940
  if (done) {
755
941
  return;
756
942
  }
757
- log4.warn("waitUntilReachedTargetTimeframe timed out", {
943
+ log6.warn("waitUntilReachedTargetTimeframe timed out", {
758
944
  timeout,
759
945
  current: this.timeframe,
760
946
  target: this.targetTimeframe,
761
947
  dependencies: Timeframe2.dependencies(this.targetTimeframe, this.timeframe)
762
948
  }, {
763
- F: __dxlog_file5,
949
+ F: __dxlog_file7,
764
950
  L: 161,
765
951
  S: this,
766
952
  C: (f, a) => f(...a)
@@ -792,8 +978,8 @@ var Pipeline = class {
792
978
  return this._state;
793
979
  }
794
980
  get writer() {
795
- invariant4(this._writer, "Writer not set.", {
796
- F: __dxlog_file5,
981
+ invariant6(this._writer, "Writer not set.", {
982
+ F: __dxlog_file7,
797
983
  L: 243,
798
984
  S: this,
799
985
  A: [
@@ -821,8 +1007,8 @@ var Pipeline = class {
821
1007
  }
822
1008
  }
823
1009
  setWriteFeed(feed) {
824
- invariant4(!this._writer, "Writer already set.", {
825
- F: __dxlog_file5,
1010
+ invariant6(!this._writer, "Writer already set.", {
1011
+ F: __dxlog_file7,
826
1012
  L: 270,
827
1013
  S: this,
828
1014
  A: [
@@ -830,8 +1016,8 @@ var Pipeline = class {
830
1016
  "'Writer already set.'"
831
1017
  ]
832
1018
  });
833
- invariant4(feed.properties.writable, "Feed must be writable.", {
834
- F: __dxlog_file5,
1019
+ invariant6(feed.properties.writable, "Feed must be writable.", {
1020
+ F: __dxlog_file7,
835
1021
  L: 271,
836
1022
  S: this,
837
1023
  A: [
@@ -845,8 +1031,8 @@ var Pipeline = class {
845
1031
  }), feed.createFeedWriter());
846
1032
  }
847
1033
  async start() {
848
- invariant4(!this._isStarted, "Pipeline is already started.", {
849
- F: __dxlog_file5,
1034
+ invariant6(!this._isStarted, "Pipeline is already started.", {
1035
+ F: __dxlog_file7,
850
1036
  L: 284,
851
1037
  S: this,
852
1038
  A: [
@@ -854,8 +1040,8 @@ var Pipeline = class {
854
1040
  "'Pipeline is already started.'"
855
1041
  ]
856
1042
  });
857
- log4("starting...", void 0, {
858
- F: __dxlog_file5,
1043
+ log6("starting...", void 0, {
1044
+ F: __dxlog_file7,
859
1045
  L: 285,
860
1046
  S: this,
861
1047
  C: (f, a) => f(...a)
@@ -863,8 +1049,8 @@ var Pipeline = class {
863
1049
  await this._initIterator();
864
1050
  await this._feedSetIterator.open();
865
1051
  this._isStarted = true;
866
- log4("started", void 0, {
867
- F: __dxlog_file5,
1052
+ log6("started", void 0, {
1053
+ F: __dxlog_file7,
868
1054
  L: 289,
869
1055
  S: this,
870
1056
  C: (f, a) => f(...a)
@@ -876,8 +1062,8 @@ var Pipeline = class {
876
1062
  }
877
1063
  }
878
1064
  async stop() {
879
- log4("stopping...", void 0, {
880
- F: __dxlog_file5,
1065
+ log6("stopping...", void 0, {
1066
+ F: __dxlog_file7,
881
1067
  L: 300,
882
1068
  S: this,
883
1069
  C: (f, a) => f(...a)
@@ -891,14 +1077,14 @@ var Pipeline = class {
891
1077
  await this._processingTrigger.wait();
892
1078
  await this._state._ctx.dispose();
893
1079
  this._state._ctx = new Context2(void 0, {
894
- F: __dxlog_file5,
1080
+ F: __dxlog_file7,
895
1081
  L: 309
896
1082
  });
897
1083
  this._state._reachedTargetPromise = void 0;
898
1084
  this._state._reachedTarget = false;
899
1085
  this._isStarted = false;
900
- log4("stopped", void 0, {
901
- F: __dxlog_file5,
1086
+ log6("stopped", void 0, {
1087
+ F: __dxlog_file7,
902
1088
  L: 313,
903
1089
  S: this,
904
1090
  C: (f, a) => f(...a)
@@ -909,8 +1095,8 @@ var Pipeline = class {
909
1095
  * The pipeline will start processing messages AFTER this timeframe.
910
1096
  */
911
1097
  async setCursor(timeframe) {
912
- invariant4(!this._isStarted || this._isPaused, "Invalid state.", {
913
- F: __dxlog_file5,
1098
+ invariant6(!this._isStarted || this._isPaused, "Invalid state.", {
1099
+ F: __dxlog_file7,
914
1100
  L: 322,
915
1101
  S: this,
916
1102
  A: [
@@ -938,8 +1124,8 @@ var Pipeline = class {
938
1124
  this._isPaused = true;
939
1125
  }
940
1126
  async unpause() {
941
- invariant4(this._isPaused, "Pipeline is not paused.", {
942
- F: __dxlog_file5,
1127
+ invariant6(this._isPaused, "Pipeline is not paused.", {
1128
+ F: __dxlog_file7,
943
1129
  L: 351,
944
1130
  S: this,
945
1131
  A: [
@@ -958,8 +1144,8 @@ var Pipeline = class {
958
1144
  * Updates the timeframe clock after the message has bee processed.
959
1145
  */
960
1146
  async *consume() {
961
- invariant4(!this._isBeingConsumed, "Pipeline is already being consumed.", {
962
- F: __dxlog_file5,
1147
+ invariant6(!this._isBeingConsumed, "Pipeline is already being consumed.", {
1148
+ F: __dxlog_file7,
963
1149
  L: 366,
964
1150
  S: this,
965
1151
  A: [
@@ -968,8 +1154,8 @@ var Pipeline = class {
968
1154
  ]
969
1155
  });
970
1156
  this._isBeingConsumed = true;
971
- invariant4(this._feedSetIterator, "Iterator not initialized.", {
972
- F: __dxlog_file5,
1157
+ invariant6(this._feedSetIterator, "Iterator not initialized.", {
1158
+ F: __dxlog_file7,
973
1159
  L: 369,
974
1160
  S: this,
975
1161
  A: [
@@ -982,8 +1168,8 @@ var Pipeline = class {
982
1168
  while (!this._isStopping) {
983
1169
  await this._pauseTrigger.wait();
984
1170
  if (lastFeedSetIterator !== this._feedSetIterator) {
985
- invariant4(this._feedSetIterator, "Iterator not initialized.", {
986
- F: __dxlog_file5,
1171
+ invariant6(this._feedSetIterator, "Iterator not initialized.", {
1172
+ F: __dxlog_file7,
987
1173
  L: 378,
988
1174
  S: this,
989
1175
  A: [
@@ -1013,12 +1199,12 @@ var Pipeline = class {
1013
1199
  }
1014
1200
  const timeframe = this._state._startTimeframe;
1015
1201
  const seq = timeframe.get(feed.key) ?? -1;
1016
- log4("download", {
1202
+ log6("download", {
1017
1203
  feed: feed.key.truncate(),
1018
1204
  seq,
1019
1205
  length: feed.length
1020
1206
  }, {
1021
- F: __dxlog_file5,
1207
+ F: __dxlog_file7,
1022
1208
  L: 407,
1023
1209
  S: this,
1024
1210
  C: (f, a) => f(...a)
@@ -1029,10 +1215,10 @@ var Pipeline = class {
1029
1215
  }, (err, data) => {
1030
1216
  if (err) {
1031
1217
  } else {
1032
- log4.info("downloaded", {
1218
+ log6.info("downloaded", {
1033
1219
  data
1034
1220
  }, {
1035
- F: __dxlog_file5,
1221
+ F: __dxlog_file7,
1036
1222
  L: 412,
1037
1223
  S: this,
1038
1224
  C: (f, a) => f(...a)
@@ -1047,8 +1233,8 @@ var Pipeline = class {
1047
1233
  stallTimeout: 1e3
1048
1234
  });
1049
1235
  this._feedSetIterator.stalled.on((iterator) => {
1050
- log4.warn(`Stalled after ${iterator.options.stallTimeout}ms with ${iterator.size} feeds.`, void 0, {
1051
- F: __dxlog_file5,
1236
+ log6.warn(`Stalled after ${iterator.options.stallTimeout}ms with ${iterator.size} feeds.`, void 0, {
1237
+ F: __dxlog_file7,
1052
1238
  L: 426,
1053
1239
  S: this,
1054
1240
  C: (f, a) => f(...a)
@@ -1080,11 +1266,11 @@ _ts_decorate3([
1080
1266
  import { runInContext, scheduleTask } from "@dxos/async";
1081
1267
  import { Context as Context3 } from "@dxos/context";
1082
1268
  import { randomBytes } from "@dxos/crypto";
1083
- import { invariant as invariant5 } from "@dxos/invariant";
1084
- import { log as log5 } from "@dxos/log";
1269
+ import { invariant as invariant7 } from "@dxos/invariant";
1270
+ import { log as log7 } from "@dxos/log";
1085
1271
  import { schema as schema5 } from "@dxos/protocols";
1086
1272
  import { RpcExtension } from "@dxos/teleport";
1087
- var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/auth.ts";
1273
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/auth.ts";
1088
1274
  var AuthExtension = class extends RpcExtension {
1089
1275
  constructor(_authParams) {
1090
1276
  super({
@@ -1099,15 +1285,15 @@ var AuthExtension = class extends RpcExtension {
1099
1285
  this._authParams = _authParams;
1100
1286
  this._ctx = new Context3({
1101
1287
  onError: (err) => {
1102
- log5.catch(err, void 0, {
1103
- F: __dxlog_file6,
1288
+ log7.catch(err, void 0, {
1289
+ F: __dxlog_file8,
1104
1290
  L: 28,
1105
1291
  S: this,
1106
1292
  C: (f, a) => f(...a)
1107
1293
  });
1108
1294
  }
1109
1295
  }, {
1110
- F: __dxlog_file6,
1296
+ F: __dxlog_file8,
1111
1297
  L: 26
1112
1298
  });
1113
1299
  }
@@ -1124,8 +1310,8 @@ var AuthExtension = class extends RpcExtension {
1124
1310
  credential
1125
1311
  };
1126
1312
  } catch (err) {
1127
- log5.error("failed to generate auth credentials", err, {
1128
- F: __dxlog_file6,
1313
+ log7.error("failed to generate auth credentials", err, {
1314
+ F: __dxlog_file8,
1129
1315
  L: 55,
1130
1316
  S: this,
1131
1317
  C: (f, a) => f(...a)
@@ -1144,8 +1330,8 @@ var AuthExtension = class extends RpcExtension {
1144
1330
  const { credential } = await this.rpc.AuthService.authenticate({
1145
1331
  challenge
1146
1332
  });
1147
- invariant5(credential?.length > 0, "invalid credential", {
1148
- F: __dxlog_file6,
1333
+ invariant7(credential?.length > 0, "invalid credential", {
1334
+ F: __dxlog_file8,
1149
1335
  L: 69,
1150
1336
  S: this,
1151
1337
  A: [
@@ -1154,8 +1340,8 @@ var AuthExtension = class extends RpcExtension {
1154
1340
  ]
1155
1341
  });
1156
1342
  const success = await this._authParams.verifier(challenge, credential);
1157
- invariant5(success, "credential not verified", {
1158
- F: __dxlog_file6,
1343
+ invariant7(success, "credential not verified", {
1344
+ F: __dxlog_file8,
1159
1345
  L: 71,
1160
1346
  S: this,
1161
1347
  A: [
@@ -1165,8 +1351,8 @@ var AuthExtension = class extends RpcExtension {
1165
1351
  });
1166
1352
  runInContext(this._ctx, () => this._authParams.onAuthSuccess());
1167
1353
  } catch (err) {
1168
- log5("auth failed", err, {
1169
- F: __dxlog_file6,
1354
+ log7("auth failed", err, {
1355
+ F: __dxlog_file8,
1170
1356
  L: 74,
1171
1357
  S: this,
1172
1358
  C: (f, a) => f(...a)
@@ -1188,11 +1374,11 @@ var AuthExtension = class extends RpcExtension {
1188
1374
 
1189
1375
  // packages/core/echo/echo-pipeline/src/space/space.ts
1190
1376
  import { Event as Event4, Mutex, synchronized as synchronized3, trackLeaks as trackLeaks2 } from "@dxos/async";
1191
- import { LifecycleState, Resource } from "@dxos/context";
1377
+ import { LifecycleState, Resource as Resource2 } from "@dxos/context";
1192
1378
  import { subtleCrypto as subtleCrypto2 } from "@dxos/crypto";
1193
- import { invariant as invariant6 } from "@dxos/invariant";
1379
+ import { invariant as invariant8 } from "@dxos/invariant";
1194
1380
  import { PublicKey as PublicKey5, SpaceId } from "@dxos/keys";
1195
- import { log as log7, logInfo } from "@dxos/log";
1381
+ import { log as log9, logInfo } from "@dxos/log";
1196
1382
  import { AdmittedFeed as AdmittedFeed2 } from "@dxos/protocols/proto/dxos/halo/credentials";
1197
1383
  import { trace as trace2 } from "@dxos/tracing";
1198
1384
  import { Callback as Callback2, ComplexMap as ComplexMap3 } from "@dxos/util";
@@ -1202,7 +1388,7 @@ import { DeferredTask, sleepWithContext as sleepWithContext2, trackLeaks } from
1202
1388
  import { Context as Context4 } from "@dxos/context";
1203
1389
  import { SpaceStateMachine } from "@dxos/credentials";
1204
1390
  import { PublicKey as PublicKey4 } from "@dxos/keys";
1205
- import { log as log6 } from "@dxos/log";
1391
+ import { log as log8 } from "@dxos/log";
1206
1392
  import { AdmittedFeed } from "@dxos/protocols/proto/dxos/halo/credentials";
1207
1393
  import { Timeframe as Timeframe3 } from "@dxos/timeframe";
1208
1394
  import { TimeSeriesCounter, TimeUsageCounter, trace } from "@dxos/tracing";
@@ -1217,14 +1403,14 @@ function _ts_decorate4(decorators, target, key, desc) {
1217
1403
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1218
1404
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1219
1405
  }
1220
- var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/control-pipeline.ts";
1406
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/control-pipeline.ts";
1221
1407
  var TIMEFRAME_SAVE_DEBOUNCE_INTERVAL = 500;
1222
1408
  var CONTROL_PIPELINE_SNAPSHOT_DELAY = 1e4;
1223
1409
  var USE_SNAPSHOTS = true;
1224
1410
  var ControlPipeline = class {
1225
1411
  constructor({ spaceKey, genesisFeed, feedProvider, metadataStore }) {
1226
1412
  this._ctx = new Context4(void 0, {
1227
- F: __dxlog_file7,
1413
+ F: __dxlog_file9,
1228
1414
  L: 47
1229
1415
  });
1230
1416
  this._lastTimeframeSaveTime = Date.now();
@@ -1241,10 +1427,10 @@ var ControlPipeline = class {
1241
1427
  void this._pipeline.addFeed(genesisFeed);
1242
1428
  this._spaceStateMachine = new SpaceStateMachine(spaceKey);
1243
1429
  this._spaceStateMachine.onFeedAdmitted.set(async (info) => {
1244
- log6("feed admitted", {
1430
+ log8("feed admitted", {
1245
1431
  key: info.key
1246
1432
  }, {
1247
- F: __dxlog_file7,
1433
+ F: __dxlog_file9,
1248
1434
  L: 82,
1249
1435
  S: this,
1250
1436
  C: (f, a) => f(...a)
@@ -1257,8 +1443,8 @@ var ControlPipeline = class {
1257
1443
  await this._pipeline.addFeed(feed);
1258
1444
  }
1259
1445
  } catch (err) {
1260
- log6.catch(err, void 0, {
1261
- F: __dxlog_file7,
1446
+ log8.catch(err, void 0, {
1447
+ F: __dxlog_file9,
1262
1448
  L: 93,
1263
1449
  S: this,
1264
1450
  C: (f, a) => f(...a)
@@ -1285,12 +1471,12 @@ var ControlPipeline = class {
1285
1471
  }
1286
1472
  async start() {
1287
1473
  const snapshot = this._metadata.getSpaceControlPipelineSnapshot(this._spaceKey);
1288
- log6("load snapshot", {
1474
+ log8("load snapshot", {
1289
1475
  key: this._spaceKey,
1290
1476
  present: !!snapshot,
1291
1477
  tf: snapshot?.timeframe
1292
1478
  }, {
1293
- F: __dxlog_file7,
1479
+ F: __dxlog_file9,
1294
1480
  L: 123,
1295
1481
  S: this,
1296
1482
  C: (f, a) => f(...a)
@@ -1298,21 +1484,21 @@ var ControlPipeline = class {
1298
1484
  if (USE_SNAPSHOTS && snapshot) {
1299
1485
  await this._processSnapshot(snapshot);
1300
1486
  }
1301
- log6("starting...", void 0, {
1302
- F: __dxlog_file7,
1487
+ log8("starting...", void 0, {
1488
+ F: __dxlog_file9,
1303
1489
  L: 128,
1304
1490
  S: this,
1305
1491
  C: (f, a) => f(...a)
1306
1492
  });
1307
1493
  setTimeout(async () => {
1308
1494
  void this._consumePipeline(new Context4(void 0, {
1309
- F: __dxlog_file7,
1495
+ F: __dxlog_file9,
1310
1496
  L: 130
1311
1497
  }));
1312
1498
  });
1313
1499
  await this._pipeline.start();
1314
- log6("started", void 0, {
1315
- F: __dxlog_file7,
1500
+ log8("started", void 0, {
1501
+ F: __dxlog_file9,
1316
1502
  L: 134,
1317
1503
  S: this,
1318
1504
  C: (f, a) => f(...a)
@@ -1326,10 +1512,10 @@ var ControlPipeline = class {
1326
1512
  skipVerification: true
1327
1513
  });
1328
1514
  if (!result) {
1329
- log6.warn("credential processing failed from snapshot", {
1515
+ log8.warn("credential processing failed from snapshot", {
1330
1516
  message
1331
1517
  }, {
1332
- F: __dxlog_file7,
1518
+ F: __dxlog_file9,
1333
1519
  L: 147,
1334
1520
  S: this,
1335
1521
  C: (f, a) => f(...a)
@@ -1347,11 +1533,11 @@ var ControlPipeline = class {
1347
1533
  }))
1348
1534
  };
1349
1535
  await this._pipeline.unpause();
1350
- log6("save snapshot", {
1536
+ log8("save snapshot", {
1351
1537
  key: this._spaceKey,
1352
1538
  snapshot
1353
1539
  }, {
1354
- F: __dxlog_file7,
1540
+ F: __dxlog_file9,
1355
1541
  L: 163,
1356
1542
  S: this,
1357
1543
  C: (f, a) => f(...a)
@@ -1365,8 +1551,8 @@ var ControlPipeline = class {
1365
1551
  try {
1366
1552
  await this._processMessage(ctx, msg);
1367
1553
  } catch (err) {
1368
- log6.catch(err, void 0, {
1369
- F: __dxlog_file7,
1554
+ log8.catch(err, void 0, {
1555
+ F: __dxlog_file9,
1370
1556
  L: 176,
1371
1557
  S: this,
1372
1558
  C: (f, a) => f(...a)
@@ -1376,11 +1562,11 @@ var ControlPipeline = class {
1376
1562
  }
1377
1563
  }
1378
1564
  async _processMessage(ctx, msg) {
1379
- log6("processing", {
1565
+ log8("processing", {
1380
1566
  key: msg.feedKey,
1381
1567
  seq: msg.seq
1382
1568
  }, {
1383
- F: __dxlog_file7,
1569
+ F: __dxlog_file9,
1384
1570
  L: 186,
1385
1571
  S: this,
1386
1572
  C: (f, a) => f(...a)
@@ -1392,10 +1578,10 @@ var ControlPipeline = class {
1392
1578
  });
1393
1579
  timer.end();
1394
1580
  if (!result) {
1395
- log6.warn("processing failed", {
1581
+ log8.warn("processing failed", {
1396
1582
  msg
1397
1583
  }, {
1398
- F: __dxlog_file7,
1584
+ F: __dxlog_file9,
1399
1585
  L: 195,
1400
1586
  S: this,
1401
1587
  C: (f, a) => f(...a)
@@ -1413,8 +1599,8 @@ var ControlPipeline = class {
1413
1599
  }
1414
1600
  }
1415
1601
  async stop() {
1416
- log6("stopping...", void 0, {
1417
- F: __dxlog_file7,
1602
+ log8("stopping...", void 0, {
1603
+ F: __dxlog_file9,
1418
1604
  L: 215,
1419
1605
  S: this,
1420
1606
  C: (f, a) => f(...a)
@@ -1422,8 +1608,8 @@ var ControlPipeline = class {
1422
1608
  await this._ctx.dispose();
1423
1609
  await this._pipeline.stop();
1424
1610
  await this._saveTargetTimeframe(this._pipeline.state.timeframe);
1425
- log6("stopped", void 0, {
1426
- F: __dxlog_file7,
1611
+ log8("stopped", void 0, {
1612
+ F: __dxlog_file9,
1427
1613
  L: 219,
1428
1614
  S: this,
1429
1615
  C: (f, a) => f(...a)
@@ -1435,8 +1621,8 @@ var ControlPipeline = class {
1435
1621
  await this._metadata.setSpaceControlLatestTimeframe(this._spaceKey, newTimeframe);
1436
1622
  this._targetTimeframe = newTimeframe;
1437
1623
  } catch (err) {
1438
- log6(err, void 0, {
1439
- F: __dxlog_file7,
1624
+ log8(err, void 0, {
1625
+ F: __dxlog_file9,
1440
1626
  L: 228,
1441
1627
  S: this,
1442
1628
  C: (f, a) => f(...a)
@@ -1477,15 +1663,15 @@ function _ts_decorate5(decorators, target, key, desc) {
1477
1663
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1478
1664
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1479
1665
  }
1480
- var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space.ts";
1481
- var Space = class extends Resource {
1666
+ var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space.ts";
1667
+ var Space = class extends Resource2 {
1482
1668
  constructor(params) {
1483
1669
  super();
1484
1670
  this._addFeedMutex = new Mutex();
1485
1671
  this.onCredentialProcessed = new Callback2();
1486
1672
  this.stateUpdate = new Event4();
1487
- invariant6(params.spaceKey && params.feedProvider, void 0, {
1488
- F: __dxlog_file8,
1673
+ invariant8(params.spaceKey && params.feedProvider, void 0, {
1674
+ F: __dxlog_file10,
1489
1675
  L: 78,
1490
1676
  S: this,
1491
1677
  A: [
@@ -1516,10 +1702,10 @@ var Space = class extends Resource {
1516
1702
  });
1517
1703
  this._controlPipeline.onCredentialProcessed.set(async (credential) => {
1518
1704
  await this.onCredentialProcessed.callIfSet(credential);
1519
- log7("onCredentialProcessed", {
1705
+ log9("onCredentialProcessed", {
1520
1706
  credential
1521
1707
  }, {
1522
- F: __dxlog_file8,
1708
+ F: __dxlog_file10,
1523
1709
  L: 106,
1524
1710
  S: this,
1525
1711
  C: (f, a) => f(...a)
@@ -1527,10 +1713,10 @@ var Space = class extends Resource {
1527
1713
  this.stateUpdate.emit();
1528
1714
  });
1529
1715
  this._controlPipeline.onDelegatedInvitation.set(async (invitation) => {
1530
- log7("onDelegatedInvitation", {
1716
+ log9("onDelegatedInvitation", {
1531
1717
  invitation
1532
1718
  }, {
1533
- F: __dxlog_file8,
1719
+ F: __dxlog_file10,
1534
1720
  L: 110,
1535
1721
  S: this,
1536
1722
  C: (f, a) => f(...a)
@@ -1538,10 +1724,10 @@ var Space = class extends Resource {
1538
1724
  await params.onDelegatedInvitationStatusChange(invitation, true);
1539
1725
  });
1540
1726
  this._controlPipeline.onDelegatedInvitationRemoved.set(async (invitation) => {
1541
- log7("onDelegatedInvitationRemoved", {
1727
+ log9("onDelegatedInvitationRemoved", {
1542
1728
  invitation
1543
1729
  }, {
1544
- F: __dxlog_file8,
1730
+ F: __dxlog_file10,
1545
1731
  L: 114,
1546
1732
  S: this,
1547
1733
  C: (f, a) => f(...a)
@@ -1549,13 +1735,13 @@ var Space = class extends Resource {
1549
1735
  await params.onDelegatedInvitationStatusChange(invitation, false);
1550
1736
  });
1551
1737
  this._controlPipeline.onMemberRoleChanged.set(async (changedMembers) => {
1552
- log7("onMemberRoleChanged", () => ({
1738
+ log9("onMemberRoleChanged", () => ({
1553
1739
  changedMembers: changedMembers.map((m) => [
1554
1740
  m.key,
1555
1741
  m.role
1556
1742
  ])
1557
1743
  }), {
1558
- F: __dxlog_file8,
1744
+ F: __dxlog_file10,
1559
1745
  L: 118,
1560
1746
  S: this,
1561
1747
  C: (f, a) => f(...a)
@@ -1596,8 +1782,8 @@ var Space = class extends Resource {
1596
1782
  return this._snapshotManager;
1597
1783
  }
1598
1784
  async setControlFeed(feed) {
1599
- invariant6(!this._controlFeed, "Control feed already set.", {
1600
- F: __dxlog_file8,
1785
+ invariant8(!this._controlFeed, "Control feed already set.", {
1786
+ F: __dxlog_file10,
1601
1787
  L: 171,
1602
1788
  S: this,
1603
1789
  A: [
@@ -1610,8 +1796,8 @@ var Space = class extends Resource {
1610
1796
  return this;
1611
1797
  }
1612
1798
  async setDataFeed(feed) {
1613
- invariant6(!this._dataFeed, "Data feed already set.", {
1614
- F: __dxlog_file8,
1799
+ invariant8(!this._dataFeed, "Data feed already set.", {
1800
+ F: __dxlog_file10,
1615
1801
  L: 178,
1616
1802
  S: this,
1617
1803
  A: [
@@ -1629,34 +1815,34 @@ var Space = class extends Resource {
1629
1815
  return Array.from(this._controlPipeline.spaceState.feeds.values());
1630
1816
  }
1631
1817
  async _open(ctx) {
1632
- log7("opening...", void 0, {
1633
- F: __dxlog_file8,
1818
+ log9("opening...", void 0, {
1819
+ F: __dxlog_file10,
1634
1820
  L: 192,
1635
1821
  S: this,
1636
1822
  C: (f, a) => f(...a)
1637
1823
  });
1638
1824
  await this._controlPipeline.start();
1639
1825
  await this.protocol.start();
1640
- log7("opened", void 0, {
1641
- F: __dxlog_file8,
1826
+ log9("opened", void 0, {
1827
+ F: __dxlog_file10,
1642
1828
  L: 198,
1643
1829
  S: this,
1644
1830
  C: (f, a) => f(...a)
1645
1831
  });
1646
1832
  }
1647
1833
  async _close() {
1648
- log7("closing...", {
1834
+ log9("closing...", {
1649
1835
  key: this._key
1650
1836
  }, {
1651
- F: __dxlog_file8,
1837
+ F: __dxlog_file10,
1652
1838
  L: 203,
1653
1839
  S: this,
1654
1840
  C: (f, a) => f(...a)
1655
1841
  });
1656
1842
  await this.protocol.stop();
1657
1843
  await this._controlPipeline.stop();
1658
- log7("closed", void 0, {
1659
- F: __dxlog_file8,
1844
+ log9("closed", void 0, {
1845
+ F: __dxlog_file10,
1660
1846
  L: 209,
1661
1847
  S: this,
1662
1848
  C: (f, a) => f(...a)
@@ -1705,7 +1891,7 @@ import { scheduleTask as scheduleTask2 } from "@dxos/async";
1705
1891
  import { Context as Context5 } from "@dxos/context";
1706
1892
  import { ProtocolError, schema as schema6 } from "@dxos/protocols";
1707
1893
  import { RpcExtension as RpcExtension2 } from "@dxos/teleport";
1708
- var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts";
1894
+ var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts";
1709
1895
  var CredentialRetrieverExtension = class extends RpcExtension2 {
1710
1896
  constructor(_request, _onResult) {
1711
1897
  super({
@@ -1716,7 +1902,7 @@ var CredentialRetrieverExtension = class extends RpcExtension2 {
1716
1902
  this._request = _request;
1717
1903
  this._onResult = _onResult;
1718
1904
  this._ctx = new Context5(void 0, {
1719
- F: __dxlog_file9,
1905
+ F: __dxlog_file11,
1720
1906
  L: 25
1721
1907
  });
1722
1908
  }
@@ -1770,7 +1956,7 @@ var CredentialServerExtension = class extends RpcExtension2 {
1770
1956
  // packages/core/echo/echo-pipeline/src/space/space-protocol.ts
1771
1957
  import { discoveryKey, subtleCrypto as subtleCrypto3 } from "@dxos/crypto";
1772
1958
  import { PublicKey as PublicKey6 } from "@dxos/keys";
1773
- import { log as log8, logInfo as logInfo2 } from "@dxos/log";
1959
+ import { log as log10, logInfo as logInfo2 } from "@dxos/log";
1774
1960
  import { MMSTTopology } from "@dxos/network-manager";
1775
1961
  import { Teleport } from "@dxos/teleport";
1776
1962
  import { BlobSync } from "@dxos/teleport-extension-object-sync";
@@ -1787,7 +1973,7 @@ function _ts_decorate6(decorators, target, key, desc) {
1787
1973
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1788
1974
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1789
1975
  }
1790
- var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-protocol.ts";
1976
+ var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-protocol.ts";
1791
1977
  var MOCK_AUTH_PROVIDER = async (nonce) => Buffer.from("mock");
1792
1978
  var MOCK_AUTH_VERIFIER = async (nonce, credential) => true;
1793
1979
  var SpaceProtocol = class {
@@ -1821,10 +2007,10 @@ var SpaceProtocol = class {
1821
2007
  }
1822
2008
  // TODO(burdon): Create abstraction for Space (e.g., add keys and have provider).
1823
2009
  addFeed(feed) {
1824
- log8("addFeed", {
2010
+ log10("addFeed", {
1825
2011
  key: feed.key
1826
2012
  }, {
1827
- F: __dxlog_file10,
2013
+ F: __dxlog_file12,
1828
2014
  L: 109,
1829
2015
  S: this,
1830
2016
  C: (f, a) => f(...a)
@@ -1841,8 +2027,8 @@ var SpaceProtocol = class {
1841
2027
  }
1842
2028
  const credentials = await this._swarmIdentity.credentialProvider(Buffer.from(""));
1843
2029
  await this.blobSync.open();
1844
- log8("starting...", void 0, {
1845
- F: __dxlog_file10,
2030
+ log10("starting...", void 0, {
2031
+ F: __dxlog_file12,
1846
2032
  L: 128,
1847
2033
  S: this,
1848
2034
  C: (f, a) => f(...a)
@@ -1855,8 +2041,8 @@ var SpaceProtocol = class {
1855
2041
  topology: this._topology,
1856
2042
  label: `swarm ${topic.truncate()} for space ${this._spaceKey.truncate()}`
1857
2043
  });
1858
- log8("started", void 0, {
1859
- F: __dxlog_file10,
2044
+ log10("started", void 0, {
2045
+ F: __dxlog_file12,
1860
2046
  L: 138,
1861
2047
  S: this,
1862
2048
  C: (f, a) => f(...a)
@@ -1868,15 +2054,15 @@ var SpaceProtocol = class {
1868
2054
  async stop() {
1869
2055
  await this.blobSync.close();
1870
2056
  if (this._connection) {
1871
- log8("stopping...", void 0, {
1872
- F: __dxlog_file10,
2057
+ log10("stopping...", void 0, {
2058
+ F: __dxlog_file12,
1873
2059
  L: 149,
1874
2060
  S: this,
1875
2061
  C: (f, a) => f(...a)
1876
2062
  });
1877
2063
  await this._connection.close();
1878
- log8("stopped", void 0, {
1879
- F: __dxlog_file10,
2064
+ log10("stopped", void 0, {
2065
+ F: __dxlog_file12,
1880
2066
  L: 151,
1881
2067
  S: this,
1882
2068
  C: (f, a) => f(...a)
@@ -1949,8 +2135,8 @@ var SpaceProtocolSession = class {
1949
2135
  provider: this._swarmIdentity.credentialProvider,
1950
2136
  verifier: this._swarmIdentity.credentialAuthenticator,
1951
2137
  onAuthSuccess: () => {
1952
- log8("Peer authenticated", void 0, {
1953
- F: __dxlog_file10,
2138
+ log10("Peer authenticated", void 0, {
2139
+ F: __dxlog_file12,
1954
2140
  L: 248,
1955
2141
  S: this,
1956
2142
  C: (f, a) => f(...a)
@@ -1967,8 +2153,8 @@ var SpaceProtocolSession = class {
1967
2153
  this._teleport.addExtension("dxos.mesh.teleport.blobsync", this._blobSync.createExtension());
1968
2154
  }
1969
2155
  async close() {
1970
- log8("close", void 0, {
1971
- F: __dxlog_file10,
2156
+ log10("close", void 0, {
2157
+ F: __dxlog_file12,
1972
2158
  L: 264,
1973
2159
  S: this,
1974
2160
  C: (f, a) => f(...a)
@@ -1990,7 +2176,7 @@ _ts_decorate6([
1990
2176
  import { synchronized as synchronized4, trackLeaks as trackLeaks3, Trigger as Trigger2 } from "@dxos/async";
1991
2177
  import { failUndefined as failUndefined2 } from "@dxos/debug";
1992
2178
  import { PublicKey as PublicKey7 } from "@dxos/keys";
1993
- import { log as log9 } from "@dxos/log";
2179
+ import { log as log11 } from "@dxos/log";
1994
2180
  import { trace as trace4 } from "@dxos/protocols";
1995
2181
  import { ComplexMap as ComplexMap5 } from "@dxos/util";
1996
2182
  function _ts_decorate7(decorators, target, key, desc) {
@@ -2003,7 +2189,7 @@ function _ts_decorate7(decorators, target, key, desc) {
2003
2189
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2004
2190
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2005
2191
  }
2006
- var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
2192
+ var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
2007
2193
  var SpaceManager = class {
2008
2194
  constructor({ feedStore, networkManager, metadataStore, snapshotStore, blobStore }) {
2009
2195
  this._spaces = new ComplexMap5(PublicKey7.hash);
@@ -2026,18 +2212,18 @@ var SpaceManager = class {
2026
2212
  ].map((space) => space.close()));
2027
2213
  }
2028
2214
  async constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, onDelegatedInvitationStatusChange, onMemberRolesChanged, memberKey }) {
2029
- log9.trace("dxos.echo.space-manager.construct-space", trace4.begin({
2215
+ log11.trace("dxos.echo.space-manager.construct-space", trace4.begin({
2030
2216
  id: this._instanceId
2031
2217
  }), {
2032
- F: __dxlog_file11,
2218
+ F: __dxlog_file13,
2033
2219
  L: 103,
2034
2220
  S: this,
2035
2221
  C: (f, a) => f(...a)
2036
2222
  });
2037
- log9("constructing space...", {
2223
+ log11("constructing space...", {
2038
2224
  spaceKey: metadata.genesisFeedKey
2039
2225
  }, {
2040
- F: __dxlog_file11,
2226
+ F: __dxlog_file13,
2041
2227
  L: 104,
2042
2228
  S: this,
2043
2229
  C: (f, a) => f(...a)
@@ -2067,10 +2253,10 @@ var SpaceManager = class {
2067
2253
  onMemberRolesChanged
2068
2254
  });
2069
2255
  this._spaces.set(space.key, space);
2070
- log9.trace("dxos.echo.space-manager.construct-space", trace4.end({
2256
+ log11.trace("dxos.echo.space-manager.construct-space", trace4.end({
2071
2257
  id: this._instanceId
2072
2258
  }), {
2073
- F: __dxlog_file11,
2259
+ F: __dxlog_file13,
2074
2260
  L: 135,
2075
2261
  S: this,
2076
2262
  C: (f, a) => f(...a)
@@ -2079,18 +2265,18 @@ var SpaceManager = class {
2079
2265
  }
2080
2266
  async requestSpaceAdmissionCredential(params) {
2081
2267
  const traceKey = "dxos.echo.space-manager.request-space-admission";
2082
- log9.trace(traceKey, trace4.begin({
2268
+ log11.trace(traceKey, trace4.begin({
2083
2269
  id: this._instanceId
2084
2270
  }), {
2085
- F: __dxlog_file11,
2271
+ F: __dxlog_file13,
2086
2272
  L: 141,
2087
2273
  S: this,
2088
2274
  C: (f, a) => f(...a)
2089
2275
  });
2090
- log9("requesting space admission credential...", {
2276
+ log11("requesting space admission credential...", {
2091
2277
  spaceKey: params.spaceKey
2092
2278
  }, {
2093
- F: __dxlog_file11,
2279
+ F: __dxlog_file13,
2094
2280
  L: 142,
2095
2281
  S: this,
2096
2282
  C: (f, a) => f(...a)
@@ -2114,21 +2300,21 @@ var SpaceManager = class {
2114
2300
  const credential = await onCredentialResolved.wait({
2115
2301
  timeout: params.timeout
2116
2302
  });
2117
- log9.trace(traceKey, trace4.end({
2303
+ log11.trace(traceKey, trace4.end({
2118
2304
  id: this._instanceId
2119
2305
  }), {
2120
- F: __dxlog_file11,
2306
+ F: __dxlog_file13,
2121
2307
  L: 165,
2122
2308
  S: this,
2123
2309
  C: (f, a) => f(...a)
2124
2310
  });
2125
2311
  return credential;
2126
2312
  } catch (err) {
2127
- log9.trace(traceKey, trace4.error({
2313
+ log11.trace(traceKey, trace4.error({
2128
2314
  id: this._instanceId,
2129
2315
  error: err
2130
2316
  }), {
2131
- F: __dxlog_file11,
2317
+ F: __dxlog_file13,
2132
2318
  L: 168,
2133
2319
  S: this,
2134
2320
  C: (f, a) => f(...a)
@@ -2156,6 +2342,7 @@ export {
2156
2342
  createMappedFeedWriter,
2157
2343
  SnapshotManager,
2158
2344
  SnapshotStore,
2345
+ DocumentsSynchronizer,
2159
2346
  DataServiceImpl,
2160
2347
  MetadataStore,
2161
2348
  hasInvitationExpired,
@@ -2176,4 +2363,4 @@ export {
2176
2363
  SpaceProtocolSession,
2177
2364
  SpaceManager
2178
2365
  };
2179
- //# sourceMappingURL=chunk-DMUP426Q.mjs.map
2366
+ //# sourceMappingURL=chunk-UJQ5VS5V.mjs.map