@fluidframework/sequence 2.0.0-internal.7.2.2 → 2.0.0-internal.7.3.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 +4 -0
- package/api-extractor.json +4 -1
- package/dist/intervalCollection.d.ts +2 -2
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +1 -0
- package/dist/intervals/intervalUtils.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.map +1 -1
- package/dist/revertibles.js +34 -12
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1587 -0
- package/dist/sequence-beta.d.ts +1507 -0
- package/dist/sequence-public.d.ts +1507 -0
- package/dist/sequence-untrimmed.d.ts +1759 -0
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +3 -4
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +1 -0
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/intervalCollection.d.ts +2 -2
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +1 -0
- package/lib/intervals/intervalUtils.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 +34 -12
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1587 -0
- package/lib/sequence-beta.d.ts +1507 -0
- package/lib/sequence-public.d.ts +1507 -0
- package/lib/sequence-untrimmed.d.ts +1759 -0
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +2 -7
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +1 -0
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/package.json +35 -23
- package/src/intervals/intervalUtils.ts +1 -0
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +86 -9
- package/src/sequence.ts +3 -4
- package/src/sequenceDeltaEvent.ts +2 -0
- package/tsconfig.esnext.json +1 -2
- package/tsconfig.json +5 -3
package/src/revertibles.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
6
|
+
/* eslint-disable import/no-deprecated */
|
|
5
7
|
/* eslint-disable no-bitwise */
|
|
6
8
|
|
|
7
9
|
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
@@ -19,7 +21,9 @@ import {
|
|
|
19
21
|
revertMergeTreeDeltaRevertibles,
|
|
20
22
|
SortedSet,
|
|
21
23
|
getSlideToSegoff,
|
|
24
|
+
SlidingPreference,
|
|
22
25
|
} from "@fluidframework/merge-tree";
|
|
26
|
+
import { InteriorSequencePlace, Side } from "./intervalCollection";
|
|
23
27
|
import { IntervalOpType, SequenceInterval } from "./intervals";
|
|
24
28
|
import { SharedString, SharedStringSegment } from "./sharedString";
|
|
25
29
|
import { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent";
|
|
@@ -387,13 +391,22 @@ function getSlidePosition(string: SharedString, lref: LocalReferencePosition, po
|
|
|
387
391
|
: pos;
|
|
388
392
|
}
|
|
389
393
|
|
|
390
|
-
function isValidRange(
|
|
394
|
+
function isValidRange(
|
|
395
|
+
start: number,
|
|
396
|
+
startSlide: SlidingPreference | undefined,
|
|
397
|
+
end: number,
|
|
398
|
+
endSlide: SlidingPreference | undefined,
|
|
399
|
+
string: SharedString,
|
|
400
|
+
) {
|
|
391
401
|
return (
|
|
392
402
|
start >= 0 &&
|
|
393
403
|
start < string.getLength() &&
|
|
394
404
|
end >= 0 &&
|
|
395
405
|
end < string.getLength() &&
|
|
396
|
-
start
|
|
406
|
+
(start < end ||
|
|
407
|
+
(start === end &&
|
|
408
|
+
(startSlide === SlidingPreference.FORWARD ||
|
|
409
|
+
endSlide !== SlidingPreference.FORWARD)))
|
|
397
410
|
);
|
|
398
411
|
}
|
|
399
412
|
|
|
@@ -406,6 +419,26 @@ function revertLocalAdd(
|
|
|
406
419
|
string.getIntervalCollection(label).removeIntervalById(id);
|
|
407
420
|
}
|
|
408
421
|
|
|
422
|
+
function createSequencePlace(
|
|
423
|
+
pos: number,
|
|
424
|
+
newSlidingPreference: SlidingPreference | undefined,
|
|
425
|
+
oldSlidingPreference: SlidingPreference | undefined = undefined,
|
|
426
|
+
): number | InteriorSequencePlace {
|
|
427
|
+
return newSlidingPreference === SlidingPreference.BACKWARD ||
|
|
428
|
+
(newSlidingPreference === undefined && oldSlidingPreference === SlidingPreference.BACKWARD)
|
|
429
|
+
? {
|
|
430
|
+
pos,
|
|
431
|
+
side: Side.After,
|
|
432
|
+
}
|
|
433
|
+
: newSlidingPreference === SlidingPreference.FORWARD &&
|
|
434
|
+
oldSlidingPreference === SlidingPreference.BACKWARD
|
|
435
|
+
? {
|
|
436
|
+
pos,
|
|
437
|
+
side: Side.Before,
|
|
438
|
+
}
|
|
439
|
+
: pos; // Avoid setting side if possible since stickiness may not be enabled
|
|
440
|
+
}
|
|
441
|
+
|
|
409
442
|
function revertLocalDelete(
|
|
410
443
|
string: SharedString,
|
|
411
444
|
revertible: TypedRevertible<typeof IntervalOpType.DELETE>,
|
|
@@ -418,10 +451,18 @@ function revertLocalDelete(
|
|
|
418
451
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
419
452
|
// reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
|
|
420
453
|
const { intervalId, ...props } = revertible.interval.properties;
|
|
421
|
-
if (
|
|
454
|
+
if (
|
|
455
|
+
isValidRange(
|
|
456
|
+
startSlidePos,
|
|
457
|
+
revertible.start.slidingPreference,
|
|
458
|
+
endSlidePos,
|
|
459
|
+
revertible.end.slidingPreference,
|
|
460
|
+
string,
|
|
461
|
+
)
|
|
462
|
+
) {
|
|
422
463
|
const int = collection.add({
|
|
423
|
-
start: startSlidePos,
|
|
424
|
-
end: endSlidePos,
|
|
464
|
+
start: createSequencePlace(startSlidePos, revertible.start.slidingPreference),
|
|
465
|
+
end: createSequencePlace(endSlidePos, revertible.end.slidingPreference),
|
|
425
466
|
props,
|
|
426
467
|
});
|
|
427
468
|
|
|
@@ -448,8 +489,30 @@ function revertLocalChange(
|
|
|
448
489
|
const startSlidePos = getSlidePosition(string, revertible.start, start);
|
|
449
490
|
const end = string.localReferencePositionToPosition(revertible.end);
|
|
450
491
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
451
|
-
|
|
452
|
-
|
|
492
|
+
const interval = collection.getIntervalById(id);
|
|
493
|
+
if (
|
|
494
|
+
interval !== undefined &&
|
|
495
|
+
isValidRange(
|
|
496
|
+
startSlidePos,
|
|
497
|
+
revertible.start.slidingPreference ?? interval.start.slidingPreference,
|
|
498
|
+
endSlidePos,
|
|
499
|
+
revertible.end.slidingPreference ?? interval.end.slidingPreference,
|
|
500
|
+
string,
|
|
501
|
+
)
|
|
502
|
+
) {
|
|
503
|
+
collection.change(
|
|
504
|
+
id,
|
|
505
|
+
createSequencePlace(
|
|
506
|
+
startSlidePos,
|
|
507
|
+
revertible.start.slidingPreference,
|
|
508
|
+
interval.start.slidingPreference,
|
|
509
|
+
),
|
|
510
|
+
createSequencePlace(
|
|
511
|
+
endSlidePos,
|
|
512
|
+
revertible.end.slidingPreference,
|
|
513
|
+
interval.end.slidingPreference,
|
|
514
|
+
),
|
|
515
|
+
);
|
|
453
516
|
}
|
|
454
517
|
|
|
455
518
|
string.removeLocalReferencePosition(revertible.start);
|
|
@@ -537,8 +600,20 @@ function revertLocalSequenceRemove(
|
|
|
537
600
|
const end =
|
|
538
601
|
newEndpointPosition(intervalInfo.endOffset, restoredRanges, sharedString) ??
|
|
539
602
|
sharedString.localReferencePositionToPosition(interval.end);
|
|
540
|
-
if (
|
|
541
|
-
|
|
603
|
+
if (
|
|
604
|
+
isValidRange(
|
|
605
|
+
start,
|
|
606
|
+
interval.start.slidingPreference,
|
|
607
|
+
end,
|
|
608
|
+
interval.end.slidingPreference,
|
|
609
|
+
sharedString,
|
|
610
|
+
)
|
|
611
|
+
) {
|
|
612
|
+
intervalCollection.change(
|
|
613
|
+
intervalId,
|
|
614
|
+
createSequencePlace(start, interval.start.slidingPreference),
|
|
615
|
+
createSequencePlace(end, interval.end.slidingPreference),
|
|
616
|
+
);
|
|
542
617
|
}
|
|
543
618
|
}
|
|
544
619
|
});
|
|
@@ -559,6 +634,7 @@ function revertLocalSequenceRemove(
|
|
|
559
634
|
pos.offset,
|
|
560
635
|
ReferenceType.StayOnRemove | ReferenceType.RangeBegin,
|
|
561
636
|
{ revertible: revertibleRef.revertible },
|
|
637
|
+
revertibleRef.revertible.start.slidingPreference,
|
|
562
638
|
);
|
|
563
639
|
revertibleRef.revertible.start = newRef;
|
|
564
640
|
} else {
|
|
@@ -568,6 +644,7 @@ function revertLocalSequenceRemove(
|
|
|
568
644
|
pos.offset,
|
|
569
645
|
ReferenceType.StayOnRemove | ReferenceType.RangeEnd,
|
|
570
646
|
{ revertible: revertibleRef.revertible },
|
|
647
|
+
revertibleRef.revertible.end.slidingPreference,
|
|
571
648
|
);
|
|
572
649
|
revertibleRef.revertible.end = newRef;
|
|
573
650
|
}
|
package/src/sequence.ts
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
6
|
+
/* eslint-disable import/no-deprecated */
|
|
7
|
+
|
|
5
8
|
import { assert, Deferred } from "@fluidframework/core-utils";
|
|
6
9
|
import { bufferToString } from "@fluid-internal/client-utils";
|
|
7
10
|
import { LoggingError, createChildLogger } from "@fluidframework/telemetry-utils";
|
|
@@ -14,7 +17,6 @@ import {
|
|
|
14
17
|
import {
|
|
15
18
|
Client,
|
|
16
19
|
createAnnotateRangeOp,
|
|
17
|
-
// eslint-disable-next-line import/no-deprecated
|
|
18
20
|
createGroupOp,
|
|
19
21
|
createInsertOp,
|
|
20
22
|
createRemoveRangeOp,
|
|
@@ -29,7 +31,6 @@ import {
|
|
|
29
31
|
ISegment,
|
|
30
32
|
ISegmentAction,
|
|
31
33
|
LocalReferencePosition,
|
|
32
|
-
// eslint-disable-next-line import/no-deprecated
|
|
33
34
|
matchProperties,
|
|
34
35
|
MergeTreeDeltaType,
|
|
35
36
|
PropertySet,
|
|
@@ -153,7 +154,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
153
154
|
if (
|
|
154
155
|
lastAnnotate &&
|
|
155
156
|
lastAnnotate.pos2 === r.position &&
|
|
156
|
-
// eslint-disable-next-line import/no-deprecated
|
|
157
157
|
matchProperties(lastAnnotate.props, props)
|
|
158
158
|
) {
|
|
159
159
|
lastAnnotate.pos2 += r.segment.cachedLength;
|
|
@@ -764,7 +764,6 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
764
764
|
stashMessage = {
|
|
765
765
|
...message,
|
|
766
766
|
referenceSequenceNumber: stashMessage.sequenceNumber - 1,
|
|
767
|
-
// eslint-disable-next-line import/no-deprecated
|
|
768
767
|
contents: ops.length !== 1 ? createGroupOp(...ops) : ops[0],
|
|
769
768
|
};
|
|
770
769
|
}
|
package/tsconfig.esnext.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends":
|
|
2
|
+
"extends": [
|
|
3
|
+
"../../../common/build/build-common/tsconfig.base.json",
|
|
4
|
+
"../../../common/build/build-common/tsconfig.cjs.json",
|
|
5
|
+
],
|
|
6
|
+
"include": ["src/**/*"],
|
|
3
7
|
"exclude": ["src/test/**/*"],
|
|
4
8
|
"compilerOptions": {
|
|
5
9
|
"rootDir": "./src",
|
|
6
10
|
"outDir": "./dist",
|
|
7
|
-
"composite": true,
|
|
8
11
|
},
|
|
9
|
-
"include": ["src/**/*"],
|
|
10
12
|
}
|