@fluidframework/merge-tree 2.118.1 → 3.0.1

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 (179) hide show
  1. package/CHANGELOG.md +34 -4
  2. package/README.md +53 -50
  3. package/{api-extractor.json → api-extractor/api-extractor-model.json} +1 -1
  4. package/dist/MergeTreeTextHelper.js +1 -0
  5. package/dist/MergeTreeTextHelper.js.map +1 -1
  6. package/dist/attributionCollection.js +6 -4
  7. package/dist/attributionCollection.js.map +1 -1
  8. package/dist/attributionPolicy.js +3 -4
  9. package/dist/attributionPolicy.js.map +1 -1
  10. package/dist/client.js +27 -10
  11. package/dist/client.js.map +1 -1
  12. package/dist/collections/rbTree.d.ts.map +1 -1
  13. package/dist/collections/rbTree.js +3 -0
  14. package/dist/collections/rbTree.js.map +1 -1
  15. package/dist/endOfTreeSegment.d.ts.map +1 -1
  16. package/dist/endOfTreeSegment.js +25 -26
  17. package/dist/endOfTreeSegment.js.map +1 -1
  18. package/dist/localReference.js +17 -7
  19. package/dist/localReference.js.map +1 -1
  20. package/dist/mergeTree.d.ts.map +1 -1
  21. package/dist/mergeTree.js +90 -74
  22. package/dist/mergeTree.js.map +1 -1
  23. package/dist/mergeTreeNodeWalk.js +5 -5
  24. package/dist/mergeTreeNodeWalk.js.map +1 -1
  25. package/dist/mergeTreeNodes.d.ts.map +1 -1
  26. package/dist/mergeTreeNodes.js +117 -90
  27. package/dist/mergeTreeNodes.js.map +1 -1
  28. package/dist/mergeTreeTracking.js +4 -0
  29. package/dist/mergeTreeTracking.js.map +1 -1
  30. package/dist/opBuilder.js +9 -10
  31. package/dist/opBuilder.js.map +1 -1
  32. package/dist/ordinal.js +1 -2
  33. package/dist/ordinal.js.map +1 -1
  34. package/dist/partialLengths.js +109 -73
  35. package/dist/partialLengths.js.map +1 -1
  36. package/dist/perspective.js +31 -11
  37. package/dist/perspective.js.map +1 -1
  38. package/dist/properties.js +6 -7
  39. package/dist/properties.js.map +1 -1
  40. package/dist/referencePositions.d.ts.map +1 -1
  41. package/dist/referencePositions.js +7 -7
  42. package/dist/referencePositions.js.map +1 -1
  43. package/dist/revertibles.js +4 -5
  44. package/dist/revertibles.js.map +1 -1
  45. package/dist/segmentGroupCollection.js +2 -0
  46. package/dist/segmentGroupCollection.js.map +1 -1
  47. package/dist/segmentInfos.d.ts.map +1 -1
  48. package/dist/segmentInfos.js +5 -5
  49. package/dist/segmentInfos.js.map +1 -1
  50. package/dist/segmentPropertiesManager.js +3 -5
  51. package/dist/segmentPropertiesManager.js.map +1 -1
  52. package/dist/sequencePlace.js +3 -3
  53. package/dist/sequencePlace.js.map +1 -1
  54. package/dist/snapshotChunks.js +4 -5
  55. package/dist/snapshotChunks.js.map +1 -1
  56. package/dist/snapshotLoader.js +85 -70
  57. package/dist/snapshotLoader.js.map +1 -1
  58. package/dist/snapshotV1.d.ts.map +1 -1
  59. package/dist/snapshotV1.js +34 -14
  60. package/dist/snapshotV1.js.map +1 -1
  61. package/dist/snapshotlegacy.d.ts.map +1 -1
  62. package/dist/snapshotlegacy.js +18 -10
  63. package/dist/snapshotlegacy.js.map +1 -1
  64. package/dist/sortedSet.js +1 -3
  65. package/dist/sortedSet.js.map +1 -1
  66. package/dist/stamps.js +11 -12
  67. package/dist/stamps.js.map +1 -1
  68. package/dist/test/attributionCollection.spec.js +1 -1
  69. package/dist/test/attributionCollection.spec.js.map +1 -1
  70. package/dist/test/beastTest.spec.js +15 -11
  71. package/dist/test/beastTest.spec.js.map +1 -1
  72. package/dist/test/client.apis.spec.js +2 -3
  73. package/dist/test/client.apis.spec.js.map +1 -1
  74. package/dist/test/client.replay.spec.js +17 -7
  75. package/dist/test/client.replay.spec.js.map +1 -1
  76. package/dist/test/clientTestHelper.js +7 -4
  77. package/dist/test/clientTestHelper.js.map +1 -1
  78. package/dist/test/mergeTreeOperationRunner.js +26 -16
  79. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  80. package/dist/test/obliterateOperations.d.ts.map +1 -1
  81. package/dist/test/revertibles.spec.js +1 -2
  82. package/dist/test/revertibles.spec.js.map +1 -1
  83. package/dist/test/snapshot.utils.d.ts.map +1 -1
  84. package/dist/test/snapshot.utils.js +7 -5
  85. package/dist/test/snapshot.utils.js.map +1 -1
  86. package/dist/test/stamps.spec.js +17 -7
  87. package/dist/test/stamps.spec.js.map +1 -1
  88. package/dist/test/testClient.d.ts.map +1 -1
  89. package/dist/test/testClient.js +19 -17
  90. package/dist/test/testClient.js.map +1 -1
  91. package/dist/test/testClientLogger.d.ts.map +1 -1
  92. package/dist/test/testClientLogger.js +12 -8
  93. package/dist/test/testClientLogger.js.map +1 -1
  94. package/dist/test/testServer.js +7 -7
  95. package/dist/test/testServer.js.map +1 -1
  96. package/dist/test/testUtils.d.ts +0 -1
  97. package/dist/test/testUtils.d.ts.map +1 -1
  98. package/dist/test/testUtils.js +9 -10
  99. package/dist/test/testUtils.js.map +1 -1
  100. package/dist/test/text.js +2 -3
  101. package/dist/test/text.js.map +1 -1
  102. package/dist/test/wordUnitTests.spec.js +1 -2
  103. package/dist/test/wordUnitTests.spec.js.map +1 -1
  104. package/dist/textSegment.js +3 -2
  105. package/dist/textSegment.js.map +1 -1
  106. package/dist/zamboni.js +20 -10
  107. package/dist/zamboni.js.map +1 -1
  108. package/lib/MergeTreeTextHelper.js +1 -0
  109. package/lib/MergeTreeTextHelper.js.map +1 -1
  110. package/lib/attributionCollection.js +4 -2
  111. package/lib/attributionCollection.js.map +1 -1
  112. package/lib/client.js +10 -3
  113. package/lib/client.js.map +1 -1
  114. package/lib/collections/rbTree.d.ts.map +1 -1
  115. package/lib/collections/rbTree.js +3 -0
  116. package/lib/collections/rbTree.js.map +1 -1
  117. package/lib/endOfTreeSegment.d.ts.map +1 -1
  118. package/lib/endOfTreeSegment.js +25 -26
  119. package/lib/endOfTreeSegment.js.map +1 -1
  120. package/lib/legacy.d.ts +1 -1
  121. package/lib/localReference.js +12 -2
  122. package/lib/localReference.js.map +1 -1
  123. package/lib/mergeTree.d.ts.map +1 -1
  124. package/lib/mergeTree.js +68 -62
  125. package/lib/mergeTree.js.map +1 -1
  126. package/lib/mergeTreeNodes.d.ts.map +1 -1
  127. package/lib/mergeTreeNodes.js +111 -84
  128. package/lib/mergeTreeNodes.js.map +1 -1
  129. package/lib/mergeTreeTracking.js +4 -0
  130. package/lib/mergeTreeTracking.js.map +1 -1
  131. package/lib/partialLengths.js +89 -63
  132. package/lib/partialLengths.js.map +1 -1
  133. package/lib/perspective.js +12 -2
  134. package/lib/perspective.js.map +1 -1
  135. package/lib/public.d.ts +1 -1
  136. package/lib/referencePositions.d.ts.map +1 -1
  137. package/lib/segmentGroupCollection.js +2 -0
  138. package/lib/segmentGroupCollection.js.map +1 -1
  139. package/lib/segmentInfos.d.ts.map +1 -1
  140. package/lib/segmentPropertiesManager.js +1 -3
  141. package/lib/segmentPropertiesManager.js.map +1 -1
  142. package/lib/snapshotLoader.js +68 -63
  143. package/lib/snapshotLoader.js.map +1 -1
  144. package/lib/snapshotV1.d.ts.map +1 -1
  145. package/lib/snapshotV1.js +17 -7
  146. package/lib/snapshotV1.js.map +1 -1
  147. package/lib/snapshotlegacy.d.ts.map +1 -1
  148. package/lib/snapshotlegacy.js +18 -10
  149. package/lib/snapshotlegacy.js.map +1 -1
  150. package/lib/sortedSet.js +1 -3
  151. package/lib/sortedSet.js.map +1 -1
  152. package/lib/test/attributionCollection.spec.js +1 -1
  153. package/lib/test/attributionCollection.spec.js.map +1 -1
  154. package/lib/test/beastTest.spec.js +7 -3
  155. package/lib/test/beastTest.spec.js.map +1 -1
  156. package/lib/test/clientTestHelper.js +7 -4
  157. package/lib/test/clientTestHelper.js.map +1 -1
  158. package/lib/test/obliterateOperations.d.ts.map +1 -1
  159. package/lib/test/snapshot.utils.d.ts.map +1 -1
  160. package/lib/test/snapshot.utils.js +5 -3
  161. package/lib/test/snapshot.utils.js.map +1 -1
  162. package/lib/test/testClient.d.ts.map +1 -1
  163. package/lib/test/testClient.js +16 -14
  164. package/lib/test/testClient.js.map +1 -1
  165. package/lib/test/testClientLogger.d.ts.map +1 -1
  166. package/lib/test/testClientLogger.js +10 -6
  167. package/lib/test/testClientLogger.js.map +1 -1
  168. package/lib/test/testServer.js +5 -5
  169. package/lib/test/testServer.js.map +1 -1
  170. package/lib/test/testUtils.d.ts +0 -1
  171. package/lib/test/testUtils.d.ts.map +1 -1
  172. package/lib/textSegment.js +3 -2
  173. package/lib/textSegment.js.map +1 -1
  174. package/package.json +39 -58
  175. package/tsconfig.json +1 -1
  176. package/internal.d.ts +0 -11
  177. package/legacy.d.ts +0 -11
  178. /package/api-extractor/{api-extractor.current.json → api-extractor-report.current.json} +0 -0
  179. /package/api-extractor/{api-extractor.legacy.json → api-extractor-report.legacy.json} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
