@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
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { ReferencePosition } from "./referencePositions.mjs";
|
|
5
|
+
import { ISegment } from "./mergeTreeNodes.js";
|
|
6
|
+
import { TrackingGroupCollection } from "./mergeTreeTracking.js";
|
|
7
|
+
import { ReferenceType } from "./ops.js";
|
|
8
|
+
import { PropertySet } from "./properties.js";
|
|
9
|
+
import { ReferencePosition } from "./referencePositions.js";
|
|
11
10
|
/**
|
|
12
11
|
* Dictates the preferential direction for a {@link ReferencePosition} to slide
|
|
13
12
|
* in a merge-tree
|
|
@@ -42,39 +41,10 @@ export interface LocalReferencePosition extends ReferencePosition {
|
|
|
42
41
|
*/
|
|
43
42
|
readonly canSlideToEndpoint?: boolean;
|
|
44
43
|
}
|
|
45
|
-
/**
|
|
46
|
-
* @privateRemarks This should not be exported outside merge tree.
|
|
47
|
-
* @internal
|
|
48
|
-
*/
|
|
49
|
-
declare class LocalReference implements LocalReferencePosition {
|
|
50
|
-
refType: ReferenceType;
|
|
51
|
-
readonly slidingPreference: SlidingPreference;
|
|
52
|
-
readonly canSlideToEndpoint?: boolean | undefined;
|
|
53
|
-
properties: PropertySet | undefined;
|
|
54
|
-
private segment;
|
|
55
|
-
private offset;
|
|
56
|
-
private listNode;
|
|
57
|
-
callbacks?: Partial<Record<"beforeSlide" | "afterSlide", (ref: LocalReferencePosition) => void>> | undefined;
|
|
58
|
-
private _trackingCollection?;
|
|
59
|
-
get trackingCollection(): TrackingGroupCollection;
|
|
60
|
-
constructor(refType?: ReferenceType, properties?: PropertySet, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean | undefined);
|
|
61
|
-
link(segment: ISegment | undefined, offset: number, listNode: ListNode<LocalReference> | undefined): void;
|
|
62
|
-
isLeaf(): boolean;
|
|
63
|
-
addProperties(newProps: PropertySet): void;
|
|
64
|
-
getSegment(): ISegment | undefined;
|
|
65
|
-
getOffset(): number;
|
|
66
|
-
getListNode(): ListNode<LocalReference> | undefined;
|
|
67
|
-
getProperties(): PropertySet | undefined;
|
|
68
|
-
}
|
|
69
44
|
/**
|
|
70
45
|
* @internal
|
|
71
46
|
*/
|
|
72
47
|
export declare function createDetachedLocalReferencePosition(refType?: ReferenceType): LocalReferencePosition;
|
|
73
|
-
interface IRefsAtOffset {
|
|
74
|
-
before?: DoublyLinkedList<LocalReference>;
|
|
75
|
-
at?: DoublyLinkedList<LocalReference>;
|
|
76
|
-
after?: DoublyLinkedList<LocalReference>;
|
|
77
|
-
}
|
|
78
48
|
/**
|
|
79
49
|
* @returns true if `func` returns true for any position within the collection
|
|
80
50
|
*/
|
|
@@ -89,18 +59,19 @@ export declare function setValidateRefCount(cb?: (collection?: LocalReferenceCol
|
|
|
89
59
|
* Represents a collection of {@link LocalReferencePosition}s associated with
|
|
90
60
|
* one segment in a merge-tree.
|
|
91
61
|
* Represents a collection of {@link LocalReferencePosition}s associated with one segment in a merge-tree.
|
|
62
|
+
* @sealed
|
|
63
|
+
*
|
|
92
64
|
* @alpha
|
|
93
65
|
*/
|
|
94
66
|
export declare class LocalReferenceCollection {
|
|
95
67
|
/** Segment this `LocalReferenceCollection` is associated to. */
|
|
96
68
|
private readonly segment;
|
|
97
69
|
static append(seg1: ISegment, seg2: ISegment): void;
|
|
70
|
+
static setOrGet(segment: ISegment): LocalReferenceCollection;
|
|
98
71
|
private readonly refsByOffset;
|
|
99
72
|
private refCount;
|
|
100
73
|
/***/
|
|
101
|
-
constructor(
|
|
102
|
-
/** Segment this `LocalReferenceCollection` is associated to. */
|
|
103
|
-
segment: ISegment, initialRefsByfOffset?: (IRefsAtOffset | undefined)[]);
|
|
74
|
+
private constructor();
|
|
104
75
|
/**
|
|
105
76
|
* @remarks This method should only be called by mergeTree.
|
|
106
77
|
*/
|
|
@@ -171,5 +142,4 @@ export declare class LocalReferenceCollection {
|
|
|
171
142
|
*/
|
|
172
143
|
walkReferences(visitor: (lref: LocalReferencePosition) => boolean | void | undefined, start?: LocalReferencePosition, forward?: boolean): boolean;
|
|
173
144
|
}
|
|
174
|
-
|
|
175
|
-
//# sourceMappingURL=localReference.d.mts.map
|
|
145
|
+
//# sourceMappingURL=localReference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localReference.d.ts","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { assert } from "@fluidframework/core-utils";
|
|
6
6
|
import { UsageError } from "@fluidframework/telemetry-utils";
|
|
7
|
-
import { DoublyLinkedList, walkList } from "./collections/index.
|
|
8
|
-
import { TrackingGroupCollection } from "./mergeTreeTracking.
|
|
9
|
-
import { ReferenceType } from "./ops.
|
|
10
|
-
|
|
11
|
-
import {
|
|
7
|
+
import { DoublyLinkedList, walkList } from "./collections/index.js";
|
|
8
|
+
import { TrackingGroupCollection } from "./mergeTreeTracking.js";
|
|
9
|
+
import { ReferenceType } from "./ops.js";
|
|
10
|
+
// eslint-disable-next-line import/no-deprecated
|
|
11
|
+
import { addProperties } from "./properties.js";
|
|
12
|
+
import { refTypeIncludesFlag } from "./referencePositions.js";
|
|
12
13
|
/**
|
|
13
14
|
* Dictates the preferential direction for a {@link ReferencePosition} to slide
|
|
14
15
|
* in a merge-tree
|
|
@@ -134,6 +135,8 @@ export function setValidateRefCount(cb) {
|
|
|
134
135
|
* Represents a collection of {@link LocalReferencePosition}s associated with
|
|
135
136
|
* one segment in a merge-tree.
|
|
136
137
|
* Represents a collection of {@link LocalReferencePosition}s associated with one segment in a merge-tree.
|
|
138
|
+
* @sealed
|
|
139
|
+
*
|
|
137
140
|
* @alpha
|
|
138
141
|
*/
|
|
139
142
|
export class LocalReferenceCollection {
|
|
@@ -153,6 +156,9 @@ export class LocalReferenceCollection {
|
|
|
153
156
|
validateRefCount?.(seg1.localRefs);
|
|
154
157
|
validateRefCount?.(seg2.localRefs);
|
|
155
158
|
}
|
|
159
|
+
static setOrGet(segment) {
|
|
160
|
+
return (segment.localRefs ?? (segment.localRefs = new LocalReferenceCollection(segment)));
|
|
161
|
+
}
|
|
156
162
|
/***/
|
|
157
163
|
constructor(
|
|
158
164
|
/** Segment this `LocalReferenceCollection` is associated to. */
|
|
@@ -456,4 +462,4 @@ export class LocalReferenceCollection {
|
|
|
456
462
|
return true;
|
|
457
463
|
}
|
|
458
464
|
}
|
|
459
|
-
//# sourceMappingURL=localReference.
|
|
465
|
+
//# sourceMappingURL=localReference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localReference.js","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils\";\nimport { UsageError } from \"@fluidframework/telemetry-utils\";\nimport { DoublyLinkedList, ListNode, walkList } from \"./collections/index.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\nimport { TrackingGroup, TrackingGroupCollection } from \"./mergeTreeTracking.js\";\nimport { ReferenceType } from \"./ops.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { addProperties, PropertySet } from \"./properties.js\";\nimport { ReferencePosition, refTypeIncludesFlag } from \"./referencePositions.js\";\n\n/**\n * Dictates the preferential direction for a {@link ReferencePosition} to slide\n * in a merge-tree\n * @alpha\n */\nexport const SlidingPreference = {\n\t/**\n\t * Prefer sliding towards the start of the tree\n\t */\n\tBACKWARD: 0,\n\t/**\n\t * Prefer sliding towards the end of the tree\n\t */\n\tFORWARD: 1,\n} as const;\n\n/**\n * Dictates the preferential direction for a {@link ReferencePosition} to slide\n * in a merge-tree\n * @alpha\n */\nexport type SlidingPreference = (typeof SlidingPreference)[keyof typeof SlidingPreference];\n\nfunction _validateReferenceType(refType: ReferenceType) {\n\tlet exclusiveCount = 0;\n\tif (refTypeIncludesFlag(refType, ReferenceType.Transient)) {\n\t\t++exclusiveCount;\n\t}\n\tif (refTypeIncludesFlag(refType, ReferenceType.SlideOnRemove)) {\n\t\t++exclusiveCount;\n\t}\n\tif (refTypeIncludesFlag(refType, ReferenceType.StayOnRemove)) {\n\t\t++exclusiveCount;\n\t}\n\tif (exclusiveCount > 1) {\n\t\tthrow new UsageError(\n\t\t\t\"Reference types can only be one of Transient, SlideOnRemove, and StayOnRemove\",\n\t\t);\n\t}\n}\n/**\n * @sealed\n * @alpha\n */\nexport interface LocalReferencePosition extends ReferencePosition {\n\tcallbacks?: Partial<\n\t\tRecord<\"beforeSlide\" | \"afterSlide\", (ref: LocalReferencePosition) => void>\n\t>;\n\treadonly trackingCollection: TrackingGroupCollection;\n\t/**\n\t * Whether or not this reference position can slide onto one of the two\n\t * special segments representing the position before or after the tree\n\t */\n\treadonly canSlideToEndpoint?: boolean;\n}\n\n/**\n * @privateRemarks This should not be exported outside merge tree.\n * @internal\n */\nclass LocalReference implements LocalReferencePosition {\n\tpublic properties: PropertySet | undefined;\n\n\tprivate segment: ISegment | undefined;\n\tprivate offset: number = 0;\n\tprivate listNode: ListNode<LocalReference> | undefined;\n\n\tpublic callbacks?:\n\t\t| Partial<Record<\"beforeSlide\" | \"afterSlide\", (ref: LocalReferencePosition) => void>>\n\t\t| undefined;\n\tprivate _trackingCollection?: TrackingGroupCollection;\n\tpublic get trackingCollection(): TrackingGroupCollection {\n\t\treturn (this._trackingCollection ??= new TrackingGroupCollection(this));\n\t}\n\n\tconstructor(\n\t\tpublic refType = ReferenceType.Simple,\n\t\tproperties?: PropertySet,\n\t\tpublic readonly slidingPreference: SlidingPreference = SlidingPreference.FORWARD,\n\t\tpublic readonly canSlideToEndpoint?: boolean,\n\t) {\n\t\t_validateReferenceType(refType);\n\t\tthis.properties = properties;\n\t}\n\n\tpublic link(\n\t\tsegment: ISegment | undefined,\n\t\toffset: number,\n\t\tlistNode: ListNode<LocalReference> | undefined,\n\t) {\n\t\tif (listNode !== this.listNode && this.listNode !== undefined) {\n\t\t\tthis.segment?.localRefs?.removeLocalRef(this);\n\t\t}\n\t\tthis.listNode = listNode;\n\n\t\tif (segment !== this.segment) {\n\t\t\tconst groups: TrackingGroup[] = [];\n\t\t\tthis.trackingCollection.trackingGroups.forEach((tg) => {\n\t\t\t\ttg.unlink(this);\n\t\t\t\tgroups.push(tg);\n\t\t\t});\n\n\t\t\tthis.segment = segment;\n\n\t\t\tgroups.forEach((tg) => tg.link(this));\n\t\t}\n\t\tthis.offset = offset;\n\t}\n\n\tpublic isLeaf() {\n\t\treturn false;\n\t}\n\n\tpublic addProperties(newProps: PropertySet) {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.properties = addProperties(this.properties, newProps);\n\t}\n\n\tpublic getSegment() {\n\t\treturn this.segment;\n\t}\n\n\tpublic getOffset() {\n\t\treturn this.offset;\n\t}\n\n\tpublic getListNode() {\n\t\treturn this.listNode;\n\t}\n\n\tpublic getProperties() {\n\t\treturn this.properties;\n\t}\n}\n\n/**\n * @internal\n */\nexport function createDetachedLocalReferencePosition(\n\trefType?: ReferenceType,\n): LocalReferencePosition {\n\treturn new LocalReference(refType, undefined);\n}\n\ninterface IRefsAtOffset {\n\tbefore?: DoublyLinkedList<LocalReference>;\n\tat?: DoublyLinkedList<LocalReference>;\n\tafter?: DoublyLinkedList<LocalReference>;\n}\n\nfunction assertLocalReferences(lref: any): asserts lref is LocalReference {\n\tassert(lref instanceof LocalReference, 0x2e0 /* \"lref not a Local Reference\" */);\n}\n\n/**\n * @returns true if `func` returns true for any position within the collection\n */\nexport function anyLocalReferencePosition(\n\tcollection: LocalReferenceCollection,\n\tfunc: (pos: LocalReferencePosition) => boolean,\n): boolean {\n\tfor (const pos of collection) {\n\t\tif (func(pos)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @returns only the local reference positions for which the `predicate` returns\n * true\n */\nexport function* filterLocalReferencePositions(\n\tcollection: LocalReferenceCollection,\n\tpredicate: (pos: LocalReferencePosition) => boolean,\n): Generator<LocalReferencePosition> {\n\tfor (const pos of collection) {\n\t\tif (predicate(pos)) {\n\t\t\tyield pos;\n\t\t}\n\t}\n}\n\n/**\n * Injectable hook for validating that the refCount property matches the\n * expected value\n */\nlet validateRefCount: ((collection?: LocalReferenceCollection) => void) | undefined;\n\nexport function setValidateRefCount(cb?: (collection?: LocalReferenceCollection) => void) {\n\tvalidateRefCount = cb;\n}\n\n/**\n * Represents a collection of {@link LocalReferencePosition}s associated with\n * one segment in a merge-tree.\n * Represents a collection of {@link LocalReferencePosition}s associated with one segment in a merge-tree.\n * @sealed\n *\n * @alpha\n */\nexport class LocalReferenceCollection {\n\tpublic static append(seg1: ISegment, seg2: ISegment) {\n\t\tif (seg2.localRefs && !seg2.localRefs.empty) {\n\t\t\tif (!seg1.localRefs) {\n\t\t\t\tseg1.localRefs = new LocalReferenceCollection(seg1);\n\t\t\t}\n\t\t\tassert(\n\t\t\t\tseg1.localRefs.refsByOffset.length === seg1.cachedLength,\n\t\t\t\t0x2be /* \"LocalReferences array contains a gap\" */,\n\t\t\t);\n\t\t\tseg1.localRefs.append(seg2.localRefs);\n\t\t} else if (seg1.localRefs) {\n\t\t\t// Since creating the LocalReferenceCollection, we may have appended\n\t\t\t// segments that had no local references. Account for them now by padding the array.\n\t\t\tseg1.localRefs.refsByOffset.length += seg2.cachedLength;\n\t\t}\n\t\tvalidateRefCount?.(seg1.localRefs);\n\t\tvalidateRefCount?.(seg2.localRefs);\n\t}\n\n\tpublic static setOrGet(segment: ISegment) {\n\t\treturn (segment.localRefs ??= new LocalReferenceCollection(segment));\n\t}\n\n\tprivate readonly refsByOffset: (IRefsAtOffset | undefined)[];\n\tprivate refCount: number = 0;\n\n\t/***/\n\tprivate constructor(\n\t\t/** Segment this `LocalReferenceCollection` is associated to. */\n\t\tprivate readonly segment: ISegment,\n\t\tinitialRefsByfOffset = new Array<IRefsAtOffset | undefined>(segment.cachedLength),\n\t) {\n\t\t// Since javascript arrays are sparse the above won't populate any of the\n\t\t// indices, but it will ensure the length property of the array matches\n\t\t// the length of the segment.\n\t\tthis.refsByOffset = initialRefsByfOffset;\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic [Symbol.iterator]() {\n\t\tconst subiterators: IterableIterator<ListNode<LocalReferencePosition>>[] = [];\n\t\tfor (const refs of this.refsByOffset) {\n\t\t\tif (refs) {\n\t\t\t\tif (refs.before) {\n\t\t\t\t\tsubiterators.push(refs.before[Symbol.iterator]());\n\t\t\t\t}\n\t\t\t\tif (refs.at) {\n\t\t\t\t\tsubiterators.push(refs.at[Symbol.iterator]());\n\t\t\t\t}\n\t\t\t\tif (refs.after) {\n\t\t\t\t\tsubiterators.push(refs.after[Symbol.iterator]());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst iterator = {\n\t\t\tnext(): IteratorResult<LocalReferencePosition> {\n\t\t\t\twhile (subiterators.length > 0) {\n\t\t\t\t\tconst next = subiterators[0].next();\n\t\t\t\t\tif (next.done === true) {\n\t\t\t\t\t\tsubiterators.shift();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn { done: next.done, value: next.value.data };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic get empty() {\n\t\tvalidateRefCount?.(this);\n\t\treturn this.refCount === 0;\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic createLocalRef(\n\t\toffset: number,\n\t\trefType: ReferenceType,\n\t\tproperties: PropertySet | undefined,\n\t\tslidingPreference?: SlidingPreference,\n\t\tcanSlideToEndpoint?: boolean,\n\t): LocalReferencePosition {\n\t\tconst ref = new LocalReference(refType, properties, slidingPreference, canSlideToEndpoint);\n\t\tref.link(this.segment, offset, undefined);\n\t\tif (!refTypeIncludesFlag(ref, ReferenceType.Transient)) {\n\t\t\tthis.addLocalRef(ref, offset);\n\t\t}\n\t\tvalidateRefCount?.(this);\n\t\treturn ref;\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic addLocalRef(lref: LocalReferencePosition, offset: number) {\n\t\tassertLocalReferences(lref);\n\t\tassert(\n\t\t\toffset < this.segment.cachedLength,\n\t\t\t0x348 /* offset cannot be beyond segment length */,\n\t\t);\n\t\tif (refTypeIncludesFlag(lref, ReferenceType.Transient)) {\n\t\t\tlref.link(this.segment, offset, undefined);\n\t\t} else {\n\t\t\tconst refsAtOffset = (this.refsByOffset[offset] = this.refsByOffset[offset] ?? {\n\t\t\t\tat: new DoublyLinkedList(),\n\t\t\t});\n\t\t\tconst atRefs = (refsAtOffset.at = refsAtOffset.at ?? new DoublyLinkedList());\n\n\t\t\tlref.link(this.segment, offset, atRefs.push(lref).last);\n\n\t\t\tthis.refCount++;\n\t\t}\n\t\tvalidateRefCount?.(this);\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic removeLocalRef(lref: LocalReferencePosition): LocalReferencePosition | undefined {\n\t\tif (this.has(lref)) {\n\t\t\tassertLocalReferences(lref);\n\n\t\t\tconst node = lref.getListNode();\n\t\t\tnode?.list?.remove(node);\n\n\t\t\tlref.link(undefined, 0, undefined);\n\n\t\t\tthis.refCount--;\n\t\t\tvalidateRefCount?.(this);\n\t\t\treturn lref;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * Called by 'append()' implementations to append local refs from the given 'other' segment to the\n\t * end of 'this' segment.\n\t *\n\t * Note: This method should be invoked after the caller has ensured that segments can be merged,\n\t * but before 'this' segment's cachedLength has changed, or the adjustment to the local refs\n\t * will be incorrect.\n\t *\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic append(other: LocalReferenceCollection) {\n\t\tif (!other || other.empty) {\n\t\t\treturn;\n\t\t}\n\t\tthis.refCount += other.refCount;\n\t\tother.refCount = 0;\n\t\tfor (const lref of other) {\n\t\t\tassertLocalReferences(lref);\n\t\t\tlref.link(\n\t\t\t\tthis.segment,\n\t\t\t\tlref.getOffset() + this.refsByOffset.length,\n\t\t\t\tlref.getListNode(),\n\t\t\t);\n\t\t}\n\n\t\tthis.refsByOffset.push(...other.refsByOffset);\n\t\tother.refsByOffset.length = 0;\n\t}\n\t/**\n\t * Returns true of the local reference is in the collection, otherwise false.\n\t *\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic has(lref: ReferencePosition): boolean {\n\t\tif (\n\t\t\t!(lref instanceof LocalReference) ||\n\t\t\trefTypeIncludesFlag(lref, ReferenceType.Transient)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tconst seg = lref.getSegment();\n\t\tif (seg !== this.segment) {\n\t\t\treturn false;\n\t\t}\n\t\t// we should be able to optimize finding the\n\t\t// list head\n\t\tconst listNode = lref.getListNode();\n\t\tif (listNode === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\tconst offset = lref.getOffset();\n\t\tconst refsAtOffset = this.refsByOffset[offset];\n\t\tif (\n\t\t\t!!refsAtOffset?.before?.includes(listNode) ||\n\t\t\t!!refsAtOffset?.at?.includes(listNode) ||\n\t\t\t!!refsAtOffset?.after?.includes(listNode)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Splits this `LocalReferenceCollection` into the intervals [0, offset) and [offset, originalLength).\n\t * Local references in the former half of this split will remain associated with the segment used on construction.\n\t * Local references in the latter half of this split will be transferred to `splitSeg`,\n\t * and its `localRefs` field will be set.\n\t * @param offset - Offset into the original segment at which the collection should be split\n\t * @param splitSeg - Split segment which originally corresponded to the indices [offset, originalLength)\n\t * before splitting.\n\t *\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic split(offset: number, splitSeg: ISegment) {\n\t\tif (!this.empty) {\n\t\t\tconst localRefs = new LocalReferenceCollection(\n\t\t\t\tsplitSeg,\n\t\t\t\tthis.refsByOffset.splice(offset, this.refsByOffset.length - offset),\n\t\t\t);\n\n\t\t\tsplitSeg.localRefs = localRefs;\n\t\t\tfor (const lref of localRefs) {\n\t\t\t\tassertLocalReferences(lref);\n\t\t\t\tlref.link(splitSeg, lref.getOffset() - offset, lref.getListNode());\n\t\t\t\tthis.refCount--;\n\t\t\t\tlocalRefs.refCount++;\n\t\t\t}\n\t\t} else {\n\t\t\t// shrink the offset array when empty and splitting\n\t\t\tthis.refsByOffset.length = offset;\n\t\t}\n\t\tvalidateRefCount?.(this);\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic addBeforeTombstones(...refs: Iterable<LocalReferencePosition>[]) {\n\t\tconst beforeRefs = this.refsByOffset[0]?.before ?? new DoublyLinkedList();\n\n\t\tif (this.refsByOffset[0]?.before === undefined) {\n\t\t\tconst refsAtOffset = (this.refsByOffset[0] ??= { before: beforeRefs });\n\t\t\trefsAtOffset.before ??= beforeRefs;\n\t\t}\n\n\t\tlet precedingRef: ListNode<LocalReference> | undefined;\n\t\tfor (const iterable of refs) {\n\t\t\tfor (const lref of iterable) {\n\t\t\t\tassertLocalReferences(lref);\n\t\t\t\tif (refTypeIncludesFlag(lref, ReferenceType.StayOnRemove)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {\n\t\t\t\t\tlref.callbacks?.beforeSlide?.(lref);\n\t\t\t\t\tprecedingRef =\n\t\t\t\t\t\tprecedingRef === undefined\n\t\t\t\t\t\t\t? beforeRefs.unshift(lref)?.first\n\t\t\t\t\t\t\t: beforeRefs.insertAfter(precedingRef, lref)?.first;\n\t\t\t\t\tlref.link(this.segment, 0, precedingRef);\n\t\t\t\t\tthis.refCount++;\n\t\t\t\t\tlref.callbacks?.afterSlide?.(lref);\n\t\t\t\t} else {\n\t\t\t\t\tlref.link(undefined, 0, undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvalidateRefCount?.(this);\n\t}\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic addAfterTombstones(...refs: Iterable<LocalReferencePosition>[]) {\n\t\tconst lastOffset = this.segment.cachedLength - 1;\n\t\tconst afterRefs = this.refsByOffset[lastOffset]?.after ?? new DoublyLinkedList();\n\n\t\tif (this.refsByOffset[lastOffset]?.after === undefined) {\n\t\t\tconst refsAtOffset = (this.refsByOffset[lastOffset] ??= { after: afterRefs });\n\t\t\trefsAtOffset.after ??= afterRefs;\n\t\t}\n\n\t\tfor (const iterable of refs) {\n\t\t\tfor (const lref of iterable) {\n\t\t\t\tassertLocalReferences(lref);\n\t\t\t\tif (refTypeIncludesFlag(lref, ReferenceType.StayOnRemove)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {\n\t\t\t\t\tlref.callbacks?.beforeSlide?.(lref);\n\t\t\t\t\tafterRefs.push(lref);\n\t\t\t\t\tlref.link(this.segment, lastOffset, afterRefs.last);\n\t\t\t\t\tthis.refCount++;\n\t\t\t\t\tlref.callbacks?.afterSlide?.(lref);\n\t\t\t\t} else {\n\t\t\t\t\tlref.link(undefined, 0, undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvalidateRefCount?.(this);\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic isAfterTombstone(lref: LocalReferencePosition) {\n\t\tconst after = this.refsByOffset[lref.getOffset()]?.after;\n\t\tif (after) {\n\t\t\tassertLocalReferences(lref);\n\t\t\treturn after.includes(lref.getListNode());\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @remarks This method should only be called by mergeTree.\n\t */\n\tpublic walkReferences(\n\t\tvisitor: (lref: LocalReferencePosition) => boolean | void | undefined,\n\t\tstart?: LocalReferencePosition,\n\t\tforward: boolean = true,\n\t) {\n\t\tif (start !== undefined) {\n\t\t\tif (!this.has(start)) {\n\t\t\t\tthrow new UsageError(\"start must be in collection\");\n\t\t\t}\n\t\t\tassertLocalReferences(start);\n\t\t}\n\t\tlet offset = start?.getOffset() ?? (forward ? 0 : this.segment.cachedLength - 1);\n\n\t\tconst offsetPositions: DoublyLinkedList<IRefsAtOffset[keyof IRefsAtOffset]> =\n\t\t\tnew DoublyLinkedList();\n\t\toffsetPositions.push(\n\t\t\tthis.refsByOffset[offset]?.before,\n\t\t\tthis.refsByOffset[offset]?.at,\n\t\t\tthis.refsByOffset[offset]?.after,\n\t\t);\n\n\t\tconst startNode = start?.getListNode();\n\t\tconst startList = startNode?.list;\n\n\t\tif (startList !== undefined) {\n\t\t\tif (forward) {\n\t\t\t\twhile (!offsetPositions.empty && offsetPositions.first !== startNode) {\n\t\t\t\t\toffsetPositions.shift();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile (!offsetPositions.empty && offsetPositions.last !== startNode) {\n\t\t\t\t\toffsetPositions.pop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst listWalker = (pos: DoublyLinkedList<LocalReference>) => {\n\t\t\treturn walkList(\n\t\t\t\tpos,\n\t\t\t\t(node) => visitor(node.data),\n\t\t\t\tstartList === pos ? startNode : undefined,\n\t\t\t\tforward,\n\t\t\t);\n\t\t};\n\t\tconst increment = forward ? 1 : -1;\n\t\twhile (offset >= 0 && offset < this.refsByOffset.length) {\n\t\t\twhile (offsetPositions.length > 0) {\n\t\t\t\tconst offsetPos = forward ? offsetPositions.shift() : offsetPositions.pop();\n\t\t\t\tif (offsetPos?.data !== undefined) {\n\t\t\t\t\tif (listWalker(offsetPos.data) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset += increment;\n\t\t\toffsetPositions.push(\n\t\t\t\tthis.refsByOffset[offset]?.before,\n\t\t\t\tthis.refsByOffset[offset]?.at,\n\t\t\t\tthis.refsByOffset[offset]?.after,\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n}\n"]}
|