@fluidframework/sequence 2.0.0-internal.4.1.2 → 2.0.0-internal.4.2.1
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/dist/intervalCollection.d.ts +65 -23
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +128 -110
- package/dist/intervalCollection.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/lib/intervalCollection.d.ts +65 -23
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +127 -108
- package/lib/intervalCollection.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +18 -15
- package/src/intervalCollection.ts +188 -129
- package/src/packageVersion.ts +1 -1
|
@@ -297,25 +297,77 @@ export declare class SequenceInterval implements ISerializableInterval {
|
|
|
297
297
|
private initializeProperties;
|
|
298
298
|
}
|
|
299
299
|
export declare function createSequenceInterval(label: string, start: number, end: number, client: Client, intervalType: IntervalType, op?: ISequencedDocumentMessage, fromSnapshot?: boolean): SequenceInterval;
|
|
300
|
-
export declare function
|
|
301
|
-
|
|
300
|
+
export declare function createIntervalIndex(): LocalIntervalCollection<Interval>;
|
|
301
|
+
/**
|
|
302
|
+
* Collection of intervals.
|
|
303
|
+
*
|
|
304
|
+
* Implementers of this interface will typically implement additional APIs to support efficiently querying a collection
|
|
305
|
+
* of intervals in some manner, for example:
|
|
306
|
+
* - "find all intervals with start endpoint between these two points"
|
|
307
|
+
* - "find all intervals which overlap this range"
|
|
308
|
+
* etc.
|
|
309
|
+
*/
|
|
310
|
+
export interface IntervalIndex<TInterval extends ISerializableInterval> {
|
|
311
|
+
/**
|
|
312
|
+
* Adds an interval to the index.
|
|
313
|
+
* @remarks - Application code should never need to invoke this method on their index for production scenarios:
|
|
314
|
+
* Fluid handles adding and removing intervals from an index in response to sequence or interval changes.
|
|
315
|
+
*/
|
|
316
|
+
add(interval: TInterval): void;
|
|
317
|
+
/**
|
|
318
|
+
* Removes an interval from the index.
|
|
319
|
+
* @remarks - Application code should never need to invoke this method on their index for production scenarios:
|
|
320
|
+
* Fluid handles adding and removing intervals from an index in response to sequence or interval changes.
|
|
321
|
+
*/
|
|
322
|
+
remove(interval: TInterval): void;
|
|
323
|
+
}
|
|
324
|
+
declare class OverlappingIntervalsIndex<TInterval extends ISerializableInterval> implements IntervalIndex<TInterval> {
|
|
325
|
+
private readonly client;
|
|
326
|
+
private readonly helpers;
|
|
327
|
+
private readonly intervalTree;
|
|
328
|
+
constructor(client: Client, helpers: IIntervalHelpers<TInterval>);
|
|
329
|
+
map(fn: (interval: TInterval) => void): void;
|
|
330
|
+
mapUntil(fn: (interval: TInterval) => boolean): void;
|
|
331
|
+
gatherIterationResults(results: TInterval[], iteratesForward: boolean, start?: number, end?: number): void;
|
|
332
|
+
/**
|
|
333
|
+
* @returns an array of all intervals contained in this collection that overlap the range
|
|
334
|
+
* `[startPosition, endPosition)`.
|
|
335
|
+
*/
|
|
336
|
+
findOverlappingIntervals(startPosition: number, endPosition: number): TInterval[];
|
|
337
|
+
remove(interval: TInterval): void;
|
|
338
|
+
add(interval: TInterval): void;
|
|
339
|
+
}
|
|
340
|
+
declare class IdIntervalIndex<TInterval extends ISerializableInterval> implements IntervalIndex<TInterval>, Iterable<TInterval> {
|
|
341
|
+
private readonly intervalIdMap;
|
|
342
|
+
add(interval: TInterval): void;
|
|
343
|
+
remove(interval: TInterval): void;
|
|
344
|
+
getIntervalById(id: string): TInterval | undefined;
|
|
345
|
+
[Symbol.iterator](): IterableIterator<TInterval>;
|
|
346
|
+
}
|
|
347
|
+
declare class EndpointIndex<TInterval extends ISerializableInterval> implements IntervalIndex<TInterval> {
|
|
348
|
+
private readonly client;
|
|
349
|
+
private readonly helpers;
|
|
350
|
+
private readonly endIntervalTree;
|
|
351
|
+
constructor(client: Client, helpers: IIntervalHelpers<TInterval>);
|
|
352
|
+
previousInterval(pos: number): TInterval | undefined;
|
|
353
|
+
nextInterval(pos: number): TInterval | undefined;
|
|
354
|
+
add(interval: TInterval): void;
|
|
355
|
+
remove(interval: TInterval): void;
|
|
356
|
+
}
|
|
302
357
|
export declare class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
303
358
|
private readonly client;
|
|
304
359
|
private readonly label;
|
|
305
360
|
private readonly helpers;
|
|
306
361
|
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
307
362
|
private readonly onPositionChange?;
|
|
308
|
-
private readonly intervalTree;
|
|
309
|
-
private readonly endIntervalTree;
|
|
310
|
-
private readonly intervalIdMap;
|
|
311
|
-
private conflictResolver;
|
|
312
|
-
private endConflictResolver;
|
|
313
363
|
private static readonly legacyIdPrefix;
|
|
364
|
+
readonly overlappingIntervalsIndex: OverlappingIntervalsIndex<TInterval>;
|
|
365
|
+
readonly idIntervalIndex: IdIntervalIndex<TInterval>;
|
|
366
|
+
readonly endIntervalIndex: EndpointIndex<TInterval>;
|
|
367
|
+
private readonly indexes;
|
|
314
368
|
constructor(client: Client, label: string, helpers: IIntervalHelpers<TInterval>,
|
|
315
369
|
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
316
370
|
onPositionChange?: ((interval: TInterval, previousInterval: TInterval) => void) | undefined);
|
|
317
|
-
addConflictResolver(conflictResolver: IntervalConflictResolver<TInterval>): void;
|
|
318
|
-
map(fn: (interval: TInterval) => void): void;
|
|
319
371
|
createLegacyId(start: number, end: number): string;
|
|
320
372
|
/**
|
|
321
373
|
* Validates that a serialized interval has the ID property. Creates an ID
|
|
@@ -325,24 +377,13 @@ export declare class LocalIntervalCollection<TInterval extends ISerializableInte
|
|
|
325
377
|
* @returns The interval's existing or newly created id
|
|
326
378
|
*/
|
|
327
379
|
ensureSerializedId(serializedInterval: ISerializedInterval): string;
|
|
328
|
-
|
|
329
|
-
gatherIterationResults(results: TInterval[], iteratesForward: boolean, start?: number, end?: number): void;
|
|
330
|
-
/**
|
|
331
|
-
* @returns an array of all intervals contained in this collection that overlap the range
|
|
332
|
-
* `[startPosition, endPosition)`.
|
|
333
|
-
*/
|
|
334
|
-
findOverlappingIntervals(startPosition: number, endPosition: number): TInterval[];
|
|
335
|
-
previousInterval(pos: number): TInterval | undefined;
|
|
336
|
-
nextInterval(pos: number): TInterval | undefined;
|
|
337
|
-
removeInterval(startPosition: number, endPosition: number): TInterval;
|
|
338
|
-
private removeIntervalFromIndex;
|
|
380
|
+
private removeIntervalFromIndexes;
|
|
339
381
|
removeExistingInterval(interval: TInterval): void;
|
|
340
382
|
createInterval(start: number, end: number, intervalType: IntervalType, op?: ISequencedDocumentMessage): TInterval;
|
|
341
383
|
addInterval(start: number, end: number, intervalType: IntervalType, props?: PropertySet, op?: ISequencedDocumentMessage): TInterval;
|
|
342
384
|
private linkEndpointsToInterval;
|
|
343
|
-
private
|
|
385
|
+
private addIntervalToIndexes;
|
|
344
386
|
add(interval: TInterval): void;
|
|
345
|
-
getIntervalById(id: string): TInterval | undefined;
|
|
346
387
|
changeInterval(interval: TInterval, start: number | undefined, end: number | undefined, op?: ISequencedDocumentMessage, localSeq?: number): TInterval | undefined;
|
|
347
388
|
serialize(): ISerializedIntervalCollectionV2;
|
|
348
389
|
private addIntervalListeners;
|
|
@@ -491,7 +532,7 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
491
532
|
*
|
|
492
533
|
* As such, the conflict resolver is never invoked and unnecessary. This API will be removed in an upcoming release.
|
|
493
534
|
*/
|
|
494
|
-
addConflictResolver(
|
|
535
|
+
addConflictResolver(_: IntervalConflictResolver<TInterval>): void;
|
|
495
536
|
attachDeserializer(onDeserialize: DeserializeCallback): void;
|
|
496
537
|
/**
|
|
497
538
|
* Returns new interval after rebasing. If undefined, the interval was
|
|
@@ -573,4 +614,5 @@ export interface IntervalLocator {
|
|
|
573
614
|
* endpoint is a part of.
|
|
574
615
|
*/
|
|
575
616
|
export declare function intervalLocatorFromEndpoint(potentialEndpoint: LocalReferencePosition): IntervalLocator | undefined;
|
|
617
|
+
export {};
|
|
576
618
|
//# sourceMappingURL=intervalCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervalCollection.d.ts","sourceRoot":"","sources":["../src/intervalCollection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intervalCollection.d.ts","sourceRoot":"","sources":["../src/intervalCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
15
15
|
return t;
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.intervalLocatorFromEndpoint = exports.IntervalCollection = exports.IntervalCollectionIterator = exports.makeOpsMap = exports.IntervalCollectionValueType = exports.SequenceIntervalCollectionValueType = exports.compareSequenceIntervalEnds = exports.LocalIntervalCollection = exports.createIntervalIndex = exports.
|
|
18
|
+
exports.intervalLocatorFromEndpoint = exports.IntervalCollection = exports.IntervalCollectionIterator = exports.makeOpsMap = exports.IntervalCollectionValueType = exports.SequenceIntervalCollectionValueType = exports.compareSequenceIntervalEnds = exports.LocalIntervalCollection = exports.createIntervalIndex = exports.createSequenceInterval = exports.SequenceInterval = exports.Interval = exports.IntervalType = void 0;
|
|
19
19
|
/* eslint-disable no-bitwise */
|
|
20
20
|
const common_utils_1 = require("@fluidframework/common-utils");
|
|
21
21
|
const container_utils_1 = require("@fluidframework/container-utils");
|
|
@@ -513,84 +513,24 @@ function createSequenceInterval(label, start, end, client, intervalType, op, fro
|
|
|
513
513
|
return ival;
|
|
514
514
|
}
|
|
515
515
|
exports.createSequenceInterval = createSequenceInterval;
|
|
516
|
-
function
|
|
517
|
-
a.addPropertySet(b.properties);
|
|
518
|
-
return a;
|
|
519
|
-
}
|
|
520
|
-
exports.defaultIntervalConflictResolver = defaultIntervalConflictResolver;
|
|
521
|
-
function createIntervalIndex(conflict) {
|
|
516
|
+
function createIntervalIndex() {
|
|
522
517
|
const helpers = {
|
|
523
518
|
compareEnds: compareIntervalEnds,
|
|
524
519
|
create: createInterval,
|
|
525
520
|
};
|
|
526
521
|
const lc = new LocalIntervalCollection(undefined, "", helpers);
|
|
527
|
-
if (conflict) {
|
|
528
|
-
lc.addConflictResolver(conflict);
|
|
529
|
-
}
|
|
530
|
-
else {
|
|
531
|
-
lc.addConflictResolver(defaultIntervalConflictResolver);
|
|
532
|
-
}
|
|
533
522
|
return lc;
|
|
534
523
|
}
|
|
535
524
|
exports.createIntervalIndex = createIntervalIndex;
|
|
536
|
-
class
|
|
537
|
-
constructor(client,
|
|
538
|
-
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
539
|
-
onPositionChange) {
|
|
525
|
+
class OverlappingIntervalsIndex {
|
|
526
|
+
constructor(client, helpers) {
|
|
540
527
|
this.client = client;
|
|
541
|
-
this.label = label;
|
|
542
528
|
this.helpers = helpers;
|
|
543
|
-
this.onPositionChange = onPositionChange;
|
|
544
529
|
this.intervalTree = new intervalTree_1.IntervalTree();
|
|
545
|
-
this.intervalIdMap = new Map();
|
|
546
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
547
|
-
this.endIntervalTree = new merge_tree_1.RedBlackTree(helpers.compareEnds);
|
|
548
|
-
}
|
|
549
|
-
addConflictResolver(conflictResolver) {
|
|
550
|
-
this.conflictResolver = conflictResolver;
|
|
551
|
-
this.endConflictResolver = (key, currentKey) => {
|
|
552
|
-
const ival = conflictResolver(key, currentKey);
|
|
553
|
-
return {
|
|
554
|
-
data: ival,
|
|
555
|
-
key: ival,
|
|
556
|
-
};
|
|
557
|
-
};
|
|
558
530
|
}
|
|
559
531
|
map(fn) {
|
|
560
532
|
this.intervalTree.map(fn);
|
|
561
533
|
}
|
|
562
|
-
createLegacyId(start, end) {
|
|
563
|
-
// Create a non-unique ID based on start and end to be used on intervals that come from legacy clients
|
|
564
|
-
// without ID's.
|
|
565
|
-
return `${LocalIntervalCollection.legacyIdPrefix}${start}-${end}`;
|
|
566
|
-
}
|
|
567
|
-
/**
|
|
568
|
-
* Validates that a serialized interval has the ID property. Creates an ID
|
|
569
|
-
* if one does not already exist
|
|
570
|
-
*
|
|
571
|
-
* @param serializedInterval - The interval to be checked
|
|
572
|
-
* @returns The interval's existing or newly created id
|
|
573
|
-
*/
|
|
574
|
-
ensureSerializedId(serializedInterval) {
|
|
575
|
-
var _a;
|
|
576
|
-
let id = (_a = serializedInterval.properties) === null || _a === void 0 ? void 0 : _a[reservedIntervalIdKey];
|
|
577
|
-
if (id === undefined) {
|
|
578
|
-
// An interval came over the wire without an ID, so create a non-unique one based on start/end.
|
|
579
|
-
// This will allow all clients to refer to this interval consistently.
|
|
580
|
-
id = this.createLegacyId(serializedInterval.start, serializedInterval.end);
|
|
581
|
-
const newProps = {
|
|
582
|
-
[reservedIntervalIdKey]: id,
|
|
583
|
-
};
|
|
584
|
-
serializedInterval.properties = (0, merge_tree_1.addProperties)(serializedInterval.properties, newProps);
|
|
585
|
-
}
|
|
586
|
-
// Make the ID immutable for safety's sake.
|
|
587
|
-
Object.defineProperty(serializedInterval.properties, reservedIntervalIdKey, {
|
|
588
|
-
configurable: false,
|
|
589
|
-
enumerable: true,
|
|
590
|
-
writable: false,
|
|
591
|
-
});
|
|
592
|
-
return id;
|
|
593
|
-
}
|
|
594
534
|
mapUntil(fn) {
|
|
595
535
|
this.intervalTree.mapUntil(fn);
|
|
596
536
|
}
|
|
@@ -667,6 +607,47 @@ class LocalIntervalCollection {
|
|
|
667
607
|
const overlappingIntervalNodes = this.intervalTree.match(transientInterval);
|
|
668
608
|
return overlappingIntervalNodes.map((node) => node.key);
|
|
669
609
|
}
|
|
610
|
+
remove(interval) {
|
|
611
|
+
this.intervalTree.removeExisting(interval);
|
|
612
|
+
}
|
|
613
|
+
add(interval) {
|
|
614
|
+
this.intervalTree.put(interval);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
class IdIntervalIndex {
|
|
618
|
+
constructor() {
|
|
619
|
+
this.intervalIdMap = new Map();
|
|
620
|
+
}
|
|
621
|
+
add(interval) {
|
|
622
|
+
const id = interval.getIntervalId();
|
|
623
|
+
(0, common_utils_1.assert)(id !== undefined, 0x2c0 /* "ID must be created before adding interval to collection" */);
|
|
624
|
+
// Make the ID immutable.
|
|
625
|
+
Object.defineProperty(interval.properties, reservedIntervalIdKey, {
|
|
626
|
+
configurable: false,
|
|
627
|
+
enumerable: true,
|
|
628
|
+
writable: false,
|
|
629
|
+
});
|
|
630
|
+
this.intervalIdMap.set(id, interval);
|
|
631
|
+
}
|
|
632
|
+
remove(interval) {
|
|
633
|
+
const id = interval.getIntervalId();
|
|
634
|
+
(0, common_utils_1.assert)(id !== undefined, 0x311 /* expected id to exist on interval */);
|
|
635
|
+
this.intervalIdMap.delete(id);
|
|
636
|
+
}
|
|
637
|
+
getIntervalById(id) {
|
|
638
|
+
return this.intervalIdMap.get(id);
|
|
639
|
+
}
|
|
640
|
+
[Symbol.iterator]() {
|
|
641
|
+
return this.intervalIdMap.values();
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
class EndpointIndex {
|
|
645
|
+
constructor(client, helpers) {
|
|
646
|
+
this.client = client;
|
|
647
|
+
this.helpers = helpers;
|
|
648
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
649
|
+
this.endIntervalTree = new merge_tree_1.RedBlackTree(helpers.compareEnds);
|
|
650
|
+
}
|
|
670
651
|
previousInterval(pos) {
|
|
671
652
|
const transientInterval = this.helpers.create("transient", pos, pos, this.client, IntervalType.Transient);
|
|
672
653
|
const rbNode = this.endIntervalTree.floor(transientInterval);
|
|
@@ -681,21 +662,70 @@ class LocalIntervalCollection {
|
|
|
681
662
|
return rbNode.data;
|
|
682
663
|
}
|
|
683
664
|
}
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
this.intervalTree.remove(transientInterval);
|
|
687
|
-
this.endIntervalTree.remove(transientInterval);
|
|
688
|
-
return transientInterval;
|
|
665
|
+
add(interval) {
|
|
666
|
+
this.endIntervalTree.put(interval, interval);
|
|
689
667
|
}
|
|
690
|
-
|
|
691
|
-
this.intervalTree.removeExisting(interval);
|
|
668
|
+
remove(interval) {
|
|
692
669
|
this.endIntervalTree.remove(interval);
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
class LocalIntervalCollection {
|
|
673
|
+
constructor(client, label, helpers,
|
|
674
|
+
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
675
|
+
onPositionChange) {
|
|
676
|
+
this.client = client;
|
|
677
|
+
this.label = label;
|
|
678
|
+
this.helpers = helpers;
|
|
679
|
+
this.onPositionChange = onPositionChange;
|
|
680
|
+
this.overlappingIntervalsIndex = new OverlappingIntervalsIndex(client, helpers);
|
|
681
|
+
this.idIntervalIndex = new IdIntervalIndex();
|
|
682
|
+
this.endIntervalIndex = new EndpointIndex(client, helpers);
|
|
683
|
+
this.indexes = [
|
|
684
|
+
this.overlappingIntervalsIndex,
|
|
685
|
+
this.idIntervalIndex,
|
|
686
|
+
this.endIntervalIndex,
|
|
687
|
+
];
|
|
688
|
+
}
|
|
689
|
+
createLegacyId(start, end) {
|
|
690
|
+
// Create a non-unique ID based on start and end to be used on intervals that come from legacy clients
|
|
691
|
+
// without ID's.
|
|
692
|
+
return `${LocalIntervalCollection.legacyIdPrefix}${start}-${end}`;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Validates that a serialized interval has the ID property. Creates an ID
|
|
696
|
+
* if one does not already exist
|
|
697
|
+
*
|
|
698
|
+
* @param serializedInterval - The interval to be checked
|
|
699
|
+
* @returns The interval's existing or newly created id
|
|
700
|
+
*/
|
|
701
|
+
ensureSerializedId(serializedInterval) {
|
|
702
|
+
var _a;
|
|
703
|
+
let id = (_a = serializedInterval.properties) === null || _a === void 0 ? void 0 : _a[reservedIntervalIdKey];
|
|
704
|
+
if (id === undefined) {
|
|
705
|
+
// Back-compat: 0.39 and earlier did not have IDs on intervals. If an interval from such a client
|
|
706
|
+
// comes over the wire, create a non-unique one based on start/end.
|
|
707
|
+
// This will allow all clients to refer to this interval consistently.
|
|
708
|
+
id = this.createLegacyId(serializedInterval.start, serializedInterval.end);
|
|
709
|
+
const newProps = {
|
|
710
|
+
[reservedIntervalIdKey]: id,
|
|
711
|
+
};
|
|
712
|
+
serializedInterval.properties = (0, merge_tree_1.addProperties)(serializedInterval.properties, newProps);
|
|
713
|
+
}
|
|
714
|
+
// Make the ID immutable for safety's sake.
|
|
715
|
+
Object.defineProperty(serializedInterval.properties, reservedIntervalIdKey, {
|
|
716
|
+
configurable: false,
|
|
717
|
+
enumerable: true,
|
|
718
|
+
writable: false,
|
|
719
|
+
});
|
|
720
|
+
return id;
|
|
721
|
+
}
|
|
722
|
+
removeIntervalFromIndexes(interval) {
|
|
723
|
+
for (const index of this.indexes) {
|
|
724
|
+
index.remove(interval);
|
|
725
|
+
}
|
|
696
726
|
}
|
|
697
727
|
removeExistingInterval(interval) {
|
|
698
|
-
this.
|
|
728
|
+
this.removeIntervalFromIndexes(interval);
|
|
699
729
|
this.removeIntervalListeners(interval);
|
|
700
730
|
}
|
|
701
731
|
createInterval(start, end, intervalType, op) {
|
|
@@ -723,27 +753,16 @@ class LocalIntervalCollection {
|
|
|
723
753
|
interval.end.addProperties({ interval });
|
|
724
754
|
}
|
|
725
755
|
}
|
|
726
|
-
|
|
727
|
-
const
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
Object.defineProperty(interval.properties, reservedIntervalIdKey, {
|
|
731
|
-
configurable: false,
|
|
732
|
-
enumerable: true,
|
|
733
|
-
writable: false,
|
|
734
|
-
});
|
|
735
|
-
this.intervalTree.put(interval, this.conflictResolver);
|
|
736
|
-
this.endIntervalTree.put(interval, interval, this.endConflictResolver);
|
|
737
|
-
this.intervalIdMap.set(id, interval);
|
|
756
|
+
addIntervalToIndexes(interval) {
|
|
757
|
+
for (const index of this.indexes) {
|
|
758
|
+
index.add(interval);
|
|
759
|
+
}
|
|
738
760
|
}
|
|
739
761
|
add(interval) {
|
|
740
762
|
this.linkEndpointsToInterval(interval);
|
|
741
|
-
this.
|
|
763
|
+
this.addIntervalToIndexes(interval);
|
|
742
764
|
this.addIntervalListeners(interval);
|
|
743
765
|
}
|
|
744
|
-
getIntervalById(id) {
|
|
745
|
-
return this.intervalIdMap.get(id);
|
|
746
|
-
}
|
|
747
766
|
changeInterval(interval, start, end, op, localSeq) {
|
|
748
767
|
const newInterval = interval.modify(this.label, start, end, op, localSeq);
|
|
749
768
|
if (newInterval) {
|
|
@@ -753,10 +772,9 @@ class LocalIntervalCollection {
|
|
|
753
772
|
return newInterval;
|
|
754
773
|
}
|
|
755
774
|
serialize() {
|
|
756
|
-
const intervals = this.intervalTree.intervals.keys();
|
|
757
775
|
return {
|
|
758
776
|
label: this.label,
|
|
759
|
-
intervals:
|
|
777
|
+
intervals: Array.from(this.idIntervalIndex, (interval) => compressInterval(interval.serialize())),
|
|
760
778
|
version: 2,
|
|
761
779
|
};
|
|
762
780
|
}
|
|
@@ -781,14 +799,14 @@ class LocalIntervalCollection {
|
|
|
781
799
|
previousInterval = interval.clone();
|
|
782
800
|
previousInterval.start = cloneRef(previousInterval.start);
|
|
783
801
|
previousInterval.end = cloneRef(previousInterval.end);
|
|
784
|
-
this.
|
|
802
|
+
this.removeIntervalFromIndexes(interval);
|
|
785
803
|
}
|
|
786
804
|
}, () => {
|
|
787
805
|
var _a;
|
|
788
806
|
(0, common_utils_1.assert)(previousInterval !== undefined, 0x3fa /* Invalid interleaving of before/after slide */);
|
|
789
807
|
pendingChanges--;
|
|
790
808
|
if (pendingChanges === 0) {
|
|
791
|
-
this.
|
|
809
|
+
this.addIntervalToIndexes(interval);
|
|
792
810
|
(_a = this.onPositionChange) === null || _a === void 0 ? void 0 : _a.call(this, interval, previousInterval);
|
|
793
811
|
previousInterval = undefined;
|
|
794
812
|
}
|
|
@@ -1069,7 +1087,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1069
1087
|
if (!this.localCollection) {
|
|
1070
1088
|
throw new telemetry_utils_1.LoggingError("attach must be called before accessing intervals");
|
|
1071
1089
|
}
|
|
1072
|
-
return this.localCollection.getIntervalById(id);
|
|
1090
|
+
return this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1073
1091
|
}
|
|
1074
1092
|
/**
|
|
1075
1093
|
* Creates a new interval and add it to the collection.
|
|
@@ -1136,7 +1154,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1136
1154
|
if (!this.localCollection) {
|
|
1137
1155
|
throw new telemetry_utils_1.LoggingError("Attach must be called before accessing intervals");
|
|
1138
1156
|
}
|
|
1139
|
-
const interval = this.localCollection.getIntervalById(id);
|
|
1157
|
+
const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1140
1158
|
if (interval) {
|
|
1141
1159
|
this.deleteExistingInterval(interval, true, undefined);
|
|
1142
1160
|
}
|
|
@@ -1330,14 +1348,12 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1330
1348
|
*
|
|
1331
1349
|
* As such, the conflict resolver is never invoked and unnecessary. This API will be removed in an upcoming release.
|
|
1332
1350
|
*/
|
|
1333
|
-
addConflictResolver(
|
|
1351
|
+
addConflictResolver(_) {
|
|
1334
1352
|
if (!this.localCollection) {
|
|
1335
1353
|
throw new telemetry_utils_1.LoggingError("attachSequence must be called");
|
|
1336
1354
|
}
|
|
1337
|
-
this.localCollection.addConflictResolver(conflictResolver);
|
|
1338
1355
|
}
|
|
1339
1356
|
attachDeserializer(onDeserialize) {
|
|
1340
|
-
var _a;
|
|
1341
1357
|
// If no deserializer is specified can skip all processing work
|
|
1342
1358
|
if (!onDeserialize) {
|
|
1343
1359
|
return;
|
|
@@ -1345,9 +1361,9 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1345
1361
|
// Start by storing the callbacks so that any subsequent modifications make use of them
|
|
1346
1362
|
this.onDeserialize = onDeserialize;
|
|
1347
1363
|
// Trigger the async prepare work across all values in the collection
|
|
1348
|
-
(
|
|
1349
|
-
onDeserialize
|
|
1350
|
-
}
|
|
1364
|
+
if (this.attached) {
|
|
1365
|
+
this.map(onDeserialize);
|
|
1366
|
+
}
|
|
1351
1367
|
}
|
|
1352
1368
|
/**
|
|
1353
1369
|
* Returns new interval after rebasing. If undefined, the interval was
|
|
@@ -1368,7 +1384,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1368
1384
|
const { intervalType, properties } = serializedInterval;
|
|
1369
1385
|
const { start: startRebased, end: endRebased } = (_a = this.localSeqToRebasedInterval.get(localSeq)) !== null && _a !== void 0 ? _a : this.computeRebasedPositions(localSeq);
|
|
1370
1386
|
const intervalId = properties === null || properties === void 0 ? void 0 : properties[reservedIntervalIdKey];
|
|
1371
|
-
const localInterval = (_b = this.localCollection) === null || _b === void 0 ? void 0 : _b.getIntervalById(intervalId);
|
|
1387
|
+
const localInterval = (_b = this.localCollection) === null || _b === void 0 ? void 0 : _b.idIntervalIndex.getIntervalById(intervalId);
|
|
1372
1388
|
const rebased = {
|
|
1373
1389
|
start: startRebased,
|
|
1374
1390
|
end: endRebased,
|
|
@@ -1521,7 +1537,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1521
1537
|
throw new telemetry_utils_1.LoggingError("attach must be called prior to deleting intervals");
|
|
1522
1538
|
}
|
|
1523
1539
|
const id = this.localCollection.ensureSerializedId(serializedInterval);
|
|
1524
|
-
const interval = this.localCollection.getIntervalById(id);
|
|
1540
|
+
const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1525
1541
|
if (interval) {
|
|
1526
1542
|
this.deleteExistingInterval(interval, local, op);
|
|
1527
1543
|
}
|
|
@@ -1582,7 +1598,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1582
1598
|
if (!this.localCollection) {
|
|
1583
1599
|
return;
|
|
1584
1600
|
}
|
|
1585
|
-
this.localCollection.gatherIterationResults(results, iteratesForward, start, end);
|
|
1601
|
+
this.localCollection.overlappingIntervalsIndex.gatherIterationResults(results, iteratesForward, start, end);
|
|
1586
1602
|
}
|
|
1587
1603
|
/**
|
|
1588
1604
|
* @returns an array of all intervals in this collection that overlap with the interval
|
|
@@ -1592,7 +1608,7 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1592
1608
|
if (!this.localCollection) {
|
|
1593
1609
|
throw new telemetry_utils_1.LoggingError("attachSequence must be called");
|
|
1594
1610
|
}
|
|
1595
|
-
return this.localCollection.findOverlappingIntervals(startPosition, endPosition);
|
|
1611
|
+
return this.localCollection.overlappingIntervalsIndex.findOverlappingIntervals(startPosition, endPosition);
|
|
1596
1612
|
}
|
|
1597
1613
|
/**
|
|
1598
1614
|
* Applies a function to each interval in this collection.
|
|
@@ -1601,19 +1617,21 @@ class IntervalCollection extends common_utils_1.TypedEventEmitter {
|
|
|
1601
1617
|
if (!this.localCollection) {
|
|
1602
1618
|
throw new telemetry_utils_1.LoggingError("attachSequence must be called");
|
|
1603
1619
|
}
|
|
1604
|
-
this.localCollection.
|
|
1620
|
+
for (const interval of this.localCollection.idIntervalIndex) {
|
|
1621
|
+
fn(interval);
|
|
1622
|
+
}
|
|
1605
1623
|
}
|
|
1606
1624
|
previousInterval(pos) {
|
|
1607
1625
|
if (!this.localCollection) {
|
|
1608
1626
|
throw new telemetry_utils_1.LoggingError("attachSequence must be called");
|
|
1609
1627
|
}
|
|
1610
|
-
return this.localCollection.previousInterval(pos);
|
|
1628
|
+
return this.localCollection.endIntervalIndex.previousInterval(pos);
|
|
1611
1629
|
}
|
|
1612
1630
|
nextInterval(pos) {
|
|
1613
1631
|
if (!this.localCollection) {
|
|
1614
1632
|
throw new telemetry_utils_1.LoggingError("attachSequence must be called");
|
|
1615
1633
|
}
|
|
1616
|
-
return this.localCollection.nextInterval(pos);
|
|
1634
|
+
return this.localCollection.endIntervalIndex.nextInterval(pos);
|
|
1617
1635
|
}
|
|
1618
1636
|
}
|
|
1619
1637
|
exports.IntervalCollection = IntervalCollection;
|