@fluidframework/merge-tree 2.11.0 → 2.12.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 (174) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/api-report/merge-tree.legacy.alpha.api.md +50 -19
  3. package/dist/MergeTreeTextHelper.js.map +1 -1
  4. package/dist/attributionPolicy.d.ts.map +1 -1
  5. package/dist/attributionPolicy.js +2 -1
  6. package/dist/attributionPolicy.js.map +1 -1
  7. package/dist/client.js.map +1 -1
  8. package/dist/endOfTreeSegment.d.ts +3 -3
  9. package/dist/endOfTreeSegment.d.ts.map +1 -1
  10. package/dist/endOfTreeSegment.js.map +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/legacy.d.ts +2 -1
  16. package/dist/localReference.d.ts +1 -0
  17. package/dist/localReference.d.ts.map +1 -1
  18. package/dist/localReference.js +1 -0
  19. package/dist/localReference.js.map +1 -1
  20. package/dist/mergeTree.d.ts.map +1 -1
  21. package/dist/mergeTree.js +19 -2
  22. package/dist/mergeTree.js.map +1 -1
  23. package/dist/mergeTreeNodeWalk.d.ts +5 -5
  24. package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
  25. package/dist/mergeTreeNodeWalk.js.map +1 -1
  26. package/dist/mergeTreeNodes.d.ts +115 -7
  27. package/dist/mergeTreeNodes.d.ts.map +1 -1
  28. package/dist/mergeTreeNodes.js +25 -1
  29. package/dist/mergeTreeNodes.js.map +1 -1
  30. package/dist/partialLengths.d.ts +2 -2
  31. package/dist/partialLengths.d.ts.map +1 -1
  32. package/dist/partialLengths.js +5 -1
  33. package/dist/partialLengths.js.map +1 -1
  34. package/dist/perspective.d.ts +9 -9
  35. package/dist/perspective.d.ts.map +1 -1
  36. package/dist/perspective.js.map +1 -1
  37. package/dist/revertibles.d.ts.map +1 -1
  38. package/dist/revertibles.js +3 -0
  39. package/dist/revertibles.js.map +1 -1
  40. package/dist/snapshotLoader.js.map +1 -1
  41. package/dist/snapshotV1.js.map +1 -1
  42. package/dist/snapshotlegacy.d.ts +2 -2
  43. package/dist/snapshotlegacy.d.ts.map +1 -1
  44. package/dist/snapshotlegacy.js.map +1 -1
  45. package/dist/sortedSegmentSet.d.ts +4 -4
  46. package/dist/sortedSegmentSet.d.ts.map +1 -1
  47. package/dist/sortedSegmentSet.js.map +1 -1
  48. package/dist/test/beastTest.spec.d.ts.map +1 -1
  49. package/dist/test/beastTest.spec.js.map +1 -1
  50. package/dist/test/client.applyMsg.spec.js.map +1 -1
  51. package/dist/test/client.attributionFarm.spec.d.ts.map +1 -1
  52. package/dist/test/client.attributionFarm.spec.js.map +1 -1
  53. package/dist/test/client.getPosition.spec.js.map +1 -1
  54. package/dist/test/client.localReference.spec.js.map +1 -1
  55. package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
  56. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  57. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
  58. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  59. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  60. package/dist/test/snapshot.utils.d.ts +2 -2
  61. package/dist/test/snapshot.utils.d.ts.map +1 -1
  62. package/dist/test/snapshot.utils.js.map +1 -1
  63. package/dist/test/sortedSegmentSet.spec.js.map +1 -1
  64. package/dist/test/testClient.d.ts +6 -6
  65. package/dist/test/testClient.d.ts.map +1 -1
  66. package/dist/test/testClient.js.map +1 -1
  67. package/dist/test/testClientLogger.js.map +1 -1
  68. package/dist/test/testUtils.d.ts +2 -2
  69. package/dist/test/testUtils.d.ts.map +1 -1
  70. package/dist/test/testUtils.js.map +1 -1
  71. package/dist/test/text.d.ts +2 -2
  72. package/dist/test/text.d.ts.map +1 -1
  73. package/dist/test/text.js.map +1 -1
  74. package/dist/test/tracking.spec.js.map +1 -1
  75. package/dist/test/wordUnitTests.spec.d.ts.map +1 -1
  76. package/dist/test/wordUnitTests.spec.js +3 -1
  77. package/dist/test/wordUnitTests.spec.js.map +1 -1
  78. package/dist/zamboni.js.map +1 -1
  79. package/lib/MergeTreeTextHelper.js.map +1 -1
  80. package/lib/attributionPolicy.d.ts.map +1 -1
  81. package/lib/attributionPolicy.js +2 -1
  82. package/lib/attributionPolicy.js.map +1 -1
  83. package/lib/client.js.map +1 -1
  84. package/lib/endOfTreeSegment.d.ts +3 -3
  85. package/lib/endOfTreeSegment.d.ts.map +1 -1
  86. package/lib/endOfTreeSegment.js.map +1 -1
  87. package/lib/index.d.ts +1 -1
  88. package/lib/index.d.ts.map +1 -1
  89. package/lib/index.js +1 -1
  90. package/lib/index.js.map +1 -1
  91. package/lib/legacy.d.ts +2 -1
  92. package/lib/localReference.d.ts +1 -0
  93. package/lib/localReference.d.ts.map +1 -1
  94. package/lib/localReference.js +1 -0
  95. package/lib/localReference.js.map +1 -1
  96. package/lib/mergeTree.d.ts.map +1 -1
  97. package/lib/mergeTree.js +22 -3
  98. package/lib/mergeTree.js.map +1 -1
  99. package/lib/mergeTreeNodeWalk.d.ts +5 -5
  100. package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
  101. package/lib/mergeTreeNodeWalk.js.map +1 -1
  102. package/lib/mergeTreeNodes.d.ts +115 -7
  103. package/lib/mergeTreeNodes.d.ts.map +1 -1
  104. package/lib/mergeTreeNodes.js +23 -0
  105. package/lib/mergeTreeNodes.js.map +1 -1
  106. package/lib/partialLengths.d.ts +2 -2
  107. package/lib/partialLengths.d.ts.map +1 -1
  108. package/lib/partialLengths.js +5 -1
  109. package/lib/partialLengths.js.map +1 -1
  110. package/lib/perspective.d.ts +9 -9
  111. package/lib/perspective.d.ts.map +1 -1
  112. package/lib/perspective.js.map +1 -1
  113. package/lib/revertibles.d.ts.map +1 -1
  114. package/lib/revertibles.js +4 -1
  115. package/lib/revertibles.js.map +1 -1
  116. package/lib/snapshotLoader.js.map +1 -1
  117. package/lib/snapshotV1.js.map +1 -1
  118. package/lib/snapshotlegacy.d.ts +2 -2
  119. package/lib/snapshotlegacy.d.ts.map +1 -1
  120. package/lib/snapshotlegacy.js.map +1 -1
  121. package/lib/sortedSegmentSet.d.ts +4 -4
  122. package/lib/sortedSegmentSet.d.ts.map +1 -1
  123. package/lib/sortedSegmentSet.js.map +1 -1
  124. package/lib/test/beastTest.spec.d.ts.map +1 -1
  125. package/lib/test/beastTest.spec.js.map +1 -1
  126. package/lib/test/client.applyMsg.spec.js.map +1 -1
  127. package/lib/test/client.attributionFarm.spec.d.ts.map +1 -1
  128. package/lib/test/client.attributionFarm.spec.js.map +1 -1
  129. package/lib/test/client.getPosition.spec.js.map +1 -1
  130. package/lib/test/client.localReference.spec.js.map +1 -1
  131. package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
  132. package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  133. package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
  134. package/lib/test/mergeTreeOperationRunner.js.map +1 -1
  135. package/lib/test/resetPendingSegmentsToOp.spec.js +1 -1
  136. package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  137. package/lib/test/snapshot.utils.d.ts +2 -2
  138. package/lib/test/snapshot.utils.d.ts.map +1 -1
  139. package/lib/test/snapshot.utils.js.map +1 -1
  140. package/lib/test/sortedSegmentSet.spec.js.map +1 -1
  141. package/lib/test/testClient.d.ts +6 -6
  142. package/lib/test/testClient.d.ts.map +1 -1
  143. package/lib/test/testClient.js +1 -1
  144. package/lib/test/testClient.js.map +1 -1
  145. package/lib/test/testClientLogger.js.map +1 -1
  146. package/lib/test/testUtils.d.ts +2 -2
  147. package/lib/test/testUtils.d.ts.map +1 -1
  148. package/lib/test/testUtils.js.map +1 -1
  149. package/lib/test/text.d.ts +2 -2
  150. package/lib/test/text.d.ts.map +1 -1
  151. package/lib/test/text.js.map +1 -1
  152. package/lib/test/tracking.spec.js.map +1 -1
  153. package/lib/test/wordUnitTests.spec.d.ts.map +1 -1
  154. package/lib/test/wordUnitTests.spec.js +3 -1
  155. package/lib/test/wordUnitTests.spec.js.map +1 -1
  156. package/lib/zamboni.js.map +1 -1
  157. package/package.json +17 -17
  158. package/src/MergeTreeTextHelper.ts +2 -2
  159. package/src/attributionPolicy.ts +3 -1
  160. package/src/client.ts +1 -1
  161. package/src/endOfTreeSegment.ts +6 -3
  162. package/src/index.ts +1 -0
  163. package/src/localReference.ts +1 -0
  164. package/src/mergeTree.ts +19 -0
  165. package/src/mergeTreeNodeWalk.ts +6 -6
  166. package/src/mergeTreeNodes.ts +136 -9
  167. package/src/partialLengths.ts +9 -5
  168. package/src/perspective.ts +11 -11
  169. package/src/revertibles.ts +9 -11
  170. package/src/snapshotLoader.ts +7 -7
  171. package/src/snapshotV1.ts +4 -4
  172. package/src/snapshotlegacy.ts +6 -6
  173. package/src/sortedSegmentSet.ts +8 -9
  174. package/src/zamboni.ts +2 -2
