@fluidframework/merge-tree 2.0.0-internal.8.0.0 → 2.0.0-rc.1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +0 -6
- package/api-extractor-esm.json +17 -0
- package/api-extractor-lint.json +1 -10
- package/api-extractor.json +0 -4
- package/api-report/merge-tree.api.md +4 -9
- package/dist/client.d.ts +0 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +0 -7
- package/dist/client.js.map +1 -1
- package/dist/merge-tree-alpha.d.ts +27 -12
- package/dist/merge-tree-beta.d.ts +0 -16
- package/dist/merge-tree-public.d.ts +0 -16
- package/dist/merge-tree-untrimmed.d.ts +5 -29
- package/dist/mergeTree.d.ts +0 -17
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +0 -130
- package/dist/mergeTree.js.map +1 -1
- package/dist/ops.d.ts +1 -1
- package/dist/ops.js +1 -1
- package/dist/ops.js.map +1 -1
- package/dist/revertibles.d.ts +4 -4
- package/dist/revertibles.js +3 -3
- package/dist/revertibles.js.map +1 -1
- package/dist/test/Insertion.perf.spec.d.ts +6 -0
- package/dist/test/Insertion.perf.spec.d.ts.map +1 -0
- package/dist/test/Insertion.perf.spec.js +113 -0
- package/dist/test/Insertion.perf.spec.js.map +1 -0
- package/dist/test/PartialLengths.perf.spec.d.ts +6 -0
- package/dist/test/PartialLengths.perf.spec.d.ts.map +1 -0
- package/dist/test/PartialLengths.perf.spec.js +67 -0
- package/dist/test/PartialLengths.perf.spec.js.map +1 -0
- package/dist/test/Removal.perf.spec.d.ts +6 -0
- package/dist/test/Removal.perf.spec.d.ts.map +1 -0
- package/dist/test/Removal.perf.spec.js +166 -0
- package/dist/test/Removal.perf.spec.js.map +1 -0
- package/dist/test/Snapshot.perf.spec.d.ts +6 -0
- package/dist/test/Snapshot.perf.spec.d.ts.map +1 -0
- package/dist/test/Snapshot.perf.spec.js +33 -0
- package/dist/test/Snapshot.perf.spec.js.map +1 -0
- package/dist/test/attributionCollection.perf.spec.d.ts +6 -0
- package/dist/test/attributionCollection.perf.spec.d.ts.map +1 -0
- package/dist/test/attributionCollection.perf.spec.js +231 -0
- package/dist/test/attributionCollection.perf.spec.js.map +1 -0
- package/dist/test/attributionCollection.spec.d.ts +6 -0
- package/dist/test/attributionCollection.spec.d.ts.map +1 -0
- package/dist/test/attributionCollection.spec.js +486 -0
- package/dist/test/attributionCollection.spec.js.map +1 -0
- package/dist/test/attributionPolicy.spec.d.ts +6 -0
- package/dist/test/attributionPolicy.spec.d.ts.map +1 -0
- package/dist/test/attributionPolicy.spec.js +189 -0
- package/dist/test/attributionPolicy.spec.js.map +1 -0
- package/dist/test/beastTest.d.ts +54 -0
- package/dist/test/beastTest.d.ts.map +1 -0
- package/dist/test/beastTest.js +1333 -0
- package/dist/test/beastTest.js.map +1 -0
- package/dist/test/client.annotateMarker.spec.d.ts +6 -0
- package/dist/test/client.annotateMarker.spec.d.ts.map +1 -0
- package/dist/test/client.annotateMarker.spec.js +45 -0
- package/dist/test/client.annotateMarker.spec.js.map +1 -0
- package/dist/test/client.apis.d.ts +7 -0
- package/dist/test/client.apis.d.ts.map +1 -0
- package/dist/test/client.apis.js +72 -0
- package/dist/test/client.apis.js.map +1 -0
- package/dist/test/client.applyMsg.spec.d.ts +6 -0
- package/dist/test/client.applyMsg.spec.d.ts.map +1 -0
- package/dist/test/client.applyMsg.spec.js +500 -0
- package/dist/test/client.applyMsg.spec.js.map +1 -0
- package/dist/test/client.applyStashedOpFarm.spec.d.ts +12 -0
- package/dist/test/client.applyStashedOpFarm.spec.d.ts.map +1 -0
- package/dist/test/client.applyStashedOpFarm.spec.js +144 -0
- package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -0
- package/dist/test/client.attributionFarm.spec.d.ts +7 -0
- package/dist/test/client.attributionFarm.spec.d.ts.map +1 -0
- package/dist/test/client.attributionFarm.spec.js +96 -0
- package/dist/test/client.attributionFarm.spec.js.map +1 -0
- package/dist/test/client.conflictFarm.spec.d.ts +15 -0
- package/dist/test/client.conflictFarm.spec.d.ts.map +1 -0
- package/dist/test/client.conflictFarm.spec.js +88 -0
- package/dist/test/client.conflictFarm.spec.js.map +1 -0
- package/dist/test/client.getPosition.spec.d.ts +6 -0
- package/dist/test/client.getPosition.spec.d.ts.map +1 -0
- package/dist/test/client.getPosition.spec.js +54 -0
- package/dist/test/client.getPosition.spec.js.map +1 -0
- package/dist/test/client.localReference.spec.d.ts +6 -0
- package/dist/test/client.localReference.spec.d.ts.map +1 -0
- package/dist/test/client.localReference.spec.js +439 -0
- package/dist/test/client.localReference.spec.js.map +1 -0
- package/dist/test/client.localReferenceFarm.spec.d.ts +6 -0
- package/dist/test/client.localReferenceFarm.spec.d.ts.map +1 -0
- package/dist/test/client.localReferenceFarm.spec.js +88 -0
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -0
- package/dist/test/client.rebasePosition.spec.d.ts +6 -0
- package/dist/test/client.rebasePosition.spec.d.ts.map +1 -0
- package/dist/test/client.rebasePosition.spec.js +102 -0
- package/dist/test/client.rebasePosition.spec.js.map +1 -0
- package/dist/test/client.reconnectFarm.spec.d.ts +12 -0
- package/dist/test/client.reconnectFarm.spec.d.ts.map +1 -0
- package/dist/test/client.reconnectFarm.spec.js +91 -0
- package/dist/test/client.reconnectFarm.spec.js.map +1 -0
- package/dist/test/client.replay.spec.d.ts +6 -0
- package/dist/test/client.replay.spec.d.ts.map +1 -0
- package/dist/test/client.replay.spec.js +85 -0
- package/dist/test/client.replay.spec.js.map +1 -0
- package/dist/test/client.rollback.spec.d.ts +6 -0
- package/dist/test/client.rollback.spec.d.ts.map +1 -0
- package/dist/test/client.rollback.spec.js +453 -0
- package/dist/test/client.rollback.spec.js.map +1 -0
- package/dist/test/client.rollbackFarm.spec.d.ts +6 -0
- package/dist/test/client.rollbackFarm.spec.d.ts.map +1 -0
- package/dist/test/client.rollbackFarm.spec.js +48 -0
- package/dist/test/client.rollbackFarm.spec.js.map +1 -0
- package/dist/test/client.searchForMarker.spec.d.ts +6 -0
- package/dist/test/client.searchForMarker.spec.d.ts.map +1 -0
- package/dist/test/client.searchForMarker.spec.js +446 -0
- package/dist/test/client.searchForMarker.spec.js.map +1 -0
- package/dist/test/client.walkSegments.spec.d.ts +6 -0
- package/dist/test/client.walkSegments.spec.d.ts.map +1 -0
- package/dist/test/client.walkSegments.spec.js +54 -0
- package/dist/test/client.walkSegments.spec.js.map +1 -0
- package/dist/test/collections.list.spec.d.ts +6 -0
- package/dist/test/collections.list.spec.d.ts.map +1 -0
- package/dist/test/collections.list.spec.js +84 -0
- package/dist/test/collections.list.spec.js.map +1 -0
- package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts +6 -0
- package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts.map +1 -0
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js +35 -0
- package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -0
- package/dist/test/index.d.ts +13 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +88 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts +6 -0
- package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js +142 -0
- package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -0
- package/dist/test/mergeTree.annotate.spec.d.ts +6 -0
- package/dist/test/mergeTree.annotate.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.annotate.spec.js +448 -0
- package/dist/test/mergeTree.annotate.spec.js.map +1 -0
- package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts +6 -0
- package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.insert.deltaCallback.spec.js +126 -0
- package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -0
- package/dist/test/mergeTree.insertingWalk.spec.d.ts +6 -0
- package/dist/test/mergeTree.insertingWalk.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.insertingWalk.spec.js +279 -0
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -0
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts +6 -0
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +178 -0
- package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.d.ts +6 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.js +130 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -0
- package/dist/test/mergeTree.walk.spec.d.ts +6 -0
- package/dist/test/mergeTree.walk.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.walk.spec.js +63 -0
- package/dist/test/mergeTree.walk.spec.js.map +1 -0
- package/dist/test/mergeTree.zamboni.spec.d.ts +6 -0
- package/dist/test/mergeTree.zamboni.spec.d.ts.map +1 -0
- package/dist/test/mergeTree.zamboni.spec.js +52 -0
- package/dist/test/mergeTree.zamboni.spec.js.map +1 -0
- package/dist/test/mergeTreeOperationRunner.d.ts +63 -0
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -0
- package/dist/test/mergeTreeOperationRunner.js +245 -0
- package/dist/test/mergeTreeOperationRunner.js.map +1 -0
- package/dist/test/mergeTreeOperationRunner.spec.d.ts +6 -0
- package/dist/test/mergeTreeOperationRunner.spec.d.ts.map +1 -0
- package/dist/test/mergeTreeOperationRunner.spec.js +156 -0
- package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -0
- package/dist/test/obliterate.concurrent.spec.d.ts +6 -0
- package/dist/test/obliterate.concurrent.spec.d.ts.map +1 -0
- package/dist/test/obliterate.concurrent.spec.js +1446 -0
- package/dist/test/obliterate.concurrent.spec.js.map +1 -0
- package/dist/test/obliterate.partialLength.spec.d.ts +6 -0
- package/dist/test/obliterate.partialLength.spec.d.ts.map +1 -0
- package/dist/test/obliterate.partialLength.spec.js +279 -0
- package/dist/test/obliterate.partialLength.spec.js.map +1 -0
- package/dist/test/obliterate.reconnect.spec.d.ts +6 -0
- package/dist/test/obliterate.reconnect.spec.d.ts.map +1 -0
- package/dist/test/obliterate.reconnect.spec.js +164 -0
- package/dist/test/obliterate.reconnect.spec.js.map +1 -0
- package/dist/test/obliterate.spec.d.ts +6 -0
- package/dist/test/obliterate.spec.d.ts.map +1 -0
- package/dist/test/obliterate.spec.js +162 -0
- package/dist/test/obliterate.spec.js.map +1 -0
- package/dist/test/ordinal.spec.d.ts +2 -0
- package/dist/test/ordinal.spec.d.ts.map +1 -0
- package/dist/test/ordinal.spec.js +43 -0
- package/dist/test/ordinal.spec.js.map +1 -0
- package/dist/test/partialLength.spec.d.ts +6 -0
- package/dist/test/partialLength.spec.d.ts.map +1 -0
- package/dist/test/partialLength.spec.js +282 -0
- package/dist/test/partialLength.spec.js.map +1 -0
- package/dist/test/properties.spec.d.ts +6 -0
- package/dist/test/properties.spec.d.ts.map +1 -0
- package/dist/test/properties.spec.js +55 -0
- package/dist/test/properties.spec.js.map +1 -0
- package/dist/test/reconnectHelper.d.ts +48 -0
- package/dist/test/reconnectHelper.d.ts.map +1 -0
- package/dist/test/reconnectHelper.js +86 -0
- package/dist/test/reconnectHelper.js.map +1 -0
- package/dist/test/resetPendingSegmentsToOp.spec.d.ts +6 -0
- package/dist/test/resetPendingSegmentsToOp.spec.d.ts.map +1 -0
- package/dist/test/resetPendingSegmentsToOp.spec.js +218 -0
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -0
- package/dist/test/revertibleFarm.spec.d.ts +6 -0
- package/dist/test/revertibleFarm.spec.d.ts.map +1 -0
- package/dist/test/revertibleFarm.spec.js +124 -0
- package/dist/test/revertibleFarm.spec.js.map +1 -0
- package/dist/test/revertibles.spec.d.ts +17 -0
- package/dist/test/revertibles.spec.d.ts.map +1 -0
- package/dist/test/revertibles.spec.js +385 -0
- package/dist/test/revertibles.spec.js.map +1 -0
- package/dist/test/segmentGroupCollection.spec.d.ts +6 -0
- package/dist/test/segmentGroupCollection.spec.d.ts.map +1 -0
- package/dist/test/segmentGroupCollection.spec.js +60 -0
- package/dist/test/segmentGroupCollection.spec.js.map +1 -0
- package/dist/test/snapshot.spec.d.ts +6 -0
- package/dist/test/snapshot.spec.d.ts.map +1 -0
- package/dist/test/snapshot.spec.js +178 -0
- package/dist/test/snapshot.spec.js.map +1 -0
- package/dist/test/snapshot.utils.d.ts +33 -0
- package/dist/test/snapshot.utils.d.ts.map +1 -0
- package/dist/test/snapshot.utils.js +109 -0
- package/dist/test/snapshot.utils.js.map +1 -0
- package/dist/test/snapshotlegacy.spec.d.ts +6 -0
- package/dist/test/snapshotlegacy.spec.d.ts.map +1 -0
- package/dist/test/snapshotlegacy.spec.js +139 -0
- package/dist/test/snapshotlegacy.spec.js.map +1 -0
- package/dist/test/sortedSegmentSet.spec.d.ts +6 -0
- package/dist/test/sortedSegmentSet.spec.d.ts.map +1 -0
- package/dist/test/sortedSegmentSet.spec.js +95 -0
- package/dist/test/sortedSegmentSet.spec.js.map +1 -0
- package/dist/test/testClient.d.ts +119 -0
- package/dist/test/testClient.d.ts.map +1 -0
- package/dist/test/testClient.js +439 -0
- package/dist/test/testClient.js.map +1 -0
- package/dist/test/testClientLogger.d.ts +44 -0
- package/dist/test/testClientLogger.d.ts.map +1 -0
- package/dist/test/testClientLogger.js +287 -0
- package/dist/test/testClientLogger.js.map +1 -0
- package/dist/test/testSerializer.d.ts +18 -0
- package/dist/test/testSerializer.d.ts.map +1 -0
- package/dist/test/testSerializer.js +33 -0
- package/dist/test/testSerializer.js.map +1 -0
- package/dist/test/testServer.d.ts +36 -0
- package/dist/test/testServer.d.ts.map +1 -0
- package/dist/test/testServer.js +138 -0
- package/dist/test/testServer.js.map +1 -0
- package/dist/test/testUtils.d.ts +69 -0
- package/dist/test/testUtils.d.ts.map +1 -0
- package/dist/test/testUtils.js +149 -0
- package/dist/test/testUtils.js.map +1 -0
- package/dist/test/text.d.ts +9 -0
- package/dist/test/text.d.ts.map +1 -0
- package/dist/test/text.js +76 -0
- package/dist/test/text.js.map +1 -0
- package/dist/test/tracking.spec.d.ts +6 -0
- package/dist/test/tracking.spec.d.ts.map +1 -0
- package/dist/test/tracking.spec.js +120 -0
- package/dist/test/tracking.spec.js.map +1 -0
- package/dist/test/wordUnitTests.d.ts +6 -0
- package/dist/test/wordUnitTests.d.ts.map +1 -0
- package/dist/test/wordUnitTests.js +172 -0
- package/dist/test/wordUnitTests.js.map +1 -0
- package/lib/{MergeTreeTextHelper.d.ts → MergeTreeTextHelper.d.mts} +3 -3
- package/lib/MergeTreeTextHelper.d.mts.map +1 -0
- package/lib/{MergeTreeTextHelper.js → MergeTreeTextHelper.mjs} +5 -10
- package/lib/MergeTreeTextHelper.mjs.map +1 -0
- package/lib/{attributionCollection.d.ts → attributionCollection.d.mts} +2 -2
- package/lib/attributionCollection.d.mts.map +1 -0
- package/lib/{attributionCollection.js → attributionCollection.mjs} +9 -14
- package/lib/attributionCollection.mjs.map +1 -0
- package/lib/{attributionPolicy.d.ts → attributionPolicy.d.mts} +2 -2
- package/lib/attributionPolicy.d.mts.map +1 -0
- package/lib/{attributionPolicy.js → attributionPolicy.mjs} +21 -27
- package/lib/attributionPolicy.mjs.map +1 -0
- package/lib/{client.d.ts → client.d.mts} +9 -16
- package/lib/client.d.mts.map +1 -0
- package/lib/{client.js → client.mjs} +101 -110
- package/lib/client.mjs.map +1 -0
- package/lib/collections/{index.d.ts → index.d.mts} +3 -3
- package/lib/collections/index.d.mts.map +1 -0
- package/lib/collections/index.mjs +7 -0
- package/lib/collections/index.mjs.map +1 -0
- package/lib/collections/{list.d.ts → list.d.mts} +1 -1
- package/lib/collections/list.d.mts.map +1 -0
- package/lib/collections/{list.js → list.mjs} +6 -11
- package/lib/collections/list.mjs.map +1 -0
- package/lib/collections/{rbTree.d.ts → rbTree.d.mts} +1 -1
- package/lib/collections/rbTree.d.mts.map +1 -0
- package/lib/collections/{rbTree.js → rbTree.mjs} +16 -20
- package/lib/collections/rbTree.mjs.map +1 -0
- package/lib/{constants.d.ts → constants.d.mts} +1 -1
- package/lib/constants.d.mts.map +1 -0
- package/lib/constants.mjs +32 -0
- package/lib/constants.mjs.map +1 -0
- package/lib/{endOfTreeSegment.d.ts → endOfTreeSegment.d.mts} +4 -4
- package/lib/endOfTreeSegment.d.mts.map +1 -0
- package/lib/{endOfTreeSegment.js → endOfTreeSegment.mjs} +13 -18
- package/lib/endOfTreeSegment.mjs.map +1 -0
- package/lib/{index.d.ts → index.d.mts} +21 -21
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +24 -0
- package/lib/index.mjs.map +1 -0
- package/lib/{localReference.d.ts → localReference.d.mts} +7 -7
- package/lib/localReference.d.mts.map +1 -0
- package/lib/{localReference.js → localReference.mjs} +38 -47
- package/lib/localReference.mjs.map +1 -0
- package/lib/{merge-tree-alpha.d.ts → merge-tree-alpha.d.mts} +27 -12
- package/lib/{merge-tree-beta.d.ts → merge-tree-beta.d.mts} +0 -16
- package/lib/{merge-tree-public.d.ts → merge-tree-public.d.mts} +0 -16
- package/lib/{merge-tree-untrimmed.d.ts → merge-tree-untrimmed.d.mts} +5 -29
- package/lib/{mergeTree.d.ts → mergeTree.d.mts} +12 -29
- package/lib/mergeTree.d.mts.map +1 -0
- package/lib/{mergeTree.js → mergeTree.mjs} +203 -340
- package/lib/mergeTree.mjs.map +1 -0
- package/lib/{mergeTreeDeltaCallback.d.ts → mergeTreeDeltaCallback.d.mts} +4 -8
- package/lib/mergeTreeDeltaCallback.d.mts.map +1 -0
- package/lib/{mergeTreeDeltaCallback.js → mergeTreeDeltaCallback.mjs} +2 -5
- package/lib/mergeTreeDeltaCallback.mjs.map +1 -0
- package/lib/{mergeTreeNodeWalk.d.ts → mergeTreeNodeWalk.d.mts} +2 -2
- package/lib/mergeTreeNodeWalk.d.mts.map +1 -0
- package/lib/{mergeTreeNodeWalk.js → mergeTreeNodeWalk.mjs} +14 -21
- package/lib/mergeTreeNodeWalk.mjs.map +1 -0
- package/lib/{mergeTreeNodes.d.ts → mergeTreeNodes.d.mts} +12 -12
- package/lib/mergeTreeNodes.d.mts.map +1 -0
- package/lib/{mergeTreeNodes.js → mergeTreeNodes.mjs} +60 -76
- package/lib/mergeTreeNodes.mjs.map +1 -0
- package/lib/{mergeTreeTracking.d.ts → mergeTreeTracking.d.mts} +3 -3
- package/lib/mergeTreeTracking.d.mts.map +1 -0
- package/lib/{mergeTreeTracking.js → mergeTreeTracking.mjs} +6 -13
- package/lib/mergeTreeTracking.mjs.map +1 -0
- package/lib/{opBuilder.d.ts → opBuilder.d.mts} +4 -4
- package/lib/opBuilder.d.mts.map +1 -0
- package/lib/{opBuilder.js → opBuilder.mjs} +15 -25
- package/lib/opBuilder.mjs.map +1 -0
- package/lib/{ops.d.ts → ops.d.mts} +2 -2
- package/lib/ops.d.mts.map +1 -0
- package/lib/{ops.js → ops.mjs} +5 -8
- package/lib/ops.mjs.map +1 -0
- package/lib/{ordinal.d.ts → ordinal.d.mts} +1 -1
- package/lib/ordinal.d.mts.map +1 -0
- package/lib/{ordinal.js → ordinal.mjs} +4 -9
- package/lib/ordinal.mjs.map +1 -0
- package/lib/{partialLengths.d.ts → partialLengths.d.mts} +4 -4
- package/lib/partialLengths.d.mts.map +1 -0
- package/lib/{partialLengths.js → partialLengths.mjs} +38 -46
- package/lib/partialLengths.mjs.map +1 -0
- package/lib/{properties.d.ts → properties.d.mts} +1 -1
- package/lib/properties.d.mts.map +1 -0
- package/lib/{properties.js → properties.mjs} +7 -16
- package/lib/properties.mjs.map +1 -0
- package/lib/{referencePositions.d.ts → referencePositions.d.mts} +5 -5
- package/lib/referencePositions.d.mts.map +1 -0
- package/lib/referencePositions.mjs +70 -0
- package/lib/referencePositions.mjs.map +1 -0
- package/lib/{revertibles.d.ts → revertibles.d.mts} +12 -12
- package/lib/revertibles.d.mts.map +1 -0
- package/lib/{revertibles.js → revertibles.mjs} +60 -67
- package/lib/revertibles.mjs.map +1 -0
- package/lib/{segmentGroupCollection.d.ts → segmentGroupCollection.d.mts} +2 -2
- package/lib/segmentGroupCollection.d.mts.map +1 -0
- package/lib/{segmentGroupCollection.js → segmentGroupCollection.mjs} +5 -9
- package/lib/segmentGroupCollection.mjs.map +1 -0
- package/lib/{segmentPropertiesManager.d.ts → segmentPropertiesManager.d.mts} +3 -3
- package/lib/segmentPropertiesManager.d.mts.map +1 -0
- package/lib/{segmentPropertiesManager.js → segmentPropertiesManager.mjs} +14 -20
- package/lib/{segmentPropertiesManager.js.map → segmentPropertiesManager.mjs.map} +1 -1
- package/lib/{snapshotChunks.d.ts → snapshotChunks.d.mts} +4 -4
- package/lib/snapshotChunks.d.mts.map +1 -0
- package/lib/{snapshotChunks.js → snapshotChunks.mjs} +10 -17
- package/lib/snapshotChunks.mjs.map +1 -0
- package/lib/{snapshotLoader.d.ts → snapshotLoader.d.mts} +3 -3
- package/lib/snapshotLoader.d.mts.map +1 -0
- package/lib/{snapshotLoader.js → snapshotLoader.mjs} +33 -38
- package/lib/snapshotLoader.mjs.map +1 -0
- package/lib/{snapshotV1.d.ts → snapshotV1.d.mts} +4 -4
- package/lib/snapshotV1.d.mts.map +1 -0
- package/lib/{snapshotV1.js → snapshotV1.mjs} +28 -32
- package/lib/snapshotV1.mjs.map +1 -0
- package/lib/{snapshotlegacy.d.ts → snapshotlegacy.d.mts} +3 -3
- package/lib/snapshotlegacy.d.mts.map +1 -0
- package/lib/{snapshotlegacy.js → snapshotlegacy.mjs} +21 -26
- package/lib/snapshotlegacy.mjs.map +1 -0
- package/lib/{sortedSegmentSet.d.ts → sortedSegmentSet.d.mts} +4 -4
- package/lib/sortedSegmentSet.d.mts.map +1 -0
- package/lib/{sortedSegmentSet.js → sortedSegmentSet.mjs} +3 -8
- package/lib/sortedSegmentSet.mjs.map +1 -0
- package/lib/{sortedSet.d.ts → sortedSet.d.mts} +1 -1
- package/lib/sortedSet.d.mts.map +1 -0
- package/lib/{sortedSet.js → sortedSet.mjs} +2 -6
- package/lib/sortedSet.mjs.map +1 -0
- package/lib/{textSegment.d.ts → textSegment.d.mts} +4 -4
- package/lib/textSegment.d.mts.map +1 -0
- package/lib/{textSegment.js → textSegment.mjs} +8 -12
- package/lib/textSegment.mjs.map +1 -0
- package/lib/{zamboni.d.ts → zamboni.d.mts} +3 -3
- package/lib/zamboni.d.mts.map +1 -0
- package/lib/{zamboni.js → zamboni.mjs} +22 -28
- package/lib/zamboni.mjs.map +1 -0
- package/package.json +95 -164
- package/src/client.ts +0 -8
- package/src/mergeTree.ts +0 -226
- package/src/ops.ts +1 -1
- package/src/revertibles.ts +4 -4
- package/lib/MergeTreeTextHelper.d.ts.map +0 -1
- package/lib/MergeTreeTextHelper.js.map +0 -1
- package/lib/attributionCollection.d.ts.map +0 -1
- package/lib/attributionCollection.js.map +0 -1
- package/lib/attributionPolicy.d.ts.map +0 -1
- package/lib/attributionPolicy.js.map +0 -1
- package/lib/client.d.ts.map +0 -1
- package/lib/client.js.map +0 -1
- package/lib/collections/index.d.ts.map +0 -1
- package/lib/collections/index.js +0 -14
- package/lib/collections/index.js.map +0 -1
- package/lib/collections/list.d.ts.map +0 -1
- package/lib/collections/list.js.map +0 -1
- package/lib/collections/rbTree.d.ts.map +0 -1
- package/lib/collections/rbTree.js.map +0 -1
- package/lib/constants.d.ts.map +0 -1
- package/lib/constants.js +0 -35
- package/lib/constants.js.map +0 -1
- package/lib/endOfTreeSegment.d.ts.map +0 -1
- package/lib/endOfTreeSegment.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -80
- package/lib/index.js.map +0 -1
- package/lib/localReference.d.ts.map +0 -1
- package/lib/localReference.js.map +0 -1
- package/lib/mergeTree.d.ts.map +0 -1
- package/lib/mergeTree.js.map +0 -1
- package/lib/mergeTreeDeltaCallback.d.ts.map +0 -1
- package/lib/mergeTreeDeltaCallback.js.map +0 -1
- package/lib/mergeTreeNodeWalk.d.ts.map +0 -1
- package/lib/mergeTreeNodeWalk.js.map +0 -1
- package/lib/mergeTreeNodes.d.ts.map +0 -1
- package/lib/mergeTreeNodes.js.map +0 -1
- package/lib/mergeTreeTracking.d.ts.map +0 -1
- package/lib/mergeTreeTracking.js.map +0 -1
- package/lib/opBuilder.d.ts.map +0 -1
- package/lib/opBuilder.js.map +0 -1
- package/lib/ops.d.ts.map +0 -1
- package/lib/ops.js.map +0 -1
- package/lib/ordinal.d.ts.map +0 -1
- package/lib/ordinal.js.map +0 -1
- package/lib/partialLengths.d.ts.map +0 -1
- package/lib/partialLengths.js.map +0 -1
- package/lib/properties.d.ts.map +0 -1
- package/lib/properties.js.map +0 -1
- package/lib/referencePositions.d.ts.map +0 -1
- package/lib/referencePositions.js +0 -80
- package/lib/referencePositions.js.map +0 -1
- package/lib/revertibles.d.ts.map +0 -1
- package/lib/revertibles.js.map +0 -1
- package/lib/segmentGroupCollection.d.ts.map +0 -1
- package/lib/segmentGroupCollection.js.map +0 -1
- package/lib/segmentPropertiesManager.d.ts.map +0 -1
- package/lib/snapshotChunks.d.ts.map +0 -1
- package/lib/snapshotChunks.js.map +0 -1
- package/lib/snapshotLoader.d.ts.map +0 -1
- package/lib/snapshotLoader.js.map +0 -1
- package/lib/snapshotV1.d.ts.map +0 -1
- package/lib/snapshotV1.js.map +0 -1
- package/lib/snapshotlegacy.d.ts.map +0 -1
- package/lib/snapshotlegacy.js.map +0 -1
- package/lib/sortedSegmentSet.d.ts.map +0 -1
- package/lib/sortedSegmentSet.js.map +0 -1
- package/lib/sortedSet.d.ts.map +0 -1
- package/lib/sortedSet.js.map +0 -1
- package/lib/textSegment.d.ts.map +0 -1
- package/lib/textSegment.js.map +0 -1
- package/lib/zamboni.d.ts.map +0 -1
- package/lib/zamboni.js.map +0 -1
- package/merge-tree.test-files.tar +0 -0
- package/src/mergeTreeExample1.pdf +0 -0
- package/tsconfig.esnext.json +0 -6
|
@@ -9,14 +9,14 @@ import { IFluidDataStoreRuntime, IChannelStorageService } from "@fluidframework/
|
|
|
9
9
|
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
10
10
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
11
11
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
12
|
-
import { LocalReferencePosition, SlidingPreference } from "./localReference";
|
|
13
|
-
import { CollaborationWindow, ISegment, ISegmentAction, Marker, SegmentGroup } from "./mergeTreeNodes";
|
|
14
|
-
import { IJSONSegment, IMergeTreeAnnotateMsg, IMergeTreeDeltaOp, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeRemoveMsg, IMergeTreeOp, IRelativePosition, ReferenceType, IMergeTreeObliterateMsg } from "./ops";
|
|
15
|
-
import { PropertySet } from "./properties";
|
|
16
|
-
import { IMergeTreeTextHelper } from "./textSegment";
|
|
17
|
-
import { ReferencePosition } from "./referencePositions";
|
|
18
|
-
import { IMergeTreeOptions } from "./mergeTree";
|
|
19
|
-
import { IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOpArgs, IMergeTreeMaintenanceCallbackArgs } from "./index";
|
|
12
|
+
import { LocalReferencePosition, SlidingPreference } from "./localReference.mjs";
|
|
13
|
+
import { CollaborationWindow, ISegment, ISegmentAction, Marker, SegmentGroup } from "./mergeTreeNodes.mjs";
|
|
14
|
+
import { IJSONSegment, IMergeTreeAnnotateMsg, IMergeTreeDeltaOp, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeRemoveMsg, IMergeTreeOp, IRelativePosition, ReferenceType, IMergeTreeObliterateMsg } from "./ops.mjs";
|
|
15
|
+
import { PropertySet } from "./properties.mjs";
|
|
16
|
+
import { IMergeTreeTextHelper } from "./textSegment.mjs";
|
|
17
|
+
import { ReferencePosition } from "./referencePositions.mjs";
|
|
18
|
+
import { IMergeTreeOptions } from "./mergeTree.mjs";
|
|
19
|
+
import { IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOpArgs, IMergeTreeMaintenanceCallbackArgs } from "./index.mjs";
|
|
20
20
|
/**
|
|
21
21
|
* A range [start, end)
|
|
22
22
|
* @internal
|
|
@@ -238,13 +238,6 @@ export declare class Client extends TypedEventEmitter<IClientEvents> {
|
|
|
238
238
|
getClientId(): number;
|
|
239
239
|
getLength(): number;
|
|
240
240
|
startOrUpdateCollaboration(longClientId: string | undefined, minSeq?: number, currentSeq?: number): void;
|
|
241
|
-
/**
|
|
242
|
-
* @deprecated Use searchForMarker instead.
|
|
243
|
-
*/
|
|
244
|
-
findTile(startPos: number, tileLabel: string, preceding?: boolean): {
|
|
245
|
-
tile: ReferencePosition;
|
|
246
|
-
pos: number;
|
|
247
|
-
} | undefined;
|
|
248
241
|
/**
|
|
249
242
|
* Searches a string for the nearest marker in either direction to a given start position.
|
|
250
243
|
* The search will include the start position, so markers at the start position are valid
|
|
@@ -256,4 +249,4 @@ export declare class Client extends TypedEventEmitter<IClientEvents> {
|
|
|
256
249
|
*/
|
|
257
250
|
searchForMarker(startPos: number, markerLabel: string, forwards?: boolean): Marker | undefined;
|
|
258
251
|
}
|
|
259
|
-
//# sourceMappingURL=client.d.
|
|
252
|
+
//# sourceMappingURL=client.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.mts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*!
|
|
3
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
3
|
* Licensed under the MIT License.
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
5
|
+
import { MessageType } from "@fluidframework/protocol-definitions";
|
|
6
|
+
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
7
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
8
|
+
import { LoggingError, UsageError } from "@fluidframework/telemetry-utils";
|
|
9
|
+
import { RedBlackTree } from "./collections/index.mjs";
|
|
10
|
+
import { UnassignedSequenceNumber, UniversalSequenceNumber } from "./constants.mjs";
|
|
11
|
+
import { compareStrings, } from "./mergeTreeNodes.mjs";
|
|
12
|
+
import { createAnnotateMarkerOp, createAnnotateRangeOp,
|
|
13
|
+
// eslint-disable-next-line import/no-deprecated
|
|
14
|
+
createGroupOp, createInsertSegmentOp, createObliterateRangeOp, createRemoveRangeOp, } from "./opBuilder.mjs";
|
|
15
|
+
import { MergeTreeDeltaType, } from "./ops.mjs";
|
|
16
|
+
import { SnapshotLegacy } from "./snapshotlegacy.mjs";
|
|
17
|
+
import { SnapshotLoader } from "./snapshotLoader.mjs";
|
|
18
|
+
import { SnapshotV1 } from "./snapshotV1.mjs";
|
|
19
|
+
import { DetachedReferencePosition } from "./referencePositions.mjs";
|
|
20
|
+
import { MergeTree } from "./mergeTree.mjs";
|
|
21
|
+
import { MergeTreeTextHelper } from "./MergeTreeTextHelper.mjs";
|
|
22
|
+
import { walkAllChildSegments } from "./mergeTreeNodeWalk.mjs";
|
|
24
23
|
function removeMoveInfo(segment) {
|
|
25
24
|
delete segment.movedSeq;
|
|
26
25
|
delete segment.movedSeqs;
|
|
@@ -32,17 +31,17 @@ function removeMoveInfo(segment) {
|
|
|
32
31
|
* @deprecated This functionality was not meant to be exported and will be removed in a future release
|
|
33
32
|
* @alpha
|
|
34
33
|
*/
|
|
35
|
-
class Client extends
|
|
34
|
+
export class Client extends TypedEventEmitter {
|
|
36
35
|
constructor(
|
|
37
36
|
// Passing this callback would be unnecessary if Client were merged with SharedSegmentSequence
|
|
38
37
|
specToSegment, logger, options) {
|
|
39
38
|
super();
|
|
40
39
|
this.specToSegment = specToSegment;
|
|
41
40
|
this.logger = logger;
|
|
42
|
-
this.clientNameToIds = new
|
|
41
|
+
this.clientNameToIds = new RedBlackTree(compareStrings);
|
|
43
42
|
this.shortClientIdMap = [];
|
|
44
43
|
this.lastNormalizationRefSeq = 0;
|
|
45
|
-
this._mergeTree = new
|
|
44
|
+
this._mergeTree = new MergeTree(options);
|
|
46
45
|
this._mergeTree.mergeTreeDeltaCallback = (opArgs, deltaArgs) => {
|
|
47
46
|
this.emit("delta", opArgs, deltaArgs, this);
|
|
48
47
|
};
|
|
@@ -52,7 +51,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
52
51
|
if (options?.attribution?.track) {
|
|
53
52
|
const policy = this._mergeTree?.attributionPolicy;
|
|
54
53
|
if (policy === undefined) {
|
|
55
|
-
throw new
|
|
54
|
+
throw new UsageError("Attribution policy must be provided when attribution tracking is requested.");
|
|
56
55
|
}
|
|
57
56
|
policy.attach(this);
|
|
58
57
|
}
|
|
@@ -86,7 +85,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
86
85
|
* @returns The annotate op if valid, otherwise undefined
|
|
87
86
|
*/
|
|
88
87
|
annotateMarker(marker, props) {
|
|
89
|
-
const annotateOp =
|
|
88
|
+
const annotateOp = createAnnotateMarkerOp(marker, props);
|
|
90
89
|
this.applyAnnotateRangeOp({ op: annotateOp });
|
|
91
90
|
return annotateOp;
|
|
92
91
|
}
|
|
@@ -98,7 +97,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
98
97
|
* @returns The annotate op if valid, otherwise undefined
|
|
99
98
|
*/
|
|
100
99
|
annotateRangeLocal(start, end, props) {
|
|
101
|
-
const annotateOp =
|
|
100
|
+
const annotateOp = createAnnotateRangeOp(start, end, props);
|
|
102
101
|
this.applyAnnotateRangeOp({ op: annotateOp });
|
|
103
102
|
return annotateOp;
|
|
104
103
|
}
|
|
@@ -109,7 +108,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
109
108
|
* @param end - The exclusive end of the range to remove
|
|
110
109
|
*/
|
|
111
110
|
removeRangeLocal(start, end) {
|
|
112
|
-
const removeOp =
|
|
111
|
+
const removeOp = createRemoveRangeOp(start, end);
|
|
113
112
|
this.applyRemoveRangeOp({ op: removeOp });
|
|
114
113
|
return removeOp;
|
|
115
114
|
}
|
|
@@ -122,7 +121,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
122
121
|
*/
|
|
123
122
|
// eslint-disable-next-line import/no-deprecated
|
|
124
123
|
obliterateRangeLocal(start, end) {
|
|
125
|
-
const obliterateOp =
|
|
124
|
+
const obliterateOp = createObliterateRangeOp(start, end);
|
|
126
125
|
this.applyObliterateRangeOp({ op: obliterateOp });
|
|
127
126
|
return obliterateOp;
|
|
128
127
|
}
|
|
@@ -134,7 +133,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
134
133
|
if (segment.cachedLength <= 0) {
|
|
135
134
|
return undefined;
|
|
136
135
|
}
|
|
137
|
-
const insertOp =
|
|
136
|
+
const insertOp = createInsertSegmentOp(pos, segment);
|
|
138
137
|
if (this.applyInsertOp({ op: insertOp })) {
|
|
139
138
|
return insertOp;
|
|
140
139
|
}
|
|
@@ -146,10 +145,10 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
146
145
|
*/
|
|
147
146
|
insertAtReferencePositionLocal(refPos, segment) {
|
|
148
147
|
const pos = this._mergeTree.referencePositionToLocalPosition(refPos, this.getCurrentSeq(), this.getClientId());
|
|
149
|
-
if (pos ===
|
|
148
|
+
if (pos === DetachedReferencePosition) {
|
|
150
149
|
return undefined;
|
|
151
150
|
}
|
|
152
|
-
const op =
|
|
151
|
+
const op = createInsertSegmentOp(pos, segment);
|
|
153
152
|
if (this.applyInsertOp({ op })) {
|
|
154
153
|
return op;
|
|
155
154
|
}
|
|
@@ -158,7 +157,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
158
157
|
this._mergeTree.mapRange(handler, this.getCurrentSeq(), this.getClientId(), accum, start, end, splitRange);
|
|
159
158
|
}
|
|
160
159
|
walkAllSegments(action, accum) {
|
|
161
|
-
return
|
|
160
|
+
return walkAllChildSegments(this._mergeTree.root, accum === undefined ? action : (seg) => action(seg, accum));
|
|
162
161
|
}
|
|
163
162
|
/**
|
|
164
163
|
* Serializes the data required for garbage collection. The IFluidHandles stored in all segments that haven't
|
|
@@ -168,11 +167,11 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
168
167
|
serializeGCData(handle, handleCollectingSerializer) {
|
|
169
168
|
let localInserts = 0;
|
|
170
169
|
let localRemoves = 0;
|
|
171
|
-
|
|
172
|
-
if (seg.seq ===
|
|
170
|
+
walkAllChildSegments(this._mergeTree.root, (seg) => {
|
|
171
|
+
if (seg.seq === UnassignedSequenceNumber) {
|
|
173
172
|
localInserts++;
|
|
174
173
|
}
|
|
175
|
-
if (seg.removedSeq ===
|
|
174
|
+
if (seg.removedSeq === UnassignedSequenceNumber) {
|
|
176
175
|
localRemoves++;
|
|
177
176
|
}
|
|
178
177
|
// Only serialize segments that have not been removed.
|
|
@@ -250,7 +249,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
250
249
|
this._mergeTree.rollback(op, localOpMetadata);
|
|
251
250
|
}
|
|
252
251
|
applyObliterateRangeOp(opArgs) {
|
|
253
|
-
|
|
252
|
+
assert(opArgs.op.type === MergeTreeDeltaType.OBLITERATE, 0x866 /* Unexpected op type on range obliterate! */);
|
|
254
253
|
const op = opArgs.op;
|
|
255
254
|
const clientArgs = this.getClientSequenceArgs(opArgs);
|
|
256
255
|
const range = this.getValidOpRange(op, clientArgs);
|
|
@@ -261,7 +260,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
261
260
|
* @param opArgs - The ops args for the op
|
|
262
261
|
*/
|
|
263
262
|
applyRemoveRangeOp(opArgs) {
|
|
264
|
-
|
|
263
|
+
assert(opArgs.op.type === MergeTreeDeltaType.REMOVE, 0x02d /* "Unexpected op type on range remove!" */);
|
|
265
264
|
const op = opArgs.op;
|
|
266
265
|
const clientArgs = this.getClientSequenceArgs(opArgs);
|
|
267
266
|
const range = this.getValidOpRange(op, clientArgs);
|
|
@@ -272,7 +271,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
272
271
|
* @param opArgs - The ops args for the op
|
|
273
272
|
*/
|
|
274
273
|
applyAnnotateRangeOp(opArgs) {
|
|
275
|
-
|
|
274
|
+
assert(opArgs.op.type === MergeTreeDeltaType.ANNOTATE, 0x02e /* "Unexpected op type on range annotate!" */);
|
|
276
275
|
const op = opArgs.op;
|
|
277
276
|
const clientArgs = this.getClientSequenceArgs(opArgs);
|
|
278
277
|
const range = this.getValidOpRange(op, clientArgs);
|
|
@@ -284,7 +283,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
284
283
|
* @returns True if the insert was applied. False if it could not be.
|
|
285
284
|
*/
|
|
286
285
|
applyInsertOp(opArgs) {
|
|
287
|
-
|
|
286
|
+
assert(opArgs.op.type === MergeTreeDeltaType.INSERT, 0x02f /* "Unexpected op type on range insert!" */);
|
|
288
287
|
const op = opArgs.op;
|
|
289
288
|
const clientArgs = this.getClientSequenceArgs(opArgs);
|
|
290
289
|
const range = this.getValidOpRange(op, clientArgs);
|
|
@@ -321,21 +320,21 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
321
320
|
if (start === undefined ||
|
|
322
321
|
start < 0 ||
|
|
323
322
|
start > length ||
|
|
324
|
-
(start === length && op.type !==
|
|
323
|
+
(start === length && op.type !== MergeTreeDeltaType.INSERT)) {
|
|
325
324
|
invalidPositions.push("start");
|
|
326
325
|
}
|
|
327
326
|
// Validate end if not insert, or insert has end
|
|
328
327
|
//
|
|
329
|
-
if (op.type !==
|
|
328
|
+
if (op.type !== MergeTreeDeltaType.INSERT || end !== undefined) {
|
|
330
329
|
if (end === undefined || end <= start) {
|
|
331
330
|
invalidPositions.push("end");
|
|
332
331
|
}
|
|
333
332
|
}
|
|
334
|
-
if (op.type ===
|
|
333
|
+
if (op.type === MergeTreeDeltaType.OBLITERATE && end !== undefined && end > length) {
|
|
335
334
|
invalidPositions.push("end");
|
|
336
335
|
}
|
|
337
336
|
if (invalidPositions.length > 0) {
|
|
338
|
-
throw new
|
|
337
|
+
throw new LoggingError("RangeOutOfBounds", {
|
|
339
338
|
usageError: true,
|
|
340
339
|
end,
|
|
341
340
|
invalidPositions: invalidPositions.toString(),
|
|
@@ -386,7 +385,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
386
385
|
return this.getClientSequenceArgsForMessage(opArgs.sequencedMessage);
|
|
387
386
|
}
|
|
388
387
|
ackPendingSegment(opArgs) {
|
|
389
|
-
if (opArgs.op.type ===
|
|
388
|
+
if (opArgs.op.type === MergeTreeDeltaType.GROUP) {
|
|
390
389
|
for (const memberOp of opArgs.op.ops) {
|
|
391
390
|
this._mergeTree.ackPendingSegment({
|
|
392
391
|
groupOp: opArgs.op,
|
|
@@ -428,16 +427,16 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
428
427
|
* @param localSeq - The localSeq to find the position of the segment at
|
|
429
428
|
*/
|
|
430
429
|
findReconnectionPosition(segment, localSeq) {
|
|
431
|
-
|
|
430
|
+
assert(localSeq <= this._mergeTree.collabWindow.localSeq, 0x032 /* "localSeq greater than collab window" */);
|
|
432
431
|
const { currentSeq, clientId } = this.getCollabWindow();
|
|
433
432
|
return this._mergeTree.getPosition(segment, currentSeq, clientId, localSeq);
|
|
434
433
|
}
|
|
435
434
|
resetPendingDeltaToOps(resetOp,
|
|
436
435
|
// eslint-disable-next-line import/no-deprecated
|
|
437
436
|
segmentGroup) {
|
|
438
|
-
|
|
437
|
+
assert(!!segmentGroup, 0x033 /* "Segment group undefined" */);
|
|
439
438
|
const NACKedSegmentGroup = this.pendingRebase?.shift()?.data;
|
|
440
|
-
|
|
439
|
+
assert(segmentGroup === NACKedSegmentGroup, 0x034 /* "Segment group not at head of pending rebase queue" */);
|
|
441
440
|
if (this.pendingRebase?.empty) {
|
|
442
441
|
this.pendingRebase = undefined;
|
|
443
442
|
}
|
|
@@ -456,59 +455,59 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
456
455
|
// so their recalculated positions will be correct.
|
|
457
456
|
for (const segment of segmentGroup.segments.sort((a, b) => a.ordinal < b.ordinal ? -1 : 1)) {
|
|
458
457
|
const segmentSegGroup = segment.segmentGroups.dequeue();
|
|
459
|
-
|
|
460
|
-
|
|
458
|
+
assert(segmentGroup === segmentSegGroup, 0x035 /* "Segment group not at head of segment pending queue" */);
|
|
459
|
+
assert(segmentGroup.localSeq !== undefined, 0x867 /* expected segment group localSeq to be defined */);
|
|
461
460
|
const segmentPosition = this.findReconnectionPosition(segment, segmentGroup.localSeq);
|
|
462
461
|
let newOp;
|
|
463
462
|
switch (resetOp.type) {
|
|
464
|
-
case
|
|
465
|
-
|
|
463
|
+
case MergeTreeDeltaType.ANNOTATE:
|
|
464
|
+
assert(segment.propertyManager?.hasPendingProperties() === true, 0x036 /* "Segment has no pending properties" */);
|
|
466
465
|
// if the segment has been removed or obliterated, there's no need to send the annotate op
|
|
467
466
|
// unless the remove was local, in which case the annotate must have come
|
|
468
467
|
// before the remove
|
|
469
468
|
if ((segment.removedSeq === undefined ||
|
|
470
469
|
(segment.localRemovedSeq !== undefined &&
|
|
471
|
-
segment.removedSeq ===
|
|
470
|
+
segment.removedSeq === UnassignedSequenceNumber)) &&
|
|
472
471
|
(segment.movedSeq === undefined ||
|
|
473
472
|
(segment.localMovedSeq !== undefined &&
|
|
474
|
-
segment.movedSeq ===
|
|
475
|
-
newOp =
|
|
473
|
+
segment.movedSeq === UnassignedSequenceNumber))) {
|
|
474
|
+
newOp = createAnnotateRangeOp(segmentPosition, segmentPosition + segment.cachedLength, resetOp.props);
|
|
476
475
|
}
|
|
477
476
|
break;
|
|
478
|
-
case
|
|
479
|
-
|
|
477
|
+
case MergeTreeDeltaType.INSERT:
|
|
478
|
+
assert(segment.seq === UnassignedSequenceNumber, 0x037 /* "Segment already has assigned sequence number" */);
|
|
480
479
|
let segInsertOp = segment;
|
|
481
480
|
if (typeof resetOp.seg === "object" && resetOp.seg.props !== undefined) {
|
|
482
481
|
segInsertOp = segment.clone();
|
|
483
482
|
segInsertOp.properties = resetOp.seg.props;
|
|
484
483
|
}
|
|
485
|
-
if (segment.movedSeq !==
|
|
484
|
+
if (segment.movedSeq !== UnassignedSequenceNumber) {
|
|
486
485
|
removeMoveInfo(segment);
|
|
487
486
|
}
|
|
488
|
-
newOp =
|
|
487
|
+
newOp = createInsertSegmentOp(segmentPosition, segInsertOp);
|
|
489
488
|
break;
|
|
490
|
-
case
|
|
489
|
+
case MergeTreeDeltaType.REMOVE:
|
|
491
490
|
if (segment.localRemovedSeq !== undefined &&
|
|
492
|
-
segment.removedSeq ===
|
|
491
|
+
segment.removedSeq === UnassignedSequenceNumber &&
|
|
493
492
|
(segment.movedSeq === undefined ||
|
|
494
493
|
(segment.localMovedSeq !== undefined &&
|
|
495
|
-
segment.movedSeq ===
|
|
496
|
-
newOp =
|
|
494
|
+
segment.movedSeq === UnassignedSequenceNumber))) {
|
|
495
|
+
newOp = createRemoveRangeOp(segmentPosition, segmentPosition + segment.cachedLength);
|
|
497
496
|
}
|
|
498
497
|
break;
|
|
499
|
-
case
|
|
498
|
+
case MergeTreeDeltaType.OBLITERATE:
|
|
500
499
|
if (segment.localMovedSeq !== undefined &&
|
|
501
|
-
segment.movedSeq ===
|
|
500
|
+
segment.movedSeq === UnassignedSequenceNumber &&
|
|
502
501
|
(segment.removedSeq === undefined ||
|
|
503
502
|
(segment.localRemovedSeq !== undefined &&
|
|
504
|
-
segment.removedSeq ===
|
|
505
|
-
newOp =
|
|
503
|
+
segment.removedSeq === UnassignedSequenceNumber))) {
|
|
504
|
+
newOp = createObliterateRangeOp(segmentPosition, segmentPosition + segment.cachedLength);
|
|
506
505
|
}
|
|
507
506
|
break;
|
|
508
507
|
default:
|
|
509
508
|
throw new Error(`Invalid op type`);
|
|
510
509
|
}
|
|
511
|
-
if (newOp && resetOp.type ===
|
|
510
|
+
if (newOp && resetOp.type === MergeTreeDeltaType.OBLITERATE) {
|
|
512
511
|
segment.segmentGroups.enqueue(obliterateSegmentGroup);
|
|
513
512
|
const first = opList[0];
|
|
514
513
|
if (!!first && first.pos2 !== undefined) {
|
|
@@ -530,7 +529,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
530
529
|
opList.push(newOp);
|
|
531
530
|
}
|
|
532
531
|
}
|
|
533
|
-
if (resetOp.type ===
|
|
532
|
+
if (resetOp.type === MergeTreeDeltaType.OBLITERATE &&
|
|
534
533
|
obliterateSegmentGroup.segments.length > 0) {
|
|
535
534
|
this._mergeTree.pendingSegments.push(obliterateSegmentGroup);
|
|
536
535
|
}
|
|
@@ -541,19 +540,19 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
541
540
|
const msg = opArgs.sequencedMessage;
|
|
542
541
|
this.getOrAddShortClientIdFromMessage(msg);
|
|
543
542
|
switch (op.type) {
|
|
544
|
-
case
|
|
543
|
+
case MergeTreeDeltaType.INSERT:
|
|
545
544
|
this.applyInsertOp(opArgs);
|
|
546
545
|
break;
|
|
547
|
-
case
|
|
546
|
+
case MergeTreeDeltaType.REMOVE:
|
|
548
547
|
this.applyRemoveRangeOp(opArgs);
|
|
549
548
|
break;
|
|
550
|
-
case
|
|
549
|
+
case MergeTreeDeltaType.ANNOTATE:
|
|
551
550
|
this.applyAnnotateRangeOp(opArgs);
|
|
552
551
|
break;
|
|
553
|
-
case
|
|
552
|
+
case MergeTreeDeltaType.OBLITERATE:
|
|
554
553
|
this.applyObliterateRangeOp(opArgs);
|
|
555
554
|
break;
|
|
556
|
-
case
|
|
555
|
+
case MergeTreeDeltaType.GROUP: {
|
|
557
556
|
for (const memberOp of op.ops) {
|
|
558
557
|
this.applyRemoteOp({
|
|
559
558
|
op: memberOp,
|
|
@@ -573,35 +572,35 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
573
572
|
let metadata;
|
|
574
573
|
const stashed = true;
|
|
575
574
|
switch (op.type) {
|
|
576
|
-
case
|
|
575
|
+
case MergeTreeDeltaType.INSERT:
|
|
577
576
|
this.applyInsertOp({ op, stashed });
|
|
578
577
|
metadata = this.peekPendingSegmentGroups();
|
|
579
578
|
break;
|
|
580
|
-
case
|
|
579
|
+
case MergeTreeDeltaType.REMOVE:
|
|
581
580
|
this.applyRemoveRangeOp({ op, stashed });
|
|
582
581
|
metadata = this.peekPendingSegmentGroups();
|
|
583
582
|
break;
|
|
584
|
-
case
|
|
583
|
+
case MergeTreeDeltaType.ANNOTATE:
|
|
585
584
|
this.applyAnnotateRangeOp({ op, stashed });
|
|
586
585
|
metadata = this.peekPendingSegmentGroups();
|
|
587
586
|
break;
|
|
588
|
-
case
|
|
587
|
+
case MergeTreeDeltaType.OBLITERATE:
|
|
589
588
|
this.applyObliterateRangeOp({ op });
|
|
590
589
|
metadata = this.peekPendingSegmentGroups();
|
|
591
590
|
break;
|
|
592
|
-
case
|
|
591
|
+
case MergeTreeDeltaType.GROUP:
|
|
593
592
|
return op.ops.map((o) => this.applyStashedOp(o));
|
|
594
593
|
default:
|
|
595
|
-
|
|
594
|
+
unreachableCase(op, "unrecognized op type");
|
|
596
595
|
}
|
|
597
|
-
|
|
596
|
+
assert(!!metadata, 0x2db /* "Applying op must generate a pending segment" */);
|
|
598
597
|
return metadata;
|
|
599
598
|
}
|
|
600
599
|
applyMsg(msg, local = false) {
|
|
601
600
|
// Ensure client ID is registered
|
|
602
601
|
this.getOrAddShortClientIdFromMessage(msg);
|
|
603
602
|
// Apply if an operation message
|
|
604
|
-
if (msg.type ===
|
|
603
|
+
if (msg.type === MessageType.Operation) {
|
|
605
604
|
const opArgs = {
|
|
606
605
|
op: msg.contents,
|
|
607
606
|
sequencedMessage: msg,
|
|
@@ -618,9 +617,9 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
618
617
|
updateSeqNumbers(min, seq) {
|
|
619
618
|
const collabWindow = this.getCollabWindow();
|
|
620
619
|
// Equal is fine here due to SharedSegmentSequence<>.snapshotContent() potentially updating with same #
|
|
621
|
-
|
|
620
|
+
assert(collabWindow.currentSeq <= seq, 0x038 /* "Incoming op sequence# < local collabWindow's currentSequence#" */);
|
|
622
621
|
collabWindow.currentSeq = seq;
|
|
623
|
-
|
|
622
|
+
assert(min <= seq, 0x039 /* "Incoming op sequence# < minSequence#" */);
|
|
624
623
|
this.updateMinSeq(min);
|
|
625
624
|
}
|
|
626
625
|
/**
|
|
@@ -651,7 +650,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
651
650
|
if (segmentGroup.length === 0) {
|
|
652
651
|
// sometimes we rebase to an empty op
|
|
653
652
|
// eslint-disable-next-line import/no-deprecated
|
|
654
|
-
return
|
|
653
|
+
return createGroupOp();
|
|
655
654
|
}
|
|
656
655
|
firstGroup = segmentGroup[0];
|
|
657
656
|
}
|
|
@@ -659,7 +658,7 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
659
658
|
firstGroup = segmentGroup;
|
|
660
659
|
}
|
|
661
660
|
const firstGroupNode = this._mergeTree.pendingSegments.find((node) => node.data === firstGroup);
|
|
662
|
-
|
|
661
|
+
assert(firstGroupNode !== undefined, 0x70e /* segment group must exist in pending list */);
|
|
663
662
|
this.pendingRebase = this._mergeTree.pendingSegments.splice(firstGroupNode);
|
|
664
663
|
}
|
|
665
664
|
const rebaseTo = this.getCollabWindow().currentSeq;
|
|
@@ -669,9 +668,9 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
669
668
|
this.lastNormalizationRefSeq = rebaseTo;
|
|
670
669
|
}
|
|
671
670
|
const opList = [];
|
|
672
|
-
if (resetOp.type ===
|
|
671
|
+
if (resetOp.type === MergeTreeDeltaType.GROUP) {
|
|
673
672
|
if (Array.isArray(segmentGroup)) {
|
|
674
|
-
|
|
673
|
+
assert(resetOp.ops.length === segmentGroup.length, 0x03a /* "Number of ops in 'resetOp' must match the number of segment groups provided." */);
|
|
675
674
|
for (let i = 0; i < resetOp.ops.length; i++) {
|
|
676
675
|
opList.push(...this.resetPendingDeltaToOps(resetOp.ops[i], segmentGroup[i]));
|
|
677
676
|
}
|
|
@@ -679,21 +678,21 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
679
678
|
else {
|
|
680
679
|
// A group op containing a single op will pass a direct reference to 'segmentGroup'
|
|
681
680
|
// rather than an array of segment groups. (See 'peekPendingSegmentGroups()')
|
|
682
|
-
|
|
681
|
+
assert(resetOp.ops.length === 1, 0x03b /* "Number of ops in 'resetOp' must match the number of segment groups provided." */);
|
|
683
682
|
opList.push(...this.resetPendingDeltaToOps(resetOp.ops[0], segmentGroup));
|
|
684
683
|
}
|
|
685
684
|
}
|
|
686
685
|
else {
|
|
687
|
-
|
|
688
|
-
|
|
686
|
+
assert(resetOp.type !== MergeTreeDeltaType.GROUP, 0x03c /* "Reset op has 'group' delta type!" */);
|
|
687
|
+
assert(!Array.isArray(segmentGroup), 0x03d /* "segmentGroup is array rather than singleton!" */);
|
|
689
688
|
opList.push(...this.resetPendingDeltaToOps(resetOp, segmentGroup));
|
|
690
689
|
}
|
|
691
690
|
// eslint-disable-next-line import/no-deprecated
|
|
692
|
-
return opList.length === 1 ? opList[0] :
|
|
691
|
+
return opList.length === 1 ? opList[0] : createGroupOp(...opList);
|
|
693
692
|
}
|
|
694
693
|
// eslint-disable-next-line import/no-deprecated
|
|
695
694
|
createTextHelper() {
|
|
696
|
-
return new
|
|
695
|
+
return new MergeTreeTextHelper(this._mergeTree);
|
|
697
696
|
}
|
|
698
697
|
summarize(runtime, handle, serializer, catchUpMsgs) {
|
|
699
698
|
const deltaManager = runtime.deltaManager;
|
|
@@ -704,28 +703,28 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
704
703
|
this.updateSeqNumbers(minSeq, deltaManager.lastSequenceNumber);
|
|
705
704
|
// One of the summaries (from SPO) I observed to have chunk.chunkSequenceNumber > minSeq!
|
|
706
705
|
// Not sure why - need to catch it sooner
|
|
707
|
-
|
|
706
|
+
assert(this.getCollabWindow().minSeq === minSeq, 0x03e /* "minSeq mismatch between collab window and delta manager!" */);
|
|
708
707
|
// Must continue to support legacy
|
|
709
708
|
// (See https://github.com/microsoft/FluidFramework/issues/84)
|
|
710
709
|
if (this._mergeTree.options?.newMergeTreeSnapshotFormat === true) {
|
|
711
|
-
|
|
712
|
-
const snap = new
|
|
710
|
+
assert(catchUpMsgs === undefined || catchUpMsgs.length === 0, 0x03f /* "New format should not emit catchup ops" */);
|
|
711
|
+
const snap = new SnapshotV1(this._mergeTree, this.logger, (id) => this.getLongClientId(id));
|
|
713
712
|
snap.extractSync();
|
|
714
713
|
return snap.emit(serializer, handle);
|
|
715
714
|
}
|
|
716
715
|
else {
|
|
717
|
-
const snap = new
|
|
716
|
+
const snap = new SnapshotLegacy(this._mergeTree, this.logger);
|
|
718
717
|
snap.extractSync();
|
|
719
718
|
return snap.emit(catchUpMsgs, serializer, handle);
|
|
720
719
|
}
|
|
721
720
|
}
|
|
722
721
|
async load(runtime, storage, serializer) {
|
|
723
|
-
const loader = new
|
|
722
|
+
const loader = new SnapshotLoader(runtime, this, this._mergeTree, this.logger, serializer);
|
|
724
723
|
return loader.initialize(storage);
|
|
725
724
|
}
|
|
726
725
|
getLocalSequenceNumber() {
|
|
727
726
|
const segWindow = this.getCollabWindow();
|
|
728
|
-
return segWindow.collaborating ?
|
|
727
|
+
return segWindow.collaborating ? UnassignedSequenceNumber : UniversalSequenceNumber;
|
|
729
728
|
}
|
|
730
729
|
// eslint-disable-next-line import/no-deprecated
|
|
731
730
|
localTransaction(groupOp) {
|
|
@@ -735,16 +734,16 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
735
734
|
groupOp,
|
|
736
735
|
};
|
|
737
736
|
switch (op.type) {
|
|
738
|
-
case
|
|
737
|
+
case MergeTreeDeltaType.INSERT:
|
|
739
738
|
this.applyInsertOp(opArgs);
|
|
740
739
|
break;
|
|
741
|
-
case
|
|
740
|
+
case MergeTreeDeltaType.ANNOTATE:
|
|
742
741
|
this.applyAnnotateRangeOp(opArgs);
|
|
743
742
|
break;
|
|
744
|
-
case
|
|
743
|
+
case MergeTreeDeltaType.REMOVE:
|
|
745
744
|
this.applyRemoveRangeOp(opArgs);
|
|
746
745
|
break;
|
|
747
|
-
case
|
|
746
|
+
case MergeTreeDeltaType.OBLITERATE:
|
|
748
747
|
this.applyObliterateRangeOp(opArgs);
|
|
749
748
|
break;
|
|
750
749
|
default:
|
|
@@ -809,13 +808,6 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
809
808
|
}
|
|
810
809
|
}
|
|
811
810
|
}
|
|
812
|
-
/**
|
|
813
|
-
* @deprecated Use searchForMarker instead.
|
|
814
|
-
*/
|
|
815
|
-
findTile(startPos, tileLabel, preceding = true) {
|
|
816
|
-
const clientId = this.getClientId();
|
|
817
|
-
return this._mergeTree.findTile(startPos, clientId, tileLabel, preceding);
|
|
818
|
-
}
|
|
819
811
|
/**
|
|
820
812
|
* Searches a string for the nearest marker in either direction to a given start position.
|
|
821
813
|
* The search will include the start position, so markers at the start position are valid
|
|
@@ -830,5 +822,4 @@ class Client extends client_utils_1.TypedEventEmitter {
|
|
|
830
822
|
return this._mergeTree.searchForMarker(startPos, clientId, markerLabel, forwards);
|
|
831
823
|
}
|
|
832
824
|
}
|
|
833
|
-
|
|
834
|
-
//# sourceMappingURL=client.js.map
|
|
825
|
+
//# sourceMappingURL=client.mjs.map
|