@fluidframework/sequence 2.90.0 → 2.92.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/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/package.json +23 -23
- 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
|
@@ -6,25 +6,27 @@
|
|
|
6
6
|
/* eslint-disable no-bitwise */
|
|
7
7
|
|
|
8
8
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
9
|
-
import { IEvent } from "@fluidframework/core-interfaces";
|
|
9
|
+
import type { IEvent } from "@fluidframework/core-interfaces";
|
|
10
10
|
import {
|
|
11
11
|
assert,
|
|
12
12
|
DoublyLinkedList,
|
|
13
13
|
unreachableCase,
|
|
14
14
|
type ListNode,
|
|
15
15
|
} from "@fluidframework/core-utils/internal";
|
|
16
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
17
|
-
import {
|
|
16
|
+
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
17
|
+
import type {
|
|
18
18
|
Client,
|
|
19
19
|
ISegment,
|
|
20
20
|
LocalReferencePosition,
|
|
21
21
|
PropertySet,
|
|
22
|
+
SequencePlace,
|
|
23
|
+
} from "@fluidframework/merge-tree/internal";
|
|
24
|
+
import {
|
|
22
25
|
ReferenceType,
|
|
23
26
|
getSlideToSegoff,
|
|
24
27
|
refTypeIncludesFlag,
|
|
25
28
|
reservedRangeLabelsKey,
|
|
26
29
|
Side,
|
|
27
|
-
SequencePlace,
|
|
28
30
|
endpointPosAndSide,
|
|
29
31
|
type ISegmentInternal,
|
|
30
32
|
createLocalReconnectingPerspective,
|
|
@@ -33,12 +35,12 @@ import {
|
|
|
33
35
|
import { LoggingError, UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
34
36
|
import { v4 as uuid } from "uuid";
|
|
35
37
|
|
|
36
|
-
import {
|
|
38
|
+
import type {
|
|
39
|
+
IIntervalCollectionTypeOperationValue,
|
|
40
|
+
IntervalAddLocalMetadata,
|
|
41
|
+
IntervalChangeLocalMetadata,
|
|
37
42
|
IntervalMessageLocalMetadata,
|
|
38
43
|
SequenceOptions,
|
|
39
|
-
type IIntervalCollectionTypeOperationValue,
|
|
40
|
-
type IntervalAddLocalMetadata,
|
|
41
|
-
type IntervalChangeLocalMetadata,
|
|
42
44
|
} from "./intervalCollectionMapInterfaces.js";
|
|
43
45
|
import {
|
|
44
46
|
createIdIntervalIndex,
|
|
@@ -49,14 +51,16 @@ import {
|
|
|
49
51
|
type ISequenceOverlappingIntervalsIndex,
|
|
50
52
|
type SequenceIntervalIndex,
|
|
51
53
|
} from "./intervalIndex/index.js";
|
|
52
|
-
import {
|
|
54
|
+
import type {
|
|
53
55
|
CompressedSerializedInterval,
|
|
54
56
|
ISerializedInterval,
|
|
55
|
-
IntervalStickiness,
|
|
56
|
-
IntervalType,
|
|
57
57
|
SequenceInterval,
|
|
58
58
|
SequenceIntervalClass,
|
|
59
59
|
SerializedIntervalDelta,
|
|
60
|
+
} from "./intervals/index.js";
|
|
61
|
+
import {
|
|
62
|
+
IntervalStickiness,
|
|
63
|
+
IntervalType,
|
|
60
64
|
createPositionReferenceFromSegoff,
|
|
61
65
|
createSequenceInterval,
|
|
62
66
|
getSerializedProperties,
|
|
@@ -72,8 +76,8 @@ export interface ISerializedIntervalCollectionV2 {
|
|
|
72
76
|
}
|
|
73
77
|
|
|
74
78
|
function sidesFromStickiness(stickiness: IntervalStickiness) {
|
|
75
|
-
const startSide = (stickiness & IntervalStickiness.START)
|
|
76
|
-
const endSide = (stickiness & IntervalStickiness.END)
|
|
79
|
+
const startSide = (stickiness & IntervalStickiness.START) === 0 ? Side.Before : Side.After;
|
|
80
|
+
const endSide = (stickiness & IntervalStickiness.END) === 0 ? Side.After : Side.Before;
|
|
77
81
|
|
|
78
82
|
return { startSide, endSide };
|
|
79
83
|
}
|
|
@@ -853,8 +857,9 @@ export class IntervalCollection
|
|
|
853
857
|
}
|
|
854
858
|
break;
|
|
855
859
|
}
|
|
856
|
-
default:
|
|
860
|
+
default: {
|
|
857
861
|
unreachableCase(type);
|
|
862
|
+
}
|
|
858
863
|
}
|
|
859
864
|
}
|
|
860
865
|
|
|
@@ -903,8 +908,9 @@ export class IntervalCollection
|
|
|
903
908
|
);
|
|
904
909
|
break;
|
|
905
910
|
}
|
|
906
|
-
default:
|
|
911
|
+
default: {
|
|
907
912
|
unreachableCase(opName);
|
|
913
|
+
}
|
|
908
914
|
}
|
|
909
915
|
const pending = clearEmptyPendingEntry(this.pending, id);
|
|
910
916
|
|
|
@@ -962,8 +968,9 @@ export class IntervalCollection
|
|
|
962
968
|
this.removeIntervalById(id);
|
|
963
969
|
break;
|
|
964
970
|
}
|
|
965
|
-
default:
|
|
971
|
+
default: {
|
|
966
972
|
throw new Error("unknown ops should not be stashed");
|
|
973
|
+
}
|
|
967
974
|
}
|
|
968
975
|
}
|
|
969
976
|
|
|
@@ -1670,10 +1677,8 @@ export class IntervalCollection
|
|
|
1670
1677
|
op,
|
|
1671
1678
|
);
|
|
1672
1679
|
|
|
1673
|
-
if (interval) {
|
|
1674
|
-
|
|
1675
|
-
this.onDeserialize(interval);
|
|
1676
|
-
}
|
|
1680
|
+
if (interval && this.onDeserialize) {
|
|
1681
|
+
this.onDeserialize(interval);
|
|
1677
1682
|
}
|
|
1678
1683
|
|
|
1679
1684
|
this.emit("addInterval", interval, local, op);
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
|
-
import { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
8
|
-
import type { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
|
|
7
|
+
import type { IEvent, IEventProvider, IFluidHandle } from "@fluidframework/core-interfaces";
|
|
9
8
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
10
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
11
|
-
import {
|
|
9
|
+
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
10
|
+
import type { IFluidSerializer } from "@fluidframework/shared-object-base/internal";
|
|
11
|
+
import { ValueType } from "@fluidframework/shared-object-base/internal";
|
|
12
12
|
|
|
13
13
|
import { makeSerializable } from "./IntervalCollectionValues.js";
|
|
14
14
|
import {
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
type ISerializedIntervalCollectionV1,
|
|
17
17
|
type ISerializedIntervalCollectionV2,
|
|
18
18
|
} from "./intervalCollection.js";
|
|
19
|
-
import {
|
|
19
|
+
import type {
|
|
20
20
|
IIntervalCollectionTypeOperationValue,
|
|
21
21
|
ISerializableIntervalCollection,
|
|
22
22
|
SequenceOptions,
|
|
@@ -135,14 +135,14 @@ export class IntervalCollectionMap {
|
|
|
135
135
|
|
|
136
136
|
public serialize(serializer: IFluidSerializer): string {
|
|
137
137
|
const serializableMapData: IMapDataObjectSerializable = {};
|
|
138
|
-
this.data.
|
|
138
|
+
for (const [key, localValue] of this.data.entries()) {
|
|
139
139
|
serializableMapData[key] = makeSerializable(
|
|
140
140
|
localValue,
|
|
141
141
|
serializer,
|
|
142
142
|
this.handle,
|
|
143
143
|
this.options?.intervalSerializationFormat ?? "2",
|
|
144
144
|
);
|
|
145
|
-
}
|
|
145
|
+
}
|
|
146
146
|
return JSON.stringify(serializableMapData);
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -168,7 +168,7 @@ export class IntervalCollectionMap {
|
|
|
168
168
|
// "intervalCollections/". This would burden users trying to iterate the collection and
|
|
169
169
|
// access its value, as well as those trying to match a create message to its underlying
|
|
170
170
|
// collection. See https://github.com/microsoft/FluidFramework/issues/10557 for more context.
|
|
171
|
-
const normalizedKey = key.startsWith("intervalCollections/") ? key.
|
|
171
|
+
const normalizedKey = key.startsWith("intervalCollections/") ? key.slice(20) : key;
|
|
172
172
|
|
|
173
173
|
assert(
|
|
174
174
|
serializable.type !== ValueType[ValueType.Plain] &&
|
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ListNode } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
8
|
-
import { IMergeTreeOptions } from "@fluidframework/merge-tree/internal";
|
|
7
|
+
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
8
|
+
import type { IMergeTreeOptions } from "@fluidframework/merge-tree/internal";
|
|
9
9
|
|
|
10
10
|
import type {
|
|
11
11
|
IntervalCollection,
|
|
12
12
|
ISerializedIntervalCollectionV1,
|
|
13
13
|
ISerializedIntervalCollectionV2,
|
|
14
14
|
} from "./intervalCollection.js";
|
|
15
|
-
import {
|
|
15
|
+
import type {
|
|
16
16
|
ISerializedInterval,
|
|
17
17
|
IntervalDeltaOpType,
|
|
18
|
+
SequenceIntervalClass,
|
|
18
19
|
SerializedIntervalDelta,
|
|
19
|
-
type SequenceIntervalClass,
|
|
20
20
|
} from "./intervals/index.js";
|
|
21
21
|
|
|
22
22
|
export interface IntervalAddLocalMetadata {
|
|
@@ -3,18 +3,17 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { PropertyAction
|
|
6
|
+
import type { PropertyAction } from "@fluidframework/merge-tree/internal";
|
|
7
|
+
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
7
8
|
|
|
8
|
-
import { SequenceInterval
|
|
9
|
+
import type { SequenceInterval } from "../intervals/index.js";
|
|
10
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
9
11
|
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
10
|
-
import { ISharedString } from "../sharedString.js";
|
|
12
|
+
import type { ISharedString } from "../sharedString.js";
|
|
11
13
|
|
|
12
14
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
compareOverrideables,
|
|
16
|
-
forceCompare,
|
|
17
|
-
} from "./intervalIndexUtils.js";
|
|
15
|
+
import type { HasComparisonOverride } from "./intervalIndexUtils.js";
|
|
16
|
+
import { compareOverrideables, forceCompare } from "./intervalIndexUtils.js";
|
|
18
17
|
|
|
19
18
|
/**
|
|
20
19
|
* Collection of intervals.
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import type { SequenceInterval } from "../intervals/index.js";
|
|
9
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
9
10
|
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
10
|
-
import { ISharedString } from "../sharedString.js";
|
|
11
|
+
import type { ISharedString } from "../sharedString.js";
|
|
11
12
|
|
|
12
13
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
13
14
|
|
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
7
|
-
export { IIdIntervalIndex, createIdIntervalIndex } from "./idIntervalIndex.js";
|
|
8
|
-
export { IEndpointIndex, createEndpointIndex, EndpointIndex } from "./endpointIndex.js";
|
|
6
|
+
export type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
7
|
+
export { type IIdIntervalIndex, createIdIntervalIndex } from "./idIntervalIndex.js";
|
|
8
|
+
export { type IEndpointIndex, createEndpointIndex, EndpointIndex } from "./endpointIndex.js";
|
|
9
9
|
export {
|
|
10
|
-
IEndpointInRangeIndex,
|
|
10
|
+
type IEndpointInRangeIndex,
|
|
11
11
|
createEndpointInRangeIndex,
|
|
12
12
|
EndpointInRangeIndex,
|
|
13
13
|
} from "./endpointInRangeIndex.js";
|
|
14
14
|
export {
|
|
15
|
-
IStartpointInRangeIndex,
|
|
15
|
+
type IStartpointInRangeIndex,
|
|
16
16
|
createStartpointInRangeIndex,
|
|
17
17
|
StartpointInRangeIndex,
|
|
18
18
|
} from "./startpointInRangeIndex.js";
|
|
19
|
-
export { SequenceIntervalIndexes } from "./sequenceIntervalIndexes.js";
|
|
19
|
+
export type { SequenceIntervalIndexes } from "./sequenceIntervalIndexes.js";
|
|
20
20
|
export {
|
|
21
21
|
createOverlappingIntervalsIndex,
|
|
22
22
|
OverlappingIntervalsIndex,
|
|
23
|
-
ISequenceOverlappingIntervalsIndex,
|
|
23
|
+
type ISequenceOverlappingIntervalsIndex,
|
|
24
24
|
} from "./overlappingIntervalsIndex.js";
|
|
@@ -3,16 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { SequencePlace
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "../intervals/index.js";
|
|
6
|
+
import type { SequencePlace } from "@fluidframework/merge-tree/internal";
|
|
7
|
+
import { endpointPosAndSide } from "@fluidframework/merge-tree/internal";
|
|
8
|
+
|
|
9
|
+
import type { IntervalNode } from "../intervalTree.js";
|
|
10
|
+
import { IntervalTree } from "../intervalTree.js";
|
|
11
|
+
import type { SequenceInterval, BaseSequenceInterval } from "../intervals/index.js";
|
|
12
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
14
13
|
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
15
|
-
import { ISharedString } from "../sharedString.js";
|
|
14
|
+
import type { ISharedString } from "../sharedString.js";
|
|
16
15
|
|
|
17
16
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
18
17
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ISegment } from "@fluidframework/merge-tree/internal";
|
|
6
|
+
import type { ISegment } from "@fluidframework/merge-tree/internal";
|
|
7
7
|
|
|
8
|
-
import { SequenceInterval } from "../intervals/index.js";
|
|
8
|
+
import type { SequenceInterval } from "../intervals/index.js";
|
|
9
9
|
|
|
10
10
|
import type { ISequenceOverlappingIntervalsIndex } from "./overlappingIntervalsIndex.js";
|
|
11
11
|
|
|
@@ -3,18 +3,17 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { PropertyAction
|
|
6
|
+
import type { PropertyAction } from "@fluidframework/merge-tree/internal";
|
|
7
|
+
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
7
8
|
|
|
8
|
-
import { SequenceInterval
|
|
9
|
+
import type { SequenceInterval } from "../intervals/index.js";
|
|
10
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
9
11
|
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
10
|
-
import { ISharedString } from "../sharedString.js";
|
|
12
|
+
import type { ISharedString } from "../sharedString.js";
|
|
11
13
|
|
|
12
14
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
compareOverrideables,
|
|
16
|
-
forceCompare,
|
|
17
|
-
} from "./intervalIndexUtils.js";
|
|
15
|
+
import type { HasComparisonOverride } from "./intervalIndexUtils.js";
|
|
16
|
+
import { compareOverrideables, forceCompare } from "./intervalIndexUtils.js";
|
|
18
17
|
|
|
19
18
|
/**
|
|
20
19
|
* Collection of intervals.
|
package/src/intervalTree.ts
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import type {
|
|
7
7
|
IRBAugmentation,
|
|
8
8
|
IRBMatcher,
|
|
9
9
|
RBNode,
|
|
10
10
|
RBNodeActions,
|
|
11
|
-
RedBlackTree,
|
|
12
11
|
} from "@fluidframework/merge-tree/internal";
|
|
12
|
+
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
13
13
|
|
|
14
|
-
import { ISerializableInterval } from "./intervals/index.js";
|
|
14
|
+
import type { ISerializableInterval } from "./intervals/index.js";
|
|
15
15
|
|
|
16
16
|
export interface AugmentedIntervalNode {
|
|
17
17
|
minmax: ISerializableInterval;
|
package/src/intervals/index.ts
CHANGED
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
|
-
IInterval,
|
|
8
|
-
ISerializedInterval,
|
|
9
|
-
ISerializableInterval,
|
|
7
|
+
type IInterval,
|
|
8
|
+
type ISerializedInterval,
|
|
9
|
+
type ISerializableInterval,
|
|
10
10
|
IntervalOpType,
|
|
11
11
|
IntervalType,
|
|
12
12
|
IntervalDeltaOpType,
|
|
13
13
|
IntervalStickiness,
|
|
14
|
-
SerializedIntervalDelta,
|
|
15
|
-
CompressedSerializedInterval,
|
|
14
|
+
type SerializedIntervalDelta,
|
|
15
|
+
type CompressedSerializedInterval,
|
|
16
16
|
endReferenceSlidingPreference,
|
|
17
17
|
startReferenceSlidingPreference,
|
|
18
18
|
} from "./intervalUtils.js";
|
|
19
19
|
export {
|
|
20
|
-
SequenceInterval,
|
|
20
|
+
type SequenceInterval,
|
|
21
21
|
SequenceIntervalClass,
|
|
22
22
|
BaseSequenceInterval,
|
|
23
23
|
createSequenceInterval,
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
/* eslint-disable no-bitwise */
|
|
7
7
|
|
|
8
|
-
import { PropertySet
|
|
8
|
+
import type { PropertySet } from "@fluidframework/merge-tree/internal";
|
|
9
|
+
import { SlidingPreference, Side } from "@fluidframework/merge-tree/internal";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Basic interval abstraction
|
|
@@ -7,13 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
import type { IDisposable } from "@fluidframework/core-interfaces";
|
|
9
9
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
10
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
11
|
-
import {
|
|
10
|
+
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
11
|
+
import type {
|
|
12
12
|
Client,
|
|
13
13
|
ISegment,
|
|
14
14
|
LocalReferencePosition,
|
|
15
|
-
PropertiesManager,
|
|
16
15
|
PropertySet,
|
|
16
|
+
SequencePlace,
|
|
17
|
+
} from "@fluidframework/merge-tree/internal";
|
|
18
|
+
import {
|
|
19
|
+
PropertiesManager,
|
|
17
20
|
ReferenceType,
|
|
18
21
|
SlidingPreference,
|
|
19
22
|
compareReferencePositions,
|
|
@@ -24,7 +27,6 @@ import {
|
|
|
24
27
|
minReferencePosition,
|
|
25
28
|
refTypeIncludesFlag,
|
|
26
29
|
reservedRangeLabelsKey,
|
|
27
|
-
SequencePlace,
|
|
28
30
|
Side,
|
|
29
31
|
endpointPosAndSide,
|
|
30
32
|
addProperties,
|
|
@@ -37,9 +39,8 @@ import { v4 as uuid } from "uuid";
|
|
|
37
39
|
|
|
38
40
|
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
39
41
|
|
|
42
|
+
import type { ISerializableInterval, ISerializedInterval } from "./intervalUtils.js";
|
|
40
43
|
import {
|
|
41
|
-
ISerializableInterval,
|
|
42
|
-
ISerializedInterval,
|
|
43
44
|
IntervalStickiness,
|
|
44
45
|
IntervalType,
|
|
45
46
|
computeStickinessFromSide,
|
package/src/packageVersion.ts
CHANGED
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]);
|