@fluidframework/sequence 2.0.0-internal.7.3.0 → 2.0.0-internal.8.0.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 (222) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/api-extractor-lint.json +13 -0
  3. package/api-extractor.json +8 -3
  4. package/api-report/sequence.api.md +138 -113
  5. package/dist/defaultMap.d.ts +3 -3
  6. package/dist/defaultMap.d.ts.map +1 -1
  7. package/dist/defaultMap.js +7 -2
  8. package/dist/defaultMap.js.map +1 -1
  9. package/dist/defaultMapInterfaces.d.ts +12 -11
  10. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  11. package/dist/defaultMapInterfaces.js.map +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +11 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/intervalCollection.d.ts +70 -16
  17. package/dist/intervalCollection.d.ts.map +1 -1
  18. package/dist/intervalCollection.js +50 -45
  19. package/dist/intervalCollection.js.map +1 -1
  20. package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  21. package/dist/intervalIndex/endpointInRangeIndex.js +1 -1
  22. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  23. package/dist/intervalIndex/endpointIndex.d.ts +2 -2
  24. package/dist/intervalIndex/endpointIndex.js +1 -1
  25. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  26. package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
  27. package/dist/intervalIndex/idIntervalIndex.js +1 -1
  28. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  29. package/dist/intervalIndex/intervalIndex.d.ts +1 -1
  30. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  31. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
  32. package/dist/intervalIndex/overlappingIntervalsIndex.js +1 -1
  33. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  34. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
  35. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
  36. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  37. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  38. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  39. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  40. package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  41. package/dist/intervalIndex/startpointInRangeIndex.js +1 -1
  42. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  43. package/dist/intervalTree.d.ts +1 -2
  44. package/dist/intervalTree.d.ts.map +1 -1
  45. package/dist/intervalTree.js +1 -3
  46. package/dist/intervalTree.js.map +1 -1
  47. package/dist/intervals/interval.d.ts +5 -11
  48. package/dist/intervals/interval.d.ts.map +1 -1
  49. package/dist/intervals/interval.js +10 -18
  50. package/dist/intervals/interval.js.map +1 -1
  51. package/dist/intervals/intervalUtils.d.ts +15 -18
  52. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  53. package/dist/intervals/intervalUtils.js +3 -8
  54. package/dist/intervals/intervalUtils.js.map +1 -1
  55. package/dist/intervals/sequenceInterval.d.ts +5 -15
  56. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  57. package/dist/intervals/sequenceInterval.js +12 -28
  58. package/dist/intervals/sequenceInterval.js.map +1 -1
  59. package/dist/localValues.d.ts +2 -1
  60. package/dist/localValues.d.ts.map +1 -1
  61. package/dist/localValues.js.map +1 -1
  62. package/dist/packageVersion.d.ts +1 -1
  63. package/dist/packageVersion.js +1 -1
  64. package/dist/packageVersion.js.map +1 -1
  65. package/dist/revertibles.d.ts +9 -15
  66. package/dist/revertibles.d.ts.map +1 -1
  67. package/dist/revertibles.js +14 -10
  68. package/dist/revertibles.js.map +1 -1
  69. package/dist/sequence-alpha.d.ts +283 -552
  70. package/dist/sequence-beta.d.ts +139 -1373
  71. package/dist/sequence-public.d.ts +139 -1373
  72. package/dist/sequence-untrimmed.d.ts +186 -141
  73. package/dist/sequence.d.ts +26 -24
  74. package/dist/sequence.d.ts.map +1 -1
  75. package/dist/sequence.js +38 -23
  76. package/dist/sequence.js.map +1 -1
  77. package/dist/sequenceDeltaEvent.d.ts +4 -4
  78. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  79. package/dist/sequenceDeltaEvent.js +14 -7
  80. package/dist/sequenceDeltaEvent.js.map +1 -1
  81. package/dist/sequenceFactory.d.ts +1 -1
  82. package/dist/sequenceFactory.js +1 -1
  83. package/dist/sequenceFactory.js.map +1 -1
  84. package/dist/sharedIntervalCollection.d.ts +3 -3
  85. package/dist/sharedIntervalCollection.js +2 -2
  86. package/dist/sharedIntervalCollection.js.map +1 -1
  87. package/dist/sharedSequence.d.ts +4 -4
  88. package/dist/sharedSequence.d.ts.map +1 -1
  89. package/dist/sharedSequence.js +8 -2
  90. package/dist/sharedSequence.js.map +1 -1
  91. package/dist/sharedString.d.ts +9 -18
  92. package/dist/sharedString.d.ts.map +1 -1
  93. package/dist/sharedString.js +9 -21
  94. package/dist/sharedString.js.map +1 -1
  95. package/lib/defaultMap.d.ts +3 -3
  96. package/lib/defaultMap.d.ts.map +1 -1
  97. package/lib/defaultMap.js +29 -20
  98. package/lib/defaultMap.js.map +1 -1
  99. package/lib/defaultMapInterfaces.d.ts +12 -11
  100. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  101. package/lib/defaultMapInterfaces.js +2 -1
  102. package/lib/defaultMapInterfaces.js.map +1 -1
  103. package/lib/index.d.ts +1 -0
  104. package/lib/index.d.ts.map +1 -1
  105. package/lib/index.js +55 -10
  106. package/lib/index.js.map +1 -1
  107. package/lib/intervalCollection.d.ts +70 -16
  108. package/lib/intervalCollection.d.ts.map +1 -1
  109. package/lib/intervalCollection.js +174 -156
  110. package/lib/intervalCollection.js.map +1 -1
  111. package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  112. package/lib/intervalIndex/endpointInRangeIndex.js +18 -13
  113. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  114. package/lib/intervalIndex/endpointIndex.d.ts +2 -2
  115. package/lib/intervalIndex/endpointIndex.js +14 -9
  116. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  117. package/lib/intervalIndex/idIntervalIndex.d.ts +2 -2
  118. package/lib/intervalIndex/idIntervalIndex.js +9 -5
  119. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  120. package/lib/intervalIndex/index.js +19 -6
  121. package/lib/intervalIndex/index.js.map +1 -1
  122. package/lib/intervalIndex/intervalIndex.d.ts +1 -1
  123. package/lib/intervalIndex/intervalIndex.js +2 -1
  124. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  125. package/lib/intervalIndex/intervalIndexUtils.js +8 -4
  126. package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
  127. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
  128. package/lib/intervalIndex/overlappingIntervalsIndex.js +16 -11
  129. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  130. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
  131. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +15 -11
  132. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  133. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  134. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  135. package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
  136. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  137. package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  138. package/lib/intervalIndex/startpointInRangeIndex.js +18 -13
  139. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  140. package/lib/intervalTree.d.ts +1 -2
  141. package/lib/intervalTree.d.ts.map +1 -1
  142. package/lib/intervalTree.js +7 -4
  143. package/lib/intervalTree.js.map +1 -1
  144. package/lib/intervals/index.js +18 -3
  145. package/lib/intervals/index.js.map +1 -1
  146. package/lib/intervals/interval.d.ts +5 -11
  147. package/lib/intervals/interval.d.ts.map +1 -1
  148. package/lib/intervals/interval.js +26 -29
  149. package/lib/intervals/interval.js.map +1 -1
  150. package/lib/intervals/intervalUtils.d.ts +15 -18
  151. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  152. package/lib/intervals/intervalUtils.js +21 -21
  153. package/lib/intervals/intervalUtils.js.map +1 -1
  154. package/lib/intervals/sequenceInterval.d.ts +5 -15
  155. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  156. package/lib/intervals/sequenceInterval.js +72 -82
  157. package/lib/intervals/sequenceInterval.js.map +1 -1
  158. package/lib/localValues.d.ts +2 -1
  159. package/lib/localValues.d.ts.map +1 -1
  160. package/lib/localValues.js +9 -4
  161. package/lib/localValues.js.map +1 -1
  162. package/lib/packageVersion.d.ts +1 -1
  163. package/lib/packageVersion.js +5 -2
  164. package/lib/packageVersion.js.map +1 -1
  165. package/lib/revertibles.d.ts +9 -15
  166. package/lib/revertibles.d.ts.map +1 -1
  167. package/lib/revertibles.js +83 -69
  168. package/lib/revertibles.js.map +1 -1
  169. package/lib/sequence-alpha.d.ts +283 -552
  170. package/lib/sequence-beta.d.ts +139 -1373
  171. package/lib/sequence-public.d.ts +139 -1373
  172. package/lib/sequence-untrimmed.d.ts +186 -141
  173. package/lib/sequence.d.ts +26 -24
  174. package/lib/sequence.d.ts.map +1 -1
  175. package/lib/sequence.js +81 -61
  176. package/lib/sequence.js.map +1 -1
  177. package/lib/sequenceDeltaEvent.d.ts +4 -4
  178. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  179. package/lib/sequenceDeltaEvent.js +27 -14
  180. package/lib/sequenceDeltaEvent.js.map +1 -1
  181. package/lib/sequenceFactory.d.ts +1 -1
  182. package/lib/sequenceFactory.js +14 -10
  183. package/lib/sequenceFactory.js.map +1 -1
  184. package/lib/sharedIntervalCollection.d.ts +3 -3
  185. package/lib/sharedIntervalCollection.js +20 -15
  186. package/lib/sharedIntervalCollection.js.map +1 -1
  187. package/lib/sharedSequence.d.ts +4 -4
  188. package/lib/sharedSequence.d.ts.map +1 -1
  189. package/lib/sharedSequence.js +19 -8
  190. package/lib/sharedSequence.js.map +1 -1
  191. package/lib/sharedString.d.ts +9 -18
  192. package/lib/sharedString.d.ts.map +1 -1
  193. package/lib/sharedString.js +30 -37
  194. package/lib/sharedString.js.map +1 -1
  195. package/package.json +44 -22
  196. package/sequence.test-files.tar +0 -0
  197. package/src/defaultMap.ts +22 -16
  198. package/src/defaultMapInterfaces.ts +17 -14
  199. package/src/index.ts +17 -0
  200. package/src/intervalCollection.ts +135 -71
  201. package/src/intervalIndex/endpointInRangeIndex.ts +2 -2
  202. package/src/intervalIndex/endpointIndex.ts +2 -2
  203. package/src/intervalIndex/idIntervalIndex.ts +2 -2
  204. package/src/intervalIndex/intervalIndex.ts +1 -1
  205. package/src/intervalIndex/overlappingIntervalsIndex.ts +2 -2
  206. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +1 -1
  207. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
  208. package/src/intervalIndex/startpointInRangeIndex.ts +2 -2
  209. package/src/intervalTree.ts +0 -3
  210. package/src/intervals/interval.ts +7 -26
  211. package/src/intervals/intervalUtils.ts +17 -20
  212. package/src/intervals/sequenceInterval.ts +7 -35
  213. package/src/localValues.ts +2 -1
  214. package/src/packageVersion.ts +1 -1
  215. package/src/revertibles.ts +20 -19
  216. package/src/sequence.ts +61 -43
  217. package/src/sequenceDeltaEvent.ts +12 -6
  218. package/src/sequenceFactory.ts +1 -1
  219. package/src/sharedIntervalCollection.ts +3 -3
  220. package/src/sharedSequence.ts +12 -6
  221. package/src/sharedString.ts +21 -48
  222. package/tsconfig.json +1 -0
