@fluidframework/sequence 2.0.0-internal.7.0.0 → 2.0.0-internal.7.2.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 +39 -0
- package/api-extractor.json +1 -1
- package/api-report/sequence.api.md +717 -0
- package/dist/defaultMapInterfaces.d.ts +1 -0
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/intervalCollection.d.ts +36 -6
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +31 -8
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +4 -0
- package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js +3 -0
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +6 -0
- package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointIndex.js +3 -0
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/idIntervalIndex.d.ts +6 -0
- package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
- package/dist/intervalIndex/idIntervalIndex.js +3 -0
- package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -0
- package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js +6 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +4 -0
- package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js +3 -0
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervals/interval.d.ts +1 -0
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +1 -0
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +12 -1
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +6 -0
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +2 -0
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +2 -0
- package/dist/intervals/sequenceInterval.js.map +1 -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 +1 -1
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +5 -2
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence.d.ts +7 -3
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +9 -4
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -0
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +3 -0
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +3 -0
- package/dist/sequenceFactory.d.ts.map +1 -1
- package/dist/sequenceFactory.js +3 -0
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +5 -0
- package/dist/sharedIntervalCollection.d.ts.map +1 -1
- package/dist/sharedIntervalCollection.js +2 -0
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedSequence.d.ts +6 -3
- package/dist/sharedSequence.d.ts.map +1 -1
- package/dist/sharedSequence.js +4 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +16 -1
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +14 -1
- package/dist/sharedString.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/defaultMapInterfaces.d.ts +1 -0
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/intervalCollection.d.ts +36 -6
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +31 -8
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +4 -0
- package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js +3 -0
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +6 -0
- package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointIndex.js +3 -0
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.d.ts +6 -0
- package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.js +3 -0
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -0
- package/lib/intervalIndex/intervalIndex.d.ts.map +1 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js +6 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +4 -0
- package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js +3 -0
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervals/interval.d.ts +1 -0
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +1 -0
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +12 -1
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +6 -0
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +2 -0
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +2 -0
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.d.ts.map +1 -1
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.d.ts +1 -1
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +5 -2
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence.d.ts +7 -3
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +12 -5
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -0
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +3 -0
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +3 -0
- package/lib/sequenceFactory.d.ts.map +1 -1
- package/lib/sequenceFactory.js +3 -0
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +5 -0
- package/lib/sharedIntervalCollection.d.ts.map +1 -1
- package/lib/sharedIntervalCollection.js +2 -0
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.d.ts +6 -3
- package/lib/sharedSequence.d.ts.map +1 -1
- package/lib/sharedSequence.js +4 -2
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +16 -1
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +14 -1
- package/lib/sharedString.js.map +1 -1
- package/package.json +25 -50
- package/src/defaultMapInterfaces.ts +1 -0
- package/src/intervalCollection.ts +91 -13
- package/src/intervalIndex/endpointInRangeIndex.ts +4 -0
- package/src/intervalIndex/endpointIndex.ts +6 -0
- package/src/intervalIndex/idIntervalIndex.ts +6 -0
- package/src/intervalIndex/intervalIndex.ts +1 -0
- package/src/intervalIndex/overlappingIntervalsIndex.ts +9 -0
- package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +6 -0
- package/src/intervalIndex/sequenceIntervalIndexes.ts +1 -0
- package/src/intervalIndex/startpointInRangeIndex.ts +4 -1
- package/src/intervals/interval.ts +6 -1
- package/src/intervals/intervalUtils.ts +12 -1
- package/src/intervals/sequenceInterval.ts +2 -0
- package/src/localValues.ts +4 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +6 -3
- package/src/sequence.ts +11 -4
- package/src/sequenceDeltaEvent.ts +4 -0
- package/src/sequenceFactory.ts +3 -0
- package/src/sharedIntervalCollection.ts +5 -0
- package/src/sharedSequence.ts +6 -3
- package/src/sharedString.ts +23 -1
|
@@ -9,6 +9,9 @@ import { IntervalIndex } from "./intervalIndex";
|
|
|
9
9
|
|
|
10
10
|
const reservedIntervalIdKey = "intervalId";
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
12
15
|
export interface IIdIntervalIndex<TInterval extends ISerializableInterval>
|
|
13
16
|
extends IntervalIndex<TInterval>,
|
|
14
17
|
Iterable<TInterval> {
|
|
@@ -51,6 +54,9 @@ class IdIntervalIndex<TInterval extends ISerializableInterval>
|
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
54
60
|
export function createIdIntervalIndex<
|
|
55
61
|
TInterval extends ISerializableInterval,
|
|
56
62
|
>(): IIdIntervalIndex<TInterval> {
|
|
@@ -13,6 +13,7 @@ import { ISerializableInterval } from "../intervals";
|
|
|
13
13
|
* - "find all intervals with start endpoint between these two points"
|
|
14
14
|
* - "find all intervals which overlap this range"
|
|
15
15
|
* etc.
|
|
16
|
+
* @public
|
|
16
17
|
*/
|
|
17
18
|
export interface IntervalIndex<TInterval extends ISerializableInterval> {
|
|
18
19
|
/**
|
|
@@ -17,6 +17,9 @@ import { SharedString } from "../sharedString";
|
|
|
17
17
|
import { SequencePlace, endpointPosAndSide } from "../intervalCollection";
|
|
18
18
|
import { IntervalIndex } from "./intervalIndex";
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
20
23
|
export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval>
|
|
21
24
|
extends IntervalIndex<TInterval> {
|
|
22
25
|
/**
|
|
@@ -36,6 +39,9 @@ export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInter
|
|
|
36
39
|
): void;
|
|
37
40
|
}
|
|
38
41
|
|
|
42
|
+
/**
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
39
45
|
export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
|
|
40
46
|
implements IOverlappingIntervalsIndex<TInterval>
|
|
41
47
|
{
|
|
@@ -170,6 +176,9 @@ export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
|
|
|
170
176
|
}
|
|
171
177
|
}
|
|
172
178
|
|
|
179
|
+
/**
|
|
180
|
+
* @public
|
|
181
|
+
*/
|
|
173
182
|
export function createOverlappingIntervalsIndex(
|
|
174
183
|
sharedString: SharedString,
|
|
175
184
|
): IOverlappingIntervalsIndex<SequenceInterval> {
|
|
@@ -21,6 +21,9 @@ import { SharedString } from "../sharedString";
|
|
|
21
21
|
import { SequenceIntervalIndexes } from "./sequenceIntervalIndexes";
|
|
22
22
|
import { OverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
24
27
|
class OverlappingSequenceIntervalsIndex
|
|
25
28
|
extends OverlappingIntervalsIndex<SequenceInterval>
|
|
26
29
|
implements SequenceIntervalIndexes.Overlapping
|
|
@@ -66,6 +69,9 @@ class OverlappingSequenceIntervalsIndex
|
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
|
|
72
|
+
/**
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
69
75
|
export function createOverlappingSequenceIntervalsIndex(
|
|
70
76
|
sharedString: SharedString,
|
|
71
77
|
): SequenceIntervalIndexes.Overlapping {
|
|
@@ -10,6 +10,7 @@ import { IOverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
|
|
|
10
10
|
/**
|
|
11
11
|
* This namespace contains specialiazations of indexes which support spatial queries
|
|
12
12
|
* specifically for `SequenceInterval`s.
|
|
13
|
+
* @public
|
|
13
14
|
*/
|
|
14
15
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
15
16
|
export namespace SequenceIntervalIndexes {
|
|
@@ -20,6 +20,7 @@ import { HasComparisonOverride, compareOverrideables, forceCompare } from "./int
|
|
|
20
20
|
* Collection of intervals.
|
|
21
21
|
*
|
|
22
22
|
* Provide additional APIs to support efficiently querying a collection of intervals whose startpoints fall within a specified range.
|
|
23
|
+
* @public
|
|
23
24
|
*/
|
|
24
25
|
export interface IStartpointInRangeIndex<TInterval extends ISerializableInterval>
|
|
25
26
|
extends IntervalIndex<TInterval> {
|
|
@@ -102,7 +103,9 @@ export class StartpointInRangeIndex<TInterval extends ISerializableInterval>
|
|
|
102
103
|
return results;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
|
-
|
|
106
|
+
/**
|
|
107
|
+
* @public
|
|
108
|
+
*/
|
|
106
109
|
export function createStartpointInRangeIndex(
|
|
107
110
|
sharedString: SharedString,
|
|
108
111
|
): IStartpointInRangeIndex<SequenceInterval> {
|
|
@@ -21,6 +21,7 @@ const reservedIntervalIdKey = "intervalId";
|
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Serializable interval whose endpoints are plain-old numbers.
|
|
24
|
+
* @public
|
|
24
25
|
*/
|
|
25
26
|
export class Interval implements ISerializableInterval {
|
|
26
27
|
/**
|
|
@@ -34,7 +35,11 @@ export class Interval implements ISerializableInterval {
|
|
|
34
35
|
* @internal
|
|
35
36
|
*/
|
|
36
37
|
public propertyManager: PropertiesManager;
|
|
37
|
-
constructor(
|
|
38
|
+
constructor(
|
|
39
|
+
public start: number,
|
|
40
|
+
public end: number,
|
|
41
|
+
props?: PropertySet,
|
|
42
|
+
) {
|
|
38
43
|
this.propertyManager = new PropertiesManager();
|
|
39
44
|
this.properties = {};
|
|
40
45
|
|
|
@@ -16,6 +16,7 @@ import { SequencePlace, Side } from "../intervalCollection";
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Basic interval abstraction
|
|
19
|
+
* @public
|
|
19
20
|
*/
|
|
20
21
|
export interface IInterval {
|
|
21
22
|
/**
|
|
@@ -80,8 +81,14 @@ export const IntervalOpType = {
|
|
|
80
81
|
POSITION_REMOVE: "positionRemove",
|
|
81
82
|
} as const;
|
|
82
83
|
|
|
84
|
+
/**
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
83
87
|
export enum IntervalType {
|
|
84
88
|
Simple = 0x0,
|
|
89
|
+
/**
|
|
90
|
+
* @deprecated this functionality is no longer supported and will be removed
|
|
91
|
+
*/
|
|
85
92
|
Nest = 0x1,
|
|
86
93
|
|
|
87
94
|
/**
|
|
@@ -129,6 +136,9 @@ export interface ISerializedInterval {
|
|
|
129
136
|
properties?: PropertySet;
|
|
130
137
|
}
|
|
131
138
|
|
|
139
|
+
/**
|
|
140
|
+
* @public
|
|
141
|
+
*/
|
|
132
142
|
export interface ISerializableInterval extends IInterval {
|
|
133
143
|
/** Serializable bag of properties associated with the interval. */
|
|
134
144
|
properties: PropertySet;
|
|
@@ -191,6 +201,7 @@ export type CompressedSerializedInterval =
|
|
|
191
201
|
/**
|
|
192
202
|
* @sealed
|
|
193
203
|
* @deprecated The methods within have substitutions
|
|
204
|
+
* @public
|
|
194
205
|
*/
|
|
195
206
|
export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
196
207
|
/**
|
|
@@ -262,7 +273,7 @@ export const IntervalStickiness = {
|
|
|
262
273
|
*
|
|
263
274
|
* @internal
|
|
264
275
|
*/
|
|
265
|
-
export type IntervalStickiness = typeof IntervalStickiness[keyof typeof IntervalStickiness];
|
|
276
|
+
export type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
|
|
266
277
|
|
|
267
278
|
export function startReferenceSlidingPreference(stickiness: IntervalStickiness): SlidingPreference {
|
|
268
279
|
// if any start stickiness, prefer sliding backwards
|
|
@@ -100,6 +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
|
+
* @public
|
|
103
104
|
*/
|
|
104
105
|
export class SequenceInterval implements ISerializableInterval {
|
|
105
106
|
/**
|
|
@@ -636,6 +637,7 @@ export function createSequenceInterval(
|
|
|
636
637
|
|
|
637
638
|
/**
|
|
638
639
|
* @deprecated The methods within have substitutions
|
|
640
|
+
* @public
|
|
639
641
|
*/
|
|
640
642
|
export const sequenceIntervalHelpers: IIntervalHelpers<SequenceInterval> = {
|
|
641
643
|
create: createSequenceInterval,
|
package/src/localValues.ts
CHANGED
|
@@ -58,7 +58,10 @@ export class ValueTypeLocalValue<T> implements ILocalValue<T> {
|
|
|
58
58
|
* @param value - The instance of the value type stored within
|
|
59
59
|
* @param valueType - The type object of the value type stored within
|
|
60
60
|
*/
|
|
61
|
-
constructor(
|
|
61
|
+
constructor(
|
|
62
|
+
public readonly value: T,
|
|
63
|
+
private readonly valueType: IValueType<T>,
|
|
64
|
+
) {}
|
|
62
65
|
|
|
63
66
|
/**
|
|
64
67
|
* {@inheritDoc ILocalValue."type"}
|
package/src/packageVersion.ts
CHANGED
package/src/revertibles.ts
CHANGED
|
@@ -33,7 +33,7 @@ export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertib
|
|
|
33
33
|
|
|
34
34
|
const idMap = new Map<string, string>();
|
|
35
35
|
|
|
36
|
-
type IntervalOpType = typeof IntervalOpType[keyof typeof IntervalOpType];
|
|
36
|
+
type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Data for undoing edits affecting Intervals.
|
|
@@ -416,11 +416,14 @@ function revertLocalDelete(
|
|
|
416
416
|
const startSlidePos = getSlidePosition(string, revertible.start, start);
|
|
417
417
|
const end = string.localReferencePositionToPosition(revertible.end);
|
|
418
418
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
419
|
-
const type = revertible.interval.intervalType;
|
|
420
419
|
// reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
|
|
421
420
|
const { intervalId, ...props } = revertible.interval.properties;
|
|
422
421
|
if (isValidRange(startSlidePos, endSlidePos, string)) {
|
|
423
|
-
const int = collection.add(
|
|
422
|
+
const int = collection.add({
|
|
423
|
+
start: startSlidePos,
|
|
424
|
+
end: endSlidePos,
|
|
425
|
+
props,
|
|
426
|
+
});
|
|
424
427
|
|
|
425
428
|
idMap.forEach((newId, oldId) => {
|
|
426
429
|
if (intervalId === newId) {
|
package/src/sequence.ts
CHANGED
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
ISegment,
|
|
30
30
|
ISegmentAction,
|
|
31
31
|
LocalReferencePosition,
|
|
32
|
+
// eslint-disable-next-line import/no-deprecated
|
|
32
33
|
matchProperties,
|
|
33
34
|
MergeTreeDeltaType,
|
|
34
35
|
PropertySet,
|
|
@@ -96,6 +97,7 @@ const contentPath = "content";
|
|
|
96
97
|
* - `event` - Various information on the segments that were modified.
|
|
97
98
|
*
|
|
98
99
|
* - `target` - The sequence itself.
|
|
100
|
+
* @public
|
|
99
101
|
*/
|
|
100
102
|
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
101
103
|
(
|
|
@@ -112,6 +114,9 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
|
112
114
|
);
|
|
113
115
|
}
|
|
114
116
|
|
|
117
|
+
/**
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
115
120
|
export abstract class SharedSegmentSequence<T extends ISegment>
|
|
116
121
|
extends SharedObject<ISharedSegmentSequenceEvents>
|
|
117
122
|
implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver
|
|
@@ -148,6 +153,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
148
153
|
if (
|
|
149
154
|
lastAnnotate &&
|
|
150
155
|
lastAnnotate.pos2 === r.position &&
|
|
156
|
+
// eslint-disable-next-line import/no-deprecated
|
|
151
157
|
matchProperties(lastAnnotate.props, props)
|
|
152
158
|
) {
|
|
153
159
|
lastAnnotate.pos2 += r.segment.cachedLength;
|
|
@@ -266,7 +272,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
266
272
|
}
|
|
267
273
|
|
|
268
274
|
/**
|
|
269
|
-
* @deprecated
|
|
275
|
+
* @deprecated The ability to create group ops will be removed in an upcoming release, as group ops are redundant with the native batching capabilities of the runtime
|
|
270
276
|
*/
|
|
271
277
|
public groupOperation(groupOp: IMergeTreeGroupMsg) {
|
|
272
278
|
this.guardReentrancy(() => this.client.localTransaction(groupOp));
|
|
@@ -393,7 +399,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
393
399
|
}
|
|
394
400
|
|
|
395
401
|
/**
|
|
396
|
-
* @deprecated
|
|
402
|
+
* @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
|
|
397
403
|
*/
|
|
398
404
|
public submitSequenceMessage(message: IMergeTreeOp) {
|
|
399
405
|
if (!this.isAttached()) {
|
|
@@ -447,7 +453,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
447
453
|
}
|
|
448
454
|
|
|
449
455
|
/**
|
|
450
|
-
* @deprecated
|
|
456
|
+
* @deprecated this functionality is no longer supported and will be removed
|
|
451
457
|
*/
|
|
452
458
|
public getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap {
|
|
453
459
|
return this.client.getStackContext(startPos, rangeLabels);
|
|
@@ -619,7 +625,8 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
619
625
|
m.minimumSequenceNumber < collabWindow.minSeq ||
|
|
620
626
|
m.referenceSequenceNumber < collabWindow.minSeq ||
|
|
621
627
|
m.sequenceNumber <= collabWindow.minSeq ||
|
|
622
|
-
|
|
628
|
+
// sequenceNumber could be the same if messages are part of a grouped batch
|
|
629
|
+
m.sequenceNumber < collabWindow.currentSeq
|
|
623
630
|
) {
|
|
624
631
|
throw new Error(
|
|
625
632
|
`Invalid catchup operations in snapshot: ${JSON.stringify({
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
24
24
|
* point in time at which the operation was applied.
|
|
25
25
|
* They will not take into any future modifications performed to the underlying sequence and merge tree.
|
|
26
|
+
* @public
|
|
26
27
|
*/
|
|
27
28
|
export abstract class SequenceEvent<
|
|
28
29
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
|
@@ -105,6 +106,7 @@ export abstract class SequenceEvent<
|
|
|
105
106
|
* For group ops, each op will get its own event, and the group op property will be set on the op args.
|
|
106
107
|
*
|
|
107
108
|
* Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
|
|
109
|
+
* @public
|
|
108
110
|
*/
|
|
109
111
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
110
112
|
/**
|
|
@@ -128,6 +130,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
128
130
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
129
131
|
* point in time at which the operation was applied.
|
|
130
132
|
* They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
|
|
133
|
+
* @public
|
|
131
134
|
*/
|
|
132
135
|
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
133
136
|
constructor(
|
|
@@ -141,6 +144,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
|
|
|
141
144
|
|
|
142
145
|
/**
|
|
143
146
|
* A range that has changed corresponding to a segment modification.
|
|
147
|
+
* @public
|
|
144
148
|
*/
|
|
145
149
|
export interface ISequenceDeltaRange<
|
|
146
150
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
package/src/sequenceFactory.ts
CHANGED
|
@@ -13,6 +13,9 @@ import { Marker, TextSegment } from "@fluidframework/merge-tree";
|
|
|
13
13
|
import { pkgVersion } from "./packageVersion";
|
|
14
14
|
import { SharedString, SharedStringSegment } from "./sharedString";
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
16
19
|
export class SharedStringFactory implements IChannelFactory {
|
|
17
20
|
// TODO rename back to https://graph.microsoft.com/types/mergeTree/string once paparazzi is able to dynamically
|
|
18
21
|
// load code (UPDATE: paparazzi is gone... anything to do here?)
|
|
@@ -33,6 +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
|
+
* @public
|
|
36
37
|
*/
|
|
37
38
|
export class SharedIntervalCollectionFactory implements IChannelFactory {
|
|
38
39
|
public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
|
|
@@ -74,12 +75,16 @@ export class SharedIntervalCollectionFactory implements IChannelFactory {
|
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* @public
|
|
80
|
+
*/
|
|
77
81
|
export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
|
|
78
82
|
getIntervalCollection(label: string): IIntervalCollection<TInterval>;
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
/**
|
|
82
86
|
* @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
|
|
87
|
+
* @public
|
|
83
88
|
*/
|
|
84
89
|
export class SharedIntervalCollection
|
|
85
90
|
extends SharedObject
|
package/src/sharedSequence.ts
CHANGED
|
@@ -15,14 +15,16 @@ import { SharedSegmentSequence } from "./sequence";
|
|
|
15
15
|
const MaxRun = 128;
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* @deprecated
|
|
18
|
+
* @deprecated IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
19
|
+
* @public
|
|
19
20
|
*/
|
|
20
21
|
export interface IJSONRunSegment<T> extends IJSONSegment {
|
|
21
22
|
items: Serializable<T>[];
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
|
-
* @deprecated
|
|
26
|
+
* @deprecated SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
27
|
+
* @public
|
|
26
28
|
*/
|
|
27
29
|
export class SubSequence<T> extends BaseSegment {
|
|
28
30
|
public static readonly typeString: string = "SubSequence";
|
|
@@ -105,7 +107,8 @@ export class SubSequence<T> extends BaseSegment {
|
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
/**
|
|
108
|
-
* @deprecated
|
|
110
|
+
* @deprecated SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
111
|
+
* @public
|
|
109
112
|
*/
|
|
110
113
|
export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
|
|
111
114
|
constructor(
|
package/src/sharedString.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { SharedStringFactory } from "./sequenceFactory";
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Fluid object interface describing access methods on a SharedString
|
|
27
|
+
* @public
|
|
27
28
|
*/
|
|
28
29
|
export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
29
30
|
/**
|
|
@@ -52,6 +53,9 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
52
53
|
posFromRelativePos(relativePos: IRelativePosition): number;
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
/**
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
55
59
|
export type SharedStringSegment = TextSegment | Marker;
|
|
56
60
|
|
|
57
61
|
/**
|
|
@@ -63,6 +67,7 @@ export type SharedStringSegment = TextSegment | Marker;
|
|
|
63
67
|
* used to store metadata at positions within the text, like the details of an
|
|
64
68
|
* image or Fluid object that should be rendered with the text.
|
|
65
69
|
*
|
|
70
|
+
* @public
|
|
66
71
|
*/
|
|
67
72
|
export class SharedString
|
|
68
73
|
extends SharedSegmentSequence<SharedStringSegment>
|
|
@@ -215,6 +220,7 @@ export class SharedString
|
|
|
215
220
|
/**
|
|
216
221
|
* Finds the nearest reference with ReferenceType.Tile to `startPos` in the direction dictated by `tilePrecedesPos`.
|
|
217
222
|
* Note that Markers receive `ReferenceType.Tile` by default.
|
|
223
|
+
* @deprecated Use `searchForMarker` instead.
|
|
218
224
|
* @param startPos - Position at which to start the search
|
|
219
225
|
* @param clientId - clientId dictating the perspective to search from
|
|
220
226
|
* @param tileLabel - Label of the tile to search for
|
|
@@ -233,6 +239,22 @@ export class SharedString
|
|
|
233
239
|
return this.client.findTile(startPos ?? 0, tileLabel, preceding);
|
|
234
240
|
}
|
|
235
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Searches a string for the nearest marker in either direction to a given start position.
|
|
244
|
+
* The search will include the start position, so markers at the start position are valid
|
|
245
|
+
* results of the search.
|
|
246
|
+
* @param startPos - Position at which to start the search
|
|
247
|
+
* @param markerLabel - Label of the marker to search for
|
|
248
|
+
* @param forwards - Whether the desired marker comes before (false) or after (true) `startPos`
|
|
249
|
+
*/
|
|
250
|
+
public searchForMarker(
|
|
251
|
+
startPos: number,
|
|
252
|
+
markerLabel: string,
|
|
253
|
+
forwards = true,
|
|
254
|
+
): Marker | undefined {
|
|
255
|
+
return this.client.searchForMarker(startPos, markerLabel, forwards);
|
|
256
|
+
}
|
|
257
|
+
|
|
236
258
|
/**
|
|
237
259
|
* Retrieve text from the SharedString in string format.
|
|
238
260
|
* @param start - The starting index of the text to retrieve, or 0 if omitted.
|
|
@@ -309,7 +331,6 @@ interface ITextAndMarkerAccumulator {
|
|
|
309
331
|
* @param sharedString - String to retrieve text and markers from
|
|
310
332
|
* @param label - label to split on
|
|
311
333
|
* @returns Two parallel lists of text and markers, split by markers with the provided `label`.
|
|
312
|
-
*
|
|
313
334
|
* For example:
|
|
314
335
|
* ```typescript
|
|
315
336
|
* // Say sharedstring has contents "hello<paragraph marker 1>world<paragraph marker 2>missing".
|
|
@@ -318,6 +339,7 @@ interface ITextAndMarkerAccumulator {
|
|
|
318
339
|
* // parallelMarkers === [<paragraph marker 1 object>, <paragraph marker 2 object>]
|
|
319
340
|
* // Note parallelText does not include "missing".
|
|
320
341
|
* ```
|
|
342
|
+
* @public
|
|
321
343
|
*/
|
|
322
344
|
export function getTextAndMarkers(
|
|
323
345
|
sharedString: SharedString,
|