@fluidframework/merge-tree 2.12.0 → 2.13.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 (285) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/MergeTreeTextHelper.d.ts.map +1 -1
  3. package/dist/MergeTreeTextHelper.js +0 -2
  4. package/dist/MergeTreeTextHelper.js.map +1 -1
  5. package/dist/attributionPolicy.d.ts.map +1 -1
  6. package/dist/attributionPolicy.js +6 -16
  7. package/dist/attributionPolicy.js.map +1 -1
  8. package/dist/client.d.ts +3 -4
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +39 -28
  11. package/dist/client.js.map +1 -1
  12. package/dist/endOfTreeSegment.d.ts +2 -1
  13. package/dist/endOfTreeSegment.d.ts.map +1 -1
  14. package/dist/endOfTreeSegment.js.map +1 -1
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/mergeTree.d.ts +8 -7
  20. package/dist/mergeTree.d.ts.map +1 -1
  21. package/dist/mergeTree.js +190 -216
  22. package/dist/mergeTree.js.map +1 -1
  23. package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
  24. package/dist/mergeTreeNodeWalk.js +3 -2
  25. package/dist/mergeTreeNodeWalk.js.map +1 -1
  26. package/dist/mergeTreeNodes.d.ts +76 -162
  27. package/dist/mergeTreeNodes.d.ts.map +1 -1
  28. package/dist/mergeTreeNodes.js +100 -112
  29. package/dist/mergeTreeNodes.js.map +1 -1
  30. package/dist/mergeTreeTracking.d.ts.map +1 -1
  31. package/dist/mergeTreeTracking.js +0 -2
  32. package/dist/mergeTreeTracking.js.map +1 -1
  33. package/dist/partialLengths.d.ts +2 -2
  34. package/dist/partialLengths.d.ts.map +1 -1
  35. package/dist/partialLengths.js +28 -26
  36. package/dist/partialLengths.js.map +1 -1
  37. package/dist/perspective.d.ts +3 -2
  38. package/dist/perspective.d.ts.map +1 -1
  39. package/dist/perspective.js +11 -4
  40. package/dist/perspective.js.map +1 -1
  41. package/dist/referencePositions.d.ts.map +1 -1
  42. package/dist/referencePositions.js +4 -1
  43. package/dist/referencePositions.js.map +1 -1
  44. package/dist/revertibles.d.ts.map +1 -1
  45. package/dist/revertibles.js +10 -11
  46. package/dist/revertibles.js.map +1 -1
  47. package/dist/segmentGroupCollection.d.ts +4 -4
  48. package/dist/segmentGroupCollection.d.ts.map +1 -1
  49. package/dist/segmentGroupCollection.js +0 -6
  50. package/dist/segmentGroupCollection.js.map +1 -1
  51. package/dist/segmentInfos.d.ts +257 -0
  52. package/dist/segmentInfos.d.ts.map +1 -0
  53. package/dist/segmentInfos.js +166 -0
  54. package/dist/segmentInfos.js.map +1 -0
  55. package/dist/snapshotLoader.d.ts.map +1 -1
  56. package/dist/snapshotLoader.js +38 -44
  57. package/dist/snapshotLoader.js.map +1 -1
  58. package/dist/snapshotV1.d.ts.map +1 -1
  59. package/dist/snapshotV1.js +9 -12
  60. package/dist/snapshotV1.js.map +1 -1
  61. package/dist/snapshotlegacy.d.ts +2 -2
  62. package/dist/snapshotlegacy.d.ts.map +1 -1
  63. package/dist/snapshotlegacy.js +5 -3
  64. package/dist/snapshotlegacy.js.map +1 -1
  65. package/dist/sortedSegmentSet.d.ts.map +1 -1
  66. package/dist/sortedSegmentSet.js +5 -8
  67. package/dist/sortedSegmentSet.js.map +1 -1
  68. package/dist/test/beastTest.spec.d.ts +0 -2
  69. package/dist/test/beastTest.spec.d.ts.map +1 -1
  70. package/dist/test/beastTest.spec.js +1 -5
  71. package/dist/test/beastTest.spec.js.map +1 -1
  72. package/dist/test/client.annotateMarker.spec.js.map +1 -1
  73. package/dist/test/client.applyMsg.spec.js +15 -12
  74. package/dist/test/client.applyMsg.spec.js.map +1 -1
  75. package/dist/test/client.attributionFarm.spec.js.map +1 -1
  76. package/dist/test/client.getPosition.spec.js +3 -2
  77. package/dist/test/client.getPosition.spec.js.map +1 -1
  78. package/dist/test/client.localReference.spec.js +6 -6
  79. package/dist/test/client.localReference.spec.js.map +1 -1
  80. package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
  81. package/dist/test/client.rollback.spec.js.map +1 -1
  82. package/dist/test/dirname.cjs +0 -1
  83. package/dist/test/dirname.cjs.map +1 -1
  84. package/dist/test/index.d.ts +1 -1
  85. package/dist/test/index.d.ts.map +1 -1
  86. package/dist/test/index.js +2 -4
  87. package/dist/test/index.js.map +1 -1
  88. package/dist/test/mergeTree.annotate.spec.js +3 -0
  89. package/dist/test/mergeTree.annotate.spec.js.map +1 -1
  90. package/dist/test/mergeTree.insertingWalk.spec.js +1 -1
  91. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
  92. package/dist/test/mergeTree.markRangeRemoved.spec.js +2 -0
  93. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  94. package/dist/test/mergeTree.walk.spec.js.map +1 -1
  95. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
  96. package/dist/test/mergeTreeOperationRunner.js +2 -3
  97. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  98. package/dist/test/obliterate.spec.js.map +1 -1
  99. package/dist/test/propertyManager.spec.js.map +1 -1
  100. package/dist/test/reconnectHelper.d.ts +2 -1
  101. package/dist/test/reconnectHelper.d.ts.map +1 -1
  102. package/dist/test/reconnectHelper.js.map +1 -1
  103. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  104. package/dist/test/revertibleFarm.spec.js.map +1 -1
  105. package/dist/test/segmentGroupCollection.spec.js +15 -3
  106. package/dist/test/segmentGroupCollection.spec.js.map +1 -1
  107. package/dist/test/snapshot.utils.d.ts +2 -2
  108. package/dist/test/snapshot.utils.d.ts.map +1 -1
  109. package/dist/test/snapshot.utils.js.map +1 -1
  110. package/dist/test/sortedSegmentSet.spec.js +4 -3
  111. package/dist/test/sortedSegmentSet.spec.js.map +1 -1
  112. package/dist/test/testClient.d.ts +8 -6
  113. package/dist/test/testClient.d.ts.map +1 -1
  114. package/dist/test/testClient.js +29 -27
  115. package/dist/test/testClient.js.map +1 -1
  116. package/dist/test/testClientLogger.d.ts.map +1 -1
  117. package/dist/test/testClientLogger.js +6 -4
  118. package/dist/test/testClientLogger.js.map +1 -1
  119. package/dist/test/testUtils.d.ts +2 -2
  120. package/dist/test/testUtils.d.ts.map +1 -1
  121. package/dist/test/testUtils.js +32 -8
  122. package/dist/test/testUtils.js.map +1 -1
  123. package/dist/test/text.d.ts +2 -2
  124. package/dist/test/text.d.ts.map +1 -1
  125. package/dist/test/text.js +12 -6
  126. package/dist/test/text.js.map +1 -1
  127. package/dist/test/tracking.spec.js.map +1 -1
  128. package/dist/test/wordUnitTests.spec.js +1 -1
  129. package/dist/test/wordUnitTests.spec.js.map +1 -1
  130. package/dist/zamboni.d.ts.map +1 -1
  131. package/dist/zamboni.js +8 -7
  132. package/dist/zamboni.js.map +1 -1
  133. package/lib/MergeTreeTextHelper.d.ts.map +1 -1
  134. package/lib/MergeTreeTextHelper.js +0 -2
  135. package/lib/MergeTreeTextHelper.js.map +1 -1
  136. package/lib/attributionPolicy.d.ts.map +1 -1
  137. package/lib/attributionPolicy.js +6 -16
  138. package/lib/attributionPolicy.js.map +1 -1
  139. package/lib/client.d.ts +3 -4
  140. package/lib/client.d.ts.map +1 -1
  141. package/lib/client.js +40 -29
  142. package/lib/client.js.map +1 -1
  143. package/lib/endOfTreeSegment.d.ts +2 -1
  144. package/lib/endOfTreeSegment.d.ts.map +1 -1
  145. package/lib/endOfTreeSegment.js.map +1 -1
  146. package/lib/index.d.ts +2 -1
  147. package/lib/index.d.ts.map +1 -1
  148. package/lib/index.js +1 -1
  149. package/lib/index.js.map +1 -1
  150. package/lib/mergeTree.d.ts +8 -7
  151. package/lib/mergeTree.d.ts.map +1 -1
  152. package/lib/mergeTree.js +177 -205
  153. package/lib/mergeTree.js.map +1 -1
  154. package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
  155. package/lib/mergeTreeNodeWalk.js +3 -2
  156. package/lib/mergeTreeNodeWalk.js.map +1 -1
  157. package/lib/mergeTreeNodes.d.ts +76 -162
  158. package/lib/mergeTreeNodes.d.ts.map +1 -1
  159. package/lib/mergeTreeNodes.js +95 -108
  160. package/lib/mergeTreeNodes.js.map +1 -1
  161. package/lib/mergeTreeTracking.d.ts.map +1 -1
  162. package/lib/mergeTreeTracking.js +0 -2
  163. package/lib/mergeTreeTracking.js.map +1 -1
  164. package/lib/partialLengths.d.ts +2 -2
  165. package/lib/partialLengths.d.ts.map +1 -1
  166. package/lib/partialLengths.js +25 -23
  167. package/lib/partialLengths.js.map +1 -1
  168. package/lib/perspective.d.ts +3 -2
  169. package/lib/perspective.d.ts.map +1 -1
  170. package/lib/perspective.js +11 -4
  171. package/lib/perspective.js.map +1 -1
  172. package/lib/referencePositions.d.ts.map +1 -1
  173. package/lib/referencePositions.js +4 -1
  174. package/lib/referencePositions.js.map +1 -1
  175. package/lib/revertibles.d.ts.map +1 -1
  176. package/lib/revertibles.js +8 -9
  177. package/lib/revertibles.js.map +1 -1
  178. package/lib/segmentGroupCollection.d.ts +4 -4
  179. package/lib/segmentGroupCollection.d.ts.map +1 -1
  180. package/lib/segmentGroupCollection.js +0 -6
  181. package/lib/segmentGroupCollection.js.map +1 -1
  182. package/lib/segmentInfos.d.ts +257 -0
  183. package/lib/segmentInfos.d.ts.map +1 -0
  184. package/lib/segmentInfos.js +145 -0
  185. package/lib/segmentInfos.js.map +1 -0
  186. package/lib/snapshotLoader.d.ts.map +1 -1
  187. package/lib/snapshotLoader.js +38 -44
  188. package/lib/snapshotLoader.js.map +1 -1
  189. package/lib/snapshotV1.d.ts.map +1 -1
  190. package/lib/snapshotV1.js +9 -12
  191. package/lib/snapshotV1.js.map +1 -1
  192. package/lib/snapshotlegacy.d.ts +2 -2
  193. package/lib/snapshotlegacy.d.ts.map +1 -1
  194. package/lib/snapshotlegacy.js +5 -3
  195. package/lib/snapshotlegacy.js.map +1 -1
  196. package/lib/sortedSegmentSet.d.ts.map +1 -1
  197. package/lib/sortedSegmentSet.js +5 -8
  198. package/lib/sortedSegmentSet.js.map +1 -1
  199. package/lib/test/beastTest.spec.d.ts +0 -2
  200. package/lib/test/beastTest.spec.d.ts.map +1 -1
  201. package/lib/test/beastTest.spec.js +0 -3
  202. package/lib/test/beastTest.spec.js.map +1 -1
  203. package/lib/test/client.annotateMarker.spec.js.map +1 -1
  204. package/lib/test/client.applyMsg.spec.js +15 -12
  205. package/lib/test/client.applyMsg.spec.js.map +1 -1
  206. package/lib/test/client.attributionFarm.spec.js.map +1 -1
  207. package/lib/test/client.getPosition.spec.js +3 -2
  208. package/lib/test/client.getPosition.spec.js.map +1 -1
  209. package/lib/test/client.localReference.spec.js +1 -1
  210. package/lib/test/client.localReference.spec.js.map +1 -1
  211. package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
  212. package/lib/test/client.rollback.spec.js +1 -1
  213. package/lib/test/client.rollback.spec.js.map +1 -1
  214. package/lib/test/dirname.cjs +0 -1
  215. package/lib/test/dirname.cjs.map +1 -1
  216. package/lib/test/index.d.ts +1 -1
  217. package/lib/test/index.d.ts.map +1 -1
  218. package/lib/test/index.js +1 -1
  219. package/lib/test/index.js.map +1 -1
  220. package/lib/test/mergeTree.annotate.spec.js +3 -0
  221. package/lib/test/mergeTree.annotate.spec.js.map +1 -1
  222. package/lib/test/mergeTree.insertingWalk.spec.js +2 -2
  223. package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
  224. package/lib/test/mergeTree.markRangeRemoved.spec.js +2 -0
  225. package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  226. package/lib/test/mergeTree.walk.spec.js.map +1 -1
  227. package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
  228. package/lib/test/mergeTreeOperationRunner.js +1 -2
  229. package/lib/test/mergeTreeOperationRunner.js.map +1 -1
  230. package/lib/test/obliterate.spec.js.map +1 -1
  231. package/lib/test/propertyManager.spec.js.map +1 -1
  232. package/lib/test/reconnectHelper.d.ts +2 -1
  233. package/lib/test/reconnectHelper.d.ts.map +1 -1
  234. package/lib/test/reconnectHelper.js.map +1 -1
  235. package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  236. package/lib/test/revertibleFarm.spec.js.map +1 -1
  237. package/lib/test/segmentGroupCollection.spec.js +15 -3
  238. package/lib/test/segmentGroupCollection.spec.js.map +1 -1
  239. package/lib/test/snapshot.utils.d.ts +2 -2
  240. package/lib/test/snapshot.utils.d.ts.map +1 -1
  241. package/lib/test/snapshot.utils.js.map +1 -1
  242. package/lib/test/sortedSegmentSet.spec.js +4 -3
  243. package/lib/test/sortedSegmentSet.spec.js.map +1 -1
  244. package/lib/test/testClient.d.ts +8 -6
  245. package/lib/test/testClient.d.ts.map +1 -1
  246. package/lib/test/testClient.js +30 -28
  247. package/lib/test/testClient.js.map +1 -1
  248. package/lib/test/testClientLogger.d.ts.map +1 -1
  249. package/lib/test/testClientLogger.js +5 -3
  250. package/lib/test/testClientLogger.js.map +1 -1
  251. package/lib/test/testUtils.d.ts +2 -2
  252. package/lib/test/testUtils.d.ts.map +1 -1
  253. package/lib/test/testUtils.js +9 -8
  254. package/lib/test/testUtils.js.map +1 -1
  255. package/lib/test/text.d.ts +2 -2
  256. package/lib/test/text.d.ts.map +1 -1
  257. package/lib/test/text.js +12 -6
  258. package/lib/test/text.js.map +1 -1
  259. package/lib/test/tracking.spec.js.map +1 -1
  260. package/lib/test/wordUnitTests.spec.js +1 -1
  261. package/lib/test/wordUnitTests.spec.js.map +1 -1
  262. package/lib/zamboni.d.ts.map +1 -1
  263. package/lib/zamboni.js +7 -6
  264. package/lib/zamboni.js.map +1 -1
  265. package/package.json +17 -17
  266. package/src/MergeTreeTextHelper.ts +2 -4
  267. package/src/attributionPolicy.ts +5 -13
  268. package/src/client.ts +55 -44
  269. package/src/endOfTreeSegment.ts +3 -3
  270. package/src/index.ts +4 -6
  271. package/src/mergeTree.ts +245 -282
  272. package/src/mergeTreeNodeWalk.ts +3 -2
  273. package/src/mergeTreeNodes.ts +190 -322
  274. package/src/mergeTreeTracking.ts +0 -3
  275. package/src/partialLengths.ts +42 -27
  276. package/src/perspective.ts +27 -4
  277. package/src/referencePositions.ts +4 -1
  278. package/src/revertibles.ts +19 -13
  279. package/src/segmentGroupCollection.ts +7 -18
  280. package/src/segmentInfos.ts +377 -0
  281. package/src/snapshotLoader.ts +60 -57
  282. package/src/snapshotV1.ts +14 -16
  283. package/src/snapshotlegacy.ts +12 -17
  284. package/src/sortedSegmentSet.ts +6 -8
  285. package/src/zamboni.ts +10 -12
