@fluidframework/merge-tree 2.0.0-rc.2.0.1 → 2.0.0-rc.3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/api-report/merge-tree.api.md +16 -4
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js.map +1 -1
- package/dist/attributionCollection.d.ts +1 -1
- package/dist/attributionCollection.d.ts.map +1 -1
- package/dist/attributionCollection.js +6 -6
- package/dist/attributionCollection.js.map +1 -1
- package/dist/attributionPolicy.d.ts +2 -2
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +5 -5
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +8 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +37 -48
- package/dist/client.js.map +1 -1
- package/dist/collections/list.js +3 -3
- package/dist/collections/list.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts +5 -5
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js +2 -2
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +76 -0
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +7 -7
- package/dist/localReference.js.map +1 -1
- package/dist/mergeTree.d.ts +8 -8
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +44 -57
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js +4 -0
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts +3 -3
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +37 -55
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +40 -19
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/opBuilder.d.ts +1 -1
- package/dist/opBuilder.d.ts.map +1 -1
- package/dist/opBuilder.js.map +1 -1
- package/dist/ordinal.js +2 -2
- package/dist/ordinal.js.map +1 -1
- package/dist/partialLengths.d.ts +6 -6
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +13 -13
- package/dist/partialLengths.js.map +1 -1
- package/dist/public.d.ts +12 -0
- package/dist/revertibles.d.ts +1 -1
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +15 -15
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +2 -2
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/snapshotChunks.d.ts +2 -2
- package/dist/snapshotChunks.d.ts.map +1 -1
- package/dist/snapshotChunks.js.map +1 -1
- package/dist/snapshotLoader.d.ts +2 -2
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +11 -11
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts +3 -3
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js +10 -10
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts +4 -4
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js +9 -10
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/test/Insertion.perf.spec.js.map +1 -1
- package/dist/test/PartialLengths.perf.spec.js +1 -1
- package/dist/test/PartialLengths.perf.spec.js.map +1 -1
- package/dist/test/Removal.perf.spec.js +1 -1
- package/dist/test/Removal.perf.spec.js.map +1 -1
- package/dist/test/Snapshot.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.perf.spec.js +2 -2
- package/dist/test/attributionCollection.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.spec.js.map +1 -1
- package/dist/test/attributionPolicy.spec.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +7 -7
- package/dist/test/beastTest.spec.js.map +1 -1
- 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.map +1 -1
- package/dist/test/client.applyMsg.spec.js +2 -2
- package/dist/test/client.applyMsg.spec.js.map +1 -1
- package/dist/test/client.applyStashedOpFarm.spec.d.ts +1 -1
- package/dist/test/client.applyStashedOpFarm.spec.d.ts.map +1 -1
- package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
- package/dist/test/client.attributionFarm.spec.d.ts.map +1 -1
- package/dist/test/client.attributionFarm.spec.js +1 -1
- package/dist/test/client.attributionFarm.spec.js.map +1 -1
- package/dist/test/client.conflictFarm.spec.d.ts.map +1 -1
- package/dist/test/client.conflictFarm.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +1 -1
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +6 -6
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.localReferenceFarm.spec.js +2 -2
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
- package/dist/test/client.rebasePosition.spec.js.map +1 -1
- package/dist/test/client.reconnectFarm.spec.d.ts +1 -1
- package/dist/test/client.reconnectFarm.spec.d.ts.map +1 -1
- package/dist/test/client.reconnectFarm.spec.js +1 -1
- package/dist/test/client.reconnectFarm.spec.js.map +1 -1
- package/dist/test/client.replay.spec.js +4 -4
- package/dist/test/client.replay.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js +2 -2
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/client.rollbackFarm.spec.js.map +1 -1
- package/dist/test/client.searchForMarker.spec.js +1 -1
- package/dist/test/client.searchForMarker.spec.js.map +1 -1
- package/dist/test/client.walkSegments.spec.js.map +1 -1
- package/dist/test/collections.list.spec.js.map +1 -1
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +3 -3
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +1 -1
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insert.deltaCallback.spec.js +1 -1
- package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +3 -3
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js +2 -2
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.d.ts +2 -2
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +3 -3
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
- package/dist/test/obliterate.concurrent.spec.js +2 -2
- package/dist/test/obliterate.concurrent.spec.js.map +1 -1
- package/dist/test/obliterate.deltaCallback.spec.js +1 -1
- package/dist/test/obliterate.deltaCallback.spec.js.map +1 -1
- package/dist/test/obliterate.partialLength.spec.js.map +1 -1
- package/dist/test/obliterate.reconnect.spec.js.map +1 -1
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/ordinal.spec.d.ts +4 -0
- package/dist/test/ordinal.spec.d.ts.map +1 -1
- package/dist/test/ordinal.spec.js +4 -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.map +1 -1
- package/dist/test/reconnectHelper.d.ts +1 -1
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/revertibleFarm.spec.js +1 -1
- 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 +1 -1
- package/dist/test/revertibles.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.spec.js +1 -1
- package/dist/test/snapshot.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts +1 -1
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js +3 -3
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/test/snapshotlegacy.spec.js +8 -8
- package/dist/test/snapshotlegacy.spec.js.map +1 -1
- package/dist/test/sortedSegmentSet.spec.js +2 -2
- package/dist/test/sortedSegmentSet.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +5 -5
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +11 -11
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +10 -8
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testSerializer.d.ts.map +1 -1
- package/dist/test/testSerializer.js +2 -2
- package/dist/test/testSerializer.js.map +1 -1
- package/dist/test/testServer.d.ts +1 -1
- package/dist/test/testServer.d.ts.map +1 -1
- package/dist/test/testServer.js +4 -4
- package/dist/test/testServer.js.map +1 -1
- package/dist/test/testUtils.d.ts +5 -5
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +3 -3
- package/dist/test/testUtils.js.map +1 -1
- package/dist/test/text.d.ts +1 -1
- package/dist/test/text.d.ts.map +1 -1
- package/dist/test/text.js.map +1 -1
- 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 +2 -2
- package/dist/test/wordUnitTests.spec.js.map +1 -1
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js +2 -2
- package/dist/textSegment.js.map +1 -1
- package/dist/zamboni.d.ts +2 -2
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js.map +1 -1
- package/internal.d.ts +11 -0
- package/legacy.d.ts +11 -0
- package/lib/MergeTreeTextHelper.d.ts.map +1 -1
- package/lib/MergeTreeTextHelper.js.map +1 -1
- package/lib/attributionCollection.d.ts +1 -1
- package/lib/attributionCollection.d.ts.map +1 -1
- package/lib/attributionCollection.js +1 -1
- package/lib/attributionCollection.js.map +1 -1
- package/lib/attributionPolicy.d.ts +2 -2
- package/lib/attributionPolicy.d.ts.map +1 -1
- package/lib/attributionPolicy.js +4 -4
- package/lib/attributionPolicy.js.map +1 -1
- package/lib/client.d.ts +8 -8
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +14 -25
- package/lib/client.js.map +1 -1
- package/lib/collections/list.js +1 -1
- package/lib/collections/list.js.map +1 -1
- package/lib/endOfTreeSegment.d.ts +5 -5
- package/lib/endOfTreeSegment.d.ts.map +1 -1
- package/lib/endOfTreeSegment.js +2 -2
- package/lib/endOfTreeSegment.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +76 -0
- package/lib/localReference.d.ts.map +1 -1
- package/lib/localReference.js +2 -2
- package/lib/localReference.js.map +1 -1
- package/lib/mergeTree.d.ts +8 -8
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +23 -36
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/lib/mergeTreeDeltaCallback.js +4 -0
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/mergeTreeNodeWalk.d.ts +3 -3
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
- package/lib/mergeTreeNodeWalk.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +37 -55
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +28 -8
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/opBuilder.d.ts +1 -1
- package/lib/opBuilder.d.ts.map +1 -1
- package/lib/opBuilder.js.map +1 -1
- package/lib/ordinal.js +1 -1
- package/lib/ordinal.js.map +1 -1
- package/lib/partialLengths.d.ts +6 -6
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +3 -3
- package/lib/partialLengths.js.map +1 -1
- package/lib/public.d.ts +12 -0
- package/lib/revertibles.d.ts +1 -1
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +4 -4
- package/lib/revertibles.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +1 -1
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/snapshotChunks.d.ts +2 -2
- package/lib/snapshotChunks.d.ts.map +1 -1
- package/lib/snapshotChunks.js.map +1 -1
- package/lib/snapshotLoader.d.ts +2 -2
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +2 -2
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts +3 -3
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js +5 -5
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts +4 -4
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js +3 -4
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/test/Insertion.perf.spec.js +1 -1
- package/lib/test/Insertion.perf.spec.js.map +1 -1
- package/lib/test/PartialLengths.perf.spec.js +2 -2
- package/lib/test/PartialLengths.perf.spec.js.map +1 -1
- package/lib/test/Removal.perf.spec.js +2 -2
- package/lib/test/Removal.perf.spec.js.map +1 -1
- package/lib/test/Snapshot.perf.spec.js +2 -2
- package/lib/test/Snapshot.perf.spec.js.map +1 -1
- package/lib/test/attributionCollection.perf.spec.js +4 -4
- package/lib/test/attributionCollection.perf.spec.js.map +1 -1
- package/lib/test/attributionCollection.spec.js.map +1 -1
- package/lib/test/attributionPolicy.spec.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +8 -8
- package/lib/test/beastTest.spec.js.map +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.map +1 -1
- package/lib/test/client.applyMsg.spec.js +3 -3
- package/lib/test/client.applyMsg.spec.js.map +1 -1
- package/lib/test/client.applyStashedOpFarm.spec.d.ts +1 -1
- package/lib/test/client.applyStashedOpFarm.spec.d.ts.map +1 -1
- package/lib/test/client.applyStashedOpFarm.spec.js +1 -1
- package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -1
- package/lib/test/client.attributionFarm.spec.d.ts.map +1 -1
- package/lib/test/client.attributionFarm.spec.js +2 -2
- package/lib/test/client.attributionFarm.spec.js.map +1 -1
- package/lib/test/client.conflictFarm.spec.d.ts.map +1 -1
- package/lib/test/client.conflictFarm.spec.js +1 -1
- package/lib/test/client.conflictFarm.spec.js.map +1 -1
- package/lib/test/client.getPosition.spec.js.map +1 -1
- package/lib/test/client.localReference.spec.js +5 -5
- package/lib/test/client.localReference.spec.js.map +1 -1
- package/lib/test/client.localReferenceFarm.spec.js +2 -2
- package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
- package/lib/test/client.rebasePosition.spec.js.map +1 -1
- package/lib/test/client.reconnectFarm.spec.d.ts +1 -1
- package/lib/test/client.reconnectFarm.spec.d.ts.map +1 -1
- package/lib/test/client.reconnectFarm.spec.js +2 -2
- package/lib/test/client.reconnectFarm.spec.js.map +1 -1
- package/lib/test/client.replay.spec.js +3 -3
- package/lib/test/client.replay.spec.js.map +1 -1
- package/lib/test/client.rollback.spec.js +1 -1
- package/lib/test/client.rollback.spec.js.map +1 -1
- package/lib/test/client.rollbackFarm.spec.js +1 -1
- package/lib/test/client.rollbackFarm.spec.js.map +1 -1
- package/lib/test/client.searchForMarker.spec.js +2 -2
- package/lib/test/client.searchForMarker.spec.js.map +1 -1
- package/lib/test/client.walkSegments.spec.js.map +1 -1
- package/lib/test/collections.list.spec.js.map +1 -1
- package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js +3 -3
- 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 +3 -3
- 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.map +1 -1
- package/lib/test/mergeTree.walk.spec.js +2 -2
- 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 +2 -2
- package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/lib/test/mergeTreeOperationRunner.js +3 -3
- package/lib/test/mergeTreeOperationRunner.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -1
- package/lib/test/obliterate.concurrent.spec.js +1 -1
- package/lib/test/obliterate.concurrent.spec.js.map +1 -1
- package/lib/test/obliterate.deltaCallback.spec.js +1 -1
- package/lib/test/obliterate.deltaCallback.spec.js.map +1 -1
- package/lib/test/obliterate.partialLength.spec.js.map +1 -1
- package/lib/test/obliterate.reconnect.spec.js.map +1 -1
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/ordinal.spec.d.ts +4 -0
- package/lib/test/ordinal.spec.d.ts.map +1 -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.map +1 -1
- package/lib/test/reconnectHelper.d.ts +1 -1
- package/lib/test/reconnectHelper.d.ts.map +1 -1
- package/lib/test/reconnectHelper.js +1 -1
- package/lib/test/reconnectHelper.js.map +1 -1
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/lib/test/revertibleFarm.spec.js +3 -3
- 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 +2 -2
- package/lib/test/revertibles.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/snapshot.spec.js +2 -2
- package/lib/test/snapshot.spec.js.map +1 -1
- package/lib/test/snapshot.utils.d.ts +1 -1
- package/lib/test/snapshot.utils.d.ts.map +1 -1
- package/lib/test/snapshot.utils.js +2 -2
- package/lib/test/snapshot.utils.js.map +1 -1
- package/lib/test/snapshotlegacy.spec.js +4 -4
- package/lib/test/snapshotlegacy.spec.js.map +1 -1
- package/lib/test/sortedSegmentSet.spec.js +2 -2
- package/lib/test/sortedSegmentSet.spec.js.map +1 -1
- package/lib/test/testClient.d.ts +5 -5
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +7 -7
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +9 -7
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testSerializer.d.ts.map +1 -1
- package/lib/test/testSerializer.js +1 -1
- package/lib/test/testSerializer.js.map +1 -1
- package/lib/test/testServer.d.ts +1 -1
- package/lib/test/testServer.d.ts.map +1 -1
- package/lib/test/testServer.js +2 -2
- package/lib/test/testServer.js.map +1 -1
- package/lib/test/testUtils.d.ts +5 -5
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +3 -3
- package/lib/test/testUtils.js.map +1 -1
- package/lib/test/text.d.ts +1 -1
- package/lib/test/text.d.ts.map +1 -1
- package/lib/test/text.js.map +1 -1
- 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 +2 -2
- package/lib/test/wordUnitTests.spec.js.map +1 -1
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js +1 -1
- package/lib/textSegment.js.map +1 -1
- package/lib/zamboni.d.ts +2 -2
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js.map +1 -1
- package/package.json +37 -58
- package/src/MergeTreeTextHelper.ts +1 -1
- package/src/attributionCollection.ts +4 -3
- package/src/attributionPolicy.ts +7 -6
- package/src/client.ts +32 -45
- package/src/collections/list.ts +1 -1
- package/src/endOfTreeSegment.ts +5 -4
- package/src/index.ts +5 -1
- package/src/localReference.ts +4 -3
- package/src/mergeTree.ts +66 -84
- package/src/mergeTreeDeltaCallback.ts +3 -1
- package/src/mergeTreeNodeWalk.ts +6 -6
- package/src/mergeTreeNodes.ts +59 -61
- package/src/opBuilder.ts +3 -3
- package/src/ordinal.ts +1 -1
- package/src/partialLengths.ts +11 -10
- package/src/revertibles.ts +6 -5
- package/src/segmentPropertiesManager.ts +3 -2
- package/src/snapshotChunks.ts +3 -2
- package/src/snapshotLoader.ts +10 -12
- package/src/snapshotV1.ts +15 -12
- package/src/snapshotlegacy.ts +8 -6
- package/src/textSegment.ts +2 -1
- package/src/zamboni.ts +7 -7
- package/api-extractor-cjs.json +0 -8
- package/dist/merge-tree-alpha.d.ts +0 -1558
- package/dist/merge-tree-beta.d.ts +0 -230
- package/dist/merge-tree-public.d.ts +0 -230
- package/dist/merge-tree-untrimmed.d.ts +0 -1894
- package/lib/merge-tree-alpha.d.ts +0 -1558
- package/lib/merge-tree-beta.d.ts +0 -230
- package/lib/merge-tree-public.d.ts +0 -230
- package/lib/merge-tree-untrimmed.d.ts +0 -1894
- package/lib/test/types/validateMergeTreePrevious.generated.d.ts +0 -2
- package/lib/test/types/validateMergeTreePrevious.generated.d.ts.map +0 -1
- package/lib/test/types/validateMergeTreePrevious.generated.js +0 -228
- package/lib/test/types/validateMergeTreePrevious.generated.js.map +0 -1
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
6
|
+
import { ISegment } from "./mergeTreeNodes.js";
|
|
6
7
|
import { IMergeTreeGroupMsg, IMergeTreeOp, MergeTreeDeltaType } from "./ops.js";
|
|
7
8
|
import { PropertySet } from "./properties.js";
|
|
8
|
-
import { ISegment } from "./mergeTreeNodes.js";
|
|
9
9
|
/**
|
|
10
10
|
* @alpha
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTreeDeltaCallback.d.ts","sourceRoot":"","sources":["../src/mergeTreeDeltaCallback.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"mergeTreeDeltaCallback.d.ts","sourceRoot":"","sources":["../src/mergeTreeDeltaCallback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,2BAA2B,GACpC,OAAO,kBAAkB,CAAC,QAAQ,GAClC,OAAO,kBAAkB,CAAC,MAAM,GAChC,OAAO,kBAAkB,CAAC,MAAM,GAChC,OAAO,kBAAkB,CAAC,UAAU,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;IACpC;;;;;;OAMG;;IAEH;;;OAGG;;IAEH;;;;;OAKG;;IAEH;;;OAGG;;CAEM,CAAC;AACX;;GAEG;AACH,MAAM,MAAM,wBAAwB,GACnC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,2BAA2B,GAAG,wBAAwB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAC3C,cAAc,SAAS,4BAA4B,GAAG,2BAA2B;IAEjF,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,EAAE,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,QAAQ,CAAC;IAClB,cAAc,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IAEH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACpC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,2BAA2B,KAClC,IAAI,CAAC;AAEV;;GAEG;AAEH,MAAM,WAAW,iCAChB,SAAQ,2BAA2B,CAAC,wBAAwB,CAAC;CAAG;AAEjE;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAC1C,eAAe,EAAE,iCAAiC,EAClD,MAAM,EAAE,qBAAqB,GAAG,SAAS,KACrC,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTreeDeltaCallback.js","sourceRoot":"","sources":["../src/mergeTreeDeltaCallback.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mergeTreeDeltaCallback.js","sourceRoot":"","sources":["../src/mergeTreeDeltaCallback.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkBH;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG;IACvC;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,CAAC;IACV;;;OAGG;IACH,KAAK,EAAE,CAAC,CAAC;IACT;;;;;OAKG;IACH,MAAM,EAAE,CAAC,CAAC;IACV;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC;CACP,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\n\nimport { ISegment } from \"./mergeTreeNodes.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { IMergeTreeGroupMsg, IMergeTreeOp, MergeTreeDeltaType } from \"./ops.js\";\nimport { PropertySet } from \"./properties.js\";\n\n/**\n * @alpha\n */\nexport type MergeTreeDeltaOperationType =\n\t| typeof MergeTreeDeltaType.ANNOTATE\n\t| typeof MergeTreeDeltaType.INSERT\n\t| typeof MergeTreeDeltaType.REMOVE\n\t| typeof MergeTreeDeltaType.OBLITERATE;\n\n/**\n * Enum-like constant defining the types of \"maintenance\" events on a merge tree.\n * Maintenance events correspond to structural segment changes or acks of pending segments.\n *\n * Note: these values are assigned negative integers to avoid clashing with `MergeTreeDeltaType`.\n * @alpha\n */\nexport const MergeTreeMaintenanceType = {\n\t/**\n\t * Notification that a segment \"append\" has occurred, i.e. two adjacent segments have been merged.\n\t * BEWARE: `deltaSegments` on the corresponding event will contain both the merged segment and the latter\n\t * segment, pre-merge.\n\t * For example, if the merge tree originally had two adjacent segments [A][B] and called A.append(B) to get\n\t * segment [AB], `deltaSegments` would contain [AB] and [B].\n\t */\n\tAPPEND: -1,\n\t/**\n\t * Notification that a segment has been split in two.\n\t * `deltaSegments` on the corresponding event will contain the resulting two segments.\n\t */\n\tSPLIT: -2,\n\t/**\n\t * Notification that a segment has been unlinked (i.e. removed) from the MergeTree.\n\t * This occurs on leaf segments during Zamboni when the segment's tracking collection is empty\n\t * (e.g., not being tracked for undo/redo).\n\t * It also occurs on internal merge tree segments when re-packing children to maintain tree balancing invariants.\n\t */\n\tUNLINK: -3,\n\t/**\n\t * Notification that a local change has been acknowledged by the server.\n\t * This means that it has made the round trip to the server and has had a sequence number assigned.\n\t */\n\tACKNOWLEDGED: -4,\n} as const;\n/**\n * @alpha\n */\nexport type MergeTreeMaintenanceType =\n\t(typeof MergeTreeMaintenanceType)[keyof typeof MergeTreeMaintenanceType];\n\n/**\n * @alpha\n */\nexport type MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationType | MergeTreeMaintenanceType;\n\n/**\n * @alpha\n */\nexport interface IMergeTreeDeltaCallbackArgs<\n\tTOperationType extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationType,\n> {\n\treadonly operation: TOperationType;\n\treadonly deltaSegments: IMergeTreeSegmentDelta[];\n}\n\n/**\n * @alpha\n */\nexport interface IMergeTreeSegmentDelta {\n\tsegment: ISegment;\n\tpropertyDeltas?: PropertySet;\n}\n\n/**\n * @alpha\n */\nexport interface IMergeTreeDeltaOpArgs {\n\t/**\n\t * The group op which contains the operation\n\t * if there operation is part of a group op.\n\t */\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly groupOp?: IMergeTreeGroupMsg;\n\t/**\n\t * The merge tree operation\n\t */\n\treadonly op: IMergeTreeOp;\n\t/**\n\t * Get the sequence message, should only be null if the\n\t * Delta op args are for an unacked local change\n\t */\n\treadonly sequencedMessage?: ISequencedDocumentMessage;\n}\n\n/**\n * @internal\n */\nexport interface IMergeTreeClientSequenceArgs {\n\treadonly clientId: number;\n\treadonly referenceSequenceNumber: number;\n\treadonly sequenceNumber: number;\n}\n\n/**\n * @internal\n */\nexport type MergeTreeDeltaCallback = (\n\topArgs: IMergeTreeDeltaOpArgs,\n\tdeltaArgs: IMergeTreeDeltaCallbackArgs,\n) => void;\n\n/**\n * @alpha\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IMergeTreeMaintenanceCallbackArgs\n\textends IMergeTreeDeltaCallbackArgs<MergeTreeMaintenanceType> {}\n\n/**\n * @internal\n */\nexport type MergeTreeMaintenanceCallback = (\n\tMaintenanceArgs: IMergeTreeMaintenanceCallbackArgs,\n\topArgs: IMergeTreeDeltaOpArgs | undefined,\n) => void;\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { type MergeBlock, IMergeNode, ISegment } from "./mergeTreeNodes.js";
|
|
6
6
|
export declare const LeafAction: {
|
|
7
7
|
readonly Exit: false;
|
|
8
8
|
};
|
|
@@ -24,7 +24,7 @@ export type NodeAction = (typeof NodeAction)[keyof typeof NodeAction] | Exclude<
|
|
|
24
24
|
* @param forward - whether to walk forward or backward
|
|
25
25
|
* @returns true if we naturally exit, false if exiting due to Exit action result
|
|
26
26
|
*/
|
|
27
|
-
export declare function depthFirstNodeWalk(startBlock:
|
|
27
|
+
export declare function depthFirstNodeWalk(startBlock: MergeBlock, startChild: IMergeNode | undefined, downAction?: (node: IMergeNode) => NodeAction, leafActionOverride?: (seg: ISegment) => LeafAction, upAction?: (block: MergeBlock) => void, forward?: boolean): boolean;
|
|
28
28
|
/**
|
|
29
29
|
* Visit segments starting from node's right/far/forward siblings, then up to node's parent.
|
|
30
30
|
* All segments past `node` are visited, regardless of their visibility.
|
|
@@ -41,5 +41,5 @@ export declare function backwardExcursion(startNode: IMergeNode, leafAction: (se
|
|
|
41
41
|
* @param leafAction - The action to perform on the leaves
|
|
42
42
|
* @returns true if we naturally exit, false if exiting due to leaf action result
|
|
43
43
|
*/
|
|
44
|
-
export declare function walkAllChildSegments(startBlock:
|
|
44
|
+
export declare function walkAllChildSegments(startBlock: MergeBlock, leafAction: (segment: ISegment) => boolean | undefined | void): boolean;
|
|
45
45
|
//# sourceMappingURL=mergeTreeNodeWalk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTreeNodeWalk.d.ts","sourceRoot":"","sources":["../src/mergeTreeNodeWalk.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mergeTreeNodeWalk.d.ts","sourceRoot":"","sources":["../src/mergeTreeNodeWalk.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE5E,eAAO,MAAM,UAAU;;CAEb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAEpD,eAAO,MAAM,UAAU;;;;CAKb,CAAC;AAGX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAElG;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,EAC7C,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,UAAU,EAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACtC,OAAO,GAAE,OAAc,GACrB,OAAO,CAyET;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,SAAS,GAChD,OAAO,CAcT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,SAAS,GAChD,OAAO,CAeT;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,GAAG,SAAS,GAAG,IAAI,GAC3D,OAAO,CAoBT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTreeNodeWalk.js","sourceRoot":"","sources":["../src/mergeTreeNodeWalk.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IMergeBlock, IMergeNode, ISegment } from \"./mergeTreeNodes.js\";\n\nexport const LeafAction = {\n\tExit: false,\n} as const;\n\nexport type LeafAction = boolean | undefined | void;\n\nexport const NodeAction = {\n\tContinue: undefined,\n\t// exit is false to unify with leafActionOverride\n\tExit: LeafAction.Exit,\n\tSkip: 2,\n} as const;\n\n// we exclude true from, as we only want one continue value, undefined\nexport type NodeAction = (typeof NodeAction)[keyof typeof NodeAction] | Exclude<LeafAction, true>;\n\n/**\n * Does a depth first walk of the tree from the specific start.\n *\n * @param startBlock - The block of the tree to start the walk from\n * @param startChild - The child of that block to start from\n * @param downAction - Called as we walk down the tree to the leaves.\n * @param leafActionOverride - Overrides downAction for leaves, generally used without downAction\n * @param upAction - Called after all the children of a block are walked.\n * @param forward - whether to walk forward or backward\n * @returns true if we naturally exit, false if exiting due to Exit action result\n */\nexport function depthFirstNodeWalk(\n\tstartBlock: IMergeBlock,\n\tstartChild: IMergeNode | undefined,\n\tdownAction?: (node: IMergeNode) => NodeAction,\n\tleafActionOverride?: (seg: ISegment) => LeafAction,\n\tupAction?: (block: IMergeBlock) => void,\n\tforward: boolean = true,\n): boolean {\n\tconst increment = forward ? 1 : -1;\n\tconst leafAction = leafActionOverride ?? downAction;\n\tif (leafAction === undefined) {\n\t\treturn true;\n\t}\n\n\tlet block = startBlock;\n\tlet childCount = block.childCount;\n\tlet start: IMergeNode | undefined = startChild;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// go down to the leaf level\n\t\tlet blockResult: NodeAction;\n\t\twhile (start?.isLeaf() === false) {\n\t\t\t// cast is safe due to isLeaf === false in while above\n\t\t\tblock = start as IMergeBlock;\n\t\t\tchildCount = block.childCount;\n\t\t\tblockResult = downAction?.(block);\n\t\t\t// setting start undefined will skip the leaf walk\n\t\t\t// so if the block result isn't continue, set it\n\t\t\t// undefined\n\t\t\tstart =\n\t\t\t\tblockResult === NodeAction.Continue\n\t\t\t\t\t? block.children[forward ? 0 : childCount - 1]\n\t\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet exit = blockResult === NodeAction.Exit;\n\n\t\t// walk the leaves if we reached them\n\t\tif (start !== undefined) {\n\t\t\tfor (let i = start.index; i !== -1 && i !== childCount; i += increment) {\n\t\t\t\t// the above loop ensures start is a leaf or undefined, so all children\n\t\t\t\t// will be leaves if start exits, so the cast is safe\n\t\t\t\tif (leafAction(block.children[i] as ISegment) === LeafAction.Exit) {\n\t\t\t\t\texit = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if there is no upAction, we don't need to walk up before exiting\n\t\tif (upAction === undefined && exit) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// since we already enumerated the children\n\t\t// we walk up to the next level until there is a sibling\n\t\t// or all the way up if exit is true\n\t\tlet nextIndex = -1;\n\t\tdo {\n\t\t\t// if the blockAction was exit or skip\n\t\t\t// we shouldn't process that block again,\n\t\t\t// if there are subsequent parents while walking up\n\t\t\t// we will process those.\n\t\t\tif (blockResult === NodeAction.Continue) {\n\t\t\t\tupAction?.(block);\n\t\t\t} else {\n\t\t\t\tblockResult = NodeAction.Continue;\n\t\t\t}\n\t\t\tif (block.parent === undefined) {\n\t\t\t\treturn !exit;\n\t\t\t}\n\t\t\tstart = block;\n\t\t\tblock = block.parent;\n\t\t\tchildCount = block.childCount;\n\t\t\tnextIndex = start.index + increment;\n\t\t} while (exit || nextIndex === -1 || nextIndex === childCount);\n\t\t// the above loop ensured that siblings are possible\n\t\tstart = block.children[nextIndex];\n\t}\n}\n\n/**\n * Visit segments starting from node's right/far/forward siblings, then up to node's parent.\n * All segments past `node` are visited, regardless of their visibility.\n */\nexport function forwardExcursion(\n\tstartNode: IMergeNode,\n\tleafAction: (seg: ISegment) => boolean | undefined,\n): boolean {\n\tif (startNode.parent === undefined) {\n\t\treturn true;\n\t}\n\n\treturn depthFirstNodeWalk(\n\t\tstartNode.parent,\n\t\t// this will either be the sibling, or undefined\n\t\t// either is fine, and will result in skipping\n\t\t// the startNode only\n\t\tstartNode.parent.children[startNode.index + 1],\n\t\tundefined /* downAction */,\n\t\tleafAction,\n\t);\n}\n\n/**\n * Visit segments starting from node's left/near/backwards siblings, then up to node's parent.\n * All segments past `node` are visited, regardless of their visibility.\n */\nexport function backwardExcursion(\n\tstartNode: IMergeNode,\n\tleafAction: (seg: ISegment) => boolean | undefined,\n): boolean {\n\tif (startNode.parent === undefined) {\n\t\treturn true;\n\t}\n\treturn depthFirstNodeWalk(\n\t\tstartNode.parent,\n\t\t// this will either be the sibling, or undefined\n\t\t// either is fine, and will result in skipping\n\t\t// the startNode only\n\t\tstartNode.parent.children[startNode.index - 1],\n\t\tundefined /* downAction */,\n\t\tleafAction,\n\t\tundefined /* upAction */,\n\t\tfalse /* forward */,\n\t);\n}\n\n/**\n * Walks all segments below the specific start block\n * @param startBlock - The block to start the walk at\n * @param leafAction - The action to perform on the leaves\n * @returns true if we naturally exit, false if exiting due to leaf action result\n */\nexport function walkAllChildSegments(\n\tstartBlock: IMergeBlock,\n\tleafAction: (segment: ISegment) => boolean | undefined | void,\n): boolean {\n\tif (startBlock.childCount === 0) {\n\t\treturn true;\n\t}\n\n\t// undefined shouldn't actually be added, but this allows subsequent check for `node.parent` to typecheck\n\t// without further runtime work.\n\tconst ancestors = new Set<IMergeBlock | undefined>();\n\tfor (let cur = startBlock.parent; cur !== undefined; cur = cur.parent) {\n\t\tancestors.add(cur);\n\t}\n\n\treturn depthFirstNodeWalk(\n\t\tstartBlock,\n\t\tstartBlock.children[0],\n\t\tancestors.size === 0\n\t\t\t? undefined\n\t\t\t: (node) => (ancestors.has(node.parent) ? NodeAction.Exit : NodeAction.Continue),\n\t\tleafAction,\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mergeTreeNodeWalk.js","sourceRoot":"","sources":["../src/mergeTreeNodeWalk.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type MergeBlock, IMergeNode, ISegment } from \"./mergeTreeNodes.js\";\n\nexport const LeafAction = {\n\tExit: false,\n} as const;\n\nexport type LeafAction = boolean | undefined | void;\n\nexport const NodeAction = {\n\tContinue: undefined,\n\t// exit is false to unify with leafActionOverride\n\tExit: LeafAction.Exit,\n\tSkip: 2,\n} as const;\n\n// we exclude true from, as we only want one continue value, undefined\nexport type NodeAction = (typeof NodeAction)[keyof typeof NodeAction] | Exclude<LeafAction, true>;\n\n/**\n * Does a depth first walk of the tree from the specific start.\n *\n * @param startBlock - The block of the tree to start the walk from\n * @param startChild - The child of that block to start from\n * @param downAction - Called as we walk down the tree to the leaves.\n * @param leafActionOverride - Overrides downAction for leaves, generally used without downAction\n * @param upAction - Called after all the children of a block are walked.\n * @param forward - whether to walk forward or backward\n * @returns true if we naturally exit, false if exiting due to Exit action result\n */\nexport function depthFirstNodeWalk(\n\tstartBlock: MergeBlock,\n\tstartChild: IMergeNode | undefined,\n\tdownAction?: (node: IMergeNode) => NodeAction,\n\tleafActionOverride?: (seg: ISegment) => LeafAction,\n\tupAction?: (block: MergeBlock) => void,\n\tforward: boolean = true,\n): boolean {\n\tconst increment = forward ? 1 : -1;\n\tconst leafAction = leafActionOverride ?? downAction;\n\tif (leafAction === undefined) {\n\t\treturn true;\n\t}\n\n\tlet block = startBlock;\n\tlet childCount = block.childCount;\n\tlet start: IMergeNode | undefined = startChild;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// go down to the leaf level\n\t\tlet blockResult: NodeAction;\n\t\twhile (start?.isLeaf() === false) {\n\t\t\t// cast is safe due to isLeaf === false in while above\n\t\t\tblock = start as MergeBlock;\n\t\t\tchildCount = block.childCount;\n\t\t\tblockResult = downAction?.(block);\n\t\t\t// setting start undefined will skip the leaf walk\n\t\t\t// so if the block result isn't continue, set it\n\t\t\t// undefined\n\t\t\tstart =\n\t\t\t\tblockResult === NodeAction.Continue\n\t\t\t\t\t? block.children[forward ? 0 : childCount - 1]\n\t\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet exit = blockResult === NodeAction.Exit;\n\n\t\t// walk the leaves if we reached them\n\t\tif (start !== undefined) {\n\t\t\tfor (let i = start.index; i !== -1 && i !== childCount; i += increment) {\n\t\t\t\t// the above loop ensures start is a leaf or undefined, so all children\n\t\t\t\t// will be leaves if start exits, so the cast is safe\n\t\t\t\tif (leafAction(block.children[i] as ISegment) === LeafAction.Exit) {\n\t\t\t\t\texit = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if there is no upAction, we don't need to walk up before exiting\n\t\tif (upAction === undefined && exit) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// since we already enumerated the children\n\t\t// we walk up to the next level until there is a sibling\n\t\t// or all the way up if exit is true\n\t\tlet nextIndex = -1;\n\t\tdo {\n\t\t\t// if the blockAction was exit or skip\n\t\t\t// we shouldn't process that block again,\n\t\t\t// if there are subsequent parents while walking up\n\t\t\t// we will process those.\n\t\t\tif (blockResult === NodeAction.Continue) {\n\t\t\t\tupAction?.(block);\n\t\t\t} else {\n\t\t\t\tblockResult = NodeAction.Continue;\n\t\t\t}\n\t\t\tif (block.parent === undefined) {\n\t\t\t\treturn !exit;\n\t\t\t}\n\t\t\tstart = block;\n\t\t\tblock = block.parent;\n\t\t\tchildCount = block.childCount;\n\t\t\tnextIndex = start.index + increment;\n\t\t} while (exit || nextIndex === -1 || nextIndex === childCount);\n\t\t// the above loop ensured that siblings are possible\n\t\tstart = block.children[nextIndex];\n\t}\n}\n\n/**\n * Visit segments starting from node's right/far/forward siblings, then up to node's parent.\n * All segments past `node` are visited, regardless of their visibility.\n */\nexport function forwardExcursion(\n\tstartNode: IMergeNode,\n\tleafAction: (seg: ISegment) => boolean | undefined,\n): boolean {\n\tif (startNode.parent === undefined) {\n\t\treturn true;\n\t}\n\n\treturn depthFirstNodeWalk(\n\t\tstartNode.parent,\n\t\t// this will either be the sibling, or undefined\n\t\t// either is fine, and will result in skipping\n\t\t// the startNode only\n\t\tstartNode.parent.children[startNode.index + 1],\n\t\tundefined /* downAction */,\n\t\tleafAction,\n\t);\n}\n\n/**\n * Visit segments starting from node's left/near/backwards siblings, then up to node's parent.\n * All segments past `node` are visited, regardless of their visibility.\n */\nexport function backwardExcursion(\n\tstartNode: IMergeNode,\n\tleafAction: (seg: ISegment) => boolean | undefined,\n): boolean {\n\tif (startNode.parent === undefined) {\n\t\treturn true;\n\t}\n\treturn depthFirstNodeWalk(\n\t\tstartNode.parent,\n\t\t// this will either be the sibling, or undefined\n\t\t// either is fine, and will result in skipping\n\t\t// the startNode only\n\t\tstartNode.parent.children[startNode.index - 1],\n\t\tundefined /* downAction */,\n\t\tleafAction,\n\t\tundefined /* upAction */,\n\t\tfalse /* forward */,\n\t);\n}\n\n/**\n * Walks all segments below the specific start block\n * @param startBlock - The block to start the walk at\n * @param leafAction - The action to perform on the leaves\n * @returns true if we naturally exit, false if exiting due to leaf action result\n */\nexport function walkAllChildSegments(\n\tstartBlock: MergeBlock,\n\tleafAction: (segment: ISegment) => boolean | undefined | void,\n): boolean {\n\tif (startBlock.childCount === 0) {\n\t\treturn true;\n\t}\n\n\t// undefined shouldn't actually be added, but this allows subsequent check for `node.parent` to typecheck\n\t// without further runtime work.\n\tconst ancestors = new Set<MergeBlock | undefined>();\n\tfor (let cur = startBlock.parent; cur !== undefined; cur = cur.parent) {\n\t\tancestors.add(cur);\n\t}\n\n\treturn depthFirstNodeWalk(\n\t\tstartBlock,\n\t\tstartBlock.children[0],\n\t\tancestors.size === 0\n\t\t\t? undefined\n\t\t\t: (node) => (ancestors.has(node.parent) ? NodeAction.Exit : NodeAction.Continue),\n\t\tleafAction,\n\t);\n}\n"]}
|
package/dist/mergeTreeNodes.d.ts
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { AttributionKey } from "@fluidframework/runtime-definitions";
|
|
5
|
+
import { AttributionKey } from "@fluidframework/runtime-definitions/internal";
|
|
6
6
|
import { IAttributionCollection } from "./attributionCollection.js";
|
|
7
7
|
import { LocalReferenceCollection } from "./localReference.js";
|
|
8
8
|
import { IMergeTreeDeltaOpArgs } from "./mergeTreeDeltaCallback.js";
|
|
9
9
|
import { TrackingGroupCollection } from "./mergeTreeTracking.js";
|
|
10
10
|
import { IJSONSegment, IMarkerDef, ReferenceType } from "./ops.js";
|
|
11
|
-
import { PartialSequenceLengths } from "./partialLengths.js";
|
|
12
|
-
import {
|
|
11
|
+
import type { PartialSequenceLengths } from "./partialLengths.js";
|
|
12
|
+
import { PropertySet, type MapLike } from "./properties.js";
|
|
13
13
|
import { ReferencePosition } from "./referencePositions.js";
|
|
14
14
|
import { SegmentGroupCollection } from "./segmentGroupCollection.js";
|
|
15
15
|
import { PropertiesManager, PropertiesRollback } from "./segmentPropertiesManager.js";
|
|
@@ -34,51 +34,9 @@ export interface IMergeNodeCommon {
|
|
|
34
34
|
* this is just a convenience type that makes it clear that we need something that is both a segment and a leaf node
|
|
35
35
|
*/
|
|
36
36
|
export type ISegmentLeaf = ISegment & {
|
|
37
|
-
parent?:
|
|
37
|
+
parent?: MergeBlock;
|
|
38
38
|
};
|
|
39
|
-
export type IMergeNode =
|
|
40
|
-
/**
|
|
41
|
-
* Internal (i.e. non-leaf) node in a merge tree.
|
|
42
|
-
* @internal
|
|
43
|
-
*/
|
|
44
|
-
export interface IMergeBlock extends IMergeNodeCommon {
|
|
45
|
-
parent?: IMergeBlock;
|
|
46
|
-
needsScour?: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Number of direct children of this node
|
|
49
|
-
*/
|
|
50
|
-
childCount: number;
|
|
51
|
-
/**
|
|
52
|
-
* Array of child nodes.
|
|
53
|
-
*
|
|
54
|
-
* @remarks To avoid reallocation, this is always initialized to have maximum length as deemed by
|
|
55
|
-
* the merge tree's branching factor. Use `childCount` to determine how many children this node actually has.
|
|
56
|
-
*/
|
|
57
|
-
children: IMergeNode[];
|
|
58
|
-
/**
|
|
59
|
-
* Supports querying the total length of all descendants of this IMergeBlock from the perspective of any
|
|
60
|
-
* (clientId, seq) within the collab window.
|
|
61
|
-
*
|
|
62
|
-
* @remarks This is only optional for implementation reasons (internal nodes can be created/moved without
|
|
63
|
-
* immediately initializing the partial lengths). Aside from mid-update on tree operations, these lengths
|
|
64
|
-
* objects are always defined.
|
|
65
|
-
*/
|
|
66
|
-
partialLengths?: PartialSequenceLengths;
|
|
67
|
-
/**
|
|
68
|
-
* The length of the contents of the node.
|
|
69
|
-
*/
|
|
70
|
-
cachedLength: number | undefined;
|
|
71
|
-
hierBlock(): IHierBlock | undefined;
|
|
72
|
-
assignChild(child: IMergeNode, index: number, updateOrdinal?: boolean): void;
|
|
73
|
-
setOrdinal(child: IMergeNode, index: number): void;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* @internal
|
|
77
|
-
*/
|
|
78
|
-
export interface IHierBlock extends IMergeBlock {
|
|
79
|
-
rightmostTiles: MapLike<ReferencePosition>;
|
|
80
|
-
leftmostTiles: MapLike<ReferencePosition>;
|
|
81
|
-
}
|
|
39
|
+
export type IMergeNode = MergeBlock | ISegmentLeaf;
|
|
82
40
|
/**
|
|
83
41
|
* Contains removal information associated to an {@link ISegment}.
|
|
84
42
|
* @alpha
|
|
@@ -291,13 +249,13 @@ export interface ISegmentChanges {
|
|
|
291
249
|
* @internal
|
|
292
250
|
*/
|
|
293
251
|
export interface BlockAction<TClientData> {
|
|
294
|
-
(block:
|
|
252
|
+
(block: MergeBlock, pos: number, refSeq: number, clientId: number, start: number | undefined, end: number | undefined, accum: TClientData): boolean;
|
|
295
253
|
}
|
|
296
254
|
/**
|
|
297
255
|
* @internal
|
|
298
256
|
*/
|
|
299
257
|
export interface NodeAction<TClientData> {
|
|
300
|
-
(node:
|
|
258
|
+
(node: MergeNode, pos: number, refSeq: number, clientId: number, start: number | undefined, end: number | undefined, clientData: TClientData): boolean;
|
|
301
259
|
}
|
|
302
260
|
/**
|
|
303
261
|
* @internal
|
|
@@ -305,7 +263,7 @@ export interface NodeAction<TClientData> {
|
|
|
305
263
|
export interface InsertContext {
|
|
306
264
|
candidateSegment?: ISegment;
|
|
307
265
|
leaf: (segment: ISegment | undefined, pos: number, ic: InsertContext) => ISegmentChanges;
|
|
308
|
-
continuePredicate?: (continueFromBlock:
|
|
266
|
+
continuePredicate?: (continueFromBlock: MergeBlock) => boolean;
|
|
309
267
|
}
|
|
310
268
|
/**
|
|
311
269
|
* @internal
|
|
@@ -329,6 +287,7 @@ export interface SegmentGroup {
|
|
|
329
287
|
}
|
|
330
288
|
/**
|
|
331
289
|
* @alpha
|
|
290
|
+
* @deprecated - unused and will be removed
|
|
332
291
|
*/
|
|
333
292
|
export declare class MergeNode implements IMergeNodeCommon {
|
|
334
293
|
index: number;
|
|
@@ -347,20 +306,40 @@ export declare const MaxNodesInBlock = 8;
|
|
|
347
306
|
/**
|
|
348
307
|
* @internal
|
|
349
308
|
*/
|
|
350
|
-
export declare class MergeBlock
|
|
309
|
+
export declare class MergeBlock implements IMergeNodeCommon {
|
|
351
310
|
childCount: number;
|
|
352
|
-
parent?: IMergeBlock;
|
|
353
311
|
children: IMergeNode[];
|
|
312
|
+
needsScour?: boolean;
|
|
313
|
+
parent?: MergeBlock;
|
|
314
|
+
index: number;
|
|
315
|
+
ordinal: string;
|
|
316
|
+
cachedLength: number | undefined;
|
|
317
|
+
isLeaf(): this is ISegment;
|
|
318
|
+
/**
|
|
319
|
+
* Supports querying the total length of all descendants of this IMergeBlock from the perspective of any
|
|
320
|
+
* (clientId, seq) within the collab window.
|
|
321
|
+
*
|
|
322
|
+
* @remarks This is only optional for implementation reasons (internal nodes can be created/moved without
|
|
323
|
+
* immediately initializing the partial lengths). Aside from mid-update on tree operations, these lengths
|
|
324
|
+
* objects are always defined.
|
|
325
|
+
*/
|
|
326
|
+
partialLengths?: PartialSequenceLengths;
|
|
354
327
|
constructor(childCount: number);
|
|
355
|
-
hierBlock():
|
|
328
|
+
hierBlock(): this is HierMergeBlock;
|
|
356
329
|
setOrdinal(child: IMergeNode, index: number): void;
|
|
357
330
|
assignChild(child: IMergeNode, index: number, updateOrdinal?: boolean): void;
|
|
358
331
|
}
|
|
332
|
+
export declare class HierMergeBlock extends MergeBlock {
|
|
333
|
+
rightmostTiles: MapLike<ReferencePosition>;
|
|
334
|
+
leftmostTiles: MapLike<ReferencePosition>;
|
|
335
|
+
constructor(childCount: number);
|
|
336
|
+
hierBlock(): this is HierMergeBlock;
|
|
337
|
+
}
|
|
359
338
|
export declare function seqLTE(seq: number, minOrRefSeq: number): boolean;
|
|
360
339
|
/**
|
|
361
340
|
* @alpha
|
|
362
341
|
*/
|
|
363
|
-
export declare abstract class BaseSegment
|
|
342
|
+
export declare abstract class BaseSegment implements ISegment {
|
|
364
343
|
clientId: number;
|
|
365
344
|
seq: number;
|
|
366
345
|
removedSeq?: number;
|
|
@@ -369,6 +348,9 @@ export declare abstract class BaseSegment extends MergeNode implements ISegment
|
|
|
369
348
|
movedSeqs?: number[];
|
|
370
349
|
movedClientIds?: number[];
|
|
371
350
|
wasMovedOnInsert?: boolean | undefined;
|
|
351
|
+
index: number;
|
|
352
|
+
ordinal: string;
|
|
353
|
+
cachedLength: number;
|
|
372
354
|
readonly segmentGroups: SegmentGroupCollection;
|
|
373
355
|
readonly trackingCollection: TrackingGroupCollection;
|
|
374
356
|
/***/
|
|
@@ -400,7 +382,7 @@ export declare abstract class BaseSegment extends MergeNode implements ISegment
|
|
|
400
382
|
*
|
|
401
383
|
* @remarks In general, marker ids should be accessed using the inherent method
|
|
402
384
|
* {@link Marker.getId}. Marker ids should not be updated after creation.
|
|
403
|
-
* @
|
|
385
|
+
* @alpha
|
|
404
386
|
*/
|
|
405
387
|
export declare const reservedMarkerIdKey = "markerId";
|
|
406
388
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTreeNodes.d.ts","sourceRoot":"","sources":["../src/mergeTreeNodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mergeTreeNodes.d.ts","sourceRoot":"","sources":["../src/mergeTreeNodes.ts"],"names":[],"mappings":"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"}
|
package/dist/mergeTreeNodes.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.debugMarkerToString = exports.compareStrings = exports.compareNumbers = exports.CollaborationWindow = exports.Marker = exports.reservedMarkerSimpleTypeKey = exports.reservedMarkerIdKey = exports.BaseSegment = exports.seqLTE = exports.MergeBlock = exports.MaxNodesInBlock = exports.MergeNode = exports.toMoveInfo = exports.toRemovalInfo = void 0;
|
|
7
|
+
exports.debugMarkerToString = exports.compareStrings = exports.compareNumbers = exports.CollaborationWindow = exports.Marker = exports.reservedMarkerSimpleTypeKey = exports.reservedMarkerIdKey = exports.BaseSegment = exports.seqLTE = exports.HierMergeBlock = exports.MergeBlock = exports.MaxNodesInBlock = exports.MergeNode = exports.toMoveInfo = exports.toRemovalInfo = void 0;
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
9
|
-
const
|
|
9
|
+
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
10
10
|
const constants_js_1 = require("./constants.js");
|
|
11
11
|
const localReference_js_1 = require("./localReference.js");
|
|
12
12
|
const mergeTreeTracking_js_1 = require("./mergeTreeTracking.js");
|
|
@@ -24,14 +24,14 @@ function toRemovalInfo(maybe) {
|
|
|
24
24
|
if (maybe?.removedClientIds !== undefined && maybe?.removedSeq !== undefined) {
|
|
25
25
|
return maybe;
|
|
26
26
|
}
|
|
27
|
-
(0,
|
|
27
|
+
(0, internal_1.assert)(maybe?.removedClientIds === undefined && maybe?.removedSeq === undefined, 0x2bf /* "both removedClientIds and removedSeq should be set or not set" */);
|
|
28
28
|
}
|
|
29
29
|
exports.toRemovalInfo = toRemovalInfo;
|
|
30
30
|
function toMoveInfo(maybe) {
|
|
31
31
|
if (maybe?.movedClientIds !== undefined && maybe?.movedSeq !== undefined) {
|
|
32
32
|
return maybe;
|
|
33
33
|
}
|
|
34
|
-
(0,
|
|
34
|
+
(0, internal_1.assert)(maybe?.movedClientIds === undefined &&
|
|
35
35
|
maybe?.movedSeq === undefined &&
|
|
36
36
|
maybe?.movedSeqs === undefined &&
|
|
37
37
|
maybe?.wasMovedOnInsert === undefined, 0x86d /* movedClientIds, movedSeq, wasMovedOnInsert, and movedSeqs should all be either set or not set */);
|
|
@@ -39,6 +39,7 @@ function toMoveInfo(maybe) {
|
|
|
39
39
|
exports.toMoveInfo = toMoveInfo;
|
|
40
40
|
/**
|
|
41
41
|
* @alpha
|
|
42
|
+
* @deprecated - unused and will be removed
|
|
42
43
|
*/
|
|
43
44
|
class MergeNode {
|
|
44
45
|
constructor() {
|
|
@@ -62,18 +63,23 @@ exports.MaxNodesInBlock = 8;
|
|
|
62
63
|
/**
|
|
63
64
|
* @internal
|
|
64
65
|
*/
|
|
65
|
-
class MergeBlock
|
|
66
|
+
class MergeBlock {
|
|
67
|
+
isLeaf() {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
66
70
|
constructor(childCount) {
|
|
67
|
-
super();
|
|
68
71
|
this.childCount = childCount;
|
|
72
|
+
this.index = 0;
|
|
73
|
+
this.ordinal = "";
|
|
74
|
+
this.cachedLength = 0;
|
|
69
75
|
this.children = new Array(exports.MaxNodesInBlock);
|
|
70
76
|
}
|
|
71
77
|
hierBlock() {
|
|
72
|
-
return
|
|
78
|
+
return false;
|
|
73
79
|
}
|
|
74
80
|
setOrdinal(child, index) {
|
|
75
81
|
const childCount = this.childCount;
|
|
76
|
-
(0,
|
|
82
|
+
(0, internal_1.assert)(childCount >= 1 && childCount <= exports.MaxNodesInBlock, 0x040 /* "Child count is not within [1,8] range!" */);
|
|
77
83
|
child.ordinal = (0, ordinal_js_1.computeHierarchicalOrdinal)(exports.MaxNodesInBlock, childCount, this.ordinal, index === 0 ? undefined : this.children[index - 1]?.ordinal);
|
|
78
84
|
}
|
|
79
85
|
assignChild(child, index, updateOrdinal = true) {
|
|
@@ -86,6 +92,19 @@ class MergeBlock extends MergeNode {
|
|
|
86
92
|
}
|
|
87
93
|
}
|
|
88
94
|
exports.MergeBlock = MergeBlock;
|
|
95
|
+
class HierMergeBlock extends MergeBlock {
|
|
96
|
+
constructor(childCount) {
|
|
97
|
+
super(childCount);
|
|
98
|
+
// eslint-disable-next-line import/no-deprecated
|
|
99
|
+
this.rightmostTiles = (0, properties_js_1.createMap)();
|
|
100
|
+
// eslint-disable-next-line import/no-deprecated
|
|
101
|
+
this.leftmostTiles = (0, properties_js_1.createMap)();
|
|
102
|
+
}
|
|
103
|
+
hierBlock() {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.HierMergeBlock = HierMergeBlock;
|
|
89
108
|
function seqLTE(seq, minOrRefSeq) {
|
|
90
109
|
return seq !== constants_js_1.UnassignedSequenceNumber && seq <= minOrRefSeq;
|
|
91
110
|
}
|
|
@@ -93,11 +112,13 @@ exports.seqLTE = seqLTE;
|
|
|
93
112
|
/**
|
|
94
113
|
* @alpha
|
|
95
114
|
*/
|
|
96
|
-
class BaseSegment
|
|
115
|
+
class BaseSegment {
|
|
97
116
|
constructor() {
|
|
98
|
-
super(...arguments);
|
|
99
117
|
this.clientId = constants_js_1.LocalClientId;
|
|
100
118
|
this.seq = constants_js_1.UniversalSequenceNumber;
|
|
119
|
+
this.index = 0;
|
|
120
|
+
this.ordinal = "";
|
|
121
|
+
this.cachedLength = 0;
|
|
101
122
|
this.segmentGroups = new segmentGroupCollection_js_1.SegmentGroupCollection(this);
|
|
102
123
|
this.trackingCollection = new mergeTreeTracking_js_1.TrackingGroupCollection(this);
|
|
103
124
|
}
|
|
@@ -139,20 +160,20 @@ class BaseSegment extends MergeNode {
|
|
|
139
160
|
/***/
|
|
140
161
|
ack(segmentGroup, opArgs) {
|
|
141
162
|
const currentSegmentGroup = this.segmentGroups.dequeue();
|
|
142
|
-
(0,
|
|
163
|
+
(0, internal_1.assert)(currentSegmentGroup === segmentGroup, 0x043 /* "On ack, unexpected segmentGroup!" */);
|
|
143
164
|
switch (opArgs.op.type) {
|
|
144
165
|
case ops_js_1.MergeTreeDeltaType.ANNOTATE:
|
|
145
|
-
(0,
|
|
166
|
+
(0, internal_1.assert)(!!this.propertyManager, 0x044 /* "On annotate ack, missing segment property manager!" */);
|
|
146
167
|
this.propertyManager.ackPendingProperties(opArgs.op);
|
|
147
168
|
return true;
|
|
148
169
|
case ops_js_1.MergeTreeDeltaType.INSERT:
|
|
149
|
-
(0,
|
|
170
|
+
(0, internal_1.assert)(this.seq === constants_js_1.UnassignedSequenceNumber, 0x045 /* "On insert, seq number already assigned!" */);
|
|
150
171
|
this.seq = opArgs.sequencedMessage.sequenceNumber;
|
|
151
172
|
this.localSeq = undefined;
|
|
152
173
|
return true;
|
|
153
174
|
case ops_js_1.MergeTreeDeltaType.REMOVE:
|
|
154
175
|
const removalInfo = toRemovalInfo(this);
|
|
155
|
-
(0,
|
|
176
|
+
(0, internal_1.assert)(removalInfo !== undefined, 0x046 /* "On remove ack, missing removal info!" */);
|
|
156
177
|
this.localRemovedSeq = undefined;
|
|
157
178
|
if (removalInfo.removedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
158
179
|
removalInfo.removedSeq = opArgs.sequencedMessage.sequenceNumber;
|
|
@@ -161,10 +182,10 @@ class BaseSegment extends MergeNode {
|
|
|
161
182
|
return false;
|
|
162
183
|
case ops_js_1.MergeTreeDeltaType.OBLITERATE:
|
|
163
184
|
const moveInfo = toMoveInfo(this);
|
|
164
|
-
(0,
|
|
185
|
+
(0, internal_1.assert)(moveInfo !== undefined, 0x86e /* On obliterate ack, missing move info! */);
|
|
165
186
|
this.localMovedSeq = undefined;
|
|
166
187
|
const seqIdx = moveInfo.movedSeqs.indexOf(constants_js_1.UnassignedSequenceNumber);
|
|
167
|
-
(0,
|
|
188
|
+
(0, internal_1.assert)(seqIdx !== -1, 0x86f /* expected movedSeqs to contain unacked seq */);
|
|
168
189
|
moveInfo.movedSeqs[seqIdx] = opArgs.sequencedMessage.sequenceNumber;
|
|
169
190
|
if (moveInfo.movedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
170
191
|
moveInfo.movedSeq = opArgs.sequencedMessage.sequenceNumber;
|
|
@@ -225,11 +246,11 @@ class BaseSegment extends MergeNode {
|
|
|
225
246
|
// 'this.cachedLength' is used to adjust the offsets of the local refs.
|
|
226
247
|
localReference_js_1.LocalReferenceCollection.append(this, other);
|
|
227
248
|
if (this.attribution) {
|
|
228
|
-
(0,
|
|
249
|
+
(0, internal_1.assert)(other.attribution !== undefined, 0x4bd /* attribution should be set on appendee */);
|
|
229
250
|
this.attribution.append(other.attribution);
|
|
230
251
|
}
|
|
231
252
|
else {
|
|
232
|
-
(0,
|
|
253
|
+
(0, internal_1.assert)(other.attribution === undefined, 0x4be /* attribution should not be set on appendee */);
|
|
233
254
|
}
|
|
234
255
|
this.cachedLength ?? (this.cachedLength = 0);
|
|
235
256
|
this.cachedLength += other.cachedLength;
|
|
@@ -241,7 +262,7 @@ exports.BaseSegment = BaseSegment;
|
|
|
241
262
|
*
|
|
242
263
|
* @remarks In general, marker ids should be accessed using the inherent method
|
|
243
264
|
* {@link Marker.getId}. Marker ids should not be updated after creation.
|
|
244
|
-
* @
|
|
265
|
+
* @alpha
|
|
245
266
|
*/
|
|
246
267
|
exports.reservedMarkerIdKey = "markerId";
|
|
247
268
|
/**
|