@fluidframework/merge-tree 0.59.4001 → 1.1.0-75972

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 (80) hide show
  1. package/.eslintrc.js +1 -1
  2. package/README.md +1 -1
  3. package/REFERENCEPOSITIONS.md +199 -0
  4. package/dist/client.d.ts +30 -4
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +89 -47
  7. package/dist/client.js.map +1 -1
  8. package/dist/collections.d.ts +5 -4
  9. package/dist/collections.d.ts.map +1 -1
  10. package/dist/collections.js +17 -18
  11. package/dist/collections.js.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/localReference.d.ts +11 -3
  17. package/dist/localReference.d.ts.map +1 -1
  18. package/dist/localReference.js +25 -8
  19. package/dist/localReference.js.map +1 -1
  20. package/dist/mergeTree.d.ts +23 -3
  21. package/dist/mergeTree.d.ts.map +1 -1
  22. package/dist/mergeTree.js +136 -48
  23. package/dist/mergeTree.js.map +1 -1
  24. package/dist/mergeTreeDeltaCallback.d.ts +8 -10
  25. package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
  26. package/dist/mergeTreeDeltaCallback.js +6 -10
  27. package/dist/mergeTreeDeltaCallback.js.map +1 -1
  28. package/dist/opBuilder.js +6 -5
  29. package/dist/opBuilder.js.map +1 -1
  30. package/dist/ops.d.ts +12 -10
  31. package/dist/ops.d.ts.map +1 -1
  32. package/dist/ops.js +7 -7
  33. package/dist/ops.js.map +1 -1
  34. package/dist/referencePositions.d.ts +1 -1
  35. package/dist/referencePositions.d.ts.map +1 -1
  36. package/dist/referencePositions.js +3 -2
  37. package/dist/referencePositions.js.map +1 -1
  38. package/lib/client.d.ts +30 -4
  39. package/lib/client.d.ts.map +1 -1
  40. package/lib/client.js +89 -47
  41. package/lib/client.js.map +1 -1
  42. package/lib/collections.d.ts +5 -4
  43. package/lib/collections.d.ts.map +1 -1
  44. package/lib/collections.js +17 -18
  45. package/lib/collections.js.map +1 -1
  46. package/lib/index.d.ts +1 -1
  47. package/lib/index.d.ts.map +1 -1
  48. package/lib/index.js +1 -1
  49. package/lib/index.js.map +1 -1
  50. package/lib/localReference.d.ts +11 -3
  51. package/lib/localReference.d.ts.map +1 -1
  52. package/lib/localReference.js +23 -7
  53. package/lib/localReference.js.map +1 -1
  54. package/lib/mergeTree.d.ts +23 -3
  55. package/lib/mergeTree.d.ts.map +1 -1
  56. package/lib/mergeTree.js +137 -49
  57. package/lib/mergeTree.js.map +1 -1
  58. package/lib/mergeTreeDeltaCallback.d.ts +8 -10
  59. package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
  60. package/lib/mergeTreeDeltaCallback.js +6 -10
  61. package/lib/mergeTreeDeltaCallback.js.map +1 -1
  62. package/lib/opBuilder.js +6 -5
  63. package/lib/opBuilder.js.map +1 -1
  64. package/lib/ops.d.ts +12 -10
  65. package/lib/ops.d.ts.map +1 -1
  66. package/lib/ops.js +7 -7
  67. package/lib/ops.js.map +1 -1
  68. package/lib/referencePositions.d.ts +1 -1
  69. package/lib/referencePositions.d.ts.map +1 -1
  70. package/lib/referencePositions.js +3 -2
  71. package/lib/referencePositions.js.map +1 -1
  72. package/package.json +17 -94
  73. package/src/client.ts +87 -27
  74. package/src/collections.ts +5 -4
  75. package/src/index.ts +1 -1
  76. package/src/localReference.ts +33 -8
  77. package/src/mergeTree.ts +136 -43
  78. package/src/mergeTreeDeltaCallback.ts +8 -10
  79. package/src/ops.ts +13 -10
  80. package/src/referencePositions.ts +3 -2
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { Comparer, List, Stack } from "./collections";
6
- import { LocalReference, LocalReferenceCollection } from "./localReference";
6
+ import { LocalReference, LocalReferenceCollection, LocalReferencePosition } from "./localReference";
7
7
  import { IMergeTreeDeltaOpArgs, MergeTreeDeltaCallback, MergeTreeMaintenanceCallback } from "./mergeTreeDeltaCallback";