@@ -18,8 +18,9 @@ import {
18
18
 
19
19
  import { NonCollabClient, UnassignedSequenceNumber } from "./constants.js";
20
20
  import { MergeTree } from "./mergeTree.js";
21
- import { type ISegmentLeaf } from "./mergeTreeNodes.js";
21
+ import { type ISegmentPrivate } from "./mergeTreeNodes.js";
22
22
  import { matchProperties } from "./properties.js";
23
+ import { isInserted, isRemoved } from "./segmentInfos.js";
23
24
  import {
24
25
  JsonSegmentSpecs,
25
26
  MergeTreeChunkLegacy,
@@ -55,7 +56,7 @@ export class SnapshotLegacy {
55
56
 
56
57
  private header: SnapshotHeader | undefined;
57
58
  private seq: number | undefined;
58
- private segments: ISegmentLeaf[] | undefined;
59
+ private segments: ISegmentPrivate[] | undefined;
59
60
  private readonly logger: ITelemetryLoggerExt;
60
61
  private readonly chunkSize: number;
61
62
 
@@ -71,11 +72,11 @@ export class SnapshotLegacy {
71
72
  }
72
73
 
73
74
  private getSeqLengthSegs(
74
- allSegments: ISegmentLeaf[],
75
+ allSegments: ISegmentPrivate[],
75
76
  approxSequenceLength: number,
76
77
  startIndex = 0,
77
78
  ): MergeTreeChunkLegacy {
78
- const segs: ISegmentLeaf[] = [];
79
+ const segs: ISegmentPrivate[] = [];
79
80
  let sequenceLength = 0;
80
81
  let segCount = 0;
81
82
  let segsWithAttribution = 0;
@@ -191,7 +192,7 @@ export class SnapshotLegacy {
191
192
  return builder.getSummaryTree();
192
193
  }
193
194
 
194
- extractSync(): ISegmentLeaf[] {
195
+ extractSync(): ISegmentPrivate[] {
195
196
  const collabWindow = this.mergeTree.collabWindow;
196
197
  const seq = (this.seq = collabWindow.minSeq);
197
198
  this.header = {
@@ -204,20 +205,14 @@ export class SnapshotLegacy {
204
205
 
205
206
  let originalSegments = 0;
206
207
 
207
- const segs: ISegmentLeaf[] = [];
208
- let prev: ISegmentLeaf | undefined;
209
- const extractSegment = (
210
- segment: ISegmentLeaf,
211
- pos: number,
212
- refSeq: number,
213
- clientId: number,
214
- start: number | undefined,
215
- end: number | undefined,
216
- ): boolean => {
208
+ const segs: ISegmentPrivate[] = [];
209
+ let prev: ISegmentPrivate | undefined;
210
+ const extractSegment = (segment: ISegmentPrivate): boolean => {
217
211
  if (
212
+ isInserted(segment) &&
218
213
  segment.seq !== UnassignedSequenceNumber &&
219
- segment.seq! <= seq &&
220
- (segment.removedSeq === undefined ||
214
+ segment.seq <= seq &&
215
+ (!isRemoved(segment) ||
221
216
  segment.removedSeq === UnassignedSequenceNumber ||
222
217
  segment.removedSeq > seq)
223
218
  ) {
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { LocalReferencePosition } from "./localReference.js";
7
7
  import { ISegmentInternal } from "./mergeTreeNodes.js";
8
- // eslint-disable-next-line import/no-deprecated
8
+ import { hasProp, toMergeNodeInfo } from "./segmentInfos.js";
9
9
  import { SortedSet } from "./sortedSet.js";
10
10
 
11
11
  /**
@@ -28,7 +28,7 @@ export type SortedSegmentSetItem =
28
28
  *
29
29
  * @internal
30
30
  */
31
- // eslint-disable-next-line import/no-deprecated
31
+
32
32
  export class SortedSegmentSet<
33
33
  T extends SortedSegmentSetItem = ISegmentInternal,
34
34
  > extends SortedSet<T, string> {
@@ -40,15 +40,13 @@ export class SortedSegmentSet<
40
40
  // The particular value for comparison doesn't matter because `findItemPosition` tolerates
41
41
  // elements with duplicate keys (as it must, since local references use the same key as their segment).
42
42
  // All that matters is that it's consistent.
43
- return lref.getSegment()?.ordinal ?? "";
43
+ return toMergeNodeInfo(lref.getSegment())?.ordinal ?? "";
44
44
  }
45
- const maybeObject = item as { readonly segment: ISegmentInternal };
46
- if (maybeObject?.segment) {
47
- return maybeObject.segment.ordinal;
45
+ if (hasProp(item, "segment", "object")) {
46
+ return toMergeNodeInfo(item.segment)?.ordinal ?? "";
48
47
  }
49
48
 
50
- const maybeSegment = item as ISegmentInternal;
51
- return maybeSegment.ordinal;
49
+ return toMergeNodeInfo(item)?.ordinal ?? "";
52
50
  }
53
51
 
54
52
  protected findItemPosition(item: T): { exists: boolean; index: number } {
package/src/zamboni.ts CHANGED
@@ -10,15 +10,15 @@ import { MergeTree } from "./mergeTree.js";
10
10
  import { MergeTreeMaintenanceType } from "./mergeTreeDeltaCallback.js";
11
11
  import {
12
12
  type MergeBlock,
13
+ assignChild,
13
14
  IMergeNode,
14
- ISegmentLeaf,
15
+ ISegmentPrivate,
15
16
  Marker,
16
17
  MaxNodesInBlock,
17
18
  seqLTE,
18
- toMoveInfo,
19
- toRemovalInfo,
20
19
  } from "./mergeTreeNodes.js";
21
20
  import { matchProperties } from "./properties.js";
21
+ import { toRemovalInfo, toMoveInfo, removeMergeNodeInfo } from "./segmentInfos.js";
22
22
 
23
23
  export const zamboniSegmentsMax = 2;
24
24
  function underflow(node: MergeBlock): boolean {
@@ -60,7 +60,7 @@ export function zamboniSegments(
60
60
  block.childCount = newChildCount;
61
61
  block.children = childrenCopy;
62
62
  for (let j = 0; j < newChildCount; j++) {
63
- block.assignChild(childrenCopy[j], j, false);
63
+ assignChild(block, childrenCopy[j], j, false);
64
64
  }
65
65
 
66
66
  if (underflow(block) && block.parent) {
@@ -110,7 +110,7 @@ export function packParent(parent: MergeBlock, mergeTree: MergeTree): void {
110
110
  const packedBlock = mergeTree.makeBlock(nodeCount);
111
111
  for (let packedNodeIndex = 0; packedNodeIndex < nodeCount; packedNodeIndex++) {
112
112
  const nodeToPack = holdNodes[childrenPackedCount++];
113
- packedBlock.assignChild(nodeToPack, packedNodeIndex, false);
113
+ assignChild(packedBlock, nodeToPack, packedNodeIndex, false);
114
114
  }
115
115
  packedBlock.parent = parent;
116
116
  packedBlocks[nodeIndex] = packedBlock;
@@ -118,7 +118,7 @@ export function packParent(parent: MergeBlock, mergeTree: MergeTree): void {
118
118
  }
119
119
  parent.children = packedBlocks;
120
120
  for (let j = 0; j < childCount; j++) {
121
- parent.assignChild(packedBlocks[j], j, false);
121
+ assignChild(parent, packedBlocks[j], j, false);
122
122
  }
123
123
  parent.childCount = childCount;
124
124
  } else {
@@ -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: ISegmentLeaf | undefined;
139
+ let prevSegment: ISegmentPrivate | 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]!;
@@ -164,19 +164,17 @@ function scourNode(node: MergeBlock, holdNodes: IMergeNode[], mergeTree: MergeTr
164
164
  },
165
165
  undefined,
166
166
  );
167
-
168
- segment.parent = undefined;
169
-
170
167
  if (Marker.is(segment)) {
171
168
  mergeTree.unlinkMarker(segment);
172
169
  }
170
+ removeMergeNodeInfo(segment);
173
171
  } else {
174
172
  holdNodes.push(segment);
175
173
  }
176
174
 
177
175
  prevSegment = undefined;
178
176
  } else {
179
- if (segment.seq! <= mergeTree.collabWindow.minSeq) {
177
+ if (segment.seq <= mergeTree.collabWindow.minSeq) {
180
178
  const segmentHasPositiveLength = (mergeTree.localNetLength(segment) ?? 0) > 0;
181
179
  const canAppend =
182
180
  prevSegment?.canAppend(segment) &&
@@ -194,8 +192,8 @@ function scourNode(node: MergeBlock, holdNodes: IMergeNode[], mergeTree: MergeTr
194
192
  undefined,
195
193
  );
196
194
 
197
- segment.parent = undefined;
198
195
  for (const tg of segment.trackingCollection.trackingGroups) tg.unlink(segment);
196
+ removeMergeNodeInfo(segment);
199
197
  } else {
200
198
  holdNodes.push(segment);
201
199
  prevSegment = segmentHasPositiveLength ? segment : undefined;