@dxos/echo-pipeline 0.3.8 → 0.3.9-main.03b62b6
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-IYY5JG5Q.mjs → chunk-CLHJJVQE.mjs} +221 -54
- package/dist/lib/browser/chunk-CLHJJVQE.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 +8 -3
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-AW6AYBUE.cjs → chunk-XWUUSV4Y.cjs} +222 -56
- 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 +19 -15
- 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-IYY5JG5Q.mjs.map +0 -7
- package/dist/lib/node/chunk-AW6AYBUE.cjs.map +0 -7
|
@@ -8,7 +8,7 @@ var valueEncoding = createCodecEncoding(codec);
|
|
|
8
8
|
|
|
9
9
|
// packages/core/echo/echo-pipeline/src/common/feeds.ts
|
|
10
10
|
import { invariant } from "@dxos/invariant";
|
|
11
|
-
var __dxlog_file = "/home/
|
|
11
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/common/feeds.ts";
|
|
12
12
|
var createMappedFeedWriter = (mapper, writer) => {
|
|
13
13
|
invariant(mapper, void 0, {
|
|
14
14
|
F: __dxlog_file,
|
|
@@ -42,7 +42,7 @@ import { invariant as invariant2 } from "@dxos/invariant";
|
|
|
42
42
|
import { log } from "@dxos/log";
|
|
43
43
|
import { EchoEvent } from "@dxos/protocols/proto/dxos/echo/service";
|
|
44
44
|
import { ComplexMap } from "@dxos/util";
|
|
45
|
-
var __dxlog_file2 = "/home/
|
|
45
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/data-service-host.ts";
|
|
46
46
|
var MUTATION_LIMIT_PER_OBJECT = 10;
|
|
47
47
|
var DataServiceHost = class {
|
|
48
48
|
constructor(_itemManager, _itemDemuxer, _flush, _writeStream, _opts = {}) {
|
|
@@ -368,7 +368,7 @@ import { invariant as invariant3 } from "@dxos/invariant";
|
|
|
368
368
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
369
369
|
import { log as log2 } from "@dxos/log";
|
|
370
370
|
import { ComplexMap as ComplexMap2 } from "@dxos/util";
|
|
371
|
-
var __dxlog_file3 = "/home/
|
|
371
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/data-service.ts";
|
|
372
372
|
var DataServiceSubscriptions = class {
|
|
373
373
|
constructor() {
|
|
374
374
|
this._spaces = new ComplexMap2(PublicKey2.hash);
|
|
@@ -381,13 +381,13 @@ var DataServiceSubscriptions = class {
|
|
|
381
381
|
spaceKey
|
|
382
382
|
}, {
|
|
383
383
|
F: __dxlog_file3,
|
|
384
|
-
L:
|
|
384
|
+
L: 34,
|
|
385
385
|
S: this,
|
|
386
386
|
C: (f, a) => f(...a)
|
|
387
387
|
});
|
|
388
388
|
invariant3(!this._spaces.has(spaceKey), void 0, {
|
|
389
389
|
F: __dxlog_file3,
|
|
390
|
-
L:
|
|
390
|
+
L: 35,
|
|
391
391
|
S: this,
|
|
392
392
|
A: [
|
|
393
393
|
"!this._spaces.has(spaceKey)",
|
|
@@ -402,7 +402,7 @@ var DataServiceSubscriptions = class {
|
|
|
402
402
|
spaceKey
|
|
403
403
|
}, {
|
|
404
404
|
F: __dxlog_file3,
|
|
405
|
-
L:
|
|
405
|
+
L: 41,
|
|
406
406
|
S: this,
|
|
407
407
|
C: (f, a) => f(...a)
|
|
408
408
|
});
|
|
@@ -415,13 +415,14 @@ var DataServiceSubscriptions = class {
|
|
|
415
415
|
}
|
|
416
416
|
};
|
|
417
417
|
var DataServiceImpl = class {
|
|
418
|
-
constructor(_subscriptions) {
|
|
418
|
+
constructor(_subscriptions, _automergeHost) {
|
|
419
419
|
this._subscriptions = _subscriptions;
|
|
420
|
+
this._automergeHost = _automergeHost;
|
|
420
421
|
}
|
|
421
422
|
subscribe(request) {
|
|
422
423
|
invariant3(request.spaceKey, void 0, {
|
|
423
424
|
F: __dxlog_file3,
|
|
424
|
-
L:
|
|
425
|
+
L: 63,
|
|
425
426
|
S: this,
|
|
426
427
|
A: [
|
|
427
428
|
"request.spaceKey",
|
|
@@ -434,7 +435,7 @@ var DataServiceImpl = class {
|
|
|
434
435
|
write(request) {
|
|
435
436
|
invariant3(request.spaceKey, void 0, {
|
|
436
437
|
F: __dxlog_file3,
|
|
437
|
-
L:
|
|
438
|
+
L: 70,
|
|
438
439
|
S: this,
|
|
439
440
|
A: [
|
|
440
441
|
"request.spaceKey",
|
|
@@ -443,7 +444,7 @@ var DataServiceImpl = class {
|
|
|
443
444
|
});
|
|
444
445
|
invariant3(request.batch, void 0, {
|
|
445
446
|
F: __dxlog_file3,
|
|
446
|
-
L:
|
|
447
|
+
L: 71,
|
|
447
448
|
S: this,
|
|
448
449
|
A: [
|
|
449
450
|
"request.batch",
|
|
@@ -456,7 +457,7 @@ var DataServiceImpl = class {
|
|
|
456
457
|
flush(request) {
|
|
457
458
|
invariant3(request.spaceKey, void 0, {
|
|
458
459
|
F: __dxlog_file3,
|
|
459
|
-
L:
|
|
460
|
+
L: 78,
|
|
460
461
|
S: this,
|
|
461
462
|
A: [
|
|
462
463
|
"request.spaceKey",
|
|
@@ -493,7 +494,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
493
494
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
494
495
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
495
496
|
}
|
|
496
|
-
var __dxlog_file4 = "/home/
|
|
497
|
+
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts";
|
|
497
498
|
var emptyEchoMetadata = () => ({
|
|
498
499
|
version: STORAGE_VERSION,
|
|
499
500
|
spaces: [],
|
|
@@ -793,7 +794,7 @@ function _ts_decorate2(decorators, target, key, desc) {
|
|
|
793
794
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
794
795
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
795
796
|
}
|
|
796
|
-
var __dxlog_file5 = "/home/
|
|
797
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts";
|
|
797
798
|
var mapTimeframeToFeedIndexes = (timeframe) => timeframe.frames().map(([feedKey, index]) => ({
|
|
798
799
|
feedKey,
|
|
799
800
|
index
|
|
@@ -889,7 +890,7 @@ import { ComplexMap as ComplexMap4 } from "@dxos/util";
|
|
|
889
890
|
// packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts
|
|
890
891
|
import { invariant as invariant5 } from "@dxos/invariant";
|
|
891
892
|
import { log as log5 } from "@dxos/log";
|
|
892
|
-
var __dxlog_file6 = "/home/
|
|
893
|
+
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts";
|
|
893
894
|
var createMessageSelector = (timeframeClock) => {
|
|
894
895
|
return (messages) => {
|
|
895
896
|
for (let i = 0; i < messages.length; i++) {
|
|
@@ -927,7 +928,7 @@ function _ts_decorate3(decorators, target, key, desc) {
|
|
|
927
928
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
928
929
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
929
930
|
}
|
|
930
|
-
var __dxlog_file7 = "/home/
|
|
931
|
+
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts";
|
|
931
932
|
var PipelineState = class {
|
|
932
933
|
constructor(_feeds, _timeframeClock) {
|
|
933
934
|
this._feeds = _feeds;
|
|
@@ -1339,7 +1340,7 @@ import { invariant as invariant7 } from "@dxos/invariant";
|
|
|
1339
1340
|
import { log as log7 } from "@dxos/log";
|
|
1340
1341
|
import { schema as schema5 } from "@dxos/protocols";
|
|
1341
1342
|
import { RpcExtension } from "@dxos/teleport";
|
|
1342
|
-
var __dxlog_file8 = "/home/
|
|
1343
|
+
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/auth.ts";
|
|
1343
1344
|
var AuthExtension = class extends RpcExtension {
|
|
1344
1345
|
constructor(_authParams) {
|
|
1345
1346
|
super({
|
|
@@ -1459,7 +1460,7 @@ function _ts_decorate4(decorators, target, key, desc) {
|
|
|
1459
1460
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1460
1461
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1461
1462
|
}
|
|
1462
|
-
var __dxlog_file9 = "/home/
|
|
1463
|
+
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/data-pipeline.ts";
|
|
1463
1464
|
var MESSAGES_PER_SNAPSHOT = 10;
|
|
1464
1465
|
var AUTOMATIC_SNAPSHOT_DEBOUNCE_INTERVAL = 5e3;
|
|
1465
1466
|
var TIMEFRAME_SAVE_DEBOUNCE_INTERVAL = 5e3;
|
|
@@ -1517,7 +1518,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1517
1518
|
write: (data, options) => {
|
|
1518
1519
|
invariant8(this._pipeline, "Pipeline is not initialized.", {
|
|
1519
1520
|
F: __dxlog_file9,
|
|
1520
|
-
L:
|
|
1521
|
+
L: 164,
|
|
1521
1522
|
S: this,
|
|
1522
1523
|
A: [
|
|
1523
1524
|
"this._pipeline",
|
|
@@ -1526,7 +1527,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1526
1527
|
});
|
|
1527
1528
|
invariant8(this.currentEpoch, "Epoch is not initialized.", {
|
|
1528
1529
|
F: __dxlog_file9,
|
|
1529
|
-
L:
|
|
1530
|
+
L: 165,
|
|
1530
1531
|
S: this,
|
|
1531
1532
|
A: [
|
|
1532
1533
|
"this.currentEpoch",
|
|
@@ -1552,7 +1553,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1552
1553
|
}
|
|
1553
1554
|
log8("close", void 0, {
|
|
1554
1555
|
F: __dxlog_file9,
|
|
1555
|
-
L:
|
|
1556
|
+
L: 189,
|
|
1556
1557
|
S: this,
|
|
1557
1558
|
C: (f, a) => f(...a)
|
|
1558
1559
|
});
|
|
@@ -1567,7 +1568,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1567
1568
|
} catch (err) {
|
|
1568
1569
|
log8.catch(err, void 0, {
|
|
1569
1570
|
F: __dxlog_file9,
|
|
1570
|
-
L:
|
|
1571
|
+
L: 202,
|
|
1571
1572
|
S: this,
|
|
1572
1573
|
C: (f, a) => f(...a)
|
|
1573
1574
|
});
|
|
@@ -1592,7 +1593,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1592
1593
|
let messageCounter = 0;
|
|
1593
1594
|
invariant8(this._pipeline, "Pipeline is not initialized.", {
|
|
1594
1595
|
F: __dxlog_file9,
|
|
1595
|
-
L:
|
|
1596
|
+
L: 228,
|
|
1596
1597
|
S: this,
|
|
1597
1598
|
A: [
|
|
1598
1599
|
"this._pipeline",
|
|
@@ -1608,7 +1609,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1608
1609
|
seq
|
|
1609
1610
|
}, {
|
|
1610
1611
|
F: __dxlog_file9,
|
|
1611
|
-
L:
|
|
1612
|
+
L: 234,
|
|
1612
1613
|
S: this,
|
|
1613
1614
|
C: (f, a) => f(...a)
|
|
1614
1615
|
});
|
|
@@ -1620,7 +1621,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1620
1621
|
feedKey
|
|
1621
1622
|
}, {
|
|
1622
1623
|
F: __dxlog_file9,
|
|
1623
|
-
L:
|
|
1624
|
+
L: 240,
|
|
1624
1625
|
S: this,
|
|
1625
1626
|
C: (f, a) => f(...a)
|
|
1626
1627
|
});
|
|
@@ -1643,7 +1644,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1643
1644
|
spaceKey: this._params.spaceKey.toHex()
|
|
1644
1645
|
}, {
|
|
1645
1646
|
F: __dxlog_file9,
|
|
1646
|
-
L:
|
|
1647
|
+
L: 257,
|
|
1647
1648
|
S: this,
|
|
1648
1649
|
C: (f, a) => f(...a)
|
|
1649
1650
|
});
|
|
@@ -1652,7 +1653,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1652
1653
|
} catch (err) {
|
|
1653
1654
|
log8.catch(err, void 0, {
|
|
1654
1655
|
F: __dxlog_file9,
|
|
1655
|
-
L:
|
|
1656
|
+
L: 267,
|
|
1656
1657
|
S: this,
|
|
1657
1658
|
C: (f, a) => f(...a)
|
|
1658
1659
|
});
|
|
@@ -1667,7 +1668,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1667
1668
|
_createSnapshot() {
|
|
1668
1669
|
invariant8(this.databaseHost, "Database backend is not initialized.", {
|
|
1669
1670
|
F: __dxlog_file9,
|
|
1670
|
-
L:
|
|
1671
|
+
L: 281,
|
|
1671
1672
|
S: this,
|
|
1672
1673
|
A: [
|
|
1673
1674
|
"this.databaseHost",
|
|
@@ -1696,7 +1697,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1696
1697
|
} catch (err) {
|
|
1697
1698
|
log8.warn("Failed to cache properties", err, {
|
|
1698
1699
|
F: __dxlog_file9,
|
|
1699
|
-
L:
|
|
1700
|
+
L: 310,
|
|
1700
1701
|
S: this,
|
|
1701
1702
|
C: (f, a) => f(...a)
|
|
1702
1703
|
});
|
|
@@ -1725,14 +1726,14 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1725
1726
|
if (err instanceof CancelledError) {
|
|
1726
1727
|
log8("Epoch processing cancelled.", void 0, {
|
|
1727
1728
|
F: __dxlog_file9,
|
|
1728
|
-
L:
|
|
1729
|
+
L: 346,
|
|
1729
1730
|
S: this,
|
|
1730
1731
|
C: (f, a) => f(...a)
|
|
1731
1732
|
});
|
|
1732
1733
|
} else {
|
|
1733
1734
|
log8.catch(err, void 0, {
|
|
1734
1735
|
F: __dxlog_file9,
|
|
1735
|
-
L:
|
|
1736
|
+
L: 348,
|
|
1736
1737
|
S: this,
|
|
1737
1738
|
C: (f, a) => f(...a)
|
|
1738
1739
|
});
|
|
@@ -1745,6 +1746,9 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1745
1746
|
return;
|
|
1746
1747
|
}
|
|
1747
1748
|
await this._processEpoch(ctx, epoch.subject.assertion);
|
|
1749
|
+
if (epoch.subject.assertion.snapshotCid === void 0) {
|
|
1750
|
+
epoch.subject.assertion.snapshotCid = this.appliedEpoch?.subject.assertion.snapshotCid;
|
|
1751
|
+
}
|
|
1748
1752
|
this.appliedEpoch = epoch;
|
|
1749
1753
|
this.onNewEpoch.emit(epoch);
|
|
1750
1754
|
});
|
|
@@ -1752,7 +1756,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1752
1756
|
async _processEpoch(ctx, epoch) {
|
|
1753
1757
|
invariant8(this._isOpen, "Space is closed.", {
|
|
1754
1758
|
F: __dxlog_file9,
|
|
1755
|
-
L:
|
|
1759
|
+
L: 372,
|
|
1756
1760
|
S: this,
|
|
1757
1761
|
A: [
|
|
1758
1762
|
"this._isOpen",
|
|
@@ -1761,7 +1765,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1761
1765
|
});
|
|
1762
1766
|
invariant8(this._pipeline, void 0, {
|
|
1763
1767
|
F: __dxlog_file9,
|
|
1764
|
-
L:
|
|
1768
|
+
L: 373,
|
|
1765
1769
|
S: this,
|
|
1766
1770
|
A: [
|
|
1767
1771
|
"this._pipeline",
|
|
@@ -1773,7 +1777,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1773
1777
|
epoch: omit(epoch, "proof")
|
|
1774
1778
|
}, {
|
|
1775
1779
|
F: __dxlog_file9,
|
|
1776
|
-
L:
|
|
1780
|
+
L: 376,
|
|
1777
1781
|
S: this,
|
|
1778
1782
|
C: (f, a) => f(...a)
|
|
1779
1783
|
});
|
|
@@ -1783,7 +1787,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1783
1787
|
}
|
|
1784
1788
|
log8("restarting pipeline from epoch", void 0, {
|
|
1785
1789
|
F: __dxlog_file9,
|
|
1786
|
-
L:
|
|
1790
|
+
L: 382,
|
|
1787
1791
|
S: this,
|
|
1788
1792
|
C: (f, a) => f(...a)
|
|
1789
1793
|
});
|
|
@@ -1794,7 +1798,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1794
1798
|
async waitUntilTimeframe(timeframe) {
|
|
1795
1799
|
invariant8(this._pipeline, "Pipeline is not initialized.", {
|
|
1796
1800
|
F: __dxlog_file9,
|
|
1797
|
-
L:
|
|
1801
|
+
L: 389,
|
|
1798
1802
|
S: this,
|
|
1799
1803
|
A: [
|
|
1800
1804
|
"this._pipeline",
|
|
@@ -1806,7 +1810,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1806
1810
|
async createEpoch() {
|
|
1807
1811
|
invariant8(this._pipeline, void 0, {
|
|
1808
1812
|
F: __dxlog_file9,
|
|
1809
|
-
L:
|
|
1813
|
+
L: 395,
|
|
1810
1814
|
S: this,
|
|
1811
1815
|
A: [
|
|
1812
1816
|
"this._pipeline",
|
|
@@ -1815,7 +1819,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1815
1819
|
});
|
|
1816
1820
|
invariant8(this.currentEpoch, void 0, {
|
|
1817
1821
|
F: __dxlog_file9,
|
|
1818
|
-
L:
|
|
1822
|
+
L: 396,
|
|
1819
1823
|
S: this,
|
|
1820
1824
|
A: [
|
|
1821
1825
|
"this.currentEpoch",
|
|
@@ -1846,7 +1850,7 @@ var DataPipeline = class DataPipeline2 {
|
|
|
1846
1850
|
} catch (err) {
|
|
1847
1851
|
log8.catch(err, void 0, {
|
|
1848
1852
|
F: __dxlog_file9,
|
|
1849
|
-
L:
|
|
1853
|
+
L: 426,
|
|
1850
1854
|
S: this,
|
|
1851
1855
|
C: (f, a) => f(...a)
|
|
1852
1856
|
});
|
|
@@ -1930,7 +1934,7 @@ function _ts_decorate5(decorators, target, key, desc) {
|
|
|
1930
1934
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1931
1935
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1932
1936
|
}
|
|
1933
|
-
var __dxlog_file10 = "/home/
|
|
1937
|
+
var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/control-pipeline.ts";
|
|
1934
1938
|
var TIMEFRAME_SAVE_DEBOUNCE_INTERVAL2 = 500;
|
|
1935
1939
|
var CONTROL_PIPELINE_SNAPSHOT_DELAY = 1e4;
|
|
1936
1940
|
var USE_SNAPSHOTS = true;
|
|
@@ -2179,7 +2183,7 @@ function _ts_decorate6(decorators, target, key, desc) {
|
|
|
2179
2183
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2180
2184
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2181
2185
|
}
|
|
2182
|
-
var __dxlog_file11 = "/home/
|
|
2186
|
+
var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space.ts";
|
|
2183
2187
|
var Space = class Space2 {
|
|
2184
2188
|
constructor(params) {
|
|
2185
2189
|
this._addFeedLock = new Lock();
|
|
@@ -2436,13 +2440,14 @@ function _ts_decorate7(decorators, target, key, desc) {
|
|
|
2436
2440
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2437
2441
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2438
2442
|
}
|
|
2439
|
-
var __dxlog_file12 = "/home/
|
|
2443
|
+
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-protocol.ts";
|
|
2440
2444
|
var MOCK_AUTH_PROVIDER = async (nonce) => Buffer.from("mock");
|
|
2441
2445
|
var MOCK_AUTH_VERIFIER = async (nonce, credential) => true;
|
|
2442
2446
|
var SpaceProtocol = class {
|
|
2443
2447
|
constructor({ topic, swarmIdentity, networkManager, onSessionAuth, onAuthFailure, blobStore }) {
|
|
2444
2448
|
this._feeds = /* @__PURE__ */ new Set();
|
|
2445
2449
|
this._sessions = new ComplexMap5(PublicKey6.hash);
|
|
2450
|
+
this._spaceKey = topic;
|
|
2446
2451
|
this._networkManager = networkManager;
|
|
2447
2452
|
this._swarmIdentity = swarmIdentity;
|
|
2448
2453
|
this._onSessionAuth = onSessionAuth;
|
|
@@ -2467,7 +2472,7 @@ var SpaceProtocol = class {
|
|
|
2467
2472
|
key: feed.key
|
|
2468
2473
|
}, {
|
|
2469
2474
|
F: __dxlog_file12,
|
|
2470
|
-
L:
|
|
2475
|
+
L: 99,
|
|
2471
2476
|
S: this,
|
|
2472
2477
|
C: (f, a) => f(...a)
|
|
2473
2478
|
});
|
|
@@ -2490,7 +2495,7 @@ var SpaceProtocol = class {
|
|
|
2490
2495
|
await this.blobSync.open();
|
|
2491
2496
|
log11("starting...", void 0, {
|
|
2492
2497
|
F: __dxlog_file12,
|
|
2493
|
-
L:
|
|
2498
|
+
L: 125,
|
|
2494
2499
|
S: this,
|
|
2495
2500
|
C: (f, a) => f(...a)
|
|
2496
2501
|
});
|
|
@@ -2500,11 +2505,11 @@ var SpaceProtocol = class {
|
|
|
2500
2505
|
peerId: this._swarmIdentity.peerKey,
|
|
2501
2506
|
topic,
|
|
2502
2507
|
topology: new MMSTTopology(topologyConfig),
|
|
2503
|
-
label: `
|
|
2508
|
+
label: `swarm ${topic.truncate()} for space ${this._spaceKey.truncate()}`
|
|
2504
2509
|
});
|
|
2505
2510
|
log11("started", void 0, {
|
|
2506
2511
|
F: __dxlog_file12,
|
|
2507
|
-
L:
|
|
2512
|
+
L: 135,
|
|
2508
2513
|
S: this,
|
|
2509
2514
|
C: (f, a) => f(...a)
|
|
2510
2515
|
});
|
|
@@ -2514,14 +2519,14 @@ var SpaceProtocol = class {
|
|
|
2514
2519
|
if (this._connection) {
|
|
2515
2520
|
log11("stopping...", void 0, {
|
|
2516
2521
|
F: __dxlog_file12,
|
|
2517
|
-
L:
|
|
2522
|
+
L: 142,
|
|
2518
2523
|
S: this,
|
|
2519
2524
|
C: (f, a) => f(...a)
|
|
2520
2525
|
});
|
|
2521
2526
|
await this._connection.close();
|
|
2522
2527
|
log11("stopped", void 0, {
|
|
2523
2528
|
F: __dxlog_file12,
|
|
2524
|
-
L:
|
|
2529
|
+
L: 144,
|
|
2525
2530
|
S: this,
|
|
2526
2531
|
C: (f, a) => f(...a)
|
|
2527
2532
|
});
|
|
@@ -2580,15 +2585,15 @@ var SpaceProtocolSession = class {
|
|
|
2580
2585
|
get stream() {
|
|
2581
2586
|
return this._teleport.stream;
|
|
2582
2587
|
}
|
|
2583
|
-
async open() {
|
|
2584
|
-
await this._teleport.open();
|
|
2588
|
+
async open(sessionId) {
|
|
2589
|
+
await this._teleport.open(sessionId);
|
|
2585
2590
|
this._teleport.addExtension("dxos.mesh.teleport.auth", new AuthExtension({
|
|
2586
2591
|
provider: this._swarmIdentity.credentialProvider,
|
|
2587
2592
|
verifier: this._swarmIdentity.credentialAuthenticator,
|
|
2588
2593
|
onAuthSuccess: () => {
|
|
2589
2594
|
log11("Peer authenticated", void 0, {
|
|
2590
2595
|
F: __dxlog_file12,
|
|
2591
|
-
L:
|
|
2596
|
+
L: 241,
|
|
2592
2597
|
S: this,
|
|
2593
2598
|
C: (f, a) => f(...a)
|
|
2594
2599
|
});
|
|
@@ -2606,7 +2611,7 @@ var SpaceProtocolSession = class {
|
|
|
2606
2611
|
async close() {
|
|
2607
2612
|
log11("close", void 0, {
|
|
2608
2613
|
F: __dxlog_file12,
|
|
2609
|
-
L:
|
|
2614
|
+
L: 257,
|
|
2610
2615
|
S: this,
|
|
2611
2616
|
C: (f, a) => f(...a)
|
|
2612
2617
|
});
|
|
@@ -2640,7 +2645,7 @@ function _ts_decorate8(decorators, target, key, desc) {
|
|
|
2640
2645
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2641
2646
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2642
2647
|
}
|
|
2643
|
-
var __dxlog_file13 = "/home/
|
|
2648
|
+
var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
|
|
2644
2649
|
var SpaceManager = class SpaceManager2 {
|
|
2645
2650
|
constructor({ feedStore, networkManager, modelFactory, metadataStore, snapshotStore, blobStore }) {
|
|
2646
2651
|
this._spaces = new ComplexMap6(PublicKey7.hash);
|
|
@@ -2723,6 +2728,167 @@ SpaceManager = _ts_decorate8([
|
|
|
2723
2728
|
trackLeaks4("open", "close")
|
|
2724
2729
|
], SpaceManager);
|
|
2725
2730
|
|
|
2731
|
+
// packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts
|
|
2732
|
+
import { Repo, NetworkAdapter, StorageAdapter, cbor } from "@dxos/automerge/automerge-repo";
|
|
2733
|
+
import { Stream as Stream2 } from "@dxos/codec-protobuf";
|
|
2734
|
+
import { invariant as invariant10 } from "@dxos/invariant";
|
|
2735
|
+
import { arrayToBuffer as arrayToBuffer2, bufferToArray } from "@dxos/util";
|
|
2736
|
+
var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts";
|
|
2737
|
+
var AutomergeHost = class {
|
|
2738
|
+
constructor(storageDirectory) {
|
|
2739
|
+
this._meshNetwork = new MeshNetworkAdapter();
|
|
2740
|
+
this._clientNetwork = new LocalHostNetworkAdapter();
|
|
2741
|
+
this._storage = new AutomergeStorageAdapter(storageDirectory);
|
|
2742
|
+
this._repo = new Repo({
|
|
2743
|
+
network: [
|
|
2744
|
+
// this._meshNetwork,
|
|
2745
|
+
this._clientNetwork
|
|
2746
|
+
],
|
|
2747
|
+
storage: this._storage,
|
|
2748
|
+
// TODO(dmaretskyi): Share based on HALO permissions and space affinity.
|
|
2749
|
+
sharePolicy: async (peerId, documentId) => true
|
|
2750
|
+
});
|
|
2751
|
+
}
|
|
2752
|
+
get repo() {
|
|
2753
|
+
return this._repo;
|
|
2754
|
+
}
|
|
2755
|
+
syncRepo(request) {
|
|
2756
|
+
return this._clientNetwork.syncRepo(request);
|
|
2757
|
+
}
|
|
2758
|
+
sendSyncMessage(request) {
|
|
2759
|
+
return this._clientNetwork.sendSyncMessage(request);
|
|
2760
|
+
}
|
|
2761
|
+
};
|
|
2762
|
+
var LocalHostNetworkAdapter = class extends NetworkAdapter {
|
|
2763
|
+
constructor() {
|
|
2764
|
+
super();
|
|
2765
|
+
this._peers = /* @__PURE__ */ new Map();
|
|
2766
|
+
this.emit("ready", {
|
|
2767
|
+
network: this
|
|
2768
|
+
});
|
|
2769
|
+
}
|
|
2770
|
+
connect(peerId) {
|
|
2771
|
+
}
|
|
2772
|
+
send(message) {
|
|
2773
|
+
const peer = this._peers.get(message.targetId);
|
|
2774
|
+
invariant10(peer, "Peer not found.", {
|
|
2775
|
+
F: __dxlog_file14,
|
|
2776
|
+
L: 83,
|
|
2777
|
+
S: this,
|
|
2778
|
+
A: [
|
|
2779
|
+
"peer",
|
|
2780
|
+
"'Peer not found.'"
|
|
2781
|
+
]
|
|
2782
|
+
});
|
|
2783
|
+
peer.send(message);
|
|
2784
|
+
}
|
|
2785
|
+
disconnect() {
|
|
2786
|
+
throw new Error("Method not implemented.");
|
|
2787
|
+
}
|
|
2788
|
+
syncRepo({ id, syncMessage }) {
|
|
2789
|
+
const peerId = this._getPeerId(id);
|
|
2790
|
+
return new Stream2(({ next, close }) => {
|
|
2791
|
+
invariant10(!this._peers.has(peerId), "Peer already connected.", {
|
|
2792
|
+
F: __dxlog_file14,
|
|
2793
|
+
L: 95,
|
|
2794
|
+
S: this,
|
|
2795
|
+
A: [
|
|
2796
|
+
"!this._peers.has(peerId)",
|
|
2797
|
+
"'Peer already connected.'"
|
|
2798
|
+
]
|
|
2799
|
+
});
|
|
2800
|
+
this._peers.set(peerId, {
|
|
2801
|
+
connected: true,
|
|
2802
|
+
send: (message) => {
|
|
2803
|
+
next({
|
|
2804
|
+
syncMessage: cbor.encode(message)
|
|
2805
|
+
});
|
|
2806
|
+
},
|
|
2807
|
+
disconnect: () => {
|
|
2808
|
+
this._peers.delete(peerId);
|
|
2809
|
+
close();
|
|
2810
|
+
this.emit("peer-disconnected", {
|
|
2811
|
+
peerId
|
|
2812
|
+
});
|
|
2813
|
+
}
|
|
2814
|
+
});
|
|
2815
|
+
this.emit("peer-candidate", {
|
|
2816
|
+
peerId
|
|
2817
|
+
});
|
|
2818
|
+
});
|
|
2819
|
+
}
|
|
2820
|
+
async sendSyncMessage({ id, syncMessage }) {
|
|
2821
|
+
const message = cbor.decode(syncMessage);
|
|
2822
|
+
this.emit("message", message);
|
|
2823
|
+
}
|
|
2824
|
+
_getPeerId(id) {
|
|
2825
|
+
return id;
|
|
2826
|
+
}
|
|
2827
|
+
};
|
|
2828
|
+
var MeshNetworkAdapter = class extends NetworkAdapter {
|
|
2829
|
+
connect(peerId) {
|
|
2830
|
+
throw new Error("Method not implemented.");
|
|
2831
|
+
}
|
|
2832
|
+
send(message) {
|
|
2833
|
+
throw new Error("Method not implemented.");
|
|
2834
|
+
}
|
|
2835
|
+
disconnect() {
|
|
2836
|
+
throw new Error("Method not implemented.");
|
|
2837
|
+
}
|
|
2838
|
+
};
|
|
2839
|
+
var AutomergeStorageAdapter = class extends StorageAdapter {
|
|
2840
|
+
constructor(_directory) {
|
|
2841
|
+
super();
|
|
2842
|
+
this._directory = _directory;
|
|
2843
|
+
}
|
|
2844
|
+
async load(key) {
|
|
2845
|
+
const filename = this._getFilename(key);
|
|
2846
|
+
const file = this._directory.getOrCreateFile(filename);
|
|
2847
|
+
const { size } = await file.stat();
|
|
2848
|
+
const buffer = await file.read(0, size);
|
|
2849
|
+
return bufferToArray(buffer);
|
|
2850
|
+
}
|
|
2851
|
+
async save(key, data) {
|
|
2852
|
+
const filename = this._getFilename(key);
|
|
2853
|
+
const file = this._directory.getOrCreateFile(filename);
|
|
2854
|
+
await file.write(0, arrayToBuffer2(data));
|
|
2855
|
+
await file.truncate?.(data.length);
|
|
2856
|
+
await file.flush?.();
|
|
2857
|
+
}
|
|
2858
|
+
async remove(key) {
|
|
2859
|
+
const filename = this._getFilename(key);
|
|
2860
|
+
const file = this._directory.getOrCreateFile(filename);
|
|
2861
|
+
await file.truncate?.(0);
|
|
2862
|
+
}
|
|
2863
|
+
async loadRange(keyPrefix) {
|
|
2864
|
+
const filename = this._getFilename(keyPrefix);
|
|
2865
|
+
const entries = await this._directory.list();
|
|
2866
|
+
return Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
|
|
2867
|
+
const file = this._directory.getOrCreateFile(entry);
|
|
2868
|
+
const { size } = await file.stat();
|
|
2869
|
+
const buffer = await file.read(0, size);
|
|
2870
|
+
return {
|
|
2871
|
+
key: this._getKeyFromFilename(entry),
|
|
2872
|
+
data: bufferToArray(buffer)
|
|
2873
|
+
};
|
|
2874
|
+
}));
|
|
2875
|
+
}
|
|
2876
|
+
async removeRange(keyPrefix) {
|
|
2877
|
+
const filename = this._getFilename(keyPrefix);
|
|
2878
|
+
const entries = await this._directory.list();
|
|
2879
|
+
await Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
|
|
2880
|
+
const file = this._directory.getOrCreateFile(filename);
|
|
2881
|
+
await file.truncate?.(0);
|
|
2882
|
+
}));
|
|
2883
|
+
}
|
|
2884
|
+
_getFilename(key) {
|
|
2885
|
+
return key.map((k) => k.replaceAll("%", "%25").replaceAll("-", "%2D")).join("-");
|
|
2886
|
+
}
|
|
2887
|
+
_getKeyFromFilename(filename) {
|
|
2888
|
+
return filename.split("-").map((k) => k.replaceAll("%2D", "-").replaceAll("%25", "%"));
|
|
2889
|
+
}
|
|
2890
|
+
};
|
|
2891
|
+
|
|
2726
2892
|
export {
|
|
2727
2893
|
codec,
|
|
2728
2894
|
valueEncoding,
|
|
@@ -2747,6 +2913,7 @@ export {
|
|
|
2747
2913
|
SpaceProtocol,
|
|
2748
2914
|
AuthStatus,
|
|
2749
2915
|
SpaceProtocolSession,
|
|
2750
|
-
SpaceManager
|
|
2916
|
+
SpaceManager,
|
|
2917
|
+
AutomergeHost
|
|
2751
2918
|
};
|
|
2752
|
-
//# sourceMappingURL=chunk-
|
|
2919
|
+
//# sourceMappingURL=chunk-CLHJJVQE.mjs.map
|