@fluidframework/sequence 2.0.0-internal.7.0.0 → 2.0.0-internal.7.2.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 (191) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/api-extractor.json +1 -1
  3. package/api-report/sequence.api.md +717 -0
  4. package/dist/defaultMapInterfaces.d.ts +1 -0
  5. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  6. package/dist/defaultMapInterfaces.js.map +1 -1
  7. package/dist/intervalCollection.d.ts +36 -6
  8. package/dist/intervalCollection.d.ts.map +1 -1
  9. package/dist/intervalCollection.js +31 -8
  10. package/dist/intervalCollection.js.map +1 -1
  11. package/dist/intervalIndex/endpointInRangeIndex.d.ts +4 -0
  12. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  13. package/dist/intervalIndex/endpointInRangeIndex.js +3 -0
  14. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  15. package/dist/intervalIndex/endpointIndex.d.ts +6 -0
  16. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  17. package/dist/intervalIndex/endpointIndex.js +3 -0
  18. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  19. package/dist/intervalIndex/idIntervalIndex.d.ts +6 -0
  20. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  21. package/dist/intervalIndex/idIntervalIndex.js +3 -0
  22. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  23. package/dist/intervalIndex/intervalIndex.d.ts +1 -0
  24. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
  25. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  26. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
  27. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  28. package/dist/intervalIndex/overlappingIntervalsIndex.js +6 -0
  29. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  30. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
  31. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  32. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
  33. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  34. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
  35. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  36. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  37. package/dist/intervalIndex/startpointInRangeIndex.d.ts +4 -0
  38. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  39. package/dist/intervalIndex/startpointInRangeIndex.js +3 -0
  40. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  41. package/dist/intervals/interval.d.ts +1 -0
  42. package/dist/intervals/interval.d.ts.map +1 -1
  43. package/dist/intervals/interval.js +1 -0
  44. package/dist/intervals/interval.js.map +1 -1
  45. package/dist/intervals/intervalUtils.d.ts +12 -1
  46. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  47. package/dist/intervals/intervalUtils.js +6 -0
  48. package/dist/intervals/intervalUtils.js.map +1 -1
  49. package/dist/intervals/sequenceInterval.d.ts +2 -0
  50. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  51. package/dist/intervals/sequenceInterval.js +2 -0
  52. package/dist/intervals/sequenceInterval.js.map +1 -1
  53. package/dist/localValues.d.ts.map +1 -1
  54. package/dist/localValues.js.map +1 -1
  55. package/dist/packageVersion.d.ts +1 -1
  56. package/dist/packageVersion.js +1 -1
  57. package/dist/packageVersion.js.map +1 -1
  58. package/dist/revertibles.d.ts +1 -1
  59. package/dist/revertibles.d.ts.map +1 -1
  60. package/dist/revertibles.js +5 -2
  61. package/dist/revertibles.js.map +1 -1
  62. package/dist/sequence.d.ts +7 -3
  63. package/dist/sequence.d.ts.map +1 -1
  64. package/dist/sequence.js +9 -4
  65. package/dist/sequence.js.map +1 -1
  66. package/dist/sequenceDeltaEvent.d.ts +4 -0
  67. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  68. package/dist/sequenceDeltaEvent.js +3 -0
  69. package/dist/sequenceDeltaEvent.js.map +1 -1
  70. package/dist/sequenceFactory.d.ts +3 -0
  71. package/dist/sequenceFactory.d.ts.map +1 -1
  72. package/dist/sequenceFactory.js +3 -0
  73. package/dist/sequenceFactory.js.map +1 -1
  74. package/dist/sharedIntervalCollection.d.ts +5 -0
  75. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  76. package/dist/sharedIntervalCollection.js +2 -0
  77. package/dist/sharedIntervalCollection.js.map +1 -1
  78. package/dist/sharedSequence.d.ts +6 -3
  79. package/dist/sharedSequence.d.ts.map +1 -1
  80. package/dist/sharedSequence.js +4 -2
  81. package/dist/sharedSequence.js.map +1 -1
  82. package/dist/sharedString.d.ts +16 -1
  83. package/dist/sharedString.d.ts.map +1 -1
  84. package/dist/sharedString.js +14 -1
  85. package/dist/sharedString.js.map +1 -1
  86. package/dist/tsdoc-metadata.json +1 -1
  87. package/lib/defaultMapInterfaces.d.ts +1 -0
  88. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  89. package/lib/defaultMapInterfaces.js.map +1 -1
  90. package/lib/intervalCollection.d.ts +36 -6
  91. package/lib/intervalCollection.d.ts.map +1 -1
  92. package/lib/intervalCollection.js +31 -8
  93. package/lib/intervalCollection.js.map +1 -1
  94. package/lib/intervalIndex/endpointInRangeIndex.d.ts +4 -0
  95. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  96. package/lib/intervalIndex/endpointInRangeIndex.js +3 -0
  97. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  98. package/lib/intervalIndex/endpointIndex.d.ts +6 -0
  99. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  100. package/lib/intervalIndex/endpointIndex.js +3 -0
  101. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  102. package/lib/intervalIndex/idIntervalIndex.d.ts +6 -0
  103. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  104. package/lib/intervalIndex/idIntervalIndex.js +3 -0
  105. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  106. package/lib/intervalIndex/intervalIndex.d.ts +1 -0
  107. package/lib/intervalIndex/intervalIndex.d.ts.map +1 -1
  108. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  109. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
  110. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  111. package/lib/intervalIndex/overlappingIntervalsIndex.js +6 -0
  112. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  113. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
  114. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  115. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
  116. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  117. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
  118. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  119. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  120. package/lib/intervalIndex/startpointInRangeIndex.d.ts +4 -0
  121. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  122. package/lib/intervalIndex/startpointInRangeIndex.js +3 -0
  123. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  124. package/lib/intervals/interval.d.ts +1 -0
  125. package/lib/intervals/interval.d.ts.map +1 -1
  126. package/lib/intervals/interval.js +1 -0
  127. package/lib/intervals/interval.js.map +1 -1
  128. package/lib/intervals/intervalUtils.d.ts +12 -1
  129. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  130. package/lib/intervals/intervalUtils.js +6 -0
  131. package/lib/intervals/intervalUtils.js.map +1 -1
  132. package/lib/intervals/sequenceInterval.d.ts +2 -0
  133. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  134. package/lib/intervals/sequenceInterval.js +2 -0
  135. package/lib/intervals/sequenceInterval.js.map +1 -1
  136. package/lib/localValues.d.ts.map +1 -1
  137. package/lib/localValues.js.map +1 -1
  138. package/lib/packageVersion.d.ts +1 -1
  139. package/lib/packageVersion.js +1 -1
  140. package/lib/packageVersion.js.map +1 -1
  141. package/lib/revertibles.d.ts +1 -1
  142. package/lib/revertibles.d.ts.map +1 -1
  143. package/lib/revertibles.js +5 -2
  144. package/lib/revertibles.js.map +1 -1
  145. package/lib/sequence.d.ts +7 -3
  146. package/lib/sequence.d.ts.map +1 -1
  147. package/lib/sequence.js +12 -5
  148. package/lib/sequence.js.map +1 -1
  149. package/lib/sequenceDeltaEvent.d.ts +4 -0
  150. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  151. package/lib/sequenceDeltaEvent.js +3 -0
  152. package/lib/sequenceDeltaEvent.js.map +1 -1
  153. package/lib/sequenceFactory.d.ts +3 -0
  154. package/lib/sequenceFactory.d.ts.map +1 -1
  155. package/lib/sequenceFactory.js +3 -0
  156. package/lib/sequenceFactory.js.map +1 -1
  157. package/lib/sharedIntervalCollection.d.ts +5 -0
  158. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  159. package/lib/sharedIntervalCollection.js +2 -0
  160. package/lib/sharedIntervalCollection.js.map +1 -1
  161. package/lib/sharedSequence.d.ts +6 -3
  162. package/lib/sharedSequence.d.ts.map +1 -1
  163. package/lib/sharedSequence.js +4 -2
  164. package/lib/sharedSequence.js.map +1 -1
  165. package/lib/sharedString.d.ts +16 -1
  166. package/lib/sharedString.d.ts.map +1 -1
  167. package/lib/sharedString.js +14 -1
  168. package/lib/sharedString.js.map +1 -1
  169. package/package.json +25 -50
  170. package/src/defaultMapInterfaces.ts +1 -0
  171. package/src/intervalCollection.ts +91 -13
  172. package/src/intervalIndex/endpointInRangeIndex.ts +4 -0
  173. package/src/intervalIndex/endpointIndex.ts +6 -0
  174. package/src/intervalIndex/idIntervalIndex.ts +6 -0
  175. package/src/intervalIndex/intervalIndex.ts +1 -0
  176. package/src/intervalIndex/overlappingIntervalsIndex.ts +9 -0
  177. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +6 -0
  178. package/src/intervalIndex/sequenceIntervalIndexes.ts +1 -0
  179. package/src/intervalIndex/startpointInRangeIndex.ts +4 -1
  180. package/src/intervals/interval.ts +6 -1
  181. package/src/intervals/intervalUtils.ts +12 -1
  182. package/src/intervals/sequenceInterval.ts +2 -0
  183. package/src/localValues.ts +4 -1
  184. package/src/packageVersion.ts +1 -1
  185. package/src/revertibles.ts +6 -3
  186. package/src/sequence.ts +11 -4
  187. package/src/sequenceDeltaEvent.ts +4 -0
  188. package/src/sequenceFactory.ts +3 -0
  189. package/src/sharedIntervalCollection.ts +5 -0
  190. package/src/sharedSequence.ts +6 -3
  191. package/src/sharedString.ts +23 -1
