@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
package/src/mergeTreeNodeWalk.ts
CHANGED
|
@@ -189,7 +189,8 @@ export function walkAllChildSegments(
|
|
|
189
189
|
startBlock.children[0],
|
|
190
190
|
ancestors.size === 0
|
|
191
191
|
? undefined
|
|
192
|
-
: (node)
|
|
192
|
+
: (node): false | undefined =>
|
|
193
|
+
ancestors.has(node.parent) ? NodeAction.Exit : NodeAction.Continue,
|
|
193
194
|
leafAction,
|
|
194
195
|
);
|
|
195
196
|
}
|
package/src/mergeTreeNodes.ts
CHANGED
|
@@ -20,7 +20,6 @@ import { TrackingGroupCollection } from "./mergeTreeTracking.js";
|
|
|
20
20
|
import { IJSONSegment, IMarkerDef, MergeTreeDeltaType, ReferenceType } from "./ops.js";
|
|
21
21
|
import { computeHierarchicalOrdinal } from "./ordinal.js";
|
|
22
22
|
import type { PartialSequenceLengths } from "./partialLengths.js";
|
|
23
|
-
// eslint-disable-next-line import/no-deprecated
|
|
24
23
|
import { PropertySet, clone, createMap, type MapLike } from "./properties.js";
|
|
25
24
|
import {
|
|
26
25
|
ReferencePosition,
|
|
@@ -78,6 +77,8 @@ export interface IRemovalInfo {
|
|
|
78
77
|
}
|
|
79
78
|
|
|
80
79
|
/**
|
|
80
|
+
* Returns the removal information for a segment.
|
|
81
|
+
*
|
|
81
82
|
* @internal
|
|
82
83
|
*/
|
|
83
84
|
export function toRemovalInfo(
|
|
@@ -269,6 +270,8 @@ export interface ISegment extends IMergeNodeCommon, Partial<IRemovalInfo>, Parti
|
|
|
269
270
|
canAppend(segment: ISegment): boolean;
|
|
270
271
|
append(segment: ISegment): void;
|
|
271
272
|
splitAt(pos: number): ISegment | undefined;
|
|
273
|
+
// Changing this to something other than any would break consumers.
|
|
274
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
272
275
|
toJSONObject(): any;
|
|
273
276
|
/**
|
|
274
277
|
* Acks the current segment against the segment group, op, and merge tree.
|
|
@@ -442,14 +445,16 @@ export class MergeBlock implements IMergeNodeCommon {
|
|
|
442
445
|
partialLengths?: PartialSequenceLengths;
|
|
443
446
|
|
|
444
447
|
public constructor(public childCount: number) {
|
|
448
|
+
// Suppression needed due to the way the merge tree children are initalized - we
|
|
449
|
+
// allocate 8 children blocks, but any unused blocks are not counted in the childCount.
|
|
450
|
+
// Using Array.from leads to unused children being undefined, which are counted in childCount.
|
|
451
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
445
452
|
this.children = new Array<IMergeNode>(MaxNodesInBlock);
|
|
446
|
-
// eslint-disable-next-line import/no-deprecated
|
|
447
453
|
this.rightmostTiles = createMap<Marker>();
|
|
448
|
-
// eslint-disable-next-line import/no-deprecated
|
|
449
454
|
this.leftmostTiles = createMap<Marker>();
|
|
450
455
|
}
|
|
451
456
|
|
|
452
|
-
public setOrdinal(child: IMergeNode, index: number) {
|
|
457
|
+
public setOrdinal(child: IMergeNode, index: number): void {
|
|
453
458
|
const childCount = this.childCount;
|
|
454
459
|
assert(
|
|
455
460
|
childCount >= 1 && childCount <= MaxNodesInBlock,
|
|
@@ -463,7 +468,7 @@ export class MergeBlock implements IMergeNodeCommon {
|
|
|
463
468
|
);
|
|
464
469
|
}
|
|
465
470
|
|
|
466
|
-
public assignChild(child: IMergeNode, index: number, updateOrdinal = true) {
|
|
471
|
+
public assignChild(child: IMergeNode, index: number, updateOrdinal = true): void {
|
|
467
472
|
child.parent = this;
|
|
468
473
|
child.index = index;
|
|
469
474
|
if (updateOrdinal) {
|
|
@@ -473,7 +478,7 @@ export class MergeBlock implements IMergeNodeCommon {
|
|
|
473
478
|
}
|
|
474
479
|
}
|
|
475
480
|
|
|
476
|
-
export function seqLTE(seq: number, minOrRefSeq: number) {
|
|
481
|
+
export function seqLTE(seq: number, minOrRefSeq: number): boolean {
|
|
477
482
|
return seq !== UnassignedSequenceNumber && seq <= minOrRefSeq;
|
|
478
483
|
}
|
|
479
484
|
|
|
@@ -513,9 +518,10 @@ export abstract class BaseSegment implements ISegment {
|
|
|
513
518
|
seq?: number,
|
|
514
519
|
collaborating?: boolean,
|
|
515
520
|
rollback: PropertiesRollback = PropertiesRollback.None,
|
|
516
|
-
) {
|
|
521
|
+
): PropertySet {
|
|
517
522
|
this.propertyManager ??= new PropertiesManager();
|
|
518
|
-
//
|
|
523
|
+
// A property set must be able to hold properties of any type, so the any is needed.
|
|
524
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
519
525
|
this.properties ??= createMap<any>();
|
|
520
526
|
return this.propertyManager.addProperties(
|
|
521
527
|
this.properties,
|
|
@@ -534,10 +540,9 @@ export abstract class BaseSegment implements ISegment {
|
|
|
534
540
|
return true;
|
|
535
541
|
}
|
|
536
542
|
|
|
537
|
-
protected cloneInto(b: ISegment) {
|
|
543
|
+
protected cloneInto(b: ISegment): void {
|
|
538
544
|
b.clientId = this.clientId;
|
|
539
545
|
// TODO: deep clone properties
|
|
540
|
-
// eslint-disable-next-line import/no-deprecated
|
|
541
546
|
b.properties = clone(this.properties);
|
|
542
547
|
b.removedClientIds = this.removedClientIds?.slice();
|
|
543
548
|
// TODO: copy removed client overlap and branch removal info
|
|
@@ -554,15 +559,16 @@ export abstract class BaseSegment implements ISegment {
|
|
|
554
559
|
return false;
|
|
555
560
|
}
|
|
556
561
|
|
|
557
|
-
protected addSerializedProps(jseg: IJSONSegment) {
|
|
562
|
+
protected addSerializedProps(jseg: IJSONSegment): void {
|
|
558
563
|
if (this.properties) {
|
|
559
564
|
jseg.props = { ...this.properties };
|
|
560
565
|
}
|
|
561
566
|
}
|
|
562
|
-
|
|
567
|
+
// This has to return any type because the return type is different for different segment types.
|
|
568
|
+
// TODO: If possible, change the return type to match what should be returned for each segment type.
|
|
569
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
563
570
|
public abstract toJSONObject(): any;
|
|
564
571
|
|
|
565
|
-
/***/
|
|
566
572
|
public ack(segmentGroup: SegmentGroup, opArgs: IMergeTreeDeltaOpArgs): boolean {
|
|
567
573
|
const currentSegmentGroup = this.segmentGroups.dequeue();
|
|
568
574
|
assert(
|
|
@@ -570,15 +576,16 @@ export abstract class BaseSegment implements ISegment {
|
|
|
570
576
|
0x043 /* "On ack, unexpected segmentGroup!" */,
|
|
571
577
|
);
|
|
572
578
|
switch (opArgs.op.type) {
|
|
573
|
-
case MergeTreeDeltaType.ANNOTATE:
|
|
579
|
+
case MergeTreeDeltaType.ANNOTATE: {
|
|
574
580
|
assert(
|
|
575
581
|
!!this.propertyManager,
|
|
576
582
|
0x044 /* "On annotate ack, missing segment property manager!" */,
|
|
577
583
|
);
|
|
578
584
|
this.propertyManager.ackPendingProperties(opArgs.op);
|
|
579
585
|
return true;
|
|
586
|
+
}
|
|
580
587
|
|
|
581
|
-
case MergeTreeDeltaType.INSERT:
|
|
588
|
+
case MergeTreeDeltaType.INSERT: {
|
|
582
589
|
assert(
|
|
583
590
|
this.seq === UnassignedSequenceNumber,
|
|
584
591
|
0x045 /* "On insert, seq number already assigned!" */,
|
|
@@ -586,8 +593,9 @@ export abstract class BaseSegment implements ISegment {
|
|
|
586
593
|
this.seq = opArgs.sequencedMessage!.sequenceNumber;
|
|
587
594
|
this.localSeq = undefined;
|
|
588
595
|
return true;
|
|
596
|
+
}
|
|
589
597
|
|
|
590
|
-
case MergeTreeDeltaType.REMOVE:
|
|
598
|
+
case MergeTreeDeltaType.REMOVE: {
|
|
591
599
|
const removalInfo: IRemovalInfo | undefined = toRemovalInfo(this);
|
|
592
600
|
assert(removalInfo !== undefined, 0x046 /* "On remove ack, missing removal info!" */);
|
|
593
601
|
this.localRemovedSeq = undefined;
|
|
@@ -596,8 +604,9 @@ export abstract class BaseSegment implements ISegment {
|
|
|
596
604
|
return true;
|
|
597
605
|
}
|
|
598
606
|
return false;
|
|
607
|
+
}
|
|
599
608
|
|
|
600
|
-
case MergeTreeDeltaType.OBLITERATE:
|
|
609
|
+
case MergeTreeDeltaType.OBLITERATE: {
|
|
601
610
|
const moveInfo: IMoveInfo | undefined = toMoveInfo(this);
|
|
602
611
|
assert(moveInfo !== undefined, 0x86e /* On obliterate ack, missing move info! */);
|
|
603
612
|
this.localMovedSeq = undefined;
|
|
@@ -611,9 +620,11 @@ export abstract class BaseSegment implements ISegment {
|
|
|
611
620
|
}
|
|
612
621
|
|
|
613
622
|
return false;
|
|
623
|
+
}
|
|
614
624
|
|
|
615
|
-
default:
|
|
625
|
+
default: {
|
|
616
626
|
throw new Error(`${opArgs.op.type} is in unrecognized operation type`);
|
|
627
|
+
}
|
|
617
628
|
}
|
|
618
629
|
}
|
|
619
630
|
|
|
@@ -629,13 +640,16 @@ export abstract class BaseSegment implements ISegment {
|
|
|
629
640
|
}
|
|
630
641
|
|
|
631
642
|
this.copyPropertiesTo(leafSegment);
|
|
632
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
643
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias, unicorn/no-this-assignment
|
|
633
644
|
const thisAsMergeSegment: ISegmentLeaf = this;
|
|
634
645
|
leafSegment.parent = thisAsMergeSegment.parent;
|
|
635
646
|
|
|
636
647
|
// Give the leaf a temporary yet valid ordinal.
|
|
637
648
|
// when this segment is put in the tree, it will get its real ordinal,
|
|
638
649
|
// but this ordinal meets all the necessary invariants for now.
|
|
650
|
+
// Ordinals exist purely for lexicographical sort order and use a small set of valid bytes for each string character.
|
|
651
|
+
// The extra handling fromCodePoint has for things like surrogate pairs is therefore unnecessary.
|
|
652
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
639
653
|
leafSegment.ordinal = this.ordinal + String.fromCharCode(0);
|
|
640
654
|
|
|
641
655
|
leafSegment.removedClientIds = this.removedClientIds?.slice();
|
|
@@ -661,16 +675,14 @@ export abstract class BaseSegment implements ISegment {
|
|
|
661
675
|
return leafSegment;
|
|
662
676
|
}
|
|
663
677
|
|
|
664
|
-
private copyPropertiesTo(other: ISegment) {
|
|
665
|
-
if (this.propertyManager) {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
);
|
|
673
|
-
}
|
|
678
|
+
private copyPropertiesTo(other: ISegment): void {
|
|
679
|
+
if (this.propertyManager && this.properties) {
|
|
680
|
+
other.propertyManager = new PropertiesManager();
|
|
681
|
+
other.properties = this.propertyManager.copyTo(
|
|
682
|
+
this.properties,
|
|
683
|
+
other.properties,
|
|
684
|
+
other.propertyManager,
|
|
685
|
+
);
|
|
674
686
|
}
|
|
675
687
|
}
|
|
676
688
|
|
|
@@ -742,7 +754,7 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
|
|
|
742
754
|
}
|
|
743
755
|
public readonly type = Marker.type;
|
|
744
756
|
|
|
745
|
-
public static make(refType: ReferenceType, props?: PropertySet) {
|
|
757
|
+
public static make(refType: ReferenceType, props?: PropertySet): Marker {
|
|
746
758
|
const marker = new Marker(refType);
|
|
747
759
|
if (props) {
|
|
748
760
|
marker.addProperties(props);
|
|
@@ -755,34 +767,34 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
|
|
|
755
767
|
this.cachedLength = 1;
|
|
756
768
|
}
|
|
757
769
|
|
|
758
|
-
toJSONObject() {
|
|
770
|
+
toJSONObject(): IJSONMarkerSegment {
|
|
759
771
|
const obj: IJSONMarkerSegment = { marker: { refType: this.refType } };
|
|
760
772
|
super.addSerializedProps(obj);
|
|
761
773
|
return obj;
|
|
762
774
|
}
|
|
763
775
|
|
|
764
|
-
static fromJSONObject(spec:
|
|
776
|
+
static fromJSONObject(spec: IJSONSegment): Marker | undefined {
|
|
765
777
|
if (spec && typeof spec === "object" && "marker" in spec) {
|
|
766
|
-
return Marker.make(spec.marker.refType, spec.props as PropertySet);
|
|
778
|
+
return Marker.make((spec.marker as Marker).refType, spec.props as PropertySet);
|
|
767
779
|
}
|
|
768
780
|
return undefined;
|
|
769
781
|
}
|
|
770
782
|
|
|
771
|
-
clone() {
|
|
783
|
+
clone(): Marker {
|
|
772
784
|
const b = Marker.make(this.refType, this.properties);
|
|
773
785
|
this.cloneInto(b);
|
|
774
786
|
return b;
|
|
775
787
|
}
|
|
776
788
|
|
|
777
|
-
getSegment() {
|
|
789
|
+
getSegment(): Marker {
|
|
778
790
|
return this;
|
|
779
791
|
}
|
|
780
792
|
|
|
781
|
-
getOffset() {
|
|
793
|
+
getOffset(): number {
|
|
782
794
|
return 0;
|
|
783
795
|
}
|
|
784
796
|
|
|
785
|
-
getProperties() {
|
|
797
|
+
getProperties(): PropertySet | undefined {
|
|
786
798
|
return this.properties;
|
|
787
799
|
}
|
|
788
800
|
|
|
@@ -790,11 +802,11 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
|
|
|
790
802
|
return this.properties?.[reservedMarkerIdKey] as string;
|
|
791
803
|
}
|
|
792
804
|
|
|
793
|
-
toString() {
|
|
805
|
+
toString(): string {
|
|
794
806
|
return `M${this.getId()}`;
|
|
795
807
|
}
|
|
796
808
|
|
|
797
|
-
protected createSplitSegmentAt(pos: number) {
|
|
809
|
+
protected createSplitSegmentAt(pos: number): undefined {
|
|
798
810
|
return undefined;
|
|
799
811
|
}
|
|
800
812
|
|
|
@@ -802,7 +814,7 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
|
|
|
802
814
|
return false;
|
|
803
815
|
}
|
|
804
816
|
|
|
805
|
-
append() {
|
|
817
|
+
append(): void {
|
|
806
818
|
throw new Error("Can not append to marker");
|
|
807
819
|
}
|
|
808
820
|
}
|
|
@@ -890,7 +902,7 @@ export class CollaborationWindow {
|
|
|
890
902
|
*/
|
|
891
903
|
localSeq = 0;
|
|
892
904
|
|
|
893
|
-
loadFrom(a: CollaborationWindow) {
|
|
905
|
+
loadFrom(a: CollaborationWindow): void {
|
|
894
906
|
this.clientId = a.clientId;
|
|
895
907
|
this.collaborating = a.collaborating;
|
|
896
908
|
this.minSeq = a.minSeq;
|
|
@@ -899,14 +911,14 @@ export class CollaborationWindow {
|
|
|
899
911
|
}
|
|
900
912
|
|
|
901
913
|
/**
|
|
902
|
-
*
|
|
914
|
+
* Compares two numbers.
|
|
903
915
|
*/
|
|
904
|
-
export const compareNumbers = (a: number, b: number) => a - b;
|
|
916
|
+
export const compareNumbers = (a: number, b: number): number => a - b;
|
|
905
917
|
|
|
906
918
|
/**
|
|
907
|
-
*
|
|
919
|
+
* Compares two strings.
|
|
908
920
|
*/
|
|
909
|
-
export const compareStrings = (a: string, b: string) => a.localeCompare(b);
|
|
921
|
+
export const compareStrings = (a: string, b: string): number => a.localeCompare(b);
|
|
910
922
|
|
|
911
923
|
/**
|
|
912
924
|
* Get a human-readable string for a given {@link Marker}.
|
|
@@ -942,9 +954,10 @@ export function debugMarkerToString(marker: Marker): string {
|
|
|
942
954
|
pbuf += JSON.stringify(marker.properties, (key, value) => {
|
|
943
955
|
// Avoid circular reference when stringifying makers containing handles.
|
|
944
956
|
// (Substitute a debug string instead.)
|
|
957
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
945
958
|
const handle = !!value && value.IFluidHandle;
|
|
946
959
|
|
|
947
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
960
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
|
|
948
961
|
return handle ? `#Handle(${handle.routeContext.path}/${handle.path})` : value;
|
|
949
962
|
});
|
|
950
963
|
}
|
package/src/mergeTreeTracking.ts
CHANGED
|
@@ -78,7 +78,7 @@ export class UnorderedTrackingGroup implements ITrackingGroup {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
public get tracked(): readonly Trackable[] {
|
|
81
|
-
return
|
|
81
|
+
return [...this.trackedSet];
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
public get size(): number {
|
|
@@ -149,9 +149,9 @@ export class TrackingGroupCollection {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
public copyTo(trackable: Trackable): void {
|
|
152
|
-
this._trackingGroups
|
|
152
|
+
for (const sg of this._trackingGroups) {
|
|
153
153
|
trackable.trackingCollection.link(sg);
|
|
154
|
-
}
|
|
154
|
+
}
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
public get empty(): boolean {
|
package/src/opBuilder.ts
CHANGED
|
@@ -98,6 +98,7 @@ export function createObliterateRangeOp(start: number, end: number): IMergeTreeO
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
|
+
* Creates an op for inserting a segment at the specified position.
|
|
101
102
|
*
|
|
102
103
|
* @param pos - The position to insert the segment at
|
|
103
104
|
* @param segment - The segment to insert
|
|
@@ -109,9 +110,12 @@ export function createInsertSegmentOp(pos: number, segment: ISegment): IMergeTre
|
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
/**
|
|
113
|
+
* Creates the op for inserting a segment from its JSON representation at
|
|
114
|
+
* the specified position.
|
|
115
|
+
*
|
|
112
116
|
* @internal
|
|
113
117
|
*/
|
|
114
|
-
export function createInsertOp(pos: number, segSpec:
|
|
118
|
+
export function createInsertOp(pos: number, segSpec: unknown): IMergeTreeInsertMsg {
|
|
115
119
|
return {
|
|
116
120
|
pos1: pos,
|
|
117
121
|
seg: segSpec,
|
|
@@ -120,6 +124,7 @@ export function createInsertOp(pos: number, segSpec: any): IMergeTreeInsertMsg {
|
|
|
120
124
|
}
|
|
121
125
|
|
|
122
126
|
/**
|
|
127
|
+
* Creates a group op from the provided ops.
|
|
123
128
|
*
|
|
124
129
|
* @param ops - The ops to group
|
|
125
130
|
*
|
package/src/ops.ts
CHANGED
|
@@ -121,6 +121,9 @@ export interface IMergeTreeInsertMsg extends IMergeTreeDelta {
|
|
|
121
121
|
relativePos1?: IRelativePosition;
|
|
122
122
|
pos2?: number;
|
|
123
123
|
relativePos2?: IRelativePosition;
|
|
124
|
+
// The segment must be allowed to be of any type in order to acommodate converting from
|
|
125
|
+
// JSON to a segment.
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
127
|
seg?: any;
|
|
125
128
|
}
|
|
126
129
|
|
|
@@ -169,6 +172,7 @@ export interface IMergeTreeAnnotateMsg extends IMergeTreeDelta {
|
|
|
169
172
|
relativePos1?: IRelativePosition;
|
|
170
173
|
pos2?: number;
|
|
171
174
|
relativePos2?: IRelativePosition;
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
172
176
|
props: Record<string, any>;
|
|
173
177
|
}
|
|
174
178
|
|
|
@@ -190,6 +194,7 @@ export interface IMergeTreeGroupMsg extends IMergeTreeDelta {
|
|
|
190
194
|
* @alpha
|
|
191
195
|
*/
|
|
192
196
|
export interface IJSONSegment {
|
|
197
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
198
|
props?: Record<string, any>;
|
|
194
199
|
}
|
|
195
200
|
|
package/src/ordinal.ts
CHANGED
|
@@ -11,7 +11,7 @@ export function computeHierarchicalOrdinal(
|
|
|
11
11
|
actualCount: number,
|
|
12
12
|
parentOrdinal: string,
|
|
13
13
|
previousOrdinal: string | undefined,
|
|
14
|
-
) {
|
|
14
|
+
): string {
|
|
15
15
|
assert(
|
|
16
16
|
maxCount <= 16 && actualCount <= maxCount,
|
|
17
17
|
0x3f0 /* count must be less than max, and max must be 16 or less */,
|
|
@@ -20,10 +20,17 @@ export function computeHierarchicalOrdinal(
|
|
|
20
20
|
const ordinalWidth = 1 << (maxCount - actualCount);
|
|
21
21
|
let ordinal: string;
|
|
22
22
|
if (previousOrdinal === undefined) {
|
|
23
|
+
// Ordinals exist purely for lexicographical sort order and use a small set of valid bytes for each string character.
|
|
24
|
+
// The extra handling fromCodePoint has for things like surrogate pairs is therefore unnecessary.
|
|
25
|
+
// disable the rule to use code points when dealing with ordinals.
|
|
26
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
23
27
|
ordinal = parentOrdinal + String.fromCharCode(ordinalWidth - 1);
|
|
24
28
|
} else {
|
|
29
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
25
30
|
const prevOrdCode = previousOrdinal.charCodeAt(previousOrdinal.length - 1);
|
|
31
|
+
assert(prevOrdCode !== undefined, 0x9ad /* previous ordinal should not be empty */);
|
|
26
32
|
const localOrdinal = prevOrdCode + ordinalWidth;
|
|
33
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
27
34
|
ordinal = parentOrdinal + String.fromCharCode(localOrdinal);
|
|
28
35
|
}
|
|
29
36
|
|