@dxos/echo-pipeline 0.3.9-main.b676668 → 0.3.9-main.b779a0a

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-MPEQ7BV3.mjs → chunk-T627FAUD.mjs} +215 -41
  2. package/dist/lib/browser/chunk-T627FAUD.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +7 -2
  6. package/dist/lib/browser/testing/index.mjs.map +3 -3
  7. package/dist/lib/node/{chunk-YJAADRTG.cjs → chunk-XWUUSV4Y.cjs} +209 -43
  8. package/dist/lib/node/chunk-XWUUSV4Y.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +27 -25
  10. package/dist/lib/node/index.cjs.map +2 -2
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/testing/index.cjs +18 -14
  13. package/dist/lib/node/testing/index.cjs.map +3 -3
  14. package/dist/types/src/automerge/automerge-host.d.ts +15 -0
  15. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -0
  16. package/dist/types/src/automerge/automerge-host.test.d.ts +2 -0
  17. package/dist/types/src/automerge/automerge-host.test.d.ts.map +1 -0
  18. package/dist/types/src/automerge/index.d.ts +2 -0
  19. package/dist/types/src/automerge/index.d.ts.map +1 -0
  20. package/dist/types/src/db-host/data-service.d.ts +3 -1
  21. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  22. package/dist/types/src/index.d.ts +1 -0
  23. package/dist/types/src/index.d.ts.map +1 -1
  24. package/dist/types/src/space/data-pipeline.d.ts +4 -0
  25. package/dist/types/src/space/data-pipeline.d.ts.map +1 -1
  26. package/dist/types/src/space/space-protocol.d.ts +2 -1
  27. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  28. package/dist/types/src/testing/util.d.ts.map +1 -1
  29. package/package.json +32 -31
  30. package/src/automerge/automerge-host.test.ts +42 -0
  31. package/src/automerge/automerge-host.ts +212 -0
  32. package/src/automerge/index.ts +5 -0
  33. package/src/db-host/data-service.ts +5 -1
  34. package/src/index.ts +1 -0
  35. package/src/space/data-pipeline.ts +10 -0
  36. package/src/space/space-protocol.ts +6 -3
  37. package/src/testing/util.ts +4 -1
  38. package/src/tests/database.test.ts +4 -1
  39. package/dist/lib/browser/chunk-MPEQ7BV3.mjs.map +0 -7
  40. package/dist/lib/node/chunk-YJAADRTG.cjs.map +0 -7
@@ -1,5 +1,12 @@
1
1
  import "@dxos/node-std/globals";
2
2
 
3
+ // inject-globals:@inject-globals
4
+ import {
5
+ global,
6
+ Buffer,
7
+ process
8
+ } from "@dxos/node-std/inject-globals";
9
+
3
10
  // packages/core/echo/echo-pipeline/src/common/codec.ts
4
11
  import { createCodecEncoding } from "@dxos/hypercore";
5
12
  import { schema } from "@dxos/protocols";
@@ -381,13 +388,13 @@ var DataServiceSubscriptions = class {
381
388
  spaceKey
382
389
  }, {
383
390
  F: __dxlog_file3,
384
- L: 33,
391
+ L: 34,
385
392
  S: this,
386
393
  C: (f, a) => f(...a)
387
394
  });
