@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.
Files changed (106) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/api-report/merge-tree.api.md +4 -8
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +8 -3
  6. package/dist/client.js.map +1 -1
  7. package/dist/legacy.d.ts +3 -1
  8. package/dist/mergeTree.d.ts +0 -1
  9. package/dist/mergeTree.d.ts.map +1 -1
  10. package/dist/mergeTree.js +40 -55
  11. package/dist/mergeTree.js.map +1 -1
  12. package/dist/mergeTreeDeltaCallback.d.ts +29 -3
  13. package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
  14. package/dist/mergeTreeDeltaCallback.js.map +1 -1
  15. package/dist/mergeTreeNodes.d.ts +12 -7
  16. package/dist/mergeTreeNodes.d.ts.map +1 -1
  17. package/dist/mergeTreeNodes.js +6 -18
  18. package/dist/mergeTreeNodes.js.map +1 -1
  19. package/dist/opBuilder.js +2 -2
  20. package/dist/opBuilder.js.map +1 -1
  21. package/dist/properties.d.ts.map +1 -1
  22. package/dist/properties.js +1 -1
  23. package/dist/properties.js.map +1 -1
  24. package/dist/referencePositions.d.ts +2 -2
  25. package/dist/referencePositions.js +2 -2
  26. package/dist/referencePositions.js.map +1 -1
  27. package/dist/segmentPropertiesManager.d.ts +4 -1
  28. package/dist/segmentPropertiesManager.d.ts.map +1 -1
  29. package/dist/segmentPropertiesManager.js +23 -11
  30. package/dist/segmentPropertiesManager.js.map +1 -1
  31. package/dist/snapshotChunks.d.ts +1 -1
  32. package/dist/snapshotChunks.d.ts.map +1 -1
  33. package/dist/snapshotChunks.js.map +1 -1
  34. package/dist/snapshotLoader.d.ts +1 -1
  35. package/dist/snapshotLoader.d.ts.map +1 -1
  36. package/dist/snapshotLoader.js.map +1 -1
  37. package/dist/snapshotV1.d.ts +1 -1
  38. package/dist/snapshotV1.d.ts.map +1 -1
  39. package/dist/snapshotV1.js.map +1 -1
  40. package/dist/snapshotlegacy.d.ts +1 -1
  41. package/dist/snapshotlegacy.d.ts.map +1 -1
  42. package/dist/snapshotlegacy.js.map +1 -1
  43. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +0 -1
  44. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  45. package/dist/textSegment.js +1 -1
  46. package/dist/textSegment.js.map +1 -1
  47. package/lib/client.d.ts +1 -1
  48. package/lib/client.d.ts.map +1 -1
  49. package/lib/client.js +9 -4
  50. package/lib/client.js.map +1 -1
  51. package/lib/legacy.d.ts +3 -1
  52. package/lib/mergeTree.d.ts +0 -1
  53. package/lib/mergeTree.d.ts.map +1 -1
  54. package/lib/mergeTree.js +41 -56
  55. package/lib/mergeTree.js.map +1 -1
  56. package/lib/mergeTreeDeltaCallback.d.ts +29 -3
  57. package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
  58. package/lib/mergeTreeDeltaCallback.js.map +1 -1
  59. package/lib/mergeTreeNodes.d.ts +12 -7
  60. package/lib/mergeTreeNodes.d.ts.map +1 -1
  61. package/lib/mergeTreeNodes.js +5 -16
  62. package/lib/mergeTreeNodes.js.map +1 -1
  63. package/lib/opBuilder.js +2 -2
  64. package/lib/opBuilder.js.map +1 -1
  65. package/lib/properties.d.ts.map +1 -1
  66. package/lib/properties.js +1 -1
  67. package/lib/properties.js.map +1 -1
  68. package/lib/referencePositions.d.ts +2 -2
  69. package/lib/referencePositions.js +2 -2
  70. package/lib/referencePositions.js.map +1 -1
  71. package/lib/segmentPropertiesManager.d.ts +4 -1
  72. package/lib/segmentPropertiesManager.d.ts.map +1 -1
  73. package/lib/segmentPropertiesManager.js +23 -11
  74. package/lib/segmentPropertiesManager.js.map +1 -1
  75. package/lib/snapshotChunks.d.ts +1 -1
  76. package/lib/snapshotChunks.d.ts.map +1 -1
  77. package/lib/snapshotChunks.js.map +1 -1
  78. package/lib/snapshotLoader.d.ts +1 -1
  79. package/lib/snapshotLoader.d.ts.map +1 -1
  80. package/lib/snapshotLoader.js +1 -1
  81. package/lib/snapshotLoader.js.map +1 -1
  82. package/lib/snapshotV1.d.ts +1 -1
  83. package/lib/snapshotV1.d.ts.map +1 -1
  84. package/lib/snapshotV1.js.map +1 -1
  85. package/lib/snapshotlegacy.d.ts +1 -1
  86. package/lib/snapshotlegacy.d.ts.map +1 -1
  87. package/lib/snapshotlegacy.js.map +1 -1
  88. package/lib/test/mergeTree.annotate.deltaCallback.spec.js +0 -1
  89. package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  90. package/lib/textSegment.js +1 -1
  91. package/lib/textSegment.js.map +1 -1
  92. package/lib/tsdoc-metadata.json +1 -1
  93. package/package.json +20 -24
  94. package/src/client.ts +13 -6
  95. package/src/mergeTree.ts +43 -65
  96. package/src/mergeTreeDeltaCallback.ts +33 -3
  97. package/src/mergeTreeNodes.ts +18 -22
  98. package/src/opBuilder.ts +2 -2
  99. package/src/properties.ts +5 -2
  100. package/src/referencePositions.ts +2 -2
  101. package/src/segmentPropertiesManager.ts +27 -14
  102. package/src/snapshotChunks.ts +1 -1
  103. package/src/snapshotLoader.ts +5 -2
  104. package/src/snapshotV1.ts +1 -2
  105. package/src/snapshotlegacy.ts +1 -2
  106. 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, HierMergeBlock, Marker, MaxNodesInBlock, reservedMarkerIdKey, seqLTE, toMoveInfo, toRemovalInfo, } from "./mergeTreeNodes.js";
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 HierMergeBlock(childCount);
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
- deltaSegments.push({ segment, propertyDeltas });
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
- if (block.hierBlock()) {
1702
- // eslint-disable-next-line import/no-deprecated
1703
- block.rightmostTiles = createMap();
1704
- // eslint-disable-next-line import/no-deprecated
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 child = block.children[i];
1709
- const nodeLength = nodeTotalLength(this, child);
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 (block.hierBlock()) {
1715
- this.addNodeReferences(child, block.rightmostTiles, block.leftmostTiles);
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) {