@fluidframework/merge-tree 2.30.0 → 2.31.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 +403 -399
- package/api-report/merge-tree.legacy.alpha.api.md +1 -0
- package/dist/MergeTreeTextHelper.d.ts +9 -3
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js +5 -5
- package/dist/MergeTreeTextHelper.js.map +1 -1
- package/dist/client.d.ts +7 -13
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +136 -110
- package/dist/client.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts +12 -8
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js +2 -4
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/mergeTree.d.ts +37 -23
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +400 -483
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts +4 -8
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +32 -10
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +43 -28
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/partialLengths.d.ts +2 -2
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +181 -109
- package/dist/partialLengths.js.map +1 -1
- package/dist/perspective.d.ts +8 -27
- package/dist/perspective.d.ts.map +1 -1
- package/dist/perspective.js +7 -67
- package/dist/perspective.js.map +1 -1
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +2 -2
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentInfos.d.ts +20 -106
- package/dist/segmentInfos.d.ts.map +1 -1
- package/dist/segmentInfos.js +28 -42
- package/dist/segmentInfos.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +1 -14
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +3 -17
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +62 -19
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js +55 -24
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js +6 -9
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/stamps.d.ts +1 -1
- package/dist/stamps.js +1 -1
- package/dist/stamps.js.map +1 -1
- package/dist/test/Insertion.perf.spec.js +6 -51
- package/dist/test/Insertion.perf.spec.js.map +1 -1
- package/dist/test/PartialLengths.perf.spec.js +18 -25
- package/dist/test/PartialLengths.perf.spec.js.map +1 -1
- package/dist/test/Removal.perf.spec.js +13 -41
- package/dist/test/Removal.perf.spec.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +41 -66
- package/dist/test/beastTest.spec.js.map +1 -1
- package/dist/test/client.annotateMarker.spec.js +1 -11
- package/dist/test/client.annotateMarker.spec.js.map +1 -1
- package/dist/test/client.applyMsg.spec.js +14 -14
- package/dist/test/client.applyMsg.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +1 -1
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +1 -1
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js +49 -58
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/client.rollbackFarm.spec.js +1 -1
- package/dist/test/client.rollbackFarm.spec.js.map +1 -1
- package/dist/test/client.searchForMarker.spec.js +4 -21
- package/dist/test/client.searchForMarker.spec.js.map +1 -1
- package/dist/test/index.d.ts +2 -2
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -6
- package/dist/test/index.js.map +1 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +14 -59
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +47 -63
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insert.deltaCallback.spec.js +9 -62
- package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +59 -125
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +12 -93
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +10 -7
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js +2 -14
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +2 -2
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/obliterate.concurrent.spec.js +18 -23
- package/dist/test/obliterate.concurrent.spec.js.map +1 -1
- package/dist/test/obliterate.partialLength.spec.js +166 -136
- package/dist/test/obliterate.partialLength.spec.js.map +1 -1
- package/dist/test/obliterate.spec.js +16 -126
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/partialLength.spec.js +28 -196
- package/dist/test/partialLength.spec.js.map +1 -1
- package/dist/test/perspective.spec.js +34 -0
- package/dist/test/perspective.spec.js.map +1 -1
- package/dist/test/propertyManager.spec.js +1 -1
- package/dist/test/propertyManager.spec.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js +0 -2
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +10 -4
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +1 -0
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +16 -26
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +3 -10
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testServer.d.ts +2 -1
- package/dist/test/testServer.d.ts.map +1 -1
- package/dist/test/testServer.js +7 -5
- package/dist/test/testServer.js.map +1 -1
- package/dist/test/testUtils.d.ts +36 -56
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +68 -77
- 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 +5 -2
- package/dist/test/text.js.map +1 -1
- package/dist/textSegment.d.ts +0 -6
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js.map +1 -1
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +53 -26
- package/dist/zamboni.js.map +1 -1
- package/lib/MergeTreeTextHelper.d.ts +9 -3
- package/lib/MergeTreeTextHelper.d.ts.map +1 -1
- package/lib/MergeTreeTextHelper.js +5 -5
- package/lib/MergeTreeTextHelper.js.map +1 -1
- package/lib/client.d.ts +7 -13
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +117 -116
- package/lib/client.js.map +1 -1
- package/lib/endOfTreeSegment.d.ts +12 -8
- package/lib/endOfTreeSegment.d.ts.map +1 -1
- package/lib/endOfTreeSegment.js +2 -4
- package/lib/endOfTreeSegment.js.map +1 -1
- package/lib/index.d.ts +6 -3
- 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 +37 -23
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +381 -488
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts +4 -8
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +32 -10
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +42 -29
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/partialLengths.d.ts +2 -2
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +160 -111
- package/lib/partialLengths.js.map +1 -1
- package/lib/perspective.d.ts +8 -27
- package/lib/perspective.d.ts.map +1 -1
- package/lib/perspective.js +8 -68
- package/lib/perspective.js.map +1 -1
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +2 -2
- package/lib/revertibles.js.map +1 -1
- package/lib/segmentInfos.d.ts +20 -106
- package/lib/segmentInfos.d.ts.map +1 -1
- package/lib/segmentInfos.js +26 -37
- package/lib/segmentInfos.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts +1 -14
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +2 -16
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +39 -19
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js +34 -26
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js +7 -10
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/stamps.d.ts +1 -1
- package/lib/stamps.js +1 -1
- package/lib/stamps.js.map +1 -1
- package/lib/test/Insertion.perf.spec.js +6 -51
- package/lib/test/Insertion.perf.spec.js.map +1 -1
- package/lib/test/PartialLengths.perf.spec.js +18 -25
- package/lib/test/PartialLengths.perf.spec.js.map +1 -1
- package/lib/test/Removal.perf.spec.js +13 -41
- package/lib/test/Removal.perf.spec.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +42 -67
- package/lib/test/beastTest.spec.js.map +1 -1
- package/lib/test/client.annotateMarker.spec.js +1 -11
- package/lib/test/client.annotateMarker.spec.js.map +1 -1
- package/lib/test/client.applyMsg.spec.js +14 -14
- package/lib/test/client.applyMsg.spec.js.map +1 -1
- package/lib/test/client.getPosition.spec.js +1 -1
- 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.rollback.spec.js +50 -59
- package/lib/test/client.rollback.spec.js.map +1 -1
- package/lib/test/client.rollbackFarm.spec.js +1 -1
- package/lib/test/client.rollbackFarm.spec.js.map +1 -1
- package/lib/test/client.searchForMarker.spec.js +4 -21
- package/lib/test/client.searchForMarker.spec.js.map +1 -1
- package/lib/test/index.d.ts +2 -2
- 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.deltaCallback.spec.js +15 -60
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.annotate.spec.js +48 -64
- package/lib/test/mergeTree.annotate.spec.js.map +1 -1
- package/lib/test/mergeTree.insert.deltaCallback.spec.js +10 -63
- package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.insertingWalk.spec.js +61 -127
- package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +13 -94
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.spec.js +10 -7
- package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/lib/test/mergeTree.walk.spec.js +2 -14
- package/lib/test/mergeTree.walk.spec.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.js +3 -3
- package/lib/test/mergeTreeOperationRunner.js.map +1 -1
- package/lib/test/obliterate.concurrent.spec.js +18 -23
- package/lib/test/obliterate.concurrent.spec.js.map +1 -1
- package/lib/test/obliterate.partialLength.spec.js +167 -137
- package/lib/test/obliterate.partialLength.spec.js.map +1 -1
- package/lib/test/obliterate.spec.js +17 -127
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/partialLength.spec.js +29 -197
- package/lib/test/partialLength.spec.js.map +1 -1
- package/lib/test/perspective.spec.js +34 -0
- package/lib/test/perspective.spec.js.map +1 -1
- package/lib/test/propertyManager.spec.js +2 -2
- package/lib/test/propertyManager.spec.js.map +1 -1
- package/lib/test/resetPendingSegmentsToOp.spec.js +0 -2
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js +10 -4
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/testClient.d.ts +1 -0
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +18 -28
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +3 -10
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testServer.d.ts +2 -1
- package/lib/test/testServer.d.ts.map +1 -1
- package/lib/test/testServer.js +7 -5
- package/lib/test/testServer.js.map +1 -1
- package/lib/test/testUtils.d.ts +36 -56
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +66 -48
- 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 +6 -3
- package/lib/test/text.js.map +1 -1
- package/lib/textSegment.d.ts +0 -6
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js +32 -28
- package/lib/zamboni.js.map +1 -1
- package/package.json +17 -20
- package/src/MergeTreeTextHelper.ts +17 -12
- package/src/client.ts +141 -197
- package/src/endOfTreeSegment.ts +11 -8
- package/src/index.ts +4 -3
- package/src/mergeTree.ts +482 -633
- package/src/mergeTreeDeltaCallback.ts +4 -8
- package/src/mergeTreeNodes.ts +66 -45
- package/src/partialLengths.ts +181 -137
- package/src/perspective.ts +17 -95
- package/src/revertibles.ts +2 -7
- package/src/segmentInfos.ts +48 -141
- package/src/segmentPropertiesManager.ts +2 -16
- package/src/snapshotLoader.ts +62 -30
- package/src/snapshotV1.ts +36 -28
- package/src/snapshotlegacy.ts +7 -16
- package/src/stamps.ts +1 -1
- package/src/textSegment.ts +0 -13
- package/src/zamboni.ts +38 -32
- package/tsconfig.json +1 -0
- package/prettier.config.cjs +0 -8
|
@@ -321,13 +321,13 @@ for (const incremental of [true, false]) {
|
|
|
321
321
|
assert.equal(helper.clients.C.getText(), "B");
|
|
322
322
|
helper.logger.validate();
|
|
323
323
|
});
|
|
324
|
-
it("clones
|
|
324
|
+
it("clones removes array during insert", () => {
|
|
325
325
|
const helper = new ReconnectTestHelper();
|
|
326
326
|
// the bug found here:
|
|
327
327
|
// the X was skipped over by client `A` because it had already been
|
|
328
328
|
// deleted, so its length at refSeq was 0
|
|
329
329
|
//
|
|
330
|
-
// this was due to the
|
|
330
|
+
// this was due to the removes array not being properly cloned
|
|
331
331
|
// when marking obliterated during insert
|
|
332
332
|
helper.insertText("C", 0, "ABCD");
|
|
333
333
|
helper.processAllOps();
|
|
@@ -538,7 +538,7 @@ for (const incremental of [true, false]) {
|
|
|
538
538
|
assert.equal(helper.clients.B.getText(), "43FBD");
|
|
539
539
|
helper.logger.validate();
|
|
540
540
|
});
|
|
541
|
-
it("ignores segments
|
|
541
|
+
it("ignores segments obliterated at insertion time for partial len calculations", () => {
|
|
542
542
|
const helper = new ReconnectTestHelper();
|
|
543
543
|
helper.insertText("B", 0, "ABC");
|
|
544
544
|
helper.insertText("A", 0, "DEF");
|
|
@@ -606,9 +606,8 @@ for (const incremental of [true, false]) {
|
|
|
606
606
|
helper.processAllOps();
|
|
607
607
|
helper.logger.validate();
|
|
608
608
|
helper.obliterateRange("B", 1, 2);
|
|
609
|
-
// bug here: because segment A has already been obliterated, we wouldn't
|
|
610
|
-
// mark it obliterated by this op as well
|
|
611
|
-
// this range would look to the right and not find a matching move seq
|
|
609
|
+
// bug here: because segment A has already been obliterated, we previously wouldn't
|
|
610
|
+
// mark it obliterated by this op as well
|
|
612
611
|
helper.obliterateRange("A", 0, 2);
|
|
613
612
|
helper.insertText("B", 1, "C");
|
|
614
613
|
helper.processAllOps();
|
|
@@ -679,7 +678,7 @@ for (const incremental of [true, false]) {
|
|
|
679
678
|
helper.processAllOps();
|
|
680
679
|
helper.logger.validate();
|
|
681
680
|
// bug here: when the op is acked by client C, it would incorrectly give
|
|
682
|
-
// segment B the same
|
|
681
|
+
// segment B the same obliterate information despite coming from a different op
|
|
683
682
|
helper.obliterateRange("C", 0, 2);
|
|
684
683
|
helper.insertText("B", 2, "D");
|
|
685
684
|
helper.obliterateRange("C", 0, 1);
|
|
@@ -726,7 +725,7 @@ for (const incremental of [true, false]) {
|
|
|
726
725
|
assert.equal(helper.clients.C.getText(), "C");
|
|
727
726
|
helper.logger.validate();
|
|
728
727
|
});
|
|
729
|
-
it("applies correct
|
|
728
|
+
it("applies correct obliterate when right segment has multiple obliterates", () => {
|
|
730
729
|
const helper = new ReconnectTestHelper();
|
|
731
730
|
// AB
|
|
732
731
|
// (A-C-D-(B))
|
|
@@ -735,10 +734,8 @@ for (const incremental of [true, false]) {
|
|
|
735
734
|
helper.logger.validate();
|
|
736
735
|
helper.obliterateRange("A", 1, 2);
|
|
737
736
|
helper.obliterateRange("B", 0, 2);
|
|
738
|
-
// bug here: for client B, segment B had multiple
|
|
739
|
-
//
|
|
740
|
-
// array, it selected the lowest seq in the array, which differed from
|
|
741
|
-
// the correct and matching movedSeq
|
|
737
|
+
// bug here: for client B, segment B had multiple obliterates and
|
|
738
|
+
// the wrong one was selected
|
|
742
739
|
helper.insertText("A", 1, "C");
|
|
743
740
|
helper.insertText("A", 2, "D");
|
|
744
741
|
helper.processAllOps();
|
|
@@ -747,7 +744,7 @@ for (const incremental of [true, false]) {
|
|
|
747
744
|
assert.equal(helper.clients.C.getText(), "");
|
|
748
745
|
helper.logger.validate();
|
|
749
746
|
});
|
|
750
|
-
it("takes the correct
|
|
747
|
+
it("takes the correct remove clientId/stamp when multiple obliterates apply", () => {
|
|
751
748
|
const helper = new ReconnectTestHelper();
|
|
752
749
|
// AB
|
|
753
750
|
// (A-C-D-(B))
|
|
@@ -756,8 +753,7 @@ for (const incremental of [true, false]) {
|
|
|
756
753
|
helper.logger.validate();
|
|
757
754
|
helper.obliterateRange("A", 1, 2);
|
|
758
755
|
// bug here: we would incorrectly take the client id of the first element
|
|
759
|
-
// in the
|
|
760
|
-
// length of _both_ the local and non-local movedSeqs arrays
|
|
756
|
+
// in the removes array
|
|
761
757
|
helper.insertText("A", 1, "C");
|
|
762
758
|
helper.obliterateRange("C", 0, 2);
|
|
763
759
|
helper.insertText("A", 2, "D");
|
|
@@ -814,7 +810,7 @@ for (const incremental of [true, false]) {
|
|
|
814
810
|
assert.equal(helper.clients.C.getText(), "FGHIJE12345AKB");
|
|
815
811
|
helper.logger.validate();
|
|
816
812
|
});
|
|
817
|
-
it("tracks length at seq of lower
|
|
813
|
+
it("tracks length at seq of lower remove seq when overlapping", () => {
|
|
818
814
|
const helper = new ReconnectTestHelper();
|
|
819
815
|
// H-FG-A-CDE-B
|
|
820
816
|
// (H-F-[G-A)-C-I-D]-E-B
|
|
@@ -828,8 +824,8 @@ for (const incremental of [true, false]) {
|
|
|
828
824
|
helper.removeRange("B", 2, 6);
|
|
829
825
|
// bug here: this insert triggers a new chunk to be created. when the
|
|
830
826
|
// partial lengths of the new chunk were calculated, it incorrectly
|
|
831
|
-
// used
|
|
832
|
-
//
|
|
827
|
+
// used a removal seq other than the earliest removal, causing its computed length
|
|
828
|
+
// to be incorrect
|
|
833
829
|
helper.insertText("A", 1, "I");
|
|
834
830
|
helper.processAllOps();
|
|
835
831
|
assert.equal(helper.clients.A.getText(), "IEB");
|
|
@@ -876,8 +872,7 @@ for (const incremental of [true, false]) {
|
|
|
876
872
|
helper.logger.validate();
|
|
877
873
|
helper.removeRange("C", 6, 7);
|
|
878
874
|
helper.insertText("A", 7, "2");
|
|
879
|
-
// obliterate at seq 5
|
|
880
|
-
// at the removed segment, which doesn't have move info
|
|
875
|
+
// Bug was here: obliterate at seq 5 wasn't getting acked correctly
|
|
881
876
|
helper.obliterateRange("C", 5, 7);
|
|
882
877
|
helper.processAllOps();
|
|
883
878
|
helper.logger.validate();
|
|
@@ -942,7 +937,7 @@ for (const incremental of [true, false]) {
|
|
|
942
937
|
assert.equal(helper.clients.A.getText(), "FZGBA");
|
|
943
938
|
helper.logger.validate();
|
|
944
939
|
});
|
|
945
|
-
it("
|
|
940
|
+
it("wasRemovedOnInsert computation remains accurate after leaf node is split", () => {
|
|
946
941
|
const helper = new ReconnectTestHelper();
|
|
947
942
|
// CD-B-A
|
|
948
943
|
// I-(C-(G)H-E)-F-D-B-A
|
|
@@ -1014,7 +1009,7 @@ for (const incremental of [true, false]) {
|
|
|
1014
1009
|
assert.equal(helper.clients.A.getText(), "IHEBA");
|
|
1015
1010
|
helper.logger.validate();
|
|
1016
1011
|
});
|
|
1017
|
-
it("partial len isLocal when seq is
|
|
1012
|
+
it("partial len isLocal when seq is local but a non-local obliterate affects the segment", () => {
|
|
1018
1013
|
const helper = new ReconnectTestHelper();
|
|
1019
1014
|
// CDEFG-AB
|
|
1020
1015
|
// C-((D-I-E)-F)-G-A-H-B
|
|
@@ -1149,7 +1144,7 @@ for (const incremental of [true, false]) {
|
|
|
1149
1144
|
assert.equal(helper.clients.C.getText(), "JIGBA");
|
|
1150
1145
|
helper.logger.validate();
|
|
1151
1146
|
});
|
|
1152
|
-
it("obliterate ack traversal is not stopped by
|
|
1147
|
+
it("obliterate ack traversal is not stopped by obliterated segment", () => {
|
|
1153
1148
|
const helper = new ReconnectTestHelper();
|
|
1154
1149
|
// ABCD
|
|
1155
1150
|
// (A-(B)-E-C)-D-F
|