@fluidframework/merge-tree 0.58.0-55983 → 0.58.2000-58133
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/DEV.md +9 -0
- package/dist/base.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +13 -3
- package/dist/client.js.map +1 -1
- package/dist/collections.d.ts +2 -1
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js.map +1 -1
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +4 -1
- package/dist/localReference.js.map +1 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +26 -23
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +2 -2
- package/dist/partialLengths.js.map +1 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +9 -2
- package/dist/properties.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +4 -0
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js.map +1 -1
- package/lib/base.js.map +1 -1
- package/lib/client.d.ts +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +13 -3
- package/lib/client.js.map +1 -1
- package/lib/collections.d.ts +2 -1
- package/lib/collections.d.ts.map +1 -1
- package/lib/collections.js.map +1 -1
- package/lib/localReference.d.ts.map +1 -1
- package/lib/localReference.js +4 -1
- package/lib/localReference.js.map +1 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +26 -23
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +2 -2
- package/lib/partialLengths.js.map +1 -1
- package/lib/properties.d.ts.map +1 -1
- package/lib/properties.js +9 -2
- package/lib/properties.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +4 -0
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js.map +1 -1
- package/package.json +16 -12
- package/src/base.ts +2 -2
- package/src/client.ts +13 -3
- package/src/collections.ts +2 -1
- package/src/localReference.ts +4 -2
- package/src/mergeTree.ts +31 -34
- package/src/mergeTreeDeltaCallback.ts +1 -0
- package/src/partialLengths.ts +2 -4
- package/src/properties.ts +9 -3
- package/src/segmentPropertiesManager.ts +4 -3
- package/src/textSegment.ts +0 -1
package/dist/mergeTree.js
CHANGED
|
@@ -49,7 +49,7 @@ function addTileIfNotPresent(tile, tiles) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function applyStackDelta(currentStackMap, deltaStackMap) {
|
|
52
|
-
// eslint-disable-next-line guard-for-in
|
|
52
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
53
53
|
for (const label in deltaStackMap) {
|
|
54
54
|
const deltaStack = deltaStackMap[label];
|
|
55
55
|
if (!deltaStack.empty()) {
|
|
@@ -212,7 +212,7 @@ class HierMergeBlock extends MergeBlock {
|
|
|
212
212
|
}
|
|
213
213
|
hierToString(indentCount) {
|
|
214
214
|
let strbuf = "";
|
|
215
|
-
// eslint-disable-next-line guard-for-in
|
|
215
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
216
216
|
for (const key in this.rangeStacks) {
|
|
217
217
|
const stack = this.rangeStacks[key];
|
|
218
218
|
strbuf += internedSpaces(indentCount);
|
|
@@ -285,6 +285,7 @@ class BaseSegment extends MergeNode {
|
|
|
285
285
|
this.localSeq = undefined;
|
|
286
286
|
return true;
|
|
287
287
|
case 1 /* REMOVE */:
|
|
288
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
288
289
|
const removalInfo = this;
|
|
289
290
|
common_utils_1.assert(!!removalInfo, 0x046 /* "On remove ack, missing removal info!" */);
|
|
290
291
|
common_utils_1.assert(!!removalInfo.removedSeq, 0x047 /* "On remove ack, missing removed sequence number!" */);
|
|
@@ -497,6 +498,7 @@ class Marker extends BaseSegment {
|
|
|
497
498
|
// Avoid circular reference when stringifying makers containing handles.
|
|
498
499
|
// (Substitute a debug string instead.)
|
|
499
500
|
const handle = !!value && value.IFluidHandle;
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
500
502
|
return handle
|
|
501
503
|
? `#Handle(${handle.routeContext.path}/${handle.path})`
|
|
502
504
|
: value;
|
|
@@ -762,6 +764,7 @@ class MergeTree {
|
|
|
762
764
|
// snapshot header. The bulk of the segments in long documents are inserted via `insertSegments()`.
|
|
763
765
|
this.blockUpdate(block);
|
|
764
766
|
}
|
|
767
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
765
768
|
return blocks.length === 1 // If there is only one block at this layer...
|
|
766
769
|
? blocks[0] // ...then we're done. Return the root.
|
|
767
770
|
: buildMergeBlock(blocks); // ...otherwise recursively build the next layer above blocks.
|
|
@@ -982,8 +985,8 @@ class MergeTree {
|
|
|
982
985
|
stats.leafCount += childStats.leafCount;
|
|
983
986
|
stats.removedLeafCount += childStats.removedLeafCount;
|
|
984
987
|
stats.liveCount += childStats.liveCount;
|
|
985
|
-
for (let
|
|
986
|
-
stats.histo[
|
|
988
|
+
for (let j = 0; j < exports.MaxNodesInBlock; j++) {
|
|
989
|
+
stats.histo[j] += childStats.histo[j];
|
|
987
990
|
}
|
|
988
991
|
}
|
|
989
992
|
else {
|
|
@@ -1034,7 +1037,7 @@ class MergeTree {
|
|
|
1034
1037
|
getContainingSegment(pos, refSeq, clientId) {
|
|
1035
1038
|
let segment;
|
|
1036
1039
|
let offset;
|
|
1037
|
-
const leaf = (leafSeg, segpos,
|
|
1040
|
+
const leaf = (leafSeg, segpos, _refSeq, _clientId, start) => {
|
|
1038
1041
|
segment = leafSeg;
|
|
1039
1042
|
offset = start;
|
|
1040
1043
|
return false;
|
|
@@ -1510,7 +1513,7 @@ class MergeTree {
|
|
|
1510
1513
|
}
|
|
1511
1514
|
blockInsert(pos, refSeq, clientId, seq, localSeq, newSegments) {
|
|
1512
1515
|
let segIsLocal = false;
|
|
1513
|
-
const checkSegmentIsLocal = (segment,
|
|
1516
|
+
const checkSegmentIsLocal = (segment, _pos, _refSeq, _clientId) => {
|
|
1514
1517
|
if (segment.seq === constants_1.UnassignedSequenceNumber) {
|
|
1515
1518
|
segIsLocal = true;
|
|
1516
1519
|
}
|
|
@@ -1539,7 +1542,7 @@ class MergeTree {
|
|
|
1539
1542
|
}
|
|
1540
1543
|
}
|
|
1541
1544
|
};
|
|
1542
|
-
const onLeaf = (segment,
|
|
1545
|
+
const onLeaf = (segment, _pos, context) => {
|
|
1543
1546
|
const segmentChanges = {};
|
|
1544
1547
|
if (segment) {
|
|
1545
1548
|
// Insert before segment
|
|
@@ -1611,24 +1614,24 @@ class MergeTree {
|
|
|
1611
1614
|
while (parent) {
|
|
1612
1615
|
const children = parent.children;
|
|
1613
1616
|
let childIndex;
|
|
1614
|
-
let
|
|
1617
|
+
let _node;
|
|
1615
1618
|
let matchedStart = false;
|
|
1616
1619
|
for (childIndex = parent.childCount - 1; childIndex >= 0; childIndex--) {
|
|
1617
|
-
|
|
1620
|
+
_node = children[childIndex];
|
|
1618
1621
|
if (matchedStart) {
|
|
1619
|
-
if (!
|
|
1620
|
-
const childBlock =
|
|
1622
|
+
if (!_node.isLeaf()) {
|
|
1623
|
+
const childBlock = _node;
|
|
1621
1624
|
go = this.nodeMapReverse(childBlock, leafAction, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId);
|
|
1622
1625
|
}
|
|
1623
1626
|
else {
|
|
1624
|
-
go = leafAction(
|
|
1627
|
+
go = leafAction(_node, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, 0, 0, undefined);
|
|
1625
1628
|
}
|
|
1626
1629
|
if (!go) {
|
|
1627
1630
|
return;
|
|
1628
1631
|
}
|
|
1629
1632
|
}
|
|
1630
1633
|
else {
|
|
1631
|
-
matchedStart = (startNode ===
|
|
1634
|
+
matchedStart = (startNode === _node);
|
|
1632
1635
|
}
|
|
1633
1636
|
}
|
|
1634
1637
|
startNode = parent;
|
|
@@ -1644,24 +1647,24 @@ class MergeTree {
|
|
|
1644
1647
|
while (parent) {
|
|
1645
1648
|
const children = parent.children;
|
|
1646
1649
|
let childIndex;
|
|
1647
|
-
let
|
|
1650
|
+
let _node;
|
|
1648
1651
|
let matchedStart = false;
|
|
1649
1652
|
for (childIndex = 0; childIndex < parent.childCount; childIndex++) {
|
|
1650
|
-
|
|
1653
|
+
_node = children[childIndex];
|
|
1651
1654
|
if (matchedStart) {
|
|
1652
|
-
if (!
|
|
1653
|
-
const childBlock =
|
|
1655
|
+
if (!_node.isLeaf()) {
|
|
1656
|
+
const childBlock = _node;
|
|
1654
1657
|
go = this.nodeMap(childBlock, actions, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, undefined);
|
|
1655
1658
|
}
|
|
1656
1659
|
else {
|
|
1657
|
-
go = leafAction(
|
|
1660
|
+
go = leafAction(_node, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, 0, 0, undefined);
|
|
1658
1661
|
}
|
|
1659
1662
|
if (!go) {
|
|
1660
1663
|
return;
|
|
1661
1664
|
}
|
|
1662
1665
|
}
|
|
1663
1666
|
else {
|
|
1664
|
-
matchedStart = (startNode ===
|
|
1667
|
+
matchedStart = (startNode === _node);
|
|
1665
1668
|
}
|
|
1666
1669
|
}
|
|
1667
1670
|
startNode = parent;
|
|
@@ -1858,7 +1861,7 @@ class MergeTree {
|
|
|
1858
1861
|
const removedSegments = [];
|
|
1859
1862
|
const savedLocalRefs = [];
|
|
1860
1863
|
const localSeq = seq === constants_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
1861
|
-
const markRemoved = (segment, pos,
|
|
1864
|
+
const markRemoved = (segment, pos, _start, _end) => {
|
|
1862
1865
|
const removalInfo = segment;
|
|
1863
1866
|
if (removalInfo.removedSeq !== undefined) {
|
|
1864
1867
|
_overwrite = true;
|
|
@@ -1886,8 +1889,8 @@ class MergeTree {
|
|
|
1886
1889
|
// Save segment so can assign removed sequence number when acked by server
|
|
1887
1890
|
if (this.collabWindow.collaborating) {
|
|
1888
1891
|
// Use removal information
|
|
1889
|
-
const
|
|
1890
|
-
if (
|
|
1892
|
+
const _removalInfo = segment;
|
|
1893
|
+
if (_removalInfo.removedSeq === constants_1.UnassignedSequenceNumber && clientId === this.collabWindow.clientId) {
|
|
1891
1894
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq);
|
|
1892
1895
|
}
|
|
1893
1896
|
else {
|
|
@@ -1898,7 +1901,7 @@ class MergeTree {
|
|
|
1898
1901
|
}
|
|
1899
1902
|
return true;
|
|
1900
1903
|
};
|
|
1901
|
-
const afterMarkRemoved = (node, pos,
|
|
1904
|
+
const afterMarkRemoved = (node, pos, _start, _end) => {
|
|
1902
1905
|
if (_overwrite) {
|
|
1903
1906
|
this.nodeUpdateLengthNewStructure(node);
|
|
1904
1907
|
}
|