388
395
  invariant3(!this._spaces.has(spaceKey), void 0, {
389
396
  F: __dxlog_file3,
390
- L: 34,
397
+ L: 35,
391
398
  S: this,
392
399
  A: [
393
400
  "!this._spaces.has(spaceKey)",
@@ -402,7 +409,7 @@ var DataServiceSubscriptions = class {
402
409
  spaceKey
403
410
  }, {
404
411
  F: __dxlog_file3,
405
- L: 40,
412
+ L: 41,
406
413
  S: this,
407
414
  C: (f, a) => f(...a)
408
415
  });
@@ -415,13 +422,14 @@ var DataServiceSubscriptions = class {
415
422
  }
416
423
  };
417
424
  var DataServiceImpl = class {
418
- constructor(_subscriptions) {
425
+ constructor(_subscriptions, _automergeHost) {
419
426
  this._subscriptions = _subscriptions;
427
+ this._automergeHost = _automergeHost;
420
428
  }
421
429
  subscribe(request) {
422
430
  invariant3(request.spaceKey, void 0, {
423
431
  F: __dxlog_file3,
424
- L: 59,
432
+ L: 63,
425
433
  S: this,
426
434
  A: [
427
435
  "request.spaceKey",
@@ -434,7 +442,7 @@ var DataServiceImpl = class {
434
442
  write(request) {
435
443
  invariant3(request.spaceKey, void 0, {
436
444
  F: __dxlog_file3,
437
- L: 66,
445
+ L: 70,
438
446
  S: this,
439
447
  A: [
440
448
  "request.spaceKey",
@@ -443,7 +451,7 @@ var DataServiceImpl = class {
443
451
  });
444
452
  invariant3(request.batch, void 0, {
445
453
  F: __dxlog_file3,
446
- L: 67,
454
+ L: 71,
447
455
  S: this,
448
456
  A: [
449
457
  "request.batch",
@@ -456,7 +464,7 @@ var DataServiceImpl = class {
456
464
  flush(request) {
457
465
  invariant3(request.spaceKey, void 0, {
458
466
  F: __dxlog_file3,
459
- L: 74,
467
+ L: 78,
460
468
  S: this,
461
469
  A: [
462
470
  "request.spaceKey",
@@ -1517,7 +1525,7 @@ var DataPipeline = class DataPipeline2 {
1517
1525
  write: (data, options) => {
1518
1526
  invariant8(this._pipeline, "Pipeline is not initialized.", {
1519
1527
  F: __dxlog_file9,
1520
- L: 159,
1528
+ L: 164,
1521
1529
  S: this,
1522
1530
  A: [
1523
1531
  "this._pipeline",
@@ -1526,7 +1534,7 @@ var DataPipeline = class DataPipeline2 {
1526
1534
  });
1527
1535
  invariant8(this.currentEpoch, "Epoch is not initialized.", {
1528
1536
  F: __dxlog_file9,
1529
- L: 160,
1537
+ L: 165,
1530
1538
  S: this,
1531
1539
  A: [
1532
1540
  "this.currentEpoch",
@@ -1552,7 +1560,7 @@ var DataPipeline = class DataPipeline2 {
1552
1560
  }
1553
1561
  log8("close", void 0, {
1554
1562
  F: __dxlog_file9,
1555
- L: 184,
1563
+ L: 189,
1556
1564
  S: this,
1557
1565
  C: (f, a) => f(...a)
1558
1566
  });
@@ -1567,7 +1575,7 @@ var DataPipeline = class DataPipeline2 {
1567
1575
  } catch (err) {
1568
1576
  log8.catch(err, void 0, {
1569
1577
  F: __dxlog_file9,
1570
- L: 197,
1578
+ L: 202,
1571
1579
  S: this,
1572
1580
  C: (f, a) => f(...a)
1573
1581
  });
@@ -1592,7 +1600,7 @@ var DataPipeline = class DataPipeline2 {
1592
1600
  let messageCounter = 0;
1593
1601
  invariant8(this._pipeline, "Pipeline is not initialized.", {
1594
1602
  F: __dxlog_file9,
1595
- L: 223,
1603
+ L: 228,
1596
1604
  S: this,
1597
1605
  A: [
1598
1606
  "this._pipeline",
@@ -1608,7 +1616,7 @@ var DataPipeline = class DataPipeline2 {
1608
1616
  seq
1609
1617
  }, {
1610
1618
  F: __dxlog_file9,
1611
- L: 229,
1619
+ L: 234,
1612
1620
  S: this,
1613
1621
  C: (f, a) => f(...a)
1614
1622
  });
@@ -1620,7 +1628,7 @@ var DataPipeline = class DataPipeline2 {
1620
1628
  feedKey
1621
1629
  }, {
1622
1630
  F: __dxlog_file9,
1623
- L: 235,
1631
+ L: 240,
1624
1632
  S: this,
1625
1633
  C: (f, a) => f(...a)
1626
1634
  });
@@ -1643,7 +1651,7 @@ var DataPipeline = class DataPipeline2 {
1643
1651
  spaceKey: this._params.spaceKey.toHex()
1644
1652
  }, {
1645
1653
  F: __dxlog_file9,
1646
- L: 252,
1654
+ L: 257,
1647
1655
  S: this,
1648
1656
  C: (f, a) => f(...a)
1649
1657
  });
@@ -1652,7 +1660,7 @@ var DataPipeline = class DataPipeline2 {
1652
1660
  } catch (err) {
1653
1661
  log8.catch(err, void 0, {
1654
1662
  F: __dxlog_file9,
1655
- L: 262,
1663
+ L: 267,
1656
1664
  S: this,
1657
1665
  C: (f, a) => f(...a)
1658
1666
  });
@@ -1667,7 +1675,7 @@ var DataPipeline = class DataPipeline2 {
1667
1675
  _createSnapshot() {
1668
1676
  invariant8(this.databaseHost, "Database backend is not initialized.", {
1669
1677
  F: __dxlog_file9,
1670
- L: 276,
1678
+ L: 281,
1671
1679
  S: this,
1672
1680
  A: [
1673
1681
  "this.databaseHost",
@@ -1696,7 +1704,7 @@ var DataPipeline = class DataPipeline2 {
1696
1704
  } catch (err) {
1697
1705
  log8.warn("Failed to cache properties", err, {
1698
1706
  F: __dxlog_file9,
1699
- L: 305,
1707
+ L: 310,
1700
1708
  S: this,
1701
1709
  C: (f, a) => f(...a)
1702
1710
  });
@@ -1725,14 +1733,14 @@ var DataPipeline = class DataPipeline2 {
1725
1733
  if (err instanceof CancelledError) {
1726
1734
  log8("Epoch processing cancelled.", void 0, {
1727
1735
  F: __dxlog_file9,
1728
- L: 341,
1736
+ L: 346,
1729
1737
  S: this,
1730
1738
  C: (f, a) => f(...a)
1731
1739
  });
1732
1740
  } else {
1733
1741
  log8.catch(err, void 0, {
1734
1742
  F: __dxlog_file9,
1735
- L: 343,
1743
+ L: 348,
1736
1744
  S: this,
1737
1745
  C: (f, a) => f(...a)
1738
1746
  });
@@ -1745,6 +1753,9 @@ var DataPipeline = class DataPipeline2 {
1745
1753
  return;
1746
1754
  }
1747
1755
  await this._processEpoch(ctx, epoch.subject.assertion);
1756
+ if (epoch.subject.assertion.snapshotCid === void 0) {
1757
+ epoch.subject.assertion.snapshotCid = this.appliedEpoch?.subject.assertion.snapshotCid;
1758
+ }
1748
1759
  this.appliedEpoch = epoch;
1749
1760
  this.onNewEpoch.emit(epoch);
1750
1761
  });
@@ -1752,7 +1763,7 @@ var DataPipeline = class DataPipeline2 {
1752
1763
  async _processEpoch(ctx, epoch) {
1753
1764
  invariant8(this._isOpen, "Space is closed.", {
1754
1765
  F: __dxlog_file9,
1755
- L: 362,
1766
+ L: 372,
1756
1767
  S: this,
1757
1768
  A: [
1758
1769
  "this._isOpen",
@@ -1761,7 +1772,7 @@ var DataPipeline = class DataPipeline2 {
1761
1772
  });
1762
1773
  invariant8(this._pipeline, void 0, {
1763
1774
  F: __dxlog_file9,
1764
- L: 363,
1775
+ L: 373,
1765
1776
  S: this,
1766
1777
  A: [
1767
1778
  "this._pipeline",
@@ -1773,7 +1784,7 @@ var DataPipeline = class DataPipeline2 {
1773
1784
  epoch: omit(epoch, "proof")
1774
1785
  }, {
1775
1786
  F: __dxlog_file9,
1776
- L: 366,
1787
+ L: 376,
1777
1788
  S: this,
1778
1789
  C: (f, a) => f(...a)
1779
1790
  });
@@ -1783,7 +1794,7 @@ var DataPipeline = class DataPipeline2 {
1783
1794
  }
1784
1795
  log8("restarting pipeline from epoch", void 0, {
1785
1796
  F: __dxlog_file9,
1786
- L: 372,
1797
+ L: 382,
1787
1798
  S: this,
1788
1799
  C: (f, a) => f(...a)
1789
1800
  });
@@ -1794,7 +1805,7 @@ var DataPipeline = class DataPipeline2 {
1794
1805
  async waitUntilTimeframe(timeframe) {
1795
1806
  invariant8(this._pipeline, "Pipeline is not initialized.", {
1796
1807
  F: __dxlog_file9,
1797
- L: 379,
1808
+ L: 389,
1798
1809
  S: this,
1799
1810
  A: [
1800
1811
  "this._pipeline",
@@ -1806,7 +1817,7 @@ var DataPipeline = class DataPipeline2 {
1806
1817
  async createEpoch() {
1807
1818
  invariant8(this._pipeline, void 0, {
1808
1819
  F: __dxlog_file9,
1809
- L: 385,
1820
+ L: 395,
1810
1821
  S: this,
1811
1822
  A: [
1812
1823
  "this._pipeline",
@@ -1815,7 +1826,7 @@ var DataPipeline = class DataPipeline2 {
1815
1826
  });
1816
1827
  invariant8(this.currentEpoch, void 0, {
1817
1828
  F: __dxlog_file9,
1818
- L: 386,
1829
+ L: 396,
1819
1830
  S: this,
1820
1831
  A: [
1821
1832
  "this.currentEpoch",
@@ -1846,7 +1857,7 @@ var DataPipeline = class DataPipeline2 {
1846
1857
  } catch (err) {
1847
1858
  log8.catch(err, void 0, {
1848
1859
  F: __dxlog_file9,
1849
- L: 416,
1860
+ L: 426,
1850
1861
  S: this,
1851
1862
  C: (f, a) => f(...a)
1852
1863
  });
@@ -2443,6 +2454,7 @@ var SpaceProtocol = class {
2443
2454
  constructor({ topic, swarmIdentity, networkManager, onSessionAuth, onAuthFailure, blobStore }) {
2444
2455
  this._feeds = /* @__PURE__ */ new Set();
2445
2456
  this._sessions = new ComplexMap5(PublicKey6.hash);
2457
+ this._spaceKey = topic;
2446
2458
  this._networkManager = networkManager;
2447
2459
  this._swarmIdentity = swarmIdentity;
2448
2460
  this._onSessionAuth = onSessionAuth;
@@ -2467,7 +2479,7 @@ var SpaceProtocol = class {
2467
2479
  key: feed.key
2468
2480
  }, {
2469
2481
  F: __dxlog_file12,
2470
- L: 96,
2482
+ L: 99,
2471
2483
  S: this,
2472
2484
  C: (f, a) => f(...a)
2473
2485
  });
@@ -2490,7 +2502,7 @@ var SpaceProtocol = class {
2490
2502
  await this.blobSync.open();
2491
2503
  log11("starting...", void 0, {
2492
2504
  F: __dxlog_file12,
2493
- L: 122,
2505
+ L: 125,
2494
2506
  S: this,
2495
2507
  C: (f, a) => f(...a)
2496
2508
  });
@@ -2500,11 +2512,11 @@ var SpaceProtocol = class {
2500
2512
  peerId: this._swarmIdentity.peerKey,
2501
2513
  topic,
2502
2514
  topology: new MMSTTopology(topologyConfig),
2503
- label: `space swarm ${topic.truncate()}`
2515
+ label: `swarm ${topic.truncate()} for space ${this._spaceKey.truncate()}`
2504
2516
  });
2505
2517
  log11("started", void 0, {
2506
2518
  F: __dxlog_file12,
2507
- L: 132,
2519
+ L: 135,
2508
2520
  S: this,
2509
2521
  C: (f, a) => f(...a)
2510
2522
  });
@@ -2514,14 +2526,14 @@ var SpaceProtocol = class {
2514
2526
  if (this._connection) {
2515
2527
  log11("stopping...", void 0, {
2516
2528
  F: __dxlog_file12,
2517
- L: 139,
2529
+ L: 142,
2518
2530
  S: this,
2519
2531
  C: (f, a) => f(...a)
2520
2532
  });
2521
2533
  await this._connection.close();
2522
2534
  log11("stopped", void 0, {
2523
2535
  F: __dxlog_file12,
2524
- L: 141,
2536
+ L: 144,
2525
2537
  S: this,
2526
2538
  C: (f, a) => f(...a)
2527
2539
  });
@@ -2580,15 +2592,15 @@ var SpaceProtocolSession = class {
2580
2592
  get stream() {
2581
2593
  return this._teleport.stream;
2582
2594
  }
2583
- async open() {
2584
- await this._teleport.open();
2595
+ async open(sessionId) {
2596
+ await this._teleport.open(sessionId);
2585
2597
  this._teleport.addExtension("dxos.mesh.teleport.auth", new AuthExtension({
2586
2598
  provider: this._swarmIdentity.credentialProvider,
2587
2599
  verifier: this._swarmIdentity.credentialAuthenticator,
2588
2600
  onAuthSuccess: () => {
2589
2601
  log11("Peer authenticated", void 0, {
2590
2602
  F: __dxlog_file12,
2591
- L: 238,
2603
+ L: 241,
2592
2604
  S: this,
2593
2605
  C: (f, a) => f(...a)
2594
2606
  });
@@ -2606,7 +2618,7 @@ var SpaceProtocolSession = class {
2606
2618
  async close() {
2607
2619
  log11("close", void 0, {
2608
2620
  F: __dxlog_file12,
2609
- L: 254,
2621
+ L: 257,
2610
2622
  S: this,
2611
2623
  C: (f, a) => f(...a)
2612
2624
  });
@@ -2723,6 +2735,167 @@ SpaceManager = _ts_decorate8([
2723
2735
  trackLeaks4("open", "close")
2724
2736
  ], SpaceManager);
2725
2737
 
2738
+ // packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts
2739
+ import { Repo, NetworkAdapter, StorageAdapter, cbor } from "@dxos/automerge/automerge-repo";
2740
+ import { Stream as Stream2 } from "@dxos/codec-protobuf";
2741
+ import { invariant as invariant10 } from "@dxos/invariant";
2742
+ import { arrayToBuffer as arrayToBuffer2, bufferToArray } from "@dxos/util";
2743
+ var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts";
2744
+ var AutomergeHost = class {
2745
+ constructor(storageDirectory) {
2746
+ this._meshNetwork = new MeshNetworkAdapter();
2747
+ this._clientNetwork = new LocalHostNetworkAdapter();
2748
+ this._storage = new AutomergeStorageAdapter(storageDirectory);
2749
+ this._repo = new Repo({
2750
+ network: [
2751
+ // this._meshNetwork,
2752
+ this._clientNetwork
2753
+ ],
2754
+ storage: this._storage,
2755
+ // TODO(dmaretskyi): Share based on HALO permissions and space affinity.
2756
+ sharePolicy: async (peerId, documentId) => true
2757
+ });
2758
+ }
2759
+ get repo() {
2760
+ return this._repo;
2761
+ }
2762
+ syncRepo(request) {
2763
+ return this._clientNetwork.syncRepo(request);
2764
+ }
2765
+ sendSyncMessage(request) {
2766
+ return this._clientNetwork.sendSyncMessage(request);
2767
+ }
2768
+ };
2769
+ var LocalHostNetworkAdapter = class extends NetworkAdapter {
2770
+ constructor() {
2771
+ super();
2772
+ this._peers = /* @__PURE__ */ new Map();
2773
+ this.emit("ready", {
2774
+ network: this
2775
+ });
2776
+ }
2777
+ connect(peerId) {
2778
+ }
2779
+ send(message) {
2780
+ const peer = this._peers.get(message.targetId);
2781
+ invariant10(peer, "Peer not found.", {
2782
+ F: __dxlog_file14,
2783
+ L: 83,
2784
+ S: this,
2785
+ A: [
2786
+ "peer",
2787
+ "'Peer not found.'"
2788
+ ]
2789
+ });
2790
+ peer.send(message);
2791
+ }
2792
+ disconnect() {
2793
+ throw new Error("Method not implemented.");
2794
+ }
2795
+ syncRepo({ id, syncMessage }) {
2796
+ const peerId = this._getPeerId(id);
2797
+ return new Stream2(({ next, close }) => {
2798
+ invariant10(!this._peers.has(peerId), "Peer already connected.", {
2799
+ F: __dxlog_file14,
2800
+ L: 95,
2801
+ S: this,
2802
+ A: [
2803
+ "!this._peers.has(peerId)",
2804
+ "'Peer already connected.'"
2805
+ ]
2806
+ });
2807
+ this._peers.set(peerId, {
2808
+ connected: true,
2809
+ send: (message) => {
2810
+ next({
2811
+ syncMessage: cbor.encode(message)
2812
+ });
2813
+ },
2814
+ disconnect: () => {
2815
+ this._peers.delete(peerId);
2816
+ close();
2817
+ this.emit("peer-disconnected", {
2818
+ peerId
2819
+ });
2820
+ }
2821
+ });
2822
+ this.emit("peer-candidate", {
2823
+ peerId
2824
+ });
2825
+ });
2826
+ }
2827
+ async sendSyncMessage({ id, syncMessage }) {
2828
+ const message = cbor.decode(syncMessage);
2829
+ this.emit("message", message);
2830
+ }
2831
+ _getPeerId(id) {
2832
+ return id;
2833
+ }
2834
+ };
2835
+ var MeshNetworkAdapter = class extends NetworkAdapter {
2836
+ connect(peerId) {
2837
+ throw new Error("Method not implemented.");
2838
+ }
2839
+ send(message) {
2840
+ throw new Error("Method not implemented.");
2841
+ }
2842
+ disconnect() {
2843
+ throw new Error("Method not implemented.");
2844
+ }
2845
+ };
2846
+ var AutomergeStorageAdapter = class extends StorageAdapter {
2847
+ constructor(_directory) {
2848
+ super();
2849
+ this._directory = _directory;
2850
+ }
2851
+ async load(key) {
2852
+ const filename = this._getFilename(key);
2853
+ const file = this._directory.getOrCreateFile(filename);
2854
+ const { size } = await file.stat();
2855
+ const buffer = await file.read(0, size);
2856
+ return bufferToArray(buffer);
2857
+ }
2858
+ async save(key, data) {
2859
+ const filename = this._getFilename(key);
2860
+ const file = this._directory.getOrCreateFile(filename);
2861
+ await file.write(0, arrayToBuffer2(data));
2862
+ await file.truncate?.(data.length);
2863
+ await file.flush?.();
2864
+ }
2865
+ async remove(key) {
2866
+ const filename = this._getFilename(key);
2867
+ const file = this._directory.getOrCreateFile(filename);
2868
+ await file.truncate?.(0);
2869
+ }
2870
+ async loadRange(keyPrefix) {
2871
+ const filename = this._getFilename(keyPrefix);
2872
+ const entries = await this._directory.list();
2873
+ return Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
2874
+ const file = this._directory.getOrCreateFile(entry);
2875
+ const { size } = await file.stat();
2876
+ const buffer = await file.read(0, size);
2877
+ return {
2878
+ key: this._getKeyFromFilename(entry),
2879
+ data: bufferToArray(buffer)
2880
+ };
2881
+ }));
2882
+ }
2883
+ async removeRange(keyPrefix) {
2884
+ const filename = this._getFilename(keyPrefix);
2885
+ const entries = await this._directory.list();
2886
+ await Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
2887
+ const file = this._directory.getOrCreateFile(filename);
2888
+ await file.truncate?.(0);
2889
+ }));
2890
+ }
2891
+ _getFilename(key) {
2892
+ return key.map((k) => k.replaceAll("%", "%25").replaceAll("-", "%2D")).join("-");
2893
+ }
2894
+ _getKeyFromFilename(filename) {
2895
+ return filename.split("-").map((k) => k.replaceAll("%2D", "-").replaceAll("%25", "%"));
2896
+ }
2897
+ };
2898
+
2726
2899
  export {
2727
2900
  codec,
2728
2901
  valueEncoding,
@@ -2747,6 +2920,7 @@ export {
2747
2920
  SpaceProtocol,
2748
2921
  AuthStatus,
2749
2922
  SpaceProtocolSession,
2750
- SpaceManager
2923
+ SpaceManager,
2924
+ AutomergeHost
2751
2925
  };
2752
- //# sourceMappingURL=chunk-MPEQ7BV3.mjs.map
2926
+ //# sourceMappingURL=chunk-T627FAUD.mjs.map