@fluidframework/sequence 2.0.0-dev.2.3.0.115467 → 2.0.0-dev.4.1.0.148229

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.
Files changed (96) hide show
  1. package/.eslintrc.js +9 -12
  2. package/.mocharc.js +2 -2
  3. package/.vscode/launch.json +15 -14
  4. package/README.md +204 -177
  5. package/api-extractor.json +2 -2
  6. package/dist/defaultMap.d.ts.map +1 -1
  7. package/dist/defaultMap.js +5 -4
  8. package/dist/defaultMap.js.map +1 -1
  9. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  10. package/dist/defaultMapInterfaces.js.map +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/intervalCollection.d.ts +15 -3
  15. package/dist/intervalCollection.d.ts.map +1 -1
  16. package/dist/intervalCollection.js +150 -79
  17. package/dist/intervalCollection.js.map +1 -1
  18. package/dist/intervalTree.d.ts.map +1 -1
  19. package/dist/intervalTree.js.map +1 -1
  20. package/dist/localValues.d.ts.map +1 -1
  21. package/dist/localValues.js.map +1 -1
  22. package/dist/packageVersion.d.ts +1 -1
  23. package/dist/packageVersion.js +1 -1
  24. package/dist/packageVersion.js.map +1 -1
  25. package/dist/sequence.d.ts +1 -1
  26. package/dist/sequence.d.ts.map +1 -1
  27. package/dist/sequence.js +16 -42
  28. package/dist/sequence.js.map +1 -1
  29. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  30. package/dist/sequenceDeltaEvent.js.map +1 -1
  31. package/dist/sequenceFactory.d.ts.map +1 -1
  32. package/dist/sequenceFactory.js.map +1 -1
  33. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  34. package/dist/sharedIntervalCollection.js.map +1 -1
  35. package/dist/sharedSequence.d.ts.map +1 -1
  36. package/dist/sharedSequence.js +3 -3
  37. package/dist/sharedSequence.js.map +1 -1
  38. package/dist/sharedString.d.ts.map +1 -1
  39. package/dist/sharedString.js +5 -4
  40. package/dist/sharedString.js.map +1 -1
  41. package/lib/defaultMap.d.ts.map +1 -1
  42. package/lib/defaultMap.js +6 -5
  43. package/lib/defaultMap.js.map +1 -1
  44. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  45. package/lib/defaultMapInterfaces.js.map +1 -1
  46. package/lib/index.d.ts +2 -2
  47. package/lib/index.d.ts.map +1 -1
  48. package/lib/index.js +2 -2
  49. package/lib/index.js.map +1 -1
  50. package/lib/intervalCollection.d.ts +15 -3
  51. package/lib/intervalCollection.d.ts.map +1 -1
  52. package/lib/intervalCollection.js +150 -79
  53. package/lib/intervalCollection.js.map +1 -1
  54. package/lib/intervalTree.d.ts.map +1 -1
  55. package/lib/intervalTree.js.map +1 -1
  56. package/lib/localValues.d.ts.map +1 -1
  57. package/lib/localValues.js +1 -1
  58. package/lib/localValues.js.map +1 -1
  59. package/lib/packageVersion.d.ts +1 -1
  60. package/lib/packageVersion.js +1 -1
  61. package/lib/packageVersion.js.map +1 -1
  62. package/lib/sequence.d.ts +1 -1
  63. package/lib/sequence.d.ts.map +1 -1
  64. package/lib/sequence.js +17 -43
  65. package/lib/sequence.js.map +1 -1
  66. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  67. package/lib/sequenceDeltaEvent.js.map +1 -1
  68. package/lib/sequenceFactory.d.ts.map +1 -1
  69. package/lib/sequenceFactory.js +1 -1
  70. package/lib/sequenceFactory.js.map +1 -1
  71. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  72. package/lib/sharedIntervalCollection.js.map +1 -1
  73. package/lib/sharedSequence.d.ts.map +1 -1
  74. package/lib/sharedSequence.js +4 -4
  75. package/lib/sharedSequence.js.map +1 -1
  76. package/lib/sharedString.d.ts.map +1 -1
  77. package/lib/sharedString.js +5 -4
  78. package/lib/sharedString.js.map +1 -1
  79. package/package.json +79 -67
  80. package/prettier.config.cjs +1 -1
  81. package/src/defaultMap.ts +406 -405
  82. package/src/defaultMapInterfaces.ts +120 -115
  83. package/src/index.ts +27 -17
  84. package/src/intervalCollection.ts +2206 -1932
  85. package/src/intervalTree.ts +139 -139
  86. package/src/localValues.ts +64 -73
  87. package/src/packageVersion.ts +1 -1
  88. package/src/sequence.ts +738 -710
  89. package/src/sequenceDeltaEvent.ts +143 -137
  90. package/src/sequenceFactory.ts +48 -46
  91. package/src/sharedIntervalCollection.ts +150 -136
  92. package/src/sharedSequence.ts +165 -160
  93. package/src/sharedString.ts +385 -343
  94. package/tsconfig.esnext.json +6 -6
  95. package/tsconfig.json +8 -12
  96. package/.editorconfig +0 -7