package/dist/mergeTree.js CHANGED
@@ -19,15 +19,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
19
19
  }) : function(o, v) {
20
20
  o["default"] = v;
21
21
  });
22
- var __importStar = (this && this.__importStar) || function (mod) {
23
- if (mod && mod.__esModule) return mod;
24
- var result = {};
25
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
- __setModuleDefault(result, mod);
27
- return result;
28
- };
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
29
39
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.MergeTree = exports.getSlideToSegoff = exports.findRootMergeBlock = exports.errorIfOptionNotTrue = exports.isRemovedAndAcked = void 0;
40
+ exports.MergeTree = void 0;
41
+ exports.isRemovedAndAcked = isRemovedAndAcked;
42
+ exports.errorIfOptionNotTrue = errorIfOptionNotTrue;
43
+ exports.findRootMergeBlock = findRootMergeBlock;
44
+ exports.getSlideToSegoff = getSlideToSegoff;
31
45
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
32
46
  /* eslint-disable no-bitwise */
33
47
  const internal_1 = require("@fluidframework/core-utils/internal");
@@ -56,7 +70,6 @@ function isRemovedAndAcked(segment) {
56
70
  const removalInfo = (0, segmentInfos_js_1.toRemovalInfo)(segment);
57
71
  return removalInfo !== undefined && opstampUtils.isAcked(removalInfo.removes[0]);
58
72
  }
