@fluidframework/sequence 2.50.0-345060 → 2.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/intervalCollection.d.ts +4 -5
  3. package/dist/intervalCollection.d.ts.map +1 -1
  4. package/dist/intervalCollection.js +91 -95
  5. package/dist/intervalCollection.js.map +1 -1
  6. package/dist/intervalCollectionMapInterfaces.d.ts +1 -11
  7. package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -1
  8. package/dist/intervalCollectionMapInterfaces.js.map +1 -1
  9. package/dist/intervals/sequenceInterval.d.ts +7 -3
  10. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  11. package/dist/intervals/sequenceInterval.js +72 -30
  12. package/dist/intervals/sequenceInterval.js.map +1 -1
  13. package/dist/packageVersion.d.ts +1 -1
  14. package/dist/packageVersion.d.ts.map +1 -1
  15. package/dist/packageVersion.js +1 -1
  16. package/dist/packageVersion.js.map +1 -1
  17. package/lib/intervalCollection.d.ts +4 -5
  18. package/lib/intervalCollection.d.ts.map +1 -1
  19. package/lib/intervalCollection.js +91 -95
  20. package/lib/intervalCollection.js.map +1 -1
  21. package/lib/intervalCollectionMapInterfaces.d.ts +1 -11
  22. package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -1
  23. package/lib/intervalCollectionMapInterfaces.js.map +1 -1
  24. package/lib/intervals/sequenceInterval.d.ts +7 -3
  25. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  26. package/lib/intervals/sequenceInterval.js +74 -32
  27. package/lib/intervals/sequenceInterval.js.map +1 -1
  28. package/lib/packageVersion.d.ts +1 -1
  29. package/lib/packageVersion.d.ts.map +1 -1
  30. package/lib/packageVersion.js +1 -1
  31. package/lib/packageVersion.js.map +1 -1
  32. package/package.json +16 -16
  33. package/src/intervalCollection.ts +103 -103
  34. package/src/intervalCollectionMapInterfaces.ts +1 -9
  35. package/src/intervals/sequenceInterval.ts +88 -32
  36. package/src/packageVersion.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # @fluidframework/sequence
2
2
 
3
+ ## 2.50.0
4
+
5
+ Dependency updates only.
6
+
3
7
  ## 2.43.0
4
8
 
5
9
  ### Minor Changes
