@fluidframework/merge-tree 2.0.0-rc.1.0.3 → 2.0.0-rc.2.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/{.eslintrc.js → .eslintrc.cjs} +4 -1
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +4 -0
- package/api-extractor-cjs.json +8 -0
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -9
- package/api-report/merge-tree.api.md +6 -12
- package/dist/MergeTreeTextHelper.d.ts +2 -2
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js +3 -3
- 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.map +1 -1
- package/dist/attributionPolicy.d.ts +1 -1
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +15 -15
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +31 -12
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +103 -92
- package/dist/client.js.map +1 -1
- package/dist/collections/index.d.ts +2 -2
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +6 -6
- package/dist/collections/index.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts +3 -3
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js +8 -8
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/index.d.ts +20 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -71
- package/dist/index.js.map +1 -1
- package/dist/localReference.d.ts +9 -39
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +29 -24
- package/dist/localReference.js.map +1 -1
- package/dist/merge-tree-alpha.d.ts +28 -450
- package/dist/merge-tree-beta.d.ts +0 -438
- package/dist/merge-tree-public.d.ts +0 -438
- package/dist/merge-tree-untrimmed.d.ts +28 -787
- package/dist/mergeTree.d.ts +11 -19
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +201 -189
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts +3 -7
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts +1 -1
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +17 -14
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +32 -32
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/mergeTreeTracking.d.ts +2 -2
- package/dist/mergeTreeTracking.d.ts.map +1 -1
- package/dist/mergeTreeTracking.js +2 -2
- package/dist/mergeTreeTracking.js.map +1 -1
- package/dist/opBuilder.d.ts +3 -3
- package/dist/opBuilder.d.ts.map +1 -1
- package/dist/opBuilder.js +7 -7
- package/dist/opBuilder.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/partialLengths.d.ts +5 -5
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +29 -29
- package/dist/partialLengths.js.map +1 -1
- package/dist/referencePositions.d.ts +4 -4
- package/dist/referencePositions.d.ts.map +1 -1
- package/dist/referencePositions.js +2 -2
- package/dist/referencePositions.js.map +1 -1
- package/dist/revertibles.d.ts +7 -7
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +39 -39
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentGroupCollection.d.ts +1 -1
- package/dist/segmentGroupCollection.d.ts.map +1 -1
- package/dist/segmentGroupCollection.js +3 -3
- package/dist/segmentGroupCollection.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +2 -2
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +8 -8
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/snapshotChunks.d.ts +3 -3
- package/dist/snapshotChunks.d.ts.map +1 -1
- package/dist/snapshotChunks.js +5 -5
- package/dist/snapshotChunks.js.map +1 -1
- package/dist/snapshotLoader.d.ts +3 -3
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +19 -19
- 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 +35 -18
- package/dist/snapshotV1.js.map +1 -1
- package/dist/snapshotlegacy.d.ts +2 -2
- package/dist/snapshotlegacy.d.ts.map +1 -1
- package/dist/snapshotlegacy.js +22 -10
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/sortedSegmentSet.d.ts +3 -3
- package/dist/sortedSegmentSet.d.ts.map +1 -1
- package/dist/sortedSegmentSet.js +7 -5
- package/dist/sortedSegmentSet.js.map +1 -1
- package/dist/test/Insertion.perf.spec.js +15 -15
- package/dist/test/Insertion.perf.spec.js.map +1 -1
- package/dist/test/PartialLengths.perf.spec.js +13 -13
- package/dist/test/PartialLengths.perf.spec.js.map +1 -1
- package/dist/test/Removal.perf.spec.js +25 -25
- package/dist/test/Removal.perf.spec.js.map +1 -1
- package/dist/test/Snapshot.perf.spec.js +3 -3
- package/dist/test/Snapshot.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.perf.spec.js +9 -9
- package/dist/test/attributionCollection.perf.spec.js.map +1 -1
- package/dist/test/attributionCollection.spec.js +46 -46
- package/dist/test/attributionCollection.spec.js.map +1 -1
- package/dist/test/attributionPolicy.spec.js +13 -13
- package/dist/test/attributionPolicy.spec.js.map +1 -1
- package/dist/test/{beastTest.d.ts → beastTest.spec.d.ts} +3 -3
- package/dist/test/beastTest.spec.d.ts.map +1 -0
- package/dist/test/{beastTest.js → beastTest.spec.js} +120 -119
- package/dist/test/beastTest.spec.js.map +1 -0
- package/dist/test/client.annotateMarker.spec.js +13 -13
- package/dist/test/client.annotateMarker.spec.js.map +1 -1
- package/dist/test/{client.apis.d.ts → client.apis.spec.d.ts} +1 -1
- package/dist/test/client.apis.spec.d.ts.map +1 -0
- package/dist/test/{client.apis.js → client.apis.spec.js} +8 -8
- package/dist/test/client.apis.spec.js.map +1 -0
- package/dist/test/client.applyMsg.spec.js +106 -43
- 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 +33 -21
- package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
- package/dist/test/client.attributionFarm.spec.d.ts +1 -1
- package/dist/test/client.attributionFarm.spec.d.ts.map +1 -1
- package/dist/test/client.attributionFarm.spec.js +13 -13
- package/dist/test/client.attributionFarm.spec.js.map +1 -1
- package/dist/test/client.conflictFarm.spec.d.ts +1 -1
- package/dist/test/client.conflictFarm.spec.d.ts.map +1 -1
- package/dist/test/client.conflictFarm.spec.js +9 -9
- package/dist/test/client.conflictFarm.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +4 -4
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +140 -109
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.localReferenceFarm.spec.js +18 -18
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
- package/dist/test/client.rebasePosition.spec.js +2 -2
- 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 +10 -10
- package/dist/test/client.reconnectFarm.spec.js.map +1 -1
- package/dist/test/client.replay.spec.js +11 -11
- package/dist/test/client.replay.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js +83 -83
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/client.rollbackFarm.spec.js +9 -9
- package/dist/test/client.rollbackFarm.spec.js.map +1 -1
- package/dist/test/client.searchForMarker.spec.js +137 -137
- package/dist/test/client.searchForMarker.spec.js.map +1 -1
- package/dist/test/client.walkSegments.spec.js +2 -2
- package/dist/test/client.walkSegments.spec.js.map +1 -1
- package/dist/test/collections.list.spec.js +4 -4
- package/dist/test/collections.list.spec.js.map +1 -1
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js +4 -4
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
- package/dist/test/dirname.cjs +16 -0
- package/dist/test/dirname.cjs.map +1 -0
- package/dist/test/dirname.d.cts +6 -0
- package/dist/test/dirname.d.cts.map +1 -0
- package/dist/test/index.d.ts +8 -8
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +82 -81
- package/dist/test/index.js.map +1 -1
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +39 -39
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +39 -39
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insert.deltaCallback.spec.js +35 -35
- package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +77 -77
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +42 -42
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +15 -15
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js +14 -14
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTree.zamboni.spec.js +9 -9
- package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.d.ts +4 -4
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +16 -15
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.spec.js +5 -5
- package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
- package/dist/test/obliterate.concurrent.spec.js +85 -88
- package/dist/test/obliterate.concurrent.spec.js.map +1 -1
- package/dist/test/obliterate.deltaCallback.spec.d.ts +6 -0
- package/dist/test/obliterate.deltaCallback.spec.d.ts.map +1 -0
- package/dist/test/obliterate.deltaCallback.spec.js +146 -0
- package/dist/test/obliterate.deltaCallback.spec.js.map +1 -0
- package/dist/test/obliterate.partialLength.spec.js +39 -44
- package/dist/test/obliterate.partialLength.spec.js.map +1 -1
- package/dist/test/obliterate.reconnect.spec.js +15 -18
- package/dist/test/obliterate.reconnect.spec.js.map +1 -1
- package/dist/test/obliterate.spec.js +16 -16
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/ordinal.spec.js +5 -5
- package/dist/test/ordinal.spec.js.map +1 -1
- package/dist/test/partialLength.spec.js +58 -64
- 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 +8 -8
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js +3 -3
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js +18 -18
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/revertibleFarm.spec.js +21 -21
- package/dist/test/revertibleFarm.spec.js.map +1 -1
- package/dist/test/revertibles.spec.js +67 -67
- package/dist/test/revertibles.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +3 -3
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.spec.js +16 -16
- package/dist/test/snapshot.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts +4 -4
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js +11 -11
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/test/snapshotlegacy.spec.js +22 -22
- package/dist/test/snapshotlegacy.spec.js.map +1 -1
- package/dist/test/sortedSegmentSet.spec.js +9 -9
- package/dist/test/sortedSegmentSet.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +13 -16
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +57 -59
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts +3 -3
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +19 -19
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testServer.d.ts +3 -3
- package/dist/test/testServer.d.ts.map +1 -1
- package/dist/test/testServer.js +8 -8
- package/dist/test/testServer.js.map +1 -1
- package/dist/test/testUtils.d.ts +14 -6
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +36 -17
- package/dist/test/testUtils.js.map +1 -1
- package/dist/test/text.d.ts +2 -2
- package/dist/test/text.d.ts.map +1 -1
- package/dist/test/text.js +10 -10
- package/dist/test/text.js.map +1 -1
- package/dist/test/tracking.spec.js +12 -12
- package/dist/test/tracking.spec.js.map +1 -1
- package/dist/test/{wordUnitTests.d.ts → wordUnitTests.spec.d.ts} +1 -1
- package/dist/test/wordUnitTests.spec.d.ts.map +1 -0
- package/dist/test/{wordUnitTests.js → wordUnitTests.spec.js} +16 -15
- package/dist/test/wordUnitTests.spec.js.map +1 -0
- package/dist/textSegment.d.ts +3 -3
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js +2 -2
- package/dist/textSegment.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/zamboni.d.ts +2 -2
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +19 -19
- package/dist/zamboni.js.map +1 -1
- package/lib/{MergeTreeTextHelper.d.mts → MergeTreeTextHelper.d.ts} +3 -3
- package/lib/MergeTreeTextHelper.d.ts.map +1 -0
- package/lib/{MergeTreeTextHelper.mjs → MergeTreeTextHelper.js} +3 -2
- package/lib/MergeTreeTextHelper.js.map +1 -0
- package/lib/{attributionCollection.d.mts → attributionCollection.d.ts} +2 -2
- package/lib/attributionCollection.d.ts.map +1 -0
- package/lib/{attributionCollection.mjs → attributionCollection.js} +1 -1
- package/lib/attributionCollection.js.map +1 -0
- package/lib/{attributionPolicy.d.mts → attributionPolicy.d.ts} +2 -2
- package/lib/attributionPolicy.d.ts.map +1 -0
- package/lib/{attributionPolicy.mjs → attributionPolicy.js} +4 -4
- package/lib/attributionPolicy.js.map +1 -0
- package/lib/{client.d.mts → client.d.ts} +32 -13
- package/lib/client.d.ts.map +1 -0
- package/lib/{client.mjs → client.js} +42 -31
- package/lib/client.js.map +1 -0
- package/lib/collections/{index.d.mts → index.d.ts} +3 -3
- package/lib/collections/index.d.ts.map +1 -0
- package/lib/collections/index.js +7 -0
- package/lib/collections/index.js.map +1 -0
- package/lib/collections/{list.d.mts → list.d.ts} +1 -1
- package/lib/collections/list.d.ts.map +1 -0
- package/lib/collections/{list.mjs → list.js} +1 -1
- package/lib/collections/list.js.map +1 -0
- package/lib/collections/{rbTree.d.mts → rbTree.d.ts} +1 -1
- package/lib/collections/rbTree.d.ts.map +1 -0
- package/lib/collections/{rbTree.mjs → rbTree.js} +1 -1
- package/lib/collections/rbTree.js.map +1 -0
- package/lib/{constants.d.mts → constants.d.ts} +1 -1
- package/lib/constants.d.ts.map +1 -0
- package/lib/{constants.mjs → constants.js} +1 -1
- package/lib/constants.js.map +1 -0
- package/lib/{endOfTreeSegment.d.mts → endOfTreeSegment.d.ts} +4 -4
- package/lib/endOfTreeSegment.d.ts.map +1 -0
- package/lib/{endOfTreeSegment.mjs → endOfTreeSegment.js} +3 -3
- package/lib/endOfTreeSegment.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +21 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/{index.mjs → index.js} +20 -20
- package/lib/index.js.map +1 -0
- package/lib/{localReference.d.mts → localReference.d.ts} +10 -40
- package/lib/localReference.d.ts.map +1 -0
- package/lib/{localReference.mjs → localReference.js} +12 -6
- package/lib/localReference.js.map +1 -0
- package/lib/{merge-tree-alpha.d.mts → merge-tree-alpha.d.ts} +28 -450
- package/lib/merge-tree-beta.d.ts +230 -0
- package/lib/merge-tree-public.d.ts +230 -0
- package/lib/{merge-tree-untrimmed.d.mts → merge-tree-untrimmed.d.ts} +28 -787
- package/lib/{mergeTree.d.mts → mergeTree.d.ts} +12 -20
- package/lib/mergeTree.d.ts.map +1 -0
- package/lib/{mergeTree.mjs → mergeTree.js} +47 -32
- package/lib/mergeTree.js.map +1 -0
- package/lib/{mergeTreeDeltaCallback.d.mts → mergeTreeDeltaCallback.d.ts} +8 -8
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -0
- package/lib/{mergeTreeDeltaCallback.mjs → mergeTreeDeltaCallback.js} +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -0
- package/lib/{mergeTreeNodeWalk.d.mts → mergeTreeNodeWalk.d.ts} +2 -2
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -0
- package/lib/{mergeTreeNodeWalk.mjs → mergeTreeNodeWalk.js} +1 -1
- package/lib/mergeTreeNodeWalk.js.map +1 -0
- package/lib/{mergeTreeNodes.d.mts → mergeTreeNodes.d.ts} +18 -15
- package/lib/mergeTreeNodes.d.ts.map +1 -0
- package/lib/{mergeTreeNodes.mjs → mergeTreeNodes.js} +12 -10
- package/lib/mergeTreeNodes.js.map +1 -0
- package/lib/{mergeTreeTracking.d.mts → mergeTreeTracking.d.ts} +3 -3
- package/lib/mergeTreeTracking.d.ts.map +1 -0
- package/lib/{mergeTreeTracking.mjs → mergeTreeTracking.js} +3 -2
- package/lib/mergeTreeTracking.js.map +1 -0
- package/lib/{opBuilder.d.mts → opBuilder.d.ts} +4 -4
- package/lib/{opBuilder.d.mts.map → opBuilder.d.ts.map} +1 -1
- package/lib/{opBuilder.mjs → opBuilder.js} +2 -2
- package/lib/opBuilder.js.map +1 -0
- package/lib/{ops.d.mts → ops.d.ts} +1 -1
- package/lib/ops.d.ts.map +1 -0
- package/lib/{ops.mjs → ops.js} +1 -1
- package/lib/ops.js.map +1 -0
- package/lib/{ordinal.d.mts → ordinal.d.ts} +1 -1
- package/lib/ordinal.d.ts.map +1 -0
- package/lib/{ordinal.mjs → ordinal.js} +2 -1
- package/lib/ordinal.js.map +1 -0
- package/lib/{partialLengths.d.mts → partialLengths.d.ts} +6 -6
- package/lib/partialLengths.d.ts.map +1 -0
- package/lib/{partialLengths.mjs → partialLengths.js} +11 -10
- package/lib/partialLengths.js.map +1 -0
- package/lib/{properties.d.mts → properties.d.ts} +1 -1
- package/lib/properties.d.ts.map +1 -0
- package/lib/{properties.mjs → properties.js} +1 -1
- package/lib/properties.js.map +1 -0
- package/lib/{referencePositions.d.mts → referencePositions.d.ts} +5 -5
- package/lib/referencePositions.d.ts.map +1 -0
- package/lib/{referencePositions.mjs → referencePositions.js} +2 -2
- package/lib/referencePositions.js.map +1 -0
- package/lib/{revertibles.d.mts → revertibles.d.ts} +8 -8
- package/lib/revertibles.d.ts.map +1 -0
- package/lib/{revertibles.mjs → revertibles.js} +13 -13
- package/lib/revertibles.js.map +1 -0
- package/lib/{segmentGroupCollection.d.mts → segmentGroupCollection.d.ts} +2 -2
- package/lib/segmentGroupCollection.d.ts.map +1 -0
- package/lib/{segmentGroupCollection.mjs → segmentGroupCollection.js} +2 -2
- package/lib/segmentGroupCollection.js.map +1 -0
- package/lib/{segmentPropertiesManager.d.mts → segmentPropertiesManager.d.ts} +3 -3
- package/lib/segmentPropertiesManager.d.ts.map +1 -0
- package/lib/{segmentPropertiesManager.mjs → segmentPropertiesManager.js} +5 -3
- package/lib/segmentPropertiesManager.js.map +1 -0
- package/lib/{snapshotChunks.d.mts → snapshotChunks.d.ts} +4 -4
- package/lib/snapshotChunks.d.ts.map +1 -0
- package/lib/{snapshotChunks.mjs → snapshotChunks.js} +2 -2
- package/lib/snapshotChunks.js.map +1 -0
- package/lib/{snapshotLoader.d.mts → snapshotLoader.d.ts} +4 -4
- package/lib/snapshotLoader.d.ts.map +1 -0
- package/lib/{snapshotLoader.mjs → snapshotLoader.js} +10 -9
- package/lib/snapshotLoader.js.map +1 -0
- package/lib/{snapshotV1.d.mts → snapshotV1.d.ts} +4 -4
- package/lib/snapshotV1.d.ts.map +1 -0
- package/lib/{snapshotV1.mjs → snapshotV1.js} +24 -7
- package/lib/snapshotV1.js.map +1 -0
- package/lib/{snapshotlegacy.d.mts → snapshotlegacy.d.ts} +3 -3
- package/lib/snapshotlegacy.d.ts.map +1 -0
- package/lib/{snapshotlegacy.mjs → snapshotlegacy.js} +17 -4
- package/lib/snapshotlegacy.js.map +1 -0
- package/lib/{sortedSegmentSet.d.mts → sortedSegmentSet.d.ts} +4 -4
- package/lib/sortedSegmentSet.d.ts.map +1 -0
- package/lib/{sortedSegmentSet.mjs → sortedSegmentSet.js} +8 -5
- package/lib/sortedSegmentSet.js.map +1 -0
- package/lib/{sortedSet.d.mts → sortedSet.d.ts} +1 -1
- package/lib/sortedSet.d.ts.map +1 -0
- package/lib/{sortedSet.mjs → sortedSet.js} +1 -1
- package/lib/sortedSet.js.map +1 -0
- package/lib/test/Insertion.perf.spec.d.ts +6 -0
- package/lib/test/Insertion.perf.spec.d.ts.map +1 -0
- package/lib/test/Insertion.perf.spec.js +111 -0
- package/lib/test/Insertion.perf.spec.js.map +1 -0
- package/lib/test/PartialLengths.perf.spec.d.ts +6 -0
- package/lib/test/PartialLengths.perf.spec.d.ts.map +1 -0
- package/lib/test/PartialLengths.perf.spec.js +65 -0
- package/lib/test/PartialLengths.perf.spec.js.map +1 -0
- package/lib/test/Removal.perf.spec.d.ts +6 -0
- package/lib/test/Removal.perf.spec.d.ts.map +1 -0
- package/lib/test/Removal.perf.spec.js +164 -0
- package/lib/test/Removal.perf.spec.js.map +1 -0
- package/lib/test/Snapshot.perf.spec.d.ts +6 -0
- package/lib/test/Snapshot.perf.spec.d.ts.map +1 -0
- package/lib/test/Snapshot.perf.spec.js +31 -0
- package/lib/test/Snapshot.perf.spec.js.map +1 -0
- package/lib/test/attributionCollection.perf.spec.d.ts +6 -0
- package/lib/test/attributionCollection.perf.spec.d.ts.map +1 -0
- package/lib/test/attributionCollection.perf.spec.js +229 -0
- package/lib/test/attributionCollection.perf.spec.js.map +1 -0
- package/lib/test/attributionCollection.spec.d.ts +6 -0
- package/lib/test/attributionCollection.spec.d.ts.map +1 -0
- package/lib/test/attributionCollection.spec.js +484 -0
- package/lib/test/attributionCollection.spec.js.map +1 -0
- package/lib/test/attributionPolicy.spec.d.ts +6 -0
- package/lib/test/attributionPolicy.spec.d.ts.map +1 -0
- package/lib/test/attributionPolicy.spec.js +187 -0
- package/lib/test/attributionPolicy.spec.js.map +1 -0
- package/lib/test/beastTest.spec.d.ts +54 -0
- package/lib/test/beastTest.spec.d.ts.map +1 -0
- package/lib/test/beastTest.spec.js +1318 -0
- package/lib/test/beastTest.spec.js.map +1 -0
- package/lib/test/client.annotateMarker.spec.d.ts +6 -0
- package/lib/test/client.annotateMarker.spec.d.ts.map +1 -0
- package/lib/test/client.annotateMarker.spec.js +43 -0
- package/lib/test/client.annotateMarker.spec.js.map +1 -0
- package/lib/test/client.apis.spec.d.ts +7 -0
- package/lib/test/client.apis.spec.d.ts.map +1 -0
- package/lib/test/client.apis.spec.js +67 -0
- package/lib/test/client.apis.spec.js.map +1 -0
- package/lib/test/client.applyMsg.spec.d.ts +6 -0
- package/lib/test/client.applyMsg.spec.d.ts.map +1 -0
- package/lib/test/client.applyMsg.spec.js +561 -0
- package/lib/test/client.applyMsg.spec.js.map +1 -0
- package/lib/test/client.applyStashedOpFarm.spec.d.ts +12 -0
- package/lib/test/client.applyStashedOpFarm.spec.d.ts.map +1 -0
- package/lib/test/client.applyStashedOpFarm.spec.js +153 -0
- package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -0
- package/lib/test/client.attributionFarm.spec.d.ts +7 -0
- package/lib/test/client.attributionFarm.spec.d.ts.map +1 -0
- package/lib/test/client.attributionFarm.spec.js +92 -0
- package/lib/test/client.attributionFarm.spec.js.map +1 -0
- package/lib/test/client.conflictFarm.spec.d.ts +15 -0
- package/lib/test/client.conflictFarm.spec.d.ts.map +1 -0
- package/lib/test/client.conflictFarm.spec.js +85 -0
- package/lib/test/client.conflictFarm.spec.js.map +1 -0
- package/lib/test/client.getPosition.spec.d.ts +6 -0
- package/lib/test/client.getPosition.spec.d.ts.map +1 -0
- package/lib/test/client.getPosition.spec.js +52 -0
- package/lib/test/client.getPosition.spec.js.map +1 -0
- package/lib/test/client.localReference.spec.d.ts +6 -0
- package/lib/test/client.localReference.spec.d.ts.map +1 -0
- package/lib/test/client.localReference.spec.js +468 -0
- package/lib/test/client.localReference.spec.js.map +1 -0
- package/lib/test/client.localReferenceFarm.spec.d.ts +6 -0
- package/lib/test/client.localReferenceFarm.spec.d.ts.map +1 -0
- package/lib/test/client.localReferenceFarm.spec.js +86 -0
- package/lib/test/client.localReferenceFarm.spec.js.map +1 -0
- package/lib/test/client.rebasePosition.spec.d.ts +6 -0
- package/lib/test/client.rebasePosition.spec.d.ts.map +1 -0
- package/lib/test/client.rebasePosition.spec.js +100 -0
- package/lib/test/client.rebasePosition.spec.js.map +1 -0
- package/lib/test/client.reconnectFarm.spec.d.ts +12 -0
- package/lib/test/client.reconnectFarm.spec.d.ts.map +1 -0
- package/lib/test/client.reconnectFarm.spec.js +88 -0
- package/lib/test/client.reconnectFarm.spec.js.map +1 -0
- package/lib/test/client.replay.spec.d.ts +6 -0
- package/lib/test/client.replay.spec.d.ts.map +1 -0
- package/lib/test/client.replay.spec.js +57 -0
- package/lib/test/client.replay.spec.js.map +1 -0
- package/lib/test/client.rollback.spec.d.ts +6 -0
- package/lib/test/client.rollback.spec.d.ts.map +1 -0
- package/lib/test/client.rollback.spec.js +451 -0
- package/lib/test/client.rollback.spec.js.map +1 -0
- package/lib/test/client.rollbackFarm.spec.d.ts +6 -0
- package/lib/test/client.rollbackFarm.spec.d.ts.map +1 -0
- package/lib/test/client.rollbackFarm.spec.js +46 -0
- package/lib/test/client.rollbackFarm.spec.js.map +1 -0
- package/lib/test/client.searchForMarker.spec.d.ts +6 -0
- package/lib/test/client.searchForMarker.spec.d.ts.map +1 -0
- package/lib/test/client.searchForMarker.spec.js +495 -0
- package/lib/test/client.searchForMarker.spec.js.map +1 -0
- package/lib/test/client.walkSegments.spec.d.ts +6 -0
- package/lib/test/client.walkSegments.spec.d.ts.map +1 -0
- package/lib/test/client.walkSegments.spec.js +52 -0
- package/lib/test/client.walkSegments.spec.js.map +1 -0
- package/lib/test/collections.list.spec.d.ts +6 -0
- package/lib/test/collections.list.spec.d.ts.map +1 -0
- package/lib/test/collections.list.spec.js +82 -0
- package/lib/test/collections.list.spec.js.map +1 -0
- package/lib/test/createInsertOnlyAttributionPolicy.spec.d.ts +6 -0
- package/lib/test/createInsertOnlyAttributionPolicy.spec.d.ts.map +1 -0
- package/lib/test/createInsertOnlyAttributionPolicy.spec.js +33 -0
- package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -0
- package/lib/test/dirname.cjs +16 -0
- package/lib/test/dirname.cjs.map +1 -0
- package/lib/test/dirname.d.cts +6 -0
- package/lib/test/dirname.d.cts.map +1 -0
- package/lib/test/index.d.ts +13 -0
- package/lib/test/index.d.ts.map +1 -0
- package/lib/test/index.js +13 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/mergeTree.annotate.deltaCallback.spec.d.ts +6 -0
- package/lib/test/mergeTree.annotate.deltaCallback.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js +140 -0
- package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -0
- package/lib/test/mergeTree.annotate.spec.d.ts +6 -0
- package/lib/test/mergeTree.annotate.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.annotate.spec.js +446 -0
- package/lib/test/mergeTree.annotate.spec.js.map +1 -0
- package/lib/test/mergeTree.insert.deltaCallback.spec.d.ts +6 -0
- package/lib/test/mergeTree.insert.deltaCallback.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.insert.deltaCallback.spec.js +124 -0
- package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -0
- package/lib/test/mergeTree.insertingWalk.spec.d.ts +6 -0
- package/lib/test/mergeTree.insertingWalk.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.insertingWalk.spec.js +277 -0
- package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -0
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts +6 -0
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +176 -0
- package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.d.ts +6 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.js +128 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -0
- package/lib/test/mergeTree.walk.spec.d.ts +6 -0
- package/lib/test/mergeTree.walk.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.walk.spec.js +61 -0
- package/lib/test/mergeTree.walk.spec.js.map +1 -0
- package/lib/test/mergeTree.zamboni.spec.d.ts +6 -0
- package/lib/test/mergeTree.zamboni.spec.d.ts.map +1 -0
- package/lib/test/mergeTree.zamboni.spec.js +50 -0
- package/lib/test/mergeTree.zamboni.spec.js.map +1 -0
- package/lib/test/mergeTreeOperationRunner.d.ts +63 -0
- package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -0
- package/lib/test/mergeTreeOperationRunner.js +207 -0
- package/lib/test/mergeTreeOperationRunner.js.map +1 -0
- package/lib/test/mergeTreeOperationRunner.spec.d.ts +6 -0
- package/lib/test/mergeTreeOperationRunner.spec.d.ts.map +1 -0
- package/lib/test/mergeTreeOperationRunner.spec.js +154 -0
- package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -0
- package/lib/test/obliterate.concurrent.spec.d.ts +6 -0
- package/lib/test/obliterate.concurrent.spec.d.ts.map +1 -0
- package/lib/test/obliterate.concurrent.spec.js +1441 -0
- package/lib/test/obliterate.concurrent.spec.js.map +1 -0
- package/lib/test/obliterate.deltaCallback.spec.d.ts +6 -0
- package/lib/test/obliterate.deltaCallback.spec.d.ts.map +1 -0
- package/lib/test/obliterate.deltaCallback.spec.js +144 -0
- package/lib/test/obliterate.deltaCallback.spec.js.map +1 -0
- package/lib/test/obliterate.partialLength.spec.d.ts +6 -0
- package/lib/test/obliterate.partialLength.spec.d.ts.map +1 -0
- package/lib/test/obliterate.partialLength.spec.js +272 -0
- package/lib/test/obliterate.partialLength.spec.js.map +1 -0
- package/lib/test/obliterate.reconnect.spec.d.ts +6 -0
- package/lib/test/obliterate.reconnect.spec.d.ts.map +1 -0
- package/lib/test/obliterate.reconnect.spec.js +159 -0
- package/lib/test/obliterate.reconnect.spec.js.map +1 -0
- package/lib/test/obliterate.spec.d.ts +6 -0
- package/lib/test/obliterate.spec.d.ts.map +1 -0
- package/lib/test/obliterate.spec.js +160 -0
- package/lib/test/obliterate.spec.js.map +1 -0
- package/lib/test/ordinal.spec.d.ts +2 -0
- package/lib/test/ordinal.spec.d.ts.map +1 -0
- package/lib/test/ordinal.spec.js +38 -0
- package/lib/test/ordinal.spec.js.map +1 -0
- package/lib/test/partialLength.spec.d.ts +6 -0
- package/lib/test/partialLength.spec.d.ts.map +1 -0
- package/lib/test/partialLength.spec.js +274 -0
- package/lib/test/partialLength.spec.js.map +1 -0
- package/lib/test/properties.spec.d.ts +6 -0
- package/lib/test/properties.spec.d.ts.map +1 -0
- package/lib/test/properties.spec.js +53 -0
- package/lib/test/properties.spec.js.map +1 -0
- package/lib/test/reconnectHelper.d.ts +48 -0
- package/lib/test/reconnectHelper.d.ts.map +1 -0
- package/lib/test/reconnectHelper.js +82 -0
- package/lib/test/reconnectHelper.js.map +1 -0
- package/lib/test/resetPendingSegmentsToOp.spec.d.ts +6 -0
- package/lib/test/resetPendingSegmentsToOp.spec.d.ts.map +1 -0
- package/lib/test/resetPendingSegmentsToOp.spec.js +235 -0
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -0
- package/lib/test/revertibleFarm.spec.d.ts +6 -0
- package/lib/test/revertibleFarm.spec.d.ts.map +1 -0
- package/lib/test/revertibleFarm.spec.js +119 -0
- package/lib/test/revertibleFarm.spec.js.map +1 -0
- package/lib/test/revertibles.spec.d.ts +17 -0
- package/lib/test/revertibles.spec.d.ts.map +1 -0
- package/lib/test/revertibles.spec.js +381 -0
- package/lib/test/revertibles.spec.js.map +1 -0
- package/lib/test/segmentGroupCollection.spec.d.ts +6 -0
- package/lib/test/segmentGroupCollection.spec.d.ts.map +1 -0
- package/lib/test/segmentGroupCollection.spec.js +58 -0
- package/lib/test/segmentGroupCollection.spec.js.map +1 -0
- package/lib/test/snapshot.spec.d.ts +6 -0
- package/lib/test/snapshot.spec.d.ts.map +1 -0
- package/lib/test/snapshot.spec.js +176 -0
- package/lib/test/snapshot.spec.js.map +1 -0
- package/lib/test/snapshot.utils.d.ts +33 -0
- package/lib/test/snapshot.utils.d.ts.map +1 -0
- package/lib/test/snapshot.utils.js +104 -0
- package/lib/test/snapshot.utils.js.map +1 -0
- package/lib/test/snapshotlegacy.spec.d.ts +6 -0
- package/lib/test/snapshotlegacy.spec.d.ts.map +1 -0
- package/lib/test/snapshotlegacy.spec.js +137 -0
- package/lib/test/snapshotlegacy.spec.js.map +1 -0
- package/lib/test/sortedSegmentSet.spec.d.ts +6 -0
- package/lib/test/sortedSegmentSet.spec.d.ts.map +1 -0
- package/lib/test/sortedSegmentSet.spec.js +93 -0
- package/lib/test/sortedSegmentSet.spec.js.map +1 -0
- package/lib/test/testClient.d.ts +116 -0
- package/lib/test/testClient.d.ts.map +1 -0
- package/lib/test/testClient.js +430 -0
- package/lib/test/testClient.js.map +1 -0
- package/lib/test/testClientLogger.d.ts +44 -0
- package/lib/test/testClientLogger.d.ts.map +1 -0
- package/lib/test/testClientLogger.js +282 -0
- package/lib/test/testClientLogger.js.map +1 -0
- package/lib/test/testSerializer.d.ts +18 -0
- package/lib/test/testSerializer.d.ts.map +1 -0
- package/lib/test/testSerializer.js +29 -0
- package/lib/test/testSerializer.js.map +1 -0
- package/lib/test/testServer.d.ts +36 -0
- package/lib/test/testServer.d.ts.map +1 -0
- package/lib/test/testServer.js +133 -0
- package/lib/test/testServer.js.map +1 -0
- package/lib/test/testUtils.d.ts +77 -0
- package/lib/test/testUtils.d.ts.map +1 -0
- package/lib/test/testUtils.js +151 -0
- package/lib/test/testUtils.js.map +1 -0
- package/lib/test/text.d.ts +9 -0
- package/lib/test/text.d.ts.map +1 -0
- package/lib/test/text.js +71 -0
- package/lib/test/text.js.map +1 -0
- package/lib/test/tracking.spec.d.ts +6 -0
- package/lib/test/tracking.spec.d.ts.map +1 -0
- package/lib/test/tracking.spec.js +118 -0
- package/lib/test/tracking.spec.js.map +1 -0
- package/lib/test/types/validateMergeTreePrevious.generated.d.ts +2 -0
- package/lib/test/types/validateMergeTreePrevious.generated.d.ts.map +1 -0
- package/lib/test/types/validateMergeTreePrevious.generated.js +228 -0
- package/lib/test/types/validateMergeTreePrevious.generated.js.map +1 -0
- package/lib/test/wordUnitTests.spec.d.ts +6 -0
- package/lib/test/wordUnitTests.spec.d.ts.map +1 -0
- package/lib/test/wordUnitTests.spec.js +166 -0
- package/lib/test/wordUnitTests.spec.js.map +1 -0
- package/lib/{textSegment.d.mts → textSegment.d.ts} +4 -4
- package/lib/textSegment.d.ts.map +1 -0
- package/lib/{textSegment.mjs → textSegment.js} +2 -2
- package/lib/textSegment.js.map +1 -0
- package/lib/{zamboni.d.mts → zamboni.d.ts} +3 -3
- package/lib/zamboni.d.ts.map +1 -0
- package/lib/{zamboni.mjs → zamboni.js} +7 -6
- package/lib/zamboni.js.map +1 -0
- package/package.json +50 -57
- package/src/MergeTreeTextHelper.ts +4 -4
- package/src/attributionCollection.ts +1 -1
- package/src/attributionPolicy.ts +5 -5
- package/src/client.ts +50 -41
- package/src/collections/index.ts +2 -2
- package/src/endOfTreeSegment.ts +5 -5
- package/src/index.ts +20 -20
- package/src/localReference.ts +13 -7
- package/src/mergeTree.ts +53 -44
- package/src/mergeTreeDeltaCallback.ts +3 -8
- package/src/mergeTreeNodeWalk.ts +1 -1
- package/src/mergeTreeNodes.ts +21 -19
- package/src/mergeTreeTracking.ts +3 -3
- package/src/opBuilder.ts +3 -3
- package/src/partialLengths.ts +10 -10
- package/src/referencePositions.ts +4 -4
- package/src/revertibles.ts +14 -18
- package/src/segmentGroupCollection.ts +2 -2
- package/src/segmentPropertiesManager.ts +3 -3
- package/src/snapshotChunks.ts +4 -4
- package/src/snapshotLoader.ts +14 -11
- package/src/snapshotV1.ts +29 -9
- package/src/snapshotlegacy.ts +19 -5
- package/src/sortedSegmentSet.ts +8 -6
- package/src/textSegment.ts +3 -3
- package/src/zamboni.ts +7 -7
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/api-extractor-esm.json +0 -17
- package/dist/test/beastTest.d.ts.map +0 -1
- package/dist/test/beastTest.js.map +0 -1
- package/dist/test/client.apis.d.ts.map +0 -1
- package/dist/test/client.apis.js.map +0 -1
- package/dist/test/wordUnitTests.d.ts.map +0 -1
- package/dist/test/wordUnitTests.js.map +0 -1
- package/lib/MergeTreeTextHelper.d.mts.map +0 -1
- package/lib/MergeTreeTextHelper.mjs.map +0 -1
- package/lib/attributionCollection.d.mts.map +0 -1
- package/lib/attributionCollection.mjs.map +0 -1
- package/lib/attributionPolicy.d.mts.map +0 -1
- package/lib/attributionPolicy.mjs.map +0 -1
- package/lib/client.d.mts.map +0 -1
- package/lib/client.mjs.map +0 -1
- package/lib/collections/index.d.mts.map +0 -1
- package/lib/collections/index.mjs +0 -7
- package/lib/collections/index.mjs.map +0 -1
- package/lib/collections/list.d.mts.map +0 -1
- package/lib/collections/list.mjs.map +0 -1
- package/lib/collections/rbTree.d.mts.map +0 -1
- package/lib/collections/rbTree.mjs.map +0 -1
- package/lib/constants.d.mts.map +0 -1
- package/lib/constants.mjs.map +0 -1
- package/lib/endOfTreeSegment.d.mts.map +0 -1
- package/lib/endOfTreeSegment.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs.map +0 -1
- package/lib/localReference.d.mts.map +0 -1
- package/lib/localReference.mjs.map +0 -1
- package/lib/merge-tree-beta.d.mts +0 -668
- package/lib/merge-tree-public.d.mts +0 -668
- package/lib/mergeTree.d.mts.map +0 -1
- package/lib/mergeTree.mjs.map +0 -1
- package/lib/mergeTreeDeltaCallback.d.mts.map +0 -1
- package/lib/mergeTreeDeltaCallback.mjs.map +0 -1
- package/lib/mergeTreeNodeWalk.d.mts.map +0 -1
- package/lib/mergeTreeNodeWalk.mjs.map +0 -1
- package/lib/mergeTreeNodes.d.mts.map +0 -1
- package/lib/mergeTreeNodes.mjs.map +0 -1
- package/lib/mergeTreeTracking.d.mts.map +0 -1
- package/lib/mergeTreeTracking.mjs.map +0 -1
- package/lib/opBuilder.mjs.map +0 -1
- package/lib/ops.d.mts.map +0 -1
- package/lib/ops.mjs.map +0 -1
- package/lib/ordinal.d.mts.map +0 -1
- package/lib/ordinal.mjs.map +0 -1
- package/lib/partialLengths.d.mts.map +0 -1
- package/lib/partialLengths.mjs.map +0 -1
- package/lib/properties.d.mts.map +0 -1
- package/lib/properties.mjs.map +0 -1
- package/lib/referencePositions.d.mts.map +0 -1
- package/lib/referencePositions.mjs.map +0 -1
- package/lib/revertibles.d.mts.map +0 -1
- package/lib/revertibles.mjs.map +0 -1
- package/lib/segmentGroupCollection.d.mts.map +0 -1
- package/lib/segmentGroupCollection.mjs.map +0 -1
- package/lib/segmentPropertiesManager.d.mts.map +0 -1
- package/lib/segmentPropertiesManager.mjs.map +0 -1
- package/lib/snapshotChunks.d.mts.map +0 -1
- package/lib/snapshotChunks.mjs.map +0 -1
- package/lib/snapshotLoader.d.mts.map +0 -1
- package/lib/snapshotLoader.mjs.map +0 -1
- package/lib/snapshotV1.d.mts.map +0 -1
- package/lib/snapshotV1.mjs.map +0 -1
- package/lib/snapshotlegacy.d.mts.map +0 -1
- package/lib/snapshotlegacy.mjs.map +0 -1
- package/lib/sortedSegmentSet.d.mts.map +0 -1
- package/lib/sortedSegmentSet.mjs.map +0 -1
- package/lib/sortedSet.d.mts.map +0 -1
- package/lib/sortedSet.mjs.map +0 -1
- package/lib/textSegment.d.mts.map +0 -1
- package/lib/textSegment.mjs.map +0 -1
- package/lib/zamboni.d.mts.map +0 -1
- package/lib/zamboni.mjs.map +0 -1
package/dist/mergeTree.js
CHANGED
|
@@ -9,23 +9,23 @@ exports.MergeTree = exports.getSlideToSegoff = exports.findRootMergeBlock = void
|
|
|
9
9
|
/* eslint-disable no-bitwise */
|
|
10
10
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
11
11
|
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
12
|
+
const index_js_1 = require("./collections/index.js");
|
|
13
|
+
const constants_js_1 = require("./constants.js");
|
|
14
|
+
const localReference_js_1 = require("./localReference.js");
|
|
15
|
+
const mergeTreeNodes_js_1 = require("./mergeTreeNodes.js");
|
|
16
|
+
const mergeTreeDeltaCallback_js_1 = require("./mergeTreeDeltaCallback.js");
|
|
17
|
+
const opBuilder_js_1 = require("./opBuilder.js");
|
|
18
|
+
const ops_js_1 = require("./ops.js");
|
|
19
|
+
const partialLengths_js_1 = require("./partialLengths.js");
|
|
20
20
|
// eslint-disable-next-line import/no-deprecated
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
21
|
+
const properties_js_1 = require("./properties.js");
|
|
22
|
+
const referencePositions_js_1 = require("./referencePositions.js");
|
|
23
|
+
const segmentPropertiesManager_js_1 = require("./segmentPropertiesManager.js");
|
|
24
|
+
const mergeTreeNodeWalk_js_1 = require("./mergeTreeNodeWalk.js");
|
|
25
|
+
const zamboni_js_1 = require("./zamboni.js");
|
|
26
|
+
const endOfTreeSegment_js_1 = require("./endOfTreeSegment.js");
|
|
27
27
|
function wasRemovedAfter(seg, seq) {
|
|
28
|
-
return (seg.removedSeq !==
|
|
28
|
+
return (seg.removedSeq !== constants_js_1.UnassignedSequenceNumber &&
|
|
29
29
|
(seg.removedSeq === undefined || seg.removedSeq > seq));
|
|
30
30
|
}
|
|
31
31
|
function markSegmentMoved(seg, moveInfo) {
|
|
@@ -37,22 +37,25 @@ function markSegmentMoved(seg, moveInfo) {
|
|
|
37
37
|
seg.wasMovedOnInsert = moveInfo.wasMovedOnInsert;
|
|
38
38
|
}
|
|
39
39
|
function isMoved(segment) {
|
|
40
|
-
return (0,
|
|
40
|
+
return (0, mergeTreeNodes_js_1.toMoveInfo)(segment) !== undefined;
|
|
41
41
|
}
|
|
42
42
|
function isRemoved(segment) {
|
|
43
|
-
return (0,
|
|
43
|
+
return (0, mergeTreeNodes_js_1.toRemovalInfo)(segment) !== undefined;
|
|
44
44
|
}
|
|
45
45
|
function isRemovedAndAcked(segment) {
|
|
46
|
-
const removalInfo = (0,
|
|
47
|
-
return removalInfo !== undefined && removalInfo.removedSeq !==
|
|
46
|
+
const removalInfo = (0, mergeTreeNodes_js_1.toRemovalInfo)(segment);
|
|
47
|
+
return removalInfo !== undefined && removalInfo.removedSeq !== constants_js_1.UnassignedSequenceNumber;
|
|
48
48
|
}
|
|
49
49
|
function isMovedAndAcked(segment) {
|
|
50
|
-
const moveInfo = (0,
|
|
51
|
-
return moveInfo !== undefined && moveInfo.movedSeq !==
|
|
50
|
+
const moveInfo = (0, mergeTreeNodes_js_1.toMoveInfo)(segment);
|
|
51
|
+
return moveInfo !== undefined && moveInfo.movedSeq !== constants_js_1.UnassignedSequenceNumber;
|
|
52
52
|
}
|
|
53
53
|
function isRemovedAndAckedOrMovedAndAcked(segment) {
|
|
54
54
|
return isRemovedAndAcked(segment) || isMovedAndAcked(segment);
|
|
55
55
|
}
|
|
56
|
+
function isRemovedOrMoved(segment) {
|
|
57
|
+
return isRemoved(segment) || isMoved(segment);
|
|
58
|
+
}
|
|
56
59
|
function nodeTotalLength(mergeTree, node) {
|
|
57
60
|
if (!node.isLeaf()) {
|
|
58
61
|
return node.cachedLength;
|
|
@@ -64,7 +67,7 @@ const LRUSegmentComparer = {
|
|
|
64
67
|
compare: (a, b) => a.maxSeq - b.maxSeq,
|
|
65
68
|
};
|
|
66
69
|
function addTile(tile, tiles) {
|
|
67
|
-
const tileLabels = (0,
|
|
70
|
+
const tileLabels = (0, referencePositions_js_1.refGetTileLabels)(tile);
|
|
68
71
|
if (tileLabels) {
|
|
69
72
|
for (const tileLabel of tileLabels) {
|
|
70
73
|
tiles[tileLabel] = tile;
|
|
@@ -72,7 +75,7 @@ function addTile(tile, tiles) {
|
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
77
|
function addTileIfNotPresent(tile, tiles) {
|
|
75
|
-
const tileLabels = (0,
|
|
78
|
+
const tileLabels = (0, referencePositions_js_1.refGetTileLabels)(tile);
|
|
76
79
|
if (tileLabels) {
|
|
77
80
|
for (const tileLabel of tileLabels) {
|
|
78
81
|
if (tiles[tileLabel] === undefined) {
|
|
@@ -81,13 +84,13 @@ function addTileIfNotPresent(tile, tiles) {
|
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
|
-
class HierMergeBlock extends
|
|
87
|
+
class HierMergeBlock extends mergeTreeNodes_js_1.MergeBlock {
|
|
85
88
|
constructor(childCount) {
|
|
86
89
|
super(childCount);
|
|
87
90
|
// eslint-disable-next-line import/no-deprecated
|
|
88
|
-
this.rightmostTiles = (0,
|
|
91
|
+
this.rightmostTiles = (0, properties_js_1.createMap)();
|
|
89
92
|
// eslint-disable-next-line import/no-deprecated
|
|
90
|
-
this.leftmostTiles = (0,
|
|
93
|
+
this.leftmostTiles = (0, properties_js_1.createMap)();
|
|
91
94
|
}
|
|
92
95
|
hierBlock() {
|
|
93
96
|
return this;
|
|
@@ -117,7 +120,7 @@ exports.findRootMergeBlock = findRootMergeBlock;
|
|
|
117
120
|
* valid segment (i.e. the tree is empty).
|
|
118
121
|
* @internal
|
|
119
122
|
*/
|
|
120
|
-
function getSlideToSegment(segment, slidingPreference =
|
|
123
|
+
function getSlideToSegment(segment, slidingPreference = localReference_js_1.SlidingPreference.FORWARD, cache, useNewSlidingBehavior = false) {
|
|
121
124
|
if (!segment ||
|
|
122
125
|
!isRemovedAndAckedOrMovedAndAcked(segment) ||
|
|
123
126
|
segment.endpointType !== undefined) {
|
|
@@ -130,7 +133,7 @@ function getSlideToSegment(segment, slidingPreference = localReference_1.Sliding
|
|
|
130
133
|
const result = {};
|
|
131
134
|
cache?.set(segment, result);
|
|
132
135
|
const goFurtherToFindSlideToSegment = (seg) => {
|
|
133
|
-
if (seg.seq !==
|
|
136
|
+
if (seg.seq !== constants_js_1.UnassignedSequenceNumber && !isRemovedAndAckedOrMovedAndAcked(seg)) {
|
|
134
137
|
result.seg = seg;
|
|
135
138
|
return false;
|
|
136
139
|
}
|
|
@@ -140,11 +143,11 @@ function getSlideToSegment(segment, slidingPreference = localReference_1.Sliding
|
|
|
140
143
|
}
|
|
141
144
|
return true;
|
|
142
145
|
};
|
|
143
|
-
if (slidingPreference ===
|
|
144
|
-
(0,
|
|
146
|
+
if (slidingPreference === localReference_js_1.SlidingPreference.BACKWARD) {
|
|
147
|
+
(0, mergeTreeNodeWalk_js_1.backwardExcursion)(segment, goFurtherToFindSlideToSegment);
|
|
145
148
|
}
|
|
146
149
|
else {
|
|
147
|
-
(0,
|
|
150
|
+
(0, mergeTreeNodeWalk_js_1.forwardExcursion)(segment, goFurtherToFindSlideToSegment);
|
|
148
151
|
}
|
|
149
152
|
if (result.seg !== undefined) {
|
|
150
153
|
return [result.seg, undefined];
|
|
@@ -159,18 +162,18 @@ function getSlideToSegment(segment, slidingPreference = localReference_1.Sliding
|
|
|
159
162
|
// in both of these cases detached may be substituted for one of the special
|
|
160
163
|
// endpoint segments, if such behavior is enabled
|
|
161
164
|
if (!useNewSlidingBehavior) {
|
|
162
|
-
if (slidingPreference ===
|
|
163
|
-
(0,
|
|
165
|
+
if (slidingPreference === localReference_js_1.SlidingPreference.BACKWARD) {
|
|
166
|
+
(0, mergeTreeNodeWalk_js_1.forwardExcursion)(segment, goFurtherToFindSlideToSegment);
|
|
164
167
|
}
|
|
165
168
|
else {
|
|
166
|
-
(0,
|
|
169
|
+
(0, mergeTreeNodeWalk_js_1.backwardExcursion)(segment, goFurtherToFindSlideToSegment);
|
|
167
170
|
}
|
|
168
171
|
}
|
|
169
172
|
let maybeEndpoint;
|
|
170
|
-
if (slidingPreference ===
|
|
173
|
+
if (slidingPreference === localReference_js_1.SlidingPreference.BACKWARD) {
|
|
171
174
|
maybeEndpoint = "start";
|
|
172
175
|
}
|
|
173
|
-
else if (slidingPreference ===
|
|
176
|
+
else if (slidingPreference === localReference_js_1.SlidingPreference.FORWARD) {
|
|
174
177
|
maybeEndpoint = "end";
|
|
175
178
|
}
|
|
176
179
|
return [result.seg, maybeEndpoint];
|
|
@@ -181,7 +184,7 @@ function getSlideToSegment(segment, slidingPreference = localReference_1.Sliding
|
|
|
181
184
|
* @returns segment and offset to slide the reference to
|
|
182
185
|
* @internal
|
|
183
186
|
*/
|
|
184
|
-
function getSlideToSegoff(segoff, slidingPreference =
|
|
187
|
+
function getSlideToSegoff(segoff, slidingPreference = localReference_js_1.SlidingPreference.FORWARD, useNewSlidingBehavior = false) {
|
|
185
188
|
if (segoff.segment === undefined) {
|
|
186
189
|
return segoff;
|
|
187
190
|
}
|
|
@@ -203,9 +206,9 @@ class MergeTree {
|
|
|
203
206
|
constructor(options) {
|
|
204
207
|
this.options = options;
|
|
205
208
|
// eslint-disable-next-line import/no-deprecated
|
|
206
|
-
this.collabWindow = new
|
|
209
|
+
this.collabWindow = new mergeTreeNodes_js_1.CollaborationWindow();
|
|
207
210
|
// eslint-disable-next-line import/no-deprecated
|
|
208
|
-
this.pendingSegments = new
|
|
211
|
+
this.pendingSegments = new index_js_1.DoublyLinkedList();
|
|
209
212
|
this.segmentsToScour = new core_utils_1.Heap(LRUSegmentComparer);
|
|
210
213
|
/**
|
|
211
214
|
* Whether or not all blocks in the mergeTree currently have information about local partial lengths computed.
|
|
@@ -252,13 +255,13 @@ class MergeTree {
|
|
|
252
255
|
}
|
|
253
256
|
const next = segment.splitAt(pos);
|
|
254
257
|
this.mergeTreeMaintenanceCallback?.({
|
|
255
|
-
operation:
|
|
258
|
+
operation: mergeTreeDeltaCallback_js_1.MergeTreeMaintenanceType.SPLIT,
|
|
256
259
|
deltaSegments: [{ segment }, { segment: next }],
|
|
257
260
|
}, undefined);
|
|
258
261
|
return { next };
|
|
259
262
|
};
|
|
260
|
-
this.startOfTree = new
|
|
261
|
-
this.endOfTree = new
|
|
263
|
+
this.startOfTree = new endOfTreeSegment_js_1.StartOfTreeSegment(this);
|
|
264
|
+
this.endOfTree = new endOfTreeSegment_js_1.EndOfTreeSegment(this);
|
|
262
265
|
this._root = this.makeBlock(0);
|
|
263
266
|
this._root.mergeTree = this;
|
|
264
267
|
this.attributionPolicy = options?.attribution?.policyFactory?.();
|
|
@@ -283,12 +286,12 @@ class MergeTree {
|
|
|
283
286
|
* numbers corresponding to un-acked operations give valid results.
|
|
284
287
|
*/
|
|
285
288
|
localNetLength(segment, refSeq, localSeq) {
|
|
286
|
-
const removalInfo = (0,
|
|
287
|
-
const moveInfo = (0,
|
|
289
|
+
const removalInfo = (0, mergeTreeNodes_js_1.toRemovalInfo)(segment);
|
|
290
|
+
const moveInfo = (0, mergeTreeNodes_js_1.toMoveInfo)(segment);
|
|
288
291
|
if (localSeq === undefined) {
|
|
289
292
|
if (removalInfo !== undefined || moveInfo !== undefined) {
|
|
290
|
-
if ((!!removalInfo && !(0,
|
|
291
|
-
(!!moveInfo && !(0,
|
|
293
|
+
if ((!!removalInfo && !(0, mergeTreeNodes_js_1.seqLTE)(removalInfo.removedSeq, this.collabWindow.minSeq)) ||
|
|
294
|
+
(!!moveInfo && !(0, mergeTreeNodes_js_1.seqLTE)(moveInfo.movedSeq, this.collabWindow.minSeq))) {
|
|
292
295
|
return 0;
|
|
293
296
|
}
|
|
294
297
|
// this segment removed and outside the collab window which means it is zamboni eligible
|
|
@@ -303,14 +306,14 @@ class MergeTree {
|
|
|
303
306
|
(0, core_utils_1.assert)(refSeq !== undefined, 0x398 /* localSeq provided for local length without refSeq */);
|
|
304
307
|
(0, core_utils_1.assert)(segment.seq !== undefined, 0x399 /* segment with no seq in mergeTree */);
|
|
305
308
|
const { seq, removedSeq, localRemovedSeq, movedSeq, localMovedSeq } = segment;
|
|
306
|
-
if (seq !==
|
|
309
|
+
if (seq !== constants_js_1.UnassignedSequenceNumber) {
|
|
307
310
|
// inserted remotely
|
|
308
311
|
if (seq > refSeq ||
|
|
309
312
|
(removedSeq !== undefined &&
|
|
310
|
-
removedSeq !==
|
|
313
|
+
removedSeq !== constants_js_1.UnassignedSequenceNumber &&
|
|
311
314
|
removedSeq <= refSeq) ||
|
|
312
315
|
(movedSeq !== undefined &&
|
|
313
|
-
movedSeq !==
|
|
316
|
+
movedSeq !== constants_js_1.UnassignedSequenceNumber &&
|
|
314
317
|
movedSeq <= refSeq) ||
|
|
315
318
|
(localRemovedSeq !== undefined && localRemovedSeq <= localSeq) ||
|
|
316
319
|
(localMovedSeq !== undefined && localMovedSeq <= localSeq)) {
|
|
@@ -343,7 +346,7 @@ class MergeTree {
|
|
|
343
346
|
reloadFromSegments(segments) {
|
|
344
347
|
// This code assumes that a later call to `startCollaboration()` will initialize partial lengths.
|
|
345
348
|
(0, core_utils_1.assert)(!this.collabWindow.collaborating, 0x049 /* "Trying to reload from segments while collaborating!" */);
|
|
346
|
-
const maxChildren =
|
|
349
|
+
const maxChildren = mergeTreeNodes_js_1.MaxNodesInBlock - 1;
|
|
347
350
|
// Starting with the leaf segments, recursively builds the B-Tree layer by layer from the bottom up.
|
|
348
351
|
const buildMergeBlock = (nodes) => {
|
|
349
352
|
const blockCount = Math.ceil(nodes.length / maxChildren); // Compute # blocks require for this level of B-Tree
|
|
@@ -466,20 +469,20 @@ class MergeTree {
|
|
|
466
469
|
let currentForwardMaybeEndpoint;
|
|
467
470
|
let currentForwardSlideDestination;
|
|
468
471
|
let currentForwardSlideIsForward;
|
|
469
|
-
const forwardPred = (ref) => ref.slidingPreference !==
|
|
472
|
+
const forwardPred = (ref) => ref.slidingPreference !== localReference_js_1.SlidingPreference.BACKWARD;
|
|
470
473
|
let currentBackwardMaybeEndpoint;
|
|
471
474
|
let currentBackwardSlideDestination;
|
|
472
475
|
let currentBackwardSlideIsForward;
|
|
473
|
-
const backwardPred = (ref) => ref.slidingPreference ===
|
|
476
|
+
const backwardPred = (ref) => ref.slidingPreference === localReference_js_1.SlidingPreference.BACKWARD;
|
|
474
477
|
const slideGroup = (currentSlideDestination, currentSlideIsForward, currentSlideGroup, pred, maybeEndpoint) => {
|
|
475
478
|
if (currentSlideIsForward === undefined) {
|
|
476
479
|
return;
|
|
477
480
|
}
|
|
478
|
-
const nonEndpointRefsToAdd = currentSlideGroup.map((collection) => (0,
|
|
479
|
-
const endpointRefsToAdd = currentSlideGroup.map((collection) => (0,
|
|
481
|
+
const nonEndpointRefsToAdd = currentSlideGroup.map((collection) => (0, localReference_js_1.filterLocalReferencePositions)(collection, (ref) => pred(ref) && (maybeEndpoint ? !ref.canSlideToEndpoint : true)));
|
|
482
|
+
const endpointRefsToAdd = currentSlideGroup.map((collection) => (0, localReference_js_1.filterLocalReferencePositions)(collection, (ref) => pred(ref) && !!ref.canSlideToEndpoint));
|
|
480
483
|
if (maybeEndpoint) {
|
|
481
484
|
const endpoint = maybeEndpoint === "start" ? this.startOfTree : this.endOfTree;
|
|
482
|
-
const localRefs =
|
|
485
|
+
const localRefs = localReference_js_1.LocalReferenceCollection.setOrGet(endpoint);
|
|
483
486
|
if (currentSlideIsForward) {
|
|
484
487
|
localRefs.addBeforeTombstones(...endpointRefsToAdd);
|
|
485
488
|
}
|
|
@@ -488,7 +491,7 @@ class MergeTree {
|
|
|
488
491
|
}
|
|
489
492
|
}
|
|
490
493
|
if (currentSlideDestination !== undefined) {
|
|
491
|
-
const localRefs =
|
|
494
|
+
const localRefs = localReference_js_1.LocalReferenceCollection.setOrGet(currentSlideDestination);
|
|
492
495
|
if (currentSlideIsForward) {
|
|
493
496
|
localRefs.addBeforeTombstones(...nonEndpointRefsToAdd);
|
|
494
497
|
}
|
|
@@ -499,7 +502,7 @@ class MergeTree {
|
|
|
499
502
|
else {
|
|
500
503
|
for (const collection of currentSlideGroup) {
|
|
501
504
|
for (const ref of collection) {
|
|
502
|
-
if (pred(ref) && !(0,
|
|
505
|
+
if (pred(ref) && !(0, referencePositions_js_1.refTypeIncludesFlag)(ref, ops_js_1.ReferenceType.StayOnRemove)) {
|
|
503
506
|
ref.callbacks?.beforeSlide?.(ref);
|
|
504
507
|
collection.removeLocalRef(ref);
|
|
505
508
|
ref.callbacks?.afterSlide?.(ref);
|
|
@@ -511,10 +514,10 @@ class MergeTree {
|
|
|
511
514
|
const trySlideSegment = (segment, currentSlideDestination, currentSlideIsForward, currentSlideGroup, pred, slidingPreference, currentMaybeEndpoint, reassign) => {
|
|
512
515
|
// avoid sliding logic if this segment doesn't have any references
|
|
513
516
|
// with the given sliding preference
|
|
514
|
-
if (!segment.localRefs || !(0,
|
|
517
|
+
if (!segment.localRefs || !(0, localReference_js_1.anyLocalReferencePosition)(segment.localRefs, pred)) {
|
|
515
518
|
return;
|
|
516
519
|
}
|
|
517
|
-
const [slideToSegment, maybeEndpoint] = getSlideToSegment(segment, slidingPreference, slidingPreference ===
|
|
520
|
+
const [slideToSegment, maybeEndpoint] = getSlideToSegment(segment, slidingPreference, slidingPreference === localReference_js_1.SlidingPreference.FORWARD
|
|
518
521
|
? forwardSegmentCache
|
|
519
522
|
: backwardSegmentCache, this.options?.mergeTreeReferencesCanSlideToEndpoint);
|
|
520
523
|
const slideIsForward = slideToSegment === undefined ? false : slideToSegment.ordinal > segment.ordinal;
|
|
@@ -535,13 +538,13 @@ class MergeTree {
|
|
|
535
538
|
if (segment.localRefs === undefined || segment.localRefs.empty) {
|
|
536
539
|
continue;
|
|
537
540
|
}
|
|
538
|
-
trySlideSegment(segment, currentForwardSlideDestination, currentForwardSlideIsForward, currentForwardSlideGroup, forwardPred,
|
|
541
|
+
trySlideSegment(segment, currentForwardSlideDestination, currentForwardSlideIsForward, currentForwardSlideGroup, forwardPred, localReference_js_1.SlidingPreference.FORWARD, currentForwardMaybeEndpoint, (localRefs, slideToSegment, slideIsForward, maybeEndpoint) => {
|
|
539
542
|
currentForwardSlideGroup = [localRefs];
|
|
540
543
|
currentForwardSlideDestination = slideToSegment;
|
|
541
544
|
currentForwardSlideIsForward = slideIsForward;
|
|
542
545
|
currentForwardMaybeEndpoint = maybeEndpoint;
|
|
543
546
|
});
|
|
544
|
-
trySlideSegment(segment, currentBackwardSlideDestination, currentBackwardSlideIsForward, currentBackwardSlideGroup, backwardPred,
|
|
547
|
+
trySlideSegment(segment, currentBackwardSlideDestination, currentBackwardSlideIsForward, currentBackwardSlideGroup, backwardPred, localReference_js_1.SlidingPreference.BACKWARD, currentBackwardMaybeEndpoint, (localRefs, slideToSegment, slideIsForward, maybeEndpoint) => {
|
|
545
548
|
currentBackwardSlideGroup = [localRefs];
|
|
546
549
|
currentBackwardSlideDestination = slideToSegment;
|
|
547
550
|
currentBackwardSlideIsForward = slideIsForward;
|
|
@@ -566,12 +569,12 @@ class MergeTree {
|
|
|
566
569
|
return;
|
|
567
570
|
}
|
|
568
571
|
// eslint-disable-next-line import/no-deprecated
|
|
569
|
-
const rebaseCollabWindow = new
|
|
572
|
+
const rebaseCollabWindow = new mergeTreeNodes_js_1.CollaborationWindow();
|
|
570
573
|
rebaseCollabWindow.loadFrom(this.collabWindow);
|
|
571
574
|
if (refSeq < this.collabWindow.minSeq) {
|
|
572
575
|
rebaseCollabWindow.minSeq = refSeq;
|
|
573
576
|
}
|
|
574
|
-
this.root.partialLengths =
|
|
577
|
+
this.root.partialLengths = partialLengths_js_1.PartialSequenceLengths.combine(this.root, rebaseCollabWindow, true, true);
|
|
575
578
|
this.localPartialsComputed = true;
|
|
576
579
|
}
|
|
577
580
|
nodeLength(node, refSeq, clientId, localSeq) {
|
|
@@ -587,7 +590,7 @@ class MergeTree {
|
|
|
587
590
|
this.computeLocalPartials(refSeq);
|
|
588
591
|
// Local client should see all segments except those after localSeq.
|
|
589
592
|
const partialLen = node.partialLengths.getPartialLength(refSeq, clientId, localSeq);
|
|
590
|
-
|
|
593
|
+
partialLengths_js_1.PartialSequenceLengths.options.verifyExpected?.(this, node, refSeq, clientId, localSeq);
|
|
591
594
|
return partialLen;
|
|
592
595
|
}
|
|
593
596
|
}
|
|
@@ -595,32 +598,32 @@ class MergeTree {
|
|
|
595
598
|
// Sequence number within window
|
|
596
599
|
if (!node.isLeaf()) {
|
|
597
600
|
const partialLen = node.partialLengths.getPartialLength(refSeq, clientId);
|
|
598
|
-
|
|
601
|
+
partialLengths_js_1.PartialSequenceLengths.options.verifyExpected?.(this, node, refSeq, clientId);
|
|
599
602
|
return partialLen;
|
|
600
603
|
}
|
|
601
604
|
else {
|
|
602
605
|
const segment = node;
|
|
603
|
-
const removalInfo = (0,
|
|
604
|
-
const moveInfo = (0,
|
|
606
|
+
const removalInfo = (0, mergeTreeNodes_js_1.toRemovalInfo)(segment);
|
|
607
|
+
const moveInfo = (0, mergeTreeNodes_js_1.toMoveInfo)(segment);
|
|
605
608
|
if (removalInfo !== undefined) {
|
|
606
|
-
if ((0,
|
|
609
|
+
if ((0, mergeTreeNodes_js_1.seqLTE)(removalInfo.removedSeq, this.collabWindow.minSeq)) {
|
|
607
610
|
return undefined;
|
|
608
611
|
}
|
|
609
|
-
if ((0,
|
|
612
|
+
if ((0, mergeTreeNodes_js_1.seqLTE)(removalInfo.removedSeq, refSeq) ||
|
|
610
613
|
removalInfo.removedClientIds.includes(clientId)) {
|
|
611
614
|
return 0;
|
|
612
615
|
}
|
|
613
616
|
}
|
|
614
617
|
if (moveInfo !== undefined) {
|
|
615
|
-
if ((0,
|
|
618
|
+
if ((0, mergeTreeNodes_js_1.seqLTE)(moveInfo.movedSeq, this.collabWindow.minSeq)) {
|
|
616
619
|
return undefined;
|
|
617
620
|
}
|
|
618
|
-
if ((0,
|
|
621
|
+
if ((0, mergeTreeNodes_js_1.seqLTE)(moveInfo.movedSeq, refSeq) ||
|
|
619
622
|
moveInfo.movedClientIds.includes(clientId)) {
|
|
620
623
|
return 0;
|
|
621
624
|
}
|
|
622
625
|
}
|
|
623
|
-
return (0,
|
|
626
|
+
return (0, mergeTreeNodes_js_1.seqLTE)(node.seq ?? 0, refSeq) || segment.clientId === clientId
|
|
624
627
|
? segment.cachedLength
|
|
625
628
|
: 0;
|
|
626
629
|
}
|
|
@@ -635,23 +638,27 @@ class MergeTree {
|
|
|
635
638
|
const firstMoveSeqIdx = this.moveSeqs.findIndex((seq) => seq >= minSeq);
|
|
636
639
|
this.moveSeqs = firstMoveSeqIdx === -1 ? [] : this.moveSeqs.slice(firstMoveSeqIdx);
|
|
637
640
|
if (MergeTree.options.zamboniSegments) {
|
|
638
|
-
(0,
|
|
641
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
639
642
|
}
|
|
640
643
|
}
|
|
641
644
|
}
|
|
642
645
|
referencePositionToLocalPosition(refPos, refSeq = this.collabWindow.currentSeq, clientId = this.collabWindow.clientId) {
|
|
643
646
|
const seg = refPos.getSegment();
|
|
644
647
|
if (seg?.parent === undefined) {
|
|
645
|
-
return
|
|
648
|
+
return referencePositions_js_1.DetachedReferencePosition;
|
|
646
649
|
}
|
|
647
650
|
if (refPos.isLeaf()) {
|
|
648
651
|
return this.getPosition(refPos, refSeq, clientId);
|
|
649
652
|
}
|
|
650
|
-
if ((0,
|
|
651
|
-
const offset =
|
|
652
|
-
|
|
653
|
+
if ((0, referencePositions_js_1.refTypeIncludesFlag)(refPos, ops_js_1.ReferenceType.Transient) || seg.localRefs?.has(refPos)) {
|
|
654
|
+
const offset = isRemovedOrMoved(seg) ? 0 : refPos.getOffset();
|
|
655
|
+
const pos = this.getPosition(seg, refSeq, clientId);
|
|
656
|
+
if (isRemovedOrMoved(seg) && refPos.slidingPreference === localReference_js_1.SlidingPreference.BACKWARD) {
|
|
657
|
+
return pos === 0 ? 0 : pos - 1;
|
|
658
|
+
}
|
|
659
|
+
return offset + pos;
|
|
653
660
|
}
|
|
654
|
-
return
|
|
661
|
+
return referencePositions_js_1.DetachedReferencePosition;
|
|
655
662
|
}
|
|
656
663
|
/**
|
|
657
664
|
* Finds the nearest reference with ReferenceType.Tile to `startPos` in the direction dictated by `forwards`.
|
|
@@ -667,14 +674,14 @@ class MergeTree {
|
|
|
667
674
|
*/
|
|
668
675
|
searchForMarker(startPos, clientId, markerLabel, forwards = true) {
|
|
669
676
|
let foundMarker;
|
|
670
|
-
const { segment } = this.getContainingSegment(startPos,
|
|
677
|
+
const { segment } = this.getContainingSegment(startPos, constants_js_1.UniversalSequenceNumber, clientId);
|
|
671
678
|
const segWithParent = segment;
|
|
672
679
|
if (segWithParent?.parent === undefined) {
|
|
673
680
|
return undefined;
|
|
674
681
|
}
|
|
675
|
-
(0,
|
|
682
|
+
(0, mergeTreeNodeWalk_js_1.depthFirstNodeWalk)(segWithParent.parent, segWithParent, (seg) => {
|
|
676
683
|
if (seg.isLeaf()) {
|
|
677
|
-
if (
|
|
684
|
+
if (mergeTreeNodes_js_1.Marker.is(seg) && (0, referencePositions_js_1.refHasTileLabel)(seg, markerLabel)) {
|
|
678
685
|
foundMarker = seg;
|
|
679
686
|
}
|
|
680
687
|
}
|
|
@@ -684,11 +691,11 @@ class MergeTree {
|
|
|
684
691
|
? block.leftmostTiles[markerLabel]
|
|
685
692
|
: block.rightmostTiles[markerLabel];
|
|
686
693
|
if (marker !== undefined) {
|
|
687
|
-
(0, core_utils_1.assert)(marker.isLeaf() &&
|
|
694
|
+
(0, core_utils_1.assert)(marker.isLeaf() && mergeTreeNodes_js_1.Marker.is(marker), 0x751 /* Object returned is not a valid marker */);
|
|
688
695
|
foundMarker = marker;
|
|
689
696
|
}
|
|
690
697
|
}
|
|
691
|
-
return foundMarker !== undefined ?
|
|
698
|
+
return foundMarker !== undefined ? mergeTreeNodeWalk_js_1.NodeAction.Exit : mergeTreeNodeWalk_js_1.NodeAction.Skip;
|
|
692
699
|
}, undefined, undefined, forwards);
|
|
693
700
|
return foundMarker;
|
|
694
701
|
}
|
|
@@ -717,24 +724,24 @@ class MergeTree {
|
|
|
717
724
|
pendingSegmentGroup.segments.map((pendingSegment) => {
|
|
718
725
|
const localMovedSeq = pendingSegment.localMovedSeq;
|
|
719
726
|
const overlappingRemove = !pendingSegment.ack(pendingSegmentGroup, opArgs);
|
|
720
|
-
if (opArgs.op.type ===
|
|
727
|
+
if (opArgs.op.type === ops_js_1.MergeTreeDeltaType.OBLITERATE &&
|
|
721
728
|
localMovedSeq !== undefined) {
|
|
722
729
|
const locallyMovedSegments = this.locallyMovedSegments.get(localMovedSeq);
|
|
723
730
|
if (locallyMovedSegments) {
|
|
724
|
-
|
|
731
|
+
locallyMovedSegments.segments.forEach((segment) => {
|
|
725
732
|
segment.localMovedSeq = undefined;
|
|
726
733
|
if (!nodesToUpdate.includes(segment.parent)) {
|
|
727
734
|
nodesToUpdate.push(segment.parent);
|
|
728
735
|
}
|
|
729
|
-
if (segment.movedSeq ===
|
|
736
|
+
if (segment.movedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
730
737
|
segment.movedSeq = seq;
|
|
731
738
|
}
|
|
732
|
-
}
|
|
739
|
+
});
|
|
733
740
|
this.locallyMovedSegments.delete(localMovedSeq);
|
|
734
741
|
}
|
|
735
742
|
}
|
|
736
743
|
overwrite = overlappingRemove || overwrite;
|
|
737
|
-
if (opArgs.op.type ===
|
|
744
|
+
if (opArgs.op.type === ops_js_1.MergeTreeDeltaType.OBLITERATE) {
|
|
738
745
|
if (seq !== this.moveSeqs[this.moveSeqs.length - 1]) {
|
|
739
746
|
this.moveSeqs.push(seq);
|
|
740
747
|
}
|
|
@@ -755,13 +762,13 @@ class MergeTree {
|
|
|
755
762
|
});
|
|
756
763
|
// Perform slides after all segments have been acked, so that
|
|
757
764
|
// positions after slide are final
|
|
758
|
-
if (opArgs.op.type ===
|
|
759
|
-
opArgs.op.type ===
|
|
765
|
+
if (opArgs.op.type === ops_js_1.MergeTreeDeltaType.REMOVE ||
|
|
766
|
+
opArgs.op.type === ops_js_1.MergeTreeDeltaType.OBLITERATE) {
|
|
760
767
|
this.slideAckedRemovedSegmentReferences(pendingSegmentGroup.segments);
|
|
761
768
|
}
|
|
762
769
|
this.mergeTreeMaintenanceCallback?.({
|
|
763
770
|
deltaSegments,
|
|
764
|
-
operation:
|
|
771
|
+
operation: mergeTreeDeltaCallback_js_1.MergeTreeMaintenanceType.ACKNOWLEDGED,
|
|
765
772
|
}, opArgs);
|
|
766
773
|
const clientId = this.collabWindow.clientId;
|
|
767
774
|
for (const node of nodesToUpdate) {
|
|
@@ -769,7 +776,7 @@ class MergeTree {
|
|
|
769
776
|
}
|
|
770
777
|
}
|
|
771
778
|
if (MergeTree.options.zamboniSegments) {
|
|
772
|
-
(0,
|
|
779
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
773
780
|
}
|
|
774
781
|
}
|
|
775
782
|
addToPendingList(segment,
|
|
@@ -837,19 +844,24 @@ class MergeTree {
|
|
|
837
844
|
}
|
|
838
845
|
insertSegments(pos, segments, refSeq, clientId, seq, opArgs) {
|
|
839
846
|
this.ensureIntervalBoundary(pos, refSeq, clientId);
|
|
840
|
-
const localSeq = seq ===
|
|
847
|
+
const localSeq = seq === constants_js_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
841
848
|
this.blockInsert(pos, refSeq, clientId, seq, localSeq, segments);
|
|
842
849
|
// opArgs == undefined => loading snapshot or test code
|
|
843
850
|
if (opArgs !== undefined) {
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
851
|
+
const deltaSegments = segments
|
|
852
|
+
.filter((segment) => !(0, mergeTreeNodes_js_1.toMoveInfo)(segment))
|
|
853
|
+
.map((segment) => ({ segment }));
|
|
854
|
+
if (deltaSegments.length > 0) {
|
|
855
|
+
this.mergeTreeDeltaCallback?.(opArgs, {
|
|
856
|
+
operation: ops_js_1.MergeTreeDeltaType.INSERT,
|
|
857
|
+
deltaSegments,
|
|
858
|
+
});
|
|
859
|
+
}
|
|
848
860
|
}
|
|
849
861
|
if (this.collabWindow.collaborating &&
|
|
850
862
|
MergeTree.options.zamboniSegments &&
|
|
851
|
-
seq !==
|
|
852
|
-
(0,
|
|
863
|
+
seq !== constants_js_1.UnassignedSequenceNumber) {
|
|
864
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
853
865
|
}
|
|
854
866
|
}
|
|
855
867
|
/**
|
|
@@ -885,7 +897,7 @@ class MergeTree {
|
|
|
885
897
|
blockInsert(pos, refSeq, clientId, seq, localSeq, newSegments) {
|
|
886
898
|
const continueFrom = (node) => {
|
|
887
899
|
let siblingExists = false;
|
|
888
|
-
(0,
|
|
900
|
+
(0, mergeTreeNodeWalk_js_1.forwardExcursion)(node, () => {
|
|
889
901
|
siblingExists = true;
|
|
890
902
|
return false;
|
|
891
903
|
});
|
|
@@ -896,7 +908,7 @@ class MergeTree {
|
|
|
896
908
|
const saveIfLocal = (locSegment) => {
|
|
897
909
|
// Save segment so we can assign sequence number when acked by server
|
|
898
910
|
if (this.collabWindow.collaborating) {
|
|
899
|
-
if (locSegment.seq ===
|
|
911
|
+
if (locSegment.seq === constants_js_1.UnassignedSequenceNumber &&
|
|
900
912
|
clientId === this.collabWindow.clientId) {
|
|
901
913
|
segmentGroup = this.addToPendingList(locSegment, segmentGroup, localSeq);
|
|
902
914
|
}
|
|
@@ -928,7 +940,7 @@ class MergeTree {
|
|
|
928
940
|
newSegment.seq = seq;
|
|
929
941
|
newSegment.localSeq = localSeq;
|
|
930
942
|
newSegment.clientId = clientId;
|
|
931
|
-
if (
|
|
943
|
+
if (mergeTreeNodes_js_1.Marker.is(newSegment)) {
|
|
932
944
|
const markerId = newSegment.getId();
|
|
933
945
|
if (markerId) {
|
|
934
946
|
this.idToMarker.set(markerId, newSegment);
|
|
@@ -1001,7 +1013,7 @@ class MergeTree {
|
|
|
1001
1013
|
const left = leftLocalSegments[localMovedSeq];
|
|
1002
1014
|
if (left) {
|
|
1003
1015
|
_localMovedSeq = localMovedSeq;
|
|
1004
|
-
const clientIdIdx = left.movedSeqs?.indexOf(
|
|
1016
|
+
const clientIdIdx = left.movedSeqs?.indexOf(constants_js_1.UnassignedSequenceNumber) ?? -1;
|
|
1005
1017
|
const movedClientId = left.movedClientIds?.[clientIdIdx];
|
|
1006
1018
|
(0, core_utils_1.assert)(movedClientId !== undefined, 0x86a /* expected client id to exist */);
|
|
1007
1019
|
movedClientIds = [movedClientId];
|
|
@@ -1018,17 +1030,17 @@ class MergeTree {
|
|
|
1018
1030
|
// happened, no need to continue.
|
|
1019
1031
|
return moveUpperBound >= smallestSeqMoveOp;
|
|
1020
1032
|
};
|
|
1021
|
-
(0,
|
|
1033
|
+
(0, mergeTreeNodeWalk_js_1.backwardExcursion)(newSegment, findLeftMovedSegment);
|
|
1022
1034
|
moveUpperBound = Number.POSITIVE_INFINITY;
|
|
1023
|
-
(0,
|
|
1035
|
+
(0, mergeTreeNodeWalk_js_1.forwardExcursion)(newSegment, findRightMovedSegment);
|
|
1024
1036
|
if (_localMovedSeq !== undefined || _movedSeq !== undefined) {
|
|
1025
1037
|
(0, core_utils_1.assert)(movedClientIds !== undefined, 0x86b /* movedClientIds should be set if local/moved seq is set */);
|
|
1026
1038
|
const moveInfo = {
|
|
1027
1039
|
movedClientIds,
|
|
1028
|
-
movedSeq: _movedSeq ??
|
|
1029
|
-
movedSeqs: _movedSeq === undefined ? [
|
|
1040
|
+
movedSeq: _movedSeq ?? constants_js_1.UnassignedSequenceNumber,
|
|
1041
|
+
movedSeqs: _movedSeq === undefined ? [constants_js_1.UnassignedSequenceNumber] : [_movedSeq],
|
|
1030
1042
|
localMovedSeq: _localMovedSeq,
|
|
1031
|
-
wasMovedOnInsert: (_movedSeq ?? -1) !==
|
|
1043
|
+
wasMovedOnInsert: (_movedSeq ?? -1) !== constants_js_1.UnassignedSequenceNumber,
|
|
1032
1044
|
};
|
|
1033
1045
|
markSegmentMoved(newSegment, moveInfo);
|
|
1034
1046
|
if (moveInfo.localMovedSeq !== undefined) {
|
|
@@ -1044,7 +1056,7 @@ class MergeTree {
|
|
|
1044
1056
|
}
|
|
1045
1057
|
}
|
|
1046
1058
|
ensureIntervalBoundary(pos, refSeq, clientId) {
|
|
1047
|
-
const splitNode = this.insertingWalk(this.root, pos, refSeq, clientId,
|
|
1059
|
+
const splitNode = this.insertingWalk(this.root, pos, refSeq, clientId, constants_js_1.TreeMaintenanceSequenceNumber, { leaf: this.splitLeafSegment });
|
|
1048
1060
|
this.updateRoot(splitNode);
|
|
1049
1061
|
}
|
|
1050
1062
|
// Assume called only when pos == len
|
|
@@ -1058,14 +1070,14 @@ class MergeTree {
|
|
|
1058
1070
|
// seq for comparison, as it will get a seq higher than any other seq once sequences
|
|
1059
1071
|
// if the current seg is local (UnassignedSequenceNumber) give it the second highest
|
|
1060
1072
|
// possible seq, as the highest is reserved for the previous.
|
|
1061
|
-
const newSeq = seq ===
|
|
1062
|
-
const segSeq = node.seq ===
|
|
1073
|
+
const newSeq = seq === constants_js_1.UnassignedSequenceNumber ? Number.MAX_SAFE_INTEGER : seq;
|
|
1074
|
+
const segSeq = node.seq === constants_js_1.UnassignedSequenceNumber ? Number.MAX_SAFE_INTEGER - 1 : node.seq ?? 0;
|
|
1063
1075
|
return (newSeq > segSeq ||
|
|
1064
1076
|
(node.movedSeq !== undefined &&
|
|
1065
|
-
node.movedSeq !==
|
|
1077
|
+
node.movedSeq !== constants_js_1.UnassignedSequenceNumber &&
|
|
1066
1078
|
node.movedSeq > seq) ||
|
|
1067
1079
|
(node.removedSeq !== undefined &&
|
|
1068
|
-
node.removedSeq !==
|
|
1080
|
+
node.removedSeq !== constants_js_1.UnassignedSequenceNumber &&
|
|
1069
1081
|
node.removedSeq > seq));
|
|
1070
1082
|
}
|
|
1071
1083
|
else {
|
|
@@ -1155,7 +1167,7 @@ class MergeTree {
|
|
|
1155
1167
|
block.assignChild(newNode, childIndex, false);
|
|
1156
1168
|
block.childCount++;
|
|
1157
1169
|
block.setOrdinal(newNode, childIndex);
|
|
1158
|
-
if (block.childCount <
|
|
1170
|
+
if (block.childCount < mergeTreeNodes_js_1.MaxNodesInBlock) {
|
|
1159
1171
|
if (fromSplit) {
|
|
1160
1172
|
this.nodeUpdateOrdinals(fromSplit);
|
|
1161
1173
|
}
|
|
@@ -1165,8 +1177,8 @@ class MergeTree {
|
|
|
1165
1177
|
else {
|
|
1166
1178
|
// Don't update ordinals because higher block will do it
|
|
1167
1179
|
const newNodeFromSplit = this.split(block);
|
|
1168
|
-
|
|
1169
|
-
|
|
1180
|
+
partialLengths_js_1.PartialSequenceLengths.options.verifyExpected?.(this, block, refSeq, clientId);
|
|
1181
|
+
partialLengths_js_1.PartialSequenceLengths.options.verifyExpected?.(this, newNodeFromSplit, refSeq, clientId);
|
|
1170
1182
|
return newNodeFromSplit;
|
|
1171
1183
|
}
|
|
1172
1184
|
}
|
|
@@ -1175,7 +1187,7 @@ class MergeTree {
|
|
|
1175
1187
|
}
|
|
1176
1188
|
}
|
|
1177
1189
|
split(node) {
|
|
1178
|
-
const halfCount =
|
|
1190
|
+
const halfCount = mergeTreeNodes_js_1.MaxNodesInBlock / 2;
|
|
1179
1191
|
const newNode = this.makeBlock(halfCount);
|
|
1180
1192
|
node.childCount = halfCount;
|
|
1181
1193
|
// Update ordinals to reflect lowered child count
|
|
@@ -1208,21 +1220,21 @@ class MergeTree {
|
|
|
1208
1220
|
* @param opArgs - The op args for the annotate op. this is passed to the merge tree callback if there is one
|
|
1209
1221
|
* @param rollback - Whether this is for a local rollback and what kind
|
|
1210
1222
|
*/
|
|
1211
|
-
annotateRange(start, end, props, refSeq, clientId, seq, opArgs, rollback =
|
|
1223
|
+
annotateRange(start, end, props, refSeq, clientId, seq, opArgs, rollback = segmentPropertiesManager_js_1.PropertiesRollback.None) {
|
|
1212
1224
|
this.ensureIntervalBoundary(start, refSeq, clientId);
|
|
1213
1225
|
this.ensureIntervalBoundary(end, refSeq, clientId);
|
|
1214
1226
|
const deltaSegments = [];
|
|
1215
|
-
const localSeq = seq ===
|
|
1227
|
+
const localSeq = seq === constants_js_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
1216
1228
|
// eslint-disable-next-line import/no-deprecated
|
|
1217
1229
|
let segmentGroup;
|
|
1218
1230
|
const annotateSegment = (segment) => {
|
|
1219
|
-
(0, core_utils_1.assert)(!
|
|
1220
|
-
!(
|
|
1231
|
+
(0, core_utils_1.assert)(!mergeTreeNodes_js_1.Marker.is(segment) ||
|
|
1232
|
+
!(mergeTreeNodes_js_1.reservedMarkerIdKey in props) ||
|
|
1221
1233
|
props.markerId === segment.properties?.markerId, 0x5ad /* Cannot change the markerId of an existing marker */);
|
|
1222
1234
|
const propertyDeltas = segment.addProperties(props, seq, this.collabWindow.collaborating, rollback);
|
|
1223
1235
|
deltaSegments.push({ segment, propertyDeltas });
|
|
1224
1236
|
if (this.collabWindow.collaborating) {
|
|
1225
|
-
if (seq ===
|
|
1237
|
+
if (seq === constants_js_1.UnassignedSequenceNumber) {
|
|
1226
1238
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq, propertyDeltas);
|
|
1227
1239
|
}
|
|
1228
1240
|
else {
|
|
@@ -1237,19 +1249,16 @@ class MergeTree {
|
|
|
1237
1249
|
// OpArgs == undefined => test code
|
|
1238
1250
|
if (deltaSegments.length > 0) {
|
|
1239
1251
|
this.mergeTreeDeltaCallback?.(opArgs, {
|
|
1240
|
-
operation:
|
|
1252
|
+
operation: ops_js_1.MergeTreeDeltaType.ANNOTATE,
|
|
1241
1253
|
deltaSegments,
|
|
1242
1254
|
});
|
|
1243
1255
|
}
|
|
1244
|
-
if (this.collabWindow.collaborating && seq !==
|
|
1256
|
+
if (this.collabWindow.collaborating && seq !== constants_js_1.UnassignedSequenceNumber) {
|
|
1245
1257
|
if (MergeTree.options.zamboniSegments) {
|
|
1246
|
-
(0,
|
|
1258
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
1247
1259
|
}
|
|
1248
1260
|
}
|
|
1249
1261
|
}
|
|
1250
|
-
/**
|
|
1251
|
-
* @alpha
|
|
1252
|
-
*/
|
|
1253
1262
|
obliterateRange(start, end, refSeq, clientId, seq, overwrite = false, opArgs) {
|
|
1254
1263
|
if (!this.options?.mergeTreeEnableObliterate) {
|
|
1255
1264
|
throw new telemetry_utils_1.UsageError("Attempted to send obliterate op without enabling feature flag.");
|
|
@@ -1259,26 +1268,26 @@ class MergeTree {
|
|
|
1259
1268
|
let _overwrite = overwrite;
|
|
1260
1269
|
const localOverlapWithRefs = [];
|
|
1261
1270
|
const movedSegments = [];
|
|
1262
|
-
const localSeq = seq ===
|
|
1263
|
-
if (seq !==
|
|
1271
|
+
const localSeq = seq === constants_js_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
1272
|
+
if (seq !== constants_js_1.UnassignedSequenceNumber && seq !== this.moveSeqs[this.moveSeqs.length - 1]) {
|
|
1264
1273
|
this.moveSeqs.push(seq);
|
|
1265
1274
|
}
|
|
1266
|
-
else if (seq ===
|
|
1275
|
+
else if (seq === constants_js_1.UnassignedSequenceNumber && localSeq !== undefined) {
|
|
1267
1276
|
this.localMoveSeqs.add(localSeq);
|
|
1268
1277
|
}
|
|
1269
1278
|
// eslint-disable-next-line import/no-deprecated
|
|
1270
1279
|
let segmentGroup;
|
|
1271
1280
|
const markMoved = (segment, pos, _start, _end) => {
|
|
1272
|
-
const existingMoveInfo = (0,
|
|
1281
|
+
const existingMoveInfo = (0, mergeTreeNodes_js_1.toMoveInfo)(segment);
|
|
1273
1282
|
if (clientId !== segment.clientId &&
|
|
1274
1283
|
segment.seq !== undefined &&
|
|
1275
|
-
seq !==
|
|
1276
|
-
(refSeq < segment.seq || segment.seq ===
|
|
1284
|
+
seq !== constants_js_1.UnassignedSequenceNumber &&
|
|
1285
|
+
(refSeq < segment.seq || segment.seq === constants_js_1.UnassignedSequenceNumber)) {
|
|
1277
1286
|
segment.wasMovedOnInsert = true;
|
|
1278
1287
|
}
|
|
1279
1288
|
if (existingMoveInfo !== undefined) {
|
|
1280
1289
|
_overwrite = true;
|
|
1281
|
-
if (existingMoveInfo.movedSeq ===
|
|
1290
|
+
if (existingMoveInfo.movedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
1282
1291
|
// we moved this locally, but someone else moved it first
|
|
1283
1292
|
// so put them at the head of the list
|
|
1284
1293
|
// The list isn't ordered, but we keep the first move at the head
|
|
@@ -1301,11 +1310,13 @@ class MergeTree {
|
|
|
1301
1310
|
segment.movedSeq = seq;
|
|
1302
1311
|
segment.localMovedSeq = localSeq;
|
|
1303
1312
|
segment.movedSeqs = [seq];
|
|
1304
|
-
|
|
1313
|
+
if (!(0, mergeTreeNodes_js_1.toRemovalInfo)(segment)) {
|
|
1314
|
+
movedSegments.push({ segment });
|
|
1315
|
+
}
|
|
1305
1316
|
}
|
|
1306
1317
|
// Save segment so can assign moved sequence number when acked by server
|
|
1307
1318
|
if (this.collabWindow.collaborating) {
|
|
1308
|
-
if (segment.movedSeq ===
|
|
1319
|
+
if (segment.movedSeq === constants_js_1.UnassignedSequenceNumber &&
|
|
1309
1320
|
clientId === this.collabWindow.clientId) {
|
|
1310
1321
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq);
|
|
1311
1322
|
}
|
|
@@ -1326,12 +1337,12 @@ class MergeTree {
|
|
|
1326
1337
|
}
|
|
1327
1338
|
return true;
|
|
1328
1339
|
};
|
|
1329
|
-
this.nodeMap(refSeq, clientId, markMoved, undefined, afterMarkMoved, start, end, undefined, seq !==
|
|
1340
|
+
this.nodeMap(refSeq, clientId, markMoved, undefined, afterMarkMoved, start, end, undefined, seq !== constants_js_1.UnassignedSequenceNumber ? seq : undefined);
|
|
1330
1341
|
this.slideAckedRemovedSegmentReferences(localOverlapWithRefs);
|
|
1331
1342
|
// opArgs == undefined => test code
|
|
1332
1343
|
if (movedSegments.length > 0) {
|
|
1333
1344
|
this.mergeTreeDeltaCallback?.(opArgs, {
|
|
1334
|
-
operation:
|
|
1345
|
+
operation: ops_js_1.MergeTreeDeltaType.OBLITERATE,
|
|
1335
1346
|
deltaSegments: movedSegments,
|
|
1336
1347
|
});
|
|
1337
1348
|
}
|
|
@@ -1344,9 +1355,9 @@ class MergeTree {
|
|
|
1344
1355
|
if (!this.collabWindow.collaborating || clientId !== this.collabWindow.clientId) {
|
|
1345
1356
|
this.slideAckedRemovedSegmentReferences(movedSegments.map(({ segment }) => segment));
|
|
1346
1357
|
}
|
|
1347
|
-
if (this.collabWindow.collaborating && seq !==
|
|
1358
|
+
if (this.collabWindow.collaborating && seq !== constants_js_1.UnassignedSequenceNumber) {
|
|
1348
1359
|
if (MergeTree.options.zamboniSegments) {
|
|
1349
|
-
(0,
|
|
1360
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
1350
1361
|
}
|
|
1351
1362
|
}
|
|
1352
1363
|
}
|
|
@@ -1358,12 +1369,12 @@ class MergeTree {
|
|
|
1358
1369
|
let segmentGroup;
|
|
1359
1370
|
const removedSegments = [];
|
|
1360
1371
|
const localOverlapWithRefs = [];
|
|
1361
|
-
const localSeq = seq ===
|
|
1372
|
+
const localSeq = seq === constants_js_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
1362
1373
|
const markRemoved = (segment, pos, _start, _end) => {
|
|
1363
|
-
const existingRemovalInfo = (0,
|
|
1374
|
+
const existingRemovalInfo = (0, mergeTreeNodes_js_1.toRemovalInfo)(segment);
|
|
1364
1375
|
if (existingRemovalInfo !== undefined) {
|
|
1365
1376
|
_overwrite = true;
|
|
1366
|
-
if (existingRemovalInfo.removedSeq ===
|
|
1377
|
+
if (existingRemovalInfo.removedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
1367
1378
|
// we removed this locally, but someone else removed it first
|
|
1368
1379
|
// so put them at the head of the list
|
|
1369
1380
|
// The list isn't ordered, but we keep the first removal at the head
|
|
@@ -1383,11 +1394,13 @@ class MergeTree {
|
|
|
1383
1394
|
segment.removedClientIds = [clientId];
|
|
1384
1395
|
segment.removedSeq = seq;
|
|
1385
1396
|
segment.localRemovedSeq = localSeq;
|
|
1386
|
-
|
|
1397
|
+
if (!(0, mergeTreeNodes_js_1.toMoveInfo)(segment)) {
|
|
1398
|
+
removedSegments.push({ segment });
|
|
1399
|
+
}
|
|
1387
1400
|
}
|
|
1388
1401
|
// Save segment so we can assign removed sequence number when acked by server
|
|
1389
1402
|
if (this.collabWindow.collaborating) {
|
|
1390
|
-
if (segment.removedSeq ===
|
|
1403
|
+
if (segment.removedSeq === constants_js_1.UnassignedSequenceNumber &&
|
|
1391
1404
|
clientId === this.collabWindow.clientId) {
|
|
1392
1405
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq);
|
|
1393
1406
|
}
|
|
@@ -1415,7 +1428,7 @@ class MergeTree {
|
|
|
1415
1428
|
// opArgs == undefined => test code
|
|
1416
1429
|
if (removedSegments.length > 0) {
|
|
1417
1430
|
this.mergeTreeDeltaCallback?.(opArgs, {
|
|
1418
|
-
operation:
|
|
1431
|
+
operation: ops_js_1.MergeTreeDeltaType.REMOVE,
|
|
1419
1432
|
deltaSegments: removedSegments,
|
|
1420
1433
|
});
|
|
1421
1434
|
}
|
|
@@ -1425,9 +1438,9 @@ class MergeTree {
|
|
|
1425
1438
|
if (!this.collabWindow.collaborating || clientId !== this.collabWindow.clientId) {
|
|
1426
1439
|
this.slideAckedRemovedSegmentReferences(removedSegments.map(({ segment }) => segment));
|
|
1427
1440
|
}
|
|
1428
|
-
if (this.collabWindow.collaborating && seq !==
|
|
1441
|
+
if (this.collabWindow.collaborating && seq !== constants_js_1.UnassignedSequenceNumber) {
|
|
1429
1442
|
if (MergeTree.options.zamboniSegments) {
|
|
1430
|
-
(0,
|
|
1443
|
+
(0, zamboni_js_1.zamboniSegments)(this);
|
|
1431
1444
|
}
|
|
1432
1445
|
}
|
|
1433
1446
|
}
|
|
@@ -1436,7 +1449,7 @@ class MergeTree {
|
|
|
1436
1449
|
*/
|
|
1437
1450
|
// eslint-disable-next-line import/no-deprecated
|
|
1438
1451
|
rollback(op, localOpMetadata) {
|
|
1439
|
-
if (op.type ===
|
|
1452
|
+
if (op.type === ops_js_1.MergeTreeDeltaType.REMOVE) {
|
|
1440
1453
|
const pendingSegmentGroup = this.pendingSegments.pop?.()?.data;
|
|
1441
1454
|
if (pendingSegmentGroup === undefined || pendingSegmentGroup !== localOpMetadata) {
|
|
1442
1455
|
throw new Error("Rollback op doesn't match last edit");
|
|
@@ -1451,21 +1464,21 @@ class MergeTree {
|
|
|
1451
1464
|
segment.localRemovedSeq = undefined;
|
|
1452
1465
|
// Note: optional chaining short-circuits:
|
|
1453
1466
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining#short-circuiting
|
|
1454
|
-
this.mergeTreeDeltaCallback?.({ op: (0,
|
|
1455
|
-
operation:
|
|
1467
|
+
this.mergeTreeDeltaCallback?.({ op: (0, opBuilder_js_1.createInsertSegmentOp)(this.findRollbackPosition(segment), segment) }, {
|
|
1468
|
+
operation: ops_js_1.MergeTreeDeltaType.INSERT,
|
|
1456
1469
|
deltaSegments: [{ segment }],
|
|
1457
1470
|
});
|
|
1458
1471
|
for (let updateNode = segment.parent; updateNode !== undefined; updateNode = updateNode.parent) {
|
|
1459
|
-
this.blockUpdateLength(updateNode,
|
|
1472
|
+
this.blockUpdateLength(updateNode, constants_js_1.UnassignedSequenceNumber, this.collabWindow.clientId);
|
|
1460
1473
|
}
|
|
1461
1474
|
});
|
|
1462
1475
|
}
|
|
1463
|
-
else if (op.type ===
|
|
1464
|
-
op.type ===
|
|
1476
|
+
else if (op.type === ops_js_1.MergeTreeDeltaType.INSERT ||
|
|
1477
|
+
op.type === ops_js_1.MergeTreeDeltaType.ANNOTATE) {
|
|
1465
1478
|
const pendingSegmentGroup = this.pendingSegments.pop?.()?.data;
|
|
1466
1479
|
if (pendingSegmentGroup === undefined ||
|
|
1467
1480
|
pendingSegmentGroup !== localOpMetadata ||
|
|
1468
|
-
(op.type ===
|
|
1481
|
+
(op.type === ops_js_1.MergeTreeDeltaType.ANNOTATE && !pendingSegmentGroup.previousProps)) {
|
|
1469
1482
|
throw new Error("Rollback op doesn't match last edit");
|
|
1470
1483
|
}
|
|
1471
1484
|
let i = 0;
|
|
@@ -1473,16 +1486,16 @@ class MergeTree {
|
|
|
1473
1486
|
const segmentSegmentGroup = segment.segmentGroups.pop?.();
|
|
1474
1487
|
(0, core_utils_1.assert)(segmentSegmentGroup === pendingSegmentGroup, 0x3ef /* Unexpected segmentGroup in segment */);
|
|
1475
1488
|
const start = this.findRollbackPosition(segment);
|
|
1476
|
-
if (op.type ===
|
|
1477
|
-
segment.seq =
|
|
1489
|
+
if (op.type === ops_js_1.MergeTreeDeltaType.INSERT) {
|
|
1490
|
+
segment.seq = constants_js_1.UniversalSequenceNumber;
|
|
1478
1491
|
segment.localSeq = undefined;
|
|
1479
|
-
const removeOp = (0,
|
|
1480
|
-
this.markRangeRemoved(start, start + segment.cachedLength,
|
|
1492
|
+
const removeOp = (0, opBuilder_js_1.createRemoveRangeOp)(start, start + segment.cachedLength);
|
|
1493
|
+
this.markRangeRemoved(start, start + segment.cachedLength, constants_js_1.UniversalSequenceNumber, this.collabWindow.clientId, constants_js_1.UniversalSequenceNumber, false, { op: removeOp });
|
|
1481
1494
|
} /* op.type === MergeTreeDeltaType.ANNOTATE */
|
|
1482
1495
|
else {
|
|
1483
1496
|
const props = pendingSegmentGroup.previousProps[i];
|
|
1484
|
-
const annotateOp = (0,
|
|
1485
|
-
this.annotateRange(start, start + segment.cachedLength, props,
|
|
1497
|
+
const annotateOp = (0, opBuilder_js_1.createAnnotateRangeOp)(start, start + segment.cachedLength, props);
|
|
1498
|
+
this.annotateRange(start, start + segment.cachedLength, props, constants_js_1.UniversalSequenceNumber, this.collabWindow.clientId, constants_js_1.UniversalSequenceNumber, { op: annotateOp }, segmentPropertiesManager_js_1.PropertiesRollback.Rollback);
|
|
1486
1499
|
i++;
|
|
1487
1500
|
}
|
|
1488
1501
|
}
|
|
@@ -1496,7 +1509,7 @@ class MergeTree {
|
|
|
1496
1509
|
*/
|
|
1497
1510
|
findRollbackPosition(segment) {
|
|
1498
1511
|
let segmentPosition = 0;
|
|
1499
|
-
(0,
|
|
1512
|
+
(0, mergeTreeNodeWalk_js_1.walkAllChildSegments)(this.root, (seg) => {
|
|
1500
1513
|
// If we've found the desired segment, terminate the walk and return 'segmentPosition'.
|
|
1501
1514
|
if (seg === segment) {
|
|
1502
1515
|
return false;
|
|
@@ -1513,7 +1526,7 @@ class MergeTree {
|
|
|
1513
1526
|
this.blockUpdate(node);
|
|
1514
1527
|
if (this.collabWindow.collaborating) {
|
|
1515
1528
|
this.localPartialsComputed = false;
|
|
1516
|
-
node.partialLengths =
|
|
1529
|
+
node.partialLengths = partialLengths_js_1.PartialSequenceLengths.combine(node, this.collabWindow, recur);
|
|
1517
1530
|
}
|
|
1518
1531
|
}
|
|
1519
1532
|
removeLocalReferencePosition(lref) {
|
|
@@ -1524,7 +1537,7 @@ class MergeTree {
|
|
|
1524
1537
|
if (_segment !== "start" &&
|
|
1525
1538
|
_segment !== "end" &&
|
|
1526
1539
|
isRemovedAndAckedOrMovedAndAcked(_segment) &&
|
|
1527
|
-
!(0,
|
|
1540
|
+
!(0, referencePositions_js_1.refTypeIncludesFlag)(refType, ops_js_1.ReferenceType.SlideOnRemove | ops_js_1.ReferenceType.Transient) &&
|
|
1528
1541
|
_segment.endpointType === undefined) {
|
|
1529
1542
|
throw new telemetry_utils_1.UsageError("Can only create SlideOnRemove or Transient local reference position on a removed or obliterated segment");
|
|
1530
1543
|
}
|
|
@@ -1538,8 +1551,7 @@ class MergeTree {
|
|
|
1538
1551
|
else {
|
|
1539
1552
|
segment = _segment;
|
|
1540
1553
|
}
|
|
1541
|
-
const localRefs =
|
|
1542
|
-
segment.localRefs = localRefs;
|
|
1554
|
+
const localRefs = localReference_js_1.LocalReferenceCollection.setOrGet(segment);
|
|
1543
1555
|
const segRef = localRefs.createLocalRef(offset, refType, properties, slidingPreference, canSlideToEndpoint);
|
|
1544
1556
|
return segRef;
|
|
1545
1557
|
}
|
|
@@ -1645,7 +1657,7 @@ class MergeTree {
|
|
|
1645
1657
|
* it can fix up its local state to align with what would be expected of the op it resubmits.
|
|
1646
1658
|
*/
|
|
1647
1659
|
normalizeSegmentsOnRebase() {
|
|
1648
|
-
let currentRangeToNormalize = new
|
|
1660
|
+
let currentRangeToNormalize = new index_js_1.DoublyLinkedList();
|
|
1649
1661
|
let rangeContainsLocalSegs = false;
|
|
1650
1662
|
let rangeContainsRemoteRemovedSegs = false;
|
|
1651
1663
|
const normalize = () => {
|
|
@@ -1655,19 +1667,19 @@ class MergeTree {
|
|
|
1655
1667
|
this.normalizeAdjacentSegments(currentRangeToNormalize);
|
|
1656
1668
|
}
|
|
1657
1669
|
};
|
|
1658
|
-
(0,
|
|
1659
|
-
if (isRemoved(seg) || seg.seq ===
|
|
1670
|
+
(0, mergeTreeNodeWalk_js_1.walkAllChildSegments)(this.root, (seg) => {
|
|
1671
|
+
if (isRemoved(seg) || seg.seq === constants_js_1.UnassignedSequenceNumber) {
|
|
1660
1672
|
if (isRemovedAndAcked(seg)) {
|
|
1661
1673
|
rangeContainsRemoteRemovedSegs = true;
|
|
1662
1674
|
}
|
|
1663
|
-
if (seg.seq ===
|
|
1675
|
+
if (seg.seq === constants_js_1.UnassignedSequenceNumber) {
|
|
1664
1676
|
rangeContainsLocalSegs = true;
|
|
1665
1677
|
}
|
|
1666
1678
|
currentRangeToNormalize.push(seg);
|
|
1667
1679
|
}
|
|
1668
1680
|
else {
|
|
1669
1681
|
normalize();
|
|
1670
|
-
currentRangeToNormalize = new
|
|
1682
|
+
currentRangeToNormalize = new index_js_1.DoublyLinkedList();
|
|
1671
1683
|
rangeContainsLocalSegs = false;
|
|
1672
1684
|
rangeContainsRemoteRemovedSegs = false;
|
|
1673
1685
|
}
|
|
@@ -1678,14 +1690,14 @@ class MergeTree {
|
|
|
1678
1690
|
addNodeReferences(node, rightmostTiles, leftmostTiles) {
|
|
1679
1691
|
if (node.isLeaf()) {
|
|
1680
1692
|
const segment = node;
|
|
1681
|
-
if ((this.localNetLength(segment) ?? 0) > 0 &&
|
|
1693
|
+
if ((this.localNetLength(segment) ?? 0) > 0 && mergeTreeNodes_js_1.Marker.is(segment)) {
|
|
1682
1694
|
const markerId = segment.getId();
|
|
1683
1695
|
// Also in insertMarker but need for reload segs case
|
|
1684
1696
|
// can add option for this only from reload segs
|
|
1685
1697
|
if (markerId) {
|
|
1686
1698
|
this.idToMarker.set(markerId, segment);
|
|
1687
1699
|
}
|
|
1688
|
-
if ((0,
|
|
1700
|
+
if ((0, referencePositions_js_1.refTypeIncludesFlag)(segment, ops_js_1.ReferenceType.Tile)) {
|
|
1689
1701
|
addTile(segment, rightmostTiles);
|
|
1690
1702
|
addTileIfNotPresent(segment, leftmostTiles);
|
|
1691
1703
|
}
|
|
@@ -1694,9 +1706,9 @@ class MergeTree {
|
|
|
1694
1706
|
else {
|
|
1695
1707
|
const block = node;
|
|
1696
1708
|
// eslint-disable-next-line import/no-deprecated
|
|
1697
|
-
(0,
|
|
1709
|
+
(0, properties_js_1.extend)(rightmostTiles, block.rightmostTiles);
|
|
1698
1710
|
// eslint-disable-next-line import/no-deprecated
|
|
1699
|
-
(0,
|
|
1711
|
+
(0, properties_js_1.extendIfUndefined)(leftmostTiles, block.leftmostTiles);
|
|
1700
1712
|
}
|
|
1701
1713
|
}
|
|
1702
1714
|
blockUpdate(block) {
|
|
@@ -1704,9 +1716,9 @@ class MergeTree {
|
|
|
1704
1716
|
const hierBlock = block.hierBlock();
|
|
1705
1717
|
if (hierBlock) {
|
|
1706
1718
|
// eslint-disable-next-line import/no-deprecated
|
|
1707
|
-
hierBlock.rightmostTiles = (0,
|
|
1719
|
+
hierBlock.rightmostTiles = (0, properties_js_1.createMap)();
|
|
1708
1720
|
// eslint-disable-next-line import/no-deprecated
|
|
1709
|
-
hierBlock.leftmostTiles = (0,
|
|
1721
|
+
hierBlock.leftmostTiles = (0, properties_js_1.createMap)();
|
|
1710
1722
|
}
|
|
1711
1723
|
for (let i = 0; i < block.childCount; i++) {
|
|
1712
1724
|
const child = block.children[i];
|
|
@@ -1737,17 +1749,17 @@ class MergeTree {
|
|
|
1737
1749
|
this.blockUpdate(node);
|
|
1738
1750
|
this.localPartialsComputed = false;
|
|
1739
1751
|
if (this.collabWindow.collaborating &&
|
|
1740
|
-
seq !==
|
|
1741
|
-
seq !==
|
|
1752
|
+
seq !== constants_js_1.UnassignedSequenceNumber &&
|
|
1753
|
+
seq !== constants_js_1.TreeMaintenanceSequenceNumber) {
|
|
1742
1754
|
if (node.partialLengths !== undefined &&
|
|
1743
1755
|
MergeTree.options.incrementalUpdate &&
|
|
1744
|
-
clientId !==
|
|
1756
|
+
clientId !== constants_js_1.NonCollabClient) {
|
|
1745
1757
|
node.partialLengths.update(node, seq, clientId, this.collabWindow);
|
|
1746
1758
|
}
|
|
1747
1759
|
else {
|
|
1748
|
-
node.partialLengths =
|
|
1760
|
+
node.partialLengths = partialLengths_js_1.PartialSequenceLengths.combine(node, this.collabWindow);
|
|
1749
1761
|
}
|
|
1750
|
-
|
|
1762
|
+
partialLengths_js_1.PartialSequenceLengths.options.verifyExpected?.(this, node, seq, clientId);
|
|
1751
1763
|
}
|
|
1752
1764
|
}
|
|
1753
1765
|
/**
|
|
@@ -1797,30 +1809,30 @@ class MergeTree {
|
|
|
1797
1809
|
return;
|
|
1798
1810
|
}
|
|
1799
1811
|
let pos = 0;
|
|
1800
|
-
(0,
|
|
1812
|
+
(0, mergeTreeNodeWalk_js_1.depthFirstNodeWalk)(this.root, this.root.children[0], (node) => {
|
|
1801
1813
|
if (endPos <= pos) {
|
|
1802
|
-
return
|
|
1814
|
+
return mergeTreeNodeWalk_js_1.NodeAction.Exit;
|
|
1803
1815
|
}
|
|
1804
1816
|
const len = this.nodeLength(node, visibilitySeq, clientId, localSeq);
|
|
1805
1817
|
const lenAtRefSeq = (visibilitySeq === refSeq
|
|
1806
1818
|
? len
|
|
1807
1819
|
: this.nodeLength(node, refSeq, clientId, localSeq)) ?? 0;
|
|
1808
1820
|
const isUnackedAndInObliterate = visibilitySeq !== refSeq &&
|
|
1809
|
-
(!node.isLeaf() || node.seq ===
|
|
1821
|
+
(!node.isLeaf() || node.seq === constants_js_1.UnassignedSequenceNumber);
|
|
1810
1822
|
if ((len === undefined && lenAtRefSeq === 0) ||
|
|
1811
1823
|
(len === 0 && !isUnackedAndInObliterate && lenAtRefSeq === 0)) {
|
|
1812
|
-
return
|
|
1824
|
+
return mergeTreeNodeWalk_js_1.NodeAction.Skip;
|
|
1813
1825
|
}
|
|
1814
1826
|
const nextPos = pos + lenAtRefSeq;
|
|
1815
1827
|
// start is beyond the current node, so we can skip it
|
|
1816
1828
|
if (start >= nextPos) {
|
|
1817
1829
|
pos = nextPos;
|
|
1818
|
-
return
|
|
1830
|
+
return mergeTreeNodeWalk_js_1.NodeAction.Skip;
|
|
1819
1831
|
}
|
|
1820
1832
|
if (node.isLeaf()) {
|
|
1821
1833
|
if (leaf(node, pos, refSeq, clientId, start - pos, endPos - pos, accum) ===
|
|
1822
1834
|
false) {
|
|
1823
|
-
return
|
|
1835
|
+
return mergeTreeNodeWalk_js_1.NodeAction.Exit;
|
|
1824
1836
|
}
|
|
1825
1837
|
pos = nextPos;
|
|
1826
1838
|
}
|