@fluidframework/sequence 2.0.0-dev.6.4.0.192049 → 2.0.0-dev.7.2.0.204906

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 (226) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +130 -0
  3. package/api-extractor.json +1 -1
  4. package/api-report/sequence.api.md +717 -0
  5. package/dist/defaultMap.d.ts +1 -1
  6. package/dist/defaultMap.d.ts.map +1 -1
  7. package/dist/defaultMap.js +6 -6
  8. package/dist/defaultMap.js.map +1 -1
  9. package/dist/defaultMapInterfaces.d.ts +22 -2
  10. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  11. package/dist/defaultMapInterfaces.js.map +1 -1
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/intervalCollection.d.ts +164 -16
  17. package/dist/intervalCollection.d.ts.map +1 -1
  18. package/dist/intervalCollection.js +174 -54
  19. package/dist/intervalCollection.js.map +1 -1
  20. package/dist/intervalIndex/endpointInRangeIndex.d.ts +17 -3
  21. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  22. package/dist/intervalIndex/endpointInRangeIndex.js +12 -6
  23. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  24. package/dist/intervalIndex/endpointIndex.d.ts +19 -2
  25. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  26. package/dist/intervalIndex/endpointIndex.js +10 -5
  27. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  28. package/dist/intervalIndex/idIntervalIndex.d.ts +6 -0
  29. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  30. package/dist/intervalIndex/idIntervalIndex.js +3 -0
  31. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  32. package/dist/intervalIndex/index.d.ts +4 -4
  33. package/dist/intervalIndex/index.d.ts.map +1 -1
  34. package/dist/intervalIndex/index.js +5 -1
  35. package/dist/intervalIndex/index.js.map +1 -1
  36. package/dist/intervalIndex/intervalIndex.d.ts +1 -0
  37. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
  38. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  39. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +17 -6
  40. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  41. package/dist/intervalIndex/overlappingIntervalsIndex.js +17 -4
  42. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  43. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +5 -2
  44. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  45. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +9 -1
  46. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  47. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  48. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  49. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  50. package/dist/intervalIndex/startpointInRangeIndex.d.ts +17 -3
  51. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  52. package/dist/intervalIndex/startpointInRangeIndex.js +12 -8
  53. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  54. package/dist/intervalTree.d.ts +1 -1
  55. package/dist/intervalTree.d.ts.map +1 -1
  56. package/dist/intervals/interval.d.ts +4 -2
  57. package/dist/intervals/interval.d.ts.map +1 -1
  58. package/dist/intervals/interval.js +14 -5
  59. package/dist/intervals/interval.js.map +1 -1
  60. package/dist/intervals/intervalUtils.d.ts +51 -18
  61. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  62. package/dist/intervals/intervalUtils.js +18 -10
  63. package/dist/intervals/intervalUtils.js.map +1 -1
  64. package/dist/intervals/sequenceInterval.d.ts +28 -13
  65. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  66. package/dist/intervals/sequenceInterval.js +124 -43
  67. package/dist/intervals/sequenceInterval.js.map +1 -1
  68. package/dist/localValues.d.ts.map +1 -1
  69. package/dist/localValues.js.map +1 -1
  70. package/dist/packageVersion.d.ts +1 -1
  71. package/dist/packageVersion.js +1 -1
  72. package/dist/packageVersion.js.map +1 -1
  73. package/dist/revertibles.d.ts +3 -15
  74. package/dist/revertibles.d.ts.map +1 -1
  75. package/dist/revertibles.js +11 -19
  76. package/dist/revertibles.js.map +1 -1
  77. package/dist/sequence-alpha.d.ts +1587 -0
  78. package/dist/sequence-beta.d.ts +1507 -0
  79. package/dist/sequence-public.d.ts +1507 -0
  80. package/dist/sequence-untrimmed.d.ts +1759 -0
  81. package/dist/sequence.d.ts +8 -4
  82. package/dist/sequence.d.ts.map +1 -1
  83. package/dist/sequence.js +53 -48
  84. package/dist/sequence.js.map +1 -1
  85. package/dist/sequenceDeltaEvent.d.ts +4 -0
  86. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  87. package/dist/sequenceDeltaEvent.js +3 -0
  88. package/dist/sequenceDeltaEvent.js.map +1 -1
  89. package/dist/sequenceFactory.d.ts +3 -0
  90. package/dist/sequenceFactory.d.ts.map +1 -1
  91. package/dist/sequenceFactory.js +4 -1
  92. package/dist/sequenceFactory.js.map +1 -1
  93. package/dist/sharedIntervalCollection.d.ts +5 -0
  94. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  95. package/dist/sharedIntervalCollection.js +11 -9
  96. package/dist/sharedIntervalCollection.js.map +1 -1
  97. package/dist/sharedSequence.d.ts +6 -3
  98. package/dist/sharedSequence.d.ts.map +1 -1
  99. package/dist/sharedSequence.js +10 -8
  100. package/dist/sharedSequence.js.map +1 -1
  101. package/dist/sharedString.d.ts +17 -2
  102. package/dist/sharedString.d.ts.map +1 -1
  103. package/dist/sharedString.js +21 -7
  104. package/dist/sharedString.js.map +1 -1
  105. package/dist/tsdoc-metadata.json +1 -1
  106. package/lib/defaultMap.d.ts +1 -1
  107. package/lib/defaultMap.d.ts.map +1 -1
  108. package/lib/defaultMap.js +6 -6
  109. package/lib/defaultMap.js.map +1 -1
  110. package/lib/defaultMapInterfaces.d.ts +22 -2
  111. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  112. package/lib/defaultMapInterfaces.js.map +1 -1
  113. package/lib/index.d.ts +2 -2
  114. package/lib/index.d.ts.map +1 -1
  115. package/lib/index.js +1 -1
  116. package/lib/index.js.map +1 -1
  117. package/lib/intervalCollection.d.ts +164 -16
  118. package/lib/intervalCollection.d.ts.map +1 -1
  119. package/lib/intervalCollection.js +172 -55
  120. package/lib/intervalCollection.js.map +1 -1
  121. package/lib/intervalIndex/endpointInRangeIndex.d.ts +17 -3
  122. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  123. package/lib/intervalIndex/endpointInRangeIndex.js +12 -7
  124. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  125. package/lib/intervalIndex/endpointIndex.d.ts +19 -2
  126. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  127. package/lib/intervalIndex/endpointIndex.js +10 -6
  128. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  129. package/lib/intervalIndex/idIntervalIndex.d.ts +6 -0
  130. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  131. package/lib/intervalIndex/idIntervalIndex.js +3 -0
  132. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  133. package/lib/intervalIndex/index.d.ts +4 -4
  134. package/lib/intervalIndex/index.d.ts.map +1 -1
  135. package/lib/intervalIndex/index.js +4 -4
  136. package/lib/intervalIndex/index.js.map +1 -1
  137. package/lib/intervalIndex/intervalIndex.d.ts +1 -0
  138. package/lib/intervalIndex/intervalIndex.d.ts.map +1 -1
  139. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  140. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +17 -6
  141. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  142. package/lib/intervalIndex/overlappingIntervalsIndex.js +18 -5
  143. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  144. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +5 -2
  145. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  146. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +9 -1
  147. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  148. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  149. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  150. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  151. package/lib/intervalIndex/startpointInRangeIndex.d.ts +17 -3
  152. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  153. package/lib/intervalIndex/startpointInRangeIndex.js +12 -9
  154. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  155. package/lib/intervalTree.d.ts +1 -1
  156. package/lib/intervalTree.d.ts.map +1 -1
  157. package/lib/intervals/interval.d.ts +4 -2
  158. package/lib/intervals/interval.d.ts.map +1 -1
  159. package/lib/intervals/interval.js +14 -5
  160. package/lib/intervals/interval.js.map +1 -1
  161. package/lib/intervals/intervalUtils.d.ts +51 -18
  162. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  163. package/lib/intervals/intervalUtils.js +14 -6
  164. package/lib/intervals/intervalUtils.js.map +1 -1
  165. package/lib/intervals/sequenceInterval.d.ts +28 -13
  166. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  167. package/lib/intervals/sequenceInterval.js +125 -42
  168. package/lib/intervals/sequenceInterval.js.map +1 -1
  169. package/lib/localValues.d.ts.map +1 -1
  170. package/lib/localValues.js.map +1 -1
  171. package/lib/packageVersion.d.ts +1 -1
  172. package/lib/packageVersion.js +1 -1
  173. package/lib/packageVersion.js.map +1 -1
  174. package/lib/revertibles.d.ts +3 -15
  175. package/lib/revertibles.d.ts.map +1 -1
  176. package/lib/revertibles.js +11 -19
  177. package/lib/revertibles.js.map +1 -1
  178. package/lib/sequence.d.ts +8 -4
  179. package/lib/sequence.d.ts.map +1 -1
  180. package/lib/sequence.js +56 -49
  181. package/lib/sequence.js.map +1 -1
  182. package/lib/sequenceDeltaEvent.d.ts +4 -0
  183. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  184. package/lib/sequenceDeltaEvent.js +3 -0
  185. package/lib/sequenceDeltaEvent.js.map +1 -1
  186. package/lib/sequenceFactory.d.ts +3 -0
  187. package/lib/sequenceFactory.d.ts.map +1 -1
  188. package/lib/sequenceFactory.js +4 -1
  189. package/lib/sequenceFactory.js.map +1 -1
  190. package/lib/sharedIntervalCollection.d.ts +5 -0
  191. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  192. package/lib/sharedIntervalCollection.js +11 -9
  193. package/lib/sharedIntervalCollection.js.map +1 -1
  194. package/lib/sharedSequence.d.ts +6 -3
  195. package/lib/sharedSequence.d.ts.map +1 -1
  196. package/lib/sharedSequence.js +10 -8
  197. package/lib/sharedSequence.js.map +1 -1
  198. package/lib/sharedString.d.ts +17 -2
  199. package/lib/sharedString.d.ts.map +1 -1
  200. package/lib/sharedString.js +21 -7
  201. package/lib/sharedString.js.map +1 -1
  202. package/package.json +31 -30
  203. package/src/defaultMapInterfaces.ts +22 -2
  204. package/src/index.ts +4 -1
  205. package/src/intervalCollection.ts +423 -82
  206. package/src/intervalIndex/endpointInRangeIndex.ts +23 -11
  207. package/src/intervalIndex/endpointIndex.ts +22 -9
  208. package/src/intervalIndex/idIntervalIndex.ts +7 -1
  209. package/src/intervalIndex/index.ts +12 -3
  210. package/src/intervalIndex/intervalIndex.ts +1 -0
  211. package/src/intervalIndex/overlappingIntervalsIndex.ts +40 -15
  212. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +10 -1
  213. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
  214. package/src/intervalIndex/startpointInRangeIndex.ts +23 -18
  215. package/src/intervals/interval.ts +35 -8
  216. package/src/intervals/intervalUtils.ts +61 -27
  217. package/src/intervals/sequenceInterval.ts +197 -47
  218. package/src/localValues.ts +4 -1
  219. package/src/packageVersion.ts +1 -1
  220. package/src/revertibles.ts +14 -36
  221. package/src/sequence.ts +14 -5
  222. package/src/sequenceDeltaEvent.ts +4 -0
  223. package/src/sequenceFactory.ts +4 -1
  224. package/src/sharedIntervalCollection.ts +5 -0
  225. package/src/sharedSequence.ts +6 -3
  226. package/src/sharedString.ts +25 -2
