@fluidframework/merge-tree 2.1.0-276985 → 2.1.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/.eslintrc.cjs +2 -4
- package/CHANGELOG.md +15 -0
- package/README.md +109 -1
- package/api-extractor/api-extractor.current.json +5 -0
- package/api-extractor/api-extractor.legacy.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/merge-tree.legacy.alpha.api.md +10 -22
- package/api-report/merge-tree.legacy.public.api.md +9 -0
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js +1 -1
- package/dist/MergeTreeTextHelper.js.map +1 -1
- package/dist/attributionCollection.d.ts.map +1 -1
- package/dist/attributionCollection.js +65 -17
- package/dist/attributionCollection.js.map +1 -1
- package/dist/attributionPolicy.d.ts +2 -1
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +10 -3
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +3 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +65 -37
- package/dist/client.js.map +1 -1
- package/dist/collections/list.d.ts.map +1 -1
- package/dist/collections/list.js +5 -2
- package/dist/collections/list.js.map +1 -1
- package/dist/collections/rbTree.d.ts +2 -2
- package/dist/collections/rbTree.d.ts.map +1 -1
- package/dist/collections/rbTree.js +23 -35
- package/dist/collections/rbTree.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js +4 -1
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/localReference.d.ts +16 -6
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +31 -20
- package/dist/localReference.js.map +1 -1
- package/dist/mergeTree.d.ts +0 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +127 -112
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js +1 -1
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +6 -5
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +29 -20
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/mergeTreeTracking.js +3 -3
- package/dist/mergeTreeTracking.js.map +1 -1
- package/dist/opBuilder.d.ts +6 -1
- package/dist/opBuilder.d.ts.map +1 -1
- package/dist/opBuilder.js +5 -0
- package/dist/opBuilder.js.map +1 -1
- package/dist/ops.d.ts.map +1 -1
- package/dist/ops.js.map +1 -1
- package/dist/ordinal.d.ts.map +1 -1
- package/dist/ordinal.js +7 -0
- package/dist/ordinal.js.map +1 -1
- package/dist/partialLengths.d.ts +4 -2
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +101 -53
- package/dist/partialLengths.js.map +1 -1
- package/dist/perspective.d.ts +4 -1
- package/dist/perspective.d.ts.map +1 -1
- package/dist/perspective.js +7 -6
- package/dist/perspective.js.map +1 -1
- package/dist/properties.d.ts +13 -10
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +22 -11
- package/dist/properties.js.map +1 -1
- package/dist/public.d.ts +1 -1
- package/dist/referencePositions.d.ts +7 -0
- package/dist/referencePositions.d.ts.map +1 -1
- package/dist/referencePositions.js +7 -0
- package/dist/referencePositions.js.map +1 -1
- package/dist/revertibles.d.ts +6 -0
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +50 -21
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentGroupCollection.d.ts.map +1 -1
- package/dist/segmentGroupCollection.js +2 -0
- package/dist/segmentGroupCollection.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +7 -3
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +20 -15
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/snapshotChunks.d.ts.map +1 -1
- package/dist/snapshotChunks.js +10 -5
- package/dist/snapshotChunks.js.map +1 -1
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +14 -10
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js +20 -8
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js +4 -2
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/sortedSegmentSet.d.ts.map +1 -1
- package/dist/sortedSegmentSet.js +8 -1
- package/dist/sortedSegmentSet.js.map +1 -1
- package/dist/sortedSet.d.ts.map +1 -1
- package/dist/sortedSet.js +4 -0
- package/dist/sortedSet.js.map +1 -1
- package/dist/test/Insertion.perf.spec.js.map +1 -1
- package/dist/test/Removal.perf.spec.js.map +1 -1
- package/dist/test/Snapshot.perf.spec.js +1 -0
- package/dist/test/Snapshot.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.perf.spec.js +3 -1
- package/dist/test/attributionCollection.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.spec.js +69 -68
- package/dist/test/attributionCollection.spec.js.map +1 -1
- package/dist/test/attributionPolicy.spec.js +29 -27
- package/dist/test/attributionPolicy.spec.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts +1 -4
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +32 -30
- package/dist/test/beastTest.spec.js.map +1 -1
- package/dist/test/client.annotateMarker.spec.js +5 -5
- package/dist/test/client.annotateMarker.spec.js.map +1 -1
- package/dist/test/client.apis.spec.d.ts.map +1 -1
- package/dist/test/client.apis.spec.js +5 -7
- package/dist/test/client.apis.spec.js.map +1 -1
- package/dist/test/client.applyMsg.spec.js +125 -103
- package/dist/test/client.applyMsg.spec.js.map +1 -1
- package/dist/test/client.applyStashedOpFarm.spec.js +18 -10
- package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
- package/dist/test/client.attributionFarm.spec.js +13 -8
- package/dist/test/client.attributionFarm.spec.js.map +1 -1
- package/dist/test/client.conflictFarm.spec.js +4 -2
- package/dist/test/client.conflictFarm.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +10 -10
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +111 -104
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.localReferenceFarm.spec.js +14 -10
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
- package/dist/test/client.rebasePosition.spec.js +12 -12
- package/dist/test/client.rebasePosition.spec.js.map +1 -1
- package/dist/test/client.reconnectFarm.spec.js +12 -9
- package/dist/test/client.reconnectFarm.spec.js.map +1 -1
- package/dist/test/client.replay.spec.js +11 -10
- package/dist/test/client.replay.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js +87 -84
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/client.rollbackFarm.spec.js +3 -1
- package/dist/test/client.rollbackFarm.spec.js.map +1 -1
- package/dist/test/client.searchForMarker.spec.js +122 -112
- package/dist/test/client.searchForMarker.spec.js.map +1 -1
- package/dist/test/client.walkSegments.spec.js +7 -7
- package/dist/test/client.walkSegments.spec.js.map +1 -1
- package/dist/test/collections.list.spec.js +14 -14
- package/dist/test/collections.list.spec.js.map +1 -1
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js +3 -3
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
- package/dist/test/dirname.cjs +1 -0
- package/dist/test/dirname.cjs.map +1 -1
- package/dist/test/dirname.d.cts.map +1 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +7 -7
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +87 -87
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insert.deltaCallback.spec.js +6 -6
- package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +24 -24
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +6 -6
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +23 -23
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js +3 -3
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTree.zamboni.spec.js +10 -10
- package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +28 -16
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.spec.js +9 -5
- package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
- package/dist/test/obliterate.concurrent.spec.js +165 -165
- package/dist/test/obliterate.concurrent.spec.js.map +1 -1
- package/dist/test/obliterate.deltaCallback.spec.js +20 -21
- package/dist/test/obliterate.deltaCallback.spec.js.map +1 -1
- package/dist/test/obliterate.partialLength.spec.js +7 -7
- package/dist/test/obliterate.partialLength.spec.js.map +1 -1
- package/dist/test/obliterate.reconnect.spec.js +13 -13
- package/dist/test/obliterate.reconnect.spec.js.map +1 -1
- package/dist/test/obliterate.spec.js +9 -9
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/ordinal.spec.js +10 -4
- package/dist/test/ordinal.spec.js.map +1 -1
- package/dist/test/partialLength.spec.js.map +1 -1
- package/dist/test/properties.spec.js +15 -15
- package/dist/test/properties.spec.js.map +1 -1
- package/dist/test/reconnectHelper.d.ts +4 -4
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js +28 -20
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js +35 -29
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/revertibleFarm.spec.js +11 -10
- package/dist/test/revertibleFarm.spec.js.map +1 -1
- package/dist/test/revertibles.spec.d.ts.map +1 -1
- package/dist/test/revertibles.spec.js +96 -57
- package/dist/test/revertibles.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +17 -17
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.spec.js +5 -5
- package/dist/test/snapshot.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js +6 -6
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/test/snapshotlegacy.spec.js +18 -13
- package/dist/test/snapshotlegacy.spec.js.map +1 -1
- package/dist/test/sortedSegmentSet.spec.js +22 -18
- package/dist/test/sortedSegmentSet.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +6 -5
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +30 -32
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +39 -38
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testSerializer.d.ts +5 -5
- package/dist/test/testSerializer.d.ts.map +1 -1
- package/dist/test/testSerializer.js +0 -1
- package/dist/test/testSerializer.js.map +1 -1
- package/dist/test/testServer.d.ts.map +1 -1
- package/dist/test/testServer.js.map +1 -1
- package/dist/test/testUtils.d.ts +1 -1
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +15 -17
- package/dist/test/testUtils.js.map +1 -1
- package/dist/test/text.d.ts.map +1 -1
- package/dist/test/text.js +1 -1
- package/dist/test/text.js.map +1 -1
- package/dist/test/tracking.spec.js +50 -46
- package/dist/test/tracking.spec.js.map +1 -1
- package/dist/test/wordUnitTests.spec.d.ts.map +1 -1
- package/dist/test/wordUnitTests.spec.js +10 -10
- package/dist/test/wordUnitTests.spec.js.map +1 -1
- package/dist/textSegment.d.ts +1 -1
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js +3 -3
- package/dist/textSegment.js.map +1 -1
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +7 -2
- package/dist/zamboni.js.map +1 -1
- package/internal.d.ts +1 -1
- package/legacy.d.ts +1 -1
- package/lib/MergeTreeTextHelper.d.ts.map +1 -1
- package/lib/MergeTreeTextHelper.js +1 -1
- package/lib/MergeTreeTextHelper.js.map +1 -1
- package/lib/attributionCollection.d.ts.map +1 -1
- package/lib/attributionCollection.js +65 -17
- package/lib/attributionCollection.js.map +1 -1
- package/lib/attributionPolicy.d.ts +2 -1
- package/lib/attributionPolicy.d.ts.map +1 -1
- package/lib/attributionPolicy.js +10 -3
- package/lib/attributionPolicy.js.map +1 -1
- package/lib/client.d.ts +3 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +65 -37
- package/lib/client.js.map +1 -1
- package/lib/collections/list.d.ts.map +1 -1
- package/lib/collections/list.js +5 -2
- package/lib/collections/list.js.map +1 -1
- package/lib/collections/rbTree.d.ts +2 -2
- package/lib/collections/rbTree.d.ts.map +1 -1
- package/lib/collections/rbTree.js +23 -35
- package/lib/collections/rbTree.js.map +1 -1
- package/lib/endOfTreeSegment.d.ts.map +1 -1
- package/lib/endOfTreeSegment.js +4 -1
- package/lib/endOfTreeSegment.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/localReference.d.ts +16 -6
- package/lib/localReference.d.ts.map +1 -1
- package/lib/localReference.js +31 -20
- package/lib/localReference.js.map +1 -1
- package/lib/mergeTree.d.ts +0 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +127 -112
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
- package/lib/mergeTreeNodeWalk.js +1 -1
- package/lib/mergeTreeNodeWalk.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +6 -5
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +29 -20
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/mergeTreeTracking.js +3 -3
- package/lib/mergeTreeTracking.js.map +1 -1
- package/lib/opBuilder.d.ts +6 -1
- package/lib/opBuilder.d.ts.map +1 -1
- package/lib/opBuilder.js +5 -0
- package/lib/opBuilder.js.map +1 -1
- package/lib/ops.d.ts.map +1 -1
- package/lib/ops.js.map +1 -1
- package/lib/ordinal.d.ts.map +1 -1
- package/lib/ordinal.js +7 -0
- package/lib/ordinal.js.map +1 -1
- package/lib/partialLengths.d.ts +4 -2
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +101 -53
- package/lib/partialLengths.js.map +1 -1
- package/lib/perspective.d.ts +4 -1
- package/lib/perspective.d.ts.map +1 -1
- package/lib/perspective.js +7 -6
- package/lib/perspective.js.map +1 -1
- package/lib/properties.d.ts +13 -10
- package/lib/properties.d.ts.map +1 -1
- package/lib/properties.js +22 -11
- package/lib/properties.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/referencePositions.d.ts +7 -0
- package/lib/referencePositions.d.ts.map +1 -1
- package/lib/referencePositions.js +7 -0
- package/lib/referencePositions.js.map +1 -1
- package/lib/revertibles.d.ts +6 -0
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +50 -21
- package/lib/revertibles.js.map +1 -1
- package/lib/segmentGroupCollection.d.ts.map +1 -1
- package/lib/segmentGroupCollection.js +2 -0
- package/lib/segmentGroupCollection.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts +7 -3
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +20 -15
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/snapshotChunks.d.ts.map +1 -1
- package/lib/snapshotChunks.js +10 -5
- package/lib/snapshotChunks.js.map +1 -1
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +14 -10
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js +20 -8
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js +4 -2
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/sortedSegmentSet.d.ts.map +1 -1
- package/lib/sortedSegmentSet.js +8 -1
- package/lib/sortedSegmentSet.js.map +1 -1
- package/lib/sortedSet.d.ts.map +1 -1
- package/lib/sortedSet.js +4 -0
- package/lib/sortedSet.js.map +1 -1
- package/lib/test/Insertion.perf.spec.js.map +1 -1
- package/lib/test/Removal.perf.spec.js.map +1 -1
- package/lib/test/Snapshot.perf.spec.js +1 -0
- package/lib/test/Snapshot.perf.spec.js.map +1 -1
- package/lib/test/attributionCollection.perf.spec.js +3 -1
- package/lib/test/attributionCollection.perf.spec.js.map +1 -1
- package/lib/test/attributionCollection.spec.js +3 -2
- package/lib/test/attributionCollection.spec.js.map +1 -1
- package/lib/test/attributionPolicy.spec.js +3 -1
- package/lib/test/attributionPolicy.spec.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts +1 -4
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +26 -24
- package/lib/test/beastTest.spec.js.map +1 -1
- package/lib/test/client.annotateMarker.spec.js +1 -1
- package/lib/test/client.annotateMarker.spec.js.map +1 -1
- package/lib/test/client.apis.spec.d.ts.map +1 -1
- package/lib/test/client.apis.spec.js +4 -6
- package/lib/test/client.apis.spec.js.map +1 -1
- package/lib/test/client.applyMsg.spec.js +72 -50
- package/lib/test/client.applyMsg.spec.js.map +1 -1
- package/lib/test/client.applyStashedOpFarm.spec.js +18 -10
- package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -1
- package/lib/test/client.attributionFarm.spec.js +12 -7
- package/lib/test/client.attributionFarm.spec.js.map +1 -1
- package/lib/test/client.conflictFarm.spec.js +4 -2
- package/lib/test/client.conflictFarm.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 +14 -7
- package/lib/test/client.localReference.spec.js.map +1 -1
- package/lib/test/client.localReferenceFarm.spec.js +13 -9
- package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
- package/lib/test/client.rebasePosition.spec.js +1 -1
- package/lib/test/client.rebasePosition.spec.js.map +1 -1
- package/lib/test/client.reconnectFarm.spec.js +11 -8
- package/lib/test/client.reconnectFarm.spec.js.map +1 -1
- package/lib/test/client.replay.spec.js +8 -7
- package/lib/test/client.replay.spec.js.map +1 -1
- package/lib/test/client.rollback.spec.js +14 -11
- package/lib/test/client.rollback.spec.js.map +1 -1
- package/lib/test/client.rollbackFarm.spec.js +3 -1
- package/lib/test/client.rollbackFarm.spec.js.map +1 -1
- package/lib/test/client.searchForMarker.spec.js +29 -19
- package/lib/test/client.searchForMarker.spec.js.map +1 -1
- package/lib/test/client.walkSegments.spec.js +1 -1
- package/lib/test/client.walkSegments.spec.js.map +1 -1
- package/lib/test/collections.list.spec.js +1 -1
- package/lib/test/collections.list.spec.js.map +1 -1
- package/lib/test/createInsertOnlyAttributionPolicy.spec.js +1 -1
- package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
- package/lib/test/dirname.cjs +1 -0
- package/lib/test/dirname.cjs.map +1 -1
- package/lib/test/dirname.d.cts.map +1 -1
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js +1 -1
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.annotate.spec.js +1 -1
- package/lib/test/mergeTree.annotate.spec.js.map +1 -1
- package/lib/test/mergeTree.insert.deltaCallback.spec.js +1 -1
- package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.insertingWalk.spec.js +8 -8
- package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.spec.js +1 -1
- package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/lib/test/mergeTree.walk.spec.js +1 -1
- package/lib/test/mergeTree.walk.spec.js.map +1 -1
- package/lib/test/mergeTree.zamboni.spec.js +1 -1
- package/lib/test/mergeTree.zamboni.spec.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/lib/test/mergeTreeOperationRunner.js +27 -15
- package/lib/test/mergeTreeOperationRunner.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.spec.js +5 -1
- package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -1
- package/lib/test/obliterate.concurrent.spec.js +4 -4
- package/lib/test/obliterate.concurrent.spec.js.map +1 -1
- package/lib/test/obliterate.deltaCallback.spec.js +2 -3
- package/lib/test/obliterate.deltaCallback.spec.js.map +1 -1
- package/lib/test/obliterate.partialLength.spec.js +1 -1
- package/lib/test/obliterate.partialLength.spec.js.map +1 -1
- package/lib/test/obliterate.reconnect.spec.js +1 -1
- package/lib/test/obliterate.reconnect.spec.js.map +1 -1
- package/lib/test/obliterate.spec.js +1 -1
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/ordinal.spec.js +7 -1
- package/lib/test/ordinal.spec.js.map +1 -1
- package/lib/test/partialLength.spec.js.map +1 -1
- package/lib/test/properties.spec.js +1 -1
- package/lib/test/properties.spec.js.map +1 -1
- package/lib/test/reconnectHelper.d.ts +4 -4
- package/lib/test/reconnectHelper.d.ts.map +1 -1
- package/lib/test/reconnectHelper.js +22 -14
- package/lib/test/reconnectHelper.js.map +1 -1
- package/lib/test/resetPendingSegmentsToOp.spec.js +8 -2
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/lib/test/revertibleFarm.spec.js +8 -7
- package/lib/test/revertibleFarm.spec.js.map +1 -1
- package/lib/test/revertibles.spec.d.ts.map +1 -1
- package/lib/test/revertibles.spec.js +93 -54
- package/lib/test/revertibles.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js +1 -1
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/snapshot.spec.js +1 -1
- package/lib/test/snapshot.spec.js.map +1 -1
- package/lib/test/snapshot.utils.d.ts.map +1 -1
- package/lib/test/snapshot.utils.js +1 -1
- package/lib/test/snapshot.utils.js.map +1 -1
- package/lib/test/snapshotlegacy.spec.js +10 -5
- package/lib/test/snapshotlegacy.spec.js.map +1 -1
- package/lib/test/sortedSegmentSet.spec.js +6 -2
- package/lib/test/sortedSegmentSet.spec.js.map +1 -1
- package/lib/test/testClient.d.ts +6 -5
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +25 -27
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +37 -36
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testSerializer.d.ts +5 -5
- package/lib/test/testSerializer.d.ts.map +1 -1
- package/lib/test/testSerializer.js +0 -1
- package/lib/test/testSerializer.js.map +1 -1
- package/lib/test/testServer.d.ts.map +1 -1
- package/lib/test/testServer.js.map +1 -1
- package/lib/test/testUtils.d.ts +1 -1
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +6 -8
- package/lib/test/testUtils.js.map +1 -1
- package/lib/test/text.d.ts.map +1 -1
- package/lib/test/text.js +1 -1
- package/lib/test/text.js.map +1 -1
- package/lib/test/tracking.spec.js +9 -5
- package/lib/test/tracking.spec.js.map +1 -1
- package/lib/test/wordUnitTests.spec.d.ts.map +1 -1
- package/lib/test/wordUnitTests.spec.js +9 -9
- package/lib/test/wordUnitTests.spec.js.map +1 -1
- package/lib/textSegment.d.ts +1 -1
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js +3 -3
- package/lib/textSegment.js.map +1 -1
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js +7 -2
- package/lib/zamboni.js.map +1 -1
- package/package.json +29 -27
- package/src/MergeTreeTextHelper.ts +2 -2
- package/src/attributionCollection.ts +71 -28
- package/src/attributionPolicy.ts +14 -9
- package/src/client.ts +120 -71
- package/src/collections/list.ts +9 -6
- package/src/collections/rbTree.ts +62 -71
- package/src/endOfTreeSegment.ts +21 -10
- package/src/localReference.ts +61 -43
- package/src/mergeTree.ts +229 -178
- package/src/mergeTreeNodeWalk.ts +2 -1
- package/src/mergeTreeNodes.ts +59 -46
- package/src/mergeTreeTracking.ts +3 -3
- package/src/opBuilder.ts +6 -1
- package/src/ops.ts +5 -0
- package/src/ordinal.ts +8 -1
- package/src/partialLengths.ts +143 -87
- package/src/perspective.ts +10 -7
- package/src/properties.ts +36 -18
- package/src/referencePositions.ts +7 -0
- package/src/revertibles.ts +71 -41
- package/src/segmentGroupCollection.ts +8 -6
- package/src/segmentPropertiesManager.ts +28 -24
- package/src/snapshotChunks.ts +12 -7
- package/src/snapshotLoader.ts +20 -17
- package/src/snapshotV1.ts +36 -18
- package/src/snapshotlegacy.ts +7 -5
- package/src/sortedSegmentSet.ts +9 -3
- package/src/sortedSet.ts +7 -3
- package/src/textSegment.ts +9 -9
- package/src/zamboni.ts +14 -10
- package/tsconfig.json +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const
|
|
7
|
+
const node_assert_1 = require("node:assert");
|
|
8
8
|
const stochastic_test_utils_1 = require("@fluid-private/stochastic-test-utils");
|
|
9
9
|
const constants_js_1 = require("../constants.js");
|
|
10
10
|
const mergeTreeNodes_js_1 = require("../mergeTreeNodes.js");
|
|
@@ -37,15 +37,15 @@ describe("TestClient", () => {
|
|
|
37
37
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
38
38
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
39
39
|
});
|
|
40
|
-
|
|
40
|
+
node_assert_1.strict.equal(client.getLength(), 8);
|
|
41
41
|
const marker1 = client.searchForMarker(4, "Eop", true);
|
|
42
|
-
(0,
|
|
42
|
+
(0, node_assert_1.strict)(marker1, "Returned marker undefined.");
|
|
43
43
|
let exp = client.mergeTree.referencePositionToLocalPosition(marker1, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
44
|
-
|
|
44
|
+
node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
|
|
45
45
|
const marker2 = client.searchForMarker(4, "Eop", false);
|
|
46
|
-
(0,
|
|
46
|
+
(0, node_assert_1.strict)(marker2, "Returned marker undefined.");
|
|
47
47
|
exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
48
|
-
|
|
48
|
+
node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
|
|
49
49
|
});
|
|
50
50
|
it("Should return the marker at the search position in either direction from multiple blocks", () => {
|
|
51
51
|
client.insertTextLocal(0, "abcd");
|
|
@@ -54,15 +54,15 @@ describe("TestClient", () => {
|
|
|
54
54
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
55
55
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
node_assert_1.strict.equal(client.getLength(), 8);
|
|
58
58
|
const marker1 = client.searchForMarker(4, "Eop", true);
|
|
59
|
-
(0,
|
|
59
|
+
(0, node_assert_1.strict)(marker1, "Returned marker undefined.");
|
|
60
60
|
let exp = client.mergeTree.referencePositionToLocalPosition(marker1, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
61
|
-
|
|
61
|
+
node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
|
|
62
62
|
const marker2 = client.searchForMarker(4, "Eop", false);
|
|
63
|
-
(0,
|
|
63
|
+
(0, node_assert_1.strict)(marker2, "Returned marker undefined.");
|
|
64
64
|
exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
65
|
-
|
|
65
|
+
node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
|
|
66
66
|
});
|
|
67
67
|
it("Should be able to find forward marker position based on label", () => {
|
|
68
68
|
const markerLabel = "EOP";
|
|
@@ -71,11 +71,11 @@ describe("TestClient", () => {
|
|
|
71
71
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
72
72
|
});
|
|
73
73
|
client.insertTextLocal(0, "abc");
|
|
74
|
-
|
|
74
|
+
node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
|
|
75
75
|
const marker = client.searchForMarker(0, markerLabel, true);
|
|
76
|
-
(0,
|
|
76
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
77
77
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
78
|
-
|
|
78
|
+
node_assert_1.strict.equal(exp, 3, "Marker with label not at expected position");
|
|
79
79
|
});
|
|
80
80
|
it("Should be able to find forward marker position based on label from client with single marker", () => {
|
|
81
81
|
const markerLabel = "EOP";
|
|
@@ -84,11 +84,11 @@ describe("TestClient", () => {
|
|
|
84
84
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
85
85
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
86
86
|
});
|
|
87
|
-
|
|
87
|
+
node_assert_1.strict.equal(client.getLength(), 6, "length not expected");
|
|
88
88
|
const marker = client.searchForMarker(0, markerLabel, true);
|
|
89
|
-
(0,
|
|
89
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
90
90
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
91
|
-
|
|
91
|
+
node_assert_1.strict.equal(exp, 1, "Marker with label not at expected position");
|
|
92
92
|
});
|
|
93
93
|
it("Should be able to find backward marker position based on label from client with multiple marker", () => {
|
|
94
94
|
const markerLabel = "EOP";
|
|
@@ -106,11 +106,11 @@ describe("TestClient", () => {
|
|
|
106
106
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
107
107
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
108
108
|
});
|
|
109
|
-
|
|
109
|
+
node_assert_1.strict.equal(client.getLength(), 10, "length not expected");
|
|
110
110
|
const marker = client.searchForMarker(5, markerLabel, false);
|
|
111
|
-
(0,
|
|
111
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
112
112
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
113
|
-
|
|
113
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
114
114
|
});
|
|
115
115
|
it("Should be able to find forward marker position from client with multiple marker", () => {
|
|
116
116
|
const markerLabel = "EOP";
|
|
@@ -128,15 +128,16 @@ describe("TestClient", () => {
|
|
|
128
128
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
129
129
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
130
130
|
});
|
|
131
|
-
|
|
131
|
+
node_assert_1.strict.equal(client.getLength(), 10, "length not expected");
|
|
132
132
|
const marker = client.searchForMarker(5, markerLabel, true);
|
|
133
|
-
(0,
|
|
133
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
134
134
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
135
|
-
|
|
135
|
+
node_assert_1.strict.equal(exp, 6, "Marker with label not at expected position");
|
|
136
136
|
});
|
|
137
137
|
it("Should be able to find forward marker position with multiple segments and markers", () => {
|
|
138
138
|
const markerLabel = "EOP";
|
|
139
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).
|
|
139
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
|
|
140
|
+
client.insertTextLocal(0, i.toString());
|
|
140
141
|
// pad the string with markers on both ends so we never get undefined solely for convenience of this test
|
|
141
142
|
for (let i = 0; i <= client.getLength(); i += 3) {
|
|
142
143
|
client.insertMarkerLocal(i, ops_js_1.ReferenceType.Tile, {
|
|
@@ -146,15 +147,16 @@ describe("TestClient", () => {
|
|
|
146
147
|
}
|
|
147
148
|
for (let index = 0; index < client.getLength(); index++) {
|
|
148
149
|
const marker = client.searchForMarker(index, markerLabel, true);
|
|
149
|
-
(0,
|
|
150
|
+
(0, node_assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
|
|
150
151
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
151
152
|
const offset = index % 3 === 0 ? index % 3 : 3 - (index % 3);
|
|
152
|
-
|
|
153
|
+
node_assert_1.strict.equal(exp, index + offset, "Marker with label not at expected position");
|
|
153
154
|
}
|
|
154
155
|
});
|
|
155
156
|
it("Should be able to find backward marker position with multiple segments and markers", () => {
|
|
156
157
|
const markerLabel = "EOP";
|
|
157
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).
|
|
158
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
|
|
159
|
+
client.insertTextLocal(0, i.toString());
|
|
158
160
|
// pad the string with markers on both ends so we never get undefined solely for convenience of this test
|
|
159
161
|
for (let i = 0; i <= client.getLength(); i += 3) {
|
|
160
162
|
client.insertMarkerLocal(i, ops_js_1.ReferenceType.Tile, {
|
|
@@ -164,14 +166,15 @@ describe("TestClient", () => {
|
|
|
164
166
|
}
|
|
165
167
|
for (let index = client.getLength() - 1; index >= 0; index--) {
|
|
166
168
|
const marker = client.searchForMarker(index, markerLabel, false);
|
|
167
|
-
(0,
|
|
169
|
+
(0, node_assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
|
|
168
170
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
169
|
-
|
|
171
|
+
node_assert_1.strict.equal(exp, index - (index % 3), "Marker with label not at expected position");
|
|
170
172
|
}
|
|
171
173
|
});
|
|
172
174
|
it("Should be able to find distant forward marker", () => {
|
|
173
175
|
const markerLabel = "EOP";
|
|
174
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).
|
|
176
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
|
|
177
|
+
client.insertTextLocal(0, i.toString());
|
|
175
178
|
for (let i = 10; i > 1; i -= 2) {
|
|
176
179
|
client.insertMarkerLocal(client.getLength() - i, ops_js_1.ReferenceType.Tile, {
|
|
177
180
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
@@ -181,12 +184,13 @@ describe("TestClient", () => {
|
|
|
181
184
|
for (let index = 0; index < client.getLength(); index++) {
|
|
182
185
|
const exp = client.slowSearchForMarker(index, markerLabel, true);
|
|
183
186
|
const actual = client.searchForMarker(index, markerLabel, true);
|
|
184
|
-
|
|
187
|
+
node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
|
|
185
188
|
}
|
|
186
189
|
});
|
|
187
190
|
it("Should be able to find distant backward marker", () => {
|
|
188
191
|
const markerLabel = "EOP";
|
|
189
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).
|
|
192
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
|
|
193
|
+
client.insertTextLocal(0, i.toString());
|
|
190
194
|
for (let i = 10; i > 1; i -= 2) {
|
|
191
195
|
client.insertMarkerLocal(client.getLength() - i, ops_js_1.ReferenceType.Tile, {
|
|
192
196
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
@@ -196,12 +200,13 @@ describe("TestClient", () => {
|
|
|
196
200
|
for (let index = client.getLength() - 1; index >= 0; index--) {
|
|
197
201
|
const exp = client.slowSearchForMarker(index, markerLabel, false);
|
|
198
202
|
const actual = client.searchForMarker(index, markerLabel, false);
|
|
199
|
-
|
|
203
|
+
node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
|
|
200
204
|
}
|
|
201
205
|
});
|
|
202
206
|
it("Should match results from forwardExcursion for many segments", () => {
|
|
203
207
|
const markerLabel = "EOP";
|
|
204
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).
|
|
208
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).entries())
|
|
209
|
+
client.insertTextLocal(0, i.toString());
|
|
205
210
|
const random = (0, stochastic_test_utils_1.makeRandom)(0xdeadbeef, 0xfeedbed, client.getLength());
|
|
206
211
|
for (let i = 0; i <= client.getLength() / 6; i++) {
|
|
207
212
|
const pos = random.integer(0, client.getLength() - 1);
|
|
@@ -213,12 +218,13 @@ describe("TestClient", () => {
|
|
|
213
218
|
for (let index = 0; index < client.getLength(); index++) {
|
|
214
219
|
const exp = client.slowSearchForMarker(index, markerLabel, true);
|
|
215
220
|
const actual = client.searchForMarker(index, markerLabel, true);
|
|
216
|
-
|
|
221
|
+
node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
|
|
217
222
|
}
|
|
218
223
|
});
|
|
219
224
|
it("Should match results from backwardExcursion for many segments", () => {
|
|
220
225
|
const markerLabel = "EOP";
|
|
221
|
-
Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).
|
|
226
|
+
for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).entries())
|
|
227
|
+
client.insertTextLocal(0, i.toString());
|
|
222
228
|
const random = (0, stochastic_test_utils_1.makeRandom)(0xdeadbeef, 0xfeedbed, client.getLength());
|
|
223
229
|
for (let i = 0; i <= client.getLength() / 6; i++) {
|
|
224
230
|
const pos = random.integer(0, client.getLength() - 1);
|
|
@@ -230,7 +236,7 @@ describe("TestClient", () => {
|
|
|
230
236
|
for (let index = 0; index < client.getLength(); index++) {
|
|
231
237
|
const exp = client.slowSearchForMarker(index, markerLabel, false);
|
|
232
238
|
const actual = client.searchForMarker(index, markerLabel, false);
|
|
233
|
-
|
|
239
|
+
node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
|
|
234
240
|
}
|
|
235
241
|
});
|
|
236
242
|
it("Should be able to find marker from client with text length 1", () => {
|
|
@@ -239,15 +245,15 @@ describe("TestClient", () => {
|
|
|
239
245
|
[referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
|
|
240
246
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
241
247
|
});
|
|
242
|
-
|
|
248
|
+
node_assert_1.strict.equal(client.getLength(), 1, "length not expected");
|
|
243
249
|
const marker = client.searchForMarker(client.getLength() - 1, markerLabel, false);
|
|
244
|
-
(0,
|
|
250
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
245
251
|
let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
246
|
-
|
|
252
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
247
253
|
const marker1 = client.searchForMarker(0, markerLabel, true);
|
|
248
|
-
(0,
|
|
254
|
+
(0, node_assert_1.strict)(marker1, "Returned marker undefined.");
|
|
249
255
|
exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
250
|
-
|
|
256
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
251
257
|
});
|
|
252
258
|
it("Should not be able to find marker position with index out of bound", () => {
|
|
253
259
|
const markerLabel = "EOP";
|
|
@@ -256,13 +262,13 @@ describe("TestClient", () => {
|
|
|
256
262
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
|
|
257
263
|
});
|
|
258
264
|
client.insertTextLocal(0, "abc");
|
|
259
|
-
|
|
265
|
+
node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
|
|
260
266
|
const marker = client.searchForMarker(5, markerLabel, true);
|
|
261
|
-
|
|
267
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
262
268
|
const marker1 = client.searchForMarker(5, markerLabel, false);
|
|
263
|
-
|
|
269
|
+
node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
|
|
264
270
|
const marker2 = client.searchForMarker(-1, markerLabel, false);
|
|
265
|
-
|
|
271
|
+
node_assert_1.strict.equal(marker2, undefined, "Returned marker should be undefined.");
|
|
266
272
|
});
|
|
267
273
|
it("Should be able to find a deleted and rolled back marker", () => {
|
|
268
274
|
client.insertTextLocal(0, "abc");
|
|
@@ -273,9 +279,9 @@ describe("TestClient", () => {
|
|
|
273
279
|
client.removeRangeLocal(0, 1);
|
|
274
280
|
client.rollback?.({ type: ops_js_1.MergeTreeDeltaType.REMOVE }, client.peekPendingSegmentGroups());
|
|
275
281
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
276
|
-
(0,
|
|
282
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
277
283
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
278
|
-
|
|
284
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
279
285
|
});
|
|
280
286
|
it("Should not be able to find an inserted and rolled back marker", () => {
|
|
281
287
|
client.insertTextLocal(0, "abc");
|
|
@@ -285,7 +291,7 @@ describe("TestClient", () => {
|
|
|
285
291
|
});
|
|
286
292
|
client.rollback?.({ type: ops_js_1.MergeTreeDeltaType.INSERT }, client.peekPendingSegmentGroups());
|
|
287
293
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
288
|
-
|
|
294
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
289
295
|
});
|
|
290
296
|
it("Should be able to find a marker at 0 searching at 0 in both directions", () => {
|
|
291
297
|
client.insertTextLocal(0, "abc");
|
|
@@ -293,15 +299,15 @@ describe("TestClient", () => {
|
|
|
293
299
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
294
300
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
295
301
|
});
|
|
296
|
-
|
|
302
|
+
node_assert_1.strict.equal(client.getLength(), 4);
|
|
297
303
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
298
|
-
(0,
|
|
304
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
299
305
|
let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
300
|
-
|
|
306
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
301
307
|
const marker2 = client.searchForMarker(0, "Eop", false);
|
|
302
|
-
(0,
|
|
308
|
+
(0, node_assert_1.strict)(marker2, "Returned marker undefined.");
|
|
303
309
|
exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
304
|
-
|
|
310
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
305
311
|
});
|
|
306
312
|
it("Should be able to find a marker at length-1 searching at length-1 in both directions", () => {
|
|
307
313
|
client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
|
|
@@ -310,33 +316,33 @@ describe("TestClient", () => {
|
|
|
310
316
|
});
|
|
311
317
|
client.insertTextLocal(0, "abc");
|
|
312
318
|
const length = client.getLength();
|
|
313
|
-
|
|
319
|
+
node_assert_1.strict.equal(length, 4);
|
|
314
320
|
const marker = client.searchForMarker(length - 1, "Eop", true);
|
|
315
|
-
(0,
|
|
321
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined.");
|
|
316
322
|
let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
317
|
-
|
|
323
|
+
node_assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
|
|
318
324
|
const marker2 = client.searchForMarker(length - 1, "Eop", false);
|
|
319
|
-
(0,
|
|
325
|
+
(0, node_assert_1.strict)(marker2, "Returned marker undefined.");
|
|
320
326
|
exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
321
|
-
|
|
327
|
+
node_assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
|
|
322
328
|
});
|
|
323
329
|
it("Should return undefined when searching past the end of a string length 1", () => {
|
|
324
330
|
client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
|
|
325
331
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
326
332
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
327
333
|
});
|
|
328
|
-
|
|
334
|
+
node_assert_1.strict.equal(client.getLength(), 1);
|
|
329
335
|
const marker = client.searchForMarker(client.getLength(), "Eop", true);
|
|
330
|
-
|
|
336
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
331
337
|
});
|
|
332
338
|
it("Should return undefined when searching before the start of a string length 1", () => {
|
|
333
339
|
client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
|
|
334
340
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
335
341
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
336
342
|
});
|
|
337
|
-
|
|
343
|
+
node_assert_1.strict.equal(client.getLength(), 1);
|
|
338
344
|
const marker = client.searchForMarker(-1, "Eop", false);
|
|
339
|
-
|
|
345
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
340
346
|
});
|
|
341
347
|
it("Should return undefined when searching past the end of a string length > 1", () => {
|
|
342
348
|
client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
|
|
@@ -344,9 +350,9 @@ describe("TestClient", () => {
|
|
|
344
350
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
345
351
|
});
|
|
346
352
|
client.insertTextLocal(0, "abc");
|
|
347
|
-
|
|
353
|
+
node_assert_1.strict.equal(client.getLength(), 4);
|
|
348
354
|
const marker = client.searchForMarker(client.getLength(), "Eop", true);
|
|
349
|
-
|
|
355
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
350
356
|
});
|
|
351
357
|
it("Should return undefined when searching before the start of a string length > 1", () => {
|
|
352
358
|
client.insertTextLocal(0, "abc");
|
|
@@ -354,25 +360,25 @@ describe("TestClient", () => {
|
|
|
354
360
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
355
361
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
356
362
|
});
|
|
357
|
-
|
|
363
|
+
node_assert_1.strict.equal(client.getLength(), 4);
|
|
358
364
|
const marker = client.searchForMarker(-1, "Eop", false);
|
|
359
|
-
|
|
365
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
360
366
|
});
|
|
361
367
|
it("Should return undefined when trying to find marker from text without the specified marker", () => {
|
|
362
368
|
const markerLabel = "EOP";
|
|
363
369
|
client.insertTextLocal(0, "abc");
|
|
364
|
-
|
|
370
|
+
node_assert_1.strict.equal(client.getLength(), 3, "length not expected");
|
|
365
371
|
const marker = client.searchForMarker(1, markerLabel);
|
|
366
|
-
|
|
372
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
367
373
|
const marker1 = client.searchForMarker(1, markerLabel, false);
|
|
368
|
-
|
|
374
|
+
node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
|
|
369
375
|
});
|
|
370
376
|
it("Should return undefined when trying to find marker from null text", () => {
|
|
371
377
|
const markerLabel = "EOP";
|
|
372
378
|
const marker = client.searchForMarker(1, markerLabel);
|
|
373
|
-
|
|
379
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
374
380
|
const marker1 = client.searchForMarker(1, markerLabel, false);
|
|
375
|
-
|
|
381
|
+
node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
|
|
376
382
|
});
|
|
377
383
|
it("Should return undefined when trying to find a removed marker", () => {
|
|
378
384
|
client.insertTextLocal(0, "abc");
|
|
@@ -380,11 +386,11 @@ describe("TestClient", () => {
|
|
|
380
386
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
|
|
381
387
|
[referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
|
|
382
388
|
});
|
|
383
|
-
|
|
389
|
+
node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
|
|
384
390
|
client.removeRangeLocal(0, 1);
|
|
385
|
-
|
|
391
|
+
node_assert_1.strict.equal(client.getLength(), 3, "length not expected");
|
|
386
392
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
387
|
-
|
|
393
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined");
|
|
388
394
|
});
|
|
389
395
|
describe("with remote client", () => {
|
|
390
396
|
const remoteUserLongId = "remoteUser";
|
|
@@ -413,12 +419,12 @@ describe("TestClient", () => {
|
|
|
413
419
|
client2.applyMsg(textMsg);
|
|
414
420
|
client.applyMsg(markerMsg);
|
|
415
421
|
client2.applyMsg(markerMsg);
|
|
416
|
-
|
|
417
|
-
|
|
422
|
+
node_assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
|
|
423
|
+
node_assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
|
|
418
424
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
419
|
-
(0,
|
|
425
|
+
(0, node_assert_1.strict)(marker, "Returned marker undefined");
|
|
420
426
|
const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
|
|
421
|
-
|
|
427
|
+
node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
|
|
422
428
|
});
|
|
423
429
|
it("Should not be able to find remotely removed marker", () => {
|
|
424
430
|
let seq = 0;
|
|
@@ -431,15 +437,15 @@ describe("TestClient", () => {
|
|
|
431
437
|
client2.applyMsg(textMsg);
|
|
432
438
|
client.applyMsg(mInsertMsg);
|
|
433
439
|
client2.applyMsg(mInsertMsg);
|
|
434
|
-
|
|
435
|
-
|
|
440
|
+
node_assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
|
|
441
|
+
node_assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
|
|
436
442
|
const mRemoveMsg = client2.makeOpMessage(client2.removeRangeLocal(0, 1), seq);
|
|
437
443
|
client.applyMsg(mRemoveMsg);
|
|
438
444
|
client2.applyMsg(mRemoveMsg);
|
|
439
|
-
|
|
440
|
-
|
|
445
|
+
node_assert_1.strict.equal(client.getLength(), 3, "length not expected - client");
|
|
446
|
+
node_assert_1.strict.equal(client2.getLength(), 3, "length not expected - client 2");
|
|
441
447
|
const marker = client.searchForMarker(0, "Eop", true);
|
|
442
|
-
|
|
448
|
+
node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
|
|
443
449
|
});
|
|
444
450
|
});
|
|
445
451
|
});
|
|
@@ -447,50 +453,54 @@ describe("TestClient", () => {
|
|
|
447
453
|
it("removed marker", () => {
|
|
448
454
|
const clients = (0, testClientLogger_js_1.createClientsAtInitialState)({ initialState: "hello world" }, "A", "B");
|
|
449
455
|
const randomMarkerKey = "randomKey1";
|
|
450
|
-
(0,
|
|
456
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
|
|
451
457
|
const ops = [
|
|
452
458
|
clients.A.makeOpMessage(clients.A.insertMarkerLocal(5, ops_js_1.ReferenceType.Simple, {
|
|
453
459
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: randomMarkerKey,
|
|
454
460
|
}), 1),
|
|
455
461
|
];
|
|
456
|
-
(0,
|
|
457
|
-
ops.splice(0)
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
(0,
|
|
462
|
+
(0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
|
|
463
|
+
for (const op of ops.splice(0)) {
|
|
464
|
+
for (const c of clients.all)
|
|
465
|
+
c.applyMsg(op);
|
|
466
|
+
}
|
|
467
|
+
(0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
|
|
468
|
+
(0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
|
|
462
469
|
ops.push(clients.A.makeOpMessage(clients.A.removeRangeLocal(5, 6), 1));
|
|
463
|
-
(0,
|
|
464
|
-
(0,
|
|
465
|
-
ops.splice(0)
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
(0,
|
|
470
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove before ack");
|
|
471
|
+
(0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove before ack");
|
|
472
|
+
for (const op of ops.splice(0)) {
|
|
473
|
+
for (const c of clients.all)
|
|
474
|
+
c.applyMsg(op);
|
|
475
|
+
}
|
|
476
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove after ack");
|
|
477
|
+
(0, node_assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove after ack");
|
|
470
478
|
});
|
|
471
479
|
it("obliterate marker", () => {
|
|
472
480
|
const clients = (0, testClientLogger_js_1.createClientsAtInitialState)({ initialState: "hello world", options: { mergeTreeEnableObliterate: true } }, "A", "B");
|
|
473
481
|
const randomMarkerKey = "randomKey1";
|
|
474
|
-
(0,
|
|
482
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
|
|
475
483
|
const ops = [
|
|
476
484
|
clients.A.makeOpMessage(clients.A.insertMarkerLocal(5, ops_js_1.ReferenceType.Simple, {
|
|
477
485
|
[mergeTreeNodes_js_1.reservedMarkerIdKey]: randomMarkerKey,
|
|
478
486
|
}), 1),
|
|
479
487
|
];
|
|
480
|
-
(0,
|
|
481
|
-
ops.splice(0)
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
(0,
|
|
488
|
+
(0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
|
|
489
|
+
for (const op of ops.splice(0)) {
|
|
490
|
+
for (const c of clients.all)
|
|
491
|
+
c.applyMsg(op);
|
|
492
|
+
}
|
|
493
|
+
(0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
|
|
494
|
+
(0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
|
|
486
495
|
ops.push(clients.A.makeOpMessage(clients.A.obliterateRangeLocal(5, 6), 1));
|
|
487
|
-
(0,
|
|
488
|
-
(0,
|
|
489
|
-
ops.splice(0)
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
(0,
|
|
496
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate before ack");
|
|
497
|
+
(0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate before ack");
|
|
498
|
+
for (const op of ops.splice(0)) {
|
|
499
|
+
for (const c of clients.all)
|
|
500
|
+
c.applyMsg(op);
|
|
501
|
+
}
|
|
502
|
+
(0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate after ack");
|
|
503
|
+
(0, node_assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate after ack");
|
|
494
504
|
});
|
|
495
505
|
});
|
|
496
506
|
});
|