8
8
  import { TrackingGroupCollection } from "./mergeTreeTracking";
9
9
  import { ICombiningOp, IJSONSegment, IMarkerDef, IRelativePosition, ReferenceType } from "./ops";
@@ -340,6 +340,26 @@ export declare class MergeTree {
340
340
  segment: T | undefined;
341
341
  offset: number | undefined;
342
342
  };
343
+ /**
344
+ * @internal must only be used by client
345
+ * @param segoff - The segment and offset to slide from
346
+ * @returns The segment and offset to slide to
347
+ */
348
+ _getSlideToSegment(segoff: {
349
+ segment: ISegment | undefined;
350
+ offset: number | undefined;
351
+ }): {
352
+ segment: ISegment | undefined;
353
+ offset: number | undefined;
354
+ };
355
+ /**
356
+ * This method should only be called when the current client sequence number is
357
+ * max(remove segment sequence number, add reference sequence number).
358
+ * Otherwise eventual consistency is not guaranteed.
359
+ * See `packages\dds\merge-tree\REFERENCEPOSITIONS.md`
360
+ */
361
+ private slideReferences;
362
+ private updateSegmentRefsAfterMarkRemoved;
343
363
  private blockLength;
344
364
  private nodeLength;
345
365
  addMinSeqListener(minRequired: number, onMinGE: (minSeq: number) => void): void;
@@ -416,8 +436,8 @@ export declare class MergeTree {
416
436
  annotateRange(start: number, end: number, props: PropertySet, combiningOp: ICombiningOp | undefined, refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs): void;
417
437
  markRangeRemoved(start: number, end: number, refSeq: number, clientId: number, seq: number, overwrite: boolean | undefined, opArgs: IMergeTreeDeltaOpArgs): void;
418
438
  private nodeUpdateLengthNewStructure;
419
- removeLocalReferencePosition(lref: ReferencePosition): ReferencePosition | undefined;
420
- createLocalReferencePosition(segment: ISegment, offset: number, refType: ReferenceType, properties: PropertySet | undefined, client: Client): ReferencePosition;
439
+ removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;
440
+ createLocalReferencePosition(segment: ISegment, offset: number | undefined, refType: ReferenceType, properties: PropertySet | undefined, client: Client): LocalReferencePosition;
421
441
  /**
422
442
  * @deprecated - use removeLocalReferencePosition
423
443
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
package/lib/mergeTree.js CHANGED
@@ -6,11 +6,13 @@
6
6
  /* eslint-disable @typescript-eslint/consistent-type-assertions */
7
7
  /* eslint-disable @typescript-eslint/prefer-optional-chain, no-bitwise */
8
8
  import { assert } from "@fluidframework/common-utils";
9
+ import { UsageError } from "@fluidframework/container-utils";
9
10
  import { Heap, ListMakeHead, Stack, } from "./collections";
10
11
  import { LocalClientId, NonCollabClient, TreeMaintenanceSequenceNumber, UnassignedSequenceNumber, UniversalSequenceNumber, } from "./constants";
11
12
  import { LocalReference, LocalReferenceCollection } from "./localReference";
13
+ import { MergeTreeMaintenanceType, } from "./mergeTreeDeltaCallback";
12
14
  import { TrackingGroupCollection } from "./mergeTreeTracking";
13
- import { ReferenceType, } from "./ops";
15
+ import { MergeTreeDeltaType, ReferenceType, } from "./ops";
14
16
  import { PartialSequenceLengths } from "./partialLengths";
15
17
  import { clone, createMap, extend, extendIfUndefined, matchProperties, } from "./properties";
16
18
  import { refTypeIncludesFlag, refGetRangeLabels, refGetTileLabels, refHasRangeLabel, refHasRangeLabels, refHasTileLabel, refHasTileLabels, } from "./referencePositions";
@@ -22,6 +24,13 @@ export function toRemovalInfo(maybe) {
22
24
  }
23
25
  assert((maybe === null || maybe === void 0 ? void 0 : maybe.removedClientIds) === undefined && (maybe === null || maybe === void 0 ? void 0 : maybe.removedSeq) === undefined, 0x2bf /* "both removedClientIds and removedSeq should be set or not set" */);
24
26
  }
