@fluidframework/sequence 2.0.0-dev.7.4.0.217212 → 2.0.0-dev.7.4.0.221926
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 +57 -0
- package/api-extractor.json +0 -3
- package/api-report/sequence.api.md +33 -25
- package/dist/intervalCollection.d.ts +31 -6
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +45 -43
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +6 -7
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +2 -2
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +1 -1
- package/dist/intervals/sequenceInterval.js +1 -1
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1188 -106
- package/dist/sequence-beta.d.ts +44 -0
- package/dist/sequence-public.d.ts +44 -0
- package/dist/sequence-untrimmed.d.ts +40 -26
- package/dist/sequence.d.ts +2 -2
- package/dist/sequence.js +1 -1
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -4
- package/dist/sequenceDeltaEvent.js +3 -3
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +1 -1
- package/dist/sequenceFactory.js +1 -1
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +1 -1
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedString.d.ts +3 -3
- package/dist/sharedString.js +1 -1
- package/dist/sharedString.js.map +1 -1
- package/lib/defaultMap.js +22 -18
- package/lib/defaultMap.js.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.js +45 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +31 -6
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +169 -154
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js +17 -12
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.js +13 -8
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.js +8 -4
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/index.js +19 -6
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -1
- package/lib/intervalIndex/intervalIndex.js +2 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndexUtils.js +8 -4
- package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js +15 -10
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +14 -10
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js +17 -12
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.js +9 -4
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.js +18 -3
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/interval.js +18 -13
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +6 -7
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +20 -15
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +1 -1
- package/lib/intervals/sequenceInterval.js +66 -60
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.js +9 -4
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +5 -2
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.js +69 -59
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1188 -106
- package/lib/sequence-beta.d.ts +44 -0
- package/lib/sequence-public.d.ts +44 -0
- package/lib/sequence-untrimmed.d.ts +40 -26
- package/lib/sequence.d.ts +2 -2
- package/lib/sequence.js +45 -40
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -4
- package/lib/sequenceDeltaEvent.js +16 -10
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +1 -1
- package/lib/sequenceFactory.js +14 -10
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +1 -1
- package/lib/sharedIntervalCollection.js +18 -13
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.js +11 -6
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +3 -3
- package/lib/sharedString.js +22 -17
- package/lib/sharedString.js.map +1 -1
- package/package.json +18 -17
- package/sequence.test-files.tar +0 -0
- package/src/intervalCollection.ts +88 -55
- package/src/intervalIndex/intervalIndex.ts +1 -1
- package/src/intervals/intervalUtils.ts +6 -7
- package/src/intervals/sequenceInterval.ts +1 -1
- package/src/packageVersion.ts +1 -1
- package/src/sequence.ts +2 -2
- package/src/sequenceDeltaEvent.ts +4 -4
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +1 -1
- package/src/sharedString.ts +3 -3
package/lib/sequence-beta.d.ts
CHANGED
|
@@ -11,7 +11,51 @@
|
|
|
11
11
|
* @packageDocumentation
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
import { BaseSegment } from '@fluidframework/merge-tree';
|
|
15
|
+
import { Client } from '@fluidframework/merge-tree';
|
|
16
|
+
import { Deferred } from '@fluidframework/core-utils';
|
|
17
|
+
import { IChannelAttributes } from '@fluidframework/datastore-definitions';
|
|
18
|
+
import { IChannelFactory } from '@fluidframework/datastore-definitions';
|
|
19
|
+
import { IChannelServices } from '@fluidframework/datastore-definitions';
|
|
20
|
+
import { IChannelStorageService } from '@fluidframework/datastore-definitions';
|
|
21
|
+
import { ICombiningOp } from '@fluidframework/merge-tree';
|
|
22
|
+
import { IEvent } from '@fluidframework/core-interfaces';
|
|
23
|
+
import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
|
|
24
|
+
import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
|
|
25
|
+
import { IFluidSerializer } from '@fluidframework/shared-object-base';
|
|
26
|
+
import { IJSONSegment } from '@fluidframework/merge-tree';
|
|
27
|
+
import { IMergeTreeDeltaCallbackArgs } from '@fluidframework/merge-tree';
|
|
28
|
+
import { IMergeTreeDeltaOpArgs } from '@fluidframework/merge-tree';
|
|
29
|
+
import { IMergeTreeGroupMsg } from '@fluidframework/merge-tree';
|
|
30
|
+
import { IMergeTreeInsertMsg } from '@fluidframework/merge-tree';
|
|
31
|
+
import { IMergeTreeMaintenanceCallbackArgs } from '@fluidframework/merge-tree';
|
|
32
|
+
import { IMergeTreeOp } from '@fluidframework/merge-tree';
|
|
33
|
+
import { IMergeTreeRemoveMsg } from '@fluidframework/merge-tree';
|
|
34
|
+
import { IRelativePosition } from '@fluidframework/merge-tree';
|
|
35
|
+
import { ISegment } from '@fluidframework/merge-tree';
|
|
36
|
+
import { ISegmentAction } from '@fluidframework/merge-tree';
|
|
14
37
|
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
38
|
+
import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
|
|
39
|
+
import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
40
|
+
import { ITelemetryContext } from '@fluidframework/runtime-definitions';
|
|
41
|
+
import { LocalReferencePosition } from '@fluidframework/merge-tree';
|
|
42
|
+
import { Marker } from '@fluidframework/merge-tree';
|
|
43
|
+
import { MergeTreeDeltaOperationType } from '@fluidframework/merge-tree';
|
|
44
|
+
import { MergeTreeDeltaOperationTypes } from '@fluidframework/merge-tree';
|
|
45
|
+
import { MergeTreeDeltaRevertible } from '@fluidframework/merge-tree';
|
|
46
|
+
import { MergeTreeMaintenanceType } from '@fluidframework/merge-tree';
|
|
47
|
+
import { MergeTreeRevertibleDriver } from '@fluidframework/merge-tree';
|
|
48
|
+
import { PropertiesManager } from '@fluidframework/merge-tree';
|
|
49
|
+
import { PropertySet } from '@fluidframework/merge-tree';
|
|
50
|
+
import { RangeStackMap } from '@fluidframework/merge-tree';
|
|
51
|
+
import { ReferencePosition } from '@fluidframework/merge-tree';
|
|
52
|
+
import { ReferenceType } from '@fluidframework/merge-tree';
|
|
53
|
+
import { Serializable } from '@fluidframework/datastore-definitions';
|
|
54
|
+
import { SharedObject } from '@fluidframework/shared-object-base';
|
|
55
|
+
import { SlidingPreference } from '@fluidframework/merge-tree';
|
|
56
|
+
import { SummarySerializer } from '@fluidframework/shared-object-base';
|
|
57
|
+
import { TextSegment } from '@fluidframework/merge-tree';
|
|
58
|
+
import { TypedEventEmitter } from '@fluid-internal/client-utils';
|
|
15
59
|
|
|
16
60
|
/* Excluded from this release type: appendAddIntervalToRevertibles */
|
|
17
61
|
|
package/lib/sequence-public.d.ts
CHANGED
|
@@ -11,7 +11,51 @@
|
|
|
11
11
|
* @packageDocumentation
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
import { BaseSegment } from '@fluidframework/merge-tree';
|
|
15
|
+
import { Client } from '@fluidframework/merge-tree';
|
|
16
|
+
import { Deferred } from '@fluidframework/core-utils';
|
|
17
|
+
import { IChannelAttributes } from '@fluidframework/datastore-definitions';
|
|
18
|
+
import { IChannelFactory } from '@fluidframework/datastore-definitions';
|
|
19
|
+
import { IChannelServices } from '@fluidframework/datastore-definitions';
|
|
20
|
+
import { IChannelStorageService } from '@fluidframework/datastore-definitions';
|
|
21
|
+
import { ICombiningOp } from '@fluidframework/merge-tree';
|
|
22
|
+
import { IEvent } from '@fluidframework/core-interfaces';
|
|
23
|
+
import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
|
|
24
|
+
import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
|
|
25
|
+
import { IFluidSerializer } from '@fluidframework/shared-object-base';
|
|
26
|
+
import { IJSONSegment } from '@fluidframework/merge-tree';
|
|
27
|
+
import { IMergeTreeDeltaCallbackArgs } from '@fluidframework/merge-tree';
|
|
28
|
+
import { IMergeTreeDeltaOpArgs } from '@fluidframework/merge-tree';
|
|
29
|
+
import { IMergeTreeGroupMsg } from '@fluidframework/merge-tree';
|
|
30
|
+
import { IMergeTreeInsertMsg } from '@fluidframework/merge-tree';
|
|
31
|
+
import { IMergeTreeMaintenanceCallbackArgs } from '@fluidframework/merge-tree';
|
|
32
|
+
import { IMergeTreeOp } from '@fluidframework/merge-tree';
|
|
33
|
+
import { IMergeTreeRemoveMsg } from '@fluidframework/merge-tree';
|
|
34
|
+
import { IRelativePosition } from '@fluidframework/merge-tree';
|
|
35
|
+
import { ISegment } from '@fluidframework/merge-tree';
|
|
36
|
+
import { ISegmentAction } from '@fluidframework/merge-tree';
|
|
14
37
|
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
38
|
+
import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
|
|
39
|
+
import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
40
|
+
import { ITelemetryContext } from '@fluidframework/runtime-definitions';
|
|
41
|
+
import { LocalReferencePosition } from '@fluidframework/merge-tree';
|
|
42
|
+
import { Marker } from '@fluidframework/merge-tree';
|
|
43
|
+
import { MergeTreeDeltaOperationType } from '@fluidframework/merge-tree';
|
|
44
|
+
import { MergeTreeDeltaOperationTypes } from '@fluidframework/merge-tree';
|
|
45
|
+
import { MergeTreeDeltaRevertible } from '@fluidframework/merge-tree';
|
|
46
|
+
import { MergeTreeMaintenanceType } from '@fluidframework/merge-tree';
|
|
47
|
+
import { MergeTreeRevertibleDriver } from '@fluidframework/merge-tree';
|
|
48
|
+
import { PropertiesManager } from '@fluidframework/merge-tree';
|
|
49
|
+
import { PropertySet } from '@fluidframework/merge-tree';
|
|
50
|
+
import { RangeStackMap } from '@fluidframework/merge-tree';
|
|
51
|
+
import { ReferencePosition } from '@fluidframework/merge-tree';
|
|
52
|
+
import { ReferenceType } from '@fluidframework/merge-tree';
|
|
53
|
+
import { Serializable } from '@fluidframework/datastore-definitions';
|
|
54
|
+
import { SharedObject } from '@fluidframework/shared-object-base';
|
|
55
|
+
import { SlidingPreference } from '@fluidframework/merge-tree';
|
|
56
|
+
import { SummarySerializer } from '@fluidframework/shared-object-base';
|
|
57
|
+
import { TextSegment } from '@fluidframework/merge-tree';
|
|
58
|
+
import { TypedEventEmitter } from '@fluid-internal/client-utils';
|
|
15
59
|
|
|
16
60
|
/* Excluded from this release type: appendAddIntervalToRevertibles */
|
|
17
61
|
|
|
@@ -119,7 +119,7 @@ export declare function createOverlappingSequenceIntervalsIndex(sharedString: Sh
|
|
|
119
119
|
export declare function createStartpointInRangeIndex(sharedString: SharedString): IStartpointInRangeIndex<SequenceInterval>;
|
|
120
120
|
|
|
121
121
|
/**
|
|
122
|
-
* @
|
|
122
|
+
* @alpha
|
|
123
123
|
*/
|
|
124
124
|
export declare type DeserializeCallback = (properties: PropertySet) => void;
|
|
125
125
|
|
|
@@ -188,7 +188,7 @@ export declare interface IIdIntervalIndex<TInterval extends ISerializableInterva
|
|
|
188
188
|
|
|
189
189
|
/**
|
|
190
190
|
* Basic interval abstraction
|
|
191
|
-
* @
|
|
191
|
+
* @alpha
|
|
192
192
|
*/
|
|
193
193
|
export declare interface IInterval {
|
|
194
194
|
/**
|
|
@@ -235,7 +235,7 @@ export declare interface IInterval {
|
|
|
235
235
|
/**
|
|
236
236
|
* Collection of intervals that supports addition, modification, removal, and efficient spatial querying.
|
|
237
237
|
* Changes to this collection will be incur updates on collaborating clients (i.e. they are not local-only).
|
|
238
|
-
* @
|
|
238
|
+
* @alpha
|
|
239
239
|
*/
|
|
240
240
|
export declare interface IIntervalCollection<TInterval extends ISerializableInterval> extends TypedEventEmitter<IIntervalCollectionEvent<TInterval>> {
|
|
241
241
|
readonly attached: boolean;
|
|
@@ -357,6 +357,7 @@ export declare interface IIntervalCollection<TInterval extends ISerializableInte
|
|
|
357
357
|
removeIntervalById(id: string): TInterval | undefined;
|
|
358
358
|
/**
|
|
359
359
|
* Changes the properties on an existing interval.
|
|
360
|
+
* @deprecated - call change with the id and and object containing the new properties
|
|
360
361
|
* @param id - Id of the interval whose properties should be changed
|
|
361
362
|
* @param props - Property set to apply to the interval. Shallow merging is used between any existing properties
|
|
362
363
|
* and `prop`, i.e. the interval will end up with a property object equivalent to `{ ...oldProps, ...props }`.
|
|
@@ -364,12 +365,26 @@ export declare interface IIntervalCollection<TInterval extends ISerializableInte
|
|
|
364
365
|
changeProperties(id: string, props: PropertySet): any;
|
|
365
366
|
/**
|
|
366
367
|
* Changes the endpoints of an existing interval.
|
|
368
|
+
* @deprecated - call change with the start and end parameters encapsulated in an object
|
|
367
369
|
* @param id - Id of the interval to change
|
|
368
370
|
* @param start - New start value. To leave the endpoint unchanged, pass the current value.
|
|
369
371
|
* @param end - New end value. To leave the endpoint unchanged, pass the current value.
|
|
370
372
|
* @returns the interval that was changed, if it existed in the collection.
|
|
371
373
|
*/
|
|
372
374
|
change(id: string, start: SequencePlace, end: SequencePlace): TInterval | undefined;
|
|
375
|
+
/**
|
|
376
|
+
* Changes the endpoints, properties, or both of an existing interval.
|
|
377
|
+
* @param id - Id of the Interval to change
|
|
378
|
+
* @returns the interval that was changed, if it existed in the collection.
|
|
379
|
+
* Pass the desired new start position, end position, and/or properties in an object. Start and end positions must be changed
|
|
380
|
+
* simultaneously - they must either both be specified or both undefined. To only change the properties, leave both endpoints
|
|
381
|
+
* undefined. To only change the endpoints, leave the properties undefined.
|
|
382
|
+
*/
|
|
383
|
+
change(id: string, { start, end, props }: {
|
|
384
|
+
start?: SequencePlace;
|
|
385
|
+
end?: SequencePlace;
|
|
386
|
+
props?: PropertySet;
|
|
387
|
+
}): TInterval | undefined;
|
|
373
388
|
attachDeserializer(onDeserialize: DeserializeCallback): void;
|
|
374
389
|
/**
|
|
375
390
|
* @returns an iterator over all intervals in this collection.
|
|
@@ -444,7 +459,7 @@ export declare interface IIntervalCollection<TInterval extends ISerializableInte
|
|
|
444
459
|
|
|
445
460
|
/**
|
|
446
461
|
* Change events emitted by `IntervalCollection`s
|
|
447
|
-
* @
|
|
462
|
+
* @alpha
|
|
448
463
|
*/
|
|
449
464
|
export declare interface IIntervalCollectionEvent<TInterval extends ISerializableInterval> extends IEvent {
|
|
450
465
|
/**
|
|
@@ -522,7 +537,7 @@ export declare interface IMapMessageLocalMetadata {
|
|
|
522
537
|
* A sequence place that does not refer to the special endpoint segments.
|
|
523
538
|
*
|
|
524
539
|
* See {@link SequencePlace} for additional context.
|
|
525
|
-
* @
|
|
540
|
+
* @alpha
|
|
526
541
|
*/
|
|
527
542
|
export declare interface InteriorSequencePlace {
|
|
528
543
|
pos: number;
|
|
@@ -612,7 +627,7 @@ export declare class Interval implements ISerializableInterval {
|
|
|
612
627
|
* - "find all intervals with start endpoint between these two points"
|
|
613
628
|
* - "find all intervals which overlap this range"
|
|
614
629
|
* etc.
|
|
615
|
-
* @
|
|
630
|
+
* @alpha
|
|
616
631
|
*/
|
|
617
632
|
export declare interface IntervalIndex<TInterval extends ISerializableInterval> {
|
|
618
633
|
/**
|
|
@@ -714,7 +729,7 @@ export declare type IntervalRevertible = {
|
|
|
714
729
|
* Note that interval stickiness is currently an experimental feature and must
|
|
715
730
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
716
731
|
*
|
|
717
|
-
* @
|
|
732
|
+
* @alpha
|
|
718
733
|
*/
|
|
719
734
|
export declare const IntervalStickiness: {
|
|
720
735
|
/**
|
|
@@ -743,13 +758,12 @@ export declare const IntervalStickiness: {
|
|
|
743
758
|
*
|
|
744
759
|
* Note that interval stickiness is currently an experimental feature and must
|
|
745
760
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
746
|
-
*
|
|
747
|
-
* @internal
|
|
761
|
+
* @alpha
|
|
748
762
|
*/
|
|
749
763
|
export declare type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
|
|
750
764
|
|
|
751
765
|
/**
|
|
752
|
-
* @
|
|
766
|
+
* @alpha
|
|
753
767
|
*/
|
|
754
768
|
export declare enum IntervalType {
|
|
755
769
|
Simple = 0,
|
|
@@ -788,7 +802,7 @@ export declare interface IOverlappingIntervalsIndex<TInterval extends ISerializa
|
|
|
788
802
|
|
|
789
803
|
/**
|
|
790
804
|
* A range that has changed corresponding to a segment modification.
|
|
791
|
-
* @
|
|
805
|
+
* @alpha
|
|
792
806
|
*/
|
|
793
807
|
export declare interface ISequenceDeltaRange<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
794
808
|
/**
|
|
@@ -823,7 +837,7 @@ export declare interface ISequenceDeltaRange<TOperation extends MergeTreeDeltaOp
|
|
|
823
837
|
}
|
|
824
838
|
|
|
825
839
|
/**
|
|
826
|
-
* @
|
|
840
|
+
* @alpha
|
|
827
841
|
*/
|
|
828
842
|
export declare interface ISerializableInterval extends IInterval {
|
|
829
843
|
/** Serializable bag of properties associated with the interval. */
|
|
@@ -847,7 +861,7 @@ export declare interface ISerializableInterval extends IInterval {
|
|
|
847
861
|
/**
|
|
848
862
|
* Serialized object representation of an interval.
|
|
849
863
|
* This representation is used for ops that create or change intervals.
|
|
850
|
-
* @
|
|
864
|
+
* @alpha
|
|
851
865
|
*/
|
|
852
866
|
export declare interface ISerializedInterval {
|
|
853
867
|
/**
|
|
@@ -875,7 +889,7 @@ export declare interface ISerializedInterval {
|
|
|
875
889
|
}
|
|
876
890
|
|
|
877
891
|
/**
|
|
878
|
-
* @
|
|
892
|
+
* @alpha
|
|
879
893
|
*/
|
|
880
894
|
export declare interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
|
|
881
895
|
getIntervalCollection(label: string): IIntervalCollection<TInterval>;
|
|
@@ -913,7 +927,7 @@ export declare interface ISharedIntervalCollection<TInterval extends ISerializab
|
|
|
913
927
|
* - `event` - Various information on the segments that were modified.
|
|
914
928
|
*
|
|
915
929
|
* - `target` - The sequence itself.
|
|
916
|
-
* @
|
|
930
|
+
* @alpha
|
|
917
931
|
*/
|
|
918
932
|
export declare interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
919
933
|
(event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
@@ -923,7 +937,7 @@ export declare interface ISharedSegmentSequenceEvents extends ISharedObjectEvent
|
|
|
923
937
|
|
|
924
938
|
/**
|
|
925
939
|
* Fluid object interface describing access methods on a SharedString
|
|
926
|
-
* @
|
|
940
|
+
* @alpha
|
|
927
941
|
*/
|
|
928
942
|
export declare interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
929
943
|
/**
|
|
@@ -991,7 +1005,7 @@ export declare function revertSharedStringRevertibles(sharedString: SharedString
|
|
|
991
1005
|
* For group ops, each op will get its own event, and the group op property will be set on the op args.
|
|
992
1006
|
*
|
|
993
1007
|
* Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
|
|
994
|
-
* @
|
|
1008
|
+
* @alpha
|
|
995
1009
|
*/
|
|
996
1010
|
export declare class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
997
1011
|
readonly opArgs: IMergeTreeDeltaOpArgs;
|
|
@@ -1008,7 +1022,7 @@ export declare class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOper
|
|
|
1008
1022
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
1009
1023
|
* point in time at which the operation was applied.
|
|
1010
1024
|
* They will not take into any future modifications performed to the underlying sequence and merge tree.
|
|
1011
|
-
* @
|
|
1025
|
+
* @alpha
|
|
1012
1026
|
*/
|
|
1013
1027
|
export declare abstract class SequenceEvent<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
1014
1028
|
readonly deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>;
|
|
@@ -1063,7 +1077,7 @@ export declare abstract class SequenceEvent<TOperation extends MergeTreeDeltaOpe
|
|
|
1063
1077
|
* `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
|
|
1064
1078
|
* of the interval that are exclusive will have the ability to slide to these
|
|
1065
1079
|
* special endpoint segments.
|
|
1066
|
-
* @
|
|
1080
|
+
* @alpha
|
|
1067
1081
|
*/
|
|
1068
1082
|
export declare class SequenceInterval implements ISerializableInterval {
|
|
1069
1083
|
private readonly client;
|
|
@@ -1197,7 +1211,7 @@ export declare namespace SequenceIntervalIndexes {
|
|
|
1197
1211
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
1198
1212
|
* point in time at which the operation was applied.
|
|
1199
1213
|
* They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
|
|
1200
|
-
* @
|
|
1214
|
+
* @alpha
|
|
1201
1215
|
*/
|
|
1202
1216
|
export declare class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
1203
1217
|
readonly opArgs: IMergeTreeDeltaOpArgs | undefined;
|
|
@@ -1259,7 +1273,7 @@ export declare interface SequenceOptions {
|
|
|
1259
1273
|
* If a SequencePlace is the endpoint of a range (e.g. start/end of an interval or search range),
|
|
1260
1274
|
* the Side value means it is exclusive if it is nearer to the other position and inclusive if it is farther.
|
|
1261
1275
|
* E.g. the start of a range with Side.After is exclusive of the character at the position.
|
|
1262
|
-
* @
|
|
1276
|
+
* @alpha
|
|
1263
1277
|
*/
|
|
1264
1278
|
export declare type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
|
|
1265
1279
|
|
|
@@ -1331,7 +1345,7 @@ export declare class SharedIntervalCollectionFactory implements IChannelFactory
|
|
|
1331
1345
|
}
|
|
1332
1346
|
|
|
1333
1347
|
/**
|
|
1334
|
-
* @
|
|
1348
|
+
* @alpha
|
|
1335
1349
|
*/
|
|
1336
1350
|
export declare abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver {
|
|
1337
1351
|
private readonly dataStoreRuntime;
|
|
@@ -1596,7 +1610,7 @@ export declare class SharedSequence<T> extends SharedSegmentSequence<SubSequence
|
|
|
1596
1610
|
* In addition to text, a Shared String can also contain markers. Markers can be
|
|
1597
1611
|
* used to store metadata at positions within the text, like the details of an
|
|
1598
1612
|
* image or Fluid object that should be rendered with the text.
|
|
1599
|
-
* @
|
|
1613
|
+
* @alpha
|
|
1600
1614
|
*/
|
|
1601
1615
|
export declare class SharedString extends SharedSegmentSequence<SharedStringSegment> implements ISharedString {
|
|
1602
1616
|
id: string;
|
|
@@ -1716,7 +1730,7 @@ export declare class SharedString extends SharedSegmentSequence<SharedStringSegm
|
|
|
1716
1730
|
}
|
|
1717
1731
|
|
|
1718
1732
|
/**
|
|
1719
|
-
* @
|
|
1733
|
+
* @alpha
|
|
1720
1734
|
*/
|
|
1721
1735
|
export declare class SharedStringFactory implements IChannelFactory {
|
|
1722
1736
|
static Type: string;
|
|
@@ -1738,7 +1752,7 @@ export declare class SharedStringFactory implements IChannelFactory {
|
|
|
1738
1752
|
export declare type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
|
|
1739
1753
|
|
|
1740
1754
|
/**
|
|
1741
|
-
* @
|
|
1755
|
+
* @alpha
|
|
1742
1756
|
*/
|
|
1743
1757
|
export declare type SharedStringSegment = TextSegment | Marker;
|
|
1744
1758
|
|
|
@@ -1746,7 +1760,7 @@ export declare type SharedStringSegment = TextSegment | Marker;
|
|
|
1746
1760
|
* Defines a side relative to a character in a sequence.
|
|
1747
1761
|
*
|
|
1748
1762
|
* @remarks See {@link SequencePlace} for additional context on usage.
|
|
1749
|
-
* @
|
|
1763
|
+
* @alpha
|
|
1750
1764
|
*/
|
|
1751
1765
|
export declare enum Side {
|
|
1752
1766
|
Before = 0,
|
package/lib/sequence.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ import { ISharedIntervalCollection } from "./sharedIntervalCollection";
|
|
|
45
45
|
* - `event` - Various information on the segments that were modified.
|
|
46
46
|
*
|
|
47
47
|
* - `target` - The sequence itself.
|
|
48
|
-
* @
|
|
48
|
+
* @alpha
|
|
49
49
|
*/
|
|
50
50
|
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
51
51
|
(event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
@@ -53,7 +53,7 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
|
53
53
|
(event: "maintenance", listener: (event: SequenceMaintenanceEvent, target: IEventThisPlaceHolder) => void): any;
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* @
|
|
56
|
+
* @alpha
|
|
57
57
|
*/
|
|
58
58
|
export declare abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver {
|
|
59
59
|
private readonly dataStoreRuntime;
|
package/lib/sequence.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resetReentrancyLogCounter = exports.SharedSegmentSequence = void 0;
|
|
5
8
|
/* eslint-disable import/no-deprecated */
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
const core_utils_1 = require("@fluidframework/core-utils");
|
|
10
|
+
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
11
|
+
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
12
|
+
const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
|
|
13
|
+
const merge_tree_1 = require("@fluidframework/merge-tree");
|
|
14
|
+
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
15
|
+
const shared_object_base_1 = require("@fluidframework/shared-object-base");
|
|
16
|
+
const defaultMap_1 = require("./defaultMap");
|
|
17
|
+
const intervalCollection_1 = require("./intervalCollection");
|
|
18
|
+
const sequenceDeltaEvent_1 = require("./sequenceDeltaEvent");
|
|
16
19
|
const snapshotFileName = "header";
|
|
17
20
|
const contentPath = "content";
|
|
18
21
|
/**
|
|
19
|
-
* @
|
|
22
|
+
* @alpha
|
|
20
23
|
*/
|
|
21
|
-
|
|
24
|
+
class SharedSegmentSequence extends shared_object_base_1.SharedObject {
|
|
22
25
|
get loaded() {
|
|
23
26
|
return this.loadedDeferred.promise;
|
|
24
27
|
}
|
|
@@ -26,7 +29,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
26
29
|
const ops = [];
|
|
27
30
|
for (const r of event.ranges) {
|
|
28
31
|
switch (event.deltaOperation) {
|
|
29
|
-
case MergeTreeDeltaType.ANNOTATE: {
|
|
32
|
+
case merge_tree_1.MergeTreeDeltaType.ANNOTATE: {
|
|
30
33
|
const lastAnnotate = ops[ops.length - 1];
|
|
31
34
|
const props = {};
|
|
32
35
|
for (const key of Object.keys(r.propertyDeltas)) {
|
|
@@ -34,25 +37,25 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
34
37
|
}
|
|
35
38
|
if (lastAnnotate &&
|
|
36
39
|
lastAnnotate.pos2 === r.position &&
|
|
37
|
-
matchProperties(lastAnnotate.props, props)) {
|
|
40
|
+
(0, merge_tree_1.matchProperties)(lastAnnotate.props, props)) {
|
|
38
41
|
lastAnnotate.pos2 += r.segment.cachedLength;
|
|
39
42
|
}
|
|
40
43
|
else {
|
|
41
|
-
ops.push(createAnnotateRangeOp(r.position, r.position + r.segment.cachedLength, props, undefined));
|
|
44
|
+
ops.push((0, merge_tree_1.createAnnotateRangeOp)(r.position, r.position + r.segment.cachedLength, props, undefined));
|
|
42
45
|
}
|
|
43
46
|
break;
|
|
44
47
|
}
|
|
45
|
-
case MergeTreeDeltaType.INSERT:
|
|
46
|
-
ops.push(createInsertOp(r.position, r.segment.clone().toJSONObject()));
|
|
48
|
+
case merge_tree_1.MergeTreeDeltaType.INSERT:
|
|
49
|
+
ops.push((0, merge_tree_1.createInsertOp)(r.position, r.segment.clone().toJSONObject()));
|
|
47
50
|
break;
|
|
48
|
-
case MergeTreeDeltaType.REMOVE: {
|
|
51
|
+
case merge_tree_1.MergeTreeDeltaType.REMOVE: {
|
|
49
52
|
const lastRem = ops[ops.length - 1];
|
|
50
53
|
if (lastRem?.pos1 === r.position) {
|
|
51
|
-
assert(lastRem.pos2 !== undefined, 0x3ff /* pos2 should not be undefined here */);
|
|
54
|
+
(0, core_utils_1.assert)(lastRem.pos2 !== undefined, 0x3ff /* pos2 should not be undefined here */);
|
|
52
55
|
lastRem.pos2 += r.segment.cachedLength;
|
|
53
56
|
}
|
|
54
57
|
else {
|
|
55
|
-
ops.push(createRemoveRangeOp(r.position, r.position + r.segment.cachedLength));
|
|
58
|
+
ops.push((0, merge_tree_1.createRemoveRangeOp)(r.position, r.position + r.segment.cachedLength));
|
|
56
59
|
}
|
|
57
60
|
break;
|
|
58
61
|
}
|
|
@@ -67,7 +70,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
67
70
|
this.id = id;
|
|
68
71
|
this.segmentFromSpec = segmentFromSpec;
|
|
69
72
|
/** `Deferred` that triggers once the object is loaded */
|
|
70
|
-
this.loadedDeferred = new Deferred();
|
|
73
|
+
this.loadedDeferred = new core_utils_1.Deferred();
|
|
71
74
|
// cache out going ops created when partial loading
|
|
72
75
|
this.loadedDeferredOutgoingOps = [];
|
|
73
76
|
// cache incoming ops that arrive when partial loading
|
|
@@ -80,27 +83,27 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
80
83
|
: createReentrancyDetector((depth) => {
|
|
81
84
|
if (totalReentrancyLogs > 0) {
|
|
82
85
|
totalReentrancyLogs--;
|
|
83
|
-
this.logger.sendTelemetryEvent({ eventName: "LocalOpReentry", depth }, new LoggingError(reentrancyErrorMessage));
|
|
86
|
+
this.logger.sendTelemetryEvent({ eventName: "LocalOpReentry", depth }, new telemetry_utils_1.LoggingError(reentrancyErrorMessage));
|
|
84
87
|
}
|
|
85
88
|
});
|
|
86
89
|
this.loadedDeferred.promise.catch((error) => {
|
|
87
90
|
this.logger.sendErrorEvent({ eventName: "SequenceLoadFailed" }, error);
|
|
88
91
|
});
|
|
89
|
-
this.client = new Client(segmentFromSpec, createChildLogger({
|
|
92
|
+
this.client = new merge_tree_1.Client(segmentFromSpec, (0, telemetry_utils_1.createChildLogger)({
|
|
90
93
|
logger: this.logger,
|
|
91
94
|
namespace: "SharedSegmentSequence.MergeTreeClient",
|
|
92
95
|
}), dataStoreRuntime.options);
|
|
93
96
|
this.client.prependListener("delta", (opArgs, deltaArgs) => {
|
|
94
|
-
const event = new SequenceDeltaEvent(opArgs, deltaArgs, this.client);
|
|
97
|
+
const event = new sequenceDeltaEvent_1.SequenceDeltaEvent(opArgs, deltaArgs, this.client);
|
|
95
98
|
if (opArgs.stashed !== true && event.isLocal) {
|
|
96
99
|
this.submitSequenceMessage(opArgs.op);
|
|
97
100
|
}
|
|
98
101
|
this.emit("sequenceDelta", event, this);
|
|
99
102
|
});
|
|
100
103
|
this.client.on("maintenance", (args, opArgs) => {
|
|
101
|
-
this.emit("maintenance", new SequenceMaintenanceEvent(opArgs, args, this.client), this);
|
|
104
|
+
this.emit("maintenance", new sequenceDeltaEvent_1.SequenceMaintenanceEvent(opArgs, args, this.client), this);
|
|
102
105
|
});
|
|
103
|
-
this.intervalCollections = new DefaultMap(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), new SequenceIntervalCollectionValueType(), dataStoreRuntime.options);
|
|
106
|
+
this.intervalCollections = new defaultMap_1.DefaultMap(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), new intervalCollection_1.SequenceIntervalCollectionValueType(), dataStoreRuntime.options);
|
|
104
107
|
}
|
|
105
108
|
/**
|
|
106
109
|
* @param start - The inclusive start of the range to remove
|
|
@@ -202,8 +205,8 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
202
205
|
if (!this.isAttached()) {
|
|
203
206
|
return;
|
|
204
207
|
}
|
|
205
|
-
const translated = makeHandlesSerializable(message, this.serializer, this.handle);
|
|
206
|
-
const metadata = this.client.peekPendingSegmentGroups(message.type === MergeTreeDeltaType.GROUP ? message.ops.length : 1);
|
|
208
|
+
const translated = (0, shared_object_base_1.makeHandlesSerializable)(message, this.serializer, this.handle);
|
|
209
|
+
const metadata = this.client.peekPendingSegmentGroups(message.type === merge_tree_1.MergeTreeDeltaType.GROUP ? message.ops.length : 1);
|
|
207
210
|
// if loading isn't complete, we need to cache
|
|
208
211
|
// local ops until loading is complete, and then
|
|
209
212
|
// they will be resent
|
|
@@ -294,7 +297,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
294
297
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
|
|
295
298
|
*/
|
|
296
299
|
summarizeCore(serializer, telemetryContext) {
|
|
297
|
-
const builder = new SummaryTreeBuilder();
|
|
300
|
+
const builder = new runtime_utils_1.SummaryTreeBuilder();
|
|
298
301
|
// conditionally write the interval collection blob
|
|
299
302
|
// only if it has entries
|
|
300
303
|
if (this.intervalCollections.size > 0) {
|
|
@@ -358,14 +361,14 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
358
361
|
async loadCore(storage) {
|
|
359
362
|
if (await storage.contains(snapshotFileName)) {
|
|
360
363
|
const blob = await storage.readBlob(snapshotFileName);
|
|
361
|
-
const header = bufferToString(blob, "utf8");
|
|
364
|
+
const header = (0, client_utils_1.bufferToString)(blob, "utf8");
|
|
362
365
|
this.intervalCollections.populate(header);
|
|
363
366
|
}
|
|
364
367
|
try {
|
|
365
368
|
// this will load the header, and return a promise
|
|
366
369
|
// that will resolve when the body is loaded
|
|
367
370
|
// and the catchup ops are available.
|
|
368
|
-
const { catchupOpsP } = await this.client.load(this.runtime, new ObjectStoragePartition(storage, contentPath), this.serializer);
|
|
371
|
+
const { catchupOpsP } = await this.client.load(this.runtime, new runtime_utils_1.ObjectStoragePartition(storage, contentPath), this.serializer);
|
|
369
372
|
// setup a promise to process the
|
|
370
373
|
// catch up ops, and finishing the loading process
|
|
371
374
|
const loadCatchUpOps = catchupOpsP
|
|
@@ -413,11 +416,11 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
413
416
|
// if loading isn't complete, we need to cache all
|
|
414
417
|
// incoming ops to be applied after loading is complete
|
|
415
418
|
if (this.deferIncomingOps) {
|
|
416
|
-
assert(!local, 0x072 /* "Unexpected local op when loading not finished" */);
|
|
419
|
+
(0, core_utils_1.assert)(!local, 0x072 /* "Unexpected local op when loading not finished" */);
|
|
417
420
|
this.loadedDeferredIncomingOps.push(message);
|
|
418
421
|
}
|
|
419
422
|
else {
|
|
420
|
-
assert(message.type === MessageType.Operation, 0x073 /* "Sequence message not operation" */);
|
|
423
|
+
(0, core_utils_1.assert)(message.type === protocol_definitions_1.MessageType.Operation, 0x073 /* "Sequence message not operation" */);
|
|
421
424
|
const handled = this.intervalCollections.tryProcessMessage(message.contents, local, message, localOpMetadata);
|
|
422
425
|
if (!handled) {
|
|
423
426
|
this.processMergeTreeMsg(message, local);
|
|
@@ -445,11 +448,11 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
445
448
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
|
|
446
449
|
*/
|
|
447
450
|
applyStashedOp(content) {
|
|
448
|
-
return this.client.applyStashedOp(parseHandles(content, this.serializer));
|
|
451
|
+
return this.client.applyStashedOp((0, shared_object_base_1.parseHandles)(content, this.serializer));
|
|
449
452
|
}
|
|
450
453
|
summarizeMergeTree(serializer) {
|
|
451
454
|
// Are we fully loaded? If not, things will go south
|
|
452
|
-
assert(this.loadedDeferred.isCompleted, 0x074 /* "Snapshot called when not fully loaded" */);
|
|
455
|
+
(0, core_utils_1.assert)(this.loadedDeferred.isCompleted, 0x074 /* "Snapshot called when not fully loaded" */);
|
|
453
456
|
const minSeq = this.runtime.deltaManager.minimumSequenceNumber;
|
|
454
457
|
this.processMinSequenceNumberChanged(minSeq);
|
|
455
458
|
this.messagesSinceMSNChange.forEach((m) => {
|
|
@@ -458,7 +461,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
458
461
|
return this.client.summarize(this.runtime, this.handle, serializer, this.messagesSinceMSNChange);
|
|
459
462
|
}
|
|
460
463
|
processMergeTreeMsg(rawMessage, local) {
|
|
461
|
-
const message = parseHandles(rawMessage, this.serializer);
|
|
464
|
+
const message = (0, shared_object_base_1.parseHandles)(rawMessage, this.serializer);
|
|
462
465
|
const ops = [];
|
|
463
466
|
function transformOps(event) {
|
|
464
467
|
ops.push(...SharedSegmentSequence.createOpsFromDelta(event));
|
|
@@ -479,7 +482,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
479
482
|
stashMessage = {
|
|
480
483
|
...message,
|
|
481
484
|
referenceSequenceNumber: stashMessage.sequenceNumber - 1,
|
|
482
|
-
contents: ops.length !== 1 ? createGroupOp(...ops) : ops[0],
|
|
485
|
+
contents: ops.length !== 1 ? (0, merge_tree_1.createGroupOp)(...ops) : ops[0],
|
|
483
486
|
};
|
|
484
487
|
}
|
|
485
488
|
this.messagesSinceMSNChange.push(stashMessage);
|
|
@@ -535,7 +538,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
535
538
|
if (!intervalCollection.attached) {
|
|
536
539
|
intervalCollection.attachGraph(this.client, key);
|
|
537
540
|
}
|
|
538
|
-
assert(previousValue === undefined, 0x2c1 /* "Creating an interval collection that already exists?" */);
|
|
541
|
+
(0, core_utils_1.assert)(previousValue === undefined, 0x2c1 /* "Creating an interval collection that already exists?" */);
|
|
539
542
|
this.emit("createIntervalCollection", key, local, this);
|
|
540
543
|
});
|
|
541
544
|
// Initialize existing SharedIntervalCollections
|
|
@@ -545,6 +548,7 @@ export class SharedSegmentSequence extends SharedObject {
|
|
|
545
548
|
}
|
|
546
549
|
}
|
|
547
550
|
}
|
|
551
|
+
exports.SharedSegmentSequence = SharedSegmentSequence;
|
|
548
552
|
function createReentrancyDetector(onReentrancy) {
|
|
549
553
|
let depth = 0;
|
|
550
554
|
function detectReentrancy(callback) {
|
|
@@ -570,11 +574,12 @@ let totalReentrancyLogs = 3;
|
|
|
570
574
|
/**
|
|
571
575
|
* Resets the reentrancy log counter. Test-only API.
|
|
572
576
|
*/
|
|
573
|
-
|
|
577
|
+
function resetReentrancyLogCounter() {
|
|
574
578
|
totalReentrancyLogs = 3;
|
|
575
579
|
}
|
|
580
|
+
exports.resetReentrancyLogCounter = resetReentrancyLogCounter;
|
|
576
581
|
const reentrancyErrorMessage = "Reentrancy detected in sequence local ops";
|
|
577
582
|
const ensureNoReentrancy = createReentrancyDetector(() => {
|
|
578
|
-
throw new LoggingError(reentrancyErrorMessage);
|
|
583
|
+
throw new telemetry_utils_1.LoggingError(reentrancyErrorMessage);
|
|
579
584
|
});
|
|
580
585
|
//# sourceMappingURL=sequence.js.map
|