@fluidframework/sequence 2.90.0-378676 → 2.90.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-report/sequence.legacy.beta.api.md +1 -1
- package/dist/intervalCollection.d.ts +3 -2
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +5 -5
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +3 -3
- package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js +5 -6
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +3 -3
- package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/dist/intervalIndex/endpointIndex.js +5 -6
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +8 -7
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js +5 -6
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +3 -3
- package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js +5 -6
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervals/index.d.ts +1 -1
- package/dist/intervals/index.d.ts.map +1 -1
- package/dist/intervals/index.js +4 -2
- package/dist/intervals/index.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +60 -35
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +166 -102
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/sequence.d.ts +3 -6
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +2 -5
- package/dist/sequence.js.map +1 -1
- package/lib/intervalCollection.d.ts +3 -2
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +5 -5
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +3 -3
- package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js +6 -7
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +3 -3
- package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
- package/lib/intervalIndex/endpointIndex.js +6 -7
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +8 -7
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js +7 -8
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +3 -3
- package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js +6 -7
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervals/index.d.ts +1 -1
- package/lib/intervals/index.d.ts.map +1 -1
- package/lib/intervals/index.js +1 -1
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +60 -35
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +162 -100
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/sequence.d.ts +3 -6
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +2 -5
- package/lib/sequence.js.map +1 -1
- package/package.json +20 -20
- package/src/intervalCollection.ts +6 -3
- package/src/intervalIndex/endpointInRangeIndex.ts +11 -7
- package/src/intervalIndex/endpointIndex.ts +7 -7
- package/src/intervalIndex/overlappingIntervalsIndex.ts +18 -25
- package/src/intervalIndex/startpointInRangeIndex.ts +11 -7
- package/src/intervals/index.ts +3 -1
- package/src/intervals/sequenceInterval.ts +249 -124
- package/src/packageVersion.ts +1 -1
- package/src/sequence.ts +8 -11
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
6
|
-
import {
|
|
6
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
7
7
|
export class EndpointIndex {
|
|
8
|
-
constructor(
|
|
9
|
-
this.
|
|
8
|
+
constructor(sequence) {
|
|
9
|
+
this.sequence = sequence;
|
|
10
10
|
this.endIntervalTree = new RedBlackTree((a, b) => a.compareEnd(b));
|
|
11
11
|
}
|
|
12
12
|
previousInterval(pos) {
|
|
13
|
-
const transientInterval =
|
|
13
|
+
const transientInterval = createTransientIntervalFromSequence(pos, pos, this.sequence);
|
|
14
14
|
const rbNode = this.endIntervalTree.floor(transientInterval);
|
|
15
15
|
if (rbNode) {
|
|
16
16
|
return rbNode.data;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
nextInterval(pos) {
|
|
20
|
-
const transientInterval =
|
|
20
|
+
const transientInterval = createTransientIntervalFromSequence(pos, pos, this.sequence);
|
|
21
21
|
const rbNode = this.endIntervalTree.ceil(transientInterval);
|
|
22
22
|
if (rbNode) {
|
|
23
23
|
return rbNode.data;
|
|
@@ -36,7 +36,6 @@ export class EndpointIndex {
|
|
|
36
36
|
* @internal
|
|
37
37
|
*/
|
|
38
38
|
export function createEndpointIndex(sharedString) {
|
|
39
|
-
|
|
40
|
-
return new EndpointIndex(client);
|
|
39
|
+
return new EndpointIndex(sharedString);
|
|
41
40
|
}
|
|
42
41
|
//# sourceMappingURL=endpointIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpointIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/endpointIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"endpointIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/endpointIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,mCAAmC,EAAoB,MAAM,uBAAuB,CAAC;AAuB9F,MAAM,OAAO,aAAa;IAGzB,YAA6B,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;QACjE,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,CAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpF,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CACf,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,GAAW;QAClC,MAAM,iBAAiB,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACF,CAAC;IAEM,YAAY,CAAC,GAAW;QAC9B,MAAM,iBAAiB,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACF,CAAC;IAEM,GAAG,CAAC,QAA0B;QACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM,CAAC,QAA0B;QACvC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAA2B;IAC9D,OAAO,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { RedBlackTree } from \"@fluidframework/merge-tree/internal\";\n\nimport { createTransientIntervalFromSequence, SequenceInterval } from \"../intervals/index.js\";\nimport type { ISharedSegmentSequence } from \"../sequence.js\";\nimport { ISharedString } from \"../sharedString.js\";\n\nimport type { SequenceIntervalIndex } from \"./intervalIndex.js\";\n\n/**\n * @internal\n */\nexport interface IEndpointIndex extends SequenceIntervalIndex {\n\t/**\n\t * @returns the previous interval based on the given position number.\n\t * If no such interval exists in this index, returns `undefined`\n\t */\n\tpreviousInterval(pos: number): SequenceInterval | undefined;\n\n\t/**\n\t * @returns the next interval based on the given position number.\n\t * If no such interval exists in this index, returns `undefined`\n\t */\n\tnextInterval(pos: number): SequenceInterval | undefined;\n}\n\nexport class EndpointIndex implements IEndpointIndex {\n\tprivate readonly endIntervalTree: RedBlackTree<SequenceInterval, SequenceInterval>;\n\n\tconstructor(private readonly sequence: ISharedSegmentSequence<any>) {\n\t\tthis.endIntervalTree = new RedBlackTree<SequenceInterval, SequenceInterval>((a, b) =>\n\t\t\ta.compareEnd(b),\n\t\t);\n\t}\n\n\tpublic previousInterval(pos: number): SequenceInterval | undefined {\n\t\tconst transientInterval = createTransientIntervalFromSequence(pos, pos, this.sequence);\n\t\tconst rbNode = this.endIntervalTree.floor(transientInterval);\n\t\tif (rbNode) {\n\t\t\treturn rbNode.data;\n\t\t}\n\t}\n\n\tpublic nextInterval(pos: number): SequenceInterval | undefined {\n\t\tconst transientInterval = createTransientIntervalFromSequence(pos, pos, this.sequence);\n\t\tconst rbNode = this.endIntervalTree.ceil(transientInterval);\n\t\tif (rbNode) {\n\t\t\treturn rbNode.data;\n\t\t}\n\t}\n\n\tpublic add(interval: SequenceInterval): void {\n\t\tthis.endIntervalTree.put(interval, interval);\n\t}\n\n\tpublic remove(interval: SequenceInterval): void {\n\t\tthis.endIntervalTree.remove(interval);\n\t}\n}\n\n/**\n * Creates an endpoint index for the provided SharedString.\n *\n * @internal\n */\nexport function createEndpointIndex(sharedString: ISharedString): IEndpointIndex {\n\treturn new EndpointIndex(sharedString);\n}\n"]}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { SequencePlace } from "@fluidframework/merge-tree/internal";
|
|
6
6
|
import { IntervalTree } from "../intervalTree.js";
|
|
7
|
-
import { SequenceInterval,
|
|
7
|
+
import { SequenceInterval, BaseSequenceInterval } from "../intervals/index.js";
|
|
8
|
+
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
8
9
|
import { ISharedString } from "../sharedString.js";
|
|
9
10
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
10
11
|
/**
|
|
@@ -22,15 +23,15 @@ export interface ISequenceOverlappingIntervalsIndex extends SequenceIntervalInde
|
|
|
22
23
|
gatherIterationResults(results: SequenceInterval[], iteratesForward: boolean, start?: SequencePlace, end?: SequencePlace): void;
|
|
23
24
|
}
|
|
24
25
|
export declare class OverlappingIntervalsIndex implements ISequenceOverlappingIntervalsIndex {
|
|
25
|
-
protected readonly
|
|
26
|
-
protected readonly
|
|
27
|
-
constructor(
|
|
26
|
+
protected readonly sequence: ISharedSegmentSequence<any>;
|
|
27
|
+
protected readonly intervalTree: IntervalTree<BaseSequenceInterval>;
|
|
28
|
+
constructor(sequence: ISharedSegmentSequence<any>);
|
|
28
29
|
map(fn: (interval: SequenceInterval) => void): void;
|
|
29
30
|
mapUntil(fn: (interval: SequenceInterval) => boolean): void;
|
|
30
31
|
gatherIterationResults(results: SequenceInterval[], iteratesForward: boolean, start?: SequencePlace, end?: SequencePlace): void;
|
|
31
32
|
findOverlappingIntervals(start: SequencePlace, end: SequencePlace): SequenceInterval[];
|
|
32
|
-
remove(interval:
|
|
33
|
-
add(interval:
|
|
33
|
+
remove(interval: BaseSequenceInterval): void;
|
|
34
|
+
add(interval: BaseSequenceInterval): void;
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Creates an overlapping intervals index for the provided SharedString.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlappingIntervalsIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"overlappingIntervalsIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAsB,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAgB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,kCAAmC,SAAQ,qBAAqB;IAChF;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEvF;;OAEG;IACH,sBAAsB,CACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,eAAe,EAAE,OAAO,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,GACjB,IAAI,CAAC;CACR;AAED,qBAAa,yBAA0B,YAAW,kCAAkC;IAGvE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC;IAFpE,SAAS,CAAC,QAAQ,CAAC,YAAY,qCAA4C;gBAE5C,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC;IAE7D,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI;IAI5C,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO;IAIpD,sBAAsB,CAC5B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,eAAe,EAAE,OAAO,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,GACjB,IAAI;IA2EA,wBAAwB,CAC9B,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,aAAa,GAChB,gBAAgB,EAAE;IAmBd,MAAM,CAAC,QAAQ,EAAE,oBAAoB;IAIrC,GAAG,CAAC,QAAQ,EAAE,oBAAoB;CAGzC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC9C,YAAY,EAAE,aAAa,GACzB,kCAAkC,CAEpC"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { endpointPosAndSide
|
|
5
|
+
import { endpointPosAndSide } from "@fluidframework/merge-tree/internal";
|
|
6
6
|
import { IntervalTree } from "../intervalTree.js";
|
|
7
|
-
import {
|
|
7
|
+
import { createTransientIntervalFromSequence, } from "../intervals/index.js";
|
|
8
8
|
export class OverlappingIntervalsIndex {
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(sequence) {
|
|
10
|
+
this.sequence = sequence;
|
|
10
11
|
this.intervalTree = new IntervalTree();
|
|
11
|
-
this.client = client;
|
|
12
12
|
}
|
|
13
13
|
map(fn) {
|
|
14
14
|
this.intervalTree.map(fn);
|
|
@@ -34,7 +34,7 @@ export class OverlappingIntervalsIndex {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
const transientInterval =
|
|
37
|
+
const transientInterval = createTransientIntervalFromSequence(start ?? "start", end ?? "end", this.sequence);
|
|
38
38
|
if (start === undefined) {
|
|
39
39
|
// Only end position provided. Since the tree is not sorted by end position,
|
|
40
40
|
// walk the whole tree in the specified order, gathering intervals that match the end.
|
|
@@ -87,7 +87,7 @@ export class OverlappingIntervalsIndex {
|
|
|
87
87
|
this.intervalTree.intervals.isEmpty()) {
|
|
88
88
|
return [];
|
|
89
89
|
}
|
|
90
|
-
const transientInterval =
|
|
90
|
+
const transientInterval = createTransientIntervalFromSequence(start, end, this.sequence);
|
|
91
91
|
const overlappingIntervalNodes = this.intervalTree.match(transientInterval);
|
|
92
92
|
return overlappingIntervalNodes.map((node) => node.key);
|
|
93
93
|
}
|
|
@@ -104,7 +104,6 @@ export class OverlappingIntervalsIndex {
|
|
|
104
104
|
* @legacy @beta
|
|
105
105
|
*/
|
|
106
106
|
export function createOverlappingIntervalsIndex(sharedString) {
|
|
107
|
-
|
|
108
|
-
return new OverlappingIntervalsIndex(client);
|
|
107
|
+
return new OverlappingIntervalsIndex(sharedString);
|
|
109
108
|
}
|
|
110
109
|
//# sourceMappingURL=overlappingIntervalsIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlappingIntervalsIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"overlappingIntervalsIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SequencePlace, endpointPosAndSide } from \"@fluidframework/merge-tree/internal\";\n\nimport { IntervalNode, IntervalTree } from \"../intervalTree.js\";\nimport {\n\tSequenceInterval,\n\tBaseSequenceInterval,\n\tcreateTransientIntervalFromSequence,\n} from \"../intervals/index.js\";\nimport type { ISharedSegmentSequence } from \"../sequence.js\";\nimport { ISharedString } from \"../sharedString.js\";\n\nimport type { SequenceIntervalIndex } from \"./intervalIndex.js\";\n\n/**\n * @legacy @beta\n */\nexport interface ISequenceOverlappingIntervalsIndex extends SequenceIntervalIndex {\n\t/**\n\t * @returns an array of all intervals contained in this collection that overlap the range\n\t * `[start end]`.\n\t */\n\tfindOverlappingIntervals(start: SequencePlace, end: SequencePlace): SequenceInterval[];\n\n\t/**\n\t * Gathers the interval results based on specified parameters.\n\t */\n\tgatherIterationResults(\n\t\tresults: SequenceInterval[],\n\t\titeratesForward: boolean,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t): void;\n}\n\nexport class OverlappingIntervalsIndex implements ISequenceOverlappingIntervalsIndex {\n\tprotected readonly intervalTree = new IntervalTree<BaseSequenceInterval>();\n\n\tconstructor(protected readonly sequence: ISharedSegmentSequence<any>) {}\n\n\tpublic map(fn: (interval: SequenceInterval) => void) {\n\t\tthis.intervalTree.map(fn);\n\t}\n\n\tpublic mapUntil(fn: (interval: SequenceInterval) => boolean) {\n\t\tthis.intervalTree.mapUntil(fn);\n\t}\n\n\tpublic gatherIterationResults(\n\t\tresults: SequenceInterval[],\n\t\titeratesForward: boolean,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t): void {\n\t\tif (this.intervalTree.intervals.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (start === undefined && end === undefined) {\n\t\t\t// No start/end provided. Gather the whole tree in the specified order.\n\t\t\tif (iteratesForward) {\n\t\t\t\tthis.intervalTree.map((interval: SequenceInterval) => {\n\t\t\t\t\tresults.push(interval);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.intervalTree.mapBackward((interval: SequenceInterval) => {\n\t\t\t\t\tresults.push(interval);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst transientInterval: BaseSequenceInterval = createTransientIntervalFromSequence(\n\t\t\t\tstart ?? \"start\",\n\t\t\t\tend ?? \"end\",\n\t\t\t\tthis.sequence,\n\t\t\t);\n\n\t\t\tif (start === undefined) {\n\t\t\t\t// Only end position provided. Since the tree is not sorted by end position,\n\t\t\t\t// walk the whole tree in the specified order, gathering intervals that match the end.\n\t\t\t\tif (iteratesForward) {\n\t\t\t\t\tthis.intervalTree.map((interval: SequenceInterval) => {\n\t\t\t\t\t\tif (transientInterval.compareEnd(interval) === 0) {\n\t\t\t\t\t\t\tresults.push(interval);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.intervalTree.mapBackward((interval: SequenceInterval) => {\n\t\t\t\t\t\tif (transientInterval.compareEnd(interval) === 0) {\n\t\t\t\t\t\t\tresults.push(interval);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Start and (possibly) end provided. Walk the subtrees that may contain\n\t\t\t\t// this start position.\n\t\t\t\tconst compareFn =\n\t\t\t\t\tend === undefined\n\t\t\t\t\t\t? (node: IntervalNode<BaseSequenceInterval>) => {\n\t\t\t\t\t\t\t\treturn transientInterval.compareStart(node.key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: (node: IntervalNode<BaseSequenceInterval>) => {\n\t\t\t\t\t\t\t\treturn transientInterval.compare(node.key);\n\t\t\t\t\t\t\t};\n\t\t\t\tconst continueLeftFn = (cmpResult: number) => cmpResult <= 0;\n\t\t\t\tconst continueRightFn = (cmpResult: number) => cmpResult >= 0;\n\t\t\t\tconst actionFn = (node: IntervalNode<BaseSequenceInterval>) => {\n\t\t\t\t\tresults.push(node.key);\n\t\t\t\t};\n\n\t\t\t\tif (iteratesForward) {\n\t\t\t\t\tthis.intervalTree.intervals.walkExactMatchesForward(\n\t\t\t\t\t\tcompareFn,\n\t\t\t\t\t\tactionFn,\n\t\t\t\t\t\tcontinueLeftFn,\n\t\t\t\t\t\tcontinueRightFn,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.intervalTree.intervals.walkExactMatchesBackward(\n\t\t\t\t\t\tcompareFn,\n\t\t\t\t\t\tactionFn,\n\t\t\t\t\t\tcontinueLeftFn,\n\t\t\t\t\t\tcontinueRightFn,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic findOverlappingIntervals(\n\t\tstart: SequencePlace,\n\t\tend: SequencePlace,\n\t): SequenceInterval[] {\n\t\tconst { startPos, endPos } = endpointPosAndSide(start, end);\n\n\t\tif (\n\t\t\tstartPos === undefined ||\n\t\t\tendPos === undefined ||\n\t\t\t(typeof startPos === \"number\" && typeof endPos === \"number\" && endPos < startPos) ||\n\t\t\t(startPos === \"end\" && endPos !== \"end\") ||\n\t\t\t(startPos !== \"start\" && endPos === \"start\") ||\n\t\t\tthis.intervalTree.intervals.isEmpty()\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tconst transientInterval = createTransientIntervalFromSequence(start, end, this.sequence);\n\n\t\tconst overlappingIntervalNodes = this.intervalTree.match(transientInterval);\n\t\treturn overlappingIntervalNodes.map((node) => node.key);\n\t}\n\n\tpublic remove(interval: BaseSequenceInterval) {\n\t\tthis.intervalTree.removeExisting(interval);\n\t}\n\n\tpublic add(interval: BaseSequenceInterval) {\n\t\tthis.intervalTree.put(interval);\n\t}\n}\n\n/**\n * Creates an overlapping intervals index for the provided SharedString.\n *\n * @legacy @beta\n */\nexport function createOverlappingIntervalsIndex(\n\tsharedString: ISharedString,\n): ISequenceOverlappingIntervalsIndex {\n\treturn new OverlappingIntervalsIndex(sharedString);\n}\n"]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { Client } from "@fluidframework/merge-tree/internal";
|
|
6
5
|
import { SequenceInterval } from "../intervals/index.js";
|
|
6
|
+
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
7
7
|
import { ISharedString } from "../sharedString.js";
|
|
8
8
|
import type { SequenceIntervalIndex } from "./intervalIndex.js";
|
|
9
9
|
/**
|
|
@@ -19,9 +19,9 @@ export interface IStartpointInRangeIndex extends SequenceIntervalIndex {
|
|
|
19
19
|
findIntervalsWithStartpointInRange(start: number, end: number): SequenceInterval[];
|
|
20
20
|
}
|
|
21
21
|
export declare class StartpointInRangeIndex implements IStartpointInRangeIndex {
|
|
22
|
-
private readonly
|
|
22
|
+
private readonly sequence;
|
|
23
23
|
private readonly intervalTree;
|
|
24
|
-
constructor(
|
|
24
|
+
constructor(sequence: ISharedSegmentSequence<any>);
|
|
25
25
|
add(interval: SequenceInterval): void;
|
|
26
26
|
remove(interval: SequenceInterval): void;
|
|
27
27
|
findIntervalsWithStartpointInRange(start: number, end: number): SequenceInterval[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startpointInRangeIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"startpointInRangeIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAuC,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAOhE;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACrE;;OAEG;IACH,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;CACnF;AAED,qBAAa,sBAAuB,YAAW,uBAAuB;IAGzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAED,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC;IAyB3D,GAAG,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIxC,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE;CAyBzF;AACD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,YAAY,EAAE,aAAa,GACzB,uBAAuB,CAEzB"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { RedBlackTree } from "@fluidframework/merge-tree/internal";
|
|
6
|
-
import {
|
|
6
|
+
import { createTransientIntervalFromSequence } from "../intervals/index.js";
|
|
7
7
|
import { compareOverrideables, forceCompare, } from "./intervalIndexUtils.js";
|
|
8
8
|
export class StartpointInRangeIndex {
|
|
9
|
-
constructor(
|
|
10
|
-
this.
|
|
9
|
+
constructor(sequence) {
|
|
10
|
+
this.sequence = sequence;
|
|
11
11
|
this.intervalTree = new RedBlackTree((a, b) => {
|
|
12
12
|
const compareStartsResult = a.compareStart(b);
|
|
13
13
|
if (compareStartsResult !== 0) {
|
|
@@ -40,8 +40,8 @@ export class StartpointInRangeIndex {
|
|
|
40
40
|
results.push(node.data);
|
|
41
41
|
return true;
|
|
42
42
|
};
|
|
43
|
-
const transientStartInterval =
|
|
44
|
-
const transientEndInterval =
|
|
43
|
+
const transientStartInterval = createTransientIntervalFromSequence(start, start, this.sequence);
|
|
44
|
+
const transientEndInterval = createTransientIntervalFromSequence(end, end, this.sequence);
|
|
45
45
|
// Add comparison overrides to the transient intervals
|
|
46
46
|
transientStartInterval[forceCompare] = -1;
|
|
47
47
|
transientEndInterval[forceCompare] = 1;
|
|
@@ -55,7 +55,6 @@ export class StartpointInRangeIndex {
|
|
|
55
55
|
* @internal
|
|
56
56
|
*/
|
|
57
57
|
export function createStartpointInRangeIndex(sharedString) {
|
|
58
|
-
|
|
59
|
-
return new StartpointInRangeIndex(client);
|
|
58
|
+
return new StartpointInRangeIndex(sharedString);
|
|
60
59
|
}
|
|
61
60
|
//# sourceMappingURL=startpointInRangeIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startpointInRangeIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"startpointInRangeIndex.js","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,EAAoB,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAK9F,OAAO,EAEN,oBAAoB,EACpB,YAAY,GACZ,MAAM,yBAAyB,CAAC;AAejC,MAAM,OAAO,sBAAsB;IAGlC,YAA6B,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CACnC,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE;YAC5C,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC5B,CAAC;YAED,MAAM,uBAAuB,GAAG,oBAAoB,CACnD,CAAmC,EACnC,CAAmC,CACnC,CAAC;YACF,IAAI,uBAAuB,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,uBAAuB,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC5C,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CACD,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,QAA0B;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,QAA0B;QACvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,kCAAkC,CAAC,KAAa,EAAE,GAAW;QACnE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAuD,CAAC,IAAI,EAAE,EAAE;YAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,sBAAsB,GAAG,mCAAmC,CACjE,KAAK,EACL,KAAK,EACL,IAAI,CAAC,QAAQ,CACb,CAAC;QAEF,MAAM,oBAAoB,GAAG,mCAAmC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1F,sDAAsD;QACrD,sBAAyD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,oBAAuD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAE3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AACD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC3C,YAA2B;IAE3B,OAAO,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACjD,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { PropertyAction, RedBlackTree } from \"@fluidframework/merge-tree/internal\";\n\nimport { SequenceInterval, createTransientIntervalFromSequence } from \"../intervals/index.js\";\nimport type { ISharedSegmentSequence } from \"../sequence.js\";\nimport { ISharedString } from \"../sharedString.js\";\n\nimport type { SequenceIntervalIndex } from \"./intervalIndex.js\";\nimport {\n\tHasComparisonOverride,\n\tcompareOverrideables,\n\tforceCompare,\n} from \"./intervalIndexUtils.js\";\n\n/**\n * Collection of intervals.\n *\n * Provide additional APIs to support efficiently querying a collection of intervals whose startpoints fall within a specified range.\n * @internal\n */\nexport interface IStartpointInRangeIndex extends SequenceIntervalIndex {\n\t/**\n\t * @returns an array of all intervals contained in this collection whose startpoints locate in the range [start, end] (includes both ends)\n\t */\n\tfindIntervalsWithStartpointInRange(start: number, end: number): SequenceInterval[];\n}\n\nexport class StartpointInRangeIndex implements IStartpointInRangeIndex {\n\tprivate readonly intervalTree;\n\n\tconstructor(private readonly sequence: ISharedSegmentSequence<any>) {\n\t\tthis.intervalTree = new RedBlackTree<SequenceInterval, SequenceInterval>(\n\t\t\t(a: SequenceInterval, b: SequenceInterval) => {\n\t\t\t\tconst compareStartsResult = a.compareStart(b);\n\t\t\t\tif (compareStartsResult !== 0) {\n\t\t\t\t\treturn compareStartsResult;\n\t\t\t\t}\n\n\t\t\t\tconst overrideablesComparison = compareOverrideables(\n\t\t\t\t\ta as Partial<HasComparisonOverride>,\n\t\t\t\t\tb as Partial<HasComparisonOverride>,\n\t\t\t\t);\n\t\t\t\tif (overrideablesComparison !== 0) {\n\t\t\t\t\treturn overrideablesComparison;\n\t\t\t\t}\n\t\t\t\tconst aId = a.getIntervalId();\n\t\t\t\tconst bId = b.getIntervalId();\n\t\t\t\tif (aId !== undefined && bId !== undefined) {\n\t\t\t\t\treturn aId.localeCompare(bId);\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t);\n\t}\n\n\tpublic add(interval: SequenceInterval): void {\n\t\tthis.intervalTree.put(interval, interval);\n\t}\n\n\tpublic remove(interval: SequenceInterval): void {\n\t\tthis.intervalTree.remove(interval);\n\t}\n\n\tpublic findIntervalsWithStartpointInRange(start: number, end: number): SequenceInterval[] {\n\t\tif (start <= 0 || start > end || this.intervalTree.isEmpty()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results: SequenceInterval[] = [];\n\t\tconst action: PropertyAction<SequenceInterval, SequenceInterval> = (node) => {\n\t\t\tresults.push(node.data);\n\t\t\treturn true;\n\t\t};\n\n\t\tconst transientStartInterval = createTransientIntervalFromSequence(\n\t\t\tstart,\n\t\t\tstart,\n\t\t\tthis.sequence,\n\t\t);\n\n\t\tconst transientEndInterval = createTransientIntervalFromSequence(end, end, this.sequence);\n\n\t\t// Add comparison overrides to the transient intervals\n\t\t(transientStartInterval as Partial<HasComparisonOverride>)[forceCompare] = -1;\n\t\t(transientEndInterval as Partial<HasComparisonOverride>)[forceCompare] = 1;\n\n\t\tthis.intervalTree.mapRange(action, results, transientStartInterval, transientEndInterval);\n\t\treturn results;\n\t}\n}\n/**\n * Creates a startpoint-in-range index for the provided SharedString.\n *\n * @internal\n */\nexport function createStartpointInRangeIndex(\n\tsharedString: ISharedString,\n): IStartpointInRangeIndex {\n\treturn new StartpointInRangeIndex(sharedString);\n}\n"]}
|
package/lib/intervals/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
export { IInterval, ISerializedInterval, ISerializableInterval, IntervalOpType, IntervalType, IntervalDeltaOpType, IntervalStickiness, SerializedIntervalDelta, CompressedSerializedInterval, endReferenceSlidingPreference, startReferenceSlidingPreference, } from "./intervalUtils.js";
|
|
6
|
-
export { SequenceInterval, SequenceIntervalClass, createSequenceInterval, createPositionReferenceFromSegoff,
|
|
6
|
+
export { SequenceInterval, SequenceIntervalClass, BaseSequenceInterval, createSequenceInterval, createPositionReferenceFromSegoff, createTransientIntervalFromSequence, resolvePositionRef, getSerializedProperties, } from "./sequenceInterval.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,iCAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,uBAAuB,CAAC"}
|
package/lib/intervals/index.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
export { IntervalOpType, IntervalType, IntervalDeltaOpType, IntervalStickiness, endReferenceSlidingPreference, startReferenceSlidingPreference, } from "./intervalUtils.js";
|
|
6
|
-
export { SequenceIntervalClass, createSequenceInterval, createPositionReferenceFromSegoff,
|
|
6
|
+
export { SequenceIntervalClass, BaseSequenceInterval, createSequenceInterval, createPositionReferenceFromSegoff, createTransientIntervalFromSequence, resolvePositionRef, getSerializedProperties, } from "./sequenceInterval.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIN,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAGlB,6BAA6B,EAC7B,+BAA+B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEN,qBAAqB,EACrB,sBAAsB,EACtB,iCAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIN,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAGlB,6BAA6B,EAC7B,+BAA+B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEN,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,uBAAuB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tIInterval,\n\tISerializedInterval,\n\tISerializableInterval,\n\tIntervalOpType,\n\tIntervalType,\n\tIntervalDeltaOpType,\n\tIntervalStickiness,\n\tSerializedIntervalDelta,\n\tCompressedSerializedInterval,\n\tendReferenceSlidingPreference,\n\tstartReferenceSlidingPreference,\n} from \"./intervalUtils.js\";\nexport {\n\tSequenceInterval,\n\tSequenceIntervalClass,\n\tBaseSequenceInterval,\n\tcreateSequenceInterval,\n\tcreatePositionReferenceFromSegoff,\n\tcreateTransientIntervalFromSequence,\n\tresolvePositionRef,\n\tgetSerializedProperties,\n} from \"./sequenceInterval.js\";\n"]}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { IDisposable } from "@fluidframework/core-interfaces";
|
|
6
6
|
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
7
7
|
import { Client, ISegment, LocalReferencePosition, PropertySet, ReferenceType, SlidingPreference, SequencePlace, Side } from "@fluidframework/merge-tree/internal";
|
|
8
|
+
import type { ISharedSegmentSequence } from "../sequence.js";
|
|
8
9
|
import { ISerializableInterval, ISerializedInterval, IntervalStickiness, IntervalType, type IInterval, type SerializedIntervalDelta } from "./intervalUtils.js";
|
|
9
10
|
export declare function getSerializedProperties(serializedInterval: ISerializedInterval | SerializedIntervalDelta): {
|
|
10
11
|
id: string;
|
|
@@ -88,11 +89,12 @@ export interface SequenceInterval extends IInterval {
|
|
|
88
89
|
*/
|
|
89
90
|
getIntervalId(): string;
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Lightweight interval for index queries (overlap, comparison).
|
|
94
|
+
* Has no Client dependency; cannot serialize or be disposed.
|
|
95
|
+
*/
|
|
96
|
+
export declare class BaseSequenceInterval implements SequenceInterval, ISerializableInterval {
|
|
92
97
|
#private;
|
|
93
|
-
private readonly client;
|
|
94
|
-
private readonly id;
|
|
95
|
-
private readonly label;
|
|
96
98
|
/**
|
|
97
99
|
* Start endpoint of this interval.
|
|
98
100
|
* @remarks This endpoint can be resolved into a character position using the SharedString it's a part of.
|
|
@@ -106,14 +108,7 @@ export declare class SequenceIntervalClass implements SequenceInterval, ISeriali
|
|
|
106
108
|
intervalType: IntervalType;
|
|
107
109
|
readonly startSide: Side;
|
|
108
110
|
readonly endSide: Side;
|
|
109
|
-
|
|
110
|
-
* {@inheritDoc ISerializableInterval.properties}
|
|
111
|
-
*/
|
|
112
|
-
get properties(): Readonly<PropertySet>;
|
|
113
|
-
changeProperties(props: PropertySet | undefined, op?: ISequencedDocumentMessage, rollback?: boolean): import("@fluidframework/merge-tree/internal").MapLike<unknown> | undefined;
|
|
114
|
-
/***/
|
|
115
|
-
get stickiness(): IntervalStickiness;
|
|
116
|
-
constructor(client: Client, id: string, label: string,
|
|
111
|
+
constructor(id: string,
|
|
117
112
|
/**
|
|
118
113
|
* Start endpoint of this interval.
|
|
119
114
|
* @remarks This endpoint can be resolved into a character position using the SharedString it's a part of.
|
|
@@ -123,10 +118,51 @@ export declare class SequenceIntervalClass implements SequenceInterval, ISeriali
|
|
|
123
118
|
* End endpoint of this interval.
|
|
124
119
|
* @remarks This endpoint can be resolved into a character position using the SharedString it's a part of.
|
|
125
120
|
*/
|
|
126
|
-
end: LocalReferencePosition, intervalType: IntervalType,
|
|
121
|
+
end: LocalReferencePosition, intervalType: IntervalType, startSide?: Side, endSide?: Side);
|
|
122
|
+
get properties(): Readonly<PropertySet>;
|
|
123
|
+
/***/
|
|
124
|
+
get stickiness(): IntervalStickiness;
|
|
125
|
+
/**
|
|
126
|
+
* {@inheritDoc ISerializableInterval.getIntervalId}
|
|
127
|
+
*/
|
|
128
|
+
getIntervalId(): string;
|
|
129
|
+
/**
|
|
130
|
+
* {@inheritDoc IInterval.compare}
|
|
131
|
+
*/
|
|
132
|
+
compare(b: SequenceInterval): number;
|
|
133
|
+
/**
|
|
134
|
+
* {@inheritDoc IInterval.compareStart}
|
|
135
|
+
*/
|
|
136
|
+
compareStart(b: SequenceInterval): number;
|
|
137
|
+
/**
|
|
138
|
+
* {@inheritDoc IInterval.compareEnd}
|
|
139
|
+
*/
|
|
140
|
+
compareEnd(b: SequenceInterval): number;
|
|
141
|
+
/**
|
|
142
|
+
* {@inheritDoc IInterval.overlaps}
|
|
143
|
+
*/
|
|
144
|
+
overlaps(b: SequenceInterval): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Whether this interval overlaps the provided numerical positions.
|
|
147
|
+
*/
|
|
148
|
+
overlapsPos(_bstart: number, _bend: number): boolean;
|
|
149
|
+
clone(): BaseSequenceInterval;
|
|
150
|
+
union(_b: BaseSequenceInterval): BaseSequenceInterval;
|
|
151
|
+
protected verifyNotDispose(): void;
|
|
152
|
+
}
|
|
153
|
+
export declare class SequenceIntervalClass extends BaseSequenceInterval implements ISerializableInterval, IDisposable {
|
|
154
|
+
#private;
|
|
155
|
+
private readonly client;
|
|
156
|
+
private readonly label;
|
|
157
|
+
/**
|
|
158
|
+
* {@inheritDoc ISerializableInterval.properties}
|
|
159
|
+
*/
|
|
160
|
+
get properties(): Readonly<PropertySet>;
|
|
161
|
+
changeProperties(props: PropertySet | undefined, op?: ISequencedDocumentMessage, rollback?: boolean): import("@fluidframework/merge-tree/internal").MapLike<unknown> | undefined;
|
|
162
|
+
constructor(client: Client, id: string, label: string, start: LocalReferencePosition, end: LocalReferencePosition, intervalType: IntervalType, props?: PropertySet, startSide?: Side, endSide?: Side);
|
|
127
163
|
get disposed(): boolean;
|
|
128
164
|
dispose(error?: Error): void;
|
|
129
|
-
|
|
165
|
+
protected verifyNotDispose(): void;
|
|
130
166
|
private callbacks?;
|
|
131
167
|
/**
|
|
132
168
|
* Subscribes to position change events on this interval if there are no current listeners.
|
|
@@ -148,26 +184,6 @@ export declare class SequenceIntervalClass implements SequenceInterval, ISeriali
|
|
|
148
184
|
* {@inheritDoc IInterval.clone}
|
|
149
185
|
*/
|
|
150
186
|
clone(): SequenceIntervalClass;
|
|
151
|
-
/**
|
|
152
|
-
* {@inheritDoc IInterval.compare}
|
|
153
|
-
*/
|
|
154
|
-
compare(b: SequenceInterval): number;
|
|
155
|
-
/**
|
|
156
|
-
* {@inheritDoc IInterval.compareStart}
|
|
157
|
-
*/
|
|
158
|
-
compareStart(b: SequenceInterval): number;
|
|
159
|
-
/**
|
|
160
|
-
* {@inheritDoc IInterval.compareEnd}
|
|
161
|
-
*/
|
|
162
|
-
compareEnd(b: SequenceInterval): number;
|
|
163
|
-
/**
|
|
164
|
-
* {@inheritDoc IInterval.overlaps}
|
|
165
|
-
*/
|
|
166
|
-
overlaps(b: SequenceInterval): boolean;
|
|
167
|
-
/**
|
|
168
|
-
* {@inheritDoc ISerializableInterval.getIntervalId}
|
|
169
|
-
*/
|
|
170
|
-
getIntervalId(): string;
|
|
171
187
|
/**
|
|
172
188
|
* {@inheritDoc IInterval.union}
|
|
173
189
|
*/
|
|
@@ -200,6 +216,15 @@ export declare function createPositionReferenceFromSegoff({ client, segoff, refT
|
|
|
200
216
|
canSlideToEndpoint: boolean | undefined;
|
|
201
217
|
rollback?: boolean;
|
|
202
218
|
}): LocalReferencePosition;
|
|
203
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Resolves a position to a {@link LocalReferencePosition} using an
|
|
221
|
+
* {@link ISharedSegmentSequence} (no Client or op context needed).
|
|
222
|
+
*/
|
|
223
|
+
export declare function resolvePositionRef(sequence: ISharedSegmentSequence<any>, pos: number | "start" | "end", refType: ReferenceType, slidingPreference: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
|
|
224
|
+
/**
|
|
225
|
+
* Creates a transient interval using an `ISharedSegmentSequence` instead of a `Client`.
|
|
226
|
+
* This avoids coupling index classes to merge-tree internals.
|
|
227
|
+
*/
|
|
228
|
+
export declare function createTransientIntervalFromSequence(start: SequencePlace | undefined, end: SequencePlace | undefined, sequence: ISharedSegmentSequence<any>): BaseSequenceInterval;
|
|
204
229
|
export declare function createSequenceInterval(label: string, id: string, start: SequencePlace | undefined, end: SequencePlace | undefined, client: Client, intervalType: IntervalType, op?: ISequencedDocumentMessage, fromSnapshot?: boolean, canSlideToEndpoint?: boolean, props?: PropertySet, rollback?: boolean): SequenceIntervalClass;
|
|
205
230
|
//# sourceMappingURL=sequenceInterval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceInterval.d.ts","sourceRoot":"","sources":["../../src/intervals/sequenceInterval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACN,MAAM,EACN,QAAQ,EACR,sBAAsB,EAEtB,WAAW,EACX,aAAa,EACb,iBAAiB,EASjB,aAAa,EACb,IAAI,EAMJ,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EAIZ,KAAK,SAAS,EACd,KAAK,uBAAuB,EAC5B,MAAM,oBAAoB,CAAC;AAkC5B,wBAAgB,uBAAuB,CACtC,kBAAkB,EAAE,mBAAmB,GAAG,uBAAuB,GAC/D;IACF,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;CACxB,CAYA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,mEAAmE;IACnE,UAAU,EAAE,WAAW,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAC1C;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnD;;;;OAIG;IACH,aAAa,IAAI,MAAM,CAAC;CACxB;AAED,qBAAa,
|
|
1
|
+
{"version":3,"file":"sequenceInterval.d.ts","sourceRoot":"","sources":["../../src/intervals/sequenceInterval.ts"],"names":[],"mappings":"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"}
|