@@ -27,23 +27,17 @@ import { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent";
27
27
  /**
28
28
  * Data for undoing edits on SharedStrings and Intervals.
29
29
  *
30
- * Revertibles are new and require the option mergeTreeUseNewLengthCalculations to
31
- * be set as true on the underlying merge tree in order to function correctly.
32
- *
33
30
  * @alpha
34
31
  */
35
32
  export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
36
33
 
37
34
  const idMap = new Map<string, string>();
38
35
 
39
- type IntervalOpType = typeof IntervalOpType[keyof typeof IntervalOpType];
36
+ type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
40
37
 
41
38
  /**
42
39
  * Data for undoing edits affecting Intervals.
43
40
  *
44
- * Revertibles are new and require the option mergeTreeUseNewLengthCalculations to
45
- * be set as true on the underlying merge tree in order to function correctly.
46
- *
47
41
  * @alpha
48
42
  */
49
43
  export type IntervalRevertible =
@@ -271,9 +265,6 @@ function addIfRevertibleRef(
271
265
  * Create revertibles for SharedStringDeltas, handling indirectly modified intervals
272
266
  * (e.g. reverting remove of a range that contains an interval will move the interval back)
273
267
  *
274
- * Revertibles are new and require the option mergeTreeUseNewLengthCalculations to
275
- * be set as true on the underlying merge tree in order to function correctly.
276
- *
277
268
  * @alpha
278
269
  */
279
270
  export function appendSharedStringDeltaToRevertibles(
@@ -425,11 +416,14 @@ function revertLocalDelete(
425
416
  const startSlidePos = getSlidePosition(string, revertible.start, start);
426
417
  const end = string.localReferencePositionToPosition(revertible.end);
427
418
  const endSlidePos = getSlidePosition(string, revertible.end, end);
428
- const type = revertible.interval.intervalType;
429
419
  // reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
430
420
  const { intervalId, ...props } = revertible.interval.properties;
431
421
  if (isValidRange(startSlidePos, endSlidePos, string)) {
432
- const int = collection.add(startSlidePos, endSlidePos, type, props);
422
+ const int = collection.add({
423
+ start: startSlidePos,
424
+ end: endSlidePos,
425
+ props,
426
+ });
433
427
 
434
428
  idMap.forEach((newId, oldId) => {
435
429
  if (intervalId === newId) {
@@ -537,27 +531,14 @@ function revertLocalSequenceRemove(
537
531
  const intervalId = getUpdatedId(intervalInfo.intervalId);
538
532
  const interval = intervalCollection.getIntervalById(intervalId);
539
533
  if (interval !== undefined) {
540
- const newStart = newEndpointPosition(
541
- intervalInfo.startOffset,
542
- restoredRanges,
543
- sharedString,
544
- );
545
- const newEnd = newEndpointPosition(
546
- intervalInfo.endOffset,
547
- restoredRanges,
548
- sharedString,
549
- );
550
- // only move interval if start <= end
551
- if (
552
- (newStart === undefined &&
553
- newEnd !== undefined &&
554
- sharedString.localReferencePositionToPosition(interval.start) <= newEnd) ||
555
- (newEnd === undefined &&
556
- newStart !== undefined &&
557
- sharedString.localReferencePositionToPosition(interval.end) >= newStart) ||
558
- (newStart !== undefined && newEnd !== undefined && newStart <= newEnd)
559
- ) {
560
- intervalCollection.change(intervalId, newStart, newEnd);
534
+ const start =
535
+ newEndpointPosition(intervalInfo.startOffset, restoredRanges, sharedString) ??
536
+ sharedString.localReferencePositionToPosition(interval.start);
537
+ const end =
538
+ newEndpointPosition(intervalInfo.endOffset, restoredRanges, sharedString) ??
539
+ sharedString.localReferencePositionToPosition(interval.end);
540
+ if (start <= end) {
541
+ intervalCollection.change(intervalId, start, end);
561
542
  }
562
543
  }
563
544
  });
@@ -597,9 +578,6 @@ function revertLocalSequenceRemove(
597
578
  /**
598
579
  * Invoke revertibles to reverse prior edits
599
580
  *
600
- * Revertibles are new and require the option mergeTreeUseNewLengthCalculations to
601
- * be set as true on the underlying merge tree in order to function correctly.
602
- *
603
581
  * @alpha
604
582
  */
605
583
  export function revertSharedStringRevertibles(
package/src/sequence.ts CHANGED
@@ -29,6 +29,7 @@ import {
29
29
  ISegment,
30
30
  ISegmentAction,
31
31
  LocalReferencePosition,
32
+ // eslint-disable-next-line import/no-deprecated
32
33
  matchProperties,
33
34
  MergeTreeDeltaType,
34
35
  PropertySet,
@@ -96,6 +97,7 @@ const contentPath = "content";
96
97
  * - `event` - Various information on the segments that were modified.
97
98
  *
98
99
  * - `target` - The sequence itself.
100
+ * @public
99
101
  */
100
102
  export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
101
103
  (
@@ -112,6 +114,9 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
112
114
  );
113
115
  }
114
116
 
117
+ /**
118
+ * @public
119
+ */
115
120
  export abstract class SharedSegmentSequence<T extends ISegment>
116
121
  extends SharedObject<ISharedSegmentSequenceEvents>
117
122
  implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver
@@ -148,6 +153,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
148
153
  if (
149
154
  lastAnnotate &&
150
155
  lastAnnotate.pos2 === r.position &&
156
+ // eslint-disable-next-line import/no-deprecated
151
157
  matchProperties(lastAnnotate.props, props)
152
158
  ) {
153
159
  lastAnnotate.pos2 += r.segment.cachedLength;
@@ -266,7 +272,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
266
272
  }
267
273
 
268
274
  /**
269
- * @deprecated - The ability to create group ops will be removed in an upcoming release, as group ops are redundant with the native batching capabilities of the runtime
275
+ * @deprecated The ability to create group ops will be removed in an upcoming release, as group ops are redundant with the native batching capabilities of the runtime
270
276
  */
271
277
  public groupOperation(groupOp: IMergeTreeGroupMsg) {
272
278
  this.guardReentrancy(() => this.client.localTransaction(groupOp));
@@ -340,6 +346,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
340
346
  refType: ReferenceType,
341
347
  properties: PropertySet | undefined,
342
348
  slidingPreference?: SlidingPreference,
349
+ canSlideToEndpoint?: boolean,
343
350
  ): LocalReferencePosition {
344
351
  return this.client.createLocalReferencePosition(
345
352
  segment,
@@ -347,6 +354,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
347
354
  refType,
348
355
  properties,
349
356
  slidingPreference,
357
+ canSlideToEndpoint,
350
358
  );
351
359
  }
352
360
 
@@ -391,7 +399,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
391
399
  }
392
400
 
393
401
  /**
394
- * @deprecated - This method will no longer be public in an upcoming release as it is not safe to use outside of this class
402
+ * @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
395
403
  */
396
404
  public submitSequenceMessage(message: IMergeTreeOp) {
397
405
  if (!this.isAttached()) {
@@ -445,7 +453,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
445
453
  }
446
454
 
447
455
  /**
448
- * @deprecated - this functionality is no longer supported and will be removed
456
+ * @deprecated this functionality is no longer supported and will be removed
449
457
  */
450
458
  public getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap {
451
459
  return this.client.getStackContext(startPos, rangeLabels);
@@ -617,7 +625,8 @@ export abstract class SharedSegmentSequence<T extends ISegment>
617
625
  m.minimumSequenceNumber < collabWindow.minSeq ||
618
626
  m.referenceSequenceNumber < collabWindow.minSeq ||
619
627
  m.sequenceNumber <= collabWindow.minSeq ||
620
- m.sequenceNumber <= collabWindow.currentSeq
628
+ // sequenceNumber could be the same if messages are part of a grouped batch
629
+ m.sequenceNumber < collabWindow.currentSeq
621
630
  ) {
622
631
  throw new Error(
623
632
  `Invalid catchup operations in snapshot: ${JSON.stringify({
@@ -705,7 +714,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
705
714
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
706
715
  */
707
716
  protected applyStashedOp(content: any): unknown {
708
- return this.client.applyStashedOp(content);
717
+ return this.client.applyStashedOp(parseHandles(content, this.serializer));
709
718
  }
710
719
 
711
720
  private summarizeMergeTree(serializer: IFluidSerializer): ISummaryTreeWithStats {
@@ -23,6 +23,7 @@ import {
23
23
  * The properties of this object and its sub-objects represent the state of the sequence at the
24
24
  * point in time at which the operation was applied.
25
25
  * They will not take into any future modifications performed to the underlying sequence and merge tree.
26
+ * @public
26
27
  */
27
28
  export abstract class SequenceEvent<
28
29
  TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
@@ -105,6 +106,7 @@ export abstract class SequenceEvent<
105
106
  * For group ops, each op will get its own event, and the group op property will be set on the op args.
106
107
  *
107
108
  * Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
109
+ * @public
108
110
  */
109
111
  export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
110
112
  /**
@@ -128,6 +130,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
128
130
  * The properties of this object and its sub-objects represent the state of the sequence at the
129
131
  * point in time at which the operation was applied.
130
132
  * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
133
+ * @public
131
134
  */
132
135
  export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
133
136
  constructor(
@@ -141,6 +144,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
141
144
 
142
145
  /**
143
146
  * A range that has changed corresponding to a segment modification.
147
+ * @public
144
148
  */
145
149
  export interface ISequenceDeltaRange<
146
150
  TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
@@ -13,9 +13,12 @@ import { Marker, TextSegment } from "@fluidframework/merge-tree";
13
13
  import { pkgVersion } from "./packageVersion";
14
14
  import { SharedString, SharedStringSegment } from "./sharedString";
15
15
 
16
+ /**
17
+ * @public
18
+ */
16
19
  export class SharedStringFactory implements IChannelFactory {
17
20
  // TODO rename back to https://graph.microsoft.com/types/mergeTree/string once paparazzi is able to dynamically
18
- // load code
21
+ // load code (UPDATE: paparazzi is gone... anything to do here?)
19
22
  public static Type = "https://graph.microsoft.com/types/mergeTree";
20
23
 
21
24
  public static readonly Attributes: IChannelAttributes = {
@@ -33,6 +33,7 @@ const snapshotFileName = "header";
33
33
  /**
34
34
  * The factory that defines the SharedIntervalCollection.
35
35
  * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
36
+ * @public
36
37
  */
37
38
  export class SharedIntervalCollectionFactory implements IChannelFactory {
38
39
  public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
@@ -74,12 +75,16 @@ export class SharedIntervalCollectionFactory implements IChannelFactory {
74
75
  }
75
76
  }
76
77
 
78
+ /**
79
+ * @public
80
+ */
77
81
  export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
78
82
  getIntervalCollection(label: string): IIntervalCollection<TInterval>;
79
83
  }
80
84
 
81
85
  /**
82
86
  * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
87
+ * @public
83
88
  */
84
89
  export class SharedIntervalCollection
85
90
  extends SharedObject
@@ -15,14 +15,16 @@ import { SharedSegmentSequence } from "./sequence";
15
15
  const MaxRun = 128;
16
16
 
17
17
  /**
18
- * @deprecated - IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
18
+ * @deprecated IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
19
+ * @public
19
20
  */
20
21
  export interface IJSONRunSegment<T> extends IJSONSegment {
21
22
  items: Serializable<T>[];
22
23
  }
23
24
 
24
25
  /**
25
- * @deprecated - SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
26
+ * @deprecated SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
27
+ * @public
26
28
  */
27
29
  export class SubSequence<T> extends BaseSegment {
28
30
  public static readonly typeString: string = "SubSequence";
@@ -105,7 +107,8 @@ export class SubSequence<T> extends BaseSegment {
105
107
  }
106
108
 
107
109
  /**
108
- * @deprecated - SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
110
+ * @deprecated SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
111
+ * @public
109
112
  */
110
113
  export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
111
114
  constructor(
@@ -24,6 +24,7 @@ import { SharedStringFactory } from "./sequenceFactory";
24
24
 
25
25
  /**
26
26
  * Fluid object interface describing access methods on a SharedString
27
+ * @public
27
28
  */
28
29
  export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
29
30
  /**
@@ -52,6 +53,9 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
52
53
  posFromRelativePos(relativePos: IRelativePosition): number;
53
54
  }
54
55
 
56
+ /**
57
+ * @public
58
+ */
55
59
  export type SharedStringSegment = TextSegment | Marker;
56
60
 
57
61
  /**
@@ -63,6 +67,7 @@ export type SharedStringSegment = TextSegment | Marker;
63
67
  * used to store metadata at positions within the text, like the details of an
64
68
  * image or Fluid object that should be rendered with the text.
65
69
  *
70
+ * @public
66
71
  */
67
72
  export class SharedString
68
73
  extends SharedSegmentSequence<SharedStringSegment>
@@ -215,6 +220,7 @@ export class SharedString
215
220
  /**
216
221
  * Finds the nearest reference with ReferenceType.Tile to `startPos` in the direction dictated by `tilePrecedesPos`.
217
222
  * Note that Markers receive `ReferenceType.Tile` by default.
223
+ * @deprecated Use `searchForMarker` instead.
218
224
  * @param startPos - Position at which to start the search
219
225
  * @param clientId - clientId dictating the perspective to search from
220
226
  * @param tileLabel - Label of the tile to search for
@@ -233,6 +239,22 @@ export class SharedString
233
239
  return this.client.findTile(startPos ?? 0, tileLabel, preceding);
234
240
  }
235
241
 
242
+ /**
243
+ * Searches a string for the nearest marker in either direction to a given start position.
244
+ * The search will include the start position, so markers at the start position are valid
245
+ * results of the search.
246
+ * @param startPos - Position at which to start the search
247
+ * @param markerLabel - Label of the marker to search for
248
+ * @param forwards - Whether the desired marker comes before (false) or after (true) `startPos`
249
+ */
250
+ public searchForMarker(
251
+ startPos: number,
252
+ markerLabel: string,
253
+ forwards = true,
254
+ ): Marker | undefined {
255
+ return this.client.searchForMarker(startPos, markerLabel, forwards);
256
+ }
257
+
236
258
  /**
237
259
  * Retrieve text from the SharedString in string format.
238
260
  * @param start - The starting index of the text to retrieve, or 0 if omitted.
@@ -309,7 +331,6 @@ interface ITextAndMarkerAccumulator {
309
331
  * @param sharedString - String to retrieve text and markers from
310
332
  * @param label - label to split on
311
333
  * @returns Two parallel lists of text and markers, split by markers with the provided `label`.
312
- *
313
334
  * For example:
314
335
  * ```typescript
315
336
  * // Say sharedstring has contents "hello<paragraph marker 1>world<paragraph marker 2>missing".
@@ -318,6 +339,7 @@ interface ITextAndMarkerAccumulator {
318
339
  * // parallelMarkers === [<paragraph marker 1 object>, <paragraph marker 2 object>]
319
340
  * // Note parallelText does not include "missing".
320
341
  * ```
342
+ * @public
321
343
  */
322
344
  export function getTextAndMarkers(
323
345
  sharedString: SharedString,
@@ -406,7 +428,8 @@ const gatherTextAndMarkers: ISegmentAction<ITextAndMarkerAccumulator> = (
406
428
  if (placeholder && placeholder.length > 0) {
407
429
  const placeholderText =
408
430
  placeholder === "*"
409
- ? `\n${segment.toString()}`
431
+ ? // eslint-disable-next-line @typescript-eslint/no-base-to-string
432
+ `\n${segment.toString()}`
410
433
  : placeholder.repeat(segment.cachedLength);
411
434
  textSegment.text += placeholderText;
412
435
  } else {