@fluidframework/sequence 2.0.0-internal.7.3.0 → 2.0.0-internal.8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +168 -0
- package/api-extractor-lint.json +13 -0
- package/api-extractor.json +8 -3
- package/api-report/sequence.api.md +138 -113
- 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 +12 -11
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/intervalCollection.d.ts +70 -16
- 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/intervalTree.d.ts +1 -2
- package/dist/intervalTree.d.ts.map +1 -1
- package/dist/intervalTree.js +1 -3
- package/dist/intervalTree.js.map +1 -1
- package/dist/intervals/interval.d.ts +5 -11
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +10 -18
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +15 -18
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +3 -8
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +5 -15
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +12 -28
- 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 +14 -10
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +283 -552
- package/dist/sequence-beta.d.ts +139 -1373
- package/dist/sequence-public.d.ts +139 -1373
- package/dist/sequence-untrimmed.d.ts +186 -141
- package/dist/sequence.d.ts +26 -24
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +38 -23
- 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 +14 -7
- 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 +4 -4
- package/dist/sharedSequence.d.ts.map +1 -1
- package/dist/sharedSequence.js +8 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +9 -18
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +9 -21
- package/dist/sharedString.js.map +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 +12 -11
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +55 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +70 -16
- 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.d.ts +1 -2
- package/lib/intervalTree.d.ts.map +1 -1
- package/lib/intervalTree.js +7 -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 +5 -11
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +26 -29
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +15 -18
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +21 -21
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +5 -15
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +72 -82
- 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 +83 -69
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +283 -552
- package/lib/sequence-beta.d.ts +139 -1373
- package/lib/sequence-public.d.ts +139 -1373
- package/lib/sequence-untrimmed.d.ts +186 -141
- package/lib/sequence.d.ts +26 -24
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +81 -61
- 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 +27 -14
- 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 +4 -4
- package/lib/sharedSequence.d.ts.map +1 -1
- package/lib/sharedSequence.js +19 -8
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +9 -18
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +30 -37
- package/lib/sharedString.js.map +1 -1
- package/package.json +44 -22
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +22 -16
- package/src/defaultMapInterfaces.ts +17 -14
- package/src/index.ts +17 -0
- package/src/intervalCollection.ts +135 -71
- 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/intervalTree.ts +0 -3
- package/src/intervals/interval.ts +7 -26
- package/src/intervals/intervalUtils.ts +17 -20
- package/src/intervals/sequenceInterval.ts +7 -35
- package/src/localValues.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +20 -19
- package/src/sequence.ts +61 -43
- package/src/sequenceDeltaEvent.ts +12 -6
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +3 -3
- package/src/sharedSequence.ts +12 -6
- package/src/sharedString.ts +21 -48
- package/tsconfig.json +1 -0
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/* eslint-disable import/no-deprecated */
|
|
7
6
|
/* eslint-disable no-bitwise */
|
|
8
7
|
|
|
9
8
|
import {
|
|
9
|
+
// eslint-disable-next-line import/no-deprecated
|
|
10
10
|
Client,
|
|
11
11
|
PropertiesManager,
|
|
12
12
|
PropertySet,
|
|
@@ -17,7 +17,7 @@ import { SequencePlace, Side } from "../intervalCollection";
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Basic interval abstraction
|
|
20
|
-
* @
|
|
20
|
+
* @alpha
|
|
21
21
|
*/
|
|
22
22
|
export interface IInterval {
|
|
23
23
|
/**
|
|
@@ -46,7 +46,6 @@ export interface IInterval {
|
|
|
46
46
|
compareEnd(b: IInterval): number;
|
|
47
47
|
/**
|
|
48
48
|
* Modifies one or more of the endpoints of this interval, returning a new interval representing the result.
|
|
49
|
-
* @internal
|
|
50
49
|
*/
|
|
51
50
|
modify(
|
|
52
51
|
label: string,
|
|
@@ -65,14 +64,13 @@ export interface IInterval {
|
|
|
65
64
|
* Unions this interval with `b`, returning a new interval.
|
|
66
65
|
* The union operates as a convex hull, i.e. if the two intervals are disjoint, the return value includes
|
|
67
66
|
* intermediate values between the two intervals.
|
|
68
|
-
* @internal
|
|
69
67
|
*/
|
|
70
68
|
union(b: IInterval): IInterval;
|
|
71
69
|
}
|
|
72
70
|
|
|
73
71
|
/**
|
|
74
72
|
* Values are used in persisted formats (ops) and revertibles.
|
|
75
|
-
* @
|
|
73
|
+
* @internal
|
|
76
74
|
*/
|
|
77
75
|
export const IntervalOpType = {
|
|
78
76
|
ADD: "add",
|
|
@@ -81,16 +79,15 @@ export const IntervalOpType = {
|
|
|
81
79
|
PROPERTY_CHANGED: "propertyChanged",
|
|
82
80
|
POSITION_REMOVE: "positionRemove",
|
|
83
81
|
} as const;
|
|
84
|
-
|
|
85
82
|
/**
|
|
86
|
-
* @
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
export type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
86
|
+
/**
|
|
87
|
+
* @alpha
|
|
87
88
|
*/
|
|
88
89
|
export enum IntervalType {
|
|
89
90
|
Simple = 0x0,
|
|
90
|
-
/**
|
|
91
|
-
* @deprecated this functionality is no longer supported and will be removed
|
|
92
|
-
*/
|
|
93
|
-
Nest = 0x1,
|
|
94
91
|
|
|
95
92
|
/**
|
|
96
93
|
* SlideOnRemove indicates that the ends of the interval will slide if the segment
|
|
@@ -110,7 +107,7 @@ export enum IntervalType {
|
|
|
110
107
|
/**
|
|
111
108
|
* Serialized object representation of an interval.
|
|
112
109
|
* This representation is used for ops that create or change intervals.
|
|
113
|
-
* @
|
|
110
|
+
* @alpha
|
|
114
111
|
*/
|
|
115
112
|
export interface ISerializedInterval {
|
|
116
113
|
/**
|
|
@@ -138,16 +135,16 @@ export interface ISerializedInterval {
|
|
|
138
135
|
}
|
|
139
136
|
|
|
140
137
|
/**
|
|
141
|
-
* @
|
|
138
|
+
* @alpha
|
|
142
139
|
*/
|
|
143
140
|
export interface ISerializableInterval extends IInterval {
|
|
144
141
|
/** Serializable bag of properties associated with the interval. */
|
|
145
142
|
properties: PropertySet;
|
|
146
|
-
|
|
143
|
+
/***/
|
|
147
144
|
propertyManager: PropertiesManager;
|
|
148
|
-
|
|
145
|
+
/***/
|
|
149
146
|
serialize(): ISerializedInterval;
|
|
150
|
-
|
|
147
|
+
/***/
|
|
151
148
|
addProperties(
|
|
152
149
|
props: PropertySet,
|
|
153
150
|
collaborating?: boolean,
|
|
@@ -202,7 +199,7 @@ export type CompressedSerializedInterval =
|
|
|
202
199
|
/**
|
|
203
200
|
* @sealed
|
|
204
201
|
* @deprecated The methods within have substitutions
|
|
205
|
-
* @
|
|
202
|
+
* @internal
|
|
206
203
|
*/
|
|
207
204
|
export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
208
205
|
/**
|
|
@@ -224,6 +221,7 @@ export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
|
224
221
|
label: string,
|
|
225
222
|
start: SequencePlace | undefined,
|
|
226
223
|
end: SequencePlace | undefined,
|
|
224
|
+
// eslint-disable-next-line import/no-deprecated
|
|
227
225
|
client: Client | undefined,
|
|
228
226
|
intervalType: IntervalType,
|
|
229
227
|
op?: ISequencedDocumentMessage,
|
|
@@ -239,7 +237,7 @@ export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
|
239
237
|
* Note that interval stickiness is currently an experimental feature and must
|
|
240
238
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
241
239
|
*
|
|
242
|
-
* @
|
|
240
|
+
* @alpha
|
|
243
241
|
*/
|
|
244
242
|
export const IntervalStickiness = {
|
|
245
243
|
/**
|
|
@@ -271,8 +269,7 @@ export const IntervalStickiness = {
|
|
|
271
269
|
*
|
|
272
270
|
* Note that interval stickiness is currently an experimental feature and must
|
|
273
271
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
274
|
-
*
|
|
275
|
-
* @internal
|
|
272
|
+
* @alpha
|
|
276
273
|
*/
|
|
277
274
|
export type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
|
|
278
275
|
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
Client,
|
|
11
|
-
ICombiningOp,
|
|
12
11
|
ISegment,
|
|
13
12
|
LocalReferencePosition,
|
|
14
13
|
PropertiesManager,
|
|
@@ -100,22 +99,20 @@ function maxSide(sideA: Side, sideB: Side): Side {
|
|
|
100
99
|
* `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
|
|
101
100
|
* of the interval that are exclusive will have the ability to slide to these
|
|
102
101
|
* special endpoint segments.
|
|
103
|
-
* @
|
|
102
|
+
* @alpha
|
|
104
103
|
*/
|
|
105
104
|
export class SequenceInterval implements ISerializableInterval {
|
|
106
105
|
/**
|
|
107
106
|
* {@inheritDoc ISerializableInterval.properties}
|
|
108
107
|
*/
|
|
109
|
-
public properties: PropertySet;
|
|
108
|
+
public properties: PropertySet = createMap<any>();
|
|
109
|
+
|
|
110
110
|
/**
|
|
111
111
|
* {@inheritDoc ISerializableInterval.propertyManager}
|
|
112
|
-
* @internal
|
|
113
112
|
*/
|
|
114
|
-
public propertyManager: PropertiesManager;
|
|
113
|
+
public propertyManager: PropertiesManager = new 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();
|
|
@@ -144,9 +141,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
144
141
|
public readonly startSide: Side = Side.Before,
|
|
145
142
|
public readonly endSide: Side = Side.Before,
|
|
146
143
|
) {
|
|
147
|
-
this.propertyManager = new PropertiesManager();
|
|
148
|
-
this.properties = {};
|
|
149
|
-
|
|
150
144
|
if (props) {
|
|
151
145
|
this.addProperties(props);
|
|
152
146
|
}
|
|
@@ -156,7 +150,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
156
150
|
|
|
157
151
|
/**
|
|
158
152
|
* Subscribes to position change events on this interval if there are no current listeners.
|
|
159
|
-
* @internal
|
|
160
153
|
*/
|
|
161
154
|
public addPositionChangeListeners(
|
|
162
155
|
beforePositionChange: () => void,
|
|
@@ -177,7 +170,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
177
170
|
|
|
178
171
|
/**
|
|
179
172
|
* Removes the currently subscribed position change listeners.
|
|
180
|
-
* @internal
|
|
181
173
|
*/
|
|
182
174
|
public removePositionChangeListeners(): void {
|
|
183
175
|
if (this.callbacks) {
|
|
@@ -189,7 +181,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
189
181
|
|
|
190
182
|
/**
|
|
191
183
|
* {@inheritDoc ISerializableInterval.serialize}
|
|
192
|
-
* @internal
|
|
193
184
|
*/
|
|
194
185
|
public serialize(): ISerializedInterval {
|
|
195
186
|
const startPosition = this.client.localReferencePositionToPosition(this.start);
|
|
@@ -299,7 +290,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
299
290
|
|
|
300
291
|
/**
|
|
301
292
|
* {@inheritDoc IInterval.union}
|
|
302
|
-
* @internal
|
|
303
293
|
*/
|
|
304
294
|
public union(b: SequenceInterval) {
|
|
305
295
|
const newStart = minReferencePosition(this.start, b.start);
|
|
@@ -334,16 +324,13 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
334
324
|
|
|
335
325
|
/**
|
|
336
326
|
* {@inheritDoc ISerializableInterval.addProperties}
|
|
337
|
-
* @internal
|
|
338
327
|
*/
|
|
339
328
|
public addProperties(
|
|
340
329
|
newProps: PropertySet,
|
|
341
330
|
collab: boolean = false,
|
|
342
331
|
seq?: number,
|
|
343
|
-
op?: ICombiningOp,
|
|
344
332
|
): PropertySet | undefined {
|
|
345
|
-
this.
|
|
346
|
-
return this.propertyManager.addProperties(this.properties, newProps, op, seq, collab);
|
|
333
|
+
return this.propertyManager.addProperties(this.properties, newProps, seq, collab);
|
|
347
334
|
}
|
|
348
335
|
|
|
349
336
|
/**
|
|
@@ -357,7 +344,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
357
344
|
|
|
358
345
|
/**
|
|
359
346
|
* {@inheritDoc IInterval.modify}
|
|
360
|
-
* @internal
|
|
361
347
|
*/
|
|
362
348
|
public modify(
|
|
363
349
|
label: string,
|
|
@@ -429,7 +415,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
429
415
|
endSide ?? this.endSide,
|
|
430
416
|
);
|
|
431
417
|
if (this.properties) {
|
|
432
|
-
newInterval.initializeProperties();
|
|
433
418
|
this.propertyManager.copyTo(
|
|
434
419
|
this.properties,
|
|
435
420
|
newInterval.properties,
|
|
@@ -438,15 +423,6 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
438
423
|
}
|
|
439
424
|
return newInterval;
|
|
440
425
|
}
|
|
441
|
-
|
|
442
|
-
private initializeProperties(): void {
|
|
443
|
-
if (!this.propertyManager) {
|
|
444
|
-
this.propertyManager = new PropertiesManager();
|
|
445
|
-
}
|
|
446
|
-
if (!this.properties) {
|
|
447
|
-
this.properties = createMap<any>();
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
426
|
}
|
|
451
427
|
|
|
452
428
|
export function createPositionReferenceFromSegoff(
|
|
@@ -577,10 +553,6 @@ export function createSequenceInterval(
|
|
|
577
553
|
beginRefType = ReferenceType.Transient;
|
|
578
554
|
endRefType = ReferenceType.Transient;
|
|
579
555
|
} else {
|
|
580
|
-
if (intervalType === IntervalType.Nest) {
|
|
581
|
-
beginRefType = ReferenceType.NestBegin;
|
|
582
|
-
endRefType = ReferenceType.NestEnd;
|
|
583
|
-
}
|
|
584
556
|
// All non-transient interval references must eventually be SlideOnRemove
|
|
585
557
|
// To ensure eventual consistency, they must start as StayOnRemove when
|
|
586
558
|
// pending (created locally and creation op is not acked)
|
|
@@ -637,7 +609,7 @@ export function createSequenceInterval(
|
|
|
637
609
|
|
|
638
610
|
/**
|
|
639
611
|
* @deprecated The methods within have substitutions
|
|
640
|
-
* @
|
|
612
|
+
* @internal
|
|
641
613
|
*/
|
|
642
614
|
export const sequenceIntervalHelpers: IIntervalHelpers<SequenceInterval> = {
|
|
643
615
|
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
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/* eslint-disable import/no-deprecated */
|
|
7
6
|
/* eslint-disable no-bitwise */
|
|
8
7
|
|
|
9
8
|
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
@@ -19,6 +18,7 @@ import {
|
|
|
19
18
|
ReferenceType,
|
|
20
19
|
refTypeIncludesFlag,
|
|
21
20
|
revertMergeTreeDeltaRevertibles,
|
|
21
|
+
// eslint-disable-next-line import/no-deprecated
|
|
22
22
|
SortedSet,
|
|
23
23
|
getSlideToSegoff,
|
|
24
24
|
SlidingPreference,
|
|
@@ -30,19 +30,15 @@ import { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent";
|
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Data for undoing edits on SharedStrings and Intervals.
|
|
33
|
-
*
|
|
34
|
-
* @alpha
|
|
33
|
+
* @internal
|
|
35
34
|
*/
|
|
36
35
|
export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
|
|
37
36
|
|
|
38
37
|
const idMap = new Map<string, string>();
|
|
39
38
|
|
|
40
|
-
type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
41
|
-
|
|
42
39
|
/**
|
|
43
40
|
* Data for undoing edits affecting Intervals.
|
|
44
|
-
*
|
|
45
|
-
* @alpha
|
|
41
|
+
* @internal
|
|
46
42
|
*/
|
|
47
43
|
export type IntervalRevertible =
|
|
48
44
|
| {
|
|
@@ -96,7 +92,7 @@ function getUpdatedId(intervalId: string): string {
|
|
|
96
92
|
|
|
97
93
|
/**
|
|
98
94
|
* Create revertibles for adding an interval
|
|
99
|
-
* @
|
|
95
|
+
* @internal
|
|
100
96
|
*/
|
|
101
97
|
export function appendAddIntervalToRevertibles(
|
|
102
98
|
interval: SequenceInterval,
|
|
@@ -112,19 +108,25 @@ export function appendAddIntervalToRevertibles(
|
|
|
112
108
|
|
|
113
109
|
/**
|
|
114
110
|
* Create revertibles for deleting an interval
|
|
115
|
-
* @
|
|
111
|
+
* @internal
|
|
116
112
|
*/
|
|
117
113
|
export function appendDeleteIntervalToRevertibles(
|
|
118
114
|
string: SharedString,
|
|
119
115
|
interval: SequenceInterval,
|
|
120
116
|
revertibles: SharedStringRevertible[],
|
|
121
|
-
) {
|
|
122
|
-
const startSeg = interval.start.getSegment() as SharedStringSegment;
|
|
117
|
+
): SharedStringRevertible[] {
|
|
118
|
+
const startSeg = interval.start.getSegment() as SharedStringSegment | undefined;
|
|
119
|
+
if (!startSeg) {
|
|
120
|
+
return revertibles;
|
|
121
|
+
}
|
|
123
122
|
const startType =
|
|
124
123
|
startSeg.removedSeq !== undefined
|
|
125
124
|
? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
|
|
126
125
|
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
127
|
-
const endSeg = interval.end.getSegment() as SharedStringSegment;
|
|
126
|
+
const endSeg = interval.end.getSegment() as SharedStringSegment | undefined;
|
|
127
|
+
if (!endSeg) {
|
|
128
|
+
return revertibles;
|
|
129
|
+
}
|
|
128
130
|
const endType =
|
|
129
131
|
endSeg.removedSeq !== undefined
|
|
130
132
|
? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
|
|
@@ -158,7 +160,7 @@ export function appendDeleteIntervalToRevertibles(
|
|
|
158
160
|
|
|
159
161
|
/**
|
|
160
162
|
* Create revertibles for moving endpoints of an interval
|
|
161
|
-
* @
|
|
163
|
+
* @internal
|
|
162
164
|
*/
|
|
163
165
|
export function appendChangeIntervalToRevertibles(
|
|
164
166
|
string: SharedString,
|
|
@@ -208,7 +210,7 @@ export function appendChangeIntervalToRevertibles(
|
|
|
208
210
|
|
|
209
211
|
/**
|
|
210
212
|
* Create revertibles for changing properties of an interval
|
|
211
|
-
* @
|
|
213
|
+
* @internal
|
|
212
214
|
*/
|
|
213
215
|
export function appendIntervalPropertyChangedToRevertibles(
|
|
214
216
|
interval: SequenceInterval,
|
|
@@ -268,8 +270,7 @@ function addIfRevertibleRef(
|
|
|
268
270
|
/**
|
|
269
271
|
* Create revertibles for SharedStringDeltas, handling indirectly modified intervals
|
|
270
272
|
* (e.g. reverting remove of a range that contains an interval will move the interval back)
|
|
271
|
-
*
|
|
272
|
-
* @alpha
|
|
273
|
+
* @internal
|
|
273
274
|
*/
|
|
274
275
|
export function appendSharedStringDeltaToRevertibles(
|
|
275
276
|
string: SharedString,
|
|
@@ -362,7 +363,7 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
362
363
|
|
|
363
364
|
/**
|
|
364
365
|
* Clean up resources held by revertibles that are no longer needed.
|
|
365
|
-
* @
|
|
366
|
+
* @internal
|
|
366
367
|
*/
|
|
367
368
|
export function discardSharedStringRevertibles(
|
|
368
369
|
sharedString: SharedString,
|
|
@@ -565,6 +566,7 @@ interface RangeInfo {
|
|
|
565
566
|
length: number;
|
|
566
567
|
}
|
|
567
568
|
|
|
569
|
+
// eslint-disable-next-line import/no-deprecated
|
|
568
570
|
class SortedRangeSet extends SortedSet<RangeInfo, string> {
|
|
569
571
|
protected getKey(item: RangeInfo): string {
|
|
570
572
|
return item.ranges[0].segment.ordinal;
|
|
@@ -654,8 +656,7 @@ function revertLocalSequenceRemove(
|
|
|
654
656
|
|
|
655
657
|
/**
|
|
656
658
|
* Invoke revertibles to reverse prior edits
|
|
657
|
-
*
|
|
658
|
-
* @alpha
|
|
659
|
+
* @internal
|
|
659
660
|
*/
|
|
660
661
|
export function revertSharedStringRevertibles(
|
|
661
662
|
sharedString: SharedString,
|
package/src/sequence.ts
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/* eslint-disable import/no-deprecated */
|
|
7
|
-
|
|
8
6
|
import { assert, Deferred } from "@fluidframework/core-utils";
|
|
9
7
|
import { bufferToString } from "@fluid-internal/client-utils";
|
|
10
8
|
import { LoggingError, createChildLogger } from "@fluidframework/telemetry-utils";
|
|
@@ -15,12 +13,13 @@ import {
|
|
|
15
13
|
IChannelStorageService,
|
|
16
14
|
} from "@fluidframework/datastore-definitions";
|
|
17
15
|
import {
|
|
16
|
+
// eslint-disable-next-line import/no-deprecated
|
|
18
17
|
Client,
|
|
19
18
|
createAnnotateRangeOp,
|
|
19
|
+
// eslint-disable-next-line import/no-deprecated
|
|
20
20
|
createGroupOp,
|
|
21
21
|
createInsertOp,
|
|
22
22
|
createRemoveRangeOp,
|
|
23
|
-
ICombiningOp,
|
|
24
23
|
IJSONSegment,
|
|
25
24
|
IMergeTreeAnnotateMsg,
|
|
26
25
|
IMergeTreeDeltaOp,
|
|
@@ -34,11 +33,12 @@ import {
|
|
|
34
33
|
matchProperties,
|
|
35
34
|
MergeTreeDeltaType,
|
|
36
35
|
PropertySet,
|
|
37
|
-
RangeStackMap,
|
|
38
36
|
ReferencePosition,
|
|
39
37
|
ReferenceType,
|
|
40
38
|
MergeTreeRevertibleDriver,
|
|
41
39
|
SegmentGroup,
|
|
40
|
+
IMergeTreeObliterateMsg,
|
|
41
|
+
createObliterateRangeOp,
|
|
42
42
|
SlidingPreference,
|
|
43
43
|
} from "@fluidframework/merge-tree";
|
|
44
44
|
import { ObjectStoragePartition, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
|
|
@@ -98,25 +98,25 @@ const contentPath = "content";
|
|
|
98
98
|
* - `event` - Various information on the segments that were modified.
|
|
99
99
|
*
|
|
100
100
|
* - `target` - The sequence itself.
|
|
101
|
-
* @
|
|
101
|
+
* @alpha
|
|
102
102
|
*/
|
|
103
103
|
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
104
104
|
(
|
|
105
105
|
event: "createIntervalCollection",
|
|
106
106
|
listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void,
|
|
107
|
-
);
|
|
107
|
+
): void;
|
|
108
108
|
(
|
|
109
109
|
event: "sequenceDelta",
|
|
110
110
|
listener: (event: SequenceDeltaEvent, target: IEventThisPlaceHolder) => void,
|
|
111
|
-
);
|
|
111
|
+
): void;
|
|
112
112
|
(
|
|
113
113
|
event: "maintenance",
|
|
114
114
|
listener: (event: SequenceMaintenanceEvent, target: IEventThisPlaceHolder) => void,
|
|
115
|
-
);
|
|
115
|
+
): void;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
|
-
* @
|
|
119
|
+
* @alpha
|
|
120
120
|
*/
|
|
121
121
|
export abstract class SharedSegmentSequence<T extends ISegment>
|
|
122
122
|
extends SharedObject<ISharedSegmentSequenceEvents>
|
|
@@ -137,7 +137,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
137
137
|
*
|
|
138
138
|
* An application using SharedString which explicitly wants to opt in to allowing reentrancy anyway can set `sharedStringPreventReentrancy`
|
|
139
139
|
* on the data store options to `false`.
|
|
140
|
-
* @internal
|
|
141
140
|
*/
|
|
142
141
|
protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
|
|
143
142
|
|
|
@@ -147,7 +146,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
147
146
|
switch (event.deltaOperation) {
|
|
148
147
|
case MergeTreeDeltaType.ANNOTATE: {
|
|
149
148
|
const lastAnnotate = ops[ops.length - 1] as IMergeTreeAnnotateMsg;
|
|
150
|
-
const props = {};
|
|
149
|
+
const props: PropertySet = {};
|
|
151
150
|
for (const key of Object.keys(r.propertyDeltas)) {
|
|
152
151
|
props[key] = r.segment.properties?.[key] ?? null;
|
|
153
152
|
}
|
|
@@ -163,7 +162,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
163
162
|
r.position,
|
|
164
163
|
r.position + r.segment.cachedLength,
|
|
165
164
|
props,
|
|
166
|
-
undefined,
|
|
167
165
|
),
|
|
168
166
|
);
|
|
169
167
|
}
|
|
@@ -190,12 +188,32 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
190
188
|
break;
|
|
191
189
|
}
|
|
192
190
|
|
|
191
|
+
case MergeTreeDeltaType.OBLITERATE: {
|
|
192
|
+
const lastRem = ops[ops.length - 1] as IMergeTreeObliterateMsg;
|
|
193
|
+
if (lastRem?.pos1 === r.position) {
|
|
194
|
+
assert(
|
|
195
|
+
lastRem.pos2 !== undefined,
|
|
196
|
+
0x874 /* pos2 should not be undefined here */,
|
|
197
|
+
);
|
|
198
|
+
lastRem.pos2 += r.segment.cachedLength;
|
|
199
|
+
} else {
|
|
200
|
+
ops.push(
|
|
201
|
+
createObliterateRangeOp(
|
|
202
|
+
r.position,
|
|
203
|
+
r.position + r.segment.cachedLength,
|
|
204
|
+
),
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
|
|
193
210
|
default:
|
|
194
211
|
}
|
|
195
212
|
}
|
|
196
213
|
return ops;
|
|
197
214
|
}
|
|
198
215
|
|
|
216
|
+
// eslint-disable-next-line import/no-deprecated
|
|
199
217
|
protected client: Client;
|
|
200
218
|
/** `Deferred` that triggers once the object is loaded */
|
|
201
219
|
protected loadedDeferred = new Deferred<void>();
|
|
@@ -233,6 +251,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
233
251
|
this.logger.sendErrorEvent({ eventName: "SequenceLoadFailed" }, error);
|
|
234
252
|
});
|
|
235
253
|
|
|
254
|
+
// eslint-disable-next-line import/no-deprecated
|
|
236
255
|
this.client = new Client(
|
|
237
256
|
segmentFromSpec,
|
|
238
257
|
createChildLogger({
|
|
@@ -267,12 +286,25 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
267
286
|
* @param start - The inclusive start of the range to remove
|
|
268
287
|
* @param end - The exclusive end of the range to remove
|
|
269
288
|
*/
|
|
270
|
-
public removeRange(start: number, end: number):
|
|
271
|
-
|
|
289
|
+
public removeRange(start: number, end: number): void {
|
|
290
|
+
this.guardReentrancy(() => this.client.removeRangeLocal(start, end));
|
|
272
291
|
}
|
|
273
292
|
|
|
274
293
|
/**
|
|
275
|
-
*
|
|
294
|
+
* Obliterate is similar to remove, but differs in that segments concurrently
|
|
295
|
+
* inserted into an obliterated range will also be removed
|
|
296
|
+
*
|
|
297
|
+
* @param start - The inclusive start of the range to obliterate
|
|
298
|
+
* @param end - The exclusive end of the range to obliterate
|
|
299
|
+
*/
|
|
300
|
+
public obliterateRange(start: number, end: number): void {
|
|
301
|
+
this.guardReentrancy(() => this.client.obliterateRangeLocal(start, end));
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* @deprecated The ability to create group ops will be removed in an upcoming
|
|
306
|
+
* release, as group ops are redundant with the native batching capabilities
|
|
307
|
+
* of the runtime
|
|
276
308
|
*/
|
|
277
309
|
public groupOperation(groupOp: IMergeTreeGroupMsg) {
|
|
278
310
|
this.guardReentrancy(() => this.client.localTransaction(groupOp));
|
|
@@ -312,16 +344,10 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
312
344
|
* @param start - The inclusive start position of the range to annotate
|
|
313
345
|
* @param end - The exclusive end position of the range to annotate
|
|
314
346
|
* @param props - The properties to annotate the range with
|
|
315
|
-
* @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
|
|
316
347
|
*
|
|
317
348
|
*/
|
|
318
|
-
public annotateRange(
|
|
319
|
-
start
|
|
320
|
-
end: number,
|
|
321
|
-
props: PropertySet,
|
|
322
|
-
combiningOp?: ICombiningOp,
|
|
323
|
-
) {
|
|
324
|
-
this.guardReentrancy(() => this.client.annotateRangeLocal(start, end, props, combiningOp));
|
|
349
|
+
public annotateRange(start: number, end: number, props: PropertySet): void {
|
|
350
|
+
this.guardReentrancy(() => this.client.annotateRangeLocal(start, end, props));
|
|
325
351
|
}
|
|
326
352
|
|
|
327
353
|
public getPropertiesAtPosition(pos: number) {
|
|
@@ -398,10 +424,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
398
424
|
);
|
|
399
425
|
}
|
|
400
426
|
|
|
401
|
-
|
|
402
|
-
* @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
|
|
403
|
-
*/
|
|
404
|
-
public submitSequenceMessage(message: IMergeTreeOp) {
|
|
427
|
+
private submitSequenceMessage(message: IMergeTreeOp) {
|
|
405
428
|
if (!this.isAttached()) {
|
|
406
429
|
return;
|
|
407
430
|
}
|
|
@@ -412,7 +435,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
412
435
|
|
|
413
436
|
// if loading isn't complete, we need to cache
|
|
414
437
|
// local ops until loading is complete, and then
|
|
415
|
-
// they will be
|
|
438
|
+
// they will be present
|
|
416
439
|
if (!this.loadedDeferred.isCompleted) {
|
|
417
440
|
this.loadedDeferredOutgoingOps.push(metadata ? [translated, metadata] : translated);
|
|
418
441
|
} else {
|
|
@@ -431,12 +454,13 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
431
454
|
|
|
432
455
|
/**
|
|
433
456
|
* Walk the underlying segments of the sequence.
|
|
434
|
-
* The walked segments may extend beyond the range
|
|
435
|
-
*
|
|
436
|
-
* Set split range to true to ensure only segments within the
|
|
437
|
-
* range are walked.
|
|
457
|
+
* The walked segments may extend beyond the range if the segments cross the
|
|
458
|
+
* ranges start or end boundaries.
|
|
438
459
|
*
|
|
439
|
-
*
|
|
460
|
+
* Set split range to true to ensure only segments within the range are walked.
|
|
461
|
+
*
|
|
462
|
+
* @param handler - The function to handle each segment. Traversal ends if
|
|
463
|
+
* this function returns true.
|
|
440
464
|
* @param start - Optional. The start of range walk.
|
|
441
465
|
* @param end - Optional. The end of range walk
|
|
442
466
|
* @param accum - Optional. An object that will be passed to the handler for accumulation
|
|
@@ -452,13 +476,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
452
476
|
this.client.walkSegments(handler, start, end, accum as TClientData, splitRange);
|
|
453
477
|
}
|
|
454
478
|
|
|
455
|
-
/**
|
|
456
|
-
* @deprecated this functionality is no longer supported and will be removed
|
|
457
|
-
*/
|
|
458
|
-
public getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap {
|
|
459
|
-
return this.client.getStackContext(startPos, rangeLabels);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
479
|
/**
|
|
463
480
|
* @returns The most recent sequence number which has been acked by the server and processed by this
|
|
464
481
|
* SharedSegmentSequence.
|
|
@@ -472,7 +489,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
472
489
|
* @param refPos - The reference position to insert the segment at
|
|
473
490
|
* @param segment - The segment to insert
|
|
474
491
|
*/
|
|
475
|
-
public insertAtReferencePosition(pos: ReferencePosition, segment: T) {
|
|
492
|
+
public insertAtReferencePosition(pos: ReferencePosition, segment: T): void {
|
|
476
493
|
this.guardReentrancy(() => this.client.insertAtReferencePositionLocal(pos, segment));
|
|
477
494
|
}
|
|
478
495
|
/**
|
|
@@ -480,7 +497,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
480
497
|
* @param start - The position to insert the segment at
|
|
481
498
|
* @param spec - The segment to inserts spec
|
|
482
499
|
*/
|
|
483
|
-
public insertFromSpec(pos: number, spec: IJSONSegment) {
|
|
500
|
+
public insertFromSpec(pos: number, spec: IJSONSegment): void {
|
|
484
501
|
const segment = this.segmentFromSpec(spec);
|
|
485
502
|
this.guardReentrancy(() => this.client.insertSegmentLocal(pos, segment));
|
|
486
503
|
}
|
|
@@ -550,7 +567,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
550
567
|
* @param end - The end of the range to replace
|
|
551
568
|
* @param segment - The segment that will replace the range
|
|
552
569
|
*/
|
|
553
|
-
protected replaceRange(start: number, end: number, segment: ISegment) {
|
|
570
|
+
protected replaceRange(start: number, end: number, segment: ISegment): void {
|
|
554
571
|
// Insert at the max end of the range when start > end, but still remove the range later
|
|
555
572
|
const insertIndex: number = Math.max(start, end);
|
|
556
573
|
|
|
@@ -764,6 +781,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
764
781
|
stashMessage = {
|
|
765
782
|
...message,
|
|
766
783
|
referenceSequenceNumber: stashMessage.sequenceNumber - 1,
|
|
784
|
+
// eslint-disable-next-line import/no-deprecated
|
|
767
785
|
contents: ops.length !== 1 ? createGroupOp(...ops) : ops[0],
|
|
768
786
|
};
|
|
769
787
|
}
|