@dxos/echo-pipeline 0.6.2-main.d41f0d2 → 0.6.2-main.fb91371

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 (40) hide show
  1. package/dist/lib/browser/{chunk-SJUDZ3CQ.mjs → chunk-UJQ5VS5V.mjs} +7 -17
  2. package/dist/lib/browser/chunk-UJQ5VS5V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +57 -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-NLHNTXVQ.cjs → chunk-RH6TDRML.cjs} +10 -20
  8. package/dist/lib/node/chunk-RH6TDRML.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +79 -582
  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 +2 -5
  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 +1 -1
  21. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
  22. package/package.json +33 -33
  23. package/src/automerge/automerge-host.ts +6 -56
  24. package/src/automerge/automerge-repo.test.ts +124 -1
  25. package/src/automerge/echo-network-adapter.ts +1 -1
  26. package/src/automerge/index.ts +0 -2
  27. package/src/db-host/data-service.ts +3 -20
  28. package/src/db-host/documents-synchronizer.test.ts +1 -1
  29. package/src/db-host/documents-synchronizer.ts +1 -1
  30. package/dist/lib/browser/chunk-SJUDZ3CQ.mjs.map +0 -7
  31. package/dist/lib/node/chunk-NLHNTXVQ.cjs.map +0 -7
  32. package/dist/types/src/automerge/automerge-doc-loader.d.ts +0 -71
  33. package/dist/types/src/automerge/automerge-doc-loader.d.ts.map +0 -1
  34. package/dist/types/src/automerge/automerge-doc-loader.test.d.ts +0 -2
  35. package/dist/types/src/automerge/automerge-doc-loader.test.d.ts.map +0 -1
  36. package/dist/types/src/automerge/local-host-network-adapter.d.ts +0 -30
  37. package/dist/types/src/automerge/local-host-network-adapter.d.ts.map +0 -1
  38. package/src/automerge/automerge-doc-loader.test.ts +0 -103
  39. package/src/automerge/automerge-doc-loader.ts +0 -267
  40. package/src/automerge/local-host-network-adapter.ts +0 -115
@@ -26,14 +26,14 @@ import {
26
26
  mapTimeframeToFeedIndexes,
27
27
  startAfter,
28
28
  valueEncoding
29
- } from "./chunk-SJUDZ3CQ.mjs";
29
+ } from "./chunk-UJQ5VS5V.mjs";
30
30
 
31
31
  // packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts
32
32
  import { Event, asyncTimeout } from "@dxos/async";
33
- import { next as automerge, getBackend, getHeads, isAutomerge, save, equals as headsEquals } from "@dxos/automerge/automerge";
33
+ import { next as automerge, getBackend, getHeads, isAutomerge, equals as headsEquals, save } from "@dxos/automerge/automerge";
34
34
  import { Repo } from "@dxos/automerge/automerge-repo";
35
35
  import { Context, Resource as Resource2, cancelWithContext } from "@dxos/context";
36
- import { invariant as invariant3 } from "@dxos/invariant";
36
+ import { invariant as invariant2 } from "@dxos/invariant";
37
37
  import { PublicKey } from "@dxos/keys";
38
38
  import { log as log2 } from "@dxos/log";
39
39
  import { objectPointerCodec } from "@dxos/protocols";
@@ -106,7 +106,7 @@ var EchoNetworkAdapter = class extends NetworkAdapter {
106
106
  }