package/lib/sequence.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  import { Deferred } from "@fluidframework/core-utils";
6
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
7
  import { IChannelAttributes, IFluidDataStoreRuntime, IChannelStorageService } from "@fluidframework/datastore-definitions";
8
- import { Client, ICombiningOp, IJSONSegment, IMergeTreeGroupMsg, IMergeTreeOp, IMergeTreeRemoveMsg, IRelativePosition, ISegment, ISegmentAction, LocalReferencePosition, PropertySet, RangeStackMap, ReferencePosition, ReferenceType, MergeTreeRevertibleDriver, SlidingPreference } from "@fluidframework/merge-tree";
8
+ import { Client, IJSONSegment, IMergeTreeGroupMsg, IRelativePosition, ISegment, ISegmentAction, LocalReferencePosition, PropertySet, ReferencePosition, ReferenceType, MergeTreeRevertibleDriver, SlidingPreference } from "@fluidframework/merge-tree";
9
9
  import { IFluidSerializer, SharedObject, ISharedObjectEvents, SummarySerializer } from "@fluidframework/shared-object-base";
10
10
  import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
11
11
  import { ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
@@ -45,15 +45,15 @@ import { ISharedIntervalCollection } from "./sharedIntervalCollection";
45
45
  * - `event` - Various information on the segments that were modified.
46
46
  *
47
47
  * - `target` - The sequence itself.
48
- * @public
48
+ * @alpha
49
49
  */
50
50
  export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
51
- (event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
52
- (event: "sequenceDelta", listener: (event: SequenceDeltaEvent, target: IEventThisPlaceHolder) => void): any;
53
- (event: "maintenance", listener: (event: SequenceMaintenanceEvent, target: IEventThisPlaceHolder) => void): any;
51
+ (event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): void;
52
+ (event: "sequenceDelta", listener: (event: SequenceDeltaEvent, target: IEventThisPlaceHolder) => void): void;
53
+ (event: "maintenance", listener: (event: SequenceMaintenanceEvent, target: IEventThisPlaceHolder) => void): void;
54
54
  }
55
55
  /**
56
- * @public
56
+ * @alpha
57
57
  */
58
58
  export declare abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver {
59
59
  private readonly dataStoreRuntime;
@@ -71,7 +71,6 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
71
71
  *
72
72
  * An application using SharedString which explicitly wants to opt in to allowing reentrancy anyway can set `sharedStringPreventReentrancy`
73
73
  * on the data store options to `false`.
74
- * @internal
75
74
  */
76
75
  protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
77
76
  private static createOpsFromDelta;
@@ -88,9 +87,19 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
88
87
  * @param start - The inclusive start of the range to remove
89
88
  * @param end - The exclusive end of the range to remove
90
89
  */
91
- removeRange(start: number, end: number): IMergeTreeRemoveMsg;
90
+ removeRange(start: number, end: number): void;
92
91
  /**
93
- * @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
92
+ * Obliterate is similar to remove, but differs in that segments concurrently
93
+ * inserted into an obliterated range will also be removed
94
+ *
95
+ * @param start - The inclusive start of the range to obliterate
96
+ * @param end - The exclusive end of the range to obliterate
97
+ */
98
+ obliterateRange(start: number, end: number): void;
99
+ /**
100
+ * @deprecated The ability to create group ops will be removed in an upcoming
101
+ * release, as group ops are redundant with the native batching capabilities
102
+ * of the runtime
94
103
  */
95
104
  groupOperation(groupOp: IMergeTreeGroupMsg): void;
96
105
  /**
@@ -118,10 +127,9 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
118
127
  * @param start - The inclusive start position of the range to annotate
119
128
  * @param end - The exclusive end position of the range to annotate
120
129
  * @param props - The properties to annotate the range with
121
- * @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
122
130
  *
123
131
  */
124
- annotateRange(start: number, end: number, props: PropertySet, combiningOp?: ICombiningOp): void;
132
+ annotateRange(start: number, end: number, props: PropertySet): void;
125
133
  getPropertiesAtPosition(pos: number): PropertySet | undefined;
126
134
  getRangeExtentsOfPosition(pos: number): {
127
135
  posStart: number | undefined;
@@ -159,10 +167,7 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
159
167
  * @param remoteClientId - The client id of the remote client
160
168
  */
161
169
  resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: string): number | undefined;
162
- /**
163
- * @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
164
- */
165
- submitSequenceMessage(message: IMergeTreeOp): void;
170
+ private submitSequenceMessage;
166
171
  /**
167
172
  * Given a position specified relative to a marker id, lookup the marker
168
173
  * and convert the position to a character position.
@@ -171,22 +176,19 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
171
176
  posFromRelativePos(relativePos: IRelativePosition): number;
172
177
  /**
173
178
  * Walk the underlying segments of the sequence.
174
- * The walked segments may extend beyond the range
175
- * if the segments cross the ranges start or end boundaries.
176
- * Set split range to true to ensure only segments within the
177
- * range are walked.
179
+ * The walked segments may extend beyond the range if the segments cross the
180
+ * ranges start or end boundaries.
181
+ *
182
+ * Set split range to true to ensure only segments within the range are walked.
178
183
  *
179
- * @param handler - The function to handle each segment
184
+ * @param handler - The function to handle each segment. Traversal ends if
185
+ * this function returns true.
180
186
  * @param start - Optional. The start of range walk.
181
187
  * @param end - Optional. The end of range walk
182
188
  * @param accum - Optional. An object that will be passed to the handler for accumulation
183
189
  * @param splitRange - Optional. Splits boundary segments on the range boundaries
184
190
  */
185
191
  walkSegments<TClientData>(handler: ISegmentAction<TClientData>, start?: number, end?: number, accum?: TClientData, splitRange?: boolean): void;
186
- /**
187
- * @deprecated this functionality is no longer supported and will be removed
188
- */
189
- getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap;
190
192
  /**
191
193
  * @returns The most recent sequence number which has been acked by the server and processed by this
192
194
  * SharedSegmentSequence.
@@ -1 +1 @@
1
- {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAU,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAe,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEN,MAAM,EAMN,YAAY,EAGZ,kBAAkB,EAGlB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,sBAAsB,EAGtB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EAIzB,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACN,gBAAgB,EAGhB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACN,mBAAmB,EAGnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAKvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACxE,CACC,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,KAAK,IAAI,GAC9E,IAAI,CAAC;IACR,CACC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,qBAAqB,KAAK,IAAI,GAC1E,IAAI,CAAC;IACR,CACC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,qBAAqB,KAAK,IAAI,GAChF,IAAI,CAAC;CACR;AAED;;GAEG;AACH,8BAAsB,qBAAqB,CAAC,CAAC,SAAS,QAAQ,CAC7D,SAAQ,YAAY,CAAC,4BAA4B,CACjD,YAAW,yBAAyB,CAAC,gBAAgB,CAAC,EAAE,yBAAyB;IA2GhF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAC1B,EAAE,EAAE,MAAM;aAED,eAAe,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,QAAQ;IA5GlE,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAEhE,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA0EjC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,SAAS,CAAC,cAAc,iBAAwB;IAEhD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CACtC;IAEJ,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAmC;IAE7E,OAAO,CAAC,sBAAsB,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmD;gBAErE,gBAAgB,EAAE,sBAAsB,EAClD,EAAE,EAAE,MAAM,EACjB,UAAU,EAAE,kBAAkB,EACd,eAAe,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,QAAQ;IAoDlE;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIpD;;;;;;OAMG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxD;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,kBAAkB;IAIjD;;;;OAIG;IACI,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;QACzC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;QACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B;IAID;;OAEG;IACI,SAAS;IAIhB;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM;IAI7C;;;;;;;OAOG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAInE,uBAAuB,CAAC,GAAG,EAAE,MAAM;IAInC,yBAAyB,CAAC,GAAG,EAAE,MAAM;;;;IAI5C;;;;;;;OAOG;IACI,4BAA4B,CAClC,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,WAAW,GAAG,SAAS,EACnC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,kBAAkB,CAAC,EAAE,OAAO,GAC1B,sBAAsB;IAWzB;;OAEG;IACI,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM;IAIxE;;OAEG;IACI,4BAA4B,CAAC,IAAI,EAAE,sBAAsB;IAIhE;;;;;;;;;;;;;OAaG;IACI,2BAA2B,CACjC,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAQrB,OAAO,CAAC,qBAAqB;IAmB7B;;;;OAIG;IACI,kBAAkB,CAAC,WAAW,EAAE,iBAAiB;IAIxD;;;;;;;;;;;;;OAaG;IACI,YAAY,CAAC,WAAW,EAC9B,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,EACpC,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,WAAW,EACnB,UAAU,GAAE,OAAe,GACzB,IAAI;IAIP;;;OAGG;IACI,aAAa;IAIpB;;;;OAIG;IACI,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAG1E;;;;OAIG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAK5D;;;OAGG;IACI,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;IAIlF;;;;;;;;;;;OAWG;IACI,2BAA2B,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAI9D;;OAEG;IACH,SAAS,CAAC,aAAa,CACtB,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB;IAcxB;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,UAAU,EAAE,iBAAiB;IAQzD;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAa3E;;OAEG;IACH,SAAS,CAAC,SAAS;IAKnB;;OAEG;IACH,SAAS,CAAC,YAAY;IAEtB;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAgB7D;;OAEG;cACa,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IA6DxD;;OAEG;IACH,SAAS,CAAC,WAAW,CACpB,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO;IA0BzB;;OAEG;IACH,SAAS,CAAC,SAAS;IAQnB;;OAEG;IACH,SAAS,CAAC,mBAAmB;IAK7B;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAI/C,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,mBAAmB;IA0C3B,OAAO,CAAC,+BAA+B;IAYvC,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,6BAA6B;CAuBrC;AA4BD;;GAEG;AACH,wBAAgB,yBAAyB,SAExC"}
package/lib/sequence.js CHANGED
@@ -1,24 +1,26 @@
1
+ "use strict";
1
2
  /*!
2
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
4
  * Licensed under the MIT License.
4
5
  */
5
- /* eslint-disable import/no-deprecated */
6
- import { assert, Deferred } from "@fluidframework/core-utils";
7
- import { bufferToString } from "@fluid-internal/client-utils";
8
- import { LoggingError, createChildLogger } from "@fluidframework/telemetry-utils";
9
- import { MessageType } from "@fluidframework/protocol-definitions";
10
- import { Client, createAnnotateRangeOp, createGroupOp, createInsertOp, createRemoveRangeOp, matchProperties, MergeTreeDeltaType, } from "@fluidframework/merge-tree";
11
- import { ObjectStoragePartition, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
12
- import { makeHandlesSerializable, parseHandles, SharedObject, } from "@fluidframework/shared-object-base";
13
- import { DefaultMap } from "./defaultMap";
14
- import { SequenceIntervalCollectionValueType, } from "./intervalCollection";
15
- import { SequenceDeltaEvent, SequenceMaintenanceEvent } from "./sequenceDeltaEvent";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.resetReentrancyLogCounter = exports.SharedSegmentSequence = void 0;
8
+ const core_utils_1 = require("@fluidframework/core-utils");
9
+ const client_utils_1 = require("@fluid-internal/client-utils");
10
+ const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
11
+ const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
12
+ const merge_tree_1 = require("@fluidframework/merge-tree");
13
+ const runtime_utils_1 = require("@fluidframework/runtime-utils");
14
+ const shared_object_base_1 = require("@fluidframework/shared-object-base");
15
+ const defaultMap_1 = require("./defaultMap");
16
+ const intervalCollection_1 = require("./intervalCollection");
17
+ const sequenceDeltaEvent_1 = require("./sequenceDeltaEvent");
16
18
  const snapshotFileName = "header";
17
19
  const contentPath = "content";
18
20
  /**
19
- * @public
21
+ * @alpha
20
22
  */
21
- export class SharedSegmentSequence extends SharedObject {
23
+ class SharedSegmentSequence extends shared_object_base_1.SharedObject {
22
24
  get loaded() {
23
25
  return this.loadedDeferred.promise;
24
26
  }
@@ -26,7 +28,7 @@ export class SharedSegmentSequence extends SharedObject {
26
28
  const ops = [];
27
29
  for (const r of event.ranges) {
28
30
  switch (event.deltaOperation) {
29
- case MergeTreeDeltaType.ANNOTATE: {
31
+ case merge_tree_1.MergeTreeDeltaType.ANNOTATE: {
30
32
  const lastAnnotate = ops[ops.length - 1];
31
33
  const props = {};
32
34
  for (const key of Object.keys(r.propertyDeltas)) {
@@ -34,25 +36,36 @@ export class SharedSegmentSequence extends SharedObject {
34
36
  }
35
37
  if (lastAnnotate &&
36
38
  lastAnnotate.pos2 === r.position &&
37
- matchProperties(lastAnnotate.props, props)) {
39
+ (0, merge_tree_1.matchProperties)(lastAnnotate.props, props)) {
38
40
  lastAnnotate.pos2 += r.segment.cachedLength;
39
41
  }
40
42
  else {
41
- ops.push(createAnnotateRangeOp(r.position, r.position + r.segment.cachedLength, props, undefined));
43
+ ops.push((0, merge_tree_1.createAnnotateRangeOp)(r.position, r.position + r.segment.cachedLength, props));
42
44
  }
43
45
  break;
44
46
  }
45
- case MergeTreeDeltaType.INSERT:
46
- ops.push(createInsertOp(r.position, r.segment.clone().toJSONObject()));
47
+ case merge_tree_1.MergeTreeDeltaType.INSERT:
48
+ ops.push((0, merge_tree_1.createInsertOp)(r.position, r.segment.clone().toJSONObject()));
47
49
  break;
48
- case MergeTreeDeltaType.REMOVE: {
50
+ case merge_tree_1.MergeTreeDeltaType.REMOVE: {
49
51
  const lastRem = ops[ops.length - 1];
50
52
  if (lastRem?.pos1 === r.position) {
51
- assert(lastRem.pos2 !== undefined, 0x3ff /* pos2 should not be undefined here */);
53
+ (0, core_utils_1.assert)(lastRem.pos2 !== undefined, 0x3ff /* pos2 should not be undefined here */);
52
54
  lastRem.pos2 += r.segment.cachedLength;
53
55
  }
54
56
  else {
55
- ops.push(createRemoveRangeOp(r.position, r.position + r.segment.cachedLength));
57
+ ops.push((0, merge_tree_1.createRemoveRangeOp)(r.position, r.position + r.segment.cachedLength));
58
+ }
59
+ break;
60
+ }
61
+ case merge_tree_1.MergeTreeDeltaType.OBLITERATE: {
62
+ const lastRem = ops[ops.length - 1];
63
+ if (lastRem?.pos1 === r.position) {
64
+ (0, core_utils_1.assert)(lastRem.pos2 !== undefined, 0x874 /* pos2 should not be undefined here */);
65
+ lastRem.pos2 += r.segment.cachedLength;
66
+ }
67
+ else {
68
+ ops.push((0, merge_tree_1.createObliterateRangeOp)(r.position, r.position + r.segment.cachedLength));
56
69
  }
57
70
  break;
58
71
  }
@@ -67,7 +80,7 @@ export class SharedSegmentSequence extends SharedObject {
67
80
  this.id = id;
68
81
  this.segmentFromSpec = segmentFromSpec;
69
82
  /** `Deferred` that triggers once the object is loaded */
70
- this.loadedDeferred = new Deferred();
83
+ this.loadedDeferred = new core_utils_1.Deferred();
71
84
  // cache out going ops created when partial loading
72
85
  this.loadedDeferredOutgoingOps = [];
73
86
  // cache incoming ops that arrive when partial loading
@@ -80,37 +93,50 @@ export class SharedSegmentSequence extends SharedObject {
80
93
  : createReentrancyDetector((depth) => {
81
94
  if (totalReentrancyLogs > 0) {
82
95
  totalReentrancyLogs--;
83
- this.logger.sendTelemetryEvent({ eventName: "LocalOpReentry", depth }, new LoggingError(reentrancyErrorMessage));
96
+ this.logger.sendTelemetryEvent({ eventName: "LocalOpReentry", depth }, new telemetry_utils_1.LoggingError(reentrancyErrorMessage));
84
97
  }
85
98
  });
86
99
  this.loadedDeferred.promise.catch((error) => {
87
100
  this.logger.sendErrorEvent({ eventName: "SequenceLoadFailed" }, error);
88
101
  });
89
- this.client = new Client(segmentFromSpec, createChildLogger({
102
+ // eslint-disable-next-line import/no-deprecated
103
+ this.client = new merge_tree_1.Client(segmentFromSpec, (0, telemetry_utils_1.createChildLogger)({
90
104
  logger: this.logger,
91
105
  namespace: "SharedSegmentSequence.MergeTreeClient",
92
106
  }), dataStoreRuntime.options);
93
107
  this.client.prependListener("delta", (opArgs, deltaArgs) => {
94
- const event = new SequenceDeltaEvent(opArgs, deltaArgs, this.client);
108
+ const event = new sequenceDeltaEvent_1.SequenceDeltaEvent(opArgs, deltaArgs, this.client);
95
109
  if (opArgs.stashed !== true && event.isLocal) {
96
110
  this.submitSequenceMessage(opArgs.op);
97
111
  }
98
112
  this.emit("sequenceDelta", event, this);
99
113
  });
100
114
  this.client.on("maintenance", (args, opArgs) => {
101
- this.emit("maintenance", new SequenceMaintenanceEvent(opArgs, args, this.client), this);
115
+ this.emit("maintenance", new sequenceDeltaEvent_1.SequenceMaintenanceEvent(opArgs, args, this.client), this);
102
116
  });
103
- this.intervalCollections = new DefaultMap(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), new SequenceIntervalCollectionValueType(), dataStoreRuntime.options);
117
+ this.intervalCollections = new defaultMap_1.DefaultMap(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), new intervalCollection_1.SequenceIntervalCollectionValueType(), dataStoreRuntime.options);
104
118
  }
105
119
  /**
106
120
  * @param start - The inclusive start of the range to remove
107
121
  * @param end - The exclusive end of the range to remove
108
122
  */
109
123
  removeRange(start, end) {
110
- return this.guardReentrancy(() => this.client.removeRangeLocal(start, end));
124
+ this.guardReentrancy(() => this.client.removeRangeLocal(start, end));
125
+ }
126
+ /**
127
+ * Obliterate is similar to remove, but differs in that segments concurrently
128
+ * inserted into an obliterated range will also be removed
129
+ *
130
+ * @param start - The inclusive start of the range to obliterate
131
+ * @param end - The exclusive end of the range to obliterate
132
+ */
133
+ obliterateRange(start, end) {
134
+ this.guardReentrancy(() => this.client.obliterateRangeLocal(start, end));
111
135
  }
112
136
  /**
113
- * @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
137
+ * @deprecated The ability to create group ops will be removed in an upcoming
138
+ * release, as group ops are redundant with the native batching capabilities
139
+ * of the runtime
114
140
  */
115
141
  groupOperation(groupOp) {
116
142
  this.guardReentrancy(() => this.client.localTransaction(groupOp));
@@ -143,11 +169,10 @@ export class SharedSegmentSequence extends SharedObject {
143
169
  * @param start - The inclusive start position of the range to annotate
144
170
  * @param end - The exclusive end position of the range to annotate
145
171
  * @param props - The properties to annotate the range with
146
- * @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
147
172
  *
148
173
  */
149
- annotateRange(start, end, props, combiningOp) {
150
- this.guardReentrancy(() => this.client.annotateRangeLocal(start, end, props, combiningOp));
174
+ annotateRange(start, end, props) {
175
+ this.guardReentrancy(() => this.client.annotateRangeLocal(start, end, props));
151
176
  }
152
177
  getPropertiesAtPosition(pos) {
153
178
  return this.client.getPropertiesAtPosition(pos);
@@ -195,18 +220,15 @@ export class SharedSegmentSequence extends SharedObject {
195
220
  resolveRemoteClientPosition(remoteClientPosition, remoteClientRefSeq, remoteClientId) {
196
221
  return this.client.resolveRemoteClientPosition(remoteClientPosition, remoteClientRefSeq, remoteClientId);
197
222
  }
198
- /**
199
- * @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
200
- */
201
223
  submitSequenceMessage(message) {
202
224
  if (!this.isAttached()) {
203
225
  return;
204
226
  }
205
- const translated = makeHandlesSerializable(message, this.serializer, this.handle);
206
- const metadata = this.client.peekPendingSegmentGroups(message.type === MergeTreeDeltaType.GROUP ? message.ops.length : 1);
227
+ const translated = (0, shared_object_base_1.makeHandlesSerializable)(message, this.serializer, this.handle);
228
+ const metadata = this.client.peekPendingSegmentGroups(message.type === merge_tree_1.MergeTreeDeltaType.GROUP ? message.ops.length : 1);
207
229
  // if loading isn't complete, we need to cache
208
230
  // local ops until loading is complete, and then
209
- // they will be resent
231
+ // they will be present
210
232
  if (!this.loadedDeferred.isCompleted) {
211
233
  this.loadedDeferredOutgoingOps.push(metadata ? [translated, metadata] : translated);
212
234
  }
@@ -224,12 +246,13 @@ export class SharedSegmentSequence extends SharedObject {
224
246
  }
225
247
  /**
226
248
  * Walk the underlying segments of the sequence.
227
- * The walked segments may extend beyond the range
228
- * if the segments cross the ranges start or end boundaries.
229
- * Set split range to true to ensure only segments within the
230
- * range are walked.
249
+ * The walked segments may extend beyond the range if the segments cross the
250
+ * ranges start or end boundaries.
231
251
  *
232
- * @param handler - The function to handle each segment
252
+ * Set split range to true to ensure only segments within the range are walked.
253
+ *
254
+ * @param handler - The function to handle each segment. Traversal ends if
255
+ * this function returns true.
233
256
  * @param start - Optional. The start of range walk.
234
257
  * @param end - Optional. The end of range walk
235
258
  * @param accum - Optional. An object that will be passed to the handler for accumulation
@@ -238,12 +261,6 @@ export class SharedSegmentSequence extends SharedObject {
238
261
  walkSegments(handler, start, end, accum, splitRange = false) {
239
262
  this.client.walkSegments(handler, start, end, accum, splitRange);
240
263
  }
241
- /**
242
- * @deprecated this functionality is no longer supported and will be removed
243
- */
244
- getStackContext(startPos, rangeLabels) {
245
- return this.client.getStackContext(startPos, rangeLabels);
246
- }
247
264
  /**
248
265
  * @returns The most recent sequence number which has been acked by the server and processed by this
249
266
  * SharedSegmentSequence.
@@ -294,7 +311,7 @@ export class SharedSegmentSequence extends SharedObject {
294
311
  * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
295
312
  */
296
313
  summarizeCore(serializer, telemetryContext) {
297
- const builder = new SummaryTreeBuilder();
314
+ const builder = new runtime_utils_1.SummaryTreeBuilder();
298
315
  // conditionally write the interval collection blob
299
316
  // only if it has entries
300
317
  if (this.intervalCollections.size > 0) {
@@ -358,14 +375,14 @@ export class SharedSegmentSequence extends SharedObject {
358
375
  async loadCore(storage) {
359
376
  if (await storage.contains(snapshotFileName)) {
360
377
  const blob = await storage.readBlob(snapshotFileName);
361
- const header = bufferToString(blob, "utf8");
378
+ const header = (0, client_utils_1.bufferToString)(blob, "utf8");
362
379
  this.intervalCollections.populate(header);
363
380
  }
364
381
  try {
365
382
  // this will load the header, and return a promise
366
383
  // that will resolve when the body is loaded
367
384
  // and the catchup ops are available.
368
- const { catchupOpsP } = await this.client.load(this.runtime, new ObjectStoragePartition(storage, contentPath), this.serializer);
385
+ const { catchupOpsP } = await this.client.load(this.runtime, new runtime_utils_1.ObjectStoragePartition(storage, contentPath), this.serializer);
369
386
  // setup a promise to process the
370
387
  // catch up ops, and finishing the loading process
371
388
  const loadCatchUpOps = catchupOpsP
@@ -413,11 +430,11 @@ export class SharedSegmentSequence extends SharedObject {
413
430
  // if loading isn't complete, we need to cache all
414
431
  // incoming ops to be applied after loading is complete
415
432
  if (this.deferIncomingOps) {
416
- assert(!local, 0x072 /* "Unexpected local op when loading not finished" */);
433
+ (0, core_utils_1.assert)(!local, 0x072 /* "Unexpected local op when loading not finished" */);
417
434
  this.loadedDeferredIncomingOps.push(message);
418
435
  }
419
436
  else {
420
- assert(message.type === MessageType.Operation, 0x073 /* "Sequence message not operation" */);
437
+ (0, core_utils_1.assert)(message.type === protocol_definitions_1.MessageType.Operation, 0x073 /* "Sequence message not operation" */);
421
438
  const handled = this.intervalCollections.tryProcessMessage(message.contents, local, message, localOpMetadata);
422
439
  if (!handled) {
423
440
  this.processMergeTreeMsg(message, local);
@@ -445,11 +462,11 @@ export class SharedSegmentSequence extends SharedObject {
445
462
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
446
463
  */
447
464
  applyStashedOp(content) {
448
- return this.client.applyStashedOp(parseHandles(content, this.serializer));
465
+ return this.client.applyStashedOp((0, shared_object_base_1.parseHandles)(content, this.serializer));
449
466
  }
450
467
  summarizeMergeTree(serializer) {
451
468
  // Are we fully loaded? If not, things will go south
452
- assert(this.loadedDeferred.isCompleted, 0x074 /* "Snapshot called when not fully loaded" */);
469
+ (0, core_utils_1.assert)(this.loadedDeferred.isCompleted, 0x074 /* "Snapshot called when not fully loaded" */);
453
470
  const minSeq = this.runtime.deltaManager.minimumSequenceNumber;
454
471
  this.processMinSequenceNumberChanged(minSeq);
455
472
  this.messagesSinceMSNChange.forEach((m) => {
@@ -458,7 +475,7 @@ export class SharedSegmentSequence extends SharedObject {
458
475
  return this.client.summarize(this.runtime, this.handle, serializer, this.messagesSinceMSNChange);
459
476
  }
460
477
  processMergeTreeMsg(rawMessage, local) {
461
- const message = parseHandles(rawMessage, this.serializer);
478
+ const message = (0, shared_object_base_1.parseHandles)(rawMessage, this.serializer);
462
479
  const ops = [];
463
480
  function transformOps(event) {
464
481
  ops.push(...SharedSegmentSequence.createOpsFromDelta(event));
@@ -479,7 +496,8 @@ export class SharedSegmentSequence extends SharedObject {
479
496
  stashMessage = {
480
497
  ...message,
481
498
  referenceSequenceNumber: stashMessage.sequenceNumber - 1,
482
- contents: ops.length !== 1 ? createGroupOp(...ops) : ops[0],
499
+ // eslint-disable-next-line import/no-deprecated
500
+ contents: ops.length !== 1 ? (0, merge_tree_1.createGroupOp)(...ops) : ops[0],
483
501
  };
484
502
  }
485
503
  this.messagesSinceMSNChange.push(stashMessage);
@@ -535,7 +553,7 @@ export class SharedSegmentSequence extends SharedObject {
535
553
  if (!intervalCollection.attached) {
536
554
  intervalCollection.attachGraph(this.client, key);
537
555
  }
538
- assert(previousValue === undefined, 0x2c1 /* "Creating an interval collection that already exists?" */);
556
+ (0, core_utils_1.assert)(previousValue === undefined, 0x2c1 /* "Creating an interval collection that already exists?" */);
539
557
  this.emit("createIntervalCollection", key, local, this);
540
558
  });
541
559
  // Initialize existing SharedIntervalCollections
@@ -545,6 +563,7 @@ export class SharedSegmentSequence extends SharedObject {
545
563
  }
546
564
  }
547
565
  }
566
+ exports.SharedSegmentSequence = SharedSegmentSequence;
548
567
  function createReentrancyDetector(onReentrancy) {
549
568
  let depth = 0;
550
569
  function detectReentrancy(callback) {
@@ -570,11 +589,12 @@ let totalReentrancyLogs = 3;
570
589
  /**
571
590
  * Resets the reentrancy log counter. Test-only API.
572
591
  */
573
- export function resetReentrancyLogCounter() {
592
+ function resetReentrancyLogCounter() {
574
593
  totalReentrancyLogs = 3;
575
594
  }
595
+ exports.resetReentrancyLogCounter = resetReentrancyLogCounter;
576
596
  const reentrancyErrorMessage = "Reentrancy detected in sequence local ops";
577
597
  const ensureNoReentrancy = createReentrancyDetector(() => {
578
- throw new LoggingError(reentrancyErrorMessage);
598
+ throw new telemetry_utils_1.LoggingError(reentrancyErrorMessage);
579
599
  });
580
600
  //# sourceMappingURL=sequence.js.map