@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.
- package/CHANGELOG.md +4 -0
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js +0 -2
- package/dist/MergeTreeTextHelper.js.map +1 -1
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +6 -16
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +3 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -28
- package/dist/client.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts +2 -1
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/mergeTree.d.ts +8 -7
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +190 -216
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js +3 -2
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +76 -162
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +100 -112
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/mergeTreeTracking.d.ts.map +1 -1
- package/dist/mergeTreeTracking.js +0 -2
- package/dist/mergeTreeTracking.js.map +1 -1
- package/dist/partialLengths.d.ts +2 -2
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +28 -26
- package/dist/partialLengths.js.map +1 -1
- package/dist/perspective.d.ts +3 -2
- package/dist/perspective.d.ts.map +1 -1
- package/dist/perspective.js +11 -4
- package/dist/perspective.js.map +1 -1
- package/dist/referencePositions.d.ts.map +1 -1
- package/dist/referencePositions.js +4 -1
- package/dist/referencePositions.js.map +1 -1
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +10 -11
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentGroupCollection.d.ts +4 -4
- package/dist/segmentGroupCollection.d.ts.map +1 -1
- package/dist/segmentGroupCollection.js +0 -6
- package/dist/segmentGroupCollection.js.map +1 -1
- package/dist/segmentInfos.d.ts +257 -0
- package/dist/segmentInfos.d.ts.map +1 -0
- package/dist/segmentInfos.js +166 -0
- package/dist/segmentInfos.js.map +1 -0
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +38 -44
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js +9 -12
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts +2 -2
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js +5 -3
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/sortedSegmentSet.d.ts.map +1 -1
- package/dist/sortedSegmentSet.js +5 -8
- package/dist/sortedSegmentSet.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts +0 -2
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +1 -5
- package/dist/test/beastTest.spec.js.map +1 -1
- package/dist/test/client.annotateMarker.spec.js.map +1 -1
- package/dist/test/client.applyMsg.spec.js +15 -12
- package/dist/test/client.applyMsg.spec.js.map +1 -1
- package/dist/test/client.attributionFarm.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +3 -2
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +6 -6
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/dirname.cjs +0 -1
- package/dist/test/dirname.cjs.map +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -4
- package/dist/test/index.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +3 -0
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +2 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +2 -3
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/propertyManager.spec.js.map +1 -1
- package/dist/test/reconnectHelper.d.ts +2 -1
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/revertibleFarm.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +15 -3
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts +2 -2
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/test/sortedSegmentSet.spec.js +4 -3
- package/dist/test/sortedSegmentSet.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +8 -6
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +29 -27
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +6 -4
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testUtils.d.ts +2 -2
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +32 -8
- package/dist/test/testUtils.js.map +1 -1
- package/dist/test/text.d.ts +2 -2
- package/dist/test/text.d.ts.map +1 -1
- package/dist/test/text.js +12 -6
- package/dist/test/text.js.map +1 -1
- package/dist/test/tracking.spec.js.map +1 -1
- package/dist/test/wordUnitTests.spec.js +1 -1
- package/dist/test/wordUnitTests.spec.js.map +1 -1
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +8 -7
- package/dist/zamboni.js.map +1 -1
- package/lib/MergeTreeTextHelper.d.ts.map +1 -1
- package/lib/MergeTreeTextHelper.js +0 -2
- package/lib/MergeTreeTextHelper.js.map +1 -1
- package/lib/attributionPolicy.d.ts.map +1 -1
- package/lib/attributionPolicy.js +6 -16
- package/lib/attributionPolicy.js.map +1 -1
- package/lib/client.d.ts +3 -4
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +40 -29
- package/lib/client.js.map +1 -1
- package/lib/endOfTreeSegment.d.ts +2 -1
- package/lib/endOfTreeSegment.d.ts.map +1 -1
- package/lib/endOfTreeSegment.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/mergeTree.d.ts +8 -7
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +177 -205
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
- package/lib/mergeTreeNodeWalk.js +3 -2
- package/lib/mergeTreeNodeWalk.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +76 -162
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +95 -108
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/mergeTreeTracking.d.ts.map +1 -1
- package/lib/mergeTreeTracking.js +0 -2
- package/lib/mergeTreeTracking.js.map +1 -1
- package/lib/partialLengths.d.ts +2 -2
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +25 -23
- package/lib/partialLengths.js.map +1 -1
- package/lib/perspective.d.ts +3 -2
- package/lib/perspective.d.ts.map +1 -1
- package/lib/perspective.js +11 -4
- package/lib/perspective.js.map +1 -1
- package/lib/referencePositions.d.ts.map +1 -1
- package/lib/referencePositions.js +4 -1
- package/lib/referencePositions.js.map +1 -1
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +8 -9
- package/lib/revertibles.js.map +1 -1
- package/lib/segmentGroupCollection.d.ts +4 -4
- package/lib/segmentGroupCollection.d.ts.map +1 -1
- package/lib/segmentGroupCollection.js +0 -6
- package/lib/segmentGroupCollection.js.map +1 -1
- package/lib/segmentInfos.d.ts +257 -0
- package/lib/segmentInfos.d.ts.map +1 -0
- package/lib/segmentInfos.js +145 -0
- package/lib/segmentInfos.js.map +1 -0
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +38 -44
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js +9 -12
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts +2 -2
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js +5 -3
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/sortedSegmentSet.d.ts.map +1 -1
- package/lib/sortedSegmentSet.js +5 -8
- package/lib/sortedSegmentSet.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts +0 -2
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +0 -3
- package/lib/test/beastTest.spec.js.map +1 -1
- package/lib/test/client.annotateMarker.spec.js.map +1 -1
- package/lib/test/client.applyMsg.spec.js +15 -12
- package/lib/test/client.applyMsg.spec.js.map +1 -1
- package/lib/test/client.attributionFarm.spec.js.map +1 -1
- package/lib/test/client.getPosition.spec.js +3 -2
- package/lib/test/client.getPosition.spec.js.map +1 -1
- package/lib/test/client.localReference.spec.js +1 -1
- package/lib/test/client.localReference.spec.js.map +1 -1
- package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
- package/lib/test/client.rollback.spec.js +1 -1
- package/lib/test/client.rollback.spec.js.map +1 -1
- package/lib/test/dirname.cjs +0 -1
- package/lib/test/dirname.cjs.map +1 -1
- package/lib/test/index.d.ts +1 -1
- package/lib/test/index.d.ts.map +1 -1
- package/lib/test/index.js +1 -1
- package/lib/test/index.js.map +1 -1
- package/lib/test/mergeTree.annotate.spec.js +3 -0
- package/lib/test/mergeTree.annotate.spec.js.map +1 -1
- package/lib/test/mergeTree.insertingWalk.spec.js +2 -2
- package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.spec.js +2 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/lib/test/mergeTree.walk.spec.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/lib/test/mergeTreeOperationRunner.js +1 -2
- package/lib/test/mergeTreeOperationRunner.js.map +1 -1
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/propertyManager.spec.js.map +1 -1
- package/lib/test/reconnectHelper.d.ts +2 -1
- package/lib/test/reconnectHelper.d.ts.map +1 -1
- package/lib/test/reconnectHelper.js.map +1 -1
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/lib/test/revertibleFarm.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js +15 -3
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/snapshot.utils.d.ts +2 -2
- package/lib/test/snapshot.utils.d.ts.map +1 -1
- package/lib/test/snapshot.utils.js.map +1 -1
- package/lib/test/sortedSegmentSet.spec.js +4 -3
- package/lib/test/sortedSegmentSet.spec.js.map +1 -1
- package/lib/test/testClient.d.ts +8 -6
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +30 -28
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +5 -3
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testUtils.d.ts +2 -2
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +9 -8
- package/lib/test/testUtils.js.map +1 -1
- package/lib/test/text.d.ts +2 -2
- package/lib/test/text.d.ts.map +1 -1
- package/lib/test/text.js +12 -6
- package/lib/test/text.js.map +1 -1
- package/lib/test/tracking.spec.js.map +1 -1
- package/lib/test/wordUnitTests.spec.js +1 -1
- package/lib/test/wordUnitTests.spec.js.map +1 -1
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js +7 -6
- package/lib/zamboni.js.map +1 -1
- package/package.json +17 -17
- package/src/MergeTreeTextHelper.ts +2 -4
- package/src/attributionPolicy.ts +5 -13
- package/src/client.ts +55 -44
- package/src/endOfTreeSegment.ts +3 -3
- package/src/index.ts +4 -6
- package/src/mergeTree.ts +245 -282
- package/src/mergeTreeNodeWalk.ts +3 -2
- package/src/mergeTreeNodes.ts +190 -322
- package/src/mergeTreeTracking.ts +0 -3
- package/src/partialLengths.ts +42 -27
- package/src/perspective.ts +27 -4
- package/src/referencePositions.ts +4 -1
- package/src/revertibles.ts +19 -13
- package/src/segmentGroupCollection.ts +7 -18
- package/src/segmentInfos.ts +377 -0
- package/src/snapshotLoader.ts +60 -57
- package/src/snapshotV1.ts +14 -16
- package/src/snapshotlegacy.ts +12 -17
- package/src/sortedSegmentSet.ts +6 -8
- package/src/zamboni.ts +10 -12
package/src/snapshotlegacy.ts
CHANGED
|
@@ -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
|
|
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:
|
|
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:
|
|
75
|
+
allSegments: ISegmentPrivate[],
|
|
75
76
|
approxSequenceLength: number,
|
|
76
77
|
startIndex = 0,
|
|
77
78
|
): MergeTreeChunkLegacy {
|
|
78
|
-
const segs:
|
|
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():
|
|
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:
|
|
208
|
-
let prev:
|
|
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
|
|
220
|
-
(segment
|
|
214
|
+
segment.seq <= seq &&
|
|
215
|
+
(!isRemoved(segment) ||
|
|
221
216
|
segment.removedSeq === UnassignedSequenceNumber ||
|
|
222
217
|
segment.removedSeq > seq)
|
|
223
218
|
) {
|
package/src/sortedSegmentSet.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { LocalReferencePosition } from "./localReference.js";
|
|
7
7
|
import { ISegmentInternal } from "./mergeTreeNodes.js";
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
return maybeObject.segment.ordinal;
|
|
45
|
+
if (hasProp(item, "segment", "object")) {
|
|
46
|
+
return toMergeNodeInfo(item.segment)?.ordinal ?? "";
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
|
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;
|