@@ -41,7 +41,7 @@ export declare class LocalIntervalCollection {
41
41
  appendIndex(index: SequenceIntervalIndex): void;
42
42
  removeIndex(index: SequenceIntervalIndex): boolean;
43
43
  removeExistingInterval(interval: SequenceIntervalClass): void;
44
- addInterval(id: string, start: SequencePlace, end: SequencePlace, props?: PropertySet, op?: ISequencedDocumentMessage, rollback?: boolean): SequenceIntervalClass;
44
+ addInterval(id: string, start: SequencePlace, end: SequencePlace, props?: PropertySet, op?: ISequencedDocumentMessage): SequenceIntervalClass;
45
45
  private linkEndpointsToInterval;
46
46
  private addIntervalToIndexes;
47
47
  add(interval: SequenceIntervalClass): void;
@@ -351,12 +351,11 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
351
351
  /**
352
352
  * {@inheritdoc IIntervalCollection.add}
353
353
  */
354
- add({ id, start, end, props, rollback, }: {
354
+ add({ id, start, end, props, }: {
355
355
  id?: string;
356
356
  start: SequencePlace;
357
357
  end: SequencePlace;
358
358
  props?: PropertySet;
359
- rollback?: boolean;
360
359
  }): SequenceIntervalClass;
361
360
  private deleteExistingInterval;
362
361
  /**
@@ -374,7 +373,7 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
374
373
  }): SequenceIntervalClass | undefined;
375
374
  private get isCollaborating();
376
375
  private hasPendingEndpointChanges;
377
- ackChange(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage): void;
376
+ ackChange(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalChangeLocalMetadata | undefined): SequenceIntervalClass | undefined;
378
377
  /**
379
378
  * {@inheritdoc IIntervalCollection.attachDeserializer}
380
379
  */
@@ -388,7 +387,7 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
388
387
  rebaseLocalInterval(original: SerializedIntervalDelta, localOpMetadata: IntervalAddLocalMetadata | IntervalChangeLocalMetadata, squash: boolean): SerializedIntervalDelta | undefined;
389
388
  private getSlideToSegment;
390
389
  private ackInterval;
391
- ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalAddLocalMetadata | undefined): SequenceIntervalClass | undefined;
390
+ ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalAddLocalMetadata | undefined): SequenceIntervalClass;
392
391
  ackDelete(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage): void;
393
392
  serializeInternal(version: "1" | "2"): ISerializedIntervalCollectionV1 | ISerializedIntervalCollectionV2;
394
393
  /**
@@ -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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"}
@@ -104,7 +104,7 @@ class LocalIntervalCollection {
104
104
  this.removeIntervalFromIndexes(interval);
105
105
  this.removeIntervalListeners(interval);
106
106
  }
107
- addInterval(id, start, end, props, op, rollback) {
107
+ addInterval(id, start, end, props, op) {
108
108
  // This check is intended to prevent scenarios where a random interval is created and then
109
109
  // inserted into a collection. The aim is to ensure that the collection is created first
110
110
  // then the user can create/add intervals based on the collection
@@ -112,7 +112,7 @@ class LocalIntervalCollection {
112
112
  props[internal_2.reservedRangeLabelsKey][0] !== this.label) {
113
113
  throw new internal_3.LoggingError("Adding an interval that belongs to another interval collection is not permitted");
114
114
  }
115
- const interval = (0, index_js_2.createSequenceInterval)(this.label, id, start, end, this.client, index_js_2.IntervalType.SlideOnRemove, op, undefined, this.options.mergeTreeReferencesCanSlideToEndpoint, props, rollback);
115
+ const interval = (0, index_js_2.createSequenceInterval)(this.label, id, start, end, this.client, index_js_2.IntervalType.SlideOnRemove, op, undefined, this.options.mergeTreeReferencesCanSlideToEndpoint, props, false);
116
116
  this.add(interval);
117
117
  return interval;
118
118
  }
@@ -213,12 +213,12 @@ function removeMetadataFromPendingChanges(localOpMetadataNode) {
213
213
  }
214
214
  function clearEmptyPendingEntry(pendingChanges, id) {
215
215
  const pending = pendingChanges[id];
216
- (0, internal_1.assert)(pending !== undefined, 0xbbf /* pending must exist for local process */);
217
- if (pending.local.empty) {
216
+ if (pending !== undefined && pending.local.empty) {
218
217
  (0, internal_1.assert)(pending.endpointChanges?.empty !== false, 0xbc0 /* endpointChanges must be empty if not pending changes */);
219
218
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
220
219
  delete pendingChanges[id];
221
220
  }
221
+ return pending;
222
222
  }
