@fluidframework/merge-tree 2.3.1 → 2.4.0-297027
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/api-report/merge-tree.legacy.alpha.api.md +26 -7
- package/dist/attributionPolicy.d.ts.map +1 -1
- package/dist/attributionPolicy.js +10 -3
- package/dist/attributionPolicy.js.map +1 -1
- package/dist/client.d.ts +14 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +97 -10
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -0
- package/dist/mergeTree.d.ts +15 -2
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +68 -48
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +6 -9
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +2 -1
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/opBuilder.d.ts +15 -1
- package/dist/opBuilder.d.ts.map +1 -1
- package/dist/opBuilder.js +28 -1
- package/dist/opBuilder.js.map +1 -1
- package/dist/ops.d.ts +27 -1
- package/dist/ops.d.ts.map +1 -1
- package/dist/ops.js +1 -0
- package/dist/ops.js.map +1 -1
- package/dist/sequencePlace.d.ts +4 -0
- package/dist/sequencePlace.d.ts.map +1 -1
- package/dist/sequencePlace.js +17 -1
- package/dist/sequencePlace.js.map +1 -1
- package/dist/test/obliterate.concurrent.spec.js +18 -0
- package/dist/test/obliterate.concurrent.spec.js.map +1 -1
- package/dist/test/obliterate.partialLength.spec.js +8 -4
- package/dist/test/obliterate.partialLength.spec.js.map +1 -1
- package/dist/test/obliterate.rangeExpansion.spec.js +109 -53
- package/dist/test/obliterate.rangeExpansion.spec.js.map +1 -1
- package/dist/test/obliterate.spec.js +14 -8
- package/dist/test/obliterate.spec.js.map +1 -1
- package/dist/test/reconnectHelper.d.ts +8 -6
- package/dist/test/reconnectHelper.d.ts.map +1 -1
- package/dist/test/reconnectHelper.js +14 -13
- package/dist/test/reconnectHelper.js.map +1 -1
- package/dist/test/testClient.d.ts +1 -11
- package/dist/test/testClient.d.ts.map +1 -1
- package/dist/test/testClient.js +0 -3
- package/dist/test/testClient.js.map +1 -1
- package/dist/test/testClientLogger.d.ts.map +1 -1
- package/dist/test/testClientLogger.js +19 -8
- package/dist/test/testClientLogger.js.map +1 -1
- package/dist/test/testUtils.d.ts +10 -0
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +5 -1
- package/dist/test/testUtils.js.map +1 -1
- package/lib/attributionPolicy.d.ts.map +1 -1
- package/lib/attributionPolicy.js +10 -3
- package/lib/attributionPolicy.js.map +1 -1
- package/lib/client.d.ts +14 -4
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +98 -11
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -0
- package/lib/mergeTree.d.ts +15 -2
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +69 -49
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +6 -9
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +2 -1
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/opBuilder.d.ts +15 -1
- package/lib/opBuilder.d.ts.map +1 -1
- package/lib/opBuilder.js +26 -0
- package/lib/opBuilder.js.map +1 -1
- package/lib/ops.d.ts +27 -1
- package/lib/ops.d.ts.map +1 -1
- package/lib/ops.js +1 -0
- package/lib/ops.js.map +1 -1
- package/lib/sequencePlace.d.ts +4 -0
- package/lib/sequencePlace.d.ts.map +1 -1
- package/lib/sequencePlace.js +15 -0
- package/lib/sequencePlace.js.map +1 -1
- package/lib/test/obliterate.concurrent.spec.js +18 -0
- package/lib/test/obliterate.concurrent.spec.js.map +1 -1
- package/lib/test/obliterate.partialLength.spec.js +9 -5
- package/lib/test/obliterate.partialLength.spec.js.map +1 -1
- package/lib/test/obliterate.rangeExpansion.spec.js +109 -53
- package/lib/test/obliterate.rangeExpansion.spec.js.map +1 -1
- package/lib/test/obliterate.spec.js +15 -9
- package/lib/test/obliterate.spec.js.map +1 -1
- package/lib/test/reconnectHelper.d.ts +8 -6
- package/lib/test/reconnectHelper.d.ts.map +1 -1
- package/lib/test/reconnectHelper.js +15 -14
- package/lib/test/reconnectHelper.js.map +1 -1
- package/lib/test/testClient.d.ts +1 -11
- package/lib/test/testClient.d.ts.map +1 -1
- package/lib/test/testClient.js +0 -3
- package/lib/test/testClient.js.map +1 -1
- package/lib/test/testClientLogger.d.ts.map +1 -1
- package/lib/test/testClientLogger.js +19 -8
- package/lib/test/testClientLogger.js.map +1 -1
- package/lib/test/testUtils.d.ts +10 -0
- package/lib/test/testUtils.d.ts.map +1 -1
- package/lib/test/testUtils.js +3 -0
- package/lib/test/testUtils.js.map +1 -1
- package/package.json +30 -17
- package/src/attributionPolicy.ts +5 -0
- package/src/client.ts +138 -20
- package/src/index.ts +1 -0
- package/src/mergeTree.ts +116 -77
- package/src/mergeTreeNodes.ts +9 -10
- package/src/opBuilder.ts +32 -0
- package/src/ops.ts +23 -1
- package/src/sequencePlace.ts +16 -0
package/src/opBuilder.ts
CHANGED
|
@@ -14,8 +14,10 @@ import {
|
|
|
14
14
|
IMergeTreeObliterateMsg,
|
|
15
15
|
IMergeTreeRemoveMsg,
|
|
16
16
|
MergeTreeDeltaType,
|
|
17
|
+
type IMergeTreeObliterateSidedMsg,
|
|
17
18
|
} from "./ops.js";
|
|
18
19
|
import { PropertySet } from "./properties.js";
|
|
20
|
+
import { normalizePlace, Side, type SequencePlace } from "./sequencePlace.js";
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* Creates the op for annotating the markers with the provided properties
|
|
@@ -97,6 +99,36 @@ export function createObliterateRangeOp(start: number, end: number): IMergeTreeO
|
|
|
97
99
|
};
|
|
98
100
|
}
|
|
99
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Creates the op to obliterate a range
|
|
104
|
+
*
|
|
105
|
+
* @param start - The start of the range to obliterate.
|
|
106
|
+
* If a number is provided, the range will start before that index.
|
|
107
|
+
* @param end - The end of the range to obliterate.
|
|
108
|
+
* If a number is provided, the range will end after that index -1.
|
|
109
|
+
* This preserves the previous behavior of not expanding obliteration ranges at the endpoints
|
|
110
|
+
* for uses which predate the availability of endpoint expansion.
|
|
111
|
+
*
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
export function createObliterateRangeOpSided(
|
|
115
|
+
start: SequencePlace,
|
|
116
|
+
end: SequencePlace,
|
|
117
|
+
): IMergeTreeObliterateSidedMsg {
|
|
118
|
+
const startPlace = normalizePlace(start);
|
|
119
|
+
// If a number is provided, default to after the previous index.
|
|
120
|
+
// This preserves the behavior of obliterate prior to the introduction of endpoint expansion.
|
|
121
|
+
const endPlace =
|
|
122
|
+
typeof end === "number"
|
|
123
|
+
? { pos: end - 1, side: Side.After } // default to inclusive bounds
|
|
124
|
+
: normalizePlace(end);
|
|
125
|
+
return {
|
|
126
|
+
type: MergeTreeDeltaType.OBLITERATE_SIDED,
|
|
127
|
+
pos1: { pos: startPlace.pos, before: startPlace.side === Side.Before },
|
|
128
|
+
pos2: { pos: endPlace.pos, before: endPlace.side === Side.Before },
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
100
132
|
/**
|
|
101
133
|
* Creates an op for inserting a segment at the specified position.
|
|
102
134
|
*
|
package/src/ops.ts
CHANGED
|
@@ -70,6 +70,7 @@ export const MergeTreeDeltaType = {
|
|
|
70
70
|
*/
|
|
71
71
|
GROUP: 3,
|
|
72
72
|
OBLITERATE: 4,
|
|
73
|
+
OBLITERATE_SIDED: 5,
|
|
73
74
|
} as const;
|
|
74
75
|
|
|
75
76
|
/**
|
|
@@ -162,6 +163,26 @@ export interface IMergeTreeObliterateMsg extends IMergeTreeDelta {
|
|
|
162
163
|
relativePos2?: never;
|
|
163
164
|
}
|
|
164
165
|
|
|
166
|
+
/**
|
|
167
|
+
* @legacy
|
|
168
|
+
* @alpha
|
|
169
|
+
*/
|
|
170
|
+
export interface IMergeTreeObliterateSidedMsg extends IMergeTreeDelta {
|
|
171
|
+
type: typeof MergeTreeDeltaType.OBLITERATE_SIDED;
|
|
172
|
+
pos1: { pos: number; before: boolean };
|
|
173
|
+
/**
|
|
174
|
+
* This field is currently unused, but we keep it around to make the union
|
|
175
|
+
* type of all merge-tree messages have the same fields
|
|
176
|
+
*/
|
|
177
|
+
relativePos1?: never;
|
|
178
|
+
pos2: { pos: number; before: boolean };
|
|
179
|
+
/**
|
|
180
|
+
* This field is currently unused, but we keep it around to make the union
|
|
181
|
+
* type of all merge-tree messages have the same fields
|
|
182
|
+
*/
|
|
183
|
+
relativePos2?: never;
|
|
184
|
+
}
|
|
185
|
+
|
|
165
186
|
/**
|
|
166
187
|
* @legacy
|
|
167
188
|
* @alpha
|
|
@@ -206,7 +227,8 @@ export type IMergeTreeDeltaOp =
|
|
|
206
227
|
| IMergeTreeInsertMsg
|
|
207
228
|
| IMergeTreeRemoveMsg
|
|
208
229
|
| IMergeTreeAnnotateMsg
|
|
209
|
-
| IMergeTreeObliterateMsg
|
|
230
|
+
| IMergeTreeObliterateMsg
|
|
231
|
+
| IMergeTreeObliterateSidedMsg;
|
|
210
232
|
|
|
211
233
|
/**
|
|
212
234
|
* @legacy
|
package/src/sequencePlace.ts
CHANGED
|
@@ -87,3 +87,19 @@ export function endpointPosAndSide(
|
|
|
87
87
|
endPos,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Returns the given place in InteriorSequencePlace form.
|
|
93
|
+
*/
|
|
94
|
+
export function normalizePlace(place: SequencePlace): InteriorSequencePlace {
|
|
95
|
+
if (typeof place === "number") {
|
|
96
|
+
return { pos: place, side: Side.Before };
|
|
97
|
+
}
|
|
98
|
+
if (place === "start") {
|
|
99
|
+
return { pos: -1, side: Side.After };
|
|
100
|
+
}
|
|
101
|
+
if (place === "end") {
|
|
102
|
+
return { pos: -1, side: Side.Before };
|
|
103
|
+
}
|
|
104
|
+
return place;
|
|
105
|
+
}
|