@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,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/* eslint-disable import/no-deprecated */
|
|
7
|
-
|
|
8
6
|
import { assert } from "@fluidframework/core-utils";
|
|
9
7
|
import {
|
|
8
|
+
// eslint-disable-next-line import/no-deprecated
|
|
10
9
|
Client,
|
|
11
10
|
IMergeTreeDeltaCallbackArgs,
|
|
12
11
|
IMergeTreeDeltaOpArgs,
|
|
@@ -16,6 +15,7 @@ import {
|
|
|
16
15
|
MergeTreeDeltaOperationTypes,
|
|
17
16
|
MergeTreeMaintenanceType,
|
|
18
17
|
PropertySet,
|
|
18
|
+
// eslint-disable-next-line import/no-deprecated
|
|
19
19
|
SortedSegmentSet,
|
|
20
20
|
} from "@fluidframework/merge-tree";
|
|
21
21
|
|
|
@@ -25,18 +25,20 @@ import {
|
|
|
25
25
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
26
26
|
* point in time at which the operation was applied.
|
|
27
27
|
* They will not take into any future modifications performed to the underlying sequence and merge tree.
|
|
28
|
-
* @
|
|
28
|
+
* @alpha
|
|
29
29
|
*/
|
|
30
30
|
export abstract class SequenceEvent<
|
|
31
31
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
|
32
32
|
> {
|
|
33
33
|
public readonly deltaOperation: TOperation;
|
|
34
|
+
// eslint-disable-next-line import/no-deprecated
|
|
34
35
|
private readonly sortedRanges: Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>;
|
|
35
36
|
private readonly pFirst: Lazy<ISequenceDeltaRange<TOperation>>;
|
|
36
37
|
private readonly pLast: Lazy<ISequenceDeltaRange<TOperation>>;
|
|
37
38
|
|
|
38
39
|
constructor(
|
|
39
40
|
public readonly deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>,
|
|
41
|
+
// eslint-disable-next-line import/no-deprecated
|
|
40
42
|
private readonly mergeTreeClient: Client,
|
|
41
43
|
) {
|
|
42
44
|
assert(
|
|
@@ -45,7 +47,9 @@ export abstract class SequenceEvent<
|
|
|
45
47
|
);
|
|
46
48
|
this.deltaOperation = deltaArgs.operation;
|
|
47
49
|
|
|
50
|
+
// eslint-disable-next-line import/no-deprecated
|
|
48
51
|
this.sortedRanges = new Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>(() => {
|
|
52
|
+
// eslint-disable-next-line import/no-deprecated
|
|
49
53
|
const set = new SortedSegmentSet<ISequenceDeltaRange<TOperation>>();
|
|
50
54
|
this.deltaArgs.deltaSegments.forEach((delta) => {
|
|
51
55
|
const newRange: ISequenceDeltaRange<TOperation> = {
|
|
@@ -108,7 +112,7 @@ export abstract class SequenceEvent<
|
|
|
108
112
|
* For group ops, each op will get its own event, and the group op property will be set on the op args.
|
|
109
113
|
*
|
|
110
114
|
* Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
|
|
111
|
-
* @
|
|
115
|
+
* @alpha
|
|
112
116
|
*/
|
|
113
117
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
114
118
|
/**
|
|
@@ -119,6 +123,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
119
123
|
constructor(
|
|
120
124
|
public readonly opArgs: IMergeTreeDeltaOpArgs,
|
|
121
125
|
deltaArgs: IMergeTreeDeltaCallbackArgs,
|
|
126
|
+
// eslint-disable-next-line import/no-deprecated
|
|
122
127
|
mergeTreeClient: Client,
|
|
123
128
|
) {
|
|
124
129
|
super(deltaArgs, mergeTreeClient);
|
|
@@ -132,12 +137,13 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
132
137
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
133
138
|
* point in time at which the operation was applied.
|
|
134
139
|
* They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
|
|
135
|
-
* @
|
|
140
|
+
* @alpha
|
|
136
141
|
*/
|
|
137
142
|
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
138
143
|
constructor(
|
|
139
144
|
public readonly opArgs: IMergeTreeDeltaOpArgs | undefined,
|
|
140
145
|
deltaArgs: IMergeTreeMaintenanceCallbackArgs,
|
|
146
|
+
// eslint-disable-next-line import/no-deprecated
|
|
141
147
|
mergeTreeClient: Client,
|
|
142
148
|
) {
|
|
143
149
|
super(deltaArgs, mergeTreeClient);
|
|
@@ -146,7 +152,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
|
|
|
146
152
|
|
|
147
153
|
/**
|
|
148
154
|
* A range that has changed corresponding to a segment modification.
|
|
149
|
-
* @
|
|
155
|
+
* @alpha
|
|
150
156
|
*/
|
|
151
157
|
export interface ISequenceDeltaRange<
|
|
152
158
|
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,14 +24,14 @@ 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";
|
|
31
31
|
public static is(segment: ISegment): segment is SubSequence<any> {
|
|
32
32
|
return segment.type === SubSequence.typeString;
|
|
33
33
|
}
|
|
34
|
-
public static fromJSONObject<U>(spec:
|
|
34
|
+
public static fromJSONObject<U>(spec: any) {
|
|
35
35
|
if (spec && typeof spec === "object" && "items" in spec) {
|
|
36
36
|
const segment = new SubSequence<U>(spec.items);
|
|
37
37
|
if (spec.props) {
|
|
@@ -76,7 +76,10 @@ export class SubSequence<T> extends BaseSegment {
|
|
|
76
76
|
public append(segment: ISegment) {
|
|
77
77
|
assert(SubSequence.is(segment), 0x448 /* can only append to another run segment */);
|
|
78
78
|
super.append(segment);
|
|
79
|
-
|
|
79
|
+
// assert above checks that segment is a SubSequence but not that generic T matches.
|
|
80
|
+
// Since SubSequence is already deprecated, assume that usage is generic T consistent
|
|
81
|
+
// and just cast here to satisfy concat.
|
|
82
|
+
this.items = this.items.concat((segment as SubSequence<T>).items);
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
// TODO: retain removed items for undo
|
|
@@ -108,7 +111,7 @@ export class SubSequence<T> extends BaseSegment {
|
|
|
108
111
|
|
|
109
112
|
/**
|
|
110
113
|
* @deprecated SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
|
|
111
|
-
* @
|
|
114
|
+
* @internal
|
|
112
115
|
*/
|
|
113
116
|
export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
|
|
114
117
|
constructor(
|
|
@@ -169,7 +172,10 @@ export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
|
|
|
169
172
|
if (firstSegment === undefined) {
|
|
170
173
|
firstSegment = segment;
|
|
171
174
|
}
|
|
172
|
-
|
|
175
|
+
// Condition above checks that segment is a SubSequence but not that
|
|
176
|
+
// generic T matches. Since SubSequence is already deprecated, assume
|
|
177
|
+
// that walk only has SubSequence<T> segments and just cast here.
|
|
178
|
+
items.push(...(segment as SubSequence<T>).items);
|
|
173
179
|
}
|
|
174
180
|
return true;
|
|
175
181
|
},
|
package/src/sharedString.ts
CHANGED
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
ICombiningOp,
|
|
8
|
-
IMergeTreeInsertMsg,
|
|
9
|
-
IMergeTreeRemoveMsg,
|
|
10
7
|
IMergeTreeTextHelper,
|
|
11
8
|
IRelativePosition,
|
|
12
9
|
ISegment,
|
|
@@ -24,7 +21,7 @@ import { SharedStringFactory } from "./sequenceFactory";
|
|
|
24
21
|
|
|
25
22
|
/**
|
|
26
23
|
* Fluid object interface describing access methods on a SharedString
|
|
27
|
-
* @
|
|
24
|
+
* @alpha
|
|
28
25
|
*/
|
|
29
26
|
export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
30
27
|
/**
|
|
@@ -41,11 +38,7 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
41
38
|
* @param refType - The reference type of the marker
|
|
42
39
|
* @param props - The properties of the marker
|
|
43
40
|
*/
|
|
44
|
-
insertMarker(
|
|
45
|
-
pos: number,
|
|
46
|
-
refType: ReferenceType,
|
|
47
|
-
props?: PropertySet,
|
|
48
|
-
): IMergeTreeInsertMsg | undefined;
|
|
41
|
+
insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): void;
|
|
49
42
|
|
|
50
43
|
/**
|
|
51
44
|
* {@inheritDoc SharedSegmentSequence.posFromRelativePos}
|
|
@@ -54,7 +47,7 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
54
47
|
}
|
|
55
48
|
|
|
56
49
|
/**
|
|
57
|
-
* @
|
|
50
|
+
* @alpha
|
|
58
51
|
*/
|
|
59
52
|
export type SharedStringSegment = TextSegment | Marker;
|
|
60
53
|
|
|
@@ -66,8 +59,7 @@ export type SharedStringSegment = TextSegment | Marker;
|
|
|
66
59
|
* In addition to text, a Shared String can also contain markers. Markers can be
|
|
67
60
|
* used to store metadata at positions within the text, like the details of an
|
|
68
61
|
* image or Fluid object that should be rendered with the text.
|
|
69
|
-
*
|
|
70
|
-
* @public
|
|
62
|
+
* @alpha
|
|
71
63
|
*/
|
|
72
64
|
export class SharedString
|
|
73
65
|
extends SharedSegmentSequence<SharedStringSegment>
|
|
@@ -116,7 +108,7 @@ export class SharedString
|
|
|
116
108
|
relativePos1: IRelativePosition,
|
|
117
109
|
refType: ReferenceType,
|
|
118
110
|
props?: PropertySet,
|
|
119
|
-
) {
|
|
111
|
+
): void {
|
|
120
112
|
const segment = new Marker(refType);
|
|
121
113
|
if (props) {
|
|
122
114
|
segment.addProperties(props);
|
|
@@ -129,17 +121,13 @@ export class SharedString
|
|
|
129
121
|
/**
|
|
130
122
|
* {@inheritDoc ISharedString.insertMarker}
|
|
131
123
|
*/
|
|
132
|
-
public insertMarker(
|
|
133
|
-
pos: number,
|
|
134
|
-
refType: ReferenceType,
|
|
135
|
-
props?: PropertySet,
|
|
136
|
-
): IMergeTreeInsertMsg | undefined {
|
|
124
|
+
public insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): void {
|
|
137
125
|
const segment = new Marker(refType);
|
|
138
126
|
if (props) {
|
|
139
127
|
segment.addProperties(props);
|
|
140
128
|
}
|
|
141
129
|
|
|
142
|
-
|
|
130
|
+
this.guardReentrancy(() => this.client.insertSegmentLocal(pos, segment));
|
|
143
131
|
}
|
|
144
132
|
|
|
145
133
|
/**
|
|
@@ -148,7 +136,11 @@ export class SharedString
|
|
|
148
136
|
* @param text - The text to insert
|
|
149
137
|
* @param props - The properties of text
|
|
150
138
|
*/
|
|
151
|
-
public insertTextRelative(
|
|
139
|
+
public insertTextRelative(
|
|
140
|
+
relativePos1: IRelativePosition,
|
|
141
|
+
text: string,
|
|
142
|
+
props?: PropertySet,
|
|
143
|
+
): void {
|
|
152
144
|
const segment = new TextSegment(text);
|
|
153
145
|
if (props) {
|
|
154
146
|
segment.addProperties(props);
|
|
@@ -161,7 +153,7 @@ export class SharedString
|
|
|
161
153
|
/**
|
|
162
154
|
* {@inheritDoc ISharedString.insertText}
|
|
163
155
|
*/
|
|
164
|
-
public insertText(pos: number, text: string, props?: PropertySet) {
|
|
156
|
+
public insertText(pos: number, text: string, props?: PropertySet): void {
|
|
165
157
|
const segment = new TextSegment(text);
|
|
166
158
|
if (props) {
|
|
167
159
|
segment.addProperties(props);
|
|
@@ -177,7 +169,7 @@ export class SharedString
|
|
|
177
169
|
* @param text - The text to replace the range with
|
|
178
170
|
* @param props - Optional. The properties of the replacement text
|
|
179
171
|
*/
|
|
180
|
-
public replaceText(start: number, end: number, text: string, props?: PropertySet) {
|
|
172
|
+
public replaceText(start: number, end: number, text: string, props?: PropertySet): void {
|
|
181
173
|
this.replaceRange(start, end, TextSegment.make(text, props));
|
|
182
174
|
}
|
|
183
175
|
|
|
@@ -187,34 +179,17 @@ export class SharedString
|
|
|
187
179
|
* @param end - The exclusive end of the range to replace
|
|
188
180
|
* @returns the message sent.
|
|
189
181
|
*/
|
|
190
|
-
public removeText(start: number, end: number):
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Annotates the marker with the provided properties and calls the callback on consensus.
|
|
196
|
-
* @param marker - The marker to annotate
|
|
197
|
-
* @param props - The properties to annotate the marker with
|
|
198
|
-
* @param consensusCallback - The callback called when consensus is reached
|
|
199
|
-
*/
|
|
200
|
-
public annotateMarkerNotifyConsensus(
|
|
201
|
-
marker: Marker,
|
|
202
|
-
props: PropertySet,
|
|
203
|
-
callback: (m: Marker) => void,
|
|
204
|
-
) {
|
|
205
|
-
this.guardReentrancy(() =>
|
|
206
|
-
this.client.annotateMarkerNotifyConsensus(marker, props, callback),
|
|
207
|
-
);
|
|
182
|
+
public removeText(start: number, end: number): void {
|
|
183
|
+
this.removeRange(start, end);
|
|
208
184
|
}
|
|
209
185
|
|
|
210
186
|
/**
|
|
211
187
|
* Annotates the marker with the provided properties.
|
|
212
188
|
* @param marker - The marker to annotate
|
|
213
189
|
* @param props - The properties to annotate the marker with
|
|
214
|
-
* @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
|
|
215
190
|
*/
|
|
216
|
-
public annotateMarker(marker: Marker, props: PropertySet
|
|
217
|
-
this.guardReentrancy(() => this.client.annotateMarker(marker, props
|
|
191
|
+
public annotateMarker(marker: Marker, props: PropertySet) {
|
|
192
|
+
this.guardReentrancy(() => this.client.annotateMarker(marker, props));
|
|
218
193
|
}
|
|
219
194
|
|
|
220
195
|
/**
|
|
@@ -339,7 +314,7 @@ interface ITextAndMarkerAccumulator {
|
|
|
339
314
|
* // parallelMarkers === [<paragraph marker 1 object>, <paragraph marker 2 object>]
|
|
340
315
|
* // Note parallelText does not include "missing".
|
|
341
316
|
* ```
|
|
342
|
-
* @
|
|
317
|
+
* @internal
|
|
343
318
|
*/
|
|
344
319
|
export function getTextAndMarkers(
|
|
345
320
|
sharedString: SharedString,
|
|
@@ -427,10 +402,8 @@ const gatherTextAndMarkers: ISegmentAction<ITextAndMarkerAccumulator> = (
|
|
|
427
402
|
} else {
|
|
428
403
|
if (placeholder && placeholder.length > 0) {
|
|
429
404
|
const placeholderText =
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
`\n${segment.toString()}`
|
|
433
|
-
: placeholder.repeat(segment.cachedLength);
|
|
405
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
406
|
+
placeholder === "*" ? `\n${segment}` : placeholder.repeat(segment.cachedLength);
|
|
434
407
|
textSegment.text += placeholderText;
|
|
435
408
|
} else {
|
|
436
409
|
const marker = segment as Marker;
|