@fluidframework/sequence 2.12.0 → 2.20.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 +46 -0
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +3 -1
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/package.json +2 -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.map +1 -1
- package/dist/revertibles.js +10 -9
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +1 -4
- package/dist/sequence.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +3 -1
- package/lib/intervals/sequenceInterval.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.map +1 -1
- package/lib/revertibles.js +11 -10
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +2 -7
- package/lib/sequence.js.map +1 -1
- package/package.json +68 -19
- package/src/intervals/sequenceInterval.ts +7 -4
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +22 -23
- package/src/sequence.ts +1 -10
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/sequence",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"description": "Distributed sequence",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -79,37 +79,37 @@
|
|
|
79
79
|
"temp-directory": "nyc/.nyc_output"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"@fluid-internal/client-utils": "~2.
|
|
83
|
-
"@fluidframework/core-interfaces": "~2.
|
|
84
|
-
"@fluidframework/core-utils": "~2.
|
|
85
|
-
"@fluidframework/datastore-definitions": "~2.
|
|
86
|
-
"@fluidframework/driver-definitions": "~2.
|
|
87
|
-
"@fluidframework/merge-tree": "~2.
|
|
88
|
-
"@fluidframework/runtime-definitions": "~2.
|
|
89
|
-
"@fluidframework/runtime-utils": "~2.
|
|
90
|
-
"@fluidframework/shared-object-base": "~2.
|
|
91
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
82
|
+
"@fluid-internal/client-utils": "~2.20.0",
|
|
83
|
+
"@fluidframework/core-interfaces": "~2.20.0",
|
|
84
|
+
"@fluidframework/core-utils": "~2.20.0",
|
|
85
|
+
"@fluidframework/datastore-definitions": "~2.20.0",
|
|
86
|
+
"@fluidframework/driver-definitions": "~2.20.0",
|
|
87
|
+
"@fluidframework/merge-tree": "~2.20.0",
|
|
88
|
+
"@fluidframework/runtime-definitions": "~2.20.0",
|
|
89
|
+
"@fluidframework/runtime-utils": "~2.20.0",
|
|
90
|
+
"@fluidframework/shared-object-base": "~2.20.0",
|
|
91
|
+
"@fluidframework/telemetry-utils": "~2.20.0",
|
|
92
92
|
"double-ended-queue": "^2.1.0-0",
|
|
93
93
|
"uuid": "^9.0.0"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@arethetypeswrong/cli": "^0.17.1",
|
|
97
97
|
"@biomejs/biome": "~1.9.3",
|
|
98
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
99
|
-
"@fluid-private/stochastic-test-utils": "~2.
|
|
100
|
-
"@fluid-private/test-dds-utils": "~2.
|
|
98
|
+
"@fluid-internal/mocha-test-setup": "~2.20.0",
|
|
99
|
+
"@fluid-private/stochastic-test-utils": "~2.20.0",
|
|
100
|
+
"@fluid-private/test-dds-utils": "~2.20.0",
|
|
101
101
|
"@fluid-tools/benchmark": "^0.50.0",
|
|
102
102
|
"@fluid-tools/build-cli": "^0.51.0",
|
|
103
103
|
"@fluidframework/build-common": "^2.0.3",
|
|
104
104
|
"@fluidframework/build-tools": "^0.51.0",
|
|
105
|
-
"@fluidframework/container-definitions": "~2.
|
|
105
|
+
"@fluidframework/container-definitions": "~2.20.0",
|
|
106
106
|
"@fluidframework/eslint-config-fluid": "^5.6.0",
|
|
107
|
-
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.
|
|
108
|
-
"@fluidframework/test-runtime-utils": "~2.
|
|
107
|
+
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.13.0",
|
|
108
|
+
"@fluidframework/test-runtime-utils": "~2.20.0",
|
|
109
109
|
"@microsoft/api-extractor": "7.47.8",
|
|
110
110
|
"@types/diff": "^3.5.1",
|
|
111
111
|
"@types/double-ended-queue": "^2.1.0",
|
|
112
|
-
"@types/mocha": "^
|
|
112
|
+
"@types/mocha": "^10.0.10",
|
|
113
113
|
"@types/node": "^18.19.0",
|
|
114
114
|
"@types/uuid": "^9.0.2",
|
|
115
115
|
"c8": "^8.0.1",
|
|
@@ -136,7 +136,56 @@
|
|
|
136
136
|
}
|
|
137
137
|
},
|
|
138
138
|
"typeValidation": {
|
|
139
|
-
"broken": {
|
|
139
|
+
"broken": {
|
|
140
|
+
"Class_BaseSegment": {
|
|
141
|
+
"backCompat": false
|
|
142
|
+
},
|
|
143
|
+
"Class_Marker": {
|
|
144
|
+
"backCompat": false
|
|
145
|
+
},
|
|
146
|
+
"Class_TextSegment": {
|
|
147
|
+
"backCompat": false
|
|
148
|
+
},
|
|
149
|
+
"Class_TrackingGroup": {
|
|
150
|
+
"backCompat": false
|
|
151
|
+
},
|
|
152
|
+
"ClassStatics_BaseSegment": {
|
|
153
|
+
"backCompat": false
|
|
154
|
+
},
|
|
155
|
+
"ClassStatics_Marker": {
|
|
156
|
+
"backCompat": false
|
|
157
|
+
},
|
|
158
|
+
"ClassStatics_TextSegment": {
|
|
159
|
+
"backCompat": false
|
|
160
|
+
},
|
|
161
|
+
"ClassStatics_TrackingGroup": {
|
|
162
|
+
"backCompat": false
|
|
163
|
+
},
|
|
164
|
+
"Interface_ISegment": {
|
|
165
|
+
"backCompat": false
|
|
166
|
+
},
|
|
167
|
+
"Interface_ISequenceDeltaRange": {
|
|
168
|
+
"backCompat": false
|
|
169
|
+
},
|
|
170
|
+
"Interface_SequenceDeltaEvent": {
|
|
171
|
+
"backCompat": false
|
|
172
|
+
},
|
|
173
|
+
"Interface_SequenceEvent": {
|
|
174
|
+
"backCompat": false
|
|
175
|
+
},
|
|
176
|
+
"Interface_SequenceMaintenanceEvent": {
|
|
177
|
+
"backCompat": false
|
|
178
|
+
},
|
|
179
|
+
"TypeAlias_IntervalRevertible": {
|
|
180
|
+
"backCompat": false
|
|
181
|
+
},
|
|
182
|
+
"TypeAlias_SharedStringRevertible": {
|
|
183
|
+
"backCompat": false
|
|
184
|
+
},
|
|
185
|
+
"TypeAlias_SharedStringSegment": {
|
|
186
|
+
"backCompat": false
|
|
187
|
+
}
|
|
188
|
+
},
|
|
140
189
|
"entrypoint": "legacy"
|
|
141
190
|
},
|
|
142
191
|
"scripts": {
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
endpointPosAndSide,
|
|
30
30
|
addProperties,
|
|
31
31
|
copyPropertiesAndManager,
|
|
32
|
+
type ISegmentInternal,
|
|
32
33
|
} from "@fluidframework/merge-tree/internal";
|
|
33
34
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
34
35
|
|
|
@@ -196,8 +197,8 @@ export class SequenceIntervalClass implements SequenceInterval {
|
|
|
196
197
|
|
|
197
198
|
/***/
|
|
198
199
|
public get stickiness(): IntervalStickiness {
|
|
199
|
-
const startSegment = this.start.getSegment();
|
|
200
|
-
const endSegment = this.end.getSegment();
|
|
200
|
+
const startSegment: ISegmentInternal | undefined = this.start.getSegment();
|
|
201
|
+
const endSegment: ISegmentInternal | undefined = this.end.getSegment();
|
|
201
202
|
return computeStickinessFromSide(
|
|
202
203
|
startSegment?.endpointType,
|
|
203
204
|
this.startSide,
|
|
@@ -428,10 +429,12 @@ export class SequenceIntervalClass implements SequenceInterval {
|
|
|
428
429
|
useNewSlidingBehavior: boolean = false,
|
|
429
430
|
) {
|
|
430
431
|
const { startSide, endSide, startPos, endPos } = endpointPosAndSide(start, end);
|
|
432
|
+
const startSegment: ISegmentInternal | undefined = this.start.getSegment();
|
|
433
|
+
const endSegment: ISegmentInternal | undefined = this.end.getSegment();
|
|
431
434
|
const stickiness = computeStickinessFromSide(
|
|
432
|
-
startPos ??
|
|
435
|
+
startPos ?? startSegment?.endpointType,
|
|
433
436
|
startSide ?? this.startSide,
|
|
434
|
-
endPos ??
|
|
437
|
+
endPos ?? endSegment?.endpointType,
|
|
435
438
|
endSide ?? this.endSide,
|
|
436
439
|
);
|
|
437
440
|
const getRefType = (baseType: ReferenceType): ReferenceType => {
|
package/src/packageVersion.ts
CHANGED
package/src/revertibles.ts
CHANGED
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
PropertySet,
|
|
15
15
|
ReferenceType,
|
|
16
16
|
SlidingPreference, // eslint-disable-next-line import/no-deprecated
|
|
17
|
-
SortedSet,
|
|
18
17
|
appendToMergeTreeDeltaRevertibles,
|
|
19
18
|
discardMergeTreeDeltaRevertible,
|
|
20
19
|
getSlideToSegoff,
|
|
@@ -24,6 +23,9 @@ import {
|
|
|
24
23
|
InteriorSequencePlace,
|
|
25
24
|
Side,
|
|
26
25
|
type ISegmentInternal,
|
|
26
|
+
segmentIsRemoved,
|
|
27
|
+
SortedSegmentSet,
|
|
28
|
+
type ISegment,
|
|
27
29
|
} from "@fluidframework/merge-tree/internal";
|
|
28
30
|
|
|
29
31
|
import { IntervalOpType, SequenceInterval, SequenceIntervalClass } from "./intervals/index.js";
|
|
@@ -127,18 +129,16 @@ export function appendDeleteIntervalToRevertibles(
|
|
|
127
129
|
if (!startSeg) {
|
|
128
130
|
return revertibles;
|
|
129
131
|
}
|
|
130
|
-
const startType =
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
132
|
+
const startType = segmentIsRemoved(startSeg)
|
|
133
|
+
? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
|
|
134
|
+
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
134
135
|
const endSeg = interval.end.getSegment() as SharedStringSegment | undefined;
|
|
135
136
|
if (!endSeg) {
|
|
136
137
|
return revertibles;
|
|
137
138
|
}
|
|
138
|
-
const endType =
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
139
|
+
const endType = segmentIsRemoved(startSeg)
|
|
140
|
+
? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
|
|
141
|
+
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
142
142
|
const startRef = string.createLocalReferencePosition(
|
|
143
143
|
startSeg,
|
|
144
144
|
interval.start.getOffset(),
|
|
@@ -181,15 +181,13 @@ export function appendChangeIntervalToRevertibles(
|
|
|
181
181
|
// This logic is needed because the ReferenceType StayOnRemove cannot be used
|
|
182
182
|
// on removed segments. This works for revertibles because the old position of the
|
|
183
183
|
// interval within the removed segment is handled by the remove range revertible.
|
|
184
|
-
const startType =
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
184
|
+
const startType = segmentIsRemoved(startSeg)
|
|
185
|
+
? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
|
|
186
|
+
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
188
187
|
const endSeg = previousInterval.end.getSegment() as SharedStringSegment;
|
|
189
|
-
const endType =
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
188
|
+
const endType = segmentIsRemoved(startSeg)
|
|
189
|
+
? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
|
|
190
|
+
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
193
191
|
const prevStartRef = string.createLocalReferencePosition(
|
|
194
192
|
startSeg,
|
|
195
193
|
previousInterval.start.getOffset(),
|
|
@@ -582,14 +580,11 @@ function newEndpointPosition(
|
|
|
582
580
|
interface RangeInfo {
|
|
583
581
|
ranges: readonly Readonly<ISequenceDeltaRange<MergeTreeDeltaOperationType>>[];
|
|
584
582
|
length: number;
|
|
583
|
+
segment: ISegment;
|
|
585
584
|
}
|
|
586
585
|
|
|
587
586
|
// eslint-disable-next-line import/no-deprecated
|
|
588
|
-
class SortedRangeSet extends
|
|
589
|
-
protected getKey(item: RangeInfo): string {
|
|
590
|
-
return item.ranges[0].segment.ordinal;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
587
|
+
class SortedRangeSet extends SortedSegmentSet<RangeInfo> {}
|
|
593
588
|
|
|
594
589
|
function revertLocalSequenceRemove(
|
|
595
590
|
sharedString: ISharedString,
|
|
@@ -602,7 +597,11 @@ function revertLocalSequenceRemove(
|
|
|
602
597
|
event.ranges.forEach((range) => {
|
|
603
598
|
length += range.segment.cachedLength;
|
|
604
599
|
});
|
|
605
|
-
restoredRanges.addOrUpdate({
|
|
600
|
+
restoredRanges.addOrUpdate({
|
|
601
|
+
ranges: event.ranges,
|
|
602
|
+
length,
|
|
603
|
+
segment: event.ranges[0].segment,
|
|
604
|
+
});
|
|
606
605
|
}
|
|
607
606
|
};
|
|
608
607
|
sharedString.on("sequenceDelta", saveSegments);
|
package/src/sequence.ts
CHANGED
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
ISequencedDocumentMessage,
|
|
17
17
|
} from "@fluidframework/driver-definitions/internal";
|
|
18
18
|
import {
|
|
19
|
-
// eslint-disable-next-line import/no-deprecated
|
|
20
19
|
Client,
|
|
21
20
|
IJSONSegment,
|
|
22
21
|
IMergeTreeAnnotateMsg,
|
|
@@ -36,8 +35,6 @@ import {
|
|
|
36
35
|
PropertySet,
|
|
37
36
|
ReferencePosition,
|
|
38
37
|
ReferenceType,
|
|
39
|
-
// eslint-disable-next-line import/no-deprecated
|
|
40
|
-
SegmentGroup,
|
|
41
38
|
SlidingPreference,
|
|
42
39
|
createAnnotateRangeOp,
|
|
43
40
|
// eslint-disable-next-line import/no-deprecated
|
|
@@ -504,7 +501,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
504
501
|
return this.ongoingResubmitRefSeq ?? this.deltaManager.lastSequenceNumber;
|
|
505
502
|
}
|
|
506
503
|
|
|
507
|
-
// eslint-disable-next-line import/no-deprecated
|
|
508
504
|
protected client: Client;
|
|
509
505
|
private messagesSinceMSNChange: ISequencedDocumentMessage[] = [];
|
|
510
506
|
private readonly intervalCollections: IntervalCollectionMap<SequenceInterval>;
|
|
@@ -543,7 +539,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
543
539
|
dataStoreRuntime.options,
|
|
544
540
|
);
|
|
545
541
|
|
|
546
|
-
// eslint-disable-next-line import/no-deprecated
|
|
547
542
|
this.client = new Client(
|
|
548
543
|
segmentFromSpec,
|
|
549
544
|
createChildLogger({
|
|
@@ -812,11 +807,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
812
807
|
)
|
|
813
808
|
) {
|
|
814
809
|
this.submitSequenceMessage(
|
|
815
|
-
this.client.regeneratePendingOp(
|
|
816
|
-
content as IMergeTreeOp,
|
|
817
|
-
// eslint-disable-next-line import/no-deprecated
|
|
818
|
-
localOpMetadata as SegmentGroup | SegmentGroup[],
|
|
819
|
-
),
|
|
810
|
+
this.client.regeneratePendingOp(content as IMergeTreeOp, localOpMetadata),
|
|
820
811
|
);
|
|
821
812
|
}
|
|
822
813
|
});
|