@fluidframework/merge-tree 2.0.0-rc.3.0.3 → 2.0.0-rc.4.0.0
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/CHANGELOG.md +4 -0
- package/api-report/merge-tree.api.md +4 -8
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -3
- package/dist/client.js.map +1 -1
- package/dist/legacy.d.ts +3 -1
- package/dist/mergeTree.d.ts +0 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +40 -55
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts +29 -3
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +12 -7
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +6 -18
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/opBuilder.js +2 -2
- package/dist/opBuilder.js.map +1 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +1 -1
- package/dist/properties.js.map +1 -1
- package/dist/referencePositions.d.ts +2 -2
- package/dist/referencePositions.js +2 -2
- package/dist/referencePositions.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +4 -1
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +23 -11
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/snapshotChunks.d.ts +1 -1
- package/dist/snapshotChunks.d.ts.map +1 -1
- package/dist/snapshotChunks.js.map +1 -1
- package/dist/snapshotLoader.d.ts +1 -1
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts +1 -1
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts +1 -1
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +0 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/dist/textSegment.js +1 -1
- package/dist/textSegment.js.map +1 -1
- package/lib/client.d.ts +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +9 -4
- package/lib/client.js.map +1 -1
- package/lib/legacy.d.ts +3 -1
- package/lib/mergeTree.d.ts +0 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +41 -56
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts +29 -3
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +12 -7
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +5 -16
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/opBuilder.js +2 -2
- package/lib/opBuilder.js.map +1 -1
- package/lib/properties.d.ts.map +1 -1
- package/lib/properties.js +1 -1
- package/lib/properties.js.map +1 -1
- package/lib/referencePositions.d.ts +2 -2
- package/lib/referencePositions.js +2 -2
- package/lib/referencePositions.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts +4 -1
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +23 -11
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/snapshotChunks.d.ts +1 -1
- package/lib/snapshotChunks.d.ts.map +1 -1
- package/lib/snapshotChunks.js.map +1 -1
- package/lib/snapshotLoader.d.ts +1 -1
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +1 -1
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts +1 -1
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts +1 -1
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js +0 -1
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/lib/textSegment.js +1 -1
- package/lib/textSegment.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +20 -24
- package/src/client.ts +13 -6
- package/src/mergeTree.ts +43 -65
- package/src/mergeTreeDeltaCallback.ts +33 -3
- package/src/mergeTreeNodes.ts +18 -22
- package/src/opBuilder.ts +2 -2
- package/src/properties.ts +5 -2
- package/src/referencePositions.ts +2 -2
- package/src/segmentPropertiesManager.ts +27 -14
- package/src/snapshotChunks.ts +1 -1
- package/src/snapshotLoader.ts +5 -2
- package/src/snapshotV1.ts +1 -2
- package/src/snapshotlegacy.ts +1 -2
- package/src/textSegment.ts +1 -1
package/lib/mergeTree.js
CHANGED
|
@@ -14,7 +14,7 @@ import { MergeTreeMaintenanceType, } from "./mergeTreeDeltaCallback.js";
|
|
|
14
14
|
import { NodeAction, backwardExcursion, depthFirstNodeWalk, forwardExcursion, walkAllChildSegments, } from "./mergeTreeNodeWalk.js";
|
|
15
15
|
import {
|
|
16
16
|
// eslint-disable-next-line import/no-deprecated
|
|
17
|
-
CollaborationWindow,
|
|
17
|
+
CollaborationWindow, Marker, MaxNodesInBlock, MergeBlock, reservedMarkerIdKey, seqLTE, toMoveInfo, toRemovalInfo, } from "./mergeTreeNodes.js";
|
|
18
18
|
import { createAnnotateRangeOp, createInsertSegmentOp, createRemoveRangeOp } from "./opBuilder.js";
|
|
19
19
|
import { MergeTreeDeltaType, ReferenceType } from "./ops.js";
|
|
20
20
|
import { PartialSequenceLengths } from "./partialLengths.js";
|
|
@@ -65,24 +65,6 @@ const LRUSegmentComparer = {
|
|
|
65
65
|
min: { maxSeq: -2 },
|
|
66
66
|
compare: (a, b) => a.maxSeq - b.maxSeq,
|
|
67
67
|
};
|
|
68
|
-
function addTile(tile, tiles) {
|
|
69
|
-
const tileLabels = refGetTileLabels(tile);
|
|
70
|
-
if (tileLabels) {
|
|
71
|
-
for (const tileLabel of tileLabels) {
|
|
72
|
-
tiles[tileLabel] = tile;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function addTileIfNotPresent(tile, tiles) {
|
|
77
|
-
const tileLabels = refGetTileLabels(tile);
|
|
78
|
-
if (tileLabels) {
|
|
79
|
-
for (const tileLabel of tileLabels) {
|
|
80
|
-
if (tiles[tileLabel] === undefined) {
|
|
81
|
-
tiles[tileLabel] = tile;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
68
|
export function findRootMergeBlock(segmentOrNode) {
|
|
87
69
|
if (segmentOrNode === undefined) {
|
|
88
70
|
return undefined;
|
|
@@ -259,7 +241,7 @@ export class MergeTree {
|
|
|
259
241
|
value.mergeTree = this;
|
|
260
242
|
}
|
|
261
243
|
makeBlock(childCount) {
|
|
262
|
-
const block = new
|
|
244
|
+
const block = new MergeBlock(childCount);
|
|
263
245
|
block.ordinal = "";
|
|
264
246
|
return block;
|
|
265
247
|
}
|
|
@@ -671,7 +653,6 @@ export class MergeTree {
|
|
|
671
653
|
}
|
|
672
654
|
}
|
|
673
655
|
else {
|
|
674
|
-
assert(node.hierBlock(), 0x90b /* must be hierBlock */);
|
|
675
656
|
const marker = forwards
|
|
676
657
|
? node.leftmostTiles[markerLabel]
|
|
677
658
|
: node.rightmostTiles[markerLabel];
|
|
@@ -1217,7 +1198,9 @@ export class MergeTree {
|
|
|
1217
1198
|
!(reservedMarkerIdKey in props) ||
|
|
1218
1199
|
props.markerId === segment.properties?.markerId, 0x5ad /* Cannot change the markerId of an existing marker */);
|
|
1219
1200
|
const propertyDeltas = segment.addProperties(props, seq, this.collabWindow.collaborating, rollback);
|
|
1220
|
-
|
|
1201
|
+
if (!isRemovedOrMoved(segment)) {
|
|
1202
|
+
deltaSegments.push({ segment, propertyDeltas });
|
|
1203
|
+
}
|
|
1221
1204
|
if (this.collabWindow.collaborating) {
|
|
1222
1205
|
if (seq === UnassignedSequenceNumber) {
|
|
1223
1206
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq, propertyDeltas);
|
|
@@ -1672,49 +1655,51 @@ export class MergeTree {
|
|
|
1672
1655
|
});
|
|
1673
1656
|
normalize();
|
|
1674
1657
|
}
|
|
1675
|
-
addNodeReferences(node, rightmostTiles, leftmostTiles) {
|
|
1676
|
-
if (node.isLeaf()) {
|
|
1677
|
-
const segment = node;
|
|
1678
|
-
if ((this.localNetLength(segment) ?? 0) > 0 && Marker.is(segment)) {
|
|
1679
|
-
const markerId = segment.getId();
|
|
1680
|
-
// Also in insertMarker but need for reload segs case
|
|
1681
|
-
// can add option for this only from reload segs
|
|
1682
|
-
if (markerId) {
|
|
1683
|
-
this.idToMarker.set(markerId, segment);
|
|
1684
|
-
}
|
|
1685
|
-
if (refTypeIncludesFlag(segment, ReferenceType.Tile)) {
|
|
1686
|
-
addTile(segment, rightmostTiles);
|
|
1687
|
-
addTileIfNotPresent(segment, leftmostTiles);
|
|
1688
|
-
}
|
|
1689
|
-
}
|
|
1690
|
-
}
|
|
1691
|
-
else {
|
|
1692
|
-
assert(node.hierBlock(), 0x90c /* must be hier block */);
|
|
1693
|
-
// eslint-disable-next-line import/no-deprecated
|
|
1694
|
-
extend(rightmostTiles, node.rightmostTiles);
|
|
1695
|
-
// eslint-disable-next-line import/no-deprecated
|
|
1696
|
-
extendIfUndefined(leftmostTiles, node.leftmostTiles);
|
|
1697
|
-
}
|
|
1698
|
-
}
|
|
1699
1658
|
blockUpdate(block) {
|
|
1700
1659
|
let len;
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
block.leftmostTiles = createMap();
|
|
1706
|
-
}
|
|
1660
|
+
// eslint-disable-next-line import/no-deprecated
|
|
1661
|
+
const rightmostTiles = createMap();
|
|
1662
|
+
// eslint-disable-next-line import/no-deprecated
|
|
1663
|
+
const leftmostTiles = createMap();
|
|
1707
1664
|
for (let i = 0; i < block.childCount; i++) {
|
|
1708
|
-
const
|
|
1709
|
-
const nodeLength = nodeTotalLength(this,
|
|
1665
|
+
const node = block.children[i];
|
|
1666
|
+
const nodeLength = nodeTotalLength(this, node);
|
|
1710
1667
|
if (nodeLength !== undefined) {
|
|
1711
1668
|
len ?? (len = 0);
|
|
1712
1669
|
len += nodeLength;
|
|
1713
1670
|
}
|
|
1714
|
-
if (
|
|
1715
|
-
|
|
1671
|
+
if (node.isLeaf()) {
|
|
1672
|
+
const segment = node;
|
|
1673
|
+
if ((this.localNetLength(segment) ?? 0) > 0 && Marker.is(segment)) {
|
|
1674
|
+
const markerId = segment.getId();
|
|
1675
|
+
// Also in insertMarker but need for reload segs case
|
|
1676
|
+
// can add option for this only from reload segs
|
|
1677
|
+
if (markerId) {
|
|
1678
|
+
this.idToMarker.set(markerId, segment);
|
|
1679
|
+
}
|
|
1680
|
+
if (refTypeIncludesFlag(segment, ReferenceType.Tile)) {
|
|
1681
|
+
const tileLabels = refGetTileLabels(segment);
|
|
1682
|
+
if (tileLabels) {
|
|
1683
|
+
for (const tileLabel of tileLabels) {
|
|
1684
|
+
// this depends on walking children in order
|
|
1685
|
+
// The later, and right most children overwrite
|
|
1686
|
+
// whereas early, and left most do not overwrite
|
|
1687
|
+
rightmostTiles[tileLabel] = segment;
|
|
1688
|
+
leftmostTiles[tileLabel] ?? (leftmostTiles[tileLabel] = segment);
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
else {
|
|
1695
|
+
// eslint-disable-next-line import/no-deprecated
|
|
1696
|
+
extend(rightmostTiles, node.rightmostTiles);
|
|
1697
|
+
// eslint-disable-next-line import/no-deprecated
|
|
1698
|
+
extendIfUndefined(leftmostTiles, node.leftmostTiles);
|
|
1716
1699
|
}
|
|
1717
1700
|
}
|
|
1701
|
+
block.leftmostTiles = leftmostTiles;
|
|
1702
|
+
block.rightmostTiles = rightmostTiles;
|
|
1718
1703
|
block.cachedLength = len;
|
|
1719
1704
|
}
|
|
1720
1705
|
blockUpdatePathLengths(startBlock, seq, clientId, newStructure = false) {
|