@fluidframework/merge-tree 2.12.0 → 2.20.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 +46 -0
- package/api-report/merge-tree.legacy.alpha.api.md +0 -108
- package/dist/MergeTreeTextHelper.d.ts.map +1 -1
- package/dist/MergeTreeTextHelper.js +0 -2
- package/dist/MergeTreeTextHelper.js.map +1 -1
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +6 -16
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +3 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -28
- package/dist/client.js.map +1 -1
- package/dist/endOfTreeSegment.d.ts +2 -1
- package/dist/endOfTreeSegment.d.ts.map +1 -1
- package/dist/endOfTreeSegment.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +0 -4
- package/dist/localReference.d.ts +5 -7
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +1 -3
- package/dist/localReference.js.map +1 -1
- package/dist/mergeTree.d.ts +8 -7
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +187 -228
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js +3 -2
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +65 -325
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +96 -130
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/mergeTreeTracking.d.ts.map +1 -1
- package/dist/mergeTreeTracking.js +0 -2
- package/dist/mergeTreeTracking.js.map +1 -1
- package/dist/opBuilder.d.ts +0 -5
- package/dist/opBuilder.d.ts.map +1 -1
- package/dist/opBuilder.js +0 -5
- package/dist/opBuilder.js.map +1 -1
- package/dist/package.json +2 -1
- package/dist/partialLengths.d.ts +2 -2
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +29 -31
- package/dist/partialLengths.js.map +1 -1
- package/dist/perspective.d.ts +3 -2
- package/dist/perspective.d.ts.map +1 -1
- package/dist/perspective.js +5 -2
- package/dist/perspective.js.map +1 -1
- package/dist/referencePositions.d.ts.map +1 -1
- package/dist/referencePositions.js +4 -1
- package/dist/referencePositions.js.map +1 -1
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +10 -14
- package/dist/revertibles.js.map +1 -1
- package/dist/segmentGroupCollection.d.ts +4 -4
- package/dist/segmentGroupCollection.d.ts.map +1 -1
- package/dist/segmentGroupCollection.js +0 -6
- package/dist/segmentGroupCollection.js.map +1 -1
- package/dist/segmentInfos.d.ts +251 -0
- package/dist/segmentInfos.d.ts.map +1 -0
- package/dist/segmentInfos.js +166 -0
- package/dist/segmentInfos.js.map +1 -0
- package/dist/snapshotLoader.d.ts.map +1 -1
- package/dist/snapshotLoader.js +36 -44
- package/dist/snapshotLoader.js.map +1 -1
- package/dist/snapshotV1.d.ts.map +1 -1
- package/dist/snapshotV1.js +9 -12
- 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 +5 -3
- package/dist/snapshotlegacy.js.map +1 -1
- package/dist/sortedSegmentSet.d.ts.map +1 -1
- package/dist/sortedSegmentSet.js +5 -8
- package/dist/sortedSegmentSet.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts +0 -2
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +1 -5
- package/dist/test/beastTest.spec.js.map +1 -1
- package/dist/test/client.annotateMarker.spec.js.map +1 -1
- package/dist/test/client.applyMsg.spec.js +15 -12
- package/dist/test/client.applyMsg.spec.js.map +1 -1
- package/dist/test/client.attributionFarm.spec.js.map +1 -1
- package/dist/test/client.getPosition.spec.js +3 -2
- package/dist/test/client.getPosition.spec.js.map +1 -1
- package/dist/test/client.localReference.spec.js +6 -6
- package/dist/test/client.localReference.spec.js.map +1 -1
- package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
- package/dist/test/client.rollback.spec.js.map +1 -1
- package/dist/test/dirname.cjs +0 -1
- package/dist/test/dirname.cjs.map +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -4
- package/dist/test/index.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +3 -0
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js +1 -1
- package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/dist/test/mergeTree.markRangeRemoved.spec.js +2 -0
- package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/dist/test/mergeTree.walk.spec.js.map +1 -1
- package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/dist/test/mergeTreeOperationRunner.js +2 -3
- package/dist/test/mergeTreeOperationRunner.js.map +1 -1
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/propertyManager.spec.js.map +1 -1
- package/dist/test/reconnectHelper.d.ts +2 -1
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/dist/test/revertibleFarm.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +15 -3
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts +2 -2
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/test/sortedSegmentSet.spec.js +4 -3
- package/dist/test/sortedSegmentSet.spec.js.map +1 -1
- package/dist/test/testClient.d.ts +8 -6
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +28 -27
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +6 -4
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testUtils.d.ts +2 -2
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +32 -8
- 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 +12 -6
- package/dist/test/text.js.map +1 -1
- package/dist/test/tracking.spec.js.map +1 -1
- package/dist/test/wordUnitTests.spec.js +1 -1
- package/dist/test/wordUnitTests.spec.js.map +1 -1
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +8 -7
- package/dist/zamboni.js.map +1 -1
- package/lib/MergeTreeTextHelper.d.ts.map +1 -1
- package/lib/MergeTreeTextHelper.js +0 -2
- package/lib/MergeTreeTextHelper.js.map +1 -1
- package/lib/attributionPolicy.d.ts.map +1 -1
- package/lib/attributionPolicy.js +6 -16
- package/lib/attributionPolicy.js.map +1 -1
- package/lib/client.d.ts +3 -4
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +40 -29
- package/lib/client.js.map +1 -1
- package/lib/endOfTreeSegment.d.ts +2 -1
- package/lib/endOfTreeSegment.d.ts.map +1 -1
- package/lib/endOfTreeSegment.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +0 -4
- package/lib/localReference.d.ts +5 -7
- package/lib/localReference.d.ts.map +1 -1
- package/lib/localReference.js +1 -3
- package/lib/localReference.js.map +1 -1
- package/lib/mergeTree.d.ts +8 -7
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +175 -220
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
- package/lib/mergeTreeNodeWalk.js +3 -2
- package/lib/mergeTreeNodeWalk.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +65 -325
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +92 -127
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/mergeTreeTracking.d.ts.map +1 -1
- package/lib/mergeTreeTracking.js +0 -2
- package/lib/mergeTreeTracking.js.map +1 -1
- package/lib/opBuilder.d.ts +0 -5
- package/lib/opBuilder.d.ts.map +1 -1
- package/lib/opBuilder.js +0 -5
- package/lib/opBuilder.js.map +1 -1
- package/lib/partialLengths.d.ts +2 -2
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +26 -28
- package/lib/partialLengths.js.map +1 -1
- package/lib/perspective.d.ts +3 -2
- package/lib/perspective.d.ts.map +1 -1
- package/lib/perspective.js +5 -2
- package/lib/perspective.js.map +1 -1
- package/lib/referencePositions.d.ts.map +1 -1
- package/lib/referencePositions.js +4 -1
- package/lib/referencePositions.js.map +1 -1
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +8 -12
- package/lib/revertibles.js.map +1 -1
- package/lib/segmentGroupCollection.d.ts +4 -4
- package/lib/segmentGroupCollection.d.ts.map +1 -1
- package/lib/segmentGroupCollection.js +0 -6
- package/lib/segmentGroupCollection.js.map +1 -1
- package/lib/segmentInfos.d.ts +251 -0
- package/lib/segmentInfos.d.ts.map +1 -0
- package/lib/segmentInfos.js +145 -0
- package/lib/segmentInfos.js.map +1 -0
- package/lib/snapshotLoader.d.ts.map +1 -1
- package/lib/snapshotLoader.js +36 -44
- package/lib/snapshotLoader.js.map +1 -1
- package/lib/snapshotV1.d.ts.map +1 -1
- package/lib/snapshotV1.js +9 -12
- package/lib/snapshotV1.js.map +1 -1
- package/lib/snapshotlegacy.d.ts +2 -2
- package/lib/snapshotlegacy.d.ts.map +1 -1
- package/lib/snapshotlegacy.js +5 -3
- package/lib/snapshotlegacy.js.map +1 -1
- package/lib/sortedSegmentSet.d.ts.map +1 -1
- package/lib/sortedSegmentSet.js +5 -8
- package/lib/sortedSegmentSet.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts +0 -2
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +0 -3
- package/lib/test/beastTest.spec.js.map +1 -1
- package/lib/test/client.annotateMarker.spec.js.map +1 -1
- package/lib/test/client.applyMsg.spec.js +15 -12
- package/lib/test/client.applyMsg.spec.js.map +1 -1
- package/lib/test/client.attributionFarm.spec.js.map +1 -1
- package/lib/test/client.getPosition.spec.js +3 -2
- package/lib/test/client.getPosition.spec.js.map +1 -1
- package/lib/test/client.localReference.spec.js +1 -1
- package/lib/test/client.localReference.spec.js.map +1 -1
- package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
- package/lib/test/client.rollback.spec.js +1 -1
- package/lib/test/client.rollback.spec.js.map +1 -1
- package/lib/test/dirname.cjs +0 -1
- package/lib/test/dirname.cjs.map +1 -1
- package/lib/test/index.d.ts +1 -1
- package/lib/test/index.d.ts.map +1 -1
- package/lib/test/index.js +1 -1
- package/lib/test/index.js.map +1 -1
- package/lib/test/mergeTree.annotate.spec.js +3 -0
- package/lib/test/mergeTree.annotate.spec.js.map +1 -1
- package/lib/test/mergeTree.insertingWalk.spec.js +2 -2
- package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
- package/lib/test/mergeTree.markRangeRemoved.spec.js +2 -0
- package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
- package/lib/test/mergeTree.walk.spec.js.map +1 -1
- package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
- package/lib/test/mergeTreeOperationRunner.js +1 -2
- package/lib/test/mergeTreeOperationRunner.js.map +1 -1
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/propertyManager.spec.js.map +1 -1
- package/lib/test/reconnectHelper.d.ts +2 -1
- package/lib/test/reconnectHelper.d.ts.map +1 -1
- package/lib/test/reconnectHelper.js.map +1 -1
- package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
- package/lib/test/revertibleFarm.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js +15 -3
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/snapshot.utils.d.ts +2 -2
- package/lib/test/snapshot.utils.d.ts.map +1 -1
- package/lib/test/snapshot.utils.js.map +1 -1
- package/lib/test/sortedSegmentSet.spec.js +4 -3
- package/lib/test/sortedSegmentSet.spec.js.map +1 -1
- package/lib/test/testClient.d.ts +8 -6
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +29 -28
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +5 -3
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testUtils.d.ts +2 -2
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +9 -8
- package/lib/test/testUtils.js.map +1 -1
- package/lib/test/text.d.ts +2 -2
- package/lib/test/text.d.ts.map +1 -1
- package/lib/test/text.js +12 -6
- package/lib/test/text.js.map +1 -1
- package/lib/test/tracking.spec.js.map +1 -1
- package/lib/test/wordUnitTests.spec.js +1 -1
- package/lib/test/wordUnitTests.spec.js.map +1 -1
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js +7 -6
- package/lib/zamboni.js.map +1 -1
- package/package.json +77 -19
- package/src/MergeTreeTextHelper.ts +2 -4
- package/src/attributionPolicy.ts +5 -13
- package/src/client.ts +55 -44
- package/src/endOfTreeSegment.ts +3 -5
- package/src/index.ts +0 -7
- package/src/localReference.ts +6 -8
- package/src/mergeTree.ts +233 -290
- package/src/mergeTreeNodeWalk.ts +3 -2
- package/src/mergeTreeNodes.ts +160 -490
- package/src/mergeTreeTracking.ts +0 -3
- package/src/opBuilder.ts +0 -5
- package/src/partialLengths.ts +40 -29
- package/src/perspective.ts +23 -4
- package/src/referencePositions.ts +4 -1
- package/src/revertibles.ts +19 -16
- package/src/segmentGroupCollection.ts +7 -18
- package/src/segmentInfos.ts +371 -0
- package/src/snapshotLoader.ts +56 -57
- package/src/snapshotV1.ts +14 -16
- package/src/snapshotlegacy.ts +12 -17
- package/src/sortedSegmentSet.ts +6 -8
- package/src/zamboni.ts +10 -12
package/dist/opBuilder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opBuilder.js","sourceRoot":"","sources":["../src/opBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"opBuilder.js","sourceRoot":"","sources":["../src/opBuilder.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 { ISegment, Marker } from \"./mergeTreeNodes.js\";\nimport {\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeDeltaOp,\n\t// eslint-disable-next-line import/no-deprecated\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\t// eslint-disable-next-line import/no-deprecated\n\tIMergeTreeObliterateMsg,\n\tIMergeTreeRemoveMsg,\n\tMergeTreeDeltaType,\n\ttype AdjustParams,\n\ttype IMergeTreeAnnotateAdjustMsg,\n\ttype IMergeTreeObliterateSidedMsg,\n} from \"./ops.js\";\nimport { PropertySet, type MapLike } from \"./properties.js\";\nimport { normalizePlace, Side, type SequencePlace } from \"./sequencePlace.js\";\n\n/**\n * Creates the op for annotating the markers with the provided properties\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @returns The annotate op\n *\n * @internal\n */\nexport function createAnnotateMarkerOp(\n\tmarker: Marker,\n\tprops: PropertySet,\n): IMergeTreeAnnotateMsg | undefined {\n\tconst id = marker.getId();\n\tif (!id) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tprops: { ...props },\n\t\trelativePos1: { id, before: true },\n\t\trelativePos2: { id },\n\t\ttype: MergeTreeDeltaType.ANNOTATE,\n\t};\n}\n\n/**\n * Creates the op for annotating the range with the provided properties\n * @param start - The inclusive start position of the range to annotate\n * @param end - The exclusive end position of the range to annotate\n * @param props - The properties to annotate the range with\n * @returns The annotate op\n *\n * @internal\n */\nexport function createAnnotateRangeOp(\n\tstart: number,\n\tend: number,\n\tprops: PropertySet,\n): IMergeTreeAnnotateMsg {\n\treturn {\n\t\tpos1: start,\n\t\tpos2: end,\n\t\tprops: { ...props },\n\t\ttype: MergeTreeDeltaType.ANNOTATE,\n\t};\n}\n\n/**\n * Creates the op for annotating the range with the provided properties\n * @param start - The inclusive start position of the range to annotate\n * @param end - The exclusive end position of the range to annotate\n * @param props - The properties to annotate the range with\n * @returns The annotate op\n *\n * @internal\n */\nexport function createAdjustRangeOp(\n\tstart: number,\n\tend: number,\n\tadjust: MapLike<AdjustParams>,\n): IMergeTreeAnnotateAdjustMsg {\n\treturn {\n\t\tpos1: start,\n\t\tpos2: end,\n\t\tadjust: { ...adjust },\n\t\ttype: MergeTreeDeltaType.ANNOTATE,\n\t};\n}\n\n/**\n * Creates the op to remove a range\n *\n * @param start - The inclusive start of the range to remove\n * @param end - The exclusive end of the range to remove\n *\n * @internal\n */\nexport function createRemoveRangeOp(start: number, end: number): IMergeTreeRemoveMsg {\n\treturn {\n\t\tpos1: start,\n\t\tpos2: end,\n\t\ttype: MergeTreeDeltaType.REMOVE,\n\t};\n}\n\n/**\n * Creates the op to obliterate a range\n *\n * @param start - The inclusive start of the range to obliterate\n * @param end - The exclusive end of the range to obliterate\n *\n * @internal\n */\n// eslint-disable-next-line import/no-deprecated\nexport function createObliterateRangeOp(start: number, end: number): IMergeTreeObliterateMsg {\n\treturn {\n\t\tpos1: start,\n\t\tpos2: end,\n\t\ttype: MergeTreeDeltaType.OBLITERATE,\n\t};\n}\n\n/**\n * Creates the op to obliterate a range\n *\n * @param start - The start of the range to obliterate.\n * If a number is provided, the range will start before that index.\n * @param end - The end of the range to obliterate.\n * If a number is provided, the range will end after that index -1.\n * This preserves the previous behavior of not expanding obliteration ranges at the endpoints\n * for uses which predate the availability of endpoint expansion.\n *\n * @internal\n */\nexport function createObliterateRangeOpSided(\n\tstart: SequencePlace,\n\tend: SequencePlace,\n): IMergeTreeObliterateSidedMsg {\n\tconst startPlace = normalizePlace(start);\n\t// If a number is provided, default to after the previous index.\n\t// This preserves the behavior of obliterate prior to the introduction of endpoint expansion.\n\tconst endPlace =\n\t\ttypeof end === \"number\"\n\t\t\t? { pos: end - 1, side: Side.After } // default to inclusive bounds\n\t\t\t: normalizePlace(end);\n\treturn {\n\t\ttype: MergeTreeDeltaType.OBLITERATE_SIDED,\n\t\tpos1: { pos: startPlace.pos, before: startPlace.side === Side.Before },\n\t\tpos2: { pos: endPlace.pos, before: endPlace.side === Side.Before },\n\t};\n}\n\n/**\n * Creates an op for inserting a segment at the specified position.\n *\n * @param pos - The position to insert the segment at\n * @param segment - The segment to insert\n *\n * @internal\n */\nexport function createInsertSegmentOp(pos: number, segment: ISegment): IMergeTreeInsertMsg {\n\treturn createInsertOp(pos, segment.toJSONObject());\n}\n\n/**\n * Creates the op for inserting a segment from its JSON representation at\n * the specified position.\n *\n * @internal\n */\nexport function createInsertOp(pos: number, segSpec: unknown): IMergeTreeInsertMsg {\n\treturn {\n\t\tpos1: pos,\n\t\tseg: segSpec,\n\t\ttype: MergeTreeDeltaType.INSERT,\n\t};\n}\n\n/**\n * Creates a group op from the provided ops.\n *\n * @param ops - The ops to group\n *\n * @internal\n */\n// eslint-disable-next-line import/no-deprecated\nexport function createGroupOp(...ops: IMergeTreeDeltaOp[]): IMergeTreeGroupMsg {\n\treturn {\n\t\tops,\n\t\ttype: MergeTreeDeltaType.GROUP,\n\t};\n}\n"]}
|
package/dist/package.json
CHANGED
package/dist/partialLengths.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { RedBlackTree } from "./collections/index.js";
|
|
6
6
|
import { MergeTree } from "./mergeTree.js";
|
|
7
|
-
import { CollaborationWindow,
|
|
7
|
+
import { CollaborationWindow, ISegmentPrivate, type MergeBlock } from "./mergeTreeNodes.js";
|
|
8
8
|
interface IOverlapClient {
|
|
9
9
|
clientId: number;
|
|
10
10
|
seglen: number;
|
|
@@ -155,7 +155,7 @@ export declare class PartialSequenceLengths {
|
|
|
155
155
|
* @param firstGte - Existing partial length entry
|
|
156
156
|
* @param clientIds - Ids of clients that concurrently obliterated this segment
|
|
157
157
|
*/
|
|
158
|
-
static accumulateMoveOverlapForExisting(segmentLen: number, segment:
|
|
158
|
+
static accumulateMoveOverlapForExisting(segmentLen: number, segment: ISegmentPrivate, firstGte: PartialSequenceLength, clientIds: number[]): void;
|
|
159
159
|
/**
|
|
160
160
|
* Tracks which clients have made concurrent obliterates.
|
|
161
161
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partialLengths.d.ts","sourceRoot":"","sources":["../src/partialLengths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAY,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"partialLengths.d.ts","sourceRoot":"","sources":["../src/partialLengths.ts"],"names":[],"mappings":"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"}
|
package/dist/partialLengths.js
CHANGED
|
@@ -9,9 +9,8 @@ const internal_1 = require("@fluidframework/core-utils/internal");
|
|
|
9
9
|
const index_js_1 = require("./collections/index.js");
|
|
10
10
|
const constants_js_1 = require("./constants.js");
|
|
11
11
|
const mergeTreeNodes_js_1 = require("./mergeTreeNodes.js");
|
|
12
|
-
|
|
12
|
+
const segmentInfos_js_1 = require("./segmentInfos.js");
|
|
13
13
|
const sortedSet_js_1 = require("./sortedSet.js");
|
|
14
|
-
// eslint-disable-next-line import/no-deprecated
|
|
15
14
|
class PartialSequenceLengthsSet extends sortedSet_js_1.SortedSet {
|
|
16
15
|
getKey(item) {
|
|
17
16
|
return item.seq;
|
|
@@ -139,9 +138,7 @@ class PartialSequenceLengths {
|
|
|
139
138
|
* This enables querying for the length of the block at a given localSeq, but incurs extra work.
|
|
140
139
|
* Local partial information doesn't support `update`.
|
|
141
140
|
*/
|
|
142
|
-
static combine(block,
|
|
143
|
-
// eslint-disable-next-line import/no-deprecated
|
|
144
|
-
collabWindow, recur = false, computeLocalPartials = false) {
|
|
141
|
+
static combine(block, collabWindow, recur = false, computeLocalPartials = false) {
|
|
145
142
|
const leafPartialLengths = PartialSequenceLengths.fromLeaves(block, collabWindow, computeLocalPartials);
|
|
146
143
|
let hasInternalChild = false;
|
|
147
144
|
const childPartials = [];
|
|
@@ -203,9 +200,7 @@ class PartialSequenceLengths {
|
|
|
203
200
|
* Creates and returns a PartialSequenceLengths structure that tracks the lengths of only the
|
|
204
201
|
* leaf children of the provided MergeBlock.
|
|
205
202
|
*/
|
|
206
|
-
static fromLeaves(block,
|
|
207
|
-
// eslint-disable-next-line import/no-deprecated
|
|
208
|
-
collabWindow, computeLocalPartials) {
|
|
203
|
+
static fromLeaves(block, collabWindow, computeLocalPartials) {
|
|
209
204
|
const combinedPartialLengths = new PartialSequenceLengths(collabWindow.minSeq, computeLocalPartials);
|
|
210
205
|
combinedPartialLengths.segmentCount = block.childCount;
|
|
211
206
|
for (let i = 0; i < block.childCount; i++) {
|
|
@@ -219,8 +214,8 @@ class PartialSequenceLengths {
|
|
|
219
214
|
else {
|
|
220
215
|
PartialSequenceLengths.insertSegment(combinedPartialLengths, segment);
|
|
221
216
|
}
|
|
222
|
-
const removalInfo = (0,
|
|
223
|
-
const moveInfo = (0,
|
|
217
|
+
const removalInfo = (0, segmentInfos_js_1.toRemovalInfo)(segment);
|
|
218
|
+
const moveInfo = (0, segmentInfos_js_1.toMoveInfo)(segment);
|
|
224
219
|
if ((removalInfo?.removedSeq !== undefined &&
|
|
225
220
|
(0, mergeTreeNodes_js_1.seqLTE)(removalInfo.removedSeq, collabWindow.minSeq)) ||
|
|
226
221
|
(moveInfo?.movedSeq !== undefined && (0, mergeTreeNodes_js_1.seqLTE)(moveInfo.movedSeq, collabWindow.minSeq))) {
|
|
@@ -300,6 +295,7 @@ class PartialSequenceLengths {
|
|
|
300
295
|
* @param clientIds - Ids of clients that concurrently obliterated this segment
|
|
301
296
|
*/
|
|
302
297
|
static accumulateMoveOverlapForExisting(segmentLen, segment, firstGte, clientIds) {
|
|
298
|
+
(0, segmentInfos_js_1.assertInserted)(segment);
|
|
303
299
|
const nonInsertingClientIds = clientIds.filter((id) => id !== segment.clientId);
|
|
304
300
|
PartialSequenceLengths.accumulateMoveClientOverlap(firstGte, nonInsertingClientIds, segmentLen);
|
|
305
301
|
// if this segment was obliterated by the client that inserted it,
|
|
@@ -307,7 +303,7 @@ class PartialSequenceLengths {
|
|
|
307
303
|
// take into account whether it was obliterated on insert by the other
|
|
308
304
|
// client
|
|
309
305
|
if (clientIds.length !== nonInsertingClientIds.length) {
|
|
310
|
-
PartialSequenceLengths.accumulateMoveClientOverlap(firstGte, [segment.clientId], segment
|
|
306
|
+
PartialSequenceLengths.accumulateMoveClientOverlap(firstGte, [segment.clientId], (0, segmentInfos_js_1.toMoveInfo)(segment)?.wasMovedOnInsert ? -segment.cachedLength : segmentLen);
|
|
311
307
|
}
|
|
312
308
|
}
|
|
313
309
|
/**
|
|
@@ -318,12 +314,15 @@ class PartialSequenceLengths {
|
|
|
318
314
|
* segment
|
|
319
315
|
*/
|
|
320
316
|
static getMoveOverlapForExisting(segment, obliterateOverlapLen, clientIds) {
|
|
317
|
+
(0, segmentInfos_js_1.assertInserted)(segment);
|
|
321
318
|
const nonInsertingClientIds = clientIds.filter((id) => id !== segment.clientId);
|
|
322
319
|
const overlapObliterateClients = PartialSequenceLengths.getOverlapClients(nonInsertingClientIds, obliterateOverlapLen);
|
|
323
320
|
if (clientIds.length !== nonInsertingClientIds.length) {
|
|
324
321
|
overlapObliterateClients.put(segment.clientId, {
|
|
325
322
|
clientId: segment.clientId,
|
|
326
|
-
seglen: segment
|
|
323
|
+
seglen: (0, segmentInfos_js_1.toMoveInfo)(segment)?.wasMovedOnInsert
|
|
324
|
+
? -segment.cachedLength
|
|
325
|
+
: obliterateOverlapLen,
|
|
327
326
|
});
|
|
328
327
|
}
|
|
329
328
|
return overlapObliterateClients;
|
|
@@ -380,11 +379,8 @@ class PartialSequenceLengths {
|
|
|
380
379
|
* analogous addition to the bookkeeping for the local segment in
|
|
381
380
|
* `combinedPartialLengths.unsequencedRecords`.
|
|
382
381
|
*/
|
|
383
|
-
static insertSegment(combinedPartialLengths, segment,
|
|
384
|
-
|
|
385
|
-
removalInfo,
|
|
386
|
-
// eslint-disable-next-line import/no-deprecated
|
|
387
|
-
moveInfo) {
|
|
382
|
+
static insertSegment(combinedPartialLengths, segment, removalInfo, moveInfo) {
|
|
383
|
+
(0, segmentInfos_js_1.assertInserted)(segment);
|
|
388
384
|
const removalIsLocal = !!removalInfo && removalInfo.removedSeq === constants_js_1.UnassignedSequenceNumber;
|
|
389
385
|
const moveIsLocal = !!moveInfo && moveInfo.movedSeq === constants_js_1.UnassignedSequenceNumber;
|
|
390
386
|
const isLocal = segment.seq === constants_js_1.UnassignedSequenceNumber ||
|
|
@@ -419,7 +415,7 @@ class PartialSequenceLengths {
|
|
|
419
415
|
clientId = moveInfo.movedClientIds[0];
|
|
420
416
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
421
417
|
seqOrLocalSeq = moveIsLocal ? moveInfo.localMovedSeq : moveInfo.movedSeq;
|
|
422
|
-
if (
|
|
418
|
+
if (moveInfo.wasMovedOnInsert) {
|
|
423
419
|
(0, internal_1.assert)(moveInfo.movedSeq !== -1, 0x871 /* wasMovedOnInsert should only be set on acked obliterates */);
|
|
424
420
|
segmentLen = 0;
|
|
425
421
|
}
|
|
@@ -428,8 +424,10 @@ class PartialSequenceLengths {
|
|
|
428
424
|
}
|
|
429
425
|
const hasOverlap = moveInfo.movedClientIds.length > 1;
|
|
430
426
|
moveClientOverlap = hasOverlap ? moveInfo.movedClientIds : undefined;
|
|
431
|
-
}
|
|
432
|
-
|
|
427
|
+
} // BUG BUG: something fishy here around how/when move info is passed or not
|
|
428
|
+
// this condition only hits if it is not passed, so we can't rely on the passed move info
|
|
429
|
+
// and need to inspect the segment directly. maybe related to AB#15630.
|
|
430
|
+
else if ((0, segmentInfos_js_1.toMoveInfo)(segment)?.wasMovedOnInsert) {
|
|
433
431
|
// if this segment was obliterated on insert, its length is only
|
|
434
432
|
// visible to the client that inserted it
|
|
435
433
|
segmentLen = 0;
|
|
@@ -465,7 +463,10 @@ class PartialSequenceLengths {
|
|
|
465
463
|
// todo: the below block needs to be changed to handle obliterate, which
|
|
466
464
|
// doesn't have great support for reconnect at the moment. see ADO #3714
|
|
467
465
|
const { unsequencedRecords } = combinedPartialLengths;
|
|
468
|
-
if (unsequencedRecords &&
|
|
466
|
+
if (unsequencedRecords &&
|
|
467
|
+
removeClientOverlap &&
|
|
468
|
+
(0, segmentInfos_js_1.isRemoved)(segment) &&
|
|
469
|
+
segment.localRemovedSeq !== undefined) {
|
|
469
470
|
const localSeq = segment.localRemovedSeq;
|
|
470
471
|
const localPartialLengthEntry = {
|
|
471
472
|
seq: seqOrLocalSeq,
|
|
@@ -566,9 +567,7 @@ class PartialSequenceLengths {
|
|
|
566
567
|
// with sequence number seq has been added within the sub-tree (and `update` has been called
|
|
567
568
|
// on all descendant PartialSequenceLengths)
|
|
568
569
|
// TODO: assert client id matches
|
|
569
|
-
update(node, seq, clientId,
|
|
570
|
-
// eslint-disable-next-line import/no-deprecated
|
|
571
|
-
collabWindow) {
|
|
570
|
+
update(node, seq, clientId, collabWindow) {
|
|
572
571
|
var _a;
|
|
573
572
|
let seqSeglen = 0;
|
|
574
573
|
let remoteObliteratedLen = 0;
|
|
@@ -578,8 +577,8 @@ class PartialSequenceLengths {
|
|
|
578
577
|
const child = node.children[i];
|
|
579
578
|
if (child.isLeaf()) {
|
|
580
579
|
const segment = child;
|
|
581
|
-
const removalInfo = (0,
|
|
582
|
-
const moveInfo = (0,
|
|
580
|
+
const removalInfo = (0, segmentInfos_js_1.toRemovalInfo)(segment);
|
|
581
|
+
const moveInfo = (0, segmentInfos_js_1.toMoveInfo)(segment);
|
|
583
582
|
const removalIsLocal = !!removalInfo && removalInfo.removedSeq === constants_js_1.UnassignedSequenceNumber;
|
|
584
583
|
const moveIsLocal = !!moveInfo && moveInfo.movedSeq === constants_js_1.UnassignedSequenceNumber;
|
|
585
584
|
const removeHappenedFirst = removalInfo &&
|
|
@@ -589,10 +588,10 @@ class PartialSequenceLengths {
|
|
|
589
588
|
if (seq === segment.seq) {
|
|
590
589
|
// if this segment was moved on insert, its length should
|
|
591
590
|
// only be visible to the inserting client
|
|
592
|
-
if (segment.
|
|
593
|
-
segment.seq !== undefined &&
|
|
591
|
+
if (segment.seq !== undefined &&
|
|
594
592
|
moveInfo &&
|
|
595
|
-
moveInfo.movedSeq < segment.seq
|
|
593
|
+
moveInfo.movedSeq < segment.seq &&
|
|
594
|
+
moveInfo.wasMovedOnInsert) {
|
|
596
595
|
remoteObliteratedLen += segment.cachedLength;
|
|
597
596
|
}
|
|
598
597
|
else {
|
|
@@ -614,7 +613,7 @@ class PartialSequenceLengths {
|
|
|
614
613
|
if (removeHappenedFirst) {
|
|
615
614
|
remoteObliteratedLen -= segment.cachedLength;
|
|
616
615
|
}
|
|
617
|
-
else if (
|
|
616
|
+
else if (moveInfo.wasMovedOnInsert &&
|
|
618
617
|
segment.seq !== constants_js_1.UnassignedSequenceNumber &&
|
|
619
618
|
segment.seq !== undefined &&
|
|
620
619
|
moveInfo.movedSeq > segment.seq) {
|
|
@@ -760,7 +759,6 @@ class PartialSequenceLengths {
|
|
|
760
759
|
return buf;
|
|
761
760
|
}
|
|
762
761
|
// Clear away partial sums for sequence numbers earlier than the current window
|
|
763
|
-
// eslint-disable-next-line import/no-deprecated
|
|
764
762
|
zamboni(segmentWindow) {
|
|
765
763
|
this.minLength += this.partialLengths.copyDown(segmentWindow.minSeq);
|
|
766
764
|
this.minSeq = segmentWindow.minSeq;
|