@fluidframework/sequence 2.91.0 → 2.93.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 +8 -0
- package/README.md +1 -1
- package/api-report/sequence.legacy.beta.api.md +2 -2
- package/dist/IntervalCollectionValues.d.ts +3 -3
- package/dist/IntervalCollectionValues.d.ts.map +1 -1
- package/dist/IntervalCollectionValues.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/intervalCollection.d.ts +6 -5
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +10 -9
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalCollectionMap.d.ts +4 -5
- package/dist/intervalCollectionMap.d.ts.map +1 -1
- package/dist/intervalCollectionMap.js +3 -3
- package/dist/intervalCollectionMap.js.map +1 -1
- package/dist/intervalCollectionMapInterfaces.d.ts +3 -3
- package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -1
- package/dist/intervalCollectionMapInterfaces.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/index.d.ts +7 -7
- package/dist/intervalIndex/index.d.ts.map +1 -1
- package/dist/intervalIndex/index.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
- 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.d.ts.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervalTree.d.ts +3 -2
- package/dist/intervalTree.d.ts.map +1 -1
- package/dist/intervalTree.js.map +1 -1
- package/dist/intervals/index.d.ts +2 -2
- package/dist/intervals/index.d.ts.map +1 -1
- package/dist/intervals/index.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +2 -1
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +0 -1
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +5 -3
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +1 -1
- package/dist/revertibles.d.ts +5 -4
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +26 -20
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence.d.ts +8 -6
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +9 -10
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +2 -1
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +2 -2
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +3 -2
- package/dist/sequenceFactory.d.ts.map +1 -1
- package/dist/sequenceFactory.js +3 -2
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedSequence.d.ts +3 -2
- package/dist/sharedSequence.d.ts.map +1 -1
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +3 -2
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js.map +1 -1
- package/eslint.config.mts +16 -4
- package/internal.d.ts +1 -1
- package/legacy.d.ts +1 -1
- package/lib/IntervalCollectionValues.d.ts +3 -3
- package/lib/IntervalCollectionValues.d.ts.map +1 -1
- package/lib/IntervalCollectionValues.js +1 -1
- package/lib/IntervalCollectionValues.js.map +1 -1
- package/lib/index.d.ts +10 -10
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +6 -5
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +10 -9
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalCollectionMap.d.ts +4 -5
- package/lib/intervalCollectionMap.d.ts.map +1 -1
- package/lib/intervalCollectionMap.js +3 -3
- package/lib/intervalCollectionMap.js.map +1 -1
- package/lib/intervalCollectionMapInterfaces.d.ts +3 -3
- package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -1
- package/lib/intervalCollectionMapInterfaces.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/index.d.ts +7 -7
- package/lib/intervalIndex/index.d.ts.map +1 -1
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.d.ts +3 -2
- package/lib/intervalTree.d.ts.map +1 -1
- package/lib/intervalTree.js +1 -1
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.d.ts +2 -2
- package/lib/intervals/index.d.ts.map +1 -1
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +2 -1
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +0 -1
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +5 -3
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/revertibles.d.ts +5 -4
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +26 -20
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence.d.ts +8 -6
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +11 -12
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +2 -1
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +2 -2
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +3 -2
- package/lib/sequenceFactory.d.ts.map +1 -1
- package/lib/sequenceFactory.js +3 -2
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedSequence.d.ts +3 -2
- package/lib/sharedSequence.d.ts.map +1 -1
- package/lib/sharedSequence.js +1 -1
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +3 -2
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +1 -1
- package/lib/sharedString.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +27 -32
- package/src/IntervalCollectionValues.ts +4 -6
- package/src/index.ts +25 -25
- package/src/intervalCollection.ts +25 -20
- package/src/intervalCollectionMap.ts +8 -8
- package/src/intervalCollectionMapInterfaces.ts +4 -4
- package/src/intervalIndex/endpointInRangeIndex.ts +7 -8
- package/src/intervalIndex/endpointIndex.ts +3 -2
- package/src/intervalIndex/index.ts +7 -7
- package/src/intervalIndex/overlappingIntervalsIndex.ts +8 -9
- package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -2
- package/src/intervalIndex/startpointInRangeIndex.ts +7 -8
- package/src/intervalTree.ts +3 -3
- package/src/intervals/index.ts +6 -6
- package/src/intervals/intervalUtils.ts +2 -1
- package/src/intervals/sequenceInterval.ts +7 -6
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +35 -26
- package/src/sequence.ts +25 -26
- package/src/sequenceDeltaEvent.ts +6 -4
- package/src/sequenceFactory.ts +6 -4
- package/src/sharedSequence.ts +3 -7
- package/src/sharedString.ts +3 -5
package/src/revertibles.ts
CHANGED
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
/* eslint-disable no-bitwise */
|
|
7
7
|
|
|
8
8
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
9
|
-
import {
|
|
9
|
+
import type {
|
|
10
10
|
LocalReferencePosition,
|
|
11
11
|
MergeTreeDeltaOperationType,
|
|
12
12
|
MergeTreeDeltaRevertible,
|
|
13
|
-
MergeTreeDeltaType,
|
|
14
13
|
PropertySet,
|
|
14
|
+
InteriorSequencePlace,
|
|
15
|
+
} from "@fluidframework/merge-tree/internal";
|
|
16
|
+
import {
|
|
17
|
+
MergeTreeDeltaType,
|
|
15
18
|
ReferenceType,
|
|
16
19
|
SlidingPreference,
|
|
17
20
|
appendToMergeTreeDeltaRevertibles,
|
|
@@ -20,7 +23,6 @@ import {
|
|
|
20
23
|
isMergeTreeDeltaRevertible,
|
|
21
24
|
refTypeIncludesFlag,
|
|
22
25
|
revertMergeTreeDeltaRevertibles,
|
|
23
|
-
InteriorSequencePlace,
|
|
24
26
|
Side,
|
|
25
27
|
type ISegmentInternal,
|
|
26
28
|
segmentIsRemoved,
|
|
@@ -28,9 +30,10 @@ import {
|
|
|
28
30
|
type ISegment,
|
|
29
31
|
} from "@fluidframework/merge-tree/internal";
|
|
30
32
|
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
33
|
+
import type { SequenceInterval } from "./intervals/index.js";
|
|
34
|
+
import { IntervalOpType, SequenceIntervalClass } from "./intervals/index.js";
|
|
35
|
+
import type { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent.js";
|
|
36
|
+
import type { ISharedString, SharedStringSegment } from "./sharedString.js";
|
|
34
37
|
|
|
35
38
|
/**
|
|
36
39
|
* Data for undoing edits on SharedStrings and Intervals.
|
|
@@ -321,7 +324,7 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
321
324
|
};
|
|
322
325
|
|
|
323
326
|
// add an interval for each startInterval, accounting for any corresponding endIntervals
|
|
324
|
-
|
|
327
|
+
for (const { interval, offset } of startIntervals) {
|
|
325
328
|
// find any corresponding end for this interval
|
|
326
329
|
const endIntervalIndex = endIntervals.findIndex((end) => {
|
|
327
330
|
return end.interval === interval;
|
|
@@ -338,16 +341,16 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
338
341
|
startOffset: offset,
|
|
339
342
|
endOffset,
|
|
340
343
|
});
|
|
341
|
-
}
|
|
344
|
+
}
|
|
342
345
|
|
|
343
346
|
// add any remaining endIntervals that aren't matched with a startInterval
|
|
344
|
-
|
|
347
|
+
for (const { interval, offset } of endIntervals) {
|
|
345
348
|
revertible.intervals.push({
|
|
346
349
|
intervalId: interval.getIntervalId(),
|
|
347
350
|
label: interval.start.properties?.referenceRangeLabels[0],
|
|
348
351
|
endOffset: offset,
|
|
349
352
|
});
|
|
350
|
-
}
|
|
353
|
+
}
|
|
351
354
|
|
|
352
355
|
revertibles.push(revertible);
|
|
353
356
|
return;
|
|
@@ -375,14 +378,14 @@ export function discardSharedStringRevertibles(
|
|
|
375
378
|
sharedString: ISharedString,
|
|
376
379
|
revertibles: SharedStringRevertible[],
|
|
377
380
|
) {
|
|
378
|
-
|
|
381
|
+
for (const r of revertibles) {
|
|
379
382
|
if (isMergeTreeDeltaRevertible(r)) {
|
|
380
383
|
discardMergeTreeDeltaRevertible([r]);
|
|
381
384
|
} else if (r.event === IntervalOpType.CHANGE || r.event === IntervalOpType.DELETE) {
|
|
382
385
|
sharedString.removeLocalReferencePosition(r.start);
|
|
383
386
|
sharedString.removeLocalReferencePosition(r.end);
|
|
384
387
|
}
|
|
385
|
-
}
|
|
388
|
+
}
|
|
386
389
|
}
|
|
387
390
|
|
|
388
391
|
function getSlidePosition(
|
|
@@ -478,11 +481,11 @@ function revertLocalDelete(
|
|
|
478
481
|
props,
|
|
479
482
|
});
|
|
480
483
|
|
|
481
|
-
idMap.
|
|
484
|
+
for (const [oldId, newId] of idMap.entries()) {
|
|
482
485
|
if (intervalId === newId) {
|
|
483
486
|
idMap.set(oldId, getUpdatedIdFromInterval(int));
|
|
484
487
|
}
|
|
485
|
-
}
|
|
488
|
+
}
|
|
486
489
|
idMap.set(intervalId, int.getIntervalId());
|
|
487
490
|
}
|
|
488
491
|
|
|
@@ -587,9 +590,9 @@ function revertLocalSequenceRemove(
|
|
|
587
590
|
const saveSegments = (event: SequenceDeltaEvent) => {
|
|
588
591
|
if (event.ranges.length > 0) {
|
|
589
592
|
let length = 0;
|
|
590
|
-
event.ranges
|
|
593
|
+
for (const range of event.ranges) {
|
|
591
594
|
length += range.segment.cachedLength;
|
|
592
|
-
}
|
|
595
|
+
}
|
|
593
596
|
restoredRanges.addOrUpdate({
|
|
594
597
|
ranges: event.ranges,
|
|
595
598
|
length,
|
|
@@ -601,7 +604,7 @@ function revertLocalSequenceRemove(
|
|
|
601
604
|
revertMergeTreeDeltaRevertibles(sharedString, [revertible.mergeTreeRevertible]);
|
|
602
605
|
sharedString.off("sequenceDelta", saveSegments);
|
|
603
606
|
|
|
604
|
-
revertible.intervals
|
|
607
|
+
for (const intervalInfo of revertible.intervals) {
|
|
605
608
|
const intervalCollection = sharedString.getIntervalCollection(intervalInfo.label);
|
|
606
609
|
const intervalId = getUpdatedId(intervalInfo.intervalId);
|
|
607
610
|
const interval = intervalCollection.getIntervalById(intervalId);
|
|
@@ -627,10 +630,10 @@ function revertLocalSequenceRemove(
|
|
|
627
630
|
});
|
|
628
631
|
}
|
|
629
632
|
}
|
|
630
|
-
}
|
|
633
|
+
}
|
|
631
634
|
|
|
632
635
|
// fix up the local references used by delete and change revertibles
|
|
633
|
-
revertible.revertibleRefs
|
|
636
|
+
for (const revertibleRef of revertible.revertibleRefs) {
|
|
634
637
|
assert(
|
|
635
638
|
revertibleRef.revertible.event === IntervalOpType.CHANGE ||
|
|
636
639
|
revertibleRef.revertible.event === IntervalOpType.DELETE,
|
|
@@ -660,7 +663,7 @@ function revertLocalSequenceRemove(
|
|
|
660
663
|
revertibleRef.revertible.end = newRef;
|
|
661
664
|
}
|
|
662
665
|
}
|
|
663
|
-
}
|
|
666
|
+
}
|
|
664
667
|
}
|
|
665
668
|
|
|
666
669
|
/**
|
|
@@ -677,23 +680,29 @@ export function revertSharedStringRevertibles(
|
|
|
677
680
|
if ("event" in r) {
|
|
678
681
|
const event = r.event;
|
|
679
682
|
switch (event) {
|
|
680
|
-
case IntervalOpType.ADD:
|
|
683
|
+
case IntervalOpType.ADD: {
|
|
681
684
|
revertLocalAdd(sharedString, r);
|
|
682
685
|
break;
|
|
683
|
-
|
|
686
|
+
}
|
|
687
|
+
case IntervalOpType.DELETE: {
|
|
684
688
|
revertLocalDelete(sharedString, r);
|
|
685
689
|
break;
|
|
686
|
-
|
|
690
|
+
}
|
|
691
|
+
case IntervalOpType.CHANGE: {
|
|
687
692
|
revertLocalChange(sharedString, r);
|
|
688
693
|
break;
|
|
689
|
-
|
|
694
|
+
}
|
|
695
|
+
case IntervalOpType.PROPERTY_CHANGED: {
|
|
690
696
|
revertLocalPropertyChanged(sharedString, r);
|
|
691
697
|
break;
|
|
692
|
-
|
|
698
|
+
}
|
|
699
|
+
case IntervalOpType.POSITION_REMOVE: {
|
|
693
700
|
revertLocalSequenceRemove(sharedString, r);
|
|
694
701
|
break;
|
|
695
|
-
|
|
702
|
+
}
|
|
703
|
+
default: {
|
|
696
704
|
unreachableCase(event);
|
|
705
|
+
}
|
|
697
706
|
}
|
|
698
707
|
} else {
|
|
699
708
|
revertMergeTreeDeltaRevertibles(sharedString, [r]);
|
package/src/sequence.ts
CHANGED
|
@@ -4,19 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { bufferToString } from "@fluid-internal/client-utils";
|
|
7
|
-
import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
|
|
7
|
+
import type { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
|
|
8
8
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
9
|
-
import {
|
|
9
|
+
import type {
|
|
10
10
|
IChannelAttributes,
|
|
11
11
|
IFluidDataStoreRuntime,
|
|
12
12
|
IChannelStorageService,
|
|
13
13
|
} from "@fluidframework/datastore-definitions/internal";
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from "@fluidframework/driver-definitions/internal";
|
|
18
|
-
import {
|
|
19
|
-
Client,
|
|
14
|
+
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
15
|
+
import { MessageType } from "@fluidframework/driver-definitions/internal";
|
|
16
|
+
import type {
|
|
20
17
|
IJSONSegment,
|
|
21
18
|
IMergeTreeAnnotateMsg,
|
|
22
19
|
IMergeTreeDeltaOp,
|
|
@@ -30,12 +27,15 @@ import {
|
|
|
30
27
|
ISegment,
|
|
31
28
|
ISegmentAction,
|
|
32
29
|
LocalReferencePosition,
|
|
33
|
-
MergeTreeDeltaType,
|
|
34
30
|
MergeTreeRevertibleDriver,
|
|
35
31
|
PropertySet,
|
|
36
32
|
ReferencePosition,
|
|
37
33
|
ReferenceType,
|
|
38
34
|
SlidingPreference,
|
|
35
|
+
} from "@fluidframework/merge-tree/internal";
|
|
36
|
+
import {
|
|
37
|
+
Client,
|
|
38
|
+
MergeTreeDeltaType,
|
|
39
39
|
createAnnotateRangeOp,
|
|
40
40
|
createGroupOp,
|
|
41
41
|
createInsertOp,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
type InteriorSequencePlace,
|
|
47
47
|
type MapLike,
|
|
48
48
|
} from "@fluidframework/merge-tree/internal";
|
|
49
|
-
import {
|
|
49
|
+
import type {
|
|
50
50
|
ISummaryTreeWithStats,
|
|
51
51
|
ITelemetryContext,
|
|
52
52
|
IRuntimeMessageCollection,
|
|
@@ -57,12 +57,12 @@ import {
|
|
|
57
57
|
ObjectStoragePartition,
|
|
58
58
|
SummaryTreeBuilder,
|
|
59
59
|
} from "@fluidframework/runtime-utils/internal";
|
|
60
|
-
import {
|
|
60
|
+
import type {
|
|
61
61
|
IFluidSerializer,
|
|
62
|
+
ISharedObject,
|
|
62
63
|
ISharedObjectEvents,
|
|
63
|
-
SharedObject,
|
|
64
|
-
type ISharedObject,
|
|
65
64
|
} from "@fluidframework/shared-object-base/internal";
|
|
65
|
+
import { SharedObject } from "@fluidframework/shared-object-base/internal";
|
|
66
66
|
import {
|
|
67
67
|
LoggingError,
|
|
68
68
|
createChildLogger,
|
|
@@ -72,12 +72,12 @@ import {
|
|
|
72
72
|
import Deque from "double-ended-queue";
|
|
73
73
|
|
|
74
74
|
import type { ISequenceIntervalCollection } from "./intervalCollection.js";
|
|
75
|
-
import { IMapOperation
|
|
75
|
+
import type { IMapOperation } from "./intervalCollectionMap.js";
|
|
76
|
+
import { IntervalCollectionMap } from "./intervalCollectionMap.js";
|
|
76
77
|
import type { SequenceOptions } from "./intervalCollectionMapInterfaces.js";
|
|
78
|
+
import type { SequenceDeltaEvent, SequenceMaintenanceEvent } from "./sequenceDeltaEvent.js";
|
|
77
79
|
import {
|
|
78
|
-
SequenceDeltaEvent,
|
|
79
80
|
SequenceDeltaEventClass,
|
|
80
|
-
SequenceMaintenanceEvent,
|
|
81
81
|
SequenceMaintenanceEventClass,
|
|
82
82
|
} from "./sequenceDeltaEvent.js";
|
|
83
83
|
|
|
@@ -416,9 +416,10 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
416
416
|
break;
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
case MergeTreeDeltaType.INSERT:
|
|
419
|
+
case MergeTreeDeltaType.INSERT: {
|
|
420
420
|
ops.push(createInsertOp(r.position, r.segment.clone().toJSONObject()));
|
|
421
421
|
break;
|
|
422
|
+
}
|
|
422
423
|
|
|
423
424
|
case MergeTreeDeltaType.REMOVE: {
|
|
424
425
|
const lastRem = ops[ops.length - 1] as IMergeTreeRemoveMsg;
|
|
@@ -831,7 +832,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
831
832
|
);
|
|
832
833
|
|
|
833
834
|
// process the catch up ops, and finishing the loading process
|
|
834
|
-
(await catchupOpsP)
|
|
835
|
+
for (const m of await catchupOpsP) {
|
|
835
836
|
const collabWindow = this.client.getCollabWindow();
|
|
836
837
|
if (
|
|
837
838
|
m.minimumSequenceNumber < collabWindow.minSeq ||
|
|
@@ -855,7 +856,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
855
856
|
);
|
|
856
857
|
}
|
|
857
858
|
this.processMergeTreeMsg(m);
|
|
858
|
-
}
|
|
859
|
+
}
|
|
859
860
|
|
|
860
861
|
// Initialize the interval collections
|
|
861
862
|
this.initializeIntervalCollections();
|
|
@@ -946,9 +947,9 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
946
947
|
|
|
947
948
|
this.processMinSequenceNumberChanged(minSeq);
|
|
948
949
|
|
|
949
|
-
this.messagesSinceMSNChange
|
|
950
|
+
for (const m of this.messagesSinceMSNChange) {
|
|
950
951
|
m.minimumSequenceNumber = minSeq;
|
|
951
|
-
}
|
|
952
|
+
}
|
|
952
953
|
|
|
953
954
|
return this.client.summarize(
|
|
954
955
|
this.runtime,
|
|
@@ -970,10 +971,8 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
970
971
|
}
|
|
971
972
|
const needsTransformation = message.referenceSequenceNumber !== message.sequenceNumber - 1;
|
|
972
973
|
let stashMessage: Readonly<ISequencedDocumentMessage> = message;
|
|
973
|
-
if (this.runtime.options.newMergeTreeSnapshotFormat !== true) {
|
|
974
|
-
|
|
975
|
-
this.on("sequenceDelta", transformOps);
|
|
976
|
-
}
|
|
974
|
+
if (this.runtime.options.newMergeTreeSnapshotFormat !== true && needsTransformation) {
|
|
975
|
+
this.on("sequenceDelta", transformOps);
|
|
977
976
|
}
|
|
978
977
|
|
|
979
978
|
this.client.applyMsg(message, local);
|
|
@@ -986,7 +985,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
986
985
|
stashMessage = {
|
|
987
986
|
...message,
|
|
988
987
|
referenceSequenceNumber: stashMessage.sequenceNumber - 1,
|
|
989
|
-
contents: ops.length
|
|
988
|
+
contents: ops.length === 1 ? ops[0] : createGroupOp(...ops),
|
|
990
989
|
};
|
|
991
990
|
}
|
|
992
991
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, Lazy } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import {
|
|
7
|
+
import type {
|
|
8
8
|
Client,
|
|
9
9
|
IMergeTreeDeltaCallbackArgs,
|
|
10
10
|
IMergeTreeDeltaOpArgs,
|
|
@@ -12,9 +12,11 @@ import {
|
|
|
12
12
|
ISegment,
|
|
13
13
|
MergeTreeDeltaOperationType,
|
|
14
14
|
MergeTreeDeltaOperationTypes,
|
|
15
|
+
PropertySet,
|
|
16
|
+
} from "@fluidframework/merge-tree/internal";
|
|
17
|
+
import {
|
|
15
18
|
MergeTreeDeltaType,
|
|
16
19
|
MergeTreeMaintenanceType,
|
|
17
|
-
PropertySet,
|
|
18
20
|
SortedSegmentSet,
|
|
19
21
|
} from "@fluidframework/merge-tree/internal";
|
|
20
22
|
|
|
@@ -88,7 +90,7 @@ export abstract class SequenceEventClass<
|
|
|
88
90
|
|
|
89
91
|
this.sortedRanges = new Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>(() => {
|
|
90
92
|
const set = new SortedSegmentSet<ISequenceDeltaRange<TOperation>>();
|
|
91
|
-
this.deltaArgs.deltaSegments
|
|
93
|
+
for (const delta of this.deltaArgs.deltaSegments) {
|
|
92
94
|
const newRange: ISequenceDeltaRange<TOperation> = {
|
|
93
95
|
operation: this.deltaArgs.operation,
|
|
94
96
|
position: this.mergeTreeClient.getPosition(delta.segment),
|
|
@@ -96,7 +98,7 @@ export abstract class SequenceEventClass<
|
|
|
96
98
|
segment: delta.segment,
|
|
97
99
|
};
|
|
98
100
|
set.addOrUpdate(newRange);
|
|
99
|
-
}
|
|
101
|
+
}
|
|
100
102
|
return set;
|
|
101
103
|
});
|
|
102
104
|
|
package/src/sequenceFactory.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import type {
|
|
7
7
|
IChannelAttributes,
|
|
8
8
|
IChannelFactory,
|
|
9
9
|
IFluidDataStoreRuntime,
|
|
@@ -13,11 +13,13 @@ import { Marker, TextSegment } from "@fluidframework/merge-tree/internal";
|
|
|
13
13
|
import { createSharedObjectKind } from "@fluidframework/shared-object-base/internal";
|
|
14
14
|
|
|
15
15
|
import { pkgVersion } from "./packageVersion.js";
|
|
16
|
-
import {
|
|
16
|
+
import type { ISharedString, SharedStringSegment } from "./sharedString.js";
|
|
17
|
+
import { SharedStringClass } from "./sharedString.js";
|
|
17
18
|
|
|
18
19
|
export class SharedStringFactory implements IChannelFactory<ISharedString> {
|
|
19
|
-
//
|
|
20
|
-
//
|
|
20
|
+
// New type string, to be activated once the migration has been fully shipped dark and is safe to flip.
|
|
21
|
+
// See LegacyTypeAwareRegistry in packages/runtime/datastore/src/dataStoreRuntime.ts.
|
|
22
|
+
// public static Type = "mergeTree";
|
|
21
23
|
public static Type = "https://graph.microsoft.com/types/mergeTree";
|
|
22
24
|
|
|
23
25
|
public static readonly Attributes: IChannelAttributes = {
|
package/src/sharedSequence.ts
CHANGED
|
@@ -4,17 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import {
|
|
7
|
+
import type {
|
|
8
8
|
IChannelAttributes,
|
|
9
9
|
IFluidDataStoreRuntime,
|
|
10
10
|
Serializable,
|
|
11
11
|
} from "@fluidframework/datastore-definitions/internal";
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
IJSONSegment,
|
|
15
|
-
ISegment,
|
|
16
|
-
PropertySet,
|
|
17
|
-
} from "@fluidframework/merge-tree/internal";
|
|
12
|
+
import type { IJSONSegment, ISegment, PropertySet } from "@fluidframework/merge-tree/internal";
|
|
13
|
+
import { BaseSegment } from "@fluidframework/merge-tree/internal";
|
|
18
14
|
|
|
19
15
|
import { SharedSegmentSequence } from "./sequence.js";
|
|
20
16
|
|
package/src/sharedString.ts
CHANGED
|
@@ -3,21 +3,19 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import type {
|
|
7
7
|
IChannelAttributes,
|
|
8
8
|
IFluidDataStoreRuntime,
|
|
9
9
|
} from "@fluidframework/datastore-definitions/internal";
|
|
10
|
-
import {
|
|
10
|
+
import type {
|
|
11
11
|
IMergeTreeTextHelper,
|
|
12
12
|
IRelativePosition,
|
|
13
13
|
ISegment,
|
|
14
14
|
ISegmentAction,
|
|
15
|
-
Marker,
|
|
16
15
|
PropertySet,
|
|
17
16
|
ReferenceType,
|
|
18
|
-
TextSegment,
|
|
19
|
-
refHasTileLabel,
|
|
20
17
|
} from "@fluidframework/merge-tree/internal";
|
|
18
|
+
import { Marker, TextSegment, refHasTileLabel } from "@fluidframework/merge-tree/internal";
|
|
21
19
|
|
|
22
20
|
import { SharedSegmentSequence, type ISharedSegmentSequence } from "./sequence.js";
|
|
23
21
|
import { SharedStringFactory } from "./sequenceFactory.js";
|