@@ -8,16 +8,12 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import { DoublyLinkedList } from "./collections/index.js";
10
10
  import { EndOfTreeSegment } from "./endOfTreeSegment.js";
11
+ // eslint-disable-next-line import/no-deprecated
11
12
  import { LocalReferenceCollection, LocalReferencePosition } from "./localReference.js";
12
13
  import { MergeTree, findRootMergeBlock } from "./mergeTree.js";
13
14
  import { IMergeTreeDeltaCallbackArgs } from "./mergeTreeDeltaCallback.js";
14
15
  import { depthFirstNodeWalk } from "./mergeTreeNodeWalk.js";
15
- import {
16
- ISegment,
17
- ISegmentInternal,
18
- toRemovalInfo,
19
- type ISegmentLeaf,
20
- } from "./mergeTreeNodes.js";
16
+ import { toRemovalInfo, type ISegmentLeaf } from "./mergeTreeNodes.js";
21
17
  import { ITrackingGroup, Trackable, UnorderedTrackingGroup } from "./mergeTreeTracking.js";
22
18
  import { IJSONSegment, MergeTreeDeltaType, ReferenceType } from "./ops.js";
23
19
  import { PropertySet, matchProperties } from "./properties.js";
@@ -103,6 +99,7 @@ function findMergeTreeWithRevert(trackable: Trackable): MergeTreeWithRevert {
103
99
  const refCallbacks: MergeTreeWithRevert["__mergeTreeRevertible"]["refCallbacks"] = {
104
100
  afterSlide: (r: LocalReferencePosition) => {
105
101
  if (mergeTree.referencePositionToLocalPosition(r) === DetachedReferencePosition) {
102
+ // eslint-disable-next-line import/no-deprecated
106
103
  const refs = LocalReferenceCollection.setOrGet(detachedReferences);
107
104
  refs.addAfterTombstones([r]);
108
105
  }
@@ -246,7 +243,7 @@ export function discardMergeTreeDeltaRevertible(
246
243
  t.trackingCollection.unlink(r.trackingGroup);
247
244
  // remove untracked local references
248
245
  if (t.trackingCollection.empty && !t.isLeaf()) {
249
- const segment: ISegmentInternal | undefined = t.getSegment();
246
+ const segment: ISegmentLeaf | undefined = t.getSegment();
250
247
  segment?.localRefs?.removeLocalRef(t);
251
248
  }
252
249
  }
@@ -287,7 +284,7 @@ function revertLocalRemove(
287
284
 
288
285
  assert(!tracked.isLeaf(), 0x3f4 /* removes must track local refs */);
289
286
 
290
- const refSeg: ISegmentInternal | undefined = tracked.getSegment();
287
+ const refSeg: ISegmentLeaf | undefined = tracked.getSegment();
291
288
  let realPos = mergeTreeWithRevert.referencePositionToLocalPosition(tracked);
292
289
 
293
290
  // References which are on EndOfStringSegment don't return detached for pos,
@@ -340,7 +337,7 @@ function revertLocalRemove(
340
337
  insertSegment.parent!,
341
338
  insertSegment,
342
339
  undefined,
343
- (seg: ISegmentInternal) => {
340
+ (seg: ISegmentLeaf) => {
344
341
  if (seg.localRefs?.empty === false) {
345
342
  return seg.localRefs.walkReferences(refHandler, undefined, forward);
346
343
  }
@@ -359,6 +356,7 @@ function revertLocalRemove(
359
356
  }
360
357
 
361
358
  if (insertRef !== undefined) {
359
+ // eslint-disable-next-line import/no-deprecated
362
360
  const localRefs = LocalReferenceCollection.setOrGet(insertSegment);
363
361
  if (insertRef.before?.empty === false) {
364
362
  localRefs.addBeforeTombstones(insertRef.before.map((n) => n.data));
@@ -372,7 +370,7 @@ function revertLocalRemove(
372
370
  tg.link(insertSegment);
373
371
  tg.unlink(tracked);
374
372
  }
375
- const segment: ISegmentInternal | undefined = tracked.getSegment();
373
+ const segment: ISegmentLeaf | undefined = tracked.getSegment();
376
374
  segment?.localRefs?.removeLocalRef(tracked);
377
375
  }
378
376
  }
@@ -393,7 +391,7 @@ function revertLocalAnnotate(
393
391
  }
394
392
  }
395
393
 
396
- function getPosition(mergeTreeWithRevert: MergeTreeWithRevert, segment: ISegment): number {
394
+ function getPosition(mergeTreeWithRevert: MergeTreeWithRevert, segment: ISegmentLeaf): number {
397
395
  return mergeTreeWithRevert.getPosition(
398
396
  segment,
399
397
  mergeTreeWithRevert.collabWindow.currentSeq,
@@ -24,7 +24,7 @@ import {
24
24
  import { Client } from "./client.js";
25
25
  import { NonCollabClient, UniversalSequenceNumber } from "./constants.js";
26
26
  import { MergeTree } from "./mergeTree.js";
27
- import { ISegment } from "./mergeTreeNodes.js";
27
+ import { ISegmentLeaf } from "./mergeTreeNodes.js";
28
28
  import { IJSONSegment } from "./ops.js";
29
29
  import {
30
30
  IJSONSegmentWithMergeInfo,
@@ -96,8 +96,8 @@ export class SnapshotLoader {
96
96
 
97
97
  private readonly specToSegment = (
98
98
  spec: IJSONSegment | IJSONSegmentWithMergeInfo,
99
- ): ISegment => {
100
- let seg: ISegment;
99
+ ): ISegmentLeaf => {
100
+ let seg: ISegmentLeaf;
101
101
 
102
102
  if (hasMergeInfo(spec)) {
103
103
  seg = this.client.specToSegment(spec.json);
@@ -207,7 +207,7 @@ export class SnapshotLoader {
207
207
  }
208
208
 
209
209
  let chunksWithAttribution = chunk1.attribution === undefined ? 0 : 1;
210
- const segs: ISegment[] = [];
210
+ const segs: ISegmentLeaf[] = [];
211
211
  let lengthSofar = chunk1.length;
212
212
  for (
213
213
  let chunkIndex = 1;
@@ -244,7 +244,7 @@ export class SnapshotLoader {
244
244
 
245
245
  // Helper to insert segments at the end of the MergeTree.
246
246
  const mergeTree = this.mergeTree;
247
- const append = (segments: ISegment[], cli: number, seq: number): void => {
247
+ const append = (segments: ISegmentLeaf[], cli: number, seq: number): void => {
248
248
  mergeTree.insertSegments(
249
249
  mergeTree.root.cachedLength ?? 0,
250
250
  segments,
@@ -256,7 +256,7 @@ export class SnapshotLoader {
256
256
  };
257
257
 
258
258
  // Helpers to batch-insert segments that are below the min seq
259
- const batch: ISegment[] = [];
259
+ const batch: ISegmentLeaf[] = [];
260
260
  const flushBatch = (): void => {
261
261
  if (batch.length > 0) {
262
262
  append(batch, NonCollabClient, UniversalSequenceNumber);
@@ -280,7 +280,7 @@ export class SnapshotLoader {
280
280
  flushBatch();
281
281
  }
282
282
 
283
- private extractAttribution(segments: ISegment[], chunk: MergeTreeChunkV1): void {
283
+ private extractAttribution(segments: ISegmentLeaf[], chunk: MergeTreeChunkV1): void {
284
284
  if (chunk.attribution) {
285
285
  const { attributionPolicy } = this.mergeTree;
286
286
  if (attributionPolicy === undefined) {
package/src/snapshotV1.ts CHANGED
@@ -22,7 +22,7 @@ import { IAttributionCollection } from "./attributionCollection.js";
22
22
  import { UnassignedSequenceNumber } from "./constants.js";
23
23
  import { MergeTree } from "./mergeTree.js";
24
24
  import { walkAllChildSegments } from "./mergeTreeNodeWalk.js";
25
- import { ISegment } from "./mergeTreeNodes.js";
25
+ import { ISegmentLeaf } from "./mergeTreeNodes.js";
26
26
  import type { IJSONSegment } from "./ops.js";
27
27
  import { PropertySet, matchProperties } from "./properties.js";
28
28
  import {
@@ -208,7 +208,7 @@ export class SnapshotV1 {
208
208
  };
209
209
 
210
210
  // Helper to serialize the given `segment` and add it to the snapshot (if a segment is provided).
211
- const pushSeg = (segment?: ISegment): void => {
211
+ const pushSeg = (segment?: ISegmentLeaf): void => {
212
212
  if (segment) {
213
213
  if (segment.properties !== undefined && Object.keys(segment.properties).length === 0) {
214
214
  segment.properties = undefined;
@@ -221,8 +221,8 @@ export class SnapshotV1 {
221
221
  }
222
222
  };
223
223
 
224
- let prev: ISegment | undefined;
225
- const extractSegment = (segment: ISegment): boolean => {
224
+ let prev: ISegmentLeaf | undefined;
225
+ const extractSegment = (segment: ISegmentLeaf): boolean => {
226
226
  // Elide segments that do not need to be included in the snapshot. A segment may be elided if
227
227
  // either condition is true:
228
228
  // a) The segment has not yet been ACKed. We do not need to snapshot unACKed segments because
@@ -18,7 +18,7 @@ import {
18
18
 
19
19
  import { NonCollabClient, UnassignedSequenceNumber } from "./constants.js";
20
20
  import { MergeTree } from "./mergeTree.js";
21
- import { ISegment, type ISegmentLeaf } from "./mergeTreeNodes.js";
21
+ import { type ISegmentLeaf } from "./mergeTreeNodes.js";
22
22
  import { matchProperties } from "./properties.js";
23
23
  import {
24
24
  JsonSegmentSpecs,
@@ -55,7 +55,7 @@ export class SnapshotLegacy {
55
55
 
56
56
  private header: SnapshotHeader | undefined;
57
57
  private seq: number | undefined;
58
- private segments: ISegment[] | undefined;
58
+ private segments: ISegmentLeaf[] | undefined;
59
59
  private readonly logger: ITelemetryLoggerExt;
60
60
  private readonly chunkSize: number;
61
61
 
@@ -71,11 +71,11 @@ export class SnapshotLegacy {
71
71
  }
72
72
 
73
73
  private getSeqLengthSegs(
74
- allSegments: ISegment[],
74
+ allSegments: ISegmentLeaf[],
75
75
  approxSequenceLength: number,
76
76
  startIndex = 0,
77
77
  ): MergeTreeChunkLegacy {
78
- const segs: ISegment[] = [];
78
+ const segs: ISegmentLeaf[] = [];
79
79
  let sequenceLength = 0;
80
80
  let segCount = 0;
81
81
  let segsWithAttribution = 0;
@@ -191,7 +191,7 @@ export class SnapshotLegacy {
191
191
  return builder.getSummaryTree();
192
192
  }
193
193
 
194
- extractSync(): ISegment[] {
194
+ extractSync(): ISegmentLeaf[] {
195
195
  const collabWindow = this.mergeTree.collabWindow;
196
196
  const seq = (this.seq = collabWindow.minSeq);
197
197
  this.header = {
@@ -204,7 +204,7 @@ export class SnapshotLegacy {
204
204
 
205
205
  let originalSegments = 0;
206
206
 
207
- const segs: ISegment[] = [];
207
+ const segs: ISegmentLeaf[] = [];
208
208
  let prev: ISegmentLeaf | undefined;
209
209
  const extractSegment = (
210
210
  segment: ISegmentLeaf,
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { LocalReferencePosition } from "./localReference.js";
7
- import { ISegment } from "./mergeTreeNodes.js";
7
+ import { ISegmentInternal } from "./mergeTreeNodes.js";
8
8
  // eslint-disable-next-line import/no-deprecated
9
9
  import { SortedSet } from "./sortedSet.js";
10
10
 
@@ -12,9 +12,9 @@ import { SortedSet } from "./sortedSet.js";
12
12
  * @internal
13
13
  */
14
14
  export type SortedSegmentSetItem =
15
- | ISegment
15
+ | ISegmentInternal
16
16
  | LocalReferencePosition
17
- | { readonly segment: ISegment };
17
+ | { readonly segment: ISegmentInternal };
18
18
 
19
19
  /**
20
20
  * Stores a unique and sorted set of segments, or objects with segments
@@ -29,10 +29,9 @@ export type SortedSegmentSetItem =
29
29
  * @internal
30
30
  */
31
31
  // eslint-disable-next-line import/no-deprecated
32
- export class SortedSegmentSet<T extends SortedSegmentSetItem = ISegment> extends SortedSet<
33
- T,
34
- string
35
- > {
32
+ export class SortedSegmentSet<
33
+ T extends SortedSegmentSetItem = ISegmentInternal,
34
+ > extends SortedSet<T, string> {
36
35
  protected getKey(item: T): string {
37
36
  const maybeRef = item as Partial<LocalReferencePosition>;
38
37
  if (maybeRef.getSegment !== undefined && maybeRef.isLeaf?.() === false) {
@@ -43,12 +42,12 @@ export class SortedSegmentSet<T extends SortedSegmentSetItem = ISegment> extends
43
42
  // All that matters is that it's consistent.
44
43
  return lref.getSegment()?.ordinal ?? "";
45
44
  }
46
- const maybeObject = item as { readonly segment: ISegment };
45
+ const maybeObject = item as { readonly segment: ISegmentInternal };
47
46
  if (maybeObject?.segment) {
48
47
  return maybeObject.segment.ordinal;
49
48
  }
50
49
 
51
- const maybeSegment = item as ISegment;
50
+ const maybeSegment = item as ISegmentInternal;
52
51
  return maybeSegment.ordinal;
53
52
  }
54
53
 
package/src/zamboni.ts CHANGED
@@ -11,7 +11,7 @@ import { MergeTreeMaintenanceType } from "./mergeTreeDeltaCallback.js";
11
11
  import {
12
12
  type MergeBlock,
13
13
  IMergeNode,
14
- ISegment,
14
+ ISegmentLeaf,
15
15
  Marker,
16
16
  MaxNodesInBlock,
17
17
  seqLTE,
@@ -136,7 +136,7 @@ export function packParent(parent: MergeBlock, mergeTree: MergeTree): void {
136
136
  function scourNode(node: MergeBlock, holdNodes: IMergeNode[], mergeTree: MergeTree): void {
137
137
  // The previous segment is tracked while scouring for the purposes of merging adjacent segments
138
138
  // when possible.
139
- let prevSegment: ISegment | undefined;
139
+ let prevSegment: ISegmentLeaf | undefined;
140
140
  for (let k = 0; k < node.childCount; k++) {
141
141
  // TODO Non null asserting, why is this not null?
142
142
  const childNode = node.children[k]!;