@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/dist/mergeTree.js CHANGED
@@ -66,24 +66,6 @@ const LRUSegmentComparer = {
66
66
  min: { maxSeq: -2 },
67
67
  compare: (a, b) => a.maxSeq - b.maxSeq,
68
68
  };
69
- function addTile(tile, tiles) {
70
- const tileLabels = (0, referencePositions_js_1.refGetTileLabels)(tile);
71
- if (tileLabels) {
72
- for (const tileLabel of tileLabels) {
73
- tiles[tileLabel] = tile;
74
- }
75
- }
76
- }
77
- function addTileIfNotPresent(tile, tiles) {
78
- const tileLabels = (0, referencePositions_js_1.refGetTileLabels)(tile);
79
- if (tileLabels) {
80
- for (const tileLabel of tileLabels) {
81
- if (tiles[tileLabel] === undefined) {
82
- tiles[tileLabel] = tile;
83
- }
84
- }
85
- }
86
- }
87
69
  function findRootMergeBlock(segmentOrNode) {
88
70
  if (segmentOrNode === undefined) {
89
71
  return undefined;
@@ -262,7 +244,7 @@ class MergeTree {
262
244
  value.mergeTree = this;
263
245
  }
264
246
  makeBlock(childCount) {
265
- const block = new mergeTreeNodes_js_1.HierMergeBlock(childCount);
247
+ const block = new mergeTreeNodes_js_1.MergeBlock(childCount);
266
248
  block.ordinal = "";
267
249
  return block;
268
250
  }
@@ -674,7 +656,6 @@ class MergeTree {
674
656
  }
675
657
  }
676
658
  else {
677
- (0, internal_1.assert)(node.hierBlock(), 0x90b /* must be hierBlock */);
678
659
  const marker = forwards
679
660
  ? node.leftmostTiles[markerLabel]
680
661
  : node.rightmostTiles[markerLabel];
@@ -1220,7 +1201,9 @@ class MergeTree {
1220
1201
  !(mergeTreeNodes_js_1.reservedMarkerIdKey in props) ||
1221
1202
  props.markerId === segment.properties?.markerId, 0x5ad /* Cannot change the markerId of an existing marker */);
1222
1203
  const propertyDeltas = segment.addProperties(props, seq, this.collabWindow.collaborating, rollback);
1223
- deltaSegments.push({ segment, propertyDeltas });
1204
+ if (!isRemovedOrMoved(segment)) {
1205
+ deltaSegments.push({ segment, propertyDeltas });
1206
+ }
1224
1207
  if (this.collabWindow.collaborating) {
1225
1208
  if (seq === constants_js_1.UnassignedSequenceNumber) {
1226
1209
  segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq, propertyDeltas);
@@ -1675,49 +1658,51 @@ class MergeTree {
1675
1658
  });
1676
1659
  normalize();
1677
1660
  }
1678
- addNodeReferences(node, rightmostTiles, leftmostTiles) {
1679
- if (node.isLeaf()) {
1680
- const segment = node;
1681
- if ((this.localNetLength(segment) ?? 0) > 0 && mergeTreeNodes_js_1.Marker.is(segment)) {
1682
- const markerId = segment.getId();
1683
- // Also in insertMarker but need for reload segs case
1684
- // can add option for this only from reload segs
1685
- if (markerId) {
1686
- this.idToMarker.set(markerId, segment);
1687
- }
1688
- if ((0, referencePositions_js_1.refTypeIncludesFlag)(segment, ops_js_1.ReferenceType.Tile)) {
1689
- addTile(segment, rightmostTiles);
1690
- addTileIfNotPresent(segment, leftmostTiles);
1691
- }
1692
- }
1693
- }
1694
- else {
1695
- (0, internal_1.assert)(node.hierBlock(), 0x90c /* must be hier block */);
1696
- // eslint-disable-next-line import/no-deprecated
1697
- (0, properties_js_1.extend)(rightmostTiles, node.rightmostTiles);
1698
- // eslint-disable-next-line import/no-deprecated
1699
- (0, properties_js_1.extendIfUndefined)(leftmostTiles, node.leftmostTiles);
1700
- }
1701
- }
1702
1661
  blockUpdate(block) {
1703
1662
  let len;
1704
- if (block.hierBlock()) {
1705
- // eslint-disable-next-line import/no-deprecated
1706
- block.rightmostTiles = (0, properties_js_1.createMap)();
1707
- // eslint-disable-next-line import/no-deprecated
1708
- block.leftmostTiles = (0, properties_js_1.createMap)();
1709
- }
1663
+ // eslint-disable-next-line import/no-deprecated
1664
+ const rightmostTiles = (0, properties_js_1.createMap)();
1665
+ // eslint-disable-next-line import/no-deprecated
1666
+ const leftmostTiles = (0, properties_js_1.createMap)();
1710
1667
  for (let i = 0; i < block.childCount; i++) {
1711
- const child = block.children[i];
1712
- const nodeLength = nodeTotalLength(this, child);
1668
+ const node = block.children[i];
1669
+ const nodeLength = nodeTotalLength(this, node);
1713
1670
  if (nodeLength !== undefined) {
1714
1671
  len ?? (len = 0);
1715
1672
  len += nodeLength;
1716
1673
  }
1717
- if (block.hierBlock()) {
1718
- this.addNodeReferences(child, block.rightmostTiles, block.leftmostTiles);
1674
+ if (node.isLeaf()) {
1675
+ const segment = node;
1676
+ if ((this.localNetLength(segment) ?? 0) > 0 && mergeTreeNodes_js_1.Marker.is(segment)) {
1677
+ const markerId = segment.getId();
1678
+ // Also in insertMarker but need for reload segs case
1679
+ // can add option for this only from reload segs
1680
+ if (markerId) {
1681
+ this.idToMarker.set(markerId, segment);
1682
+ }
1683
+ if ((0, referencePositions_js_1.refTypeIncludesFlag)(segment, ops_js_1.ReferenceType.Tile)) {
1684
+ const tileLabels = (0, referencePositions_js_1.refGetTileLabels)(segment);
1685
+ if (tileLabels) {
1686
+ for (const tileLabel of tileLabels) {
1687
+ // this depends on walking children in order
1688
+ // The later, and right most children overwrite
1689
+ // whereas early, and left most do not overwrite
1690
+ rightmostTiles[tileLabel] = segment;
1691
+ leftmostTiles[tileLabel] ?? (leftmostTiles[tileLabel] = segment);
1692
+ }
1693
+ }
1694
+ }
1695
+ }
1696
+ }
1697
+ else {
1698
+ // eslint-disable-next-line import/no-deprecated
1699
+ (0, properties_js_1.extend)(rightmostTiles, node.rightmostTiles);
1700
+ // eslint-disable-next-line import/no-deprecated
1701
+ (0, properties_js_1.extendIfUndefined)(leftmostTiles, node.leftmostTiles);
1719
1702
  }
1720
1703
  }
1704
+ block.leftmostTiles = leftmostTiles;
1705
+ block.rightmostTiles = rightmostTiles;
1721
1706
  block.cachedLength = len;
1722
1707
  }
1723
1708
  blockUpdatePathLengths(startBlock, seq, clientId, newStructure = false) {