@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
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AttributionKey } from '@fluidframework/runtime-definitions';
|
|
2
|
-
import { Heap } from '@fluidframework/core-utils';
|
|
3
2
|
import { IChannelStorageService } from '@fluidframework/datastore-definitions';
|
|
4
3
|
import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
|
|
5
4
|
import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
|
|
@@ -48,61 +47,6 @@ export declare interface AttributionPolicy {
|
|
|
48
47
|
serializer: IAttributionCollectionSerializer;
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
/**
|
|
52
|
-
* This is a special segment that is not bound or known by the merge tree itself,
|
|
53
|
-
* but the segment itself pretends to be a removed segment at an endpoint of the
|
|
54
|
-
* tree. It is removed so it appears as a undefined/0 length segment. This segment
|
|
55
|
-
* adds the capability to hold local references that have been detached from the
|
|
56
|
-
* real merge tree, and give the appearance that they exist at an endpoint of the
|
|
57
|
-
* tree.
|
|
58
|
-
*
|
|
59
|
-
* This is useful today in 2 cases: detached references and interval stickiness.
|
|
60
|
-
*
|
|
61
|
-
* In general, local references only become detached when the tree becomes empty
|
|
62
|
-
* and the EndOfTreeSegment allows us to gracefully handle that case by giving
|
|
63
|
-
* those references a place to live.
|
|
64
|
-
*
|
|
65
|
-
* In the case of interval stickiness, it is desirable to be able to refer to
|
|
66
|
-
* the position immediately after or before a segment, in order for the endpoint
|
|
67
|
-
* of an interval to be exclusive. This means that in order to support intervals
|
|
68
|
-
* that are exclusive and also include the first or last segment of the tree, it
|
|
69
|
-
* must be possible in some way to refer to a position before or after the tree
|
|
70
|
-
* respectively. The endpoint segments allow us to support such behavior.
|
|
71
|
-
*/
|
|
72
|
-
declare abstract class BaseEndpointSegment {
|
|
73
|
-
protected readonly mergeTree: MergeTree;
|
|
74
|
-
constructor(mergeTree: MergeTree);
|
|
75
|
-
removedSeq: number;
|
|
76
|
-
removedClientIds: number[];
|
|
77
|
-
attribution: undefined;
|
|
78
|
-
propertyManager: undefined;
|
|
79
|
-
localSeq: undefined;
|
|
80
|
-
localRemovedSeq: undefined;
|
|
81
|
-
properties: undefined;
|
|
82
|
-
seq: number;
|
|
83
|
-
clientId: number;
|
|
84
|
-
cachedLength: number;
|
|
85
|
-
isLeaf(): this is ISegment;
|
|
86
|
-
protected abstract endpointSegmentProps(): {
|
|
87
|
-
parent: IMergeBlock;
|
|
88
|
-
index: number;
|
|
89
|
-
depth: number;
|
|
90
|
-
};
|
|
91
|
-
get parent(): IMergeBlock;
|
|
92
|
-
get index(): number;
|
|
93
|
-
abstract get ordinal(): string;
|
|
94
|
-
localRefs?: LocalReferenceCollection;
|
|
95
|
-
get segmentGroups(): never;
|
|
96
|
-
get trackingCollection(): never;
|
|
97
|
-
addProperties: () => never;
|
|
98
|
-
clone: () => never;
|
|
99
|
-
canAppend: () => never;
|
|
100
|
-
append: () => never;
|
|
101
|
-
splitAt: () => never;
|
|
102
|
-
toJSONObject: () => never;
|
|
103
|
-
ack: () => never;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
50
|
/**
|
|
107
51
|
* @alpha
|
|
108
52
|
*/
|
|
@@ -149,11 +93,27 @@ export declare abstract class BaseSegment extends MergeNode implements ISegment
|
|
|
149
93
|
export declare class Client extends TypedEventEmitter<IClientEvents> {
|
|
150
94
|
readonly specToSegment: (spec: IJSONSegment) => ISegment;
|
|
151
95
|
readonly logger: ITelemetryLoggerExt;
|
|
96
|
+
private readonly getMinInFlightRefSeq;
|
|
152
97
|
longClientId: string | undefined;
|
|
153
98
|
private readonly _mergeTree;
|
|
154
99
|
private readonly clientNameToIds;
|
|
155
100
|
private readonly shortClientIdMap;
|
|
156
|
-
|
|
101
|
+
/**
|
|
102
|
+
* @param specToSegment - Rehydrates a segment from its JSON representation
|
|
103
|
+
* @param logger - Telemetry logger for diagnostics
|
|
104
|
+
* @param options - Options for this client. See {@link IMergeTreeOptions} for details.
|
|
105
|
+
* @param getMinInFlightRefSeq - Upon applying a message (see {@link Client.applyMsg}), client purges collab-window information which
|
|
106
|
+
* is no longer necessary based on that message's minimum sequence number.
|
|
107
|
+
* However, if the user of this client has in-flight messages which refer to positions in this Client,
|
|
108
|
+
* they may wish to preserve additional merge information.
|
|
109
|
+
* The effective minimum sequence number will be the minimum of the message's minimumSequenceNumber and the result of this function.
|
|
110
|
+
* If this function returns undefined, the message's minimumSequenceNumber will be used.
|
|
111
|
+
*
|
|
112
|
+
* @privateRemarks
|
|
113
|
+
* - Passing specToSegment would be unnecessary if Client were merged with SharedSegmentSequence
|
|
114
|
+
* - AB#6866 tracks a more unified approach to collab window min seq handling.
|
|
115
|
+
*/
|
|
116
|
+
constructor(specToSegment: (spec: IJSONSegment) => ISegment, logger: ITelemetryLoggerExt, options?: IMergeTreeOptions & PropertySet, getMinInFlightRefSeq?: () => number | undefined);
|
|
157
117
|
/**
|
|
158
118
|
* The merge tree maintains a queue of segment groups for each local operation.
|
|
159
119
|
* These segment groups track segments modified by an operation.
|
|
@@ -237,6 +197,11 @@ export declare class Client extends TypedEventEmitter<IClientEvents> {
|
|
|
237
197
|
removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;
|
|
238
198
|
/**
|
|
239
199
|
* Resolves a `ReferencePosition` into a character position using this client's perspective.
|
|
200
|
+
*
|
|
201
|
+
* Reference positions that point to a character that has been removed will
|
|
202
|
+
* always return the position of the nearest non-removed character, regardless
|
|
203
|
+
* of {@link ReferenceType}. To handle this case specifically, one may wish
|
|
204
|
+
* to look at the segment returned by {@link ReferencePosition.getSegment}.
|
|
240
205
|
*/
|
|
241
206
|
localReferencePositionToPosition(lref: ReferencePosition): number;
|
|
242
207
|
/**
|
|
@@ -301,9 +266,7 @@ export declare class Client extends TypedEventEmitter<IClientEvents> {
|
|
|
301
266
|
findReconnectionPosition(segment: ISegment, localSeq: number): number;
|
|
302
267
|
private resetPendingDeltaToOps;
|
|
303
268
|
private applyRemoteOp;
|
|
304
|
-
applyStashedOp(op:
|
|
305
|
-
applyStashedOp(op: IMergeTreeGroupMsg): SegmentGroup[];
|
|
306
|
-
applyStashedOp(op: IMergeTreeOp): SegmentGroup | SegmentGroup[];
|
|
269
|
+
applyStashedOp(op: IMergeTreeOp): void;
|
|
307
270
|
applyMsg(msg: ISequencedDocumentMessage, local?: boolean): void;
|
|
308
271
|
private updateSeqNumbers;
|
|
309
272
|
/**
|
|
@@ -554,57 +517,6 @@ export declare interface Dictionary<TKey, TData> {
|
|
|
554
517
|
*/
|
|
555
518
|
export declare function discardMergeTreeDeltaRevertible(revertibles: MergeTreeDeltaRevertible[]): void;
|
|
556
519
|
|
|
557
|
-
declare class DoublyLinkedList<T> implements Iterable<ListNode<T>>, Partial<ListNodeRange<T>>, Pick<ListNode<T>[], "pop" | "shift" | "length" | "includes"> {
|
|
558
|
-
find(predicate: (value: ListNode<T>, obj: DoublyLinkedList<T>) => unknown): ListNode<T> | undefined;
|
|
559
|
-
map<U>(callbackfn: (value: ListNode<T>) => U): Iterable<U>;
|
|
560
|
-
insertAfter(preceding: ListNode<T>, ...items: T[]): ListNodeRange<T>;
|
|
561
|
-
pop(): ListNode<T> | undefined;
|
|
562
|
-
push(...items: T[]): ListNodeRange<T>;
|
|
563
|
-
/**
|
|
564
|
-
* Remove and return the first element
|
|
565
|
-
*/
|
|
566
|
-
shift(): ListNode<T> | undefined;
|
|
567
|
-
/**
|
|
568
|
-
* Insert `items` at start of list
|
|
569
|
-
*/
|
|
570
|
-
unshift(...items: T[]): ListNodeRange<T>;
|
|
571
|
-
/**
|
|
572
|
-
* Remove nodes starting at `start` until either the `end` node is reached
|
|
573
|
-
* or until `count` nodes have been removed. Returns the removed nodes as
|
|
574
|
-
* a separate linked list
|
|
575
|
-
*/
|
|
576
|
-
splice(start: ListNode<T>, countOrEnd?: ListNode<T> | number): DoublyLinkedList<T>;
|
|
577
|
-
includes(node: ListNode<T> | undefined): node is ListNode<T>;
|
|
578
|
-
private _includes;
|
|
579
|
-
private _remove;
|
|
580
|
-
remove(node: ListNode<T> | undefined): ListNode<T> | undefined;
|
|
581
|
-
[Symbol.iterator](): IterableIterator<ListNode<T>>;
|
|
582
|
-
private _len;
|
|
583
|
-
private readonly headNode;
|
|
584
|
-
get length(): number;
|
|
585
|
-
get empty(): boolean;
|
|
586
|
-
get first(): ListNode<T> | undefined;
|
|
587
|
-
get last(): ListNode<T> | undefined;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
/**
|
|
591
|
-
* The position immediately after the end of the tree
|
|
592
|
-
*/
|
|
593
|
-
declare class EndOfTreeSegment extends BaseEndpointSegment implements ISegment, IRemovalInfo {
|
|
594
|
-
type: string;
|
|
595
|
-
readonly endpointType = "end";
|
|
596
|
-
/**
|
|
597
|
-
* this segment pretends to be a sibling of the last real segment.
|
|
598
|
-
* so compute the necessary properties to pretend to be that segment.
|
|
599
|
-
*/
|
|
600
|
-
protected endpointSegmentProps(): {
|
|
601
|
-
parent: IMergeBlock;
|
|
602
|
-
index: number;
|
|
603
|
-
depth: number;
|
|
604
|
-
};
|
|
605
|
-
get ordinal(): string;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
520
|
/**
|
|
609
521
|
* Returns the position to slide a reference to if a slide is required.
|
|
610
522
|
* @param segoff - The segment and offset to slide from
|
|
@@ -701,14 +613,6 @@ export declare interface IClientEvents {
|
|
|
701
613
|
(event: "maintenance", listener: (args: IMergeTreeMaintenanceCallbackArgs, deltaArgs: IMergeTreeDeltaOpArgs | undefined, target: IEventThisPlaceHolder) => void): void;
|
|
702
614
|
}
|
|
703
615
|
|
|
704
|
-
/**
|
|
705
|
-
* @internal
|
|
706
|
-
*/
|
|
707
|
-
declare interface IHierBlock extends IMergeBlock {
|
|
708
|
-
rightmostTiles: MapLike<ReferencePosition>;
|
|
709
|
-
leftmostTiles: MapLike<ReferencePosition>;
|
|
710
|
-
}
|
|
711
|
-
|
|
712
616
|
/**
|
|
713
617
|
* @alpha
|
|
714
618
|
*/
|
|
@@ -737,48 +641,6 @@ export declare interface IMarkerDef {
|
|
|
737
641
|
refType?: ReferenceType;
|
|
738
642
|
}
|
|
739
643
|
|
|
740
|
-
/**
|
|
741
|
-
* Internal (i.e. non-leaf) node in a merge tree.
|
|
742
|
-
* @internal
|
|
743
|
-
*/
|
|
744
|
-
declare interface IMergeBlock extends IMergeNodeCommon {
|
|
745
|
-
parent?: IMergeBlock;
|
|
746
|
-
needsScour?: boolean;
|
|
747
|
-
/**
|
|
748
|
-
* Number of direct children of this node
|
|
749
|
-
*/
|
|
750
|
-
childCount: number;
|
|
751
|
-
/**
|
|
752
|
-
* Array of child nodes.
|
|
753
|
-
*
|
|
754
|
-
* @remarks To avoid reallocation, this is always initialized to have maximum length as deemed by
|
|
755
|
-
* the merge tree's branching factor. Use `childCount` to determine how many children this node actually has.
|
|
756
|
-
*/
|
|
757
|
-
children: IMergeNode[];
|
|
758
|
-
/**
|
|
759
|
-
* Supports querying the total length of all descendants of this IMergeBlock from the perspective of any
|
|
760
|
-
* (clientId, seq) within the collab window.
|
|
761
|
-
*
|
|
762
|
-
* @remarks This is only optional for implementation reasons (internal nodes can be created/moved without
|
|
763
|
-
* immediately initializing the partial lengths). Aside from mid-update on tree operations, these lengths
|
|
764
|
-
* objects are always defined.
|
|
765
|
-
*/
|
|
766
|
-
partialLengths?: PartialSequenceLengths;
|
|
767
|
-
/**
|
|
768
|
-
* The length of the contents of the node.
|
|
769
|
-
*/
|
|
770
|
-
cachedLength: number | undefined;
|
|
771
|
-
hierBlock(): IHierBlock | undefined;
|
|
772
|
-
assignChild(child: IMergeNode, index: number, updateOrdinal?: boolean): void;
|
|
773
|
-
setOrdinal(child: IMergeNode, index: number): void;
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
declare type IMergeLeaf = ISegment & {
|
|
777
|
-
parent?: IMergeBlock;
|
|
778
|
-
};
|
|
779
|
-
|
|
780
|
-
declare type IMergeNode = IMergeBlock | IMergeLeaf;
|
|
781
|
-
|
|
782
644
|
/**
|
|
783
645
|
* Common properties for a node in a merge tree.
|
|
784
646
|
* @alpha
|
|
@@ -881,10 +743,6 @@ export declare interface IMergeTreeDeltaOpArgs {
|
|
|
881
743
|
* Delta op args are for an unacked local change
|
|
882
744
|
*/
|
|
883
745
|
readonly sequencedMessage?: ISequencedDocumentMessage;
|
|
884
|
-
/**
|
|
885
|
-
* If the operation is being applied as a stashed op, which means it may have been previously submitted, and therefore should not be resubmitted
|
|
886
|
-
*/
|
|
887
|
-
readonly stashed?: boolean;
|
|
888
746
|
}
|
|
889
747
|
|
|
890
748
|
/**
|
|
@@ -1079,11 +937,6 @@ export declare interface IMoveInfo {
|
|
|
1079
937
|
wasMovedOnInsert: boolean;
|
|
1080
938
|
}
|
|
1081
939
|
|
|
1082
|
-
declare interface IOverlapClient {
|
|
1083
|
-
clientId: number;
|
|
1084
|
-
seglen: number;
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
940
|
/**
|
|
1088
941
|
* @internal
|
|
1089
942
|
*/
|
|
@@ -1099,12 +952,6 @@ export declare interface IRBMatcher<TKey, TData> {
|
|
|
1099
952
|
matchNode(node: RBNode<TKey, TData> | undefined, key: TKey): boolean;
|
|
1100
953
|
}
|
|
1101
954
|
|
|
1102
|
-
declare interface IRefsAtOffset {
|
|
1103
|
-
before?: DoublyLinkedList<LocalReference>;
|
|
1104
|
-
at?: DoublyLinkedList<LocalReference>;
|
|
1105
|
-
after?: DoublyLinkedList<LocalReference>;
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
955
|
/**
|
|
1109
956
|
* A position specified relative to a segment.
|
|
1110
957
|
* @alpha
|
|
@@ -1148,10 +995,6 @@ export declare interface IRemovalInfo {
|
|
|
1148
995
|
removedClientIds: number[];
|
|
1149
996
|
}
|
|
1150
997
|
|
|
1151
|
-
declare interface IRootMergeBlock extends IMergeBlock {
|
|
1152
|
-
mergeTree?: MergeTree;
|
|
1153
|
-
}
|
|
1154
|
-
|
|
1155
998
|
/**
|
|
1156
999
|
* A segment representing a portion of the merge tree.
|
|
1157
1000
|
* Segments are leaf nodes of the merge tree and contain data.
|
|
@@ -1263,12 +1106,6 @@ export declare interface ISegmentAction<TClientData> {
|
|
|
1263
1106
|
(segment: ISegment, pos: number, refSeq: number, clientId: number, start: number, end: number, accum: TClientData): boolean;
|
|
1264
1107
|
}
|
|
1265
1108
|
|
|
1266
|
-
/**
|
|
1267
|
-
* someday we may split tree leaves from segments, but for now they are the same
|
|
1268
|
-
* this is just a convenience type that makes it clear that we need something that is both a segment and a leaf node
|
|
1269
|
-
*/
|
|
1270
|
-
declare type ISegmentLeaf = ISegment & IMergeLeaf;
|
|
1271
|
-
|
|
1272
1109
|
/**
|
|
1273
1110
|
* Tests whether x is a MergeTreeDeltaRevertible
|
|
1274
1111
|
* @internal
|
|
@@ -1293,59 +1130,23 @@ export declare interface KeyComparer<TKey> {
|
|
|
1293
1130
|
(a: TKey, b: TKey): number;
|
|
1294
1131
|
}
|
|
1295
1132
|
|
|
1296
|
-
declare interface ListNode<T> {
|
|
1297
|
-
readonly list: DoublyLinkedList<T> | undefined;
|
|
1298
|
-
readonly data: T;
|
|
1299
|
-
readonly next: ListNode<T> | undefined;
|
|
1300
|
-
readonly prev: ListNode<T> | undefined;
|
|
1301
|
-
}
|
|
1302
|
-
|
|
1303
|
-
declare interface ListNodeRange<T> {
|
|
1304
|
-
first: ListNode<T>;
|
|
1305
|
-
last: ListNode<T>;
|
|
1306
|
-
}
|
|
1307
|
-
|
|
1308
|
-
/**
|
|
1309
|
-
* @privateRemarks This should not be exported outside merge tree.
|
|
1310
|
-
* @internal
|
|
1311
|
-
*/
|
|
1312
|
-
declare class LocalReference implements LocalReferencePosition {
|
|
1313
|
-
refType: ReferenceType;
|
|
1314
|
-
readonly slidingPreference: SlidingPreference;
|
|
1315
|
-
readonly canSlideToEndpoint?: boolean | undefined;
|
|
1316
|
-
properties: PropertySet | undefined;
|
|
1317
|
-
private segment;
|
|
1318
|
-
private offset;
|
|
1319
|
-
private listNode;
|
|
1320
|
-
callbacks?: Partial<Record<"beforeSlide" | "afterSlide", (ref: LocalReferencePosition) => void>> | undefined;
|
|
1321
|
-
private _trackingCollection?;
|
|
1322
|
-
get trackingCollection(): TrackingGroupCollection;
|
|
1323
|
-
constructor(refType?: ReferenceType, properties?: PropertySet, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean | undefined);
|
|
1324
|
-
link(segment: ISegment | undefined, offset: number, listNode: ListNode<LocalReference> | undefined): void;
|
|
1325
|
-
isLeaf(): boolean;
|
|
1326
|
-
addProperties(newProps: PropertySet): void;
|
|
1327
|
-
getSegment(): ISegment | undefined;
|
|
1328
|
-
getOffset(): number;
|
|
1329
|
-
getListNode(): ListNode<LocalReference> | undefined;
|
|
1330
|
-
getProperties(): PropertySet | undefined;
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
1133
|
/**
|
|
1334
1134
|
* Represents a collection of {@link LocalReferencePosition}s associated with
|
|
1335
1135
|
* one segment in a merge-tree.
|
|
1336
1136
|
* Represents a collection of {@link LocalReferencePosition}s associated with one segment in a merge-tree.
|
|
1137
|
+
* @sealed
|
|
1138
|
+
*
|
|
1337
1139
|
* @alpha
|
|
1338
1140
|
*/
|
|
1339
1141
|
export declare class LocalReferenceCollection {
|
|
1340
1142
|
/** Segment this `LocalReferenceCollection` is associated to. */
|
|
1341
1143
|
private readonly segment;
|
|
1342
1144
|
static append(seg1: ISegment, seg2: ISegment): void;
|
|
1145
|
+
static setOrGet(segment: ISegment): LocalReferenceCollection;
|
|
1343
1146
|
private readonly refsByOffset;
|
|
1344
1147
|
private refCount;
|
|
1345
1148
|
/***/
|
|
1346
|
-
constructor(
|
|
1347
|
-
/** Segment this `LocalReferenceCollection` is associated to. */
|
|
1348
|
-
segment: ISegment, initialRefsByfOffset?: (IRefsAtOffset | undefined)[]);
|
|
1149
|
+
private constructor();
|
|
1349
1150
|
/**
|
|
1350
1151
|
* @remarks This method should only be called by mergeTree.
|
|
1351
1152
|
*/
|
|
@@ -1431,14 +1232,6 @@ export declare interface LocalReferencePosition extends ReferencePosition {
|
|
|
1431
1232
|
readonly canSlideToEndpoint?: boolean;
|
|
1432
1233
|
}
|
|
1433
1234
|
|
|
1434
|
-
/**
|
|
1435
|
-
* @internal
|
|
1436
|
-
*/
|
|
1437
|
-
declare interface LRUSegment {
|
|
1438
|
-
segment?: ISegmentLeaf;
|
|
1439
|
-
maxSeq: number;
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
1235
|
/**
|
|
1443
1236
|
* Any mapping from a string to values of type `T`
|
|
1444
1237
|
* @alpha
|
|
@@ -1488,19 +1281,6 @@ export declare function matchProperties(a: PropertySet | undefined, b: PropertyS
|
|
|
1488
1281
|
*/
|
|
1489
1282
|
export declare function maxReferencePosition<T extends ReferencePosition>(a: T, b: T): T;
|
|
1490
1283
|
|
|
1491
|
-
/**
|
|
1492
|
-
* @internal
|
|
1493
|
-
*/
|
|
1494
|
-
declare class MergeBlock extends MergeNode implements IMergeBlock {
|
|
1495
|
-
childCount: number;
|
|
1496
|
-
parent?: IMergeBlock;
|
|
1497
|
-
children: IMergeNode[];
|
|
1498
|
-
constructor(childCount: number);
|
|
1499
|
-
hierBlock(): IHierBlock | undefined;
|
|
1500
|
-
setOrdinal(child: IMergeNode, index: number): void;
|
|
1501
|
-
assignChild(child: IMergeNode, index: number, updateOrdinal?: boolean): void;
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
1284
|
/**
|
|
1505
1285
|
* @alpha
|
|
1506
1286
|
*/
|
|
@@ -1511,266 +1291,6 @@ export declare class MergeNode implements IMergeNodeCommon {
|
|
|
1511
1291
|
isLeaf(): this is ISegment;
|
|
1512
1292
|
}
|
|
1513
1293
|
|
|
1514
|
-
/**
|
|
1515
|
-
* @internal
|
|
1516
|
-
*/
|
|
1517
|
-
declare class MergeTree {
|
|
1518
|
-
options?: IMergeTreeOptions | undefined;
|
|
1519
|
-
static readonly options: {
|
|
1520
|
-
incrementalUpdate: boolean;
|
|
1521
|
-
insertAfterRemovedSegs: boolean;
|
|
1522
|
-
zamboniSegments: boolean;
|
|
1523
|
-
};
|
|
1524
|
-
private static readonly theUnfinishedNode;
|
|
1525
|
-
readonly collabWindow: CollaborationWindow;
|
|
1526
|
-
readonly pendingSegments: DoublyLinkedList<SegmentGroup>;
|
|
1527
|
-
readonly segmentsToScour: Heap<LRUSegment>;
|
|
1528
|
-
readonly attributionPolicy: AttributionPolicy | undefined;
|
|
1529
|
-
/**
|
|
1530
|
-
* Whether or not all blocks in the mergeTree currently have information about local partial lengths computed.
|
|
1531
|
-
* This information is only necessary on reconnect, and otherwise costly to bookkeep.
|
|
1532
|
-
* This field enables tracking whether partials need to be recomputed using localSeq information.
|
|
1533
|
-
*/
|
|
1534
|
-
private localPartialsComputed;
|
|
1535
|
-
private readonly idToMarker;
|
|
1536
|
-
mergeTreeDeltaCallback?: MergeTreeDeltaCallback;
|
|
1537
|
-
mergeTreeMaintenanceCallback?: MergeTreeMaintenanceCallback;
|
|
1538
|
-
/**
|
|
1539
|
-
* Array containing the sequence number of all move operations within the
|
|
1540
|
-
* collab window
|
|
1541
|
-
*
|
|
1542
|
-
* When a segment is inserted, we must traverse to the left and right of it
|
|
1543
|
-
* to determine whether the segment was inserted into an obliterated range.
|
|
1544
|
-
* By keeping track of all move seqs, we can significantly reduce the search
|
|
1545
|
-
* space we must traverse.
|
|
1546
|
-
*
|
|
1547
|
-
* Sequence numbers in `moveSeqs` are sorted to accelerate bookkeeping.
|
|
1548
|
-
*
|
|
1549
|
-
* See https://github.com/microsoft/FluidFramework/blob/main/packages/dds/merge-tree/docs/Obliterate.md#remote-perspective
|
|
1550
|
-
* for additional context
|
|
1551
|
-
*/
|
|
1552
|
-
private moveSeqs;
|
|
1553
|
-
/**
|
|
1554
|
-
* Similar to moveSeqs, but tracks local moves. These are not the move
|
|
1555
|
-
* operations within the collab window, but rather local moves that have
|
|
1556
|
-
* not been acked.
|
|
1557
|
-
*/
|
|
1558
|
-
private readonly localMoveSeqs;
|
|
1559
|
-
/**
|
|
1560
|
-
* Groups of segments moved by local moves/obliterates
|
|
1561
|
-
*
|
|
1562
|
-
* When a local obliterate is acked, we must also ack segments that were
|
|
1563
|
-
* concurrently obliterated on insert. We check this segment group to find
|
|
1564
|
-
* such segments
|
|
1565
|
-
*/
|
|
1566
|
-
private readonly locallyMovedSegments;
|
|
1567
|
-
constructor(options?: IMergeTreeOptions | undefined);
|
|
1568
|
-
private _root;
|
|
1569
|
-
get root(): IRootMergeBlock;
|
|
1570
|
-
set root(value: IRootMergeBlock);
|
|
1571
|
-
makeBlock(childCount: number): MergeBlock;
|
|
1572
|
-
/**
|
|
1573
|
-
* Compute the net length of this segment from a local perspective.
|
|
1574
|
-
* @param segment - Segment whose length to find
|
|
1575
|
-
* @param localSeq - localSeq at which to find the length of this segment. If not provided,
|
|
1576
|
-
* default is to consider the local client's current perspective. Only local sequence
|
|
1577
|
-
* numbers corresponding to un-acked operations give valid results.
|
|
1578
|
-
*/
|
|
1579
|
-
localNetLength(segment: ISegment, refSeq?: number, localSeq?: number): number | undefined;
|
|
1580
|
-
unlinkMarker(marker: Marker): void;
|
|
1581
|
-
private addNode;
|
|
1582
|
-
reloadFromSegments(segments: ISegment[]): void;
|
|
1583
|
-
startCollaboration(localClientId: number, minSeq: number, currentSeq: number): void;
|
|
1584
|
-
private addToLRUSet;
|
|
1585
|
-
getLength(refSeq: number, clientId: number): number;
|
|
1586
|
-
/**
|
|
1587
|
-
* Returns the current length of the MergeTree for the local client.
|
|
1588
|
-
*/
|
|
1589
|
-
get length(): number | undefined;
|
|
1590
|
-
getPosition(node: IMergeNode, refSeq: number, clientId: number, localSeq?: number): number;
|
|
1591
|
-
getContainingSegment<T extends ISegment>(pos: number, refSeq: number, clientId: number, localSeq?: number): {
|
|
1592
|
-
segment: T | undefined;
|
|
1593
|
-
offset: number | undefined;
|
|
1594
|
-
};
|
|
1595
|
-
/**
|
|
1596
|
-
* Slides or removes references from the provided list of segments.
|
|
1597
|
-
*
|
|
1598
|
-
* The order of the references is preserved for references of the same sliding
|
|
1599
|
-
* preference. Relative order between references that slide backward and those
|
|
1600
|
-
* that slide forward is not preserved, even in the case when they slide to
|
|
1601
|
-
* the same segment.
|
|
1602
|
-
*
|
|
1603
|
-
* @remarks
|
|
1604
|
-
*
|
|
1605
|
-
* 1. Preserving the order of the references is a useful property for reference-based undo/redo
|
|
1606
|
-
* (see revertibles.ts).
|
|
1607
|
-
*
|
|
1608
|
-
* 2. For use cases which necessitate eventual consistency across clients,
|
|
1609
|
-
* this method should only be called with segments for which the current client sequence number is
|
|
1610
|
-
* max(remove segment sequence number, add reference sequence number).
|
|
1611
|
-
* See `packages\dds\merge-tree\REFERENCEPOSITIONS.md`
|
|
1612
|
-
*
|
|
1613
|
-
* @param segments - An array of (not necessarily contiguous) segments with increasing ordinals.
|
|
1614
|
-
*/
|
|
1615
|
-
private slideAckedRemovedSegmentReferences;
|
|
1616
|
-
private blockLength;
|
|
1617
|
-
/**
|
|
1618
|
-
* Compute local partial length information
|
|
1619
|
-
*
|
|
1620
|
-
* Public only for use by internal tests
|
|
1621
|
-
*/
|
|
1622
|
-
computeLocalPartials(refSeq: number): void;
|
|
1623
|
-
private nodeLength;
|
|
1624
|
-
setMinSeq(minSeq: number): void;
|
|
1625
|
-
referencePositionToLocalPosition(refPos: ReferencePosition, refSeq?: number, clientId?: number): number;
|
|
1626
|
-
/**
|
|
1627
|
-
* Finds the nearest reference with ReferenceType.Tile to `startPos` in the direction dictated by `forwards`.
|
|
1628
|
-
* Uses depthFirstNodeWalk in addition to block-accelerated functionality. The search position will be included in
|
|
1629
|
-
* the nodes to walk, so searching on all positions, including the endpoints, can be considered inclusive.
|
|
1630
|
-
* Any out of bound search positions will return undefined, so in order to search the whole string, a forward
|
|
1631
|
-
* search can begin at 0, or a backward search can begin at length-1.
|
|
1632
|
-
*
|
|
1633
|
-
* @param startPos - Position at which to start the search
|
|
1634
|
-
* @param clientId - clientId dictating the perspective to search from
|
|
1635
|
-
* @param markerLabel - Label of the marker to search for
|
|
1636
|
-
* @param forwards - Whether the string should be searched in the forward or backward direction
|
|
1637
|
-
*/
|
|
1638
|
-
searchForMarker(startPos: number, clientId: number, markerLabel: string, forwards?: boolean): Marker | undefined;
|
|
1639
|
-
private updateRoot;
|
|
1640
|
-
/**
|
|
1641
|
-
* Assign sequence number to existing segment; update partial lengths to reflect the change
|
|
1642
|
-
* @param seq - sequence number given by server to pending segment
|
|
1643
|
-
*/
|
|
1644
|
-
ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs): void;
|
|
1645
|
-
private addToPendingList;
|
|
1646
|
-
getMarkerFromId(id: string): Marker | undefined;
|
|
1647
|
-
/**
|
|
1648
|
-
* Given a position specified relative to a marker id, lookup the marker
|
|
1649
|
-
* and convert the position to a character position.
|
|
1650
|
-
* @param relativePos - Id of marker (may be indirect) and whether position is before or after marker.
|
|
1651
|
-
* @param refseq - The reference sequence number at which to compute the position.
|
|
1652
|
-
* @param clientId - The client id with which to compute the position.
|
|
1653
|
-
*/
|
|
1654
|
-
posFromRelativePos(relativePos: IRelativePosition, refseq?: number, clientId?: number): number;
|
|
1655
|
-
insertSegments(pos: number, segments: ISegment[], refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs | undefined): void;
|
|
1656
|
-
/**
|
|
1657
|
-
* Resolves a remote client's position against the local sequence
|
|
1658
|
-
* and returns the remote client's position relative to the local
|
|
1659
|
-
* sequence. The client ref seq must be above the minimum sequence number
|
|
1660
|
-
* or the return value will be undefined.
|
|
1661
|
-
* Generally this method is used in conjunction with signals which provide
|
|
1662
|
-
* point in time values for the below parameters, and is useful for things
|
|
1663
|
-
* like displaying user position. It should not be used with persisted values
|
|
1664
|
-
* as persisted values will quickly become invalid as the remoteClientRefSeq
|
|
1665
|
-
* moves below the minimum sequence number
|
|
1666
|
-
* @param remoteClientPosition - The remote client's position to resolve
|
|
1667
|
-
* @param remoteClientRefSeq - The reference sequence number of the remote client
|
|
1668
|
-
* @param remoteClientId - The client id of the remote client
|
|
1669
|
-
*/
|
|
1670
|
-
resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: number): number | undefined;
|
|
1671
|
-
private blockInsert;
|
|
1672
|
-
private readonly splitLeafSegment;
|
|
1673
|
-
private ensureIntervalBoundary;
|
|
1674
|
-
private breakTie;
|
|
1675
|
-
private getSmallestSeqMoveOp;
|
|
1676
|
-
private insertingWalk;
|
|
1677
|
-
private split;
|
|
1678
|
-
nodeUpdateOrdinals(block: IMergeBlock): void;
|
|
1679
|
-
/**
|
|
1680
|
-
* Annotate a range with properties
|
|
1681
|
-
* @param start - The inclusive start position of the range to annotate
|
|
1682
|
-
* @param end - The exclusive end position of the range to annotate
|
|
1683
|
-
* @param props - The properties to annotate the range with
|
|
1684
|
-
* @param refSeq - The reference sequence number to use to apply the annotate
|
|
1685
|
-
* @param clientId - The id of the client making the annotate
|
|
1686
|
-
* @param seq - The sequence number of the annotate operation
|
|
1687
|
-
* @param opArgs - The op args for the annotate op. this is passed to the merge tree callback if there is one
|
|
1688
|
-
* @param rollback - Whether this is for a local rollback and what kind
|
|
1689
|
-
*/
|
|
1690
|
-
annotateRange(start: number, end: number, props: PropertySet, refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs, rollback?: PropertiesRollback): void;
|
|
1691
|
-
/**
|
|
1692
|
-
* @alpha
|
|
1693
|
-
*/
|
|
1694
|
-
obliterateRange(start: number, end: number, refSeq: number, clientId: number, seq: number, overwrite: boolean | undefined, opArgs: IMergeTreeDeltaOpArgs): void;
|
|
1695
|
-
markRangeRemoved(start: number, end: number, refSeq: number, clientId: number, seq: number, overwrite: boolean | undefined, opArgs: IMergeTreeDeltaOpArgs): void;
|
|
1696
|
-
/**
|
|
1697
|
-
* Revert an unacked local op
|
|
1698
|
-
*/
|
|
1699
|
-
rollback(op: IMergeTreeDeltaOp, localOpMetadata: SegmentGroup): void;
|
|
1700
|
-
/**
|
|
1701
|
-
* Walk the segments up to the current segment and calculate its position
|
|
1702
|
-
*/
|
|
1703
|
-
private findRollbackPosition;
|
|
1704
|
-
nodeUpdateLengthNewStructure(node: IMergeBlock, recur?: boolean): void;
|
|
1705
|
-
removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;
|
|
1706
|
-
startOfTree: StartOfTreeSegment;
|
|
1707
|
-
endOfTree: EndOfTreeSegment;
|
|
1708
|
-
createLocalReferencePosition(_segment: ISegmentLeaf | "start" | "end", offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
|
|
1709
|
-
private normalizeAdjacentSegments;
|
|
1710
|
-
/**
|
|
1711
|
-
* Normalizes the segments nearby `segmentGroup` to be ordered as they would if the op submitting `segmentGroup`
|
|
1712
|
-
* is rebased to the current sequence number.
|
|
1713
|
-
* This primarily affects the ordering of adjacent segments that were removed between the original submission of
|
|
1714
|
-
* the local ops and now.
|
|
1715
|
-
* Consider the following sequence of events:
|
|
1716
|
-
* Initial state: "hi my friend" (seq: 0)
|
|
1717
|
-
* - Client 1 inserts "good " to make "hi my good friend" (op1, refSeq: 0)
|
|
1718
|
-
* - Client 2 deletes "my " to make "hi friend" (op2, refSeq: 0)
|
|
1719
|
-
* - op2 is sequenced giving seq 1
|
|
1720
|
-
* - Client 1 disconnects and reconnects at seq: 1.
|
|
1721
|
-
*
|
|
1722
|
-
* At this point in time, client 1 will have segments ["hi ", Removed"my ", Local"good ", "friend"].
|
|
1723
|
-
* However, the rebased op that it submits will cause client 2 to have segments
|
|
1724
|
-
* ["hi ", Local"good ", Removed"my ", "friend"].
|
|
1725
|
-
*
|
|
1726
|
-
* The difference in ordering can be problematic for tie-breaking concurrently inserted segments in some scenarios.
|
|
1727
|
-
* Rather than incur extra work tie-breaking these scenarios for all clients, when client 1 rebases its operation,
|
|
1728
|
-
* it can fix up its local state to align with what would be expected of the op it resubmits.
|
|
1729
|
-
*/
|
|
1730
|
-
normalizeSegmentsOnRebase(): void;
|
|
1731
|
-
private addNodeReferences;
|
|
1732
|
-
private blockUpdate;
|
|
1733
|
-
blockUpdatePathLengths(startBlock: IMergeBlock | undefined, seq: number, clientId: number, newStructure?: boolean): void;
|
|
1734
|
-
private blockUpdateLength;
|
|
1735
|
-
/**
|
|
1736
|
-
* Map over all visible segments in a given range
|
|
1737
|
-
*
|
|
1738
|
-
* A segment is visible if its length is greater than 0
|
|
1739
|
-
*
|
|
1740
|
-
* See `this.nodeMap` for additional documentation
|
|
1741
|
-
*/
|
|
1742
|
-
mapRange<TClientData>(handler: ISegmentAction<TClientData>, refSeq: number, clientId: number, accum: TClientData, start?: number, end?: number, splitRange?: boolean, visibilitySeq?: number): void;
|
|
1743
|
-
/**
|
|
1744
|
-
* Map over all visible segments in a given range
|
|
1745
|
-
*
|
|
1746
|
-
* A segment is visible if its length is greater than 0
|
|
1747
|
-
*
|
|
1748
|
-
* @param refSeq - The sequence number used to determine the range (start
|
|
1749
|
-
* and end positions) of segments to iterate over.
|
|
1750
|
-
*
|
|
1751
|
-
* @param visibilitySeq - An additional sequence number to further configure
|
|
1752
|
-
* segment visibility during traversal. This is the same as refSeq, except
|
|
1753
|
-
* in the case of obliterate.
|
|
1754
|
-
*
|
|
1755
|
-
* In the case where `refSeq == visibilitySeq`, mapping is done on all
|
|
1756
|
-
* visible segments from `start` to `end`.
|
|
1757
|
-
*
|
|
1758
|
-
* If a segment is invisible at both `visibilitySeq` and `refSeq`, then it
|
|
1759
|
-
* will not be traversed and mapped. Otherwise, if the segment is visible at
|
|
1760
|
-
* either seq, it will be mapped.
|
|
1761
|
-
*
|
|
1762
|
-
* If a segment is only visible at `visibilitySeq`, it will still be mapped,
|
|
1763
|
-
* but it will not count as a segment within the range. That is, it will be
|
|
1764
|
-
* ignored for the purposes of tracking when traversal should end.
|
|
1765
|
-
*/
|
|
1766
|
-
private nodeMap;
|
|
1767
|
-
}
|
|
1768
|
-
|
|
1769
|
-
/**
|
|
1770
|
-
* @internal
|
|
1771
|
-
*/
|
|
1772
|
-
declare type MergeTreeDeltaCallback = (opArgs: IMergeTreeDeltaOpArgs, deltaArgs: IMergeTreeDeltaCallbackArgs) => void;
|
|
1773
|
-
|
|
1774
1294
|
/**
|
|
1775
1295
|
* @alpha
|
|
1776
1296
|
*/
|
|
@@ -1815,11 +1335,6 @@ export declare const MergeTreeDeltaType: {
|
|
|
1815
1335
|
*/
|
|
1816
1336
|
export declare type MergeTreeDeltaType = (typeof MergeTreeDeltaType)[keyof typeof MergeTreeDeltaType];
|
|
1817
1337
|
|
|
1818
|
-
/**
|
|
1819
|
-
* @internal
|
|
1820
|
-
*/
|
|
1821
|
-
declare type MergeTreeMaintenanceCallback = (MaintenanceArgs: IMergeTreeMaintenanceCallbackArgs, opArgs: IMergeTreeDeltaOpArgs | undefined) => void;
|
|
1822
|
-
|
|
1823
1338
|
/**
|
|
1824
1339
|
* Enum-like constant defining the types of "maintenance" events on a merge tree.
|
|
1825
1340
|
* Maintenance events correspond to structural segment changes or acks of pending segments.
|
|
@@ -1874,262 +1389,6 @@ export declare interface MergeTreeRevertibleDriver {
|
|
|
1874
1389
|
*/
|
|
1875
1390
|
export declare function minReferencePosition<T extends ReferencePosition>(a: T, b: T): T;
|
|
1876
1391
|
|
|
1877
|
-
/**
|
|
1878
|
-
* Tracks length information for a part of a MergeTree (block) at a given time (seq).
|
|
1879
|
-
* These objects are associated with internal nodes (i.e. blocks).
|
|
1880
|
-
*/
|
|
1881
|
-
declare interface PartialSequenceLength {
|
|
1882
|
-
/**
|
|
1883
|
-
* Sequence number
|
|
1884
|
-
*/
|
|
1885
|
-
seq: number;
|
|
1886
|
-
/**
|
|
1887
|
-
* The length of the associated block.
|
|
1888
|
-
*/
|
|
1889
|
-
len: number;
|
|
1890
|
-
/**
|
|
1891
|
-
* The delta between the current length of the associated block and its length at the previous seq number.
|
|
1892
|
-
*/
|
|
1893
|
-
seglen: number;
|
|
1894
|
-
/**
|
|
1895
|
-
* clientId for the client that submitted the op with sequence number `seq`.
|
|
1896
|
-
*/
|
|
1897
|
-
clientId?: number;
|
|
1898
|
-
/**
|
|
1899
|
-
* If this partial length obliterated remote segments, this is the length of
|
|
1900
|
-
* those segments
|
|
1901
|
-
*/
|
|
1902
|
-
remoteObliteratedLen?: number;
|
|
1903
|
-
/**
|
|
1904
|
-
* This field maps each client to the size of the intersection between segments deleted at this seq
|
|
1905
|
-
* and segments concurrently deleted by that client.
|
|
1906
|
-
*
|
|
1907
|
-
* For example, this PartialSequenceLength:
|
|
1908
|
-
* ```typescript
|
|
1909
|
-
* {
|
|
1910
|
-
* seq: 5,
|
|
1911
|
-
* len: 100,
|
|
1912
|
-
* seglen: -10,
|
|
1913
|
-
* clientId: 0,
|
|
1914
|
-
* overlapRemoveClients: <RedBlack tree with key-values expressed by>{
|
|
1915
|
-
* 1: { clientId: 1, seglen: -5 },
|
|
1916
|
-
* 3: { clientId: 3, seglen: -10 }
|
|
1917
|
-
* }
|
|
1918
|
-
* }
|
|
1919
|
-
* ```
|
|
1920
|
-
*
|
|
1921
|
-
* corresponds to an op submitted by client 0 which:
|
|
1922
|
-
* - reduces the length of this block by 10 (it may have deleted a single segment of length 10,
|
|
1923
|
-
* several segments totalling length 10, or even delete and add content for a total reduction of 10 length)
|
|
1924
|
-
* - was concurrent to one or more ops submitted by client 1 that also removed some of the same segments,
|
|
1925
|
-
* whose length totalled 5
|
|
1926
|
-
* - was concurrent to one or more ops submitted by client 3 that removed some of the same segments,
|
|
1927
|
-
* whose length totalled 10
|
|
1928
|
-
*/
|
|
1929
|
-
overlapRemoveClients?: RedBlackTree<number, IOverlapClient>;
|
|
1930
|
-
/**
|
|
1931
|
-
* This field is the same as `overlapRemoveClients`, except that it tracks
|
|
1932
|
-
* overlapping obliterates rather than removes.
|
|
1933
|
-
*/
|
|
1934
|
-
overlapObliterateClients?: RedBlackTree<number, IOverlapClient>;
|
|
1935
|
-
}
|
|
1936
|
-
|
|
1937
|
-
/**
|
|
1938
|
-
* Keeps track of partial sums of segment lengths for all sequence numbers in the current collaboration window.
|
|
1939
|
-
* Only used during active collaboration.
|
|
1940
|
-
*
|
|
1941
|
-
* This class is associated with an internal node (block) of a MergeTree. It efficiently answers queries of the form
|
|
1942
|
-
* "What is the length of `block` from the perspective of some particular seq and clientId?".
|
|
1943
|
-
*
|
|
1944
|
-
* It also supports incremental updating of state for newly-sequenced ops that don't affect the structure of the
|
|
1945
|
-
* MergeTree.
|
|
1946
|
-
*
|
|
1947
|
-
* To answer these queries, it pre-builds several lists which track the length of the block at a per-sequence-number
|
|
1948
|
-
* level. These lists are:
|
|
1949
|
-
*
|
|
1950
|
-
* 1. (`partialLengths`): Stores the total length of the block.
|
|
1951
|
-
* 2. (`clientSeqNumbers[clientId]`): Stores only the total lengths of segments submitted by `clientId`. [see footnote]
|
|
1952
|
-
*
|
|
1953
|
-
* The reason both lists are necessary is that resolving the length of the block from the perspective of
|
|
1954
|
-
* (clientId, refSeq) requires including both of the following types of segments:
|
|
1955
|
-
* 1. Segments sequenced before `refSeq`
|
|
1956
|
-
* 2. Segments submitted by `clientId`
|
|
1957
|
-
*
|
|
1958
|
-
* This is possible with the above bookkeeping, using:
|
|
1959
|
-
*
|
|
1960
|
-
* (length of the block at the minimum sequence number)
|
|
1961
|
-
* + (partialLengths total length at refSeq)
|
|
1962
|
-
* + (clientSeqNumbers total length at most recent op)
|
|
1963
|
-
* - (clientSeqNumbers total length at refSeq)
|
|
1964
|
-
*
|
|
1965
|
-
* where the subtraction avoids double-counting segments submitted by clientId sequenced within the collab window.
|
|
1966
|
-
*
|
|
1967
|
-
* To enable reconnect, if constructed with `computeLocalPartials === true` it also supports querying for the length of
|
|
1968
|
-
* the block from the perspective of the local client at a particular `refSeq` and `localSeq`. This computation is
|
|
1969
|
-
* similar to the above:
|
|
1970
|
-
*
|
|
1971
|
-
* (length of the block at the minimum sequence number)
|
|
1972
|
-
* + (partialLengths total length at refSeq)
|
|
1973
|
-
* + (unsequenced edits' total length submitted before localSeq)
|
|
1974
|
-
* - (overlapping remove of the unsequenced edits' total length at refSeq)
|
|
1975
|
-
*
|
|
1976
|
-
* This algorithm scales roughly linearly with number of editing clients and the size of the collab window.
|
|
1977
|
-
* (certain unlikely sequences of operations may introduce log factors on those variables)
|
|
1978
|
-
*
|
|
1979
|
-
* Note: there is some slight complication with clientSeqNumbers resulting from the possibility of different clients
|
|
1980
|
-
* concurrently removing the same segment. See the field's documentation for more details.
|
|
1981
|
-
*/
|
|
1982
|
-
declare class PartialSequenceLengths {
|
|
1983
|
-
/**
|
|
1984
|
-
* The minimumSequenceNumber as defined by the collab window used in the last call to `update`,
|
|
1985
|
-
* or if no such calls have been made, the one used on construction.
|
|
1986
|
-
*/
|
|
1987
|
-
minSeq: number;
|
|
1988
|
-
static options: PartialSequenceLengthsOptions;
|
|
1989
|
-
/**
|
|
1990
|
-
* Combine the partial lengths of block's children
|
|
1991
|
-
* @param block - an interior node. If `recur` is false, it is assumed that each interior node child of this block
|
|
1992
|
-
* has its partials up to date.
|
|
1993
|
-
* @param collabWindow - segment window of the segment tree containing `block`.
|
|
1994
|
-
* @param recur - whether to recursively compute partial lengths for internal children of `block`.
|
|
1995
|
-
* This incurs more work, but gives correct bookkeeping in the case that a descendant in the merge tree has been
|
|
1996
|
-
* modified without bubbling up the resulting partial length change to this block's partials.
|
|
1997
|
-
* @param computeLocalPartials - whether to compute partial length information about local unsequenced ops.
|
|
1998
|
-
* This enables querying for the length of the block at a given localSeq, but incurs extra work.
|
|
1999
|
-
* Local partial information doesn't support `update`.
|
|
2000
|
-
*/
|
|
2001
|
-
static combine(block: IMergeBlock, collabWindow: CollaborationWindow, recur?: boolean, computeLocalPartials?: boolean): PartialSequenceLengths;
|
|
2002
|
-
/**
|
|
2003
|
-
* @returns a PartialSequenceLengths structure which tracks only lengths of leaf children of the provided
|
|
2004
|
-
* IMergeBlock.
|
|
2005
|
-
*/
|
|
2006
|
-
private static fromLeaves;
|
|
2007
|
-
private static getOverlapClients;
|
|
2008
|
-
private static accumulateRemoveClientOverlap;
|
|
2009
|
-
private static accumulateMoveClientOverlap;
|
|
2010
|
-
/**
|
|
2011
|
-
* Coalesce overlapping move lengths for a partial length entry that already
|
|
2012
|
-
* exists
|
|
2013
|
-
*
|
|
2014
|
-
* @param segmentLen - Length of segment with overlapping moves
|
|
2015
|
-
* @param segment - Segment with overlapping moves
|
|
2016
|
-
* @param firstGte - Existing partial length entry
|
|
2017
|
-
* @param clientIds - Ids of clients that concurrently obliterated this segment
|
|
2018
|
-
*/
|
|
2019
|
-
static accumulateMoveOverlapForExisting(segmentLen: number, segment: ISegment, firstGte: PartialSequenceLength, clientIds: number[]): void;
|
|
2020
|
-
/**
|
|
2021
|
-
* @param obliterateOverlapLen - Length of segment with overlap
|
|
2022
|
-
* @param clientIds - Ids of clients that have concurrently obliterated this
|
|
2023
|
-
* segment
|
|
2024
|
-
*/
|
|
2025
|
-
private static getMoveOverlapForExisting;
|
|
2026
|
-
private static updatePartialsAfterInsertion;
|
|
2027
|
-
/**
|
|
2028
|
-
* Inserts length information about the insertion of `segment` into
|
|
2029
|
-
* `combinedPartialLengths.partialLengths`.
|
|
2030
|
-
*
|
|
2031
|
-
* Does not update the clientSeqNumbers field to account for this segment.
|
|
2032
|
-
*
|
|
2033
|
-
* If `removalInfo` or `moveInfo` are defined, this operation updates the
|
|
2034
|
-
* bookkeeping to account for the (re)moval of this segment at the (re)movedSeq
|
|
2035
|
-
* instead.
|
|
2036
|
-
*
|
|
2037
|
-
* When the insertion or (re)moval of the segment is un-acked and
|
|
2038
|
-
* `combinedPartialLengths` is meant to compute such records, this does the
|
|
2039
|
-
* analogous addition to the bookkeeping for the local segment in
|
|
2040
|
-
* `combinedPartialLengths.unsequencedRecords`.
|
|
2041
|
-
*/
|
|
2042
|
-
private static insertSegment;
|
|
2043
|
-
private static addSeq;
|
|
2044
|
-
/**
|
|
2045
|
-
* Length of the block this PartialSequenceLength corresponds to when viewed at `minSeq`.
|
|
2046
|
-
*/
|
|
2047
|
-
private minLength;
|
|
2048
|
-
/**
|
|
2049
|
-
* Total number of segments in the subtree rooted at the block this PartialSequenceLength corresponds to.
|
|
2050
|
-
*/
|
|
2051
|
-
private segmentCount;
|
|
2052
|
-
/**
|
|
2053
|
-
* List of PartialSequenceLength objects--ordered by increasing seq--giving length information about
|
|
2054
|
-
* the block associated with this PartialSequenceLengths object.
|
|
2055
|
-
*
|
|
2056
|
-
* `partialLengths[i].len` contains the length of this block considering only sequenced segments with
|
|
2057
|
-
* `sequenceNumber <= partialLengths[i].seq`.
|
|
2058
|
-
*/
|
|
2059
|
-
private readonly partialLengths;
|
|
2060
|
-
/**
|
|
2061
|
-
* clientSeqNumbers[clientId] is a list of partial lengths for sequenced ops which either:
|
|
2062
|
-
* - were submitted by `clientId`.
|
|
2063
|
-
* - deleted a range containing segments that were concurrently deleted by `clientId`
|
|
2064
|
-
*
|
|
2065
|
-
* The second case is referred to as the "overlapping delete" case. It is necessary to avoid double-counting
|
|
2066
|
-
* the removal of those segments in queries including clientId.
|
|
2067
|
-
*/
|
|
2068
|
-
private readonly clientSeqNumbers;
|
|
2069
|
-
/**
|
|
2070
|
-
* Contains information required to answer queries for the length of this segment from the perspective of
|
|
2071
|
-
* the local client but not including all local segments (i.e., `localSeq !== collabWindow.localSeq`).
|
|
2072
|
-
* This field is only computed if requested in the constructor (i.e. `computeLocalPartials === true`).
|
|
2073
|
-
*/
|
|
2074
|
-
private unsequencedRecords;
|
|
2075
|
-
constructor(
|
|
2076
|
-
/**
|
|
2077
|
-
* The minimumSequenceNumber as defined by the collab window used in the last call to `update`,
|
|
2078
|
-
* or if no such calls have been made, the one used on construction.
|
|
2079
|
-
*/
|
|
2080
|
-
minSeq: number, computeLocalPartials: boolean);
|
|
2081
|
-
update(node: IMergeBlock, seq: number, clientId: number, collabWindow: CollaborationWindow): void;
|
|
2082
|
-
/**
|
|
2083
|
-
* Returns the length of this block as viewed from the perspective of `clientId` at `refSeq`.
|
|
2084
|
-
* This is the total length of all segments sequenced at or before refSeq OR submitted by `clientId`.
|
|
2085
|
-
* If `clientId` is the local client, `localSeq` can also be provided. In that case, it is the total
|
|
2086
|
-
* length of all segments submitted at or before `refSeq` in addition to any local, unacked segments
|
|
2087
|
-
* with `segment.localSeq <= localSeq`.
|
|
2088
|
-
*
|
|
2089
|
-
* Note: the local case (where `localSeq !== undefined`) is only supported on a PartialSequenceLength object
|
|
2090
|
-
* constructed with `computeLocalPartials` set to true and not subsequently updated with `update`.
|
|
2091
|
-
*/
|
|
2092
|
-
getPartialLength(refSeq: number, clientId: number, localSeq?: number): number;
|
|
2093
|
-
/**
|
|
2094
|
-
* Computes the seglen for the double-counted removed overlap at (refSeq, localSeq). This logic is equivalent
|
|
2095
|
-
* to the following:
|
|
2096
|
-
*
|
|
2097
|
-
* ```typescript
|
|
2098
|
-
* let total = 0;
|
|
2099
|
-
* for (const partialLength of this.unsequencedRecords!.overlappingRemoves) {
|
|
2100
|
-
* if (partialLength.seq > refSeq) {
|
|
2101
|
-
* break;
|
|
2102
|
-
* }
|
|
2103
|
-
*
|
|
2104
|
-
* if (partialLength.localSeq <= localSeq) {
|
|
2105
|
-
* total += partialLength.seglen;
|
|
2106
|
-
* }
|
|
2107
|
-
* }
|
|
2108
|
-
*
|
|
2109
|
-
* return total;
|
|
2110
|
-
* ```
|
|
2111
|
-
*
|
|
2112
|
-
* Reconnect happens to only need to compute these lengths for two refSeq values: before and
|
|
2113
|
-
* after the rebase. Since these lists potentially scale with O(collab window * number of local edits)
|
|
2114
|
-
* and potentially need to be queried for each local op that gets rebased,
|
|
2115
|
-
* we cache the results for a given refSeq in `this.unsequencedRecords.cachedOverlappingByRefSeq` so
|
|
2116
|
-
* that they can be binary-searched the same way the usual partialLengths lists are.
|
|
2117
|
-
*/
|
|
2118
|
-
private computeOverlappingLocalRemoves;
|
|
2119
|
-
toString(glc?: (id: number) => string, indentCount?: number): string;
|
|
2120
|
-
private zamboni;
|
|
2121
|
-
private addClientSeqNumber;
|
|
2122
|
-
private addClientSeqNumberFromPartial;
|
|
2123
|
-
private cliLatestLEQ;
|
|
2124
|
-
private cliLatest;
|
|
2125
|
-
}
|
|
2126
|
-
|
|
2127
|
-
declare interface PartialSequenceLengthsOptions {
|
|
2128
|
-
verifier?: (partialLengths: PartialSequenceLengths) => void;
|
|
2129
|
-
verifyExpected?: (mergeTree: MergeTree, node: IMergeBlock, refSeq: number, clientId: number, localSeq?: number) => void;
|
|
2130
|
-
zamboni: boolean;
|
|
2131
|
-
}
|
|
2132
|
-
|
|
2133
1392
|
/**
|
|
2134
1393
|
* @alpha
|
|
2135
1394
|
*/
|
|
@@ -2425,7 +1684,7 @@ export declare function revertMergeTreeDeltaRevertibles(driver: MergeTreeReverti
|
|
|
2425
1684
|
* @alpha
|
|
2426
1685
|
*/
|
|
2427
1686
|
export declare interface SegmentGroup {
|
|
2428
|
-
segments:
|
|
1687
|
+
segments: ISegment[];
|
|
2429
1688
|
previousProps?: PropertySet[];
|
|
2430
1689
|
localSeq?: number;
|
|
2431
1690
|
refSeq: number;
|
|
@@ -2557,24 +1816,6 @@ export declare abstract class SortedSet<T, U extends string | number> {
|
|
|
2557
1816
|
};
|
|
2558
1817
|
}
|
|
2559
1818
|
|
|
2560
|
-
/**
|
|
2561
|
-
* The position immediately prior to the start of the tree
|
|
2562
|
-
*/
|
|
2563
|
-
declare class StartOfTreeSegment extends BaseEndpointSegment implements ISegment, IRemovalInfo {
|
|
2564
|
-
type: string;
|
|
2565
|
-
readonly endpointType = "start";
|
|
2566
|
-
/**
|
|
2567
|
-
* this segment pretends to be a sibling of the first real segment.
|
|
2568
|
-
* so compute the necessary properties to pretend to be that segment.
|
|
2569
|
-
*/
|
|
2570
|
-
protected endpointSegmentProps(): {
|
|
2571
|
-
parent: IMergeBlock;
|
|
2572
|
-
index: number;
|
|
2573
|
-
depth: number;
|
|
2574
|
-
};
|
|
2575
|
-
get ordinal(): string;
|
|
2576
|
-
}
|
|
2577
|
-
|
|
2578
1819
|
/**
|
|
2579
1820
|
* @alpha
|
|
2580
1821
|
*/
|