@fluidframework/sequence 2.0.0-rc.1.0.3 → 2.0.0-rc.2.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 (379) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +4 -1
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +8 -0
  4. package/README.md +2 -2
  5. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/sequence.api.md +15 -27
  8. package/dist/defaultMap.d.ts +10 -16
  9. package/dist/defaultMap.d.ts.map +1 -1
  10. package/dist/defaultMap.js +73 -70
  11. package/dist/defaultMap.js.map +1 -1
  12. package/dist/defaultMapInterfaces.d.ts +1 -8
  13. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  14. package/dist/defaultMapInterfaces.js.map +1 -1
  15. package/dist/index.d.ts +11 -11
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +42 -42
  18. package/dist/index.js.map +1 -1
  19. package/dist/intervalCollection.d.ts +21 -15
  20. package/dist/intervalCollection.d.ts.map +1 -1
  21. package/dist/intervalCollection.js +59 -110
  22. package/dist/intervalCollection.js.map +1 -1
  23. package/dist/intervalIndex/endpointInRangeIndex.d.ts +3 -3
  24. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  25. package/dist/intervalIndex/endpointInRangeIndex.js +8 -8
  26. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  27. package/dist/intervalIndex/endpointIndex.d.ts +3 -3
  28. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  29. package/dist/intervalIndex/endpointIndex.js +4 -4
  30. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  31. package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
  32. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  33. package/dist/intervalIndex/idIntervalIndex.js +2 -2
  34. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  35. package/dist/intervalIndex/index.d.ts +8 -8
  36. package/dist/intervalIndex/index.d.ts.map +1 -1
  37. package/dist/intervalIndex/index.js +16 -16
  38. package/dist/intervalIndex/index.js.map +1 -1
  39. package/dist/intervalIndex/intervalIndex.d.ts +1 -1
  40. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
  41. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  42. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +7 -10
  43. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  44. package/dist/intervalIndex/overlappingIntervalsIndex.js +12 -13
  45. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  46. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +2 -2
  47. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  48. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +7 -7
  49. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  50. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
  51. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  52. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  53. package/dist/intervalIndex/startpointInRangeIndex.d.ts +3 -3
  54. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  55. package/dist/intervalIndex/startpointInRangeIndex.js +8 -8
  56. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  57. package/dist/intervalTree.d.ts +1 -1
  58. package/dist/intervalTree.d.ts.map +1 -1
  59. package/dist/intervalTree.js.map +1 -1
  60. package/dist/intervals/index.d.ts +3 -3
  61. package/dist/intervals/index.d.ts.map +1 -1
  62. package/dist/intervals/index.js +16 -16
  63. package/dist/intervals/index.js.map +1 -1
  64. package/dist/intervals/interval.d.ts +2 -2
  65. package/dist/intervals/interval.d.ts.map +1 -1
  66. package/dist/intervals/interval.js +2 -2
  67. package/dist/intervals/interval.js.map +1 -1
  68. package/dist/intervals/intervalUtils.d.ts +3 -3
  69. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  70. package/dist/intervals/intervalUtils.js +1 -1
  71. package/dist/intervals/intervalUtils.js.map +1 -1
  72. package/dist/intervals/sequenceInterval.d.ts +2 -2
  73. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  74. package/dist/intervals/sequenceInterval.js +22 -23
  75. package/dist/intervals/sequenceInterval.js.map +1 -1
  76. package/dist/localValues.d.ts +2 -2
  77. package/dist/localValues.d.ts.map +1 -1
  78. package/dist/localValues.js.map +1 -1
  79. package/dist/package.json +3 -0
  80. package/dist/packageVersion.d.ts +1 -1
  81. package/dist/packageVersion.js +1 -1
  82. package/dist/packageVersion.js.map +1 -1
  83. package/dist/revertibles.d.ts +12 -12
  84. package/dist/revertibles.d.ts.map +1 -1
  85. package/dist/revertibles.js +26 -26
  86. package/dist/revertibles.js.map +1 -1
  87. package/dist/sequence-alpha.d.ts +172 -13
  88. package/dist/sequence-beta.d.ts +2 -0
  89. package/dist/sequence-public.d.ts +2 -0
  90. package/dist/sequence-untrimmed.d.ts +73 -14
  91. package/dist/sequence.d.ts +48 -5
  92. package/dist/sequence.d.ts.map +1 -1
  93. package/dist/sequence.js +103 -29
  94. package/dist/sequence.js.map +1 -1
  95. package/dist/sequenceFactory.d.ts +4 -1
  96. package/dist/sequenceFactory.d.ts.map +1 -1
  97. package/dist/sequenceFactory.js +8 -5
  98. package/dist/sequenceFactory.js.map +1 -1
  99. package/dist/sharedIntervalCollection.d.ts +2 -2
  100. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  101. package/dist/sharedIntervalCollection.js +5 -5
  102. package/dist/sharedIntervalCollection.js.map +1 -1
  103. package/dist/sharedSequence.d.ts +1 -1
  104. package/dist/sharedSequence.d.ts.map +1 -1
  105. package/dist/sharedSequence.js +2 -2
  106. package/dist/sharedSequence.js.map +1 -1
  107. package/dist/sharedString.d.ts +2 -2
  108. package/dist/sharedString.d.ts.map +1 -1
  109. package/dist/sharedString.js +6 -6
  110. package/dist/sharedString.js.map +1 -1
  111. package/dist/tsdoc-metadata.json +1 -1
  112. package/lib/{defaultMap.d.mts → defaultMap.d.ts} +11 -17
  113. package/lib/defaultMap.d.ts.map +1 -0
  114. package/lib/{defaultMap.mjs → defaultMap.js} +72 -69
  115. package/lib/defaultMap.js.map +1 -0
  116. package/lib/{defaultMapInterfaces.d.mts → defaultMapInterfaces.d.ts} +2 -9
  117. package/lib/defaultMapInterfaces.d.ts.map +1 -0
  118. package/lib/{defaultMapInterfaces.mjs → defaultMapInterfaces.js} +1 -1
  119. package/lib/defaultMapInterfaces.js.map +1 -0
  120. package/lib/{index.d.mts → index.d.ts} +24 -12
  121. package/lib/index.d.ts.map +1 -0
  122. package/lib/{index.mjs → index.js} +11 -11
  123. package/lib/index.js.map +1 -0
  124. package/lib/{intervalCollection.d.mts → intervalCollection.d.ts} +22 -16
  125. package/lib/intervalCollection.d.ts.map +1 -0
  126. package/lib/{intervalCollection.mjs → intervalCollection.js} +23 -74
  127. package/lib/intervalCollection.js.map +1 -0
  128. package/lib/intervalIndex/{endpointInRangeIndex.d.mts → endpointInRangeIndex.d.ts} +4 -4
  129. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -0
  130. package/lib/intervalIndex/{endpointInRangeIndex.mjs → endpointInRangeIndex.js} +3 -3
  131. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -0
  132. package/lib/intervalIndex/{endpointIndex.d.mts → endpointIndex.d.ts} +4 -4
  133. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -0
  134. package/lib/intervalIndex/{endpointIndex.mjs → endpointIndex.js} +2 -2
  135. package/lib/intervalIndex/endpointIndex.js.map +1 -0
  136. package/lib/intervalIndex/{idIntervalIndex.d.mts → idIntervalIndex.d.ts} +3 -3
  137. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -0
  138. package/lib/intervalIndex/{idIntervalIndex.mjs → idIntervalIndex.js} +2 -2
  139. package/lib/intervalIndex/idIntervalIndex.js.map +1 -0
  140. package/lib/intervalIndex/{index.d.mts → index.d.ts} +9 -9
  141. package/lib/intervalIndex/index.d.ts.map +1 -0
  142. package/lib/intervalIndex/{index.mjs → index.js} +7 -7
  143. package/lib/intervalIndex/index.js.map +1 -0
  144. package/lib/intervalIndex/{intervalIndex.d.mts → intervalIndex.d.ts} +2 -2
  145. package/lib/intervalIndex/intervalIndex.d.ts.map +1 -0
  146. package/lib/intervalIndex/{intervalIndex.mjs → intervalIndex.js} +1 -1
  147. package/lib/intervalIndex/intervalIndex.js.map +1 -0
  148. package/lib/intervalIndex/{intervalIndexUtils.d.mts → intervalIndexUtils.d.ts} +1 -1
  149. package/lib/intervalIndex/intervalIndexUtils.d.ts.map +1 -0
  150. package/lib/intervalIndex/{intervalIndexUtils.mjs → intervalIndexUtils.js} +1 -1
  151. package/lib/intervalIndex/intervalIndexUtils.js.map +1 -0
  152. package/lib/intervalIndex/{overlappingIntervalsIndex.d.mts → overlappingIntervalsIndex.d.ts} +8 -11
  153. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -0
  154. package/lib/intervalIndex/{overlappingIntervalsIndex.mjs → overlappingIntervalsIndex.js} +8 -9
  155. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -0
  156. package/lib/intervalIndex/{overlappingSequenceIntervalsIndex.d.mts → overlappingSequenceIntervalsIndex.d.ts} +3 -3
  157. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -0
  158. package/lib/intervalIndex/{overlappingSequenceIntervalsIndex.mjs → overlappingSequenceIntervalsIndex.js} +3 -3
  159. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -0
  160. package/lib/intervalIndex/{sequenceIntervalIndexes.d.mts → sequenceIntervalIndexes.d.ts} +3 -3
  161. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -0
  162. package/lib/intervalIndex/{sequenceIntervalIndexes.mjs → sequenceIntervalIndexes.js} +1 -1
  163. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -0
  164. package/lib/intervalIndex/{startpointInRangeIndex.d.mts → startpointInRangeIndex.d.ts} +4 -4
  165. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -0
  166. package/lib/intervalIndex/{startpointInRangeIndex.mjs → startpointInRangeIndex.js} +3 -3
  167. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -0
  168. package/lib/{intervalTree.d.mts → intervalTree.d.ts} +2 -2
  169. package/lib/intervalTree.d.ts.map +1 -0
  170. package/lib/{intervalTree.mjs → intervalTree.js} +1 -1
  171. package/lib/intervalTree.js.map +1 -0
  172. package/lib/intervals/{index.d.mts → index.d.ts} +4 -4
  173. package/lib/intervals/index.d.ts.map +1 -0
  174. package/lib/intervals/{index.mjs → index.js} +4 -4
  175. package/lib/intervals/index.js.map +1 -0
  176. package/lib/intervals/{interval.d.mts → interval.d.ts} +3 -3
  177. package/lib/intervals/{interval.d.mts.map → interval.d.ts.map} +1 -1
  178. package/lib/intervals/{interval.mjs → interval.js} +2 -2
  179. package/lib/intervals/interval.js.map +1 -0
  180. package/lib/intervals/{intervalUtils.d.mts → intervalUtils.d.ts} +4 -4
  181. package/lib/intervals/intervalUtils.d.ts.map +1 -0
  182. package/lib/intervals/{intervalUtils.mjs → intervalUtils.js} +3 -2
  183. package/lib/intervals/intervalUtils.js.map +1 -0
  184. package/lib/intervals/{sequenceInterval.d.mts → sequenceInterval.d.ts} +3 -3
  185. package/lib/intervals/sequenceInterval.d.ts.map +1 -0
  186. package/lib/intervals/{sequenceInterval.mjs → sequenceInterval.js} +5 -4
  187. package/lib/intervals/{sequenceInterval.mjs.map → sequenceInterval.js.map} +1 -1
  188. package/lib/{localValues.d.mts → localValues.d.ts} +3 -3
  189. package/lib/{localValues.d.mts.map → localValues.d.ts.map} +1 -1
  190. package/lib/{localValues.mjs → localValues.js} +1 -1
  191. package/lib/localValues.js.map +1 -0
  192. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  193. package/lib/packageVersion.d.ts.map +1 -0
  194. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  195. package/lib/packageVersion.js.map +1 -0
  196. package/lib/{revertibles.d.mts → revertibles.d.ts} +13 -13
  197. package/lib/revertibles.d.ts.map +1 -0
  198. package/lib/{revertibles.mjs → revertibles.js} +11 -10
  199. package/lib/revertibles.js.map +1 -0
  200. package/lib/{sequence-alpha.d.mts → sequence-alpha.d.ts} +185 -13
  201. package/lib/{sequence-public.d.mts → sequence-beta.d.ts} +15 -0
  202. package/lib/{sequence-beta.d.mts → sequence-public.d.ts} +15 -0
  203. package/lib/{sequence-untrimmed.d.mts → sequence-untrimmed.d.ts} +86 -14
  204. package/lib/{sequence.d.mts → sequence.d.ts} +49 -6
  205. package/lib/sequence.d.ts.map +1 -0
  206. package/lib/{sequence.mjs → sequence.js} +100 -29
  207. package/lib/sequence.js.map +1 -0
  208. package/lib/{sequenceDeltaEvent.d.mts → sequenceDeltaEvent.d.ts} +1 -1
  209. package/lib/sequenceDeltaEvent.d.ts.map +1 -0
  210. package/lib/{sequenceDeltaEvent.mjs → sequenceDeltaEvent.js} +1 -1
  211. package/lib/sequenceDeltaEvent.js.map +1 -0
  212. package/lib/{sequenceFactory.d.mts → sequenceFactory.d.ts} +5 -2
  213. package/lib/sequenceFactory.d.ts.map +1 -0
  214. package/lib/{sequenceFactory.mjs → sequenceFactory.js} +6 -3
  215. package/lib/sequenceFactory.js.map +1 -0
  216. package/lib/{sharedIntervalCollection.d.mts → sharedIntervalCollection.d.ts} +3 -3
  217. package/lib/sharedIntervalCollection.d.ts.map +1 -0
  218. package/lib/{sharedIntervalCollection.mjs → sharedIntervalCollection.js} +4 -4
  219. package/lib/sharedIntervalCollection.js.map +1 -0
  220. package/lib/{sharedSequence.d.mts → sharedSequence.d.ts} +2 -2
  221. package/lib/sharedSequence.d.ts.map +1 -0
  222. package/lib/{sharedSequence.mjs → sharedSequence.js} +2 -2
  223. package/lib/sharedSequence.js.map +1 -0
  224. package/lib/{sharedString.d.mts → sharedString.d.ts} +3 -3
  225. package/lib/sharedString.d.ts.map +1 -0
  226. package/lib/{sharedString.mjs → sharedString.js} +3 -3
  227. package/lib/sharedString.js.map +1 -0
  228. package/lib/test/collections.intervalTree.js +73 -0
  229. package/lib/test/collections.intervalTree.js.map +1 -0
  230. package/lib/test/createSnapshotFiles.js +15 -0
  231. package/lib/test/createSnapshotFiles.js.map +1 -0
  232. package/lib/test/dirname.cjs +16 -0
  233. package/lib/test/dirname.cjs.map +1 -0
  234. package/lib/test/endpointInRangeIndex.spec.js +182 -0
  235. package/lib/test/endpointInRangeIndex.spec.js.map +1 -0
  236. package/lib/test/fuzz/fuzzUtils.js +250 -0
  237. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  238. package/lib/test/fuzz/intervalCollection.fuzz.spec.js +200 -0
  239. package/lib/test/fuzz/intervalCollection.fuzz.spec.js.map +1 -0
  240. package/lib/test/fuzz/intervalRevertibles.fuzz.spec.js +129 -0
  241. package/lib/test/fuzz/intervalRevertibles.fuzz.spec.js.map +1 -0
  242. package/lib/test/fuzz/sharedString.fuzz.spec.js +91 -0
  243. package/lib/test/fuzz/sharedString.fuzz.spec.js.map +1 -0
  244. package/lib/test/generateSharedStrings.js +138 -0
  245. package/lib/test/generateSharedStrings.js.map +1 -0
  246. package/lib/test/intervalCollection.detached.spec.js +126 -0
  247. package/lib/test/intervalCollection.detached.spec.js.map +1 -0
  248. package/lib/test/intervalCollection.events.spec.js +491 -0
  249. package/lib/test/intervalCollection.events.spec.js.map +1 -0
  250. package/lib/test/intervalCollection.perf.spec.js +88 -0
  251. package/lib/test/intervalCollection.perf.spec.js.map +1 -0
  252. package/lib/test/intervalCollection.snapshot.spec.js +171 -0
  253. package/lib/test/intervalCollection.snapshot.spec.js.map +1 -0
  254. package/lib/test/intervalCollection.spec.js +1660 -0
  255. package/lib/test/intervalCollection.spec.js.map +1 -0
  256. package/lib/test/intervalIndexTestUtils.js +49 -0
  257. package/lib/test/intervalIndexTestUtils.js.map +1 -0
  258. package/lib/test/intervalRebasing.spec.js +589 -0
  259. package/lib/test/intervalRebasing.spec.js.map +1 -0
  260. package/lib/test/intervalStashedOps.spec.js +142 -0
  261. package/lib/test/intervalStashedOps.spec.js.map +1 -0
  262. package/lib/test/intervalTestUtils.js +81 -0
  263. package/lib/test/intervalTestUtils.js.map +1 -0
  264. package/lib/test/marshalling.spec.js +55 -0
  265. package/lib/test/marshalling.spec.js.map +1 -0
  266. package/lib/test/memory/sharedSequence.spec.js +82 -0
  267. package/lib/test/memory/sharedSequence.spec.js.map +1 -0
  268. package/lib/test/memory/sharedString.spec.js +134 -0
  269. package/lib/test/memory/sharedString.spec.js.map +1 -0
  270. package/lib/test/overlappingSequenceIntervalsIndex.spec.js +348 -0
  271. package/lib/test/overlappingSequenceIntervalsIndex.spec.js.map +1 -0
  272. package/lib/test/partialLoad.spec.js +211 -0
  273. package/lib/test/partialLoad.spec.js.map +1 -0
  274. package/lib/test/rebasing.spec.js +81 -0
  275. package/lib/test/rebasing.spec.js.map +1 -0
  276. package/lib/test/reentrancy.spec.js +174 -0
  277. package/lib/test/reentrancy.spec.js.map +1 -0
  278. package/lib/test/revertibles.spec.js +971 -0
  279. package/lib/test/revertibles.spec.js.map +1 -0
  280. package/lib/test/sequenceDeltaEvent.spec.js +2144 -0
  281. package/lib/test/sequenceDeltaEvent.spec.js.map +1 -0
  282. package/lib/test/sharedIntervalCollection.spec.js +159 -0
  283. package/lib/test/sharedIntervalCollection.spec.js.map +1 -0
  284. package/lib/test/sharedString.spec.js +532 -0
  285. package/lib/test/sharedString.spec.js.map +1 -0
  286. package/lib/test/snapshotEmptyProps.spec.js +45 -0
  287. package/lib/test/snapshotEmptyProps.spec.js.map +1 -0
  288. package/lib/test/snapshotVersion.spec.js +149 -0
  289. package/lib/test/snapshotVersion.spec.js.map +1 -0
  290. package/lib/test/startpointInRangeIndex.spec.js +182 -0
  291. package/lib/test/startpointInRangeIndex.spec.js.map +1 -0
  292. package/lib/test/subSequence.spec.js +92 -0
  293. package/lib/test/subSequence.spec.js.map +1 -0
  294. package/lib/test/types/validateSequencePrevious.generated.js +162 -0
  295. package/lib/test/types/validateSequencePrevious.generated.js.map +1 -0
  296. package/lib/test/v1IntervalCollectionHelpers.js +93 -0
  297. package/lib/test/v1IntervalCollectionHelpers.js.map +1 -0
  298. package/package.json +66 -60
  299. package/src/defaultMap.ts +97 -123
  300. package/src/defaultMapInterfaces.ts +1 -9
  301. package/src/index.ts +15 -11
  302. package/src/intervalCollection.ts +57 -84
  303. package/src/intervalIndex/endpointInRangeIndex.ts +4 -4
  304. package/src/intervalIndex/endpointIndex.ts +3 -3
  305. package/src/intervalIndex/idIntervalIndex.ts +3 -4
  306. package/src/intervalIndex/index.ts +8 -8
  307. package/src/intervalIndex/intervalIndex.ts +1 -1
  308. package/src/intervalIndex/overlappingIntervalsIndex.ts +10 -11
  309. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +4 -4
  310. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -2
  311. package/src/intervalIndex/startpointInRangeIndex.ts +4 -4
  312. package/src/intervalTree.ts +1 -1
  313. package/src/intervals/index.ts +3 -3
  314. package/src/intervals/interval.ts +2 -4
  315. package/src/intervals/intervalUtils.ts +3 -3
  316. package/src/intervals/sequenceInterval.ts +3 -4
  317. package/src/localValues.ts +2 -2
  318. package/src/packageVersion.ts +1 -1
  319. package/src/revertibles.ts +13 -13
  320. package/src/sequence.ts +126 -44
  321. package/src/sequenceFactory.ts +5 -2
  322. package/src/sharedIntervalCollection.ts +5 -5
  323. package/src/sharedSequence.ts +1 -1
  324. package/src/sharedString.ts +2 -2
  325. package/tsconfig.cjs.json +7 -0
  326. package/tsconfig.json +2 -5
  327. package/lib/defaultMap.d.mts.map +0 -1
  328. package/lib/defaultMap.mjs.map +0 -1
  329. package/lib/defaultMapInterfaces.d.mts.map +0 -1
  330. package/lib/defaultMapInterfaces.mjs.map +0 -1
  331. package/lib/index.d.mts.map +0 -1
  332. package/lib/index.mjs.map +0 -1
  333. package/lib/intervalCollection.d.mts.map +0 -1
  334. package/lib/intervalCollection.mjs.map +0 -1
  335. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +0 -1
  336. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +0 -1
  337. package/lib/intervalIndex/endpointIndex.d.mts.map +0 -1
  338. package/lib/intervalIndex/endpointIndex.mjs.map +0 -1
  339. package/lib/intervalIndex/idIntervalIndex.d.mts.map +0 -1
  340. package/lib/intervalIndex/idIntervalIndex.mjs.map +0 -1
  341. package/lib/intervalIndex/index.d.mts.map +0 -1
  342. package/lib/intervalIndex/index.mjs.map +0 -1
  343. package/lib/intervalIndex/intervalIndex.d.mts.map +0 -1
  344. package/lib/intervalIndex/intervalIndex.mjs.map +0 -1
  345. package/lib/intervalIndex/intervalIndexUtils.d.mts.map +0 -1
  346. package/lib/intervalIndex/intervalIndexUtils.mjs.map +0 -1
  347. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +0 -1
  348. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +0 -1
  349. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +0 -1
  350. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +0 -1
  351. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +0 -1
  352. package/lib/intervalIndex/sequenceIntervalIndexes.mjs.map +0 -1
  353. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +0 -1
  354. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +0 -1
  355. package/lib/intervalTree.d.mts.map +0 -1
  356. package/lib/intervalTree.mjs.map +0 -1
  357. package/lib/intervals/index.d.mts.map +0 -1
  358. package/lib/intervals/index.mjs.map +0 -1
  359. package/lib/intervals/interval.mjs.map +0 -1
  360. package/lib/intervals/intervalUtils.d.mts.map +0 -1
  361. package/lib/intervals/intervalUtils.mjs.map +0 -1
  362. package/lib/intervals/sequenceInterval.d.mts.map +0 -1
  363. package/lib/localValues.mjs.map +0 -1
  364. package/lib/packageVersion.d.mts.map +0 -1
  365. package/lib/packageVersion.mjs.map +0 -1
  366. package/lib/revertibles.d.mts.map +0 -1
  367. package/lib/revertibles.mjs.map +0 -1
  368. package/lib/sequence.d.mts.map +0 -1
  369. package/lib/sequence.mjs.map +0 -1
  370. package/lib/sequenceDeltaEvent.d.mts.map +0 -1
  371. package/lib/sequenceDeltaEvent.mjs.map +0 -1
  372. package/lib/sequenceFactory.d.mts.map +0 -1
  373. package/lib/sequenceFactory.mjs.map +0 -1
  374. package/lib/sharedIntervalCollection.d.mts.map +0 -1
  375. package/lib/sharedIntervalCollection.mjs.map +0 -1
  376. package/lib/sharedSequence.d.mts.map +0 -1
  377. package/lib/sharedSequence.mjs.map +0 -1
  378. package/lib/sharedString.d.mts.map +0 -1
  379. package/lib/sharedString.mjs.map +0 -1
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Supports distributed data structures which are list-like.
3
+ *
4
+ * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
5
+ * text.
6
+ *
7
+ * See the package's README for a high-level introduction to `SharedString`'s feature set.
8
+ * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
9
+ * working with text.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+
1
14
  import { BaseSegment } from '@fluidframework/merge-tree';