59
- exports.isRemovedAndAcked = isRemovedAndAcked;
60
73
  function nodeTotalLength(mergeTree, node) {
61
74
  if (!node.isLeaf()) {
62
75
  return node.cachedLength;
@@ -114,7 +127,6 @@ function errorIfOptionNotTrue(options, option) {
114
127
  throw new Error(`${option} is not enabled.`);
115
128
  }
116
129
  }
117
- exports.errorIfOptionNotTrue = errorIfOptionNotTrue;
118
130
  function findRootMergeBlock(segmentOrNode) {
119
131
  if (segmentOrNode === undefined) {
120
132
  return undefined;
@@ -127,7 +139,6 @@ function findRootMergeBlock(segmentOrNode) {
127
139
  }
128
140
  return maybeRoot?.mergeTree === undefined ? undefined : maybeRoot;
129
141
  }
130
- exports.findRootMergeBlock = findRootMergeBlock;
131
142
  /**
132
143
  * Find the segment to which a reference will slide if it needs to slide, or undefined if there
133
144
  * is no valid segment (i.e. the tree is empty).
@@ -220,28 +231,28 @@ function getSlideToSegoff(segoff, slidingPreference = localReference_js_1.Slidin
220
231
  offset,
221
232
  };
222
233
  }
223
- exports.getSlideToSegoff = getSlideToSegoff;
224
234
  const forwardPred = (ref) => ref.slidingPreference !== localReference_js_1.SlidingPreference.BACKWARD;
225
235
  const backwardPred = (ref) => ref.slidingPreference === localReference_js_1.SlidingPreference.BACKWARD;
226
236
  class Obliterates {
237
+ mergeTree;
238
+ /**
239
+ * Array containing the all obliterate operations within the
240
+ * collab window.
241
+ *
242
+ * The obliterates are stored in sequence order which accelerates clean up in setMinSeq
243
+ *
244
+ * See https://github.com/microsoft/FluidFramework/blob/main/packages/dds/merge-tree/docs/Obliterate.md#remote-perspective
245
+ * for additional context
246
+ */
247
+ seqOrdered = new internal_1.DoublyLinkedList();
248
+ /**
249
+ * This contains a sorted lists of all obliterate starts
250
+ * and is used to accelerate finding overlapping obliterates
251
+ * as well as determining if there are any obliterates at all.
252
+ */
253
+ startOrdered = new sortedSegmentSet_js_1.SortedSegmentSet();
227
254
  constructor(mergeTree) {
228
255
  this.mergeTree = mergeTree;
229
- /**
230
- * Array containing the all obliterate operations within the
231
- * collab window.
232
- *
233
- * The obliterates are stored in sequence order which accelerates clean up in setMinSeq
234
- *
235
- * See https://github.com/microsoft/FluidFramework/blob/main/packages/dds/merge-tree/docs/Obliterate.md#remote-perspective
236
- * for additional context
237
- */
238
- this.seqOrdered = new internal_1.DoublyLinkedList();
239
- /**
240
- * This contains a sorted lists of all obliterate starts
241
- * and is used to accelerate finding overlapping obliterates
242
- * as well as determining if there are any obliterates at all.
243
- */
244
- this.startOrdered = new sortedSegmentSet_js_1.SortedSegmentSet();
245
256
  }
246
257
  setMinSeq(minSeq) {
247
258
  // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
@@ -321,46 +332,41 @@ class Obliterates {
321
332
  * @internal
322
333
  */
323
334
  class MergeTree {
335
+ options;
336
+ static options = {
337
+ incrementalUpdate: true,
338
+ insertAfterRemovedSegs: true,
339
+ zamboniSegments: true,
340
+ };
341
+ /**
342
+ * A sentinel value that indicates an inserting walk should continue to the next block sibling.
343
+ * This can occur for example when tie-break forces insertion of a segment past an entire block (and
344
+ * the inserting walk first recurses into the block before realizing that).
345
+ */
346
+ static theUnfinishedNode = { childCount: -1 };
347
+ collabWindow = new mergeTreeNodes_js_1.CollaborationWindow();
348
+ pendingSegments = new internal_1.DoublyLinkedList();
349
+ segmentsToScour = new internal_1.Heap(LRUSegmentComparer);
350
+ attributionPolicy;
324
351
  get localPerspective() {
325
352
  return this.collabWindow.localPerspective;
326
353
  }
354
+ /**
355
+ * Whether or not all blocks in the mergeTree currently have information about local partial lengths computed.
356
+ * This information is only necessary on reconnect, and otherwise costly to bookkeep.
357
+ * This field enables tracking whether partials need to be recomputed using localSeq information.
358
+ */
359
+ localPartialsComputed = false;
360
+ // for now assume only markers have ids and so point directly at the Segment
361
+ // if we need to have pointers to non-markers, we can change to point at local refs
362
+ idToMarker = new Map();
363
+ mergeTreeDeltaCallback;
364
+ mergeTreeMaintenanceCallback;
365
+ // TODO:AB#29553: This property doesn't seem to be adequately round-tripped through summarization.
366
+ // Specifically, it seems like we drop information about obliterates within the collab window for at least V1 summaries.
367
+ obliterates = new Obliterates(this);
327
368
  constructor(options) {
328
369
  this.options = options;
329
- this.collabWindow = new mergeTreeNodes_js_1.CollaborationWindow();
330
- this.pendingSegments = new internal_1.DoublyLinkedList();
331
- this.segmentsToScour = new internal_1.Heap(LRUSegmentComparer);
332
- /**
333
- * Whether or not all blocks in the mergeTree currently have information about local partial lengths computed.
334
- * This information is only necessary on reconnect, and otherwise costly to bookkeep.
335
- * This field enables tracking whether partials need to be recomputed using localSeq information.
336
- */
337
- this.localPartialsComputed = false;
338
- // for now assume only markers have ids and so point directly at the Segment
339
- // if we need to have pointers to non-markers, we can change to point at local refs
340
- this.idToMarker = new Map();
341
- // TODO:AB#29553: This property doesn't seem to be adequately round-tripped through summarization.
342
- // Specifically, it seems like we drop information about obliterates within the collab window for at least V1 summaries.
343
- this.obliterates = new Obliterates(this);
344
- this.splitLeafSegment = (segment, pos) => {
345
- if (!(pos > 0 && segment)) {
346
- return {};
347
- }
348
- const next = segment.splitAt(pos);
349
- (0, mergeTreeNodes_js_1.assertSegmentLeaf)(next);
350
- if (segment?.segmentGroups) {
351
- next.segmentGroups ??= new segmentGroupCollection_js_1.SegmentGroupCollection(next);
352
- segment.segmentGroups.copyTo(next.segmentGroups);
353
- }
354
- (0, segmentPropertiesManager_js_1.copyPropertiesAndManager)(segment, next);
355
- segment.localRefs?.split(pos, next);
356
- this.mergeTreeMaintenanceCallback?.({
357
- operation: mergeTreeDeltaCallback_js_1.MergeTreeMaintenanceType.SPLIT,
358
- deltaSegments: [{ segment }, { segment: next }],
359
- }, undefined);
360
- return { next };
361
- };
362
- this.startOfTree = new endOfTreeSegment_js_1.StartOfTreeSegment(this);
363
- this.endOfTree = new endOfTreeSegment_js_1.EndOfTreeSegment(this);
364
370
  this._root = this.makeBlock(0);
365
371
  this._root.mergeTree = this;
366
372
  this.attributionPolicy = options?.attribution?.policyFactory?.();
@@ -371,6 +377,7 @@ class MergeTree {
371
377
  this.obliterates.addOrUpdate(newObliterate);
372
378
  }
373
379
  }
380
+ _root;
374
381
  get root() {
375
382
  return this._root;
376
383
  }
@@ -1124,6 +1131,24 @@ class MergeTree {
1124
1131
  }
1125
1132
  return newest;
1126
1133
  }
1134
+ splitLeafSegment = (segment, pos) => {
1135
+ if (!(pos > 0 && segment)) {
1136
+ return {};
1137
+ }
1138
+ const next = segment.splitAt(pos);
1139
+ (0, mergeTreeNodes_js_1.assertSegmentLeaf)(next);
1140
+ if (segment?.segmentGroups) {
1141
+ next.segmentGroups ??= new segmentGroupCollection_js_1.SegmentGroupCollection(next);
1142
+ segment.segmentGroups.copyTo(next.segmentGroups);
1143
+ }
1144
+ (0, segmentPropertiesManager_js_1.copyPropertiesAndManager)(segment, next);
1145
+ segment.localRefs?.split(pos, next);
1146
+ this.mergeTreeMaintenanceCallback?.({
1147
+ operation: mergeTreeDeltaCallback_js_1.MergeTreeMaintenanceType.SPLIT,
1148
+ deltaSegments: [{ segment }, { segment: next }],
1149
+ }, undefined);
1150
+ return { next };
1151
+ };
1127
1152
  ensureIntervalBoundary(pos, perspective) {
1128
1153
  this.insertingWalk(pos, perspective, {
1129
1154
  seq: constants_js_1.TreeMaintenanceSequenceNumber,
@@ -1670,6 +1695,8 @@ class MergeTree {
1670
1695
  const segment = lref.getSegment();
1671
1696
  return segment?.localRefs?.removeLocalRef(lref);
1672
1697
  }
1698
+ startOfTree = new endOfTreeSegment_js_1.StartOfTreeSegment(this);
1699
+ endOfTree = new endOfTreeSegment_js_1.EndOfTreeSegment(this);
1673
1700
  createLocalReferencePosition(_segment, offset, refType, properties, slidingPreference, canSlideToEndpoint) {
1674
1701
  if (_segment !== "start" &&
1675
1702
  _segment !== "end" &&
@@ -2030,15 +2057,4 @@ class MergeTree {
2030
2057
  }
2031
2058
  }
2032
2059
  exports.MergeTree = MergeTree;
2033
- MergeTree.options = {
2034
- incrementalUpdate: true,
2035
- insertAfterRemovedSegs: true,
2036
- zamboniSegments: true,
2037
- };
2038
- /**
2039
- * A sentinel value that indicates an inserting walk should continue to the next block sibling.
2040
- * This can occur for example when tie-break forces insertion of a segment past an entire block (and
2041
- * the inserting walk first recurses into the block before realizing that).
2042
- */
2043
- MergeTree.theUnfinishedNode = { childCount: -1 };
2044
2060
  //# sourceMappingURL=mergeTree.js.map