@fluidframework/sequence 2.0.0-internal.7.2.2 → 2.0.0-internal.7.4.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 +61 -0
- package/api-extractor-lint.json +13 -0
- package/api-extractor.json +9 -1
- package/api-report/sequence.api.md +87 -84
- 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 +11 -10
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/intervalCollection.d.ts +68 -14
- 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/intervals/interval.d.ts +2 -7
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +1 -5
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +15 -14
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +4 -3
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +3 -12
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +3 -11
- 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 +41 -21
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1306 -0
- package/dist/sequence-beta.d.ts +270 -0
- package/dist/sequence-public.d.ts +270 -0
- package/dist/sequence-untrimmed.d.ts +1790 -0
- package/dist/sequence.d.ts +2 -3
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +4 -5
- 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 +4 -3
- 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 +3 -3
- package/dist/sharedSequence.js +2 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +8 -5
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +6 -3
- package/dist/sharedString.js.map +1 -1
- package/dist/tsdoc-metadata.json +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 +11 -10
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.js +45 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +68 -14
- 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.js +9 -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 +2 -7
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +19 -18
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +15 -14
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +22 -16
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +3 -12
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +68 -70
- 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 +98 -68
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1306 -0
- package/lib/sequence-beta.d.ts +270 -0
- package/lib/sequence-public.d.ts +270 -0
- package/lib/sequence-untrimmed.d.ts +1790 -0
- package/lib/sequence.d.ts +2 -3
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +46 -46
- 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 +17 -10
- 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 +3 -3
- package/lib/sharedSequence.js +13 -8
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +8 -5
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +27 -19
- package/lib/sharedString.js.map +1 -1
- package/package.json +43 -29
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +22 -16
- package/src/defaultMapInterfaces.ts +15 -12
- package/src/intervalCollection.ts +131 -67
- 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/intervals/interval.ts +2 -7
- package/src/intervals/intervalUtils.ts +16 -15
- package/src/intervals/sequenceInterval.ts +3 -12
- package/src/localValues.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +95 -24
- package/src/sequence.ts +5 -7
- package/src/sequenceDeltaEvent.ts +6 -4
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +3 -3
- package/src/sharedSequence.ts +3 -3
- package/src/sharedString.ts +8 -5
- package/tsconfig.esnext.json +1 -2
- package/tsconfig.json +5 -3
|
@@ -18,7 +18,7 @@ const intervalIndex_1 = require("./intervalIndex");
|
|
|
18
18
|
* Defines a side relative to a character in a sequence.
|
|
19
19
|
*
|
|
20
20
|
* @remarks See {@link SequencePlace} for additional context on usage.
|
|
21
|
-
* @
|
|
21
|
+
* @alpha
|
|
22
22
|
*/
|
|
23
23
|
var Side;
|
|
24
24
|
(function (Side) {
|
|
@@ -329,6 +329,9 @@ function makeOpsMap() {
|
|
|
329
329
|
const rebase = (collection, op, localOpMetadata) => {
|
|
330
330
|
const { localSeq } = localOpMetadata;
|
|
331
331
|
const rebasedValue = collection.rebaseLocalInterval(op.opName, op.value, localSeq);
|
|
332
|
+
if (rebasedValue === undefined) {
|
|
333
|
+
return undefined;
|
|
334
|
+
}
|
|
332
335
|
const rebasedOp = { ...op, value: rebasedValue };
|
|
333
336
|
return { rebasedOp, rebasedLocalOpMetadata: localOpMetadata };
|
|
334
337
|
};
|
|
@@ -661,58 +664,54 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
661
664
|
}
|
|
662
665
|
/**
|
|
663
666
|
* {@inheritdoc IIntervalCollection.changeProperties}
|
|
667
|
+
* @deprecated - call change with the id and an object containing the new props values
|
|
664
668
|
*/
|
|
665
669
|
changeProperties(id, props) {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
// once it has been inserted into the collection.
|
|
677
|
-
if (props[merge_tree_1.reservedRangeLabelsKey] !== undefined) {
|
|
678
|
-
throw new telemetry_utils_1.LoggingError("The label property should not be modified once inserted to the collection");
|
|
670
|
+
this.change(id, { props });
|
|
671
|
+
}
|
|
672
|
+
change(arg1, arg2, arg3) {
|
|
673
|
+
const id = arg1;
|
|
674
|
+
let start;
|
|
675
|
+
let end;
|
|
676
|
+
let props;
|
|
677
|
+
if (isSequencePlace(arg2)) {
|
|
678
|
+
start = arg2;
|
|
679
|
+
end = arg3;
|
|
679
680
|
}
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
// Emit a change op that will only change properties. Add the ID to
|
|
685
|
-
// the property bag provided by the caller.
|
|
686
|
-
serializedInterval.start = undefined;
|
|
687
|
-
serializedInterval.end = undefined;
|
|
688
|
-
serializedInterval.properties = props;
|
|
689
|
-
serializedInterval.properties[reservedIntervalIdKey] = interval.getIntervalId();
|
|
690
|
-
const localSeq = this.getNextLocalSeq();
|
|
691
|
-
this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
|
|
692
|
-
this.emitter.emit("change", undefined, serializedInterval, { localSeq });
|
|
693
|
-
this.emit("propertyChanged", interval, deltaProps, true, undefined);
|
|
681
|
+
else {
|
|
682
|
+
start = arg2.start;
|
|
683
|
+
end = arg2.end;
|
|
684
|
+
props = arg2.props;
|
|
694
685
|
}
|
|
695
|
-
}
|
|
696
|
-
/**
|
|
697
|
-
* {@inheritdoc IIntervalCollection.change}
|
|
698
|
-
*/
|
|
699
|
-
change(id, start, end) {
|
|
700
686
|
if (!this.localCollection) {
|
|
701
687
|
throw new telemetry_utils_1.LoggingError("Attach must be called before accessing intervals");
|
|
702
688
|
}
|
|
703
689
|
// Force id to be a string.
|
|
704
690
|
if (typeof id !== "string") {
|
|
705
|
-
throw new telemetry_utils_1.
|
|
691
|
+
throw new telemetry_utils_1.UsageError("Change API requires an ID that is a string");
|
|
692
|
+
}
|
|
693
|
+
// Ensure that both start and end are defined or both are undefined.
|
|
694
|
+
if ((start === undefined) !== (end === undefined)) {
|
|
695
|
+
throw new telemetry_utils_1.UsageError("Change API requires both start and end to be defined or undefined");
|
|
696
|
+
}
|
|
697
|
+
// prevent the overwriting of an interval label, it should remain unchanged
|
|
698
|
+
// once it has been inserted into the collection.
|
|
699
|
+
if (props?.[merge_tree_1.reservedRangeLabelsKey] !== undefined) {
|
|
700
|
+
throw new telemetry_utils_1.UsageError("The label property should not be modified once inserted to the collection");
|
|
706
701
|
}
|
|
707
702
|
const interval = this.getIntervalById(id);
|
|
708
703
|
if (interval) {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
704
|
+
let deltaProps;
|
|
705
|
+
let newInterval;
|
|
706
|
+
if (props !== undefined) {
|
|
707
|
+
deltaProps = interval.addProperties(props, true, this.isCollaborating ? merge_tree_1.UnassignedSequenceNumber : merge_tree_1.UniversalSequenceNumber);
|
|
712
708
|
}
|
|
713
|
-
if (
|
|
714
|
-
|
|
715
|
-
|
|
709
|
+
if (start !== undefined && end !== undefined) {
|
|
710
|
+
newInterval = this.localCollection.changeInterval(interval, start, end);
|
|
711
|
+
if (!this.isCollaborating && newInterval instanceof intervals_1.SequenceInterval) {
|
|
712
|
+
setSlideOnRemove(newInterval.start);
|
|
713
|
+
setSlideOnRemove(newInterval.end);
|
|
714
|
+
}
|
|
716
715
|
}
|
|
717
716
|
const serializedInterval = interval.serialize();
|
|
718
717
|
const { startPos, startSide, endPos, endSide } = endpointPosAndSide(start, end);
|
|
@@ -722,15 +721,21 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
722
721
|
serializedInterval.startSide = startSide;
|
|
723
722
|
serializedInterval.endSide = endSide;
|
|
724
723
|
serializedInterval.stickiness = stickiness;
|
|
725
|
-
// Emit a property bag containing
|
|
724
|
+
// Emit a property bag containing the ID and the other (if any) properties changed
|
|
726
725
|
serializedInterval.properties = {
|
|
727
726
|
[reservedIntervalIdKey]: interval.getIntervalId(),
|
|
727
|
+
...props,
|
|
728
728
|
};
|
|
729
729
|
const localSeq = this.getNextLocalSeq();
|
|
730
730
|
this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
|
|
731
731
|
this.emitter.emit("change", undefined, serializedInterval, { localSeq });
|
|
732
|
-
|
|
733
|
-
|
|
732
|
+
if (deltaProps !== undefined) {
|
|
733
|
+
this.emit("propertyChanged", interval, deltaProps, true, undefined);
|
|
734
|
+
}
|
|
735
|
+
if (newInterval) {
|
|
736
|
+
this.addPendingChange(id, serializedInterval);
|
|
737
|
+
this.emitChange(newInterval, interval, true, false);
|
|
738
|
+
}
|
|
734
739
|
return newInterval;
|
|
735
740
|
}
|
|
736
741
|
// No interval to change
|
|
@@ -1025,7 +1030,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
1025
1030
|
ackDelete(serializedInterval, local, op) {
|
|
1026
1031
|
if (local) {
|
|
1027
1032
|
// Local ops were applied when the message was created and there's no "pending delete"
|
|
1028
|
-
// state to
|
|
1033
|
+
// state to book keep: remote operation application takes into account possibility of
|
|
1029
1034
|
// locally deleted interval whenever a lookup happens.
|
|
1030
1035
|
return;
|
|
1031
1036
|
}
|
|
@@ -1142,7 +1147,7 @@ function setSlideOnRemove(lref) {
|
|
|
1142
1147
|
* @returns undefined if the reference position is not the endpoint of any interval (e.g. it was created
|
|
1143
1148
|
* on the merge tree directly by app code), otherwise an {@link IntervalLocator} for the interval this
|
|
1144
1149
|
* endpoint is a part of.
|
|
1145
|
-
* @
|
|
1150
|
+
* @internal
|
|
1146
1151
|
*/
|
|
1147
1152
|
function intervalLocatorFromEndpoint(potentialEndpoint) {
|
|
1148
1153
|
const { interval, [merge_tree_1.reservedRangeLabelsKey]: collectionNameArray } = potentialEndpoint.properties ?? {};
|