2
15
  import { Client } from '@fluidframework/merge-tree';
3
16
  import { Deferred } from '@fluidframework/core-utils';
@@ -44,15 +57,37 @@ import { TextSegment } from '@fluidframework/merge-tree';
44
57
  import { TrackingGroup } from '@fluidframework/merge-tree';
45
58
  import { TypedEventEmitter } from '@fluid-internal/client-utils';
46
59
 
47
- /* Excluded from this release type: appendAddIntervalToRevertibles */
60
+ /**
61
+ * Create revertibles for adding an interval
62
+ * @alpha
63
+ */
64
+ export declare function appendAddIntervalToRevertibles(interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
48
65
 
49
- /* Excluded from this release type: appendChangeIntervalToRevertibles */
66
+ /**
67
+ * Create revertibles for moving endpoints of an interval
68
+ * @alpha
69
+ */
70
+ export declare function appendChangeIntervalToRevertibles(string: SharedString, newInterval: SequenceInterval, previousInterval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
50
71
 
51
- /* Excluded from this release type: appendDeleteIntervalToRevertibles */
72
+ /**
73
+ * Create revertibles for deleting an interval
74
+ * @alpha
75
+ */
76
+ export declare function appendDeleteIntervalToRevertibles(string: SharedString, interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
52
77
 
53
- /* Excluded from this release type: appendIntervalPropertyChangedToRevertibles */
78
+ /**
79
+ * Create revertibles for changing properties of an interval
80
+ * @alpha
81
+ */
82
+ export declare function appendIntervalPropertyChangedToRevertibles(interval: SequenceInterval, deltas: PropertySet, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
83
+
84
+ /**
85
+ * Create revertibles for SharedStringDeltas, handling indirectly modified intervals
86
+ * (e.g. reverting remove of a range that contains an interval will move the interval back)
87
+ * @alpha
88
+ */
89
+ export declare function appendSharedStringDeltaToRevertibles(string: SharedString, delta: SequenceDeltaEvent, revertibles: SharedStringRevertible[]): void;
54
90
 
55
- /* Excluded from this release type: appendSharedStringDeltaToRevertibles */
56
91
  export { BaseSegment }
57
92
 
58
93
  /* Excluded from this release type: createEndpointIndex */
@@ -61,7 +96,10 @@ export { BaseSegment }
61
96
 
62
97
  /* Excluded from this release type: createIdIntervalIndex */
63
98
 
64
- /* Excluded from this release type: createOverlappingIntervalsIndex */
99
+ /**
100
+ * @alpha
101
+ */
102
+ export declare function createOverlappingIntervalsIndex(sharedString: SharedString): IOverlappingIntervalsIndex<SequenceInterval>;
65
103
 
66
104
  /* Excluded from this release type: createOverlappingSequenceIntervalsIndex */
67
105
 
@@ -72,7 +110,11 @@ export { BaseSegment }
72
110
  */
73
111
  export declare type DeserializeCallback = (properties: PropertySet) => void;
74
112
 
75
- /* Excluded from this release type: discardSharedStringRevertibles */
113
+ /**
114
+ * Clean up resources held by revertibles that are no longer needed.
115
+ * @alpha
116
+ */
117
+ export declare function discardSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
76
118
 
77
119
  /* Excluded from this release type: getTextAndMarkers */
78
120
 
@@ -359,6 +401,19 @@ export declare interface IIntervalCollectionEvent<TInterval extends ISerializabl
359
401
  * `op` is defined if and only if the server has acked this change.
360
402
  */
361
403
  (event: "propertyChanged", listener: (interval: TInterval, propertyDeltas: PropertySet, local: boolean, op: ISequencedDocumentMessage | undefined) => void): void;
404
+ /**
405
+ * This event is invoked whenever an interval's endpoints or properties (or both) have changed.
406
+ * `interval` reflects the state of the updated endpoints or properties.
407
+ * `propertyDeltas` is a map-like whose keys contain all values that were changed, and whose
408
+ * values contain all previous values of the property set.
409
+ * This object can be used directly in a call to `changeProperties` to revert the property change if desired.
410
+ * 'previousInterval' contains transient `ReferencePosition`s at the same location as the interval's original
411
+ * endpoints. These references should be used for position information only. In the case of a property change
412
+ * only, this argument should be undefined.
413
+ * `local` reflects whether the change originated locally.
414
+ * `slide` is true if the change is due to sliding on removal of position.
415
+ */
416
+ (event: "changed", listener: (interval: TInterval, propertyDeltas: PropertySet, previousInterval: TInterval | undefined, local: boolean, slide: boolean) => void): void;
362
417
  }
363
418
 
364
419
  /* Excluded from this release type: IIntervalHelpers */
@@ -409,9 +464,59 @@ export declare interface IntervalIndex<TInterval extends ISerializableInterval>
409
464
 
410
465
  /* Excluded from this release type: intervalLocatorFromEndpoint */
411
466
 
412
- /* Excluded from this release type: IntervalOpType */
467
+ /**
468
+ * Values are used in revertibles.
469
+ * @alpha
470
+ */
471
+ export declare const IntervalOpType: {
472
+ readonly PROPERTY_CHANGED: "propertyChanged";
473
+ readonly POSITION_REMOVE: "positionRemove";
474
+ readonly ADD: "add";
475
+ readonly DELETE: "delete";
476
+ readonly CHANGE: "change";
477
+ };
413
478
 
414
- /* Excluded from this release type: IntervalRevertible */
479
+ /**
480
+ * @alpha
481
+ */
482
+ export declare type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
483
+
484
+ /**
485
+ * Data for undoing edits affecting Intervals.
486
+ * @alpha
487
+ */
488
+ export declare type IntervalRevertible = {
489
+ event: typeof IntervalOpType.CHANGE;
490
+ interval: SequenceInterval;
491
+ start: LocalReferencePosition;
492
+ end: LocalReferencePosition;
493
+ } | {
494
+ event: typeof IntervalOpType.ADD;
495
+ interval: SequenceInterval;
496
+ } | {
497
+ event: typeof IntervalOpType.DELETE;
498
+ interval: SequenceInterval;
499
+ start: LocalReferencePosition;
500
+ end: LocalReferencePosition;
501
+ } | {
502
+ event: typeof IntervalOpType.PROPERTY_CHANGED;
503
+ interval: SequenceInterval;
504
+ propertyDeltas: PropertySet;
505
+ } | {
506
+ event: typeof IntervalOpType.POSITION_REMOVE;
507
+ intervals: {
508
+ intervalId: string;
509
+ label: string;
510
+ startOffset?: number;
511
+ endOffset?: number;
512
+ }[];
513
+ revertibleRefs: {
514
+ revertible: IntervalRevertible;
515
+ offset: number;
516
+ isStart: boolean;
517
+ }[];
518
+ mergeTreeRevertible: MergeTreeDeltaRevertible;
519
+ };
415
520
 
416
521
  /**
417
522
  * Determines how an interval should expand when segments are inserted adjacent
@@ -468,7 +573,20 @@ export declare enum IntervalType {
468
573
  /* Excluded from this release type: Transient */
469
574
  }
470
575
 
471
- /* Excluded from this release type: IOverlappingIntervalsIndex */
576
+ /**
577
+ * @alpha
578
+ */
579
+ export declare interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval> extends IntervalIndex<TInterval> {
580
+ /**
581
+ * @returns an array of all intervals contained in this collection that overlap the range
582
+ * `[start end]`.
583
+ */
584
+ findOverlappingIntervals(start: SequencePlace, end: SequencePlace): TInterval[];
585
+ /**
586
+ * Gathers the interval results based on specified parameters.
587
+ */
588
+ gatherIterationResults(results: TInterval[], iteratesForward: boolean, start?: SequencePlace, end?: SequencePlace): void;
589
+ }
472
590
 
473
591
  export { ISegment }
474
592
 
@@ -655,7 +773,11 @@ export { ReferenceType }
655
773
 
656
774
  /* Excluded from this release type: reservedTileLabelsKey */
657
775
 
658
- /* Excluded from this release type: revertSharedStringRevertibles */
776
+ /**
777
+ * Invoke revertibles to reverse prior edits
778
+ * @alpha
779
+ */
780
+ export declare function revertSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
659
781
 
660
782
  /**
661
783
  * The event object returned on sequenceDelta events.
@@ -906,6 +1028,35 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
906
1028
  */
907
1029
  protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
908
1030
  private static createOpsFromDelta;
1031
+ /**
1032
+ * Note: this field only provides a lower-bound on the reference sequence numbers for in-flight ops.
1033
+ * The exact reason isn't understood, but some e2e tests suggest that the runtime may sometimes process
1034
+ * incoming leave/join ops before putting an op that this DDS submits over the wire.
1035
+ *
1036
+ * E.g. SharedString submits an op while deltaManager has lastSequenceNumber = 10, but before the runtime
1037
+ * puts this op over the wire, it processes a client join/leave op with sequence number 11, so the referenceSequenceNumber
1038
+ * on the SharedString op is 11.
1039
+ *
1040
+ * The reference sequence numbers placed in this queue are also not accurate for stashed ops due to how the applyStashedOp
1041
+ * flow works at the runtime level. This is a legitimate bug, and AB#6602 tracks one way to fix it (stop reaching all the way
1042
+ * to deltaManager's lastSequenceNumber to obtain refSeq, instead leveraging some analogous notion on the container or datastore
1043
+ * runtime).
1044
+ */
1045
+ private readonly inFlightRefSeqs;
1046
+ private ongoingResubmitRefSeq;
1047
+ /**
1048
+ * Gets the reference sequence number (i.e. sequence number of the runtime's last processed op) for an op submitted
1049
+ * in the current context.
1050
+ *
1051
+ * This value can be optionally overridden using `useResubmitRefSeq`.
1052
+ * IntervalCollection's resubmit logic currently relies on preserving merge information from when the op was originally submitted,
1053
+ * even if the op is resubmitted more than once. Thus during resubmit, `inFlightRefSeqs` gets populated with the
1054
+ * original refSeq rather than the refSeq at the time of reconnection.
1055
+ *
1056
+ * @remarks - In some not fully understood cases, the runtime may process incoming ops before putting an op that this
1057
+ * DDS submits over the wire. See `inFlightRefSeqs` for more details.
1058
+ */
1059
+ private get currentRefSeq();
909
1060
  protected client: Client;
910
1061
  /** `Deferred` that triggers once the object is loaded */
911
1062
  protected loadedDeferred: Deferred<void>;
@@ -978,6 +1129,11 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
978
1129
  createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
979
1130
  /**
980
1131
  * Resolves a `ReferencePosition` into a character position using this client's perspective.
1132
+ *
1133
+ * Reference positions that point to a character that has been removed will
1134
+ * always return the position of the nearest non-removed character, regardless
1135
+ * of `ReferenceType`. To handle this case specifically, one may wish
1136
+ * to look at the segment returned by `ReferencePosition.getSegment`.
981
1137
  */
982
1138
  localReferencePositionToPosition(lref: ReferencePosition): number;
983
1139
  /**
@@ -1106,12 +1262,21 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
1106
1262
  /**
1107
1263
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
1108
1264
  */
1109
- protected applyStashedOp(content: any): unknown;
1265
+ protected applyStashedOp(content: any): void;
1110
1266
  private summarizeMergeTree;
1267
+ /**
1268
+ *
1269
+ * @param message - Message with decoded and hydrated handles
1270
+ */
1111
1271
  private processMergeTreeMsg;
1112
1272
  private processMinSequenceNumberChanged;
1113
1273
  private loadFinished;
1114
1274
  private initializeIntervalCollections;
1275
+ /**
1276
+ * Overrides the "currently applicable reference sequence number" for the duration of the callback.
1277
+ * See remarks on `currentRefSeq` for more context.
1278
+ */
1279
+ private useResubmitRefSeq;
1115
1280
  }
1116
1281
 
1117
1282
  /* Excluded from this release type: SharedSequence */
@@ -1231,10 +1396,17 @@ export declare class SharedStringFactory implements IChannelFactory {
1231
1396
  * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
1232
1397
  */
1233
1398
  load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<SharedString>;
1399
+ /**
1400
+ * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}
1401
+ */
1234
1402
  create(document: IFluidDataStoreRuntime, id: string): SharedString;
1235
1403
  }
1236
1404
 
1237
- /* Excluded from this release type: SharedStringRevertible */
1405
+ /**
1406
+ * Data for undoing edits on SharedStrings and Intervals.
1407
+ * @alpha
1408
+ */
1409
+ export declare type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
1238
1410
 
1239
1411
  /**
1240
1412
  * @alpha
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Supports distributed data structures which are list-like.
3
+ *
4
+ * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
5
+ * text.
6
+ *
7
+ * See the package's README for a high-level introduction to `SharedString`'s feature set.
8
+ * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
9
+ * working with text.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+
1
14
  import { BaseSegment } from '@fluidframework/merge-tree';
2
15
  import { Client } from '@fluidframework/merge-tree';
3
16
  import { Deferred } from '@fluidframework/core-utils';
@@ -206,6 +219,8 @@ import { TypedEventEmitter } from '@fluid-internal/client-utils';
206
219
 
207
220
  /* Excluded from this release type: SharedIntervalCollectionFactory */
208
221
 
222
+ /* Excluded from this release type: SharedObject */
223
+
209
224
  /* Excluded from this release type: SharedSegmentSequence */
210
225
 
211
226
  /* Excluded from this release type: SharedSequence */
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Supports distributed data structures which are list-like.
3
+ *
4
+ * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
5
+ * text.
6
+ *
7
+ * See the package's README for a high-level introduction to `SharedString`'s feature set.
8
+ * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
9
+ * working with text.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+
1
14
  import { BaseSegment } from '@fluidframework/merge-tree';
2
15
  import { Client } from '@fluidframework/merge-tree';
3
16
  import { Deferred } from '@fluidframework/core-utils';
@@ -206,6 +219,8 @@ import { TypedEventEmitter } from '@fluid-internal/client-utils';
206
219
 
207
220
  /* Excluded from this release type: SharedIntervalCollectionFactory */
208
221
 
222
+ /* Excluded from this release type: SharedObject */
223
+
209
224
  /* Excluded from this release type: SharedSegmentSequence */
210
225
 
211
226
  /* Excluded from this release type: SharedSequence */
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Supports distributed data structures which are list-like.
3
+ *
4
+ * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
5
+ * text.
6
+ *
7
+ * See the package's README for a high-level introduction to `SharedString`'s feature set.
8
+ * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
9
+ * working with text.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+
1
14
  import { BaseSegment } from '@fluidframework/merge-tree';
2
15
  import { Client } from '@fluidframework/merge-tree';
3
16
  import { Deferred } from '@fluidframework/core-utils';
@@ -46,32 +59,32 @@ import { TypedEventEmitter } from '@fluid-internal/client-utils';
46
59
 
47
60
  /**
48
61
  * Create revertibles for adding an interval
49
- * @internal
62
+ * @alpha
50
63
  */
51
64
  export declare function appendAddIntervalToRevertibles(interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
52
65
 
53
66
  /**
54
67
  * Create revertibles for moving endpoints of an interval
55
- * @internal
68
+ * @alpha
56
69
  */
57
70
  export declare function appendChangeIntervalToRevertibles(string: SharedString, newInterval: SequenceInterval, previousInterval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
58
71
 
59
72
  /**
60
73
  * Create revertibles for deleting an interval
61
- * @internal
74
+ * @alpha
62
75
  */
63
76
  export declare function appendDeleteIntervalToRevertibles(string: SharedString, interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
64
77
 
65
78
  /**
66
79
  * Create revertibles for changing properties of an interval
67
- * @internal
80
+ * @alpha
68
81
  */
69
82
  export declare function appendIntervalPropertyChangedToRevertibles(interval: SequenceInterval, deltas: PropertySet, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
70
83
 
71
84
  /**
72
85
  * Create revertibles for SharedStringDeltas, handling indirectly modified intervals
73
86
  * (e.g. reverting remove of a range that contains an interval will move the interval back)
74
- * @internal
87
+ * @alpha
75
88
  */
76
89
  export declare function appendSharedStringDeltaToRevertibles(string: SharedString, delta: SequenceDeltaEvent, revertibles: SharedStringRevertible[]): void;
77
90
 
@@ -93,7 +106,7 @@ export declare function createEndpointInRangeIndex(sharedString: SharedString):
93
106
  export declare function createIdIntervalIndex<TInterval extends ISerializableInterval>(): IIdIntervalIndex<TInterval>;
94
107
 
95
108
  /**
96
- * @internal
109
+ * @alpha
97
110
  */
98
111
  export declare function createOverlappingIntervalsIndex(sharedString: SharedString): IOverlappingIntervalsIndex<SequenceInterval>;
99
112
 
@@ -114,7 +127,7 @@ export declare type DeserializeCallback = (properties: PropertySet) => void;
114
127
 
115
128
  /**
116
129
  * Clean up resources held by revertibles that are no longer needed.
117
- * @internal
130
+ * @alpha
118
131
  */
119
132
  export declare function discardSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
120
133
 
@@ -452,6 +465,19 @@ export declare interface IIntervalCollectionEvent<TInterval extends ISerializabl
452
465
  * `op` is defined if and only if the server has acked this change.
453
466
  */
454
467
  (event: "propertyChanged", listener: (interval: TInterval, propertyDeltas: PropertySet, local: boolean, op: ISequencedDocumentMessage | undefined) => void): void;
468
+ /**
469
+ * This event is invoked whenever an interval's endpoints or properties (or both) have changed.
470
+ * `interval` reflects the state of the updated endpoints or properties.
471
+ * `propertyDeltas` is a map-like whose keys contain all values that were changed, and whose
472
+ * values contain all previous values of the property set.
473
+ * This object can be used directly in a call to `changeProperties` to revert the property change if desired.
474
+ * 'previousInterval' contains transient `ReferencePosition`s at the same location as the interval's original
475
+ * endpoints. These references should be used for position information only. In the case of a property change
476
+ * only, this argument should be undefined.
477
+ * `local` reflects whether the change originated locally.
478
+ * `slide` is true if the change is due to sliding on removal of position.
479
+ */
480
+ (event: "changed", listener: (interval: TInterval, propertyDeltas: PropertySet, previousInterval: TInterval | undefined, local: boolean, slide: boolean) => void): void;
455
481
  }
456
482
 
457
483
  /**
@@ -629,7 +655,7 @@ export declare function intervalLocatorFromEndpoint(potentialEndpoint: LocalRefe
629
655
 
630
656
  /**
631
657
  * Values are used in revertibles.
632
- * @internal
658
+ * @alpha
633
659
  */
634
660
  export declare const IntervalOpType: {
635
661
  readonly PROPERTY_CHANGED: "propertyChanged";
@@ -640,13 +666,13 @@ export declare const IntervalOpType: {
640
666
  };
641
667
 
642
668
  /**
643
- * @internal
669
+ * @alpha
644
670
  */
645
671
  export declare type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
646
672
 
647
673
  /**
648
674
  * Data for undoing edits affecting Intervals.
649
- * @internal
675
+ * @alpha
650
676
  */
651
677
  export declare type IntervalRevertible = {
652
678
  event: typeof IntervalOpType.CHANGE;
@@ -741,7 +767,7 @@ export declare enum IntervalType {
741
767
  }
742
768
 
743
769
  /**
744
- * @internal
770
+ * @alpha
745
771
  */
746
772
  export declare interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval> extends IntervalIndex<TInterval> {
747
773
  /**
@@ -968,7 +994,7 @@ export { reservedTileLabelsKey }
968
994
 
969
995
  /**
970
996
  * Invoke revertibles to reverse prior edits
971
- * @internal
997
+ * @alpha
972
998
  */
973
999
  export declare function revertSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
974
1000
 
@@ -1342,6 +1368,35 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
1342
1368
  */
1343
1369
  protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
1344
1370
  private static createOpsFromDelta;
1371
+ /**
1372
+ * Note: this field only provides a lower-bound on the reference sequence numbers for in-flight ops.
1373
+ * The exact reason isn't understood, but some e2e tests suggest that the runtime may sometimes process
1374
+ * incoming leave/join ops before putting an op that this DDS submits over the wire.
1375
+ *
1376
+ * E.g. SharedString submits an op while deltaManager has lastSequenceNumber = 10, but before the runtime
1377
+ * puts this op over the wire, it processes a client join/leave op with sequence number 11, so the referenceSequenceNumber
1378
+ * on the SharedString op is 11.
1379
+ *
1380
+ * The reference sequence numbers placed in this queue are also not accurate for stashed ops due to how the applyStashedOp
1381
+ * flow works at the runtime level. This is a legitimate bug, and AB#6602 tracks one way to fix it (stop reaching all the way
1382
+ * to deltaManager's lastSequenceNumber to obtain refSeq, instead leveraging some analogous notion on the container or datastore
1383
+ * runtime).
1384
+ */
1385
+ private readonly inFlightRefSeqs;
1386
+ private ongoingResubmitRefSeq;
1387
+ /**
1388
+ * Gets the reference sequence number (i.e. sequence number of the runtime's last processed op) for an op submitted
1389
+ * in the current context.
1390
+ *
1391
+ * This value can be optionally overridden using `useResubmitRefSeq`.
1392
+ * IntervalCollection's resubmit logic currently relies on preserving merge information from when the op was originally submitted,
1393
+ * even if the op is resubmitted more than once. Thus during resubmit, `inFlightRefSeqs` gets populated with the
1394
+ * original refSeq rather than the refSeq at the time of reconnection.
1395
+ *
1396
+ * @remarks - In some not fully understood cases, the runtime may process incoming ops before putting an op that this
1397
+ * DDS submits over the wire. See `inFlightRefSeqs` for more details.
1398
+ */
1399
+ private get currentRefSeq();
1345
1400
  protected client: Client;
1346
1401
  /** `Deferred` that triggers once the object is loaded */
1347
1402
  protected loadedDeferred: Deferred<void>;
@@ -1414,6 +1469,11 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
1414
1469
  createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
1415
1470
  /**
1416
1471
  * Resolves a `ReferencePosition` into a character position using this client's perspective.
1472
+ *
1473
+ * Reference positions that point to a character that has been removed will
1474
+ * always return the position of the nearest non-removed character, regardless
1475
+ * of `ReferenceType`. To handle this case specifically, one may wish
1476
+ * to look at the segment returned by `ReferencePosition.getSegment`.
1417
1477
  */
1418
1478
  localReferencePositionToPosition(lref: ReferencePosition): number;
1419
1479
  /**
@@ -1542,12 +1602,21 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
1542
1602
  /**
1543
1603
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
1544
1604
  */
1545
- protected applyStashedOp(content: any): unknown;
1605
+ protected applyStashedOp(content: any): void;
1546
1606
  private summarizeMergeTree;
1607
+ /**
1608
+ *
1609
+ * @param message - Message with decoded and hydrated handles
1610
+ */
1547
1611
  private processMergeTreeMsg;
1548
1612
  private processMinSequenceNumberChanged;
1549
1613
  private loadFinished;
1550
1614
  private initializeIntervalCollections;
1615
+ /**
1616
+ * Overrides the "currently applicable reference sequence number" for the duration of the callback.
1617
+ * See remarks on `currentRefSeq` for more context.
1618
+ */
1619
+ private useResubmitRefSeq;
1551
1620
  }
1552
1621
 
1553
1622
  /**
@@ -1696,12 +1765,15 @@ export declare class SharedStringFactory implements IChannelFactory {
1696
1765
  * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
1697
1766
  */
1698
1767
  load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<SharedString>;
1768
+ /**
1769
+ * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}
1770
+ */
1699
1771
  create(document: IFluidDataStoreRuntime, id: string): SharedString;
1700
1772
  }
1701
1773
 
1702
1774
  /**
1703
1775
  * Data for undoing edits on SharedStrings and Intervals.
1704
- * @internal
1776
+ * @alpha
1705
1777
  */
1706
1778
  export declare type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
1707
1779
 
@@ -9,10 +9,10 @@ import { Client, IJSONSegment, IMergeTreeGroupMsg, IRelativePosition, ISegment,
9
9
  import { IFluidSerializer, SharedObject, ISharedObjectEvents } from "@fluidframework/shared-object-base";
10
10
  import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
11
11
  import { ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
12
- import { SequenceInterval } from "./intervals/index.mjs";
13
- import { IIntervalCollection } from "./intervalCollection.mjs";
14
- import { SequenceDeltaEvent, SequenceMaintenanceEvent } from "./sequenceDeltaEvent.mjs";
15
- import { ISharedIntervalCollection } from "./sharedIntervalCollection.mjs";
12
+ import { SequenceInterval } from "./intervals/index.js";
13
+ import { IIntervalCollection } from "./intervalCollection.js";
14
+ import { SequenceDeltaEvent, SequenceMaintenanceEvent } from "./sequenceDeltaEvent.js";
15
+ import { ISharedIntervalCollection } from "./sharedIntervalCollection.js";
16
16
  /**
17
17
  * Events emitted in response to changes to the sequence data.
18
18
  *
@@ -74,6 +74,35 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
74
74
  */
75
75
  protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
76
76
  private static createOpsFromDelta;
77
+ /**
78
+ * Note: this field only provides a lower-bound on the reference sequence numbers for in-flight ops.
79
+ * The exact reason isn't understood, but some e2e tests suggest that the runtime may sometimes process
80
+ * incoming leave/join ops before putting an op that this DDS submits over the wire.
81
+ *
82
+ * E.g. SharedString submits an op while deltaManager has lastSequenceNumber = 10, but before the runtime
83
+ * puts this op over the wire, it processes a client join/leave op with sequence number 11, so the referenceSequenceNumber
84
+ * on the SharedString op is 11.
85
+ *
86
+ * The reference sequence numbers placed in this queue are also not accurate for stashed ops due to how the applyStashedOp
87
+ * flow works at the runtime level. This is a legitimate bug, and AB#6602 tracks one way to fix it (stop reaching all the way
88
+ * to deltaManager's lastSequenceNumber to obtain refSeq, instead leveraging some analogous notion on the container or datastore
89
+ * runtime).
90
+ */
91
+ private readonly inFlightRefSeqs;
92
+ private ongoingResubmitRefSeq;
93
+ /**
94
+ * Gets the reference sequence number (i.e. sequence number of the runtime's last processed op) for an op submitted
95
+ * in the current context.
96
+ *
97
+ * This value can be optionally overridden using `useResubmitRefSeq`.
98
+ * IntervalCollection's resubmit logic currently relies on preserving merge information from when the op was originally submitted,
99
+ * even if the op is resubmitted more than once. Thus during resubmit, `inFlightRefSeqs` gets populated with the
100
+ * original refSeq rather than the refSeq at the time of reconnection.
101
+ *
102
+ * @remarks - In some not fully understood cases, the runtime may process incoming ops before putting an op that this
103
+ * DDS submits over the wire. See `inFlightRefSeqs` for more details.
104
+ */
105
+ private get currentRefSeq();
77
106
  protected client: Client;
78
107
  /** `Deferred` that triggers once the object is loaded */
79
108
  protected loadedDeferred: Deferred<void>;
@@ -146,6 +175,11 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
146
175
  createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
147
176
  /**
148
177
  * Resolves a `ReferencePosition` into a character position using this client's perspective.
178
+ *
179
+ * Reference positions that point to a character that has been removed will
180
+ * always return the position of the nearest non-removed character, regardless
181
+ * of `ReferenceType`. To handle this case specifically, one may wish
182
+ * to look at the segment returned by `ReferencePosition.getSegment`.
149
183
  */
150
184
  localReferencePositionToPosition(lref: ReferencePosition): number;
151
185
  /**
@@ -274,15 +308,24 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
274
308
  /**
275
309
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
276
310
  */
277
- protected applyStashedOp(content: any): unknown;
311
+ protected applyStashedOp(content: any): void;
278
312
  private summarizeMergeTree;
313
+ /**
314
+ *
315
+ * @param message - Message with decoded and hydrated handles
316
+ */
279
317
  private processMergeTreeMsg;
280
318
  private processMinSequenceNumberChanged;
281
319
  private loadFinished;
282
320
  private initializeIntervalCollections;
321
+ /**
322
+ * Overrides the "currently applicable reference sequence number" for the duration of the callback.
323
+ * See remarks on `currentRefSeq` for more context.
324
+ */
325
+ private useResubmitRefSeq;
283
326
  }
284
327
  /**
285
328
  * Resets the reentrancy log counter. Test-only API.
286
329
  */
287
330
  export declare function resetReentrancyLogCounter(): void;
288
- //# sourceMappingURL=sequence.d.mts.map
331
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"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"}