107
107
  async close() {
108
108
  if (this._lifecycleState === LifecycleState.CLOSED) {
109
- return;
109
+ return this;
110
110
  }
111
111
  for (const replicator of this._replicators) {
112
112
  await replicator.disconnect();
@@ -456,144 +456,6 @@ var encodingOptions = {
456
456
  };
457
457
  var isLevelDbNotFoundError = (err) => err.code === "LEVEL_NOT_FOUND";
458
458
 
459
- // packages/core/echo/echo-pipeline/src/automerge/local-host-network-adapter.ts
460
- import { Trigger as Trigger2 } from "@dxos/async";
461
- import { NetworkAdapter as NetworkAdapter2, cbor } from "@dxos/automerge/automerge-repo";
462
- import { Stream } from "@dxos/codec-protobuf";
463
- import { invariant as invariant2 } from "@dxos/invariant";
464
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/local-host-network-adapter.ts";
465
- var LocalHostNetworkAdapter = class extends NetworkAdapter2 {
466
- constructor() {
467
- super(...arguments);
468
- this._peers = /* @__PURE__ */ new Map();
469
- this._connected = new Trigger2();
470
- this._isConnected = false;
471
- }
472
- /**
473
- * Emits `ready` event. That signals to `Repo` that it can start using the adapter.
474
- */
475
- ready() {
476
- this.emit("ready", {
477
- network: this
478
- });
479
- }
480
- /**
481
- * Called by `Repo` to connect to the network.
482
- *
483
- * @param peerId Our peer Id.
484
- */
485
- connect(peerId) {
486
- this.peerId = peerId;
487
- this._isConnected = true;
488
- this._connected.wake();
489
- }
490
- send(message) {
491
- const peer = this._peers.get(message.targetId);
492
- invariant2(peer, "Peer not found.", {
493
- F: __dxlog_file2,
494
- L: 51,
495
- S: this,
496
- A: [
497
- "peer",
498
- "'Peer not found.'"
499
- ]
500
- });
501
- peer.send(message);
502
- }
503
- async close() {
504
- this._peers.forEach((peer) => peer.disconnect());
505
- this.emit("close");
506
- }
507
- disconnect() {
508
- }
509
- async whenConnected() {
510
- await this._connected.wait({
511
- timeout: 1e4
512
- });
513
- }
514
- syncRepo({ id, syncMessage }) {
515
- const peerId = this._getPeerId(id);
516
- return new Stream(({ next, close }) => {
517
- invariant2(!this._peers.has(peerId), "Peer already connected.", {
518
- F: __dxlog_file2,
519
- L: 73,
520
- S: this,
521
- A: [
522
- "!this._peers.has(peerId)",
523
- "'Peer already connected.'"
524
- ]
525
- });
526
- this._peers.set(peerId, {
527
- connected: true,
528
- send: (message) => {
529
- next({
530
- syncMessage: cbor.encode(message)
531
- });
532
- },
533
- disconnect: () => {
534
- this._peers.delete(peerId);
535
- close();
536
- this.emit("peer-disconnected", {
537
- peerId
538
- });
539
- }
540
- });
541
- invariant2(this._isConnected, void 0, {
542
- F: __dxlog_file2,
543
- L: 90,
544
- S: this,
545
- A: [
546
- "this._isConnected",
547
- ""
548
- ]
549
- });
550
- this.emit("peer-candidate", {
551
- peerMetadata: {},
552
- peerId
553
- });
554
- });
555
- }
556
- async sendSyncMessage({ id, syncMessage }) {
557
- invariant2(this._isConnected, void 0, {
558
- F: __dxlog_file2,
559
- L: 99,
560
- S: this,
561
- A: [
562
- "this._isConnected",
563
- ""
564
- ]
565
- });
566
- const message = cbor.decode(syncMessage);
567
- this.emit("message", message);
568
- }
569
- async getHostInfo() {
570
- invariant2(this._isConnected, void 0, {
571
- F: __dxlog_file2,
572
- L: 105,
573
- S: this,
574
- A: [
575
- "this._isConnected",
576
- ""
577
- ]
578
- });
579
- invariant2(this.peerId, "Peer id not set.", {
580
- F: __dxlog_file2,
581
- L: 106,
582
- S: this,
583
- A: [
584
- "this.peerId",
585
- "'Peer id not set.'"
586
- ]
587
- });
588
- return {
589
- peerId: this.peerId
590
- };
591
- }
592
- _getPeerId(id) {
593
- return id;
594
- }
595
- };
596
-
597
459
  // packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts
598
460
  function _ts_decorate2(decorators, target, key, desc) {
599
461
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -605,7 +467,7 @@ function _ts_decorate2(decorators, target, key, desc) {
605
467
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
606
468
  return c > 3 && r && Object.defineProperty(target, key, r), r;
607
469
  }
608
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts";
470
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts";
609
471
  var AutomergeHost = class extends Resource2 {
610
472
  constructor({ db, indexMetadataStore }) {
611
473
  super();
@@ -628,26 +490,20 @@ var AutomergeHost = class extends Resource2 {
628
490
  async _open() {
629
491
  this._peerId = `host-${PublicKey.random().toHex()}`;
630
492
  await this._storage.open?.();
631
- this._clientNetwork = new LocalHostNetworkAdapter();
632
493
  this._repo = new Repo({
633
494
  peerId: this._peerId,
634
495
  sharePolicy: this._sharePolicy.bind(this),
635
496
  storage: this._storage,
636
497
  network: [
637
- // Downstream client.
638
- this._clientNetwork,
639
498
  // Upstream swarm.
640
499
  this._echoNetworkAdapter
641
500
  ]
642
501
  });
643
- this._clientNetwork.ready();
644
502
  await this._echoNetworkAdapter.open();
645
- await this._clientNetwork.whenConnected();
646
503
  await this._echoNetworkAdapter.whenConnected();
647
504
  }
648
505
  async _close() {
649
506
  await this._storage.close?.();
650
- await this._clientNetwork.close();
651
507
  await this._echoNetworkAdapter.close();
652
508
  await this._ctx.dispose();
653
509
  }
@@ -709,8 +565,8 @@ var AutomergeHost = class extends Resource2 {
709
565
  return;
710
566
  }
711
567
  const handle = await this.loadDoc(Context.default(void 0, {
712
- F: __dxlog_file3,
713
- L: 207
568
+ F: __dxlog_file2,
569
+ L: 189
714
570
  }), documentId);
715
571
  await waitForHeads(handle, heads2);
716
572
  }) ?? []);
@@ -721,8 +577,8 @@ var AutomergeHost = class extends Resource2 {
721
577
  log2.info("re-indexing heads for document", {
722
578
  documentId
723
579
  }, {
724
- F: __dxlog_file3,
725
- L: 218,
580
+ F: __dxlog_file2,
581
+ L: 200,
726
582
  S: this,
727
583
  C: (f, a) => f(...a)
728
584
  });
@@ -737,17 +593,17 @@ var AutomergeHost = class extends Resource2 {
737
593
  log2.warn("document is not available locally, skipping", {
738
594
  documentId
739
595
  }, {
740
- F: __dxlog_file3,
741
- L: 222,
596
+ F: __dxlog_file2,
597
+ L: 204,
742
598
  S: this,
743
599
  C: (f, a) => f(...a)
744
600
  });
745
601
  continue;
746
602
  }
747
603
  const doc = handle.docSync();
748
- invariant3(doc, void 0, {
749
- F: __dxlog_file3,
750
- L: 227,
604
+ invariant2(doc, void 0, {
605
+ F: __dxlog_file2,
606
+ L: 209,
751
607
  S: this,
752
608
  A: [
753
609
  "doc",
@@ -760,8 +616,8 @@ var AutomergeHost = class extends Resource2 {
760
616
  await batch.write();
761
617
  }
762
618
  log2.info("done re-indexing heads", void 0, {
763
- F: __dxlog_file3,
764
- L: 234,
619
+ F: __dxlog_file2,
620
+ L: 216,
765
621
  S: this,
766
622
  C: (f, a) => f(...a)
767
623
  });
@@ -854,17 +710,8 @@ var AutomergeHost = class extends Resource2 {
854
710
  /**
855
711
  * Flush documents to disk.
856
712
  */
857
- async flush({ states } = {}) {
858
- if (states) {
859
- await Promise.all(states.map(async ({ heads, documentId }) => {
860
- if (!heads) {
861
- return;
862
- }
863
- const handle = this._repo.handles[documentId] ?? this._repo.find(documentId);
864
- await waitForHeads(handle, heads);
865
- }) ?? []);
866
- }
867
- await this._repo.flush(states?.map(({ documentId }) => documentId));
713
+ async flush({ documentIds } = {}) {
714
+ await this._repo.flush(documentIds);
868
715
  }
869
716
  async getHeads(documentId) {
870
717
  const handle = this._repo.handles[documentId];
@@ -878,24 +725,6 @@ var AutomergeHost = class extends Resource2 {
878
725
  return this._headsStore.getHeads(documentId);
879
726
  }
880
727
  }
881
- /**
882
- * Host <-> Client sync.
883
- */
884
- syncRepo(request) {
885
- return this._clientNetwork.syncRepo(request);
886
- }
887
- /**
888
- * Host <-> Client sync.
889
- */
890
- sendSyncMessage(request) {
891
- return this._clientNetwork.sendSyncMessage(request);
892
- }
893
- /**
894
- * Host <-> Client sync.
895
- */
896
- async getHostInfo() {
897
- return this._clientNetwork.getHostInfo();
898
- }
899
728
  };
900
729
  _ts_decorate2([
901
730
  trace.info()
@@ -941,351 +770,19 @@ var changeIsPresentInDoc = (doc, changeHash) => {
941
770
  return !!getBackend(doc).getChangeByHash(changeHash);
942
771
  };
943
772
 
944
- // packages/core/echo/echo-pipeline/src/automerge/automerge-doc-loader.ts
945
- import { Event as Event2 } from "@dxos/async";
946
- import { interpretAsDocumentId } from "@dxos/automerge/automerge-repo";
947
- import { cancelWithContext as cancelWithContext2 } from "@dxos/context";
948
- import { warnAfterTimeout } from "@dxos/debug";
949
- import { SpaceDocVersion } from "@dxos/echo-protocol";
950
- import { invariant as invariant4 } from "@dxos/invariant";
951
- import { log as log3 } from "@dxos/log";
952
- import { trace as trace2 } from "@dxos/tracing";
953
- function _ts_decorate3(decorators, target, key, desc) {
954
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
955
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
956
- r = Reflect.decorate(decorators, target, key, desc);
957
- else
958
- for (var i = decorators.length - 1; i >= 0; i--)
959
- if (d = decorators[i])
960
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
961
- return c > 3 && r && Object.defineProperty(target, key, r), r;
962
- }
963
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-doc-loader.ts";
964
- var AutomergeDocumentLoaderImpl = class {
965
- constructor(_spaceId, _repo, _spaceKey) {
966
- this._spaceId = _spaceId;
967
- this._repo = _repo;
968
- this._spaceKey = _spaceKey;
969
- this._spaceRootDocHandle = null;
970
- this._objectDocumentHandles = /* @__PURE__ */ new Map();
971
- this._objectsPendingDocumentLoad = /* @__PURE__ */ new Set();
972
- this.onObjectDocumentLoaded = new Event2();
973
- }
974
- getAllHandles() {
975
- return this._spaceRootDocHandle != null ? [
976
- this._spaceRootDocHandle,
977
- ...new Set(this._objectDocumentHandles.values())
978
- ] : [];
979
- }
980
- async loadSpaceRootDocHandle(ctx, spaceState) {
981
- if (this._spaceRootDocHandle != null) {
982
- return;
983
- }
984
- if (!spaceState.rootUrl) {
985
- throw new Error("Database opened with no rootUrl");
986
- }
987
- const existingDocHandle = await this._initDocHandle(ctx, spaceState.rootUrl);
988
- const doc = existingDocHandle.docSync();
989
- invariant4(doc, void 0, {
990
- F: __dxlog_file4,
991
- L: 84,
992
- S: this,
993
- A: [
994
- "doc",
995
- ""
996
- ]
997
- });
998
- invariant4(doc.version === SpaceDocVersion.CURRENT, void 0, {
999
- F: __dxlog_file4,
1000
- L: 85,
1001
- S: this,
1002
- A: [
1003
- "doc.version === SpaceDocVersion.CURRENT",
1004
- ""
1005
- ]
1006
- });
1007
- if (doc.access == null) {
1008
- this._initDocAccess(existingDocHandle);
1009
- }
1010
- this._spaceRootDocHandle = existingDocHandle;
1011
- }
1012
- loadObjectDocument(objectIdOrMany) {
1013
- const objectIds = Array.isArray(objectIdOrMany) ? objectIdOrMany : [
1014
- objectIdOrMany
1015
- ];
1016
- let hasUrlsToLoad = false;
1017
- const urlsToLoad = {};
1018
- for (const objectId of objectIds) {
1019
- invariant4(this._spaceRootDocHandle, void 0, {
1020
- F: __dxlog_file4,
1021
- L: 97,
1022
- S: this,
1023
- A: [
1024
- "this._spaceRootDocHandle",
1025
- ""
1026
- ]
1027
- });
1028
- if (this._objectDocumentHandles.has(objectId) || this._objectsPendingDocumentLoad.has(objectId)) {
1029
- continue;
1030
- }
1031
- const spaceRootDoc = this._spaceRootDocHandle.docSync();
1032
- invariant4(spaceRootDoc, void 0, {
1033
- F: __dxlog_file4,
1034
- L: 102,
1035
- S: this,
1036
- A: [
1037
- "spaceRootDoc",
1038
- ""
1039
- ]
1040
- });
1041
- const documentUrl = (spaceRootDoc.links ?? {})[objectId];
1042
- if (documentUrl == null) {
1043
- this._objectsPendingDocumentLoad.add(objectId);
1044
- log3.info("loading delayed until object links are initialized", {
1045
- objectId
1046
- }, {
1047
- F: __dxlog_file4,
1048
- L: 106,
1049
- S: this,
1050
- C: (f, a) => f(...a)
1051
- });
1052
- } else {
1053
- urlsToLoad[objectId] = documentUrl;
1054
- hasUrlsToLoad = true;
1055
- }
1056
- }
1057
- if (hasUrlsToLoad) {
1058
- this._loadLinkedObjects(urlsToLoad);
1059
- }
1060
- }
1061
- getObjectDocumentId(objectId) {
1062
- invariant4(this._spaceRootDocHandle, void 0, {
1063
- F: __dxlog_file4,
1064
- L: 118,
1065
- S: this,
1066
- A: [
1067
- "this._spaceRootDocHandle",
1068
- ""
1069
- ]
1070
- });
1071
- const spaceRootDoc = this._spaceRootDocHandle.docSync();
1072
- invariant4(spaceRootDoc, void 0, {
1073
- F: __dxlog_file4,
1074
- L: 120,
1075
- S: this,
1076
- A: [
1077
- "spaceRootDoc",
1078
- ""
1079
- ]
1080
- });
1081
- if (spaceRootDoc.objects?.[objectId]) {
1082
- return this._spaceRootDocHandle.documentId;
1083
- }
1084
- const documentUrl = (spaceRootDoc.links ?? {})[objectId];
1085
- return documentUrl && interpretAsDocumentId(documentUrl);
1086
- }
1087
- onObjectLinksUpdated(links) {
1088
- if (!links) {
1089
- return;
1090
- }
1091
- const linksAwaitingLoad = Object.entries(links).filter(([objectId]) => this._objectsPendingDocumentLoad.has(objectId));
1092
- this._loadLinkedObjects(Object.fromEntries(linksAwaitingLoad));
1093
- linksAwaitingLoad.forEach(([objectId]) => this._objectsPendingDocumentLoad.delete(objectId));
1094
- }
1095
- getSpaceRootDocHandle() {
1096
- invariant4(this._spaceRootDocHandle, void 0, {
1097
- F: __dxlog_file4,
1098
- L: 140,
1099
- S: this,
1100
- A: [
1101
- "this._spaceRootDocHandle",
1102
- ""
1103
- ]
1104
- });
1105
- return this._spaceRootDocHandle;
1106
- }
1107
- createDocumentForObject(objectId) {
1108
- invariant4(this._spaceRootDocHandle, void 0, {
1109
- F: __dxlog_file4,
1110
- L: 145,
1111
- S: this,
1112
- A: [
1113
- "this._spaceRootDocHandle",
1114
- ""
1115
- ]
1116
- });
1117
- const spaceDocHandle = this._repo.create({
1118
- version: SpaceDocVersion.CURRENT
1119
- });
1120
- this._initDocAccess(spaceDocHandle);
1121
- this.onObjectBoundToDocument(spaceDocHandle, objectId);
1122
- this._spaceRootDocHandle.change((newDoc) => {
1123
- newDoc.links ??= {};
1124
- newDoc.links[objectId] = spaceDocHandle.url;
1125
- });
1126
- return spaceDocHandle;
1127
- }
1128
- onObjectBoundToDocument(handle, objectId) {
1129
- this._objectDocumentHandles.set(objectId, handle);
1130
- }
1131
- clearHandleReferences() {
1132
- const objectsWithHandles = [
1133
- ...this._objectDocumentHandles.keys()
1134
- ];
1135
- this._objectDocumentHandles.clear();
1136
- this._spaceRootDocHandle = null;
1137
- return objectsWithHandles;
1138
- }
1139
- _loadLinkedObjects(links) {
1140
- if (!links) {
1141
- return;
1142
- }
1143
- for (const [objectId, automergeUrl] of Object.entries(links)) {
1144
- const logMeta = {
1145
- objectId,
1146
- automergeUrl
1147
- };
1148
- const objectDocumentHandle = this._objectDocumentHandles.get(objectId);
1149
- if (objectDocumentHandle != null && objectDocumentHandle.url !== automergeUrl) {
1150
- log3.warn("object already inlined in a different document, ignoring the link", {
1151
- ...logMeta,
1152
- actualDocumentUrl: objectDocumentHandle.url
1153
- }, {
1154
- F: __dxlog_file4,
1155
- L: 177,
1156
- S: this,
1157
- C: (f, a) => f(...a)
1158
- });
1159
- continue;
1160
- }
1161
- if (objectDocumentHandle?.url === automergeUrl) {
1162
- log3.warn("object document was already loaded", logMeta, {
1163
- F: __dxlog_file4,
1164
- L: 184,
1165
- S: this,
1166
- C: (f, a) => f(...a)
1167
- });
1168
- continue;
1169
- }
1170
- const handle = this._repo.find(automergeUrl);
1171
- log3.debug("document loading triggered", logMeta, {
1172
- F: __dxlog_file4,
1173
- L: 188,
1174
- S: this,
1175
- C: (f, a) => f(...a)
1176
- });
1177
- this._objectDocumentHandles.set(objectId, handle);
1178
- void this._createObjectOnDocumentLoad(handle, objectId);
1179
- }
1180
- }
1181
- async _initDocHandle(ctx, url) {
1182
- const docHandle = this._repo.find(url);
1183
- while (true) {
1184
- try {
1185
- await warnAfterTimeout(5e3, "Automerge root doc load timeout (CoreDatabase)", async () => {
1186
- await cancelWithContext2(ctx, docHandle.whenReady());
1187
- });
1188
- break;
1189
- } catch (err) {
1190
- if (`${err}`.includes("Timeout")) {
1191
- log3.info("wraparound", {
1192
- id: docHandle.documentId,
1193
- state: docHandle.state
1194
- }, {
1195
- F: __dxlog_file4,
1196
- L: 204,
1197
- S: this,
1198
- C: (f, a) => f(...a)
1199
- });
1200
- continue;
1201
- }
1202
- throw err;
1203
- }
1204
- }
1205
- if (docHandle.state === "unavailable") {
1206
- throw new Error("Automerge document is unavailable");
1207
- }
1208
- return docHandle;
1209
- }
1210
- _initDocAccess(handle) {
1211
- handle.change((newDoc) => {
1212
- newDoc.access ??= {
1213
- spaceKey: this._spaceKey.toHex()
1214
- };
1215
- newDoc.access.spaceKey = this._spaceKey.toHex();
1216
- });
1217
- }
1218
- async _createObjectOnDocumentLoad(handle, objectId) {
1219
- try {
1220
- await handle.whenReady();
1221
- const logMeta = {
1222
- objectId,
1223
- docUrl: handle.url
1224
- };
1225
- if (this.onObjectDocumentLoaded.listenerCount() === 0) {
1226
- log3.info("document loaded after all listeners were removed", logMeta, {
1227
- F: __dxlog_file4,
1228
- L: 231,
1229
- S: this,
1230
- C: (f, a) => f(...a)
1231
- });
1232
- return;
1233
- }
1234
- const objectDocHandle = this._objectDocumentHandles.get(objectId);
1235
- if (objectDocHandle?.url !== handle.url) {
1236
- log3.warn("object was rebound while a document was loading, discarding handle", logMeta, {
1237
- F: __dxlog_file4,
1238
- L: 236,
1239
- S: this,
1240
- C: (f, a) => f(...a)
1241
- });
1242
- return;
1243
- }
1244
- this.onObjectDocumentLoaded.emit({
1245
- handle,
1246
- objectId
1247
- });
1248
- } catch (err) {
1249
- const shouldRetryLoading = this.onObjectDocumentLoaded.listenerCount() > 0;
1250
- log3.warn("failed to load a document", {
1251
- objectId,
1252
- automergeUrl: handle.url,
1253
- retryLoading: shouldRetryLoading,
1254
- err
1255
- }, {
1256
- F: __dxlog_file4,
1257
- L: 242,
1258
- S: this,
1259
- C: (f, a) => f(...a)
1260
- });
1261
- if (shouldRetryLoading) {
1262
- await this._createObjectOnDocumentLoad(handle, objectId);
1263
- }
1264
- }
1265
- }
1266
- };
1267
- _ts_decorate3([
1268
- trace2.span({
1269
- showInBrowserTimeline: true
1270
- })
1271
- ], AutomergeDocumentLoaderImpl.prototype, "loadSpaceRootDocHandle", null);
1272
- AutomergeDocumentLoaderImpl = _ts_decorate3([
1273
- trace2.resource()
1274
- ], AutomergeDocumentLoaderImpl);
1275
-
1276
773
  // packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts
1277
- import { invariant as invariant6 } from "@dxos/invariant";
774
+ import { invariant as invariant4 } from "@dxos/invariant";
1278
775
  import { PublicKey as PublicKey2 } from "@dxos/keys";
1279
- import { log as log5 } from "@dxos/log";
776
+ import { log as log4 } from "@dxos/log";
1280
777
  import { ComplexMap, ComplexSet, defaultMap } from "@dxos/util";
1281
778
 
1282
779
  // packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts
1283
- import { cbor as cbor2 } from "@dxos/automerge/automerge-repo";
780
+ import { cbor } from "@dxos/automerge/automerge-repo";
1284
781
  import { Resource as Resource3 } from "@dxos/context";
1285
- import { invariant as invariant5 } from "@dxos/invariant";
1286
- import { log as log4 } from "@dxos/log";
782
+ import { invariant as invariant3 } from "@dxos/invariant";
783
+ import { log as log3 } from "@dxos/log";
1287
784
  import { AutomergeReplicator } from "@dxos/teleport-extension-automerge-replicator";
1288
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts";
785
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts";
1289
786
  var DEFAULT_FACTORY = (params) => new AutomergeReplicator(...params);
1290
787
  var MeshReplicatorConnection = class extends Resource3 {
1291
788
  constructor(_params) {
@@ -1303,8 +800,8 @@ var MeshReplicatorConnection = class extends Resource3 {
1303
800
  });
1304
801
  this.writable = new WritableStream({
1305
802
  write: async (message, controller) => {
1306
- invariant5(this._isEnabled, "Writing to a disabled connection", {
1307
- F: __dxlog_file5,
803
+ invariant3(this._isEnabled, "Writing to a disabled connection", {
804
+ F: __dxlog_file3,
1308
805
  L: 47,
1309
806
  S: this,
1310
807
  A: [
@@ -1314,7 +811,7 @@ var MeshReplicatorConnection = class extends Resource3 {
1314
811
  });
1315
812
  try {
1316
813
  await this.replicatorExtension.sendSyncMessage({
1317
- payload: cbor2.encode(message)
814
+ payload: cbor.encode(message)
1318
815
  });
1319
816
  } catch (err) {
1320
817
  controller.error(err);
@@ -1331,12 +828,12 @@ var MeshReplicatorConnection = class extends Resource3 {
1331
828
  onStartReplication: async (info, remotePeerId) => {
1332
829
  this.remoteDeviceKey = remotePeerId;
1333
830
  this._remotePeerId = info.id;
1334
- log4("onStartReplication", {
831
+ log3("onStartReplication", {
1335
832
  id: info.id,
1336
833
  thisPeerId: this.peerId,
1337
834
  remotePeerId: remotePeerId.toHex()
1338
835
  }, {
1339
- F: __dxlog_file5,
836
+ F: __dxlog_file3,
1340
837
  L: 81,
1341
838
  S: this,
1342
839
  C: (f, a) => f(...a)
@@ -1347,7 +844,7 @@ var MeshReplicatorConnection = class extends Resource3 {
1347
844
  if (!this._isEnabled) {
1348
845
  return;
1349
846
  }
1350
- const message = cbor2.decode(payload);
847
+ const message = cbor.decode(payload);
1351
848
  readableStreamController.enqueue(message);
1352
849
  },
1353
850
  onClose: async () => {
@@ -1362,8 +859,8 @@ var MeshReplicatorConnection = class extends Resource3 {
1362
859
  }
1363
860
  }
1364
861
  get peerId() {
1365
- invariant5(this._remotePeerId != null, "Remote peer has not connected yet.", {
1366
- F: __dxlog_file5,
862
+ invariant3(this._remotePeerId != null, "Remote peer has not connected yet.", {
863
+ F: __dxlog_file3,
1367
864
  L: 107,
1368
865
  S: this,
1369
866
  A: [
@@ -1381,8 +878,8 @@ var MeshReplicatorConnection = class extends Resource3 {
1381
878
  * Call after the remote peer has connected.
1382
879
  */
1383
880
  enable() {
1384
- invariant5(this._remotePeerId != null, "Remote peer has not connected yet.", {
1385
- F: __dxlog_file5,
881
+ invariant3(this._remotePeerId != null, "Remote peer has not connected yet.", {
882
+ F: __dxlog_file3,
1386
883
  L: 120,
1387
884
  S: this,
1388
885
  A: [
@@ -1401,7 +898,7 @@ var MeshReplicatorConnection = class extends Resource3 {
1401
898
  };
1402
899
 
1403
900
  // packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts
1404
- var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts";
901
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts";
1405
902
  var MeshEchoReplicator = class {
1406
903
  constructor() {
1407
904
  this._connections = /* @__PURE__ */ new Set();
@@ -1427,8 +924,8 @@ var MeshEchoReplicator = class {
1427
924
  this._context = null;
1428
925
  }
1429
926
  createExtension(extensionFactory) {
1430
- invariant6(this._context, void 0, {
1431
- F: __dxlog_file6,
927
+ invariant4(this._context, void 0, {
928
+ F: __dxlog_file4,
1432
929
  L: 51,
1433
930
  S: this,
1434
931
  A: [
@@ -1440,16 +937,16 @@ var MeshEchoReplicator = class {
1440
937
  ownPeerId: this._context.peerId,
1441
938
  replicatorFactory: extensionFactory,
1442
939
  onRemoteConnected: async () => {
1443
- log5("onRemoteConnected", {
940
+ log4("onRemoteConnected", {
1444
941
  peerId: connection.peerId
1445
942
  }, {
1446
- F: __dxlog_file6,
943
+ F: __dxlog_file4,
1447
944
  L: 57,
1448
945
  S: this,
1449
946
  C: (f, a) => f(...a)
1450
947
  });
1451
- invariant6(this._context, void 0, {
1452
- F: __dxlog_file6,
948
+ invariant4(this._context, void 0, {
949
+ F: __dxlog_file4,
1453
950
  L: 58,
1454
951
  S: this,
1455
952
  A: [
@@ -1466,10 +963,10 @@ var MeshEchoReplicator = class {
1466
963
  }
1467
964
  },
1468
965
  onRemoteDisconnected: async () => {
1469
- log5("onRemoteDisconnected", {
966
+ log4("onRemoteDisconnected", {
1470
967
  peerId: connection.peerId
1471
968
  }, {
1472
- F: __dxlog_file6,
969
+ F: __dxlog_file4,
1473
970
  L: 69,
1474
971
  S: this,
1475
972
  C: (f, a) => f(...a)
@@ -1480,17 +977,17 @@ var MeshEchoReplicator = class {
1480
977
  this._connections.delete(connection);
1481
978
  },
1482
979
  shouldAdvertise: async (params) => {
1483
- log5("shouldAdvertise", {
980
+ log4("shouldAdvertise", {
1484
981
  peerId: connection.peerId,
1485
982
  documentId: params.documentId
1486
983
  }, {
1487
- F: __dxlog_file6,
984
+ F: __dxlog_file4,
1488
985
  L: 76,
1489
986
  S: this,
1490
987
  C: (f, a) => f(...a)
1491
988
  });
1492
- invariant6(this._context, void 0, {
1493
- F: __dxlog_file6,
989
+ invariant4(this._context, void 0, {
990
+ F: __dxlog_file4,
1494
991
  L: 77,
1495
992
  S: this,
1496
993
  A: [
@@ -1501,11 +998,11 @@ var MeshEchoReplicator = class {
1501
998
  try {
1502
999
  const spaceKey = await this._context.getContainingSpaceForDocument(params.documentId);
1503
1000
  if (!spaceKey) {
1504
- log5("space key not found for share policy check", {
1001
+ log4("space key not found for share policy check", {
1505
1002
  peerId: connection.peerId,
1506
1003
  documentId: params.documentId
1507
1004
  }, {
1508
- F: __dxlog_file6,
1005
+ F: __dxlog_file4,
1509
1006
  L: 81,
1510
1007
  S: this,
1511
1008
  C: (f, a) => f(...a)
@@ -1514,11 +1011,11 @@ var MeshEchoReplicator = class {
1514
1011
  }
1515
1012
  const authorizedDevices = this._authorizedDevices.get(spaceKey);
1516
1013
  if (!connection.remoteDeviceKey) {
1517
- log5("device key not found for share policy check", {
1014
+ log4("device key not found for share policy check", {
1518
1015
  peerId: connection.peerId,
1519
1016
  documentId: params.documentId
1520
1017
  }, {
1521
- F: __dxlog_file6,
1018
+ F: __dxlog_file4,
1522
1019
  L: 91,
1523
1020
  S: this,
1524
1021
  C: (f, a) => f(...a)
@@ -1526,7 +1023,7 @@ var MeshEchoReplicator = class {
1526
1023
  return false;
1527
1024
  }
1528
1025
  const isAuthorized = authorizedDevices?.has(connection.remoteDeviceKey) ?? false;
1529
- log5("share policy check", {
1026
+ log4("share policy check", {
1530
1027
  localPeer: this._context.peerId,
1531
1028
  remotePeer: connection.peerId,
1532
1029
  documentId: params.documentId,
@@ -1534,15 +1031,15 @@ var MeshEchoReplicator = class {
1534
1031
  spaceKey,
1535
1032
  isAuthorized
1536
1033
  }, {
1537
- F: __dxlog_file6,
1034
+ F: __dxlog_file4,
1538
1035
  L: 99,
1539
1036
  S: this,
1540
1037
  C: (f, a) => f(...a)
1541
1038
  });
1542
1039
  return isAuthorized;
1543
1040
  } catch (err) {
1544
- log5.catch(err, void 0, {
1545
- F: __dxlog_file6,
1041
+ log4.catch(err, void 0, {
1042
+ F: __dxlog_file4,
1546
1043
  L: 109,
1547
1044
  S: this,
1548
1045
  C: (f, a) => f(...a)
@@ -1555,11 +1052,11 @@ var MeshEchoReplicator = class {
1555
1052
  return connection.replicatorExtension;
1556
1053
  }
1557
1054
  authorizeDevice(spaceKey, deviceKey) {
1558
- log5("authorizeDevice", {
1055
+ log4("authorizeDevice", {
1559
1056
  spaceKey,
1560
1057
  deviceKey
1561
1058
  }, {
1562
- F: __dxlog_file6,
1059
+ F: __dxlog_file4,
1563
1060
  L: 120,
1564
1061
  S: this,
1565
1062
  C: (f, a) => f(...a)
@@ -1577,14 +1074,12 @@ var MeshEchoReplicator = class {
1577
1074
  export {
1578
1075
  AuthExtension,
1579
1076
  AuthStatus,
1580
- AutomergeDocumentLoaderImpl,
1581
1077
  AutomergeHost,
1582
1078
  CredentialRetrieverExtension,
1583
1079
  CredentialServerExtension,
1584
1080
  DataServiceImpl,
1585
1081
  DocumentsSynchronizer,
1586
1082
  LevelDBStorageAdapter,
1587
- LocalHostNetworkAdapter,
1588
1083
  MOCK_AUTH_PROVIDER,
1589
1084
  MOCK_AUTH_VERIFIER,
1590
1085
  MeshEchoReplicator,