@fluidframework/sequence 2.0.0-internal.7.2.2 → 2.0.0-internal.7.4.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 +61 -0
- package/api-extractor-lint.json +13 -0
- package/api-extractor.json +9 -1
- package/api-report/sequence.api.md +87 -84
- package/dist/defaultMap.d.ts +3 -3
- package/dist/defaultMap.d.ts.map +1 -1
- package/dist/defaultMap.js +7 -2
- package/dist/defaultMap.js.map +1 -1
- package/dist/defaultMapInterfaces.d.ts +11 -10
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/intervalCollection.d.ts +68 -14
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +50 -45
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointIndex.js +1 -1
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/dist/intervalIndex/idIntervalIndex.js +1 -1
- package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/dist/intervalIndex/overlappingIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/startpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervals/interval.d.ts +2 -7
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +1 -5
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +15 -14
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +4 -3
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +3 -12
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +3 -11
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/localValues.d.ts +2 -1
- package/dist/localValues.d.ts.map +1 -1
- package/dist/localValues.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/revertibles.d.ts +9 -15
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +41 -21
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1306 -0
- package/dist/sequence-beta.d.ts +270 -0
- package/dist/sequence-public.d.ts +270 -0
- package/dist/sequence-untrimmed.d.ts +1790 -0
- package/dist/sequence.d.ts +2 -3
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +4 -5
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -4
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +4 -3
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +1 -1
- package/dist/sequenceFactory.js +1 -1
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +3 -3
- package/dist/sharedIntervalCollection.js +2 -2
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedSequence.d.ts +3 -3
- package/dist/sharedSequence.js +2 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +8 -5
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +6 -3
- package/dist/sharedString.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/defaultMap.d.ts +3 -3
- package/lib/defaultMap.d.ts.map +1 -1
- package/lib/defaultMap.js +29 -20
- package/lib/defaultMap.js.map +1 -1
- package/lib/defaultMapInterfaces.d.ts +11 -10
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.js +45 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +68 -14
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +174 -156
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointIndex.js +14 -9
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/lib/intervalIndex/idIntervalIndex.js +9 -5
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/index.js +19 -6
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -1
- package/lib/intervalIndex/intervalIndex.js +2 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndexUtils.js +8 -4
- package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/lib/intervalIndex/overlappingIntervalsIndex.js +16 -11
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +15 -11
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/startpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.js +9 -4
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.js +18 -3
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/interval.d.ts +2 -7
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +19 -18
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +15 -14
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +22 -16
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +3 -12
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +68 -70
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.d.ts +2 -1
- package/lib/localValues.d.ts.map +1 -1
- package/lib/localValues.js +9 -4
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +5 -2
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.d.ts +9 -15
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +98 -68
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1306 -0
- package/lib/sequence-beta.d.ts +270 -0
- package/lib/sequence-public.d.ts +270 -0
- package/lib/sequence-untrimmed.d.ts +1790 -0
- package/lib/sequence.d.ts +2 -3
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +46 -46
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -4
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +17 -10
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +1 -1
- package/lib/sequenceFactory.js +14 -10
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +3 -3
- package/lib/sharedIntervalCollection.js +20 -15
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.d.ts +3 -3
- package/lib/sharedSequence.js +13 -8
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +8 -5
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +27 -19
- package/lib/sharedString.js.map +1 -1
- package/package.json +43 -29
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +22 -16
- package/src/defaultMapInterfaces.ts +15 -12
- package/src/intervalCollection.ts +131 -67
- package/src/intervalIndex/endpointInRangeIndex.ts +2 -2
- package/src/intervalIndex/endpointIndex.ts +2 -2
- package/src/intervalIndex/idIntervalIndex.ts +2 -2
- package/src/intervalIndex/intervalIndex.ts +1 -1
- package/src/intervalIndex/overlappingIntervalsIndex.ts +2 -2
- package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +1 -1
- package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
- package/src/intervalIndex/startpointInRangeIndex.ts +2 -2
- package/src/intervals/interval.ts +2 -7
- package/src/intervals/intervalUtils.ts +16 -15
- package/src/intervals/sequenceInterval.ts +3 -12
- package/src/localValues.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +95 -24
- package/src/sequence.ts +5 -7
- package/src/sequenceDeltaEvent.ts +6 -4
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +3 -3
- package/src/sharedSequence.ts +3 -3
- package/src/sharedString.ts +8 -5
- package/tsconfig.esnext.json +1 -2
- package/tsconfig.json +5 -3
|
@@ -100,7 +100,7 @@ function maxSide(sideA: Side, sideB: Side): Side {
|
|
|
100
100
|
* `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
|
|
101
101
|
* of the interval that are exclusive will have the ability to slide to these
|
|
102
102
|
* special endpoint segments.
|
|
103
|
-
* @
|
|
103
|
+
* @alpha
|
|
104
104
|
*/
|
|
105
105
|
export class SequenceInterval implements ISerializableInterval {
|
|
106
106
|
/**
|
|
@@ -109,13 +109,10 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
109
109
|
public properties: PropertySet;
|
|
110
110
|
/**
|
|
111
111
|
* {@inheritDoc ISerializableInterval.propertyManager}
|
|
112
|
-
* @internal
|
|
113
112
|
*/
|
|
114
113
|
public propertyManager: PropertiesManager;
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
* @internal
|
|
118
|
-
*/
|
|
115
|
+
/***/
|
|
119
116
|
public get stickiness(): IntervalStickiness {
|
|
120
117
|
const startSegment = this.start.getSegment();
|
|
121
118
|
const endSegment = this.end.getSegment();
|
|
@@ -156,7 +153,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
156
153
|
|
|
157
154
|
/**
|
|
158
155
|
* Subscribes to position change events on this interval if there are no current listeners.
|
|
159
|
-
* @internal
|
|
160
156
|
*/
|
|
161
157
|
public addPositionChangeListeners(
|
|
162
158
|
beforePositionChange: () => void,
|
|
@@ -177,7 +173,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
177
173
|
|
|
178
174
|
/**
|
|
179
175
|
* Removes the currently subscribed position change listeners.
|
|
180
|
-
* @internal
|
|
181
176
|
*/
|
|
182
177
|
public removePositionChangeListeners(): void {
|
|
183
178
|
if (this.callbacks) {
|
|
@@ -189,7 +184,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
189
184
|
|
|
190
185
|
/**
|
|
191
186
|
* {@inheritDoc ISerializableInterval.serialize}
|
|
192
|
-
* @internal
|
|
193
187
|
*/
|
|
194
188
|
public serialize(): ISerializedInterval {
|
|
195
189
|
const startPosition = this.client.localReferencePositionToPosition(this.start);
|
|
@@ -299,7 +293,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
299
293
|
|
|
300
294
|
/**
|
|
301
295
|
* {@inheritDoc IInterval.union}
|
|
302
|
-
* @internal
|
|
303
296
|
*/
|
|
304
297
|
public union(b: SequenceInterval) {
|
|
305
298
|
const newStart = minReferencePosition(this.start, b.start);
|
|
@@ -334,7 +327,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
334
327
|
|
|
335
328
|
/**
|
|
336
329
|
* {@inheritDoc ISerializableInterval.addProperties}
|
|
337
|
-
* @internal
|
|
338
330
|
*/
|
|
339
331
|
public addProperties(
|
|
340
332
|
newProps: PropertySet,
|
|
@@ -357,7 +349,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
357
349
|
|
|
358
350
|
/**
|
|
359
351
|
* {@inheritDoc IInterval.modify}
|
|
360
|
-
* @internal
|
|
361
352
|
*/
|
|
362
353
|
public modify(
|
|
363
354
|
label: string,
|
|
@@ -637,7 +628,7 @@ export function createSequenceInterval(
|
|
|
637
628
|
|
|
638
629
|
/**
|
|
639
630
|
* @deprecated The methods within have substitutions
|
|
640
|
-
* @
|
|
631
|
+
* @internal
|
|
641
632
|
*/
|
|
642
633
|
export const sequenceIntervalHelpers: IIntervalHelpers<SequenceInterval> = {
|
|
643
634
|
create: createSequenceInterval,
|
package/src/localValues.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
IValueOperation,
|
|
12
12
|
IValueType,
|
|
13
13
|
} from "./defaultMapInterfaces";
|
|
14
|
+
import { IntervalOpType } from "./intervals";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* A local value to be stored in a container type DDS.
|
|
@@ -88,7 +89,7 @@ export class ValueTypeLocalValue<T> implements ILocalValue<T> {
|
|
|
88
89
|
* @param opName - The name of the operation that needs processing
|
|
89
90
|
* @returns The object which can process the given op
|
|
90
91
|
*/
|
|
91
|
-
public getOpHandler(opName:
|
|
92
|
+
public getOpHandler(opName: IntervalOpType): IValueOperation<T> {
|
|
92
93
|
const handler = this.valueType.ops.get(opName);
|
|
93
94
|
if (!handler) {
|
|
94
95
|
throw new Error("Unknown type message");
|
package/src/packageVersion.ts
CHANGED
package/src/revertibles.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
6
|
+
/* eslint-disable import/no-deprecated */
|
|
5
7
|
/* eslint-disable no-bitwise */
|
|
6
8
|
|
|
7
9
|
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
@@ -19,26 +21,24 @@ import {
|
|
|
19
21
|
revertMergeTreeDeltaRevertibles,
|
|
20
22
|
SortedSet,
|
|
21
23
|
getSlideToSegoff,
|
|
24
|
+
SlidingPreference,
|
|
22
25
|
} from "@fluidframework/merge-tree";
|
|
26
|
+
import { InteriorSequencePlace, Side } from "./intervalCollection";
|
|
23
27
|
import { IntervalOpType, SequenceInterval } from "./intervals";
|
|
24
28
|
import { SharedString, SharedStringSegment } from "./sharedString";
|
|
25
29
|
import { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent";
|
|
26
30
|
|
|
27
31
|
/**
|
|
28
32
|
* Data for undoing edits on SharedStrings and Intervals.
|
|
29
|
-
*
|
|
30
|
-
* @alpha
|
|
33
|
+
* @internal
|
|
31
34
|
*/
|
|
32
35
|
export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
|
|
33
36
|
|
|
34
37
|
const idMap = new Map<string, string>();
|
|
35
38
|
|
|
36
|
-
type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
37
|
-
|
|
38
39
|
/**
|
|
39
40
|
* Data for undoing edits affecting Intervals.
|
|
40
|
-
*
|
|
41
|
-
* @alpha
|
|
41
|
+
* @internal
|
|
42
42
|
*/
|
|
43
43
|
export type IntervalRevertible =
|
|
44
44
|
| {
|
|
@@ -92,7 +92,7 @@ function getUpdatedId(intervalId: string): string {
|
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* Create revertibles for adding an interval
|
|
95
|
-
* @
|
|
95
|
+
* @internal
|
|
96
96
|
*/
|
|
97
97
|
export function appendAddIntervalToRevertibles(
|
|
98
98
|
interval: SequenceInterval,
|
|
@@ -108,7 +108,7 @@ export function appendAddIntervalToRevertibles(
|
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
110
|
* Create revertibles for deleting an interval
|
|
111
|
-
* @
|
|
111
|
+
* @internal
|
|
112
112
|
*/
|
|
113
113
|
export function appendDeleteIntervalToRevertibles(
|
|
114
114
|
string: SharedString,
|
|
@@ -154,7 +154,7 @@ export function appendDeleteIntervalToRevertibles(
|
|
|
154
154
|
|
|
155
155
|
/**
|
|
156
156
|
* Create revertibles for moving endpoints of an interval
|
|
157
|
-
* @
|
|
157
|
+
* @internal
|
|
158
158
|
*/
|
|
159
159
|
export function appendChangeIntervalToRevertibles(
|
|
160
160
|
string: SharedString,
|
|
@@ -204,7 +204,7 @@ export function appendChangeIntervalToRevertibles(
|
|
|
204
204
|
|
|
205
205
|
/**
|
|
206
206
|
* Create revertibles for changing properties of an interval
|
|
207
|
-
* @
|
|
207
|
+
* @internal
|
|
208
208
|
*/
|
|
209
209
|
export function appendIntervalPropertyChangedToRevertibles(
|
|
210
210
|
interval: SequenceInterval,
|
|
@@ -264,8 +264,7 @@ function addIfRevertibleRef(
|
|
|
264
264
|
/**
|
|
265
265
|
* Create revertibles for SharedStringDeltas, handling indirectly modified intervals
|
|
266
266
|
* (e.g. reverting remove of a range that contains an interval will move the interval back)
|
|
267
|
-
*
|
|
268
|
-
* @alpha
|
|
267
|
+
* @internal
|
|
269
268
|
*/
|
|
270
269
|
export function appendSharedStringDeltaToRevertibles(
|
|
271
270
|
string: SharedString,
|
|
@@ -358,7 +357,7 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
358
357
|
|
|
359
358
|
/**
|
|
360
359
|
* Clean up resources held by revertibles that are no longer needed.
|
|
361
|
-
* @
|
|
360
|
+
* @internal
|
|
362
361
|
*/
|
|
363
362
|
export function discardSharedStringRevertibles(
|
|
364
363
|
sharedString: SharedString,
|
|
@@ -387,13 +386,22 @@ function getSlidePosition(string: SharedString, lref: LocalReferencePosition, po
|
|
|
387
386
|
: pos;
|
|
388
387
|
}
|
|
389
388
|
|
|
390
|
-
function isValidRange(
|
|
389
|
+
function isValidRange(
|
|
390
|
+
start: number,
|
|
391
|
+
startSlide: SlidingPreference | undefined,
|
|
392
|
+
end: number,
|
|
393
|
+
endSlide: SlidingPreference | undefined,
|
|
394
|
+
string: SharedString,
|
|
395
|
+
) {
|
|
391
396
|
return (
|
|
392
397
|
start >= 0 &&
|
|
393
398
|
start < string.getLength() &&
|
|
394
399
|
end >= 0 &&
|
|
395
400
|
end < string.getLength() &&
|
|
396
|
-
start
|
|
401
|
+
(start < end ||
|
|
402
|
+
(start === end &&
|
|
403
|
+
(startSlide === SlidingPreference.FORWARD ||
|
|
404
|
+
endSlide !== SlidingPreference.FORWARD)))
|
|
397
405
|
);
|
|
398
406
|
}
|
|
399
407
|
|
|
@@ -406,6 +414,26 @@ function revertLocalAdd(
|
|
|
406
414
|
string.getIntervalCollection(label).removeIntervalById(id);
|
|
407
415
|
}
|
|
408
416
|
|
|
417
|
+
function createSequencePlace(
|
|
418
|
+
pos: number,
|
|
419
|
+
newSlidingPreference: SlidingPreference | undefined,
|
|
420
|
+
oldSlidingPreference: SlidingPreference | undefined = undefined,
|
|
421
|
+
): number | InteriorSequencePlace {
|
|
422
|
+
return newSlidingPreference === SlidingPreference.BACKWARD ||
|
|
423
|
+
(newSlidingPreference === undefined && oldSlidingPreference === SlidingPreference.BACKWARD)
|
|
424
|
+
? {
|
|
425
|
+
pos,
|
|
426
|
+
side: Side.After,
|
|
427
|
+
}
|
|
428
|
+
: newSlidingPreference === SlidingPreference.FORWARD &&
|
|
429
|
+
oldSlidingPreference === SlidingPreference.BACKWARD
|
|
430
|
+
? {
|
|
431
|
+
pos,
|
|
432
|
+
side: Side.Before,
|
|
433
|
+
}
|
|
434
|
+
: pos; // Avoid setting side if possible since stickiness may not be enabled
|
|
435
|
+
}
|
|
436
|
+
|
|
409
437
|
function revertLocalDelete(
|
|
410
438
|
string: SharedString,
|
|
411
439
|
revertible: TypedRevertible<typeof IntervalOpType.DELETE>,
|
|
@@ -418,10 +446,18 @@ function revertLocalDelete(
|
|
|
418
446
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
419
447
|
// reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
|
|
420
448
|
const { intervalId, ...props } = revertible.interval.properties;
|
|
421
|
-
if (
|
|
449
|
+
if (
|
|
450
|
+
isValidRange(
|
|
451
|
+
startSlidePos,
|
|
452
|
+
revertible.start.slidingPreference,
|
|
453
|
+
endSlidePos,
|
|
454
|
+
revertible.end.slidingPreference,
|
|
455
|
+
string,
|
|
456
|
+
)
|
|
457
|
+
) {
|
|
422
458
|
const int = collection.add({
|
|
423
|
-
start: startSlidePos,
|
|
424
|
-
end: endSlidePos,
|
|
459
|
+
start: createSequencePlace(startSlidePos, revertible.start.slidingPreference),
|
|
460
|
+
end: createSequencePlace(endSlidePos, revertible.end.slidingPreference),
|
|
425
461
|
props,
|
|
426
462
|
});
|
|
427
463
|
|
|
@@ -448,8 +484,30 @@ function revertLocalChange(
|
|
|
448
484
|
const startSlidePos = getSlidePosition(string, revertible.start, start);
|
|
449
485
|
const end = string.localReferencePositionToPosition(revertible.end);
|
|
450
486
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
451
|
-
|
|
452
|
-
|
|
487
|
+
const interval = collection.getIntervalById(id);
|
|
488
|
+
if (
|
|
489
|
+
interval !== undefined &&
|
|
490
|
+
isValidRange(
|
|
491
|
+
startSlidePos,
|
|
492
|
+
revertible.start.slidingPreference ?? interval.start.slidingPreference,
|
|
493
|
+
endSlidePos,
|
|
494
|
+
revertible.end.slidingPreference ?? interval.end.slidingPreference,
|
|
495
|
+
string,
|
|
496
|
+
)
|
|
497
|
+
) {
|
|
498
|
+
collection.change(
|
|
499
|
+
id,
|
|
500
|
+
createSequencePlace(
|
|
501
|
+
startSlidePos,
|
|
502
|
+
revertible.start.slidingPreference,
|
|
503
|
+
interval.start.slidingPreference,
|
|
504
|
+
),
|
|
505
|
+
createSequencePlace(
|
|
506
|
+
endSlidePos,
|
|
507
|
+
revertible.end.slidingPreference,
|
|
508
|
+
interval.end.slidingPreference,
|
|
509
|
+
),
|
|
510
|
+
);
|
|
453
511
|
}
|
|
454
512
|
|
|
455
513
|
string.removeLocalReferencePosition(revertible.start);
|
|
@@ -537,8 +595,20 @@ function revertLocalSequenceRemove(
|
|
|
537
595
|
const end =
|
|
538
596
|
newEndpointPosition(intervalInfo.endOffset, restoredRanges, sharedString) ??
|
|
539
597
|
sharedString.localReferencePositionToPosition(interval.end);
|
|
540
|
-
if (
|
|
541
|
-
|
|
598
|
+
if (
|
|
599
|
+
isValidRange(
|
|
600
|
+
start,
|
|
601
|
+
interval.start.slidingPreference,
|
|
602
|
+
end,
|
|
603
|
+
interval.end.slidingPreference,
|
|
604
|
+
sharedString,
|
|
605
|
+
)
|
|
606
|
+
) {
|
|
607
|
+
intervalCollection.change(
|
|
608
|
+
intervalId,
|
|
609
|
+
createSequencePlace(start, interval.start.slidingPreference),
|
|
610
|
+
createSequencePlace(end, interval.end.slidingPreference),
|
|
611
|
+
);
|
|
542
612
|
}
|
|
543
613
|
}
|
|
544
614
|
});
|
|
@@ -559,6 +629,7 @@ function revertLocalSequenceRemove(
|
|
|
559
629
|
pos.offset,
|
|
560
630
|
ReferenceType.StayOnRemove | ReferenceType.RangeBegin,
|
|
561
631
|
{ revertible: revertibleRef.revertible },
|
|
632
|
+
revertibleRef.revertible.start.slidingPreference,
|
|
562
633
|
);
|
|
563
634
|
revertibleRef.revertible.start = newRef;
|
|
564
635
|
} else {
|
|
@@ -568,6 +639,7 @@ function revertLocalSequenceRemove(
|
|
|
568
639
|
pos.offset,
|
|
569
640
|
ReferenceType.StayOnRemove | ReferenceType.RangeEnd,
|
|
570
641
|
{ revertible: revertibleRef.revertible },
|
|
642
|
+
revertibleRef.revertible.end.slidingPreference,
|
|
571
643
|
);
|
|
572
644
|
revertibleRef.revertible.end = newRef;
|
|
573
645
|
}
|
|
@@ -577,8 +649,7 @@ function revertLocalSequenceRemove(
|
|
|
577
649
|
|
|
578
650
|
/**
|
|
579
651
|
* Invoke revertibles to reverse prior edits
|
|
580
|
-
*
|
|
581
|
-
* @alpha
|
|
652
|
+
* @internal
|
|
582
653
|
*/
|
|
583
654
|
export function revertSharedStringRevertibles(
|
|
584
655
|
sharedString: SharedString,
|
package/src/sequence.ts
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
6
|
+
/* eslint-disable import/no-deprecated */
|
|
7
|
+
|
|
5
8
|
import { assert, Deferred } from "@fluidframework/core-utils";
|
|
6
9
|
import { bufferToString } from "@fluid-internal/client-utils";
|
|
7
10
|
import { LoggingError, createChildLogger } from "@fluidframework/telemetry-utils";
|
|
@@ -14,7 +17,6 @@ import {
|
|
|
14
17
|
import {
|
|
15
18
|
Client,
|
|
16
19
|
createAnnotateRangeOp,
|
|
17
|
-
// eslint-disable-next-line import/no-deprecated
|
|
18
20
|
createGroupOp,
|
|
19
21
|
createInsertOp,
|
|
20
22
|
createRemoveRangeOp,
|
|
@@ -29,7 +31,6 @@ import {
|
|
|
29
31
|
ISegment,
|
|
30
32
|
ISegmentAction,
|
|
31
33
|
LocalReferencePosition,
|
|
32
|
-
// eslint-disable-next-line import/no-deprecated
|
|
33
34
|
matchProperties,
|
|
34
35
|
MergeTreeDeltaType,
|
|
35
36
|
PropertySet,
|
|
@@ -97,7 +98,7 @@ const contentPath = "content";
|
|
|
97
98
|
* - `event` - Various information on the segments that were modified.
|
|
98
99
|
*
|
|
99
100
|
* - `target` - The sequence itself.
|
|
100
|
-
* @
|
|
101
|
+
* @alpha
|
|
101
102
|
*/
|
|
102
103
|
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
103
104
|
(
|
|
@@ -115,7 +116,7 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
/**
|
|
118
|
-
* @
|
|
119
|
+
* @alpha
|
|
119
120
|
*/
|
|
120
121
|
export abstract class SharedSegmentSequence<T extends ISegment>
|
|
121
122
|
extends SharedObject<ISharedSegmentSequenceEvents>
|
|
@@ -136,7 +137,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
136
137
|
*
|
|
137
138
|
* An application using SharedString which explicitly wants to opt in to allowing reentrancy anyway can set `sharedStringPreventReentrancy`
|
|
138
139
|
* on the data store options to `false`.
|
|
139
|
-
* @internal
|
|
140
140
|
*/
|
|
141
141
|
protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
|
|
142
142
|
|
|
@@ -153,7 +153,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
153
153
|
if (
|
|
154
154
|
lastAnnotate &&
|
|
155
155
|
lastAnnotate.pos2 === r.position &&
|
|
156
|
-
// eslint-disable-next-line import/no-deprecated
|
|
157
156
|
matchProperties(lastAnnotate.props, props)
|
|
158
157
|
) {
|
|
159
158
|
lastAnnotate.pos2 += r.segment.cachedLength;
|
|
@@ -764,7 +763,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
764
763
|
stashMessage = {
|
|
765
764
|
...message,
|
|
766
765
|
referenceSequenceNumber: stashMessage.sequenceNumber - 1,
|
|
767
|
-
// eslint-disable-next-line import/no-deprecated
|
|
768
766
|
contents: ops.length !== 1 ? createGroupOp(...ops) : ops[0],
|
|
769
767
|
};
|
|
770
768
|
}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
/* eslint-disable import/no-deprecated */
|
|
7
|
+
|
|
6
8
|
import { assert } from "@fluidframework/core-utils";
|
|
7
9
|
import {
|
|
8
10
|
Client,
|
|
@@ -23,7 +25,7 @@ import {
|
|
|
23
25
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
24
26
|
* point in time at which the operation was applied.
|
|
25
27
|
* They will not take into any future modifications performed to the underlying sequence and merge tree.
|
|
26
|
-
* @
|
|
28
|
+
* @alpha
|
|
27
29
|
*/
|
|
28
30
|
export abstract class SequenceEvent<
|
|
29
31
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
|
@@ -106,7 +108,7 @@ export abstract class SequenceEvent<
|
|
|
106
108
|
* For group ops, each op will get its own event, and the group op property will be set on the op args.
|
|
107
109
|
*
|
|
108
110
|
* Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
|
|
109
|
-
* @
|
|
111
|
+
* @alpha
|
|
110
112
|
*/
|
|
111
113
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
112
114
|
/**
|
|
@@ -130,7 +132,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
130
132
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
131
133
|
* point in time at which the operation was applied.
|
|
132
134
|
* They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
|
|
133
|
-
* @
|
|
135
|
+
* @alpha
|
|
134
136
|
*/
|
|
135
137
|
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
136
138
|
constructor(
|
|
@@ -144,7 +146,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
|
|
|
144
146
|
|
|
145
147
|
/**
|
|
146
148
|
* A range that has changed corresponding to a segment modification.
|
|
147
|
-
* @
|
|
149
|
+
* @alpha
|
|
148
150
|
*/
|
|
149
151
|
export interface ISequenceDeltaRange<
|
|
150
152
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
package/src/sequenceFactory.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { pkgVersion } from "./packageVersion";
|
|
|
14
14
|
import { SharedString, SharedStringSegment } from "./sharedString";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* @
|
|
17
|
+
* @alpha
|
|
18
18
|
*/
|
|
19
19
|
export class SharedStringFactory implements IChannelFactory {
|
|
20
20
|
// TODO rename back to https://graph.microsoft.com/types/mergeTree/string once paparazzi is able to dynamically
|
|
@@ -33,7 +33,7 @@ const snapshotFileName = "header";
|
|
|
33
33
|
/**
|
|
34
34
|
* The factory that defines the SharedIntervalCollection.
|
|
35
35
|
* @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
|
|
36
|
-
* @
|
|
36
|
+
* @internal
|
|
37
37
|
*/
|
|
38
38
|
export class SharedIntervalCollectionFactory implements IChannelFactory {
|
|
39
39
|
public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
|
|
@@ -76,7 +76,7 @@ export class SharedIntervalCollectionFactory implements IChannelFactory {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
|
-
* @
|
|
79
|
+
* @alpha
|
|
80
80
|
*/
|
|
81
81
|
export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
|
|
82
82
|
getIntervalCollection(label: string): IIntervalCollection<TInterval>;
|
|
@@ -84,7 +84,7 @@ export interface ISharedIntervalCollection<TInterval extends ISerializableInterv
|
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
86
|
* @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
|
|
87
|
-
* @
|
|
87
|
+
* @internal
|
|
88
88
|
*/
|
|
89
89
|
export class SharedIntervalCollection
|
|
90
90
|
extends SharedObject
|
package/src/sharedSequence.ts
CHANGED
|
@@ -16,7 +16,7 @@ const MaxRun = 128;
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @deprecated IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
19
|
-
* @
|
|
19
|
+
* @internal
|
|
20
20
|
*/
|
|
21
21
|
export interface IJSONRunSegment<T> extends IJSONSegment {
|
|
22
22
|
items: Serializable<T>[];
|
|
@@ -24,7 +24,7 @@ export interface IJSONRunSegment<T> extends IJSONSegment {
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @deprecated SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
27
|
-
* @
|
|
27
|
+
* @internal
|
|
28
28
|
*/
|
|
29
29
|
export class SubSequence<T> extends BaseSegment {
|
|
30
30
|
public static readonly typeString: string = "SubSequence";
|
|
@@ -108,7 +108,7 @@ export class SubSequence<T> extends BaseSegment {
|
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
110
|
* @deprecated SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
111
|
-
* @
|
|
111
|
+
* @internal
|
|
112
112
|
*/
|
|
113
113
|
export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
|
|
114
114
|
constructor(
|
package/src/sharedString.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { SharedStringFactory } from "./sequenceFactory";
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Fluid object interface describing access methods on a SharedString
|
|
27
|
-
* @
|
|
27
|
+
* @alpha
|
|
28
28
|
*/
|
|
29
29
|
export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
30
30
|
/**
|
|
@@ -54,7 +54,7 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
* @
|
|
57
|
+
* @alpha
|
|
58
58
|
*/
|
|
59
59
|
export type SharedStringSegment = TextSegment | Marker;
|
|
60
60
|
|
|
@@ -66,8 +66,7 @@ export type SharedStringSegment = TextSegment | Marker;
|
|
|
66
66
|
* In addition to text, a Shared String can also contain markers. Markers can be
|
|
67
67
|
* used to store metadata at positions within the text, like the details of an
|
|
68
68
|
* image or Fluid object that should be rendered with the text.
|
|
69
|
-
*
|
|
70
|
-
* @public
|
|
69
|
+
* @alpha
|
|
71
70
|
*/
|
|
72
71
|
export class SharedString
|
|
73
72
|
extends SharedSegmentSequence<SharedStringSegment>
|
|
@@ -196,6 +195,10 @@ export class SharedString
|
|
|
196
195
|
* @param marker - The marker to annotate
|
|
197
196
|
* @param props - The properties to annotate the marker with
|
|
198
197
|
* @param consensusCallback - The callback called when consensus is reached
|
|
198
|
+
*
|
|
199
|
+
* @deprecated We no longer intend to support this functionality and it will
|
|
200
|
+
* be removed in a future release. There is no replacement for this
|
|
201
|
+
* functionality.
|
|
199
202
|
*/
|
|
200
203
|
public annotateMarkerNotifyConsensus(
|
|
201
204
|
marker: Marker,
|
|
@@ -339,7 +342,7 @@ interface ITextAndMarkerAccumulator {
|
|
|
339
342
|
* // parallelMarkers === [<paragraph marker 1 object>, <paragraph marker 2 object>]
|
|
340
343
|
* // Note parallelText does not include "missing".
|
|
341
344
|
* ```
|
|
342
|
-
* @
|
|
345
|
+
* @internal
|
|
343
346
|
*/
|
|
344
347
|
export function getTextAndMarkers(
|
|
345
348
|
sharedString: SharedString,
|
package/tsconfig.esnext.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends":
|
|
2
|
+
"extends": [
|
|
3
|
+
"../../../common/build/build-common/tsconfig.base.json",
|
|
4
|
+
"../../../common/build/build-common/tsconfig.cjs.json",
|
|
5
|
+
],
|
|
6
|
+
"include": ["src/**/*"],
|
|
3
7
|
"exclude": ["src/test/**/*"],
|
|
4
8
|
"compilerOptions": {
|
|
5
9
|
"rootDir": "./src",
|
|
6
10
|
"outDir": "./dist",
|
|
7
|
-
"composite": true,
|
|
8
11
|
},
|
|
9
|
-
"include": ["src/**/*"],
|
|
10
12
|
}
|