@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
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/sequence";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.4.1
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.4.2.1";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/sequence";
|
|
11
|
-
exports.pkgVersion = "2.0.0-internal.4.1
|
|
11
|
+
exports.pkgVersion = "2.0.0-internal.4.2.1";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/sequence\";\nexport const pkgVersion = \"2.0.0-internal.4.1
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/sequence\";\nexport const pkgVersion = \"2.0.0-internal.4.2.1\";\n"]}
|
|
@@ -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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"}
|
|
@@ -507,82 +507,23 @@ export function createSequenceInterval(label, start, end, client, intervalType,
|
|
|
507
507
|
const ival = new SequenceInterval(client, startLref, endLref, intervalType, rangeProp);
|
|
508
508
|
return ival;
|
|
509
509
|
}
|
|
510
|
-
export function
|
|
511
|
-
a.addPropertySet(b.properties);
|
|
512
|
-
return a;
|
|
513
|
-
}
|
|
514
|
-
export function createIntervalIndex(conflict) {
|
|
510
|
+
export function createIntervalIndex() {
|
|
515
511
|
const helpers = {
|
|
516
512
|
compareEnds: compareIntervalEnds,
|
|
517
513
|
create: createInterval,
|
|
518
514
|
};
|
|
519
515
|
const lc = new LocalIntervalCollection(undefined, "", helpers);
|
|
520
|
-
if (conflict) {
|
|
521
|
-
lc.addConflictResolver(conflict);
|
|
522
|
-
}
|
|
523
|
-
else {
|
|
524
|
-
lc.addConflictResolver(defaultIntervalConflictResolver);
|
|
525
|
-
}
|
|
526
516
|
return lc;
|
|
527
517
|
}
|
|
528
|
-
|
|
529
|
-
constructor(client,
|
|
530
|
-
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
531
|
-
onPositionChange) {
|
|
518
|
+
class OverlappingIntervalsIndex {
|
|
519
|
+
constructor(client, helpers) {
|
|
532
520
|
this.client = client;
|
|
533
|
-
this.label = label;
|
|
534
521
|
this.helpers = helpers;
|
|
535
|
-
this.onPositionChange = onPositionChange;
|
|
536
522
|
this.intervalTree = new IntervalTree();
|
|
537
|
-
this.intervalIdMap = new Map();
|
|
538
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
539
|
-
this.endIntervalTree = new RedBlackTree(helpers.compareEnds);
|
|
540
|
-
}
|
|
541
|
-
addConflictResolver(conflictResolver) {
|
|
542
|
-
this.conflictResolver = conflictResolver;
|
|
543
|
-
this.endConflictResolver = (key, currentKey) => {
|
|
544
|
-
const ival = conflictResolver(key, currentKey);
|
|
545
|
-
return {
|
|
546
|
-
data: ival,
|
|
547
|
-
key: ival,
|
|
548
|
-
};
|
|
549
|
-
};
|
|
550
523
|
}
|
|
551
524
|
map(fn) {
|
|
552
525
|
this.intervalTree.map(fn);
|
|
553
526
|
}
|
|
554
|
-
createLegacyId(start, end) {
|
|
555
|
-
// Create a non-unique ID based on start and end to be used on intervals that come from legacy clients
|
|
556
|
-
// without ID's.
|
|
557
|
-
return `${LocalIntervalCollection.legacyIdPrefix}${start}-${end}`;
|
|
558
|
-
}
|
|
559
|
-
/**
|
|
560
|
-
* Validates that a serialized interval has the ID property. Creates an ID
|
|
561
|
-
* if one does not already exist
|
|
562
|
-
*
|
|
563
|
-
* @param serializedInterval - The interval to be checked
|
|
564
|
-
* @returns The interval's existing or newly created id
|
|
565
|
-
*/
|
|
566
|
-
ensureSerializedId(serializedInterval) {
|
|
567
|
-
var _a;
|
|
568
|
-
let id = (_a = serializedInterval.properties) === null || _a === void 0 ? void 0 : _a[reservedIntervalIdKey];
|
|
569
|
-
if (id === undefined) {
|
|
570
|
-
// An interval came over the wire without an ID, so create a non-unique one based on start/end.
|
|
571
|
-
// This will allow all clients to refer to this interval consistently.
|
|
572
|
-
id = this.createLegacyId(serializedInterval.start, serializedInterval.end);
|
|
573
|
-
const newProps = {
|
|
574
|
-
[reservedIntervalIdKey]: id,
|
|
575
|
-
};
|
|
576
|
-
serializedInterval.properties = addProperties(serializedInterval.properties, newProps);
|
|
577
|
-
}
|
|
578
|
-
// Make the ID immutable for safety's sake.
|
|
579
|
-
Object.defineProperty(serializedInterval.properties, reservedIntervalIdKey, {
|
|
580
|
-
configurable: false,
|
|
581
|
-
enumerable: true,
|
|
582
|
-
writable: false,
|
|
583
|
-
});
|
|
584
|
-
return id;
|
|
585
|
-
}
|
|
586
527
|
mapUntil(fn) {
|
|
587
528
|
this.intervalTree.mapUntil(fn);
|
|
588
529
|
}
|
|
@@ -659,6 +600,47 @@ export class LocalIntervalCollection {
|
|
|
659
600
|
const overlappingIntervalNodes = this.intervalTree.match(transientInterval);
|
|
660
601
|
return overlappingIntervalNodes.map((node) => node.key);
|
|
661
602
|
}
|
|
603
|
+
remove(interval) {
|
|
604
|
+
this.intervalTree.removeExisting(interval);
|
|
605
|
+
}
|
|
606
|
+
add(interval) {
|
|
607
|
+
this.intervalTree.put(interval);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
class IdIntervalIndex {
|
|
611
|
+
constructor() {
|
|
612
|
+
this.intervalIdMap = new Map();
|
|
613
|
+
}
|
|
614
|
+
add(interval) {
|
|
615
|
+
const id = interval.getIntervalId();
|
|
616
|
+
assert(id !== undefined, 0x2c0 /* "ID must be created before adding interval to collection" */);
|
|
617
|
+
// Make the ID immutable.
|
|
618
|
+
Object.defineProperty(interval.properties, reservedIntervalIdKey, {
|
|
619
|
+
configurable: false,
|
|
620
|
+
enumerable: true,
|
|
621
|
+
writable: false,
|
|
622
|
+
});
|
|
623
|
+
this.intervalIdMap.set(id, interval);
|
|
624
|
+
}
|
|
625
|
+
remove(interval) {
|
|
626
|
+
const id = interval.getIntervalId();
|
|
627
|
+
assert(id !== undefined, 0x311 /* expected id to exist on interval */);
|
|
628
|
+
this.intervalIdMap.delete(id);
|
|
629
|
+
}
|
|
630
|
+
getIntervalById(id) {
|
|
631
|
+
return this.intervalIdMap.get(id);
|
|
632
|
+
}
|
|
633
|
+
[Symbol.iterator]() {
|
|
634
|
+
return this.intervalIdMap.values();
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
class EndpointIndex {
|
|
638
|
+
constructor(client, helpers) {
|
|
639
|
+
this.client = client;
|
|
640
|
+
this.helpers = helpers;
|
|
641
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
642
|
+
this.endIntervalTree = new RedBlackTree(helpers.compareEnds);
|
|
643
|
+
}
|
|
662
644
|
previousInterval(pos) {
|
|
663
645
|
const transientInterval = this.helpers.create("transient", pos, pos, this.client, IntervalType.Transient);
|
|
664
646
|
const rbNode = this.endIntervalTree.floor(transientInterval);
|
|
@@ -673,21 +655,70 @@ export class LocalIntervalCollection {
|
|
|
673
655
|
return rbNode.data;
|
|
674
656
|
}
|
|
675
657
|
}
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
this.intervalTree.remove(transientInterval);
|
|
679
|
-
this.endIntervalTree.remove(transientInterval);
|
|
680
|
-
return transientInterval;
|
|
658
|
+
add(interval) {
|
|
659
|
+
this.endIntervalTree.put(interval, interval);
|
|
681
660
|
}
|
|
682
|
-
|
|
683
|
-
this.intervalTree.removeExisting(interval);
|
|
661
|
+
remove(interval) {
|
|
684
662
|
this.endIntervalTree.remove(interval);
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
export class LocalIntervalCollection {
|
|
666
|
+
constructor(client, label, helpers,
|
|
667
|
+
/** Callback invoked each time one of the endpoints of an interval slides. */
|
|
668
|
+
onPositionChange) {
|
|
669
|
+
this.client = client;
|
|
670
|
+
this.label = label;
|
|
671
|
+
this.helpers = helpers;
|
|
672
|
+
this.onPositionChange = onPositionChange;
|
|
673
|
+
this.overlappingIntervalsIndex = new OverlappingIntervalsIndex(client, helpers);
|
|
674
|
+
this.idIntervalIndex = new IdIntervalIndex();
|
|
675
|
+
this.endIntervalIndex = new EndpointIndex(client, helpers);
|
|
676
|
+
this.indexes = [
|
|
677
|
+
this.overlappingIntervalsIndex,
|
|
678
|
+
this.idIntervalIndex,
|
|
679
|
+
this.endIntervalIndex,
|
|
680
|
+
];
|
|
681
|
+
}
|
|
682
|
+
createLegacyId(start, end) {
|
|
683
|
+
// Create a non-unique ID based on start and end to be used on intervals that come from legacy clients
|
|
684
|
+
// without ID's.
|
|
685
|
+
return `${LocalIntervalCollection.legacyIdPrefix}${start}-${end}`;
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* Validates that a serialized interval has the ID property. Creates an ID
|
|
689
|
+
* if one does not already exist
|
|
690
|
+
*
|
|
691
|
+
* @param serializedInterval - The interval to be checked
|
|
692
|
+
* @returns The interval's existing or newly created id
|
|
693
|
+
*/
|
|
694
|
+
ensureSerializedId(serializedInterval) {
|
|
695
|
+
var _a;
|
|
696
|
+
let id = (_a = serializedInterval.properties) === null || _a === void 0 ? void 0 : _a[reservedIntervalIdKey];
|
|
697
|
+
if (id === undefined) {
|
|
698
|
+
// Back-compat: 0.39 and earlier did not have IDs on intervals. If an interval from such a client
|
|
699
|
+
// comes over the wire, create a non-unique one based on start/end.
|
|
700
|
+
// This will allow all clients to refer to this interval consistently.
|
|
701
|
+
id = this.createLegacyId(serializedInterval.start, serializedInterval.end);
|
|
702
|
+
const newProps = {
|
|
703
|
+
[reservedIntervalIdKey]: id,
|
|
704
|
+
};
|
|
705
|
+
serializedInterval.properties = addProperties(serializedInterval.properties, newProps);
|
|
706
|
+
}
|
|
707
|
+
// Make the ID immutable for safety's sake.
|
|
708
|
+
Object.defineProperty(serializedInterval.properties, reservedIntervalIdKey, {
|
|
709
|
+
configurable: false,
|
|
710
|
+
enumerable: true,
|
|
711
|
+
writable: false,
|
|
712
|
+
});
|
|
713
|
+
return id;
|
|
714
|
+
}
|
|
715
|
+
removeIntervalFromIndexes(interval) {
|
|
716
|
+
for (const index of this.indexes) {
|
|
717
|
+
index.remove(interval);
|
|
718
|
+
}
|
|
688
719
|
}
|
|
689
720
|
removeExistingInterval(interval) {
|
|
690
|
-
this.
|
|
721
|
+
this.removeIntervalFromIndexes(interval);
|
|
691
722
|
this.removeIntervalListeners(interval);
|
|
692
723
|
}
|
|
693
724
|
createInterval(start, end, intervalType, op) {
|
|
@@ -715,27 +746,16 @@ export class LocalIntervalCollection {
|
|
|
715
746
|
interval.end.addProperties({ interval });
|
|
716
747
|
}
|
|
717
748
|
}
|
|
718
|
-
|
|
719
|
-
const
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
Object.defineProperty(interval.properties, reservedIntervalIdKey, {
|
|
723
|
-
configurable: false,
|
|
724
|
-
enumerable: true,
|
|
725
|
-
writable: false,
|
|
726
|
-
});
|
|
727
|
-
this.intervalTree.put(interval, this.conflictResolver);
|
|
728
|
-
this.endIntervalTree.put(interval, interval, this.endConflictResolver);
|
|
729
|
-
this.intervalIdMap.set(id, interval);
|
|
749
|
+
addIntervalToIndexes(interval) {
|
|
750
|
+
for (const index of this.indexes) {
|
|
751
|
+
index.add(interval);
|
|
752
|
+
}
|
|
730
753
|
}
|
|
731
754
|
add(interval) {
|
|
732
755
|
this.linkEndpointsToInterval(interval);
|
|
733
|
-
this.
|
|
756
|
+
this.addIntervalToIndexes(interval);
|
|
734
757
|
this.addIntervalListeners(interval);
|
|
735
758
|
}
|
|
736
|
-
getIntervalById(id) {
|
|
737
|
-
return this.intervalIdMap.get(id);
|
|
738
|
-
}
|
|
739
759
|
changeInterval(interval, start, end, op, localSeq) {
|
|
740
760
|
const newInterval = interval.modify(this.label, start, end, op, localSeq);
|
|
741
761
|
if (newInterval) {
|
|
@@ -745,10 +765,9 @@ export class LocalIntervalCollection {
|
|
|
745
765
|
return newInterval;
|
|
746
766
|
}
|
|
747
767
|
serialize() {
|
|
748
|
-
const intervals = this.intervalTree.intervals.keys();
|
|
749
768
|
return {
|
|
750
769
|
label: this.label,
|
|
751
|
-
intervals:
|
|
770
|
+
intervals: Array.from(this.idIntervalIndex, (interval) => compressInterval(interval.serialize())),
|
|
752
771
|
version: 2,
|
|
753
772
|
};
|
|
754
773
|
}
|
|
@@ -773,14 +792,14 @@ export class LocalIntervalCollection {
|
|
|
773
792
|
previousInterval = interval.clone();
|
|
774
793
|
previousInterval.start = cloneRef(previousInterval.start);
|
|
775
794
|
previousInterval.end = cloneRef(previousInterval.end);
|
|
776
|
-
this.
|
|
795
|
+
this.removeIntervalFromIndexes(interval);
|
|
777
796
|
}
|
|
778
797
|
}, () => {
|
|
779
798
|
var _a;
|
|
780
799
|
assert(previousInterval !== undefined, 0x3fa /* Invalid interleaving of before/after slide */);
|
|
781
800
|
pendingChanges--;
|
|
782
801
|
if (pendingChanges === 0) {
|
|
783
|
-
this.
|
|
802
|
+
this.addIntervalToIndexes(interval);
|
|
784
803
|
(_a = this.onPositionChange) === null || _a === void 0 ? void 0 : _a.call(this, interval, previousInterval);
|
|
785
804
|
previousInterval = undefined;
|
|
786
805
|
}
|
|
@@ -1055,7 +1074,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1055
1074
|
if (!this.localCollection) {
|
|
1056
1075
|
throw new LoggingError("attach must be called before accessing intervals");
|
|
1057
1076
|
}
|
|
1058
|
-
return this.localCollection.getIntervalById(id);
|
|
1077
|
+
return this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1059
1078
|
}
|
|
1060
1079
|
/**
|
|
1061
1080
|
* Creates a new interval and add it to the collection.
|
|
@@ -1122,7 +1141,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1122
1141
|
if (!this.localCollection) {
|
|
1123
1142
|
throw new LoggingError("Attach must be called before accessing intervals");
|
|
1124
1143
|
}
|
|
1125
|
-
const interval = this.localCollection.getIntervalById(id);
|
|
1144
|
+
const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1126
1145
|
if (interval) {
|
|
1127
1146
|
this.deleteExistingInterval(interval, true, undefined);
|
|
1128
1147
|
}
|
|
@@ -1316,14 +1335,12 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1316
1335
|
*
|
|
1317
1336
|
* As such, the conflict resolver is never invoked and unnecessary. This API will be removed in an upcoming release.
|
|
1318
1337
|
*/
|
|
1319
|
-
addConflictResolver(
|
|
1338
|
+
addConflictResolver(_) {
|
|
1320
1339
|
if (!this.localCollection) {
|
|
1321
1340
|
throw new LoggingError("attachSequence must be called");
|
|
1322
1341
|
}
|
|
1323
|
-
this.localCollection.addConflictResolver(conflictResolver);
|
|
1324
1342
|
}
|
|
1325
1343
|
attachDeserializer(onDeserialize) {
|
|
1326
|
-
var _a;
|
|
1327
1344
|
// If no deserializer is specified can skip all processing work
|
|
1328
1345
|
if (!onDeserialize) {
|
|
1329
1346
|
return;
|
|
@@ -1331,9 +1348,9 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1331
1348
|
// Start by storing the callbacks so that any subsequent modifications make use of them
|
|
1332
1349
|
this.onDeserialize = onDeserialize;
|
|
1333
1350
|
// Trigger the async prepare work across all values in the collection
|
|
1334
|
-
(
|
|
1335
|
-
onDeserialize
|
|
1336
|
-
}
|
|
1351
|
+
if (this.attached) {
|
|
1352
|
+
this.map(onDeserialize);
|
|
1353
|
+
}
|
|
1337
1354
|
}
|
|
1338
1355
|
/**
|
|
1339
1356
|
* Returns new interval after rebasing. If undefined, the interval was
|
|
@@ -1354,7 +1371,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1354
1371
|
const { intervalType, properties } = serializedInterval;
|
|
1355
1372
|
const { start: startRebased, end: endRebased } = (_a = this.localSeqToRebasedInterval.get(localSeq)) !== null && _a !== void 0 ? _a : this.computeRebasedPositions(localSeq);
|
|
1356
1373
|
const intervalId = properties === null || properties === void 0 ? void 0 : properties[reservedIntervalIdKey];
|
|
1357
|
-
const localInterval = (_b = this.localCollection) === null || _b === void 0 ? void 0 : _b.getIntervalById(intervalId);
|
|
1374
|
+
const localInterval = (_b = this.localCollection) === null || _b === void 0 ? void 0 : _b.idIntervalIndex.getIntervalById(intervalId);
|
|
1358
1375
|
const rebased = {
|
|
1359
1376
|
start: startRebased,
|
|
1360
1377
|
end: endRebased,
|
|
@@ -1507,7 +1524,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1507
1524
|
throw new LoggingError("attach must be called prior to deleting intervals");
|
|
1508
1525
|
}
|
|
1509
1526
|
const id = this.localCollection.ensureSerializedId(serializedInterval);
|
|
1510
|
-
const interval = this.localCollection.getIntervalById(id);
|
|
1527
|
+
const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
|
|
1511
1528
|
if (interval) {
|
|
1512
1529
|
this.deleteExistingInterval(interval, local, op);
|
|
1513
1530
|
}
|
|
@@ -1568,7 +1585,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1568
1585
|
if (!this.localCollection) {
|
|
1569
1586
|
return;
|
|
1570
1587
|
}
|
|
1571
|
-
this.localCollection.gatherIterationResults(results, iteratesForward, start, end);
|
|
1588
|
+
this.localCollection.overlappingIntervalsIndex.gatherIterationResults(results, iteratesForward, start, end);
|
|
1572
1589
|
}
|
|
1573
1590
|
/**
|
|
1574
1591
|
* @returns an array of all intervals in this collection that overlap with the interval
|
|
@@ -1578,7 +1595,7 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1578
1595
|
if (!this.localCollection) {
|
|
1579
1596
|
throw new LoggingError("attachSequence must be called");
|
|
1580
1597
|
}
|
|
1581
|
-
return this.localCollection.findOverlappingIntervals(startPosition, endPosition);
|
|
1598
|
+
return this.localCollection.overlappingIntervalsIndex.findOverlappingIntervals(startPosition, endPosition);
|
|
1582
1599
|
}
|
|
1583
1600
|
/**
|
|
1584
1601
|
* Applies a function to each interval in this collection.
|
|
@@ -1587,19 +1604,21 @@ export class IntervalCollection extends TypedEventEmitter {
|
|
|
1587
1604
|
if (!this.localCollection) {
|
|
1588
1605
|
throw new LoggingError("attachSequence must be called");
|
|
1589
1606
|
}
|
|
1590
|
-
this.localCollection.
|
|
1607
|
+
for (const interval of this.localCollection.idIntervalIndex) {
|
|
1608
|
+
fn(interval);
|
|
1609
|
+
}
|
|
1591
1610
|
}
|
|
1592
1611
|
previousInterval(pos) {
|
|
1593
1612
|
if (!this.localCollection) {
|
|
1594
1613
|
throw new LoggingError("attachSequence must be called");
|
|
1595
1614
|
}
|
|
1596
|
-
return this.localCollection.previousInterval(pos);
|
|
1615
|
+
return this.localCollection.endIntervalIndex.previousInterval(pos);
|
|
1597
1616
|
}
|
|
1598
1617
|
nextInterval(pos) {
|
|
1599
1618
|
if (!this.localCollection) {
|
|
1600
1619
|
throw new LoggingError("attachSequence must be called");
|
|
1601
1620
|
}
|
|
1602
|
-
return this.localCollection.nextInterval(pos);
|
|
1621
|
+
return this.localCollection.endIntervalIndex.nextInterval(pos);
|
|
1603
1622
|
}
|
|
1604
1623
|
}
|
|
1605
1624
|
/**
|