@@ -6,7 +6,7 @@ import { TypedEventEmitter } from "@fluidframework/common-utils";
6
6
  import { IEvent } from "@fluidframework/common-definitions";
7
7
  import { Client, ICombiningOp, PropertiesManager, PropertySet, LocalReferencePosition } from "@fluidframework/merge-tree";
8
8
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
- import { IValueFactory, IValueOpEmitter, IValueOperation, IValueType } from "./defaultMapInterfaces";
9
+ import { IMapMessageLocalMetadata, IValueFactory, IValueOpEmitter, IValueOperation, IValueType } from "./defaultMapInterfaces";
10
10
  import { IInterval, IntervalConflictResolver } from "./intervalTree";
11
11
  export declare enum IntervalType {
12
12
  Simple = 0,
@@ -117,6 +117,7 @@ export declare class Interval implements ISerializableInterval {
117
117
  auxProps: PropertySet[] | undefined;
118
118
  /**
119
119
  * {@inheritDoc ISerializableInterval.propertyManager}
120
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
120
121
  */
121
122
  propertyManager: PropertiesManager;
122
123
  constructor(start: number, end: number, props?: PropertySet);
@@ -164,15 +165,18 @@ export declare class Interval implements ISerializableInterval {
164
165
  overlaps(b: Interval): boolean;
165
166
  /**
166
167
  * {@inheritDoc IInterval.union}
168
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
167
169
  */
168
170
  union(b: Interval): Interval;
169
171
  getProperties(): PropertySet;
170
172
  /**
171
173
  * {@inheritDoc ISerializableInterval.addProperties}
174
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
172
175
  */
173
176
  addProperties(newProps: PropertySet, collaborating?: boolean, seq?: number, op?: ICombiningOp): PropertySet | undefined;
174
177
  /**
175
178
  * {@inheritDoc IInterval.modify}
179
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
176
180
  */
177
181
  modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage): Interval | undefined;
178
182
  private initializeProperties;
@@ -201,6 +205,7 @@ export declare class SequenceInterval implements ISerializableInterval {
201
205
  properties: PropertySet;
202
206
  /**
203
207
  * {@inheritDoc ISerializableInterval.propertyManager}
208
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
204
209
  */
205
210
  propertyManager: PropertiesManager;
206
211
  constructor(client: Client,
@@ -256,10 +261,12 @@ export declare class SequenceInterval implements ISerializableInterval {
256
261
  getIntervalId(): string | undefined;
257
262
  /**
258
263
  * {@inheritDoc IInterval.union}
264
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
259
265
  */
260
266
  union(b: SequenceInterval): SequenceInterval;
261
267
  /**
262
268
  * {@inheritDoc ISerializableInterval.addProperties}
269
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
263
270
  */
264
271
  addProperties(newProps: PropertySet, collab?: boolean, seq?: number, op?: ICombiningOp): PropertySet | undefined;
265
272
  /**
@@ -269,6 +276,7 @@ export declare class SequenceInterval implements ISerializableInterval {
269
276
  overlapsPos(bstart: number, bend: number): boolean;
270
277
  /**
271
278
  * {@inheritDoc IInterval.modify}
279
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
272
280
  */
273
281
  modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage, localSeq?: number): SequenceInterval;
274
282
  private initializeProperties;
@@ -399,11 +407,15 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
399
407
  private localCollection;
400
408
  private onDeserialize;
401
409
  private client;
410
+ private readonly localSeqToSerializedInterval;
411
+ private readonly localSeqToRebasedInterval;
402
412
  private readonly pendingChangesStart;
403
413
  private readonly pendingChangesEnd;
404
414
  get attached(): boolean;
405
415
  /** @internal */
406
416
  constructor(helpers: IIntervalHelpers<TInterval>, requiresClient: boolean, emitter: IValueOpEmitter, serializedIntervals: ISerializedInterval[] | ISerializedIntervalCollectionV2);
417
+ private rebasePositionWithSegmentSlide;
418
+ private computeRebasedPositions;
407
419
  /** @internal */
408
420
  attachGraph(client: Client, label: string): void;
409
421
  /**
@@ -454,7 +466,7 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
454
466
  private hasPendingChangeStart;
455
467
  private hasPendingChangeEnd;
456
468
  /** @internal */
457
- ackChange(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage): void;
469
+ ackChange(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IMapMessageLocalMetadata | undefined): void;
458
470
  addConflictResolver(conflictResolver: IntervalConflictResolver<TInterval>): void;
459
471
  attachDeserializer(onDeserialize: DeserializeCallback): void;
460
472
  /**
@@ -469,7 +481,7 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
469
481
  private setSlideOnRemove;
470
482
  private ackInterval;
471
483
  /** @internal */
472
- ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage): TInterval | undefined;
484
+ ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IMapMessageLocalMetadata | undefined): TInterval | undefined;
473
485
  /** @internal */
474
486
  ackDelete(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage): void;
475
487
  /**
@@ -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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"}
@@ -174,12 +174,12 @@ export class Interval {
174
174
  * {@inheritDoc IInterval.overlaps}
175
175
  */
176
176
  overlaps(b) {
177
- const result = (this.start <= b.end) &&
178
- (this.end >= b.start);
177
+ const result = this.start <= b.end && this.end >= b.start;
179
178
  return result;
180
179
  }
181
180
  /**
182
181
  * {@inheritDoc IInterval.union}
182
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
183
183
  */
184
184
  union(b) {
185
185
  return new Interval(Math.min(this.start, b.start), Math.max(this.end, b.end), this.properties);
@@ -189,6 +189,7 @@ export class Interval {
189
189
  }
190
190
  /**
191
191
  * {@inheritDoc ISerializableInterval.addProperties}
192
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
192
193
  */
193
194
  addProperties(newProps, collaborating = false, seq, op) {
194
195
  if (newProps) {
@@ -198,6 +199,7 @@ export class Interval {
198
199
  }
199
200
  /**
200
201
  * {@inheritDoc IInterval.modify}
202
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
201
203
  */
202
204
  modify(label, start, end, op) {
203
205
  const startPos = start !== null && start !== void 0 ? start : this.start;
@@ -261,8 +263,8 @@ export class SequenceInterval {
261
263
  beforePositionChange,
262
264
  afterPositionChange,
263
265
  };
264
- const startCbs = (_a = (_c = this.start).callbacks) !== null && _a !== void 0 ? _a : (_c.callbacks = {});
265
- const endCbs = (_b = (_d = this.end).callbacks) !== null && _b !== void 0 ? _b : (_d.callbacks = {});
266
+ const startCbs = ((_a = (_c = this.start).callbacks) !== null && _a !== void 0 ? _a : (_c.callbacks = {}));
267
+ const endCbs = ((_b = (_d = this.end).callbacks) !== null && _b !== void 0 ? _b : (_d.callbacks = {}));
266
268
  startCbs.beforeSlide = endCbs.beforeSlide = beforePositionChange;
267
269
  startCbs.afterSlide = endCbs.afterSlide = afterPositionChange;
268
270
  }
@@ -344,8 +346,8 @@ export class SequenceInterval {
344
346
  * {@inheritDoc IInterval.overlaps}
345
347
  */
346
348
  overlaps(b) {
347
- const result = (compareReferencePositions(this.start, b.end) <= 0) &&
348
- (compareReferencePositions(this.end, b.start) >= 0);
349
+ const result = compareReferencePositions(this.start, b.end) <= 0 &&
350
+ compareReferencePositions(this.end, b.start) >= 0;
349
351
  return result;
350
352
  }
351
353
  /**
@@ -361,12 +363,14 @@ export class SequenceInterval {
361
363
  }
362
364
  /**
363
365
  * {@inheritDoc IInterval.union}
366
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
364
367
  */
365
368
  union(b) {
366
369
  return new SequenceInterval(this.client, minReferencePosition(this.start, b.start), maxReferencePosition(this.end, b.end), this.intervalType);
367
370
  }
368
371
  /**
369
372
  * {@inheritDoc ISerializableInterval.addProperties}
373
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
370
374
  */
371
375
  addProperties(newProps, collab = false, seq, op) {
372
376
  this.initializeProperties();
@@ -379,10 +383,11 @@ export class SequenceInterval {
379
383
  overlapsPos(bstart, bend) {
380
384
  const startPos = this.client.localReferencePositionToPosition(this.start);
381
385
  const endPos = this.client.localReferencePositionToPosition(this.end);
382
- return (endPos > bstart) && (startPos < bend);
386
+ return endPos > bstart && startPos < bend;
383
387
  }
384
388
  /**
385
389
  * {@inheritDoc IInterval.modify}
390
+ * @deprecated - This API was never intended to be public and will be marked internal in a future release.
386
391
  */
387
392
  modify(label, start, end, op, localSeq) {
388
393
  const getRefType = (baseType) => {
@@ -423,13 +428,17 @@ export class SequenceInterval {
423
428
  }
424
429
  }
425
430
  }
426
- function createPositionReferenceFromSegoff(client, segoff, refType, op) {
431
+ function createPositionReferenceFromSegoff(client, segoff, refType, op, localSeq) {
427
432
  if (segoff.segment) {
428
433
  const ref = client.createLocalReferencePosition(segoff.segment, segoff.offset, refType, undefined);
429
434
  return ref;
430
435
  }
431
- if (!op && !refTypeIncludesFlag(refType, ReferenceType.Transient)) {
432
- // reference to segment that dne locally
436
+ // Creating references on detached segments is allowed for:
437
+ // - Transient segments
438
+ // - References coming from a remote client (location may have been concurrently removed)
439
+ // - References being rebased to a new sequence number
440
+ // (segment they originally referred to may have been removed with no suitable replacement)
441
+ if (!op && !localSeq && !refTypeIncludesFlag(refType, ReferenceType.Transient)) {
433
442
  throw new UsageError("Non-transient references need segment");
434
443
  }
435
444
  return createDetachedLocalReferencePosition(refType);
@@ -438,14 +447,17 @@ function createPositionReference(client, pos, refType, op, fromSnapshot, localSe
438
447
  let segoff;
439
448
  if (op) {
440
449
  assert((refType & ReferenceType.SlideOnRemove) !== 0, 0x2f5 /* op create references must be SlideOnRemove */);
441
- segoff = client.getContainingSegment(pos, op);
450
+ segoff = client.getContainingSegment(pos, {
451
+ referenceSequenceNumber: op.referenceSequenceNumber,
452
+ clientId: op.clientId,
453
+ });
442
454
  segoff = client.getSlideToSegment(segoff);
443
455
  }
444
456
  else {
445
457
  assert((refType & ReferenceType.SlideOnRemove) === 0 || !!fromSnapshot, 0x2f6 /* SlideOnRemove references must be op created */);
446
458
  segoff = client.getContainingSegment(pos, undefined, localSeq);
447
459
  }
448
- return createPositionReferenceFromSegoff(client, segoff, refType, op);
460
+ return createPositionReferenceFromSegoff(client, segoff, refType, op, localSeq);
449
461
  }
450
462
  export function createSequenceInterval(label, start, end, client, intervalType, op, fromSnapshot) {
451
463
  let beginRefType = ReferenceType.RangeBegin;
@@ -514,14 +526,13 @@ export class LocalIntervalCollection {
514
526
  }
515
527
  addConflictResolver(conflictResolver) {
516
528
  this.conflictResolver = conflictResolver;
517
- this.endConflictResolver =
518
- (key, currentKey) => {
519
- const ival = conflictResolver(key, currentKey);
520
- return {
521
- data: ival,
522
- key: ival,
523
- };
529
+ this.endConflictResolver = (key, currentKey) => {
530
+ const ival = conflictResolver(key, currentKey);
531
+ return {
532
+ data: ival,
533
+ key: ival,
524
534
  };
535
+ };
525
536
  }
526
537
  map(fn) {
527
538
  this.intervalTree.map(fn);
@@ -601,11 +612,11 @@ export class LocalIntervalCollection {
601
612
  else {
602
613
  // Start and (possibly) end provided. Walk the subtrees that may contain
603
614
  // this start position.
604
- const compareFn = end === undefined ?
605
- (node) => {
615
+ const compareFn = end === undefined
616
+ ? (node) => {
606
617
  return transientInterval.compareStart(node.key);
607
- } :
608
- (node) => {
618
+ }
619
+ : (node) => {
609
620
  return transientInterval.compare(node.key);
610
621
  };
611
622
  const continueLeftFn = (cmpResult) => cmpResult <= 0;
@@ -740,18 +751,25 @@ export class LocalIntervalCollection {
740
751
  };
741
752
  if (interval instanceof SequenceInterval) {
742
753
  let previousInterval;
754
+ let pendingChanges = 0;
743
755
  interval.addPositionChangeListeners(() => {
744
- assert(!previousInterval, 0x3f9 /* Invalid interleaving of before/after slide */);
745
- previousInterval = interval.clone();
746
- previousInterval.start = cloneRef(previousInterval.start);
747
- previousInterval.end = cloneRef(previousInterval.end);
748
- this.removeIntervalFromIndex(interval);
756
+ pendingChanges++;
757
+ // Note: both start and end can change and invoke beforeSlide on each endpoint before afterSlide.
758
+ if (!previousInterval) {
759
+ previousInterval = interval.clone();
760
+ previousInterval.start = cloneRef(previousInterval.start);
761
+ previousInterval.end = cloneRef(previousInterval.end);
762
+ this.removeIntervalFromIndex(interval);
763
+ }
749
764
  }, () => {
750
765
  var _a;
751
766
  assert(previousInterval !== undefined, 0x3fa /* Invalid interleaving of before/after slide */);
752
- this.addIntervalToIndex(interval);
753
- (_a = this.onPositionChange) === null || _a === void 0 ? void 0 : _a.call(this, interval, previousInterval);
754
- previousInterval = undefined;
767
+ pendingChanges--;
768
+ if (pendingChanges === 0) {
769
+ this.addIntervalToIndex(interval);
770
+ (_a = this.onPositionChange) === null || _a === void 0 ? void 0 : _a.call(this, interval, previousInterval);
771
+ previousInterval = undefined;
772
+ }
755
773
  });
756
774
  }
757
775
  }
@@ -832,17 +850,18 @@ export function makeOpsMap() {
832
850
  const rebasedOp = Object.assign(Object.assign({}, op), { value: rebasedValue });
833
851
  return { rebasedOp, rebasedLocalOpMetadata: localOpMetadata };
834
852
  };
835
- return new Map([[
853
+ return new Map([
854
+ [
836
855
  "add",
837
856
  {
838
- process: (collection, params, local, op) => {
857
+ process: (collection, params, local, op, localOpMetadata) => {
839
858
  // if params is undefined, the interval was deleted during
840
859
  // rebasing
841
860
  if (!params) {
842
861
  return;
843
862
  }
844
863
  assert(op !== undefined, 0x3fb /* op should exist here */);
845
- collection.ackAdd(params, local, op);
864
+ collection.ackAdd(params, local, op, localOpMetadata);
846
865
  },
847
866
  rebase,
848
867
  },
@@ -863,18 +882,19 @@ export function makeOpsMap() {
863
882
  [
864
883
  "change",
865
884
  {
866
- process: (collection, params, local, op) => {
885
+ process: (collection, params, local, op, localOpMetadata) => {
867
886
  // if params is undefined, the interval was deleted during
868
887
  // rebasing
869
888
  if (!params) {
870
889
  return;
871
890
  }
872
891
  assert(op !== undefined, 0x3fd /* op should exist here */);
873
- collection.ackChange(params, local, op);
892
+ collection.ackChange(params, local, op, localOpMetadata);
874
893
  },
875
894
  rebase,
876
895
  },
877
- ]]);
896
+ ],
897
+ ]);
878
898
  }
879
899
  export class IntervalCollectionIterator {
880
900
  constructor(collection, iteratesForward = true, start, end) {
@@ -909,6 +929,8 @@ export class IntervalCollection extends TypedEventEmitter {
909
929
  this.helpers = helpers;
910
930
  this.requiresClient = requiresClient;
911
931
  this.emitter = emitter;
932
+ this.localSeqToSerializedInterval = new Map();
933
+ this.localSeqToRebasedInterval = new Map();
912
934
  this.pendingChangesStart = new Map();
913
935
  this.pendingChangesEnd = new Map();
914
936
  this.savedSerializedIntervals = Array.isArray(serializedIntervals)
@@ -918,16 +940,57 @@ export class IntervalCollection extends TypedEventEmitter {
918
940
  get attached() {
919
941
  return !!this.localCollection;
920
942
  }
943
+ rebasePositionWithSegmentSlide(pos, seqNumberFrom, localSeq) {
944
+ var _a;
945
+ if (!this.client) {
946
+ throw new LoggingError("mergeTree client must exist");
947
+ }
948
+ const { clientId } = this.client.getCollabWindow();
949
+ const { segment, offset } = this.client.getContainingSegment(pos, {
950
+ referenceSequenceNumber: seqNumberFrom,
951
+ clientId: this.client.getLongClientId(clientId),
952
+ }, localSeq);
953
+ // if segment is undefined, it slid off the string
954
+ assert(segment !== undefined, 0x54e /* No segment found */);
955
+ const segoff = (_a = this.client.getSlideToSegment({ segment, offset })) !== null && _a !== void 0 ? _a : segment;
956
+ // case happens when rebasing op, but concurrently entire string has been deleted
957
+ if (segoff.segment === undefined || segoff.offset === undefined) {
958
+ return DetachedReferencePosition;
959
+ }
960
+ assert(offset !== undefined && 0 <= offset && offset < segment.cachedLength, 0x54f /* Invalid offset */);
961
+ return this.client.findReconnectionPosition(segoff.segment, localSeq) + segoff.offset;
962
+ }
963
+ computeRebasedPositions(localSeq) {
964
+ assert(this.client !== undefined, 0x550 /* Client should be defined when computing rebased position */);
965
+ const original = this.localSeqToSerializedInterval.get(localSeq);
966
+ assert(original !== undefined, 0x551 /* Failed to store pending serialized interval info for this localSeq. */);
967
+ const rebased = Object.assign({}, original);
968
+ const { start, end, sequenceNumber } = original;
969
+ if (start !== undefined) {
970
+ rebased.start = this.rebasePositionWithSegmentSlide(start, sequenceNumber, localSeq);
971
+ }
972
+ if (end !== undefined) {
973
+ rebased.end = this.rebasePositionWithSegmentSlide(end, sequenceNumber, localSeq);
974
+ }
975
+ return rebased;
976
+ }
921
977
  /** @internal */
922
978
  attachGraph(client, label) {
923
979
  if (this.attached) {
924
980
  throw new LoggingError("Only supports one Sequence attach");
925
981
  }
926
- if ((client === undefined) && (this.requiresClient)) {
982
+ if (client === undefined && this.requiresClient) {
927
983
  throw new LoggingError("Client required for this collection");
928
984
  }
929
985
  // Instantiate the local interval collection based on the saved intervals
930
986
  this.client = client;
987
+ if (client) {
988
+ client.on("normalize", () => {
989
+ for (const localSeq of this.localSeqToSerializedInterval.keys()) {
990
+ this.localSeqToRebasedInterval.set(localSeq, this.computeRebasedPositions(localSeq));
991
+ }
992
+ });
993
+ }
931
994
  this.localCollection = new LocalIntervalCollection(client, label, this.helpers, (interval, previousInterval) => this.emitChange(interval, previousInterval, true));
932
995
  if (this.savedSerializedIntervals) {
933
996
  for (const serializedInterval of this.savedSerializedIntervals) {
@@ -1005,8 +1068,10 @@ export class IntervalCollection extends TypedEventEmitter {
1005
1068
  sequenceNumber: (_b = (_a = this.client) === null || _a === void 0 ? void 0 : _a.getCurrentSeq()) !== null && _b !== void 0 ? _b : 0,
1006
1069
  start,
1007
1070
  };
1071
+ const localSeq = this.getNextLocalSeq();
1072
+ this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
1008
1073
  // Local ops get submitted to the server. Remote ops have the deserializer run.
1009
- this.emitter.emit("add", undefined, serializedInterval, { localSeq: this.getNextLocalSeq() });
1074
+ this.emitter.emit("add", undefined, serializedInterval, { localSeq });
1010
1075
  }
1011
1076
  this.emit("addInterval", interval, true, undefined);
1012
1077
  return interval;
@@ -1020,7 +1085,9 @@ export class IntervalCollection extends TypedEventEmitter {
1020
1085
  if (interval) {
1021
1086
  // Local ops get submitted to the server. Remote ops have the deserializer run.
1022
1087
  if (local) {
1023
- this.emitter.emit("delete", undefined, interval.serialize(), { localSeq: this.getNextLocalSeq() });
1088
+ this.emitter.emit("delete", undefined, interval.serialize(), {
1089
+ localSeq: this.getNextLocalSeq(),
1090
+ });
1024
1091
  }
1025
1092
  else {
1026
1093
  if (this.onDeserialize) {
@@ -1055,7 +1122,7 @@ export class IntervalCollection extends TypedEventEmitter {
1055
1122
  if (!this.attached) {
1056
1123
  throw new LoggingError("Attach must be called before accessing intervals");
1057
1124
  }
1058
- if (typeof (id) !== "string") {
1125
+ if (typeof id !== "string") {
1059
1126
  throw new LoggingError("Change API requires an ID that is a string");
1060
1127
  }
1061
1128
  if (!props) {
@@ -1072,7 +1139,9 @@ export class IntervalCollection extends TypedEventEmitter {
1072
1139
  serializedInterval.end = undefined;
1073
1140
  serializedInterval.properties = props;
1074
1141
  serializedInterval.properties[reservedIntervalIdKey] = interval.getIntervalId();
1075
- this.emitter.emit("change", undefined, serializedInterval, { localSeq: this.getNextLocalSeq() });
1142
+ const localSeq = this.getNextLocalSeq();
1143
+ this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
1144
+ this.emitter.emit("change", undefined, serializedInterval, { localSeq });
1076
1145
  this.emit("propertyChanged", interval, deltaProps, true, undefined);
1077
1146
  }
1078
1147
  }
@@ -1088,7 +1157,7 @@ export class IntervalCollection extends TypedEventEmitter {
1088
1157
  throw new LoggingError("Attach must be called before accessing intervals");
1089
1158
  }
1090
1159
  // Force id to be a string.
1091
- if (typeof (id) !== "string") {
1160
+ if (typeof id !== "string") {
1092
1161
  throw new LoggingError("Change API requires an ID that is a string");
1093
1162
  }
1094
1163
  const interval = this.getIntervalById(id);
@@ -1101,11 +1170,12 @@ export class IntervalCollection extends TypedEventEmitter {
1101
1170
  serializedInterval.start = start;
1102
1171
  serializedInterval.end = end;
1103
1172
  // Emit a property bag containing only the ID, as we don't intend for this op to change any properties.
1104
- serializedInterval.properties =
1105
- {
1106
- [reservedIntervalIdKey]: interval.getIntervalId(),
1107
- };
1108
- this.emitter.emit("change", undefined, serializedInterval, { localSeq: this.getNextLocalSeq() });
1173
+ serializedInterval.properties = {
1174
+ [reservedIntervalIdKey]: interval.getIntervalId(),
1175
+ };
1176
+ const localSeq = this.getNextLocalSeq();
1177
+ this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
1178
+ this.emitter.emit("change", undefined, serializedInterval, { localSeq });
1109
1179
  this.addPendingChange(id, serializedInterval);
1110
1180
  this.emitChange(newInterval, interval, true);
1111
1181
  return newInterval;
@@ -1162,12 +1232,14 @@ export class IntervalCollection extends TypedEventEmitter {
1162
1232
  return entries && entries.length !== 0;
1163
1233
  }
1164
1234
  /** @internal */
1165
- ackChange(serializedInterval, local, op) {
1235
+ ackChange(serializedInterval, local, op, localOpMetadata) {
1166
1236
  var _a, _b, _c, _d;
1167
1237
  if (!this.localCollection) {
1168
1238
  throw new LoggingError("Attach must be called before accessing intervals");
1169
1239
  }
1170
1240
  if (local) {
1241
+ assert(localOpMetadata !== undefined, 0x552 /* op metadata should be defined for local op */);
1242
+ this.localSeqToSerializedInterval.delete(localOpMetadata === null || localOpMetadata === void 0 ? void 0 : localOpMetadata.localSeq);
1171
1243
  // This is an ack from the server. Remove the pending change.
1172
1244
  this.removePendingChange(serializedInterval);
1173
1245
  }
@@ -1205,7 +1277,8 @@ export class IntervalCollection extends TypedEventEmitter {
1205
1277
  if (start !== undefined || end !== undefined) {
1206
1278
  // If changeInterval gives us a new interval, work with that one. Otherwise keep working with
1207
1279
  // the one we originally found in the tree.
1208
- newInterval = (_d = this.localCollection.changeInterval(interval, start, end, op)) !== null && _d !== void 0 ? _d : interval;
1280
+ newInterval =
1281
+ (_d = this.localCollection.changeInterval(interval, start, end, op)) !== null && _d !== void 0 ? _d : interval;
1209
1282
  }
1210
1283
  const deltaProps = newInterval.addProperties(newProps, true, op.sequenceNumber);
1211
1284
  if (this.onDeserialize) {
@@ -1247,7 +1320,7 @@ export class IntervalCollection extends TypedEventEmitter {
1247
1320
  * @internal
1248
1321
  */
1249
1322
  rebaseLocalInterval(opName, serializedInterval, localSeq) {
1250
- var _a, _b, _c, _d, _e, _f, _g;
1323
+ var _a, _b, _c, _d, _e, _f;
1251
1324
  if (!this.client) {
1252
1325
  // If there's no associated mergeTree client, the originally submitted op is still correct.
1253
1326
  return serializedInterval;
@@ -1255,44 +1328,36 @@ export class IntervalCollection extends TypedEventEmitter {
1255
1328
  if (!this.attached) {
1256
1329
  throw new LoggingError("attachSequence must be called");
1257
1330
  }
1258
- const { start, end, intervalType, properties, sequenceNumber } = serializedInterval;
1259
- const startRebased = start === undefined ? undefined :
1260
- this.client.rebasePosition(start, sequenceNumber, localSeq);
1261
- const endRebased = end === undefined ? undefined :
1262
- this.client.rebasePosition(end, sequenceNumber, localSeq);
1331
+ const { intervalType, properties } = serializedInterval;
1332
+ const { start: startRebased, end: endRebased } = (_a = this.localSeqToRebasedInterval.get(localSeq)) !== null && _a !== void 0 ? _a : this.computeRebasedPositions(localSeq);
1263
1333
  const intervalId = properties === null || properties === void 0 ? void 0 : properties[reservedIntervalIdKey];
1264
- const localInterval = (_a = this.localCollection) === null || _a === void 0 ? void 0 : _a.getIntervalById(intervalId);
1334
+ const localInterval = (_b = this.localCollection) === null || _b === void 0 ? void 0 : _b.getIntervalById(intervalId);
1265
1335
  const rebased = {
1266
1336
  start: startRebased,
1267
1337
  end: endRebased,
1268
1338
  intervalType,
1269
- sequenceNumber: (_c = (_b = this.client) === null || _b === void 0 ? void 0 : _b.getCurrentSeq()) !== null && _c !== void 0 ? _c : 0,
1339
+ sequenceNumber: (_d = (_c = this.client) === null || _c === void 0 ? void 0 : _c.getCurrentSeq()) !== null && _d !== void 0 ? _d : 0,
1270
1340
  properties,
1271
1341
  };
1272
- if (opName === "change" && (this.hasPendingChangeStart(intervalId) || this.hasPendingChangeEnd(intervalId))) {
1342
+ if (opName === "change" &&
1343
+ (this.hasPendingChangeStart(intervalId) || this.hasPendingChangeEnd(intervalId))) {
1273
1344
  this.removePendingChange(serializedInterval);
1274
1345
  this.addPendingChange(intervalId, rebased);
1275
1346
  }
1276
- // if the interval slid off the string, rebase the op to be a noop and
1277
- // delete the interval
1278
- if (startRebased === DetachedReferencePosition || endRebased === DetachedReferencePosition) {
1347
+ // if the interval slid off the string, rebase the op to be a noop and delete the interval.
1348
+ if (startRebased === DetachedReferencePosition ||
1349
+ endRebased === DetachedReferencePosition) {
1279
1350
  if (localInterval) {
1280
- (_d = this.localCollection) === null || _d === void 0 ? void 0 : _d.removeExistingInterval(localInterval);
1351
+ (_e = this.localCollection) === null || _e === void 0 ? void 0 : _e.removeExistingInterval(localInterval);
1281
1352
  }
1282
1353
  return undefined;
1283
1354
  }
1284
- if (!localInterval) {
1285
- return rebased;
1286
- }
1287
- // we know we must be using `SequenceInterval` because `this.client` exists
1288
- assert(localInterval instanceof SequenceInterval, 0x3a0 /* localInterval must be `SequenceInterval` when used with client */);
1289
- const startSegment = this.getSlideToSegment(localInterval.start);
1290
- const endSegment = this.getSlideToSegment(localInterval.end);
1291
- // we need to slide because the reference has been removed
1292
- if (startSegment || endSegment) {
1293
- const newStart = startSegment && this.client.getPosition(startSegment.segment, localSeq) + ((_e = startSegment.offset) !== null && _e !== void 0 ? _e : 0);
1294
- const newEnd = endSegment && this.client.getPosition(endSegment.segment, localSeq) + ((_f = endSegment.offset) !== null && _f !== void 0 ? _f : 0);
1295
- (_g = this.localCollection) === null || _g === void 0 ? void 0 : _g.changeInterval(localInterval, newStart, newEnd, undefined, localSeq);
1355
+ if (localInterval !== undefined) {
1356
+ // we know we must be using `SequenceInterval` because `this.client` exists
1357
+ assert(localInterval instanceof SequenceInterval, 0x3a0 /* localInterval must be `SequenceInterval` when used with client */);
1358
+ // The rebased op may place this interval's endpoints on different segments. Calling `changeInterval` here
1359
+ // updates the local client's state to be consistent with the emitted op.
1360
+ (_f = this.localCollection) === null || _f === void 0 ? void 0 : _f.changeInterval(localInterval, startRebased, endRebased, undefined, localSeq);
1296
1361
  }
1297
1362
  return rebased;
1298
1363
  }
@@ -1306,7 +1371,9 @@ export class IntervalCollection extends TypedEventEmitter {
1306
1371
  return undefined;
1307
1372
  }
1308
1373
  const newSegoff = this.client.getSlideToSegment(segoff);
1309
- const value = (segoff.segment === newSegoff.segment && segoff.offset === newSegoff.offset) ? undefined : newSegoff;
1374
+ const value = segoff.segment === newSegoff.segment && segoff.offset === newSegoff.offset
1375
+ ? undefined
1376
+ : newSegoff;
1310
1377
  return value;
1311
1378
  }
1312
1379
  setSlideOnRemove(lref) {
@@ -1380,9 +1447,11 @@ export class IntervalCollection extends TypedEventEmitter {
1380
1447
  }
1381
1448
  }
1382
1449
  /** @internal */
1383
- ackAdd(serializedInterval, local, op) {
1450
+ ackAdd(serializedInterval, local, op, localOpMetadata) {
1384
1451
  var _a;
1385
1452
  if (local) {
1453
+ assert(localOpMetadata !== undefined, 0x553 /* op metadata should be defined for local op */);
1454
+ this.localSeqToSerializedInterval.delete(localOpMetadata.localSeq);
1386
1455
  const id = (_a = serializedInterval.properties) === null || _a === void 0 ? void 0 : _a[reservedIntervalIdKey];
1387
1456
  const localInterval = this.getIntervalById(id);
1388
1457
  if (localInterval) {
@@ -1518,7 +1587,9 @@ export class IntervalCollection extends TypedEventEmitter {
1518
1587
  */
1519
1588
  export function intervalLocatorFromEndpoint(potentialEndpoint) {
1520
1589
  var _a;
1521
- const { interval, [reservedRangeLabelsKey]: collectionNameArray, } = (_a = potentialEndpoint.properties) !== null && _a !== void 0 ? _a : {};
1522
- return (interval && (collectionNameArray === null || collectionNameArray === void 0 ? void 0 : collectionNameArray.length) === 1) ? { label: collectionNameArray[0], interval } : undefined;
1590
+ const { interval, [reservedRangeLabelsKey]: collectionNameArray } = (_a = potentialEndpoint.properties) !== null && _a !== void 0 ? _a : {};
1591
+ return interval && (collectionNameArray === null || collectionNameArray === void 0 ? void 0 : collectionNameArray.length) === 1
1592
+ ? { label: collectionNameArray[0], interval }
1593
+ : undefined;
1523
1594
  }
1524
1595
  //# sourceMappingURL=intervalCollection.js.map