27
+ function isRemoved(segment) {
28
+ return toRemovalInfo(segment) !== undefined;
29
+ }
30
+ function isRemovedAndAcked(segment) {
31
+ const removalInfo = toRemovalInfo(segment);
32
+ return removalInfo !== undefined && removalInfo.removedSeq !== UnassignedSequenceNumber;
33
+ }
25
34
  export class MergeNode {
26
35
  constructor() {
27
36
  this.index = 0;
@@ -276,16 +285,16 @@ export class BaseSegment extends MergeNode {
276
285
  const currentSegmentGroup = this.segmentGroups.dequeue();
277
286
  assert(currentSegmentGroup === segmentGroup, 0x043 /* "On ack, unexpected segmentGroup!" */);
278
287
  switch (opArgs.op.type) {
279
- case 2 /* ANNOTATE */:
288
+ case MergeTreeDeltaType.ANNOTATE:
280
289
  assert(!!this.propertyManager, 0x044 /* "On annotate ack, missing segment property manager!" */);
281
290
  this.propertyManager.ackPendingProperties(opArgs.op);
282
291
  return true;
283
- case 0 /* INSERT */:
292
+ case MergeTreeDeltaType.INSERT:
284
293
  assert(this.seq === UnassignedSequenceNumber, 0x045 /* "On insert, seq number already assigned!" */);
285
294
  this.seq = opArgs.sequencedMessage.sequenceNumber;
286
295
  this.localSeq = undefined;
287
296
  return true;
288
- case 1 /* REMOVE */:
297
+ case MergeTreeDeltaType.REMOVE:
289
298
  const removalInfo = toRemovalInfo(this);
290
299
  assert(removalInfo !== undefined, 0x046 /* "On remove ack, missing removal info!" */);
291
300
  this.localRemovedSeq = undefined;
@@ -647,7 +656,7 @@ export class MergeTree {
647
656
  const next = segment.splitAt(pos);
648
657
  if (this.mergeTreeMaintenanceCallback) {
649
658
  this.mergeTreeMaintenanceCallback({
650
- operation: -2 /* SPLIT */,
659
+ operation: MergeTreeMaintenanceType.SPLIT,
651
660
  deltaSegments: [{ segment }, { segment: next }],
652
661
  }, undefined);
653
662
  }
@@ -789,7 +798,7 @@ export class MergeTree {
789
798
  // Notify maintenance event observers that the segment is being unlinked from the MergeTree
790
799
  if (this.mergeTreeMaintenanceCallback) {
791
800
  this.mergeTreeMaintenanceCallback({
792
- operation: -3 /* UNLINK */,
801
+ operation: MergeTreeMaintenanceType.UNLINK,
793
802
  deltaSegments: [{ segment }],
794
803
  }, undefined);
795
804
  }
@@ -808,7 +817,7 @@ export class MergeTree {
808
817
  prevSegment.append(segment);
809
818
  if (this.mergeTreeMaintenanceCallback) {
810
819
  this.mergeTreeMaintenanceCallback({
811
- operation: -1 /* APPEND */,
820
+ operation: MergeTreeMaintenanceType.APPEND,
812
821
  deltaSegments: [{ segment: prevSegment }, { segment }],
813
822
  }, undefined);
814
823
  }
@@ -1015,6 +1024,105 @@ export class MergeTree {
1015
1024
  this.searchBlock(this.root, pos, 0, refSeq, clientId, { leaf }, undefined);
1016
1025
  return { segment, offset };
1017
1026
  }
1027
+ /**
1028
+ * @internal must only be used by client
1029
+ * @param segoff - The segment and offset to slide from
1030
+ * @returns The segment and offset to slide to
1031
+ */
1032
+ _getSlideToSegment(segoff) {
1033
+ if (!segoff.segment || !isRemovedAndAcked(segoff.segment)) {
1034
+ return segoff;
1035
+ }
1036
+ let slideToSegment;
1037
+ const goFurtherToFindSlideToSegment = (seg) => {
1038
+ if (seg.seq !== UnassignedSequenceNumber && !isRemovedAndAcked(seg)) {
1039
+ slideToSegment = seg;
1040
+ return false;
1041
+ }
1042
+ return true;
1043
+ };
1044
+ // Slide to the next farthest valid segment in the tree.
1045
+ this.rightExcursion(segoff.segment, goFurtherToFindSlideToSegment);
1046
+ if (slideToSegment) {
1047
+ return { segment: slideToSegment, offset: 0 };
1048
+ }
1049
+ // If no such segment is found, slide to the last valid segment.
1050
+ this.leftExcursion(segoff.segment, goFurtherToFindSlideToSegment);
1051
+ // Workaround TypeScript issue (https://github.com/microsoft/TypeScript/issues/9998)
1052
+ slideToSegment = slideToSegment;
1053
+ if (slideToSegment) {
1054
+ // If slid nearer then offset should be at the end of the segment
1055
+ return { segment: slideToSegment, offset: slideToSegment.cachedLength - 1 };
1056
+ }
1057
+ return { segment: undefined, offset: 0 };
1058
+ }
1059
+ /**
1060
+ * This method should only be called when the current client sequence number is
1061
+ * max(remove segment sequence number, add reference sequence number).
1062
+ * Otherwise eventual consistency is not guaranteed.
1063
+ * See `packages\dds\merge-tree\REFERENCEPOSITIONS.md`
1064
+ */
1065
+ slideReferences(segment, refsToSlide) {
1066
+ var _a, _b, _c, _d, _e;
1067
+ assert(isRemovedAndAcked(segment), 0x2f1 /* slideReferences from a segment which has not been removed and acked */);
1068
+ assert(!!segment.localRefs, 0x2f2 /* Ref not in the segment localRefs */);
1069
+ const newSegoff = this._getSlideToSegment({ segment, offset: 0 });
1070
+ const newSegment = newSegoff.segment;
1071
+ if (newSegment && !newSegment.localRefs) {
1072
+ newSegment.localRefs = new LocalReferenceCollection(newSegment);
1073
+ }
1074
+ for (const ref of refsToSlide) {
1075
+ (_b = (_a = ref.callbacks) === null || _a === void 0 ? void 0 : _a.beforeSlide) === null || _b === void 0 ? void 0 : _b.call(_a);
1076
+ const removedRef = segment.localRefs.removeLocalRef(ref);
1077
+ assert(ref === removedRef, 0x2f3 /* Ref not in the segment localRefs */);
1078
+ if (!newSegment) {
1079
+ // No valid segments (all nodes removed or not yet created)
1080
+ ref.segment = undefined;
1081
+ ref.offset = 0;
1082
+ }
1083
+ else {
1084
+ ref.segment = newSegment;
1085
+ ref.offset = (_c = newSegoff.offset) !== null && _c !== void 0 ? _c : 0;
1086
+ assert(!!newSegment.localRefs, 0x2f4 /* localRefs must be allocated */);
1087
+ newSegment.localRefs.addLocalRef(ref);
1088
+ }
1089
+ (_e = (_d = ref.callbacks) === null || _d === void 0 ? void 0 : _d.afterSlide) === null || _e === void 0 ? void 0 : _e.call(_d);
1090
+ }
1091
+ // TODO is it required to update the path lengths?
1092
+ if (newSegment) {
1093
+ this.blockUpdatePathLengths(newSegment.parent, TreeMaintenanceSequenceNumber, LocalClientId);
1094
+ }
1095
+ }
1096
+ updateSegmentRefsAfterMarkRemoved(segment, pending) {
1097
+ if (!segment.localRefs || segment.localRefs.empty) {
1098
+ return;
1099
+ }
1100
+ const refsToSlide = [];
1101
+ const refsToStay = [];
1102
+ for (const lref of segment.localRefs) {
1103
+ if (refTypeIncludesFlag(lref, ReferenceType.StayOnRemove)) {
1104
+ refsToStay.push(lref);
1105
+ }
1106
+ else if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {
1107
+ if (pending) {
1108
+ refsToStay.push(lref);
1109
+ }
1110
+ else {
1111
+ refsToSlide.push(lref);
1112
+ }
1113
+ }
1114
+ }
1115
+ // Rethink implementation of keeping and sliding refs once other reference
1116
+ // changes are complete. This works but is fragile and possibly slow.
1117
+ if (!pending) {
1118
+ this.slideReferences(segment, refsToSlide);
1119
+ }
1120
+ segment.localRefs.clear();
1121
+ for (const lref of refsToStay) {
1122
+ lref.segment = segment;
1123
+ segment.localRefs.addLocalRef(lref);
1124
+ }
1125
+ }
1018
1126
  blockLength(node, refSeq, clientId) {
1019
1127
  if ((this.collabWindow.collaborating) && (clientId !== this.collabWindow.clientId)) {
1020
1128
  return node.partialLengths.getPartialLength(refSeq, clientId);
@@ -1253,7 +1361,11 @@ export class MergeTree {
1253
1361
  if (pendingSegmentGroup !== undefined) {
1254
1362
  const deltaSegments = [];
1255
1363
  pendingSegmentGroup.segments.map((pendingSegment) => {
1256
- overwrite = !pendingSegment.ack(pendingSegmentGroup, opArgs, this) || overwrite;
1364
+ const overlappingRemove = !pendingSegment.ack(pendingSegmentGroup, opArgs, this);
1365
+ overwrite = overlappingRemove || overwrite;
1366
+ if (!overlappingRemove && opArgs.op.type === MergeTreeDeltaType.REMOVE) {
1367
+ this.updateSegmentRefsAfterMarkRemoved(pendingSegment, false);
1368
+ }
1257
1369
  if (MergeTree.options.zamboniSegments) {
1258
1370
  this.addToLRUSet(pendingSegment, seq);
1259
1371
  }
@@ -1267,7 +1379,7 @@ export class MergeTree {
1267
1379
  if (this.mergeTreeMaintenanceCallback) {
1268
1380
  this.mergeTreeMaintenanceCallback({
1269
1381
  deltaSegments,
1270
- operation: -4 /* ACKNOWLEDGED */,
1382
+ operation: MergeTreeMaintenanceType.ACKNOWLEDGED,
1271
1383
  }, opArgs);
1272
1384
  }
1273
1385
  const clientId = this.collabWindow.clientId;
@@ -1330,7 +1442,7 @@ export class MergeTree {
1330
1442
  // opArgs == undefined => loading snapshot or test code
1331
1443
  if (this.mergeTreeDeltaCallback && opArgs !== undefined) {
1332
1444
  this.mergeTreeDeltaCallback(opArgs, {
1333
- operation: 0 /* INSERT */,
1445
+ operation: MergeTreeDeltaType.INSERT,
1334
1446
  deltaSegments: segments.map((segment) => ({ segment })),
1335
1447
  });
1336
1448
  }
@@ -1433,7 +1545,7 @@ export class MergeTree {
1433
1545
  if (this.mergeTreeDeltaCallback) {
1434
1546
  this.mergeTreeDeltaCallback(opArgs, {
1435
1547
  deltaSegments: [{ segment: insertSegment }],
1436
- operation: 0 /* INSERT */,
1548
+ operation: MergeTreeDeltaType.INSERT,
1437
1549
  });
1438
1550
  }
1439
1551
  if (this.collabWindow.collaborating) {
@@ -1807,7 +1919,7 @@ export class MergeTree {
1807
1919
  // OpArgs == undefined => test code
1808
1920
  if (this.mergeTreeDeltaCallback && deltaSegments.length > 0) {
1809
1921
  this.mergeTreeDeltaCallback(opArgs, {
1810
- operation: 2 /* ANNOTATE */,
1922
+ operation: MergeTreeDeltaType.ANNOTATE,
1811
1923
  deltaSegments,
1812
1924
  });
1813
1925
  }
@@ -1823,7 +1935,7 @@ export class MergeTree {
1823
1935
  this.ensureIntervalBoundary(end, refSeq, clientId);
1824
1936
  let segmentGroup;
1825
1937
  const removedSegments = [];
1826
- const savedLocalRefs = [];
1938
+ const segmentsWithRefs = [];
1827
1939
  const localSeq = seq === UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
1828
1940
  const markRemoved = (segment, pos, _start, _end) => {
1829
1941
  const existingRemovalInfo = toRemovalInfo(segment);
@@ -1848,10 +1960,9 @@ export class MergeTree {
1848
1960
  segment.removedSeq = seq;
1849
1961
  segment.localRemovedSeq = localSeq;
1850
1962
  removedSegments.push({ segment });
1851
- if (segment.localRefs && !segment.localRefs.empty) {
1852
- savedLocalRefs.push(segment.localRefs);
1853
- }
1854
- segment.localRefs = undefined;
1963
+ }
1964
+ if (segment.localRefs && !segment.localRefs.empty) {
1965
+ segmentsWithRefs.push(segment);
1855
1966
  }
1856
1967
  // Save segment so can assign removed sequence number when acked by server
1857
1968
  if (this.collabWindow.collaborating) {
@@ -1876,42 +1987,14 @@ export class MergeTree {
1876
1987
  return true;
1877
1988
  };
1878
1989
  this.mapRange({ leaf: markRemoved, post: afterMarkRemoved }, refSeq, clientId, undefined, start, end);
1879
- if (savedLocalRefs.length > 0) {
1880
- const length = this.getLength(refSeq, clientId);
1881
- let refSegment;
1882
- if (start < length) {
1883
- const afterSegOff = this.getContainingSegment(start, refSeq, clientId);
1884
- refSegment = afterSegOff.segment;
1885
- assert(!!refSegment, 0x052 /* "Missing reference segment!" */);
1886
- if (!refSegment.localRefs) {
1887
- refSegment.localRefs = new LocalReferenceCollection(refSegment);
1888
- }
1889
- refSegment.localRefs.addBeforeTombstones(...savedLocalRefs);
1890
- }
1891
- else if (length > 0) {
1892
- const beforeSegOff = this.getContainingSegment(length - 1, refSeq, clientId);
1893
- refSegment = beforeSegOff.segment;
1894
- assert(!!refSegment, 0x053 /* "Missing reference segment!" */);
1895
- if (!refSegment.localRefs) {
1896
- refSegment.localRefs = new LocalReferenceCollection(refSegment);
1897
- }
1898
- refSegment.localRefs.addAfterTombstones(...savedLocalRefs);
1899
- }
1900
- else {
1901
- // TODO: The tree is empty, so there isn't anywhere to put these
1902
- // they should be preserved somehow
1903
- for (const refsCollection of savedLocalRefs) {
1904
- refsCollection.clear();
1905
- }
1906
- }
1907
- if (refSegment) {
1908
- this.blockUpdatePathLengths(refSegment.parent, TreeMaintenanceSequenceNumber, LocalClientId);
1909
- }
1990
+ const pending = this.collabWindow.collaborating && clientId === this.collabWindow.clientId;
1991
+ for (const segment of segmentsWithRefs) {
1992
+ this.updateSegmentRefsAfterMarkRemoved(segment, pending);
1910
1993
  }
1911
1994
  // opArgs == undefined => test code
1912
1995
  if (this.mergeTreeDeltaCallback && removedSegments.length > 0) {
1913
1996
  this.mergeTreeDeltaCallback(opArgs, {
1914
- operation: 1 /* REMOVE */,
1997
+ operation: MergeTreeDeltaType.REMOVE,
1915
1998
  deltaSegments: removedSegments,
1916
1999
  });
1917
2000
  }
@@ -1940,6 +2023,11 @@ export class MergeTree {
1940
2023
  }
1941
2024
  createLocalReferencePosition(segment, offset, refType, properties, client) {
1942
2025
  var _a;
2026
+ if (isRemoved(segment)) {
2027
+ if (!refTypeIncludesFlag(refType, ReferenceType.SlideOnRemove)) {
2028
+ throw new UsageError("Can only create SlideOnRemove local reference position on a removed segment");
2029
+ }
2030
+ }
1943
2031
  const localRefs = (_a = segment.localRefs) !== null && _a !== void 0 ? _a : new LocalReferenceCollection(segment);
1944
2032
  segment.localRefs = localRefs;
1945
2033
  const segRef = localRefs.createLocalRef(offset, refType, properties, client);