@dxos/echo-pipeline 0.3.9-main.dd8d283 → 0.3.9-main.e487c3c
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.
- package/dist/lib/browser/{chunk-MPEQ7BV3.mjs → chunk-T627FAUD.mjs} +215 -41
- package/dist/lib/browser/chunk-T627FAUD.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +7 -2
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-YJAADRTG.cjs → chunk-XWUUSV4Y.cjs} +209 -43
- package/dist/lib/node/chunk-XWUUSV4Y.cjs.map +7 -0
- package/dist/lib/node/index.cjs +27 -25
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +18 -14
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/automerge/automerge-host.d.ts +15 -0
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -0
- package/dist/types/src/automerge/automerge-host.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-host.test.d.ts.map +1 -0
- package/dist/types/src/automerge/index.d.ts +2 -0
- package/dist/types/src/automerge/index.d.ts.map +1 -0
- package/dist/types/src/db-host/data-service.d.ts +3 -1
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/space/data-pipeline.d.ts +4 -0
- package/dist/types/src/space/data-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts +2 -1
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/package.json +32 -31
- package/src/automerge/automerge-host.test.ts +42 -0
- package/src/automerge/automerge-host.ts +212 -0
- package/src/automerge/index.ts +5 -0
- package/src/db-host/data-service.ts +5 -1
- package/src/index.ts +1 -0
- package/src/space/data-pipeline.ts +10 -0
- package/src/space/space-protocol.ts +6 -3
- package/src/testing/util.ts +4 -1
- package/src/tests/database.test.ts +4 -1
- package/dist/lib/browser/chunk-MPEQ7BV3.mjs.map +0 -7
- 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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: `
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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-
|
|
2926
|
+
//# sourceMappingURL=chunk-T627FAUD.mjs.map
|