223
223
  function hasEndpointChanges(serialized) {
224
224
  return serialized.start !== undefined && serialized.end !== undefined;
@@ -234,15 +234,15 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
234
234
  super();
235
235
  this.options = options;
236
236
  this.pending = {};
237
- this.submitDelta = (op, md) => {
237
+ this.submitDelta = (op, md, consensus) => {
238
238
  const { id } = (0, index_js_2.getSerializedProperties)(op.value);
239
239
  const pending = (this.pending[id] ??= {
240
240
  local: new internal_1.DoublyLinkedList(),
241
+ consensus,
241
242
  });
242
243
  if (md.type === "add" || (md.type === "change" && hasEndpointChanges(op.value))) {
243
244
  const endpointChanges = (pending.endpointChanges ??= new internal_1.DoublyLinkedList());
244
245
  md.endpointChangesNode = endpointChanges.push(md).last;
245
- md.rebased = undefined;
246
246
  }
247
247
  submitDelta(op, pending.local.push(md).last);
248
248
  };
@@ -282,57 +282,57 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
282
282
  const localOpMetadata = removeMetadataFromPendingChanges(maybeMetadata);
283
283
  const { value } = op;
284
284
  const { id, properties } = (0, index_js_2.getSerializedProperties)(value);
285
- const { type } = localOpMetadata;
285
+ const pending = clearEmptyPendingEntry(this.pending, id);
286
+ const previous = pending?.local.empty
287
+ ? pending.consensus
288
+ : pending?.local.last?.data.interval;
289
+ const { type, interval } = localOpMetadata;
286
290
  switch (type) {
287
291
  case "add": {
288
- const interval = this.getIntervalById(id);
289
- if (interval) {
290
- this.deleteExistingInterval({ interval, local: true, rollback: true });
291
- }
292
+ this.deleteExistingInterval({ interval, local: true, rollback: true });
293
+ interval.dispose();
292
294
  break;
293
295
  }
294
296
  case "change": {
295
- const { previous } = localOpMetadata;
296
- const endpointsChanged = hasEndpointChanges(value);
297
- const start = endpointsChanged
298
- ? toOptionalSequencePlace(previous.start, previous.startSide)
299
- : undefined;
300
- const end = endpointsChanged
301
- ? toOptionalSequencePlace(previous.end, previous.endSide)
297
+ const changeProperties = Object.keys(properties).length > 0;
298
+ const deltaProps = changeProperties
299
+ ? interval.changeProperties(properties, undefined, true)
302
300
  : undefined;
303
- this.change(id, {
304
- start,
305
- end,
306
- props: Object.keys(properties).length > 0 ? properties : undefined,
307
- rollback: true,
308
- });
301
+ if (localOpMetadata.endpointChangesNode !== undefined) {
302
+ this.localCollection?.removeExistingInterval(interval);
303
+ (0, internal_1.assert)(previous !== undefined, 0xbd2 /* must have existed to change */);
304
+ this.localCollection?.add(previous);
305
+ this.emitChange(previous, interval, true, true);
306
+ }
307
+ if (previous !== interval) {
308
+ interval.dispose();
309
+ }
310
+ if (changeProperties) {
311
+ this.emit("propertyChanged", previous, deltaProps, true, undefined);
312
+ }
309
313
  break;
310
314
  }
311
315
  case "delete": {
312
- const { previous } = localOpMetadata;
313
- this.add({
314
- id,
315
- start: toSequencePlace(previous.start, previous.startSide),
316
- end: toSequencePlace(previous.end, previous.endSide),
317
- props: Object.keys(properties).length > 0 ? properties : undefined,
318
- rollback: true,
319
- });
316
+ (0, internal_1.assert)(previous !== undefined, 0xbd3 /* must have existed to delete */);
317
+ this.localCollection?.add(previous);
318
+ this.emit("addInterval", previous, true, undefined);
320
319
  break;
321
320
  }
322
321
  default:
323
322
  (0, internal_1.unreachableCase)(type);
324
323
  }
325
- clearEmptyPendingEntry(this.pending, id);
326
324
  }
327
325
  process(op, local, message, maybeMetadata) {
328
326
  const localOpMetadata = local
329
327
  ? removeMetadataFromPendingChanges(maybeMetadata)
330
328
  : undefined;
331
329
  const { opName, value } = op;
330
+ const { id } = (0, index_js_2.getSerializedProperties)(value);
332
331
  (0, internal_1.assert)((local === false && localOpMetadata === undefined) || opName === localOpMetadata?.type, 0xbc1 /* must be same type */);
332
+ let newConsensus = localOpMetadata?.interval;
333
333
  switch (opName) {
334
334
  case "add": {
335
- this.ackAdd(value, local, message,
335
+ newConsensus = this.ackAdd(value, local, message,
336
336
  // this cast is safe because of the above assert which
337
337
  // validates the op and metadata types match for local changes
338
338
  localOpMetadata);
@@ -343,15 +343,17 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
343
343
  break;
344
344
  }
345
345
  case "change": {
346
- this.ackChange(value, local, message);
346
+ newConsensus = this.ackChange(value, local, message, // this cast is safe because of the above assert which
347
+ // validates the op and metadata types match for local changes
348
+ localOpMetadata);
347
349
  break;
348
350
  }
349
351
  default:
350
352
  (0, internal_1.unreachableCase)(opName);
351
353
  }
352
- if (local) {
353
- const { id } = (0, index_js_2.getSerializedProperties)(value);
354
- clearEmptyPendingEntry(this.pending, id);
354
+ const pending = clearEmptyPendingEntry(this.pending, id);
355
+ if (pending !== undefined) {
356
+ pending.consensus = newConsensus;
355
357
  }
356
358
  }
357
359
  resubmitMessage(op, maybeMetadata, squash) {
@@ -449,7 +451,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
449
451
  for (const pending of Object.values(this.pending)) {
450
452
  if (pending?.endpointChanges !== undefined) {
451
453
  for (const local of pending.endpointChanges) {
452
- local.data.rebased = this.computeRebasedPositions(local.data, squash);
454
+ this.rebaseLocalInterval(local.data.interval.serialize(), local.data, squash);
453
455
  }
454
456
  }
455
457
  }
@@ -512,7 +514,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
512
514
  /**
513
515
  * {@inheritdoc IIntervalCollection.add}
514
516
  */
515
- add({ id, start, end, props, rollback, }) {
517
+ add({ id, start, end, props, }) {
516
518
  if (!this.localCollection) {
517
519
  throw new internal_3.LoggingError("attach must be called prior to adding intervals");
518
520
  }
@@ -523,7 +525,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
523
525
  endSide !== undefined, 0x793 /* start and end cannot be undefined because they were not passed in as undefined */);
524
526
  this.assertStickinessEnabled(start, end);
525
527
  const intervalId = id ?? (0, uuid_1.v4)();
526
- const interval = this.localCollection.addInterval(intervalId, toSequencePlace(startPos, startSide), toSequencePlace(endPos, endSide), props, undefined, rollback);
528
+ const interval = this.localCollection.addInterval(intervalId, toSequencePlace(startPos, startSide), toSequencePlace(endPos, endSide), props, undefined);
527
529
  if (interval) {
528
530
  if (!this.isCollaborating) {
529
531
  setSlideOnRemove(interval.start);
@@ -531,7 +533,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
531
533
  }
532
534
  const serializedInterval = interval.serialize();
533
535
  const localSeq = this.getNextLocalSeq();
534
- if (this.isCollaborating && rollback !== true) {
536
+ if (this.isCollaborating) {
535
537
  this.submitDelta({
536
538
  opName: "add",
537
539
  value: serializedInterval,
@@ -561,8 +563,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
561
563
  }, {
562
564
  type: "delete",
563
565
  localSeq: this.getNextLocalSeq(),
564
- previous: value,
565
- });
566
+ }, interval);
566
567
  }
567
568
  else {
568
569
  if (this.onDeserialize) {
@@ -579,7 +580,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
579
580
  if (!this.localCollection) {
580
581
  throw new internal_3.LoggingError("Attach must be called before accessing intervals");
581
582
  }
582
- const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
583
+ const interval = this.getIntervalById(id);
583
584
  if (interval) {
584
585
  this.deleteExistingInterval({ interval, local: true });
585
586
  }
@@ -627,13 +628,12 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
627
628
  const metadata = {
628
629
  type: "change",
629
630
  localSeq,
630
- previous: interval.serialize(),
631
631
  interval: newInterval ?? interval,
632
632
  };
633
633
  this.submitDelta({
634
634
  opName: "change",
635
635
  value: serializedInterval,
636
- }, metadata);
636
+ }, metadata, interval);
637
637
  }
638
638
  if (deltaProps !== undefined) {
639
639
  this.emit("propertyChanged", interval, deltaProps, true, undefined);
@@ -657,7 +657,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
657
657
  hasPendingEndpointChanges(id) {
658
658
  return this.pending[id]?.endpointChanges?.empty === false;
659
659
  }
660
- ackChange(serializedInterval, local, op) {
660
+ ackChange(serializedInterval, local, op, localOpMetadata) {
661
661
  if (!this.localCollection) {
662
662
  throw new internal_3.LoggingError("Attach must be called before accessing intervals");
663
663
  }
@@ -666,44 +666,39 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
666
666
  // strip it out of the properties here.
667
667
  const { id, properties } = (0, index_js_2.getSerializedProperties)(serializedInterval);
668
668
  (0, internal_1.assert)(id !== undefined, 0x3fe /* id must exist on the interval */);
669
- const interval = this.getIntervalById(id);
670
- if (!interval) {
671
- // The interval has been removed locally; no-op.
672
- return;
673
- }
674
669
  if (local) {
670
+ (0, internal_1.assert)(localOpMetadata !== undefined, 0xbd4 /* local must have metadata */);
671
+ const { interval } = localOpMetadata;
675
672
  interval.ackPropertiesChange(properties, op);
676
673
  this.ackInterval(interval, op);
674
+ return interval;
677
675
  }
678
676
  else {
679
- // If there are pending changes with this ID, don't apply the remote start/end change, as the local ack
680
- // should be the winning change.
681
- let start;
682
- let end;
683
- // Track pending start/end independently of one another.
684
- if (!this.hasPendingEndpointChanges(id)) {
685
- start = serializedInterval.start;
686
- end = serializedInterval.end;
687
- }
688
- let newInterval = interval;
689
- if (start !== undefined || end !== undefined) {
690
- // If changeInterval gives us a new interval, work with that one. Otherwise keep working with
691
- // the one we originally found in the tree.
692
- newInterval =
693
- this.localCollection.changeInterval(interval, toOptionalSequencePlace(start, serializedInterval.startSide ?? internal_2.Side.Before), toOptionalSequencePlace(end, serializedInterval.endSide ?? internal_2.Side.Before), op) ?? interval;
694
- }
695
- const deltaProps = newInterval.changeProperties(properties, op);
696
- if (this.onDeserialize) {
697
- this.onDeserialize(newInterval);
698
- }
699
- if (newInterval !== interval) {
700
- this.emitChange(newInterval, interval, local, false, op);
677
+ const latestInterval = this.getIntervalById(id);
678
+ const intervalToChange = this.pending[id]?.consensus ?? latestInterval;
679
+ const isLatestInterval = intervalToChange === latestInterval;
680
+ if (!intervalToChange) {
681
+ return intervalToChange;
682
+ }
683
+ const deltaProps = intervalToChange.changeProperties(properties, op);
684
+ let newInterval = intervalToChange;
685
+ if (hasEndpointChanges(serializedInterval)) {
686
+ const { start, end, startSide, endSide } = serializedInterval;
687
+ newInterval = intervalToChange.modify("", toOptionalSequencePlace(start, startSide ?? internal_2.Side.Before), toOptionalSequencePlace(end, endSide ?? internal_2.Side.Before), op);
688
+ if (isLatestInterval) {
689
+ this.localCollection.removeExistingInterval(intervalToChange);
690
+ this.localCollection.add(newInterval);
691
+ this.emitChange(newInterval, intervalToChange, local, false, op);
692
+ if (this.onDeserialize) {
693
+ this.onDeserialize(newInterval);
694
+ }
695
+ }
701
696
  }
702
- const changedProperties = Object.keys(properties).length > 0;
703
- if (changedProperties) {
704
- this.emit("propertyChanged", interval, deltaProps, local, op);
705
- this.emit("changed", interval, deltaProps, undefined, local, false);
697
+ if (deltaProps !== undefined && Object.keys(deltaProps).length > 0) {
698
+ this.emit("propertyChanged", latestInterval, deltaProps, local, op);
699
+ this.emit("changed", latestInterval, deltaProps, undefined, local, false);
706
700
  }
701
+ return newInterval;
707
702
  }
708
703
  }
709
704
  /**
@@ -737,8 +732,8 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
737
732
  }
738
733
  const { localSeq, interval } = localOpMetadata;
739
734
  const { id } = (0, index_js_2.getSerializedProperties)(original);
740
- const rebasedEndpoint = (localOpMetadata.rebased ??= this.computeRebasedPositions(localOpMetadata, squash));
741
- const localInterval = this.localCollection.idIntervalIndex.getIntervalById(id);
735
+ const rebasedEndpoint = this.computeRebasedPositions(localOpMetadata, squash);
736
+ const localInterval = this.getIntervalById(id);
742
737
  // if the interval slid off the string, rebase the op to be a noop and delete the interval.
743
738
  if (rebasedEndpoint === "detached") {
744
739
  if (localInterval !== undefined &&
@@ -761,8 +756,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
761
756
  this.localCollection.add(interval);
762
757
  this.emitChange(interval, old, true, true);
763
758
  }
764
- this.client.removeLocalReferencePosition(old.start);
765
- this.client.removeLocalReferencePosition(old.end);
759
+ old.dispose();
766
760
  }
767
761
  return {
768
762
  ...original,
@@ -811,10 +805,13 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
811
805
  }
812
806
  // `interval`'s endpoints will get modified in-place, so clone it prior to doing so for event emission.
813
807
  const oldInterval = interval.clone();
814
- // In this case, where we change the start or end of an interval,
815
- // it is necessary to remove and re-add the interval listeners.
816
- // This ensures that the correct listeners are added to the LocalReferencePosition.
817
- this.localCollection.removeExistingInterval(interval);
808
+ const isLatestInterval = this.getIntervalById(id) === interval;
809
+ if (isLatestInterval) {
810
+ // In this case, where we change the start or end of an interval,
811
+ // it is necessary to remove and re-add the interval listeners.
812
+ // This ensures that the correct listeners are added to the LocalReferencePosition.
813
+ this.localCollection.removeExistingInterval(interval);
814
+ }
818
815
  if (!this.client) {
819
816
  throw new internal_3.LoggingError("client does not exist");
820
817
  }
@@ -856,19 +853,18 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
856
853
  oldInterval.end.refType = internal_2.ReferenceType.Transient;
857
854
  oldSeg?.localRefs?.addLocalRef(oldInterval.end, oldInterval.end.getOffset());
858
855
  }
859
- this.localCollection.add(interval);
860
- this.emitChange(interval, oldInterval, true, true, op);
856
+ if (isLatestInterval) {
857
+ this.localCollection.add(interval);
858
+ this.emitChange(interval, oldInterval, true, true, op);
859
+ }
861
860
  }
862
861
  }
863
862
  ackAdd(serializedInterval, local, op, localOpMetadata) {
864
863
  const { id, properties } = (0, index_js_2.getSerializedProperties)(serializedInterval);
865
864
  if (local) {
866
865
  (0, internal_1.assert)(localOpMetadata !== undefined, 0x553 /* op metadata should be defined for local op */);
867
- const localInterval = this.getIntervalById(id);
868
- if (localInterval) {
869
- this.ackInterval(localInterval, op);
870
- }
871
- return;
866
+ this.ackInterval(localOpMetadata.interval, op);
867
+ return localOpMetadata.interval;
872
868
  }
873
869
  if (!this.localCollection) {
874
870
  throw new internal_3.LoggingError("attachSequence must be called");
@@ -893,7 +889,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
893
889
  throw new internal_3.LoggingError("attach must be called prior to deleting intervals");
894
890
  }
895
891
  const { id } = (0, index_js_2.getSerializedProperties)(serializedInterval);
896
- const interval = this.localCollection.idIntervalIndex.getIntervalById(id);
892
+ const interval = this.getIntervalById(id);
897
893
  if (interval) {
898
894
  this.deleteExistingInterval({ interval, local, op });
899
895
  }