@@ -9,6 +9,9 @@ import { IntervalIndex } from "./intervalIndex";
9
9
 
10
10
  const reservedIntervalIdKey = "intervalId";
11
11
 
12
+ /**
13
+ * @public
14
+ */
12
15
  export interface IIdIntervalIndex<TInterval extends ISerializableInterval>
13
16
  extends IntervalIndex<TInterval>,
14
17
  Iterable<TInterval> {
@@ -51,6 +54,9 @@ class IdIntervalIndex<TInterval extends ISerializableInterval>
51
54
  }
52
55
  }
53
56
 
57
+ /**
58
+ * @public
59
+ */
54
60
  export function createIdIntervalIndex<
55
61
  TInterval extends ISerializableInterval,
56
62
  >(): IIdIntervalIndex<TInterval> {
@@ -13,6 +13,7 @@ import { ISerializableInterval } from "../intervals";
13
13
  * - "find all intervals with start endpoint between these two points"
14
14
  * - "find all intervals which overlap this range"
15
15
  * etc.
16
+ * @public
16
17
  */
17
18
  export interface IntervalIndex<TInterval extends ISerializableInterval> {
18
19
  /**
@@ -17,6 +17,9 @@ import { SharedString } from "../sharedString";
17
17
  import { SequencePlace, endpointPosAndSide } from "../intervalCollection";
18
18
  import { IntervalIndex } from "./intervalIndex";
19
19
 
20
+ /**
21
+ * @public
22
+ */
20
23
  export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval>
21
24
  extends IntervalIndex<TInterval> {
22
25
  /**
@@ -36,6 +39,9 @@ export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInter
36
39
  ): void;
37
40
  }
38
41
 
42
+ /**
43
+ * @public
44
+ */
39
45
  export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
40
46
  implements IOverlappingIntervalsIndex<TInterval>
41
47
  {
@@ -170,6 +176,9 @@ export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
170
176
  }
171
177
  }
172
178
 
179
+ /**
180
+ * @public
181
+ */
173
182
  export function createOverlappingIntervalsIndex(
174
183
  sharedString: SharedString,
175
184
  ): IOverlappingIntervalsIndex<SequenceInterval> {
@@ -21,6 +21,9 @@ import { SharedString } from "../sharedString";
21
21
  import { SequenceIntervalIndexes } from "./sequenceIntervalIndexes";
22
22
  import { OverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
23
23
 
24
+ /**
25
+ * @public
26
+ */
24
27
  class OverlappingSequenceIntervalsIndex
25
28
  extends OverlappingIntervalsIndex<SequenceInterval>
26
29
  implements SequenceIntervalIndexes.Overlapping
@@ -66,6 +69,9 @@ class OverlappingSequenceIntervalsIndex
66
69
  }
67
70
  }
68
71
 
72
+ /**
73
+ * @public
74
+ */
69
75
  export function createOverlappingSequenceIntervalsIndex(
70
76
  sharedString: SharedString,
71
77
  ): SequenceIntervalIndexes.Overlapping {
@@ -10,6 +10,7 @@ import { IOverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
10
10
  /**
11
11
  * This namespace contains specialiazations of indexes which support spatial queries
12
12
  * specifically for `SequenceInterval`s.
13
+ * @public
13
14
  */
14
15
  // eslint-disable-next-line @typescript-eslint/no-namespace
15
16
  export namespace SequenceIntervalIndexes {
@@ -20,6 +20,7 @@ import { HasComparisonOverride, compareOverrideables, forceCompare } from "./int
20
20
  * Collection of intervals.
21
21
  *
22
22
  * Provide additional APIs to support efficiently querying a collection of intervals whose startpoints fall within a specified range.
23
+ * @public
23
24
  */
24
25
  export interface IStartpointInRangeIndex<TInterval extends ISerializableInterval>
25
26
  extends IntervalIndex<TInterval> {
@@ -102,7 +103,9 @@ export class StartpointInRangeIndex<TInterval extends ISerializableInterval>
102
103
  return results;
103
104
  }
104
105
  }
105
-
106
+ /**
107
+ * @public
108
+ */
106
109
  export function createStartpointInRangeIndex(
107
110
  sharedString: SharedString,
108
111
  ): IStartpointInRangeIndex<SequenceInterval> {
@@ -21,6 +21,7 @@ const reservedIntervalIdKey = "intervalId";
21
21
 
22
22
  /**
23
23
  * Serializable interval whose endpoints are plain-old numbers.
24
+ * @public
24
25
  */
25
26
  export class Interval implements ISerializableInterval {
26
27
  /**
@@ -34,7 +35,11 @@ export class Interval implements ISerializableInterval {
34
35
  * @internal
35
36
  */
36
37
  public propertyManager: PropertiesManager;
37
- constructor(public start: number, public end: number, props?: PropertySet) {
38
+ constructor(
39
+ public start: number,
40
+ public end: number,
41
+ props?: PropertySet,
42
+ ) {
38
43
  this.propertyManager = new PropertiesManager();
39
44
  this.properties = {};
40
45
 
@@ -16,6 +16,7 @@ import { SequencePlace, Side } from "../intervalCollection";
16
16
 
17
17
  /**
18
18
  * Basic interval abstraction
19
+ * @public
19
20
  */
20
21
  export interface IInterval {
21
22
  /**
@@ -80,8 +81,14 @@ export const IntervalOpType = {
80
81
  POSITION_REMOVE: "positionRemove",
81
82
  } as const;
82
83
 
84
+ /**
85
+ * @public
86
+ */
83
87
  export enum IntervalType {
84
88
  Simple = 0x0,
89
+ /**
90
+ * @deprecated this functionality is no longer supported and will be removed
91
+ */
85
92
  Nest = 0x1,
86
93
 
87
94
  /**
@@ -129,6 +136,9 @@ export interface ISerializedInterval {
129
136
  properties?: PropertySet;
130
137
  }
131
138
 
139
+ /**
140
+ * @public
141
+ */
132
142
  export interface ISerializableInterval extends IInterval {
133
143
  /** Serializable bag of properties associated with the interval. */
134
144
  properties: PropertySet;
@@ -191,6 +201,7 @@ export type CompressedSerializedInterval =
191
201
  /**
192
202
  * @sealed
193
203
  * @deprecated The methods within have substitutions
204
+ * @public
194
205
  */
195
206
  export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
196
207
  /**
@@ -262,7 +273,7 @@ export const IntervalStickiness = {
262
273
  *
263
274
  * @internal
264
275
  */
265
- export type IntervalStickiness = typeof IntervalStickiness[keyof typeof IntervalStickiness];
276
+ export type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
266
277
 
267
278
  export function startReferenceSlidingPreference(stickiness: IntervalStickiness): SlidingPreference {
268
279
  // if any start stickiness, prefer sliding backwards
@@ -100,6 +100,7 @@ function maxSide(sideA: Side, sideB: Side): Side {
100
100
  * `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
101
101
  * of the interval that are exclusive will have the ability to slide to these
102
102
  * special endpoint segments.
103
+ * @public
103
104
  */
104
105
  export class SequenceInterval implements ISerializableInterval {
105
106
  /**
@@ -636,6 +637,7 @@ export function createSequenceInterval(
636
637
 
637
638
  /**
638
639
  * @deprecated The methods within have substitutions
640
+ * @public
639
641
  */
640
642
  export const sequenceIntervalHelpers: IIntervalHelpers<SequenceInterval> = {
641
643
  create: createSequenceInterval,
@@ -58,7 +58,10 @@ export class ValueTypeLocalValue<T> implements ILocalValue<T> {
58
58
  * @param value - The instance of the value type stored within
59
59
  * @param valueType - The type object of the value type stored within
60
60
  */
61
- constructor(public readonly value: T, private readonly valueType: IValueType<T>) {}
61
+ constructor(
62
+ public readonly value: T,
63
+ private readonly valueType: IValueType<T>,
64
+ ) {}
62
65
 
63
66
  /**
64
67
  * {@inheritDoc ILocalValue."type"}
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/sequence";
9
- export const pkgVersion = "2.0.0-internal.7.0.0";
9
+ export const pkgVersion = "2.0.0-internal.7.2.0";
@@ -33,7 +33,7 @@ export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertib
33
33
 
34
34
  const idMap = new Map<string, string>();
35
35
 
36
- type IntervalOpType = typeof IntervalOpType[keyof typeof IntervalOpType];
36
+ type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
37
37
 
38
38
  /**
39
39
  * Data for undoing edits affecting Intervals.
@@ -416,11 +416,14 @@ function revertLocalDelete(
416
416
  const startSlidePos = getSlidePosition(string, revertible.start, start);
417
417
  const end = string.localReferencePositionToPosition(revertible.end);
418
418
  const endSlidePos = getSlidePosition(string, revertible.end, end);
419
- const type = revertible.interval.intervalType;
420
419
  // reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
421
420
  const { intervalId, ...props } = revertible.interval.properties;
422
421
  if (isValidRange(startSlidePos, endSlidePos, string)) {
423
- const int = collection.add(startSlidePos, endSlidePos, type, props);
422
+ const int = collection.add({
423
+ start: startSlidePos,
424
+ end: endSlidePos,
425
+ props,
426
+ });
424
427
 
425
428
  idMap.forEach((newId, oldId) => {
426
429
  if (intervalId === newId) {
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));
@@ -393,7 +399,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
393
399
  }
394
400
 
395
401
  /**
396
- * @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
397
403
  */
398
404
  public submitSequenceMessage(message: IMergeTreeOp) {
399
405
  if (!this.isAttached()) {
@@ -447,7 +453,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
447
453
  }
448
454
 
449
455
  /**
450
- * @deprecated - this functionality is no longer supported and will be removed
456
+ * @deprecated this functionality is no longer supported and will be removed
451
457
  */
452
458
  public getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap {
453
459
  return this.client.getStackContext(startPos, rangeLabels);
@@ -619,7 +625,8 @@ export abstract class SharedSegmentSequence<T extends ISegment>
619
625
  m.minimumSequenceNumber < collabWindow.minSeq ||
620
626
  m.referenceSequenceNumber < collabWindow.minSeq ||
621
627
  m.sequenceNumber <= collabWindow.minSeq ||
622
- m.sequenceNumber <= collabWindow.currentSeq
628
+ // sequenceNumber could be the same if messages are part of a grouped batch
629
+ m.sequenceNumber < collabWindow.currentSeq
623
630
  ) {
624
631
  throw new Error(
625
632
  `Invalid catchup operations in snapshot: ${JSON.stringify({
@@ -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,6 +13,9 @@ 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
21
  // load code (UPDATE: paparazzi is gone... anything to do here?)
@@ -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,