@fluidframework/sequence 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.225277

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 (350) hide show
  1. package/.eslintrc.js +9 -11
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +449 -0
  4. package/README.md +364 -183
  5. package/api-extractor-esm.json +4 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/sequence.api.md +734 -0
  9. package/dist/{defaultMap.js → defaultMap.cjs} +38 -26
  10. package/dist/defaultMap.cjs.map +1 -0
  11. package/dist/defaultMap.d.ts +7 -6
  12. package/dist/defaultMap.d.ts.map +1 -1
  13. package/dist/defaultMapInterfaces.cjs +7 -0
  14. package/dist/defaultMapInterfaces.cjs.map +1 -0
  15. package/dist/defaultMapInterfaces.d.ts +45 -12
  16. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  17. package/dist/index.cjs +60 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.ts +14 -12
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/intervalCollection.cjs +1193 -0
  22. package/dist/intervalCollection.cjs.map +1 -0
  23. package/dist/intervalCollection.d.ts +448 -162
  24. package/dist/intervalCollection.d.ts.map +1 -1
  25. package/dist/intervalIndex/endpointInRangeIndex.cjs +66 -0
  26. package/dist/intervalIndex/endpointInRangeIndex.cjs.map +1 -0
  27. package/dist/intervalIndex/endpointInRangeIndex.d.ts +34 -0
  28. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -0
  29. package/dist/intervalIndex/endpointIndex.cjs +47 -0
  30. package/dist/intervalIndex/endpointIndex.cjs.map +1 -0
  31. package/dist/intervalIndex/endpointIndex.d.ts +38 -0
  32. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -0
  33. package/dist/intervalIndex/idIntervalIndex.cjs +44 -0
  34. package/dist/intervalIndex/idIntervalIndex.cjs.map +1 -0
  35. package/dist/intervalIndex/idIntervalIndex.d.ts +18 -0
  36. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -0
  37. package/dist/intervalIndex/index.cjs +24 -0
  38. package/dist/intervalIndex/index.cjs.map +1 -0
  39. package/dist/intervalIndex/index.d.ts +13 -0
  40. package/dist/intervalIndex/index.d.ts.map +1 -0
  41. package/dist/{defaultMapInterfaces.js → intervalIndex/intervalIndex.cjs} +1 -1
  42. package/dist/intervalIndex/intervalIndex.cjs.map +1 -0
  43. package/dist/intervalIndex/intervalIndex.d.ts +30 -0
  44. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -0
  45. package/dist/intervalIndex/intervalIndexUtils.cjs +22 -0
  46. package/dist/intervalIndex/intervalIndexUtils.cjs.map +1 -0
  47. package/dist/intervalIndex/intervalIndexUtils.d.ts +17 -0
  48. package/dist/intervalIndex/intervalIndexUtils.d.ts.map +1 -0
  49. package/dist/intervalIndex/overlappingIntervalsIndex.cjs +116 -0
  50. package/dist/intervalIndex/overlappingIntervalsIndex.cjs.map +1 -0
  51. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +44 -0
  52. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -0
  53. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs +41 -0
  54. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs.map +1 -0
  55. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +11 -0
  56. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -0
  57. package/dist/intervalIndex/sequenceIntervalIndexes.cjs +7 -0
  58. package/dist/intervalIndex/sequenceIntervalIndexes.cjs.map +1 -0
  59. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +35 -0
  60. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -0
  61. package/dist/intervalIndex/startpointInRangeIndex.cjs +66 -0
  62. package/dist/intervalIndex/startpointInRangeIndex.cjs.map +1 -0
  63. package/dist/intervalIndex/startpointInRangeIndex.d.ts +34 -0
  64. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -0
  65. package/dist/intervalTree.cjs +80 -0
  66. package/dist/intervalTree.cjs.map +1 -0
  67. package/dist/intervalTree.d.ts +24 -0
  68. package/dist/intervalTree.d.ts.map +1 -0
  69. package/dist/intervals/index.cjs +24 -0
  70. package/dist/intervals/index.cjs.map +1 -0
  71. package/dist/intervals/index.d.ts +8 -0
  72. package/dist/intervals/index.d.ts.map +1 -0
  73. package/dist/intervals/interval.cjs +181 -0
  74. package/dist/intervals/interval.cjs.map +1 -0
  75. package/dist/intervals/interval.d.ts +84 -0
  76. package/dist/intervals/interval.d.ts.map +1 -0
  77. package/dist/intervals/intervalUtils.cjs +90 -0
  78. package/dist/intervals/intervalUtils.cjs.map +1 -0
  79. package/dist/intervals/intervalUtils.d.ts +240 -0
  80. package/dist/intervals/intervalUtils.d.ts.map +1 -0
  81. package/dist/intervals/sequenceInterval.cjs +378 -0
  82. package/dist/intervals/sequenceInterval.cjs.map +1 -0
  83. package/dist/intervals/sequenceInterval.d.ts +137 -0
  84. package/dist/intervals/sequenceInterval.d.ts.map +1 -0
  85. package/dist/{localValues.js → localValues.cjs} +1 -1
  86. package/dist/localValues.cjs.map +1 -0
  87. package/dist/localValues.d.ts +2 -1
  88. package/dist/localValues.d.ts.map +1 -1
  89. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  90. package/dist/packageVersion.cjs.map +1 -0
  91. package/dist/packageVersion.d.ts +1 -1
  92. package/dist/packageVersion.d.ts.map +1 -1
  93. package/dist/revertibles.cjs +425 -0
  94. package/dist/revertibles.cjs.map +1 -0
  95. package/dist/revertibles.d.ts +86 -0
  96. package/dist/revertibles.d.ts.map +1 -0
  97. package/dist/sequence-alpha.d.ts +1290 -0
  98. package/dist/sequence-beta.d.ts +244 -0
  99. package/dist/sequence-public.d.ts +244 -0
  100. package/dist/sequence-untrimmed.d.ts +1778 -0
  101. package/dist/{sequence.js → sequence.cjs} +230 -156
  102. package/dist/sequence.cjs.map +1 -0
  103. package/dist/sequence.d.ts +125 -48
  104. package/dist/sequence.d.ts.map +1 -1
  105. package/dist/{sequenceDeltaEvent.js → sequenceDeltaEvent.cjs} +18 -8
  106. package/dist/sequenceDeltaEvent.cjs.map +1 -0
  107. package/dist/sequenceDeltaEvent.d.ts +24 -7
  108. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  109. package/dist/sequenceFactory.cjs +55 -0
  110. package/dist/sequenceFactory.cjs.map +1 -0
  111. package/dist/sequenceFactory.d.ts +3 -89
  112. package/dist/sequenceFactory.d.ts.map +1 -1
  113. package/dist/{sharedIntervalCollection.js → sharedIntervalCollection.cjs} +17 -22
  114. package/dist/sharedIntervalCollection.cjs.map +1 -0
  115. package/dist/sharedIntervalCollection.d.ts +12 -12
  116. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  117. package/dist/{sharedSequence.js → sharedSequence.cjs} +29 -22
  118. package/dist/sharedSequence.cjs.map +1 -0
  119. package/dist/sharedSequence.d.ts +14 -2
  120. package/dist/sharedSequence.d.ts.map +1 -1
  121. package/dist/sharedString.cjs +274 -0
  122. package/dist/sharedString.cjs.map +1 -0
  123. package/dist/sharedString.d.ts +49 -26
  124. package/dist/sharedString.d.ts.map +1 -1
  125. package/dist/tsdoc-metadata.json +11 -0
  126. package/lib/{defaultMap.d.ts → defaultMap.d.mts} +8 -7
  127. package/lib/defaultMap.d.mts.map +1 -0
  128. package/lib/{defaultMap.js → defaultMap.mjs} +38 -26
  129. package/lib/defaultMap.mjs.map +1 -0
  130. package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +46 -13
  131. package/lib/defaultMapInterfaces.d.mts.map +1 -0
  132. package/lib/defaultMapInterfaces.mjs +6 -0
  133. package/lib/defaultMapInterfaces.mjs.map +1 -0
  134. package/lib/index.d.mts +17 -0
  135. package/lib/index.d.mts.map +1 -0
  136. package/lib/index.mjs +16 -0
  137. package/lib/index.mjs.map +1 -0
  138. package/lib/intervalCollection.d.mts +556 -0
  139. package/lib/intervalCollection.d.mts.map +1 -0
  140. package/lib/intervalCollection.mjs +1178 -0
  141. package/lib/intervalCollection.mjs.map +1 -0
  142. package/lib/intervalIndex/endpointInRangeIndex.d.mts +34 -0
  143. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
  144. package/lib/intervalIndex/endpointInRangeIndex.mjs +61 -0
  145. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
  146. package/lib/intervalIndex/endpointIndex.d.mts +38 -0
  147. package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
  148. package/lib/intervalIndex/endpointIndex.mjs +42 -0
  149. package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
  150. package/lib/intervalIndex/idIntervalIndex.d.mts +18 -0
  151. package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
  152. package/lib/intervalIndex/idIntervalIndex.mjs +40 -0
  153. package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
  154. package/lib/intervalIndex/index.d.mts +13 -0
  155. package/lib/intervalIndex/index.d.mts.map +1 -0
  156. package/lib/intervalIndex/index.mjs +11 -0
  157. package/lib/intervalIndex/index.mjs.map +1 -0
  158. package/lib/intervalIndex/intervalIndex.d.mts +30 -0
  159. package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
  160. package/lib/{defaultMapInterfaces.js → intervalIndex/intervalIndex.mjs} +1 -1
  161. package/lib/intervalIndex/intervalIndex.mjs.map +1 -0
  162. package/lib/intervalIndex/intervalIndexUtils.d.mts +17 -0
  163. package/lib/intervalIndex/intervalIndexUtils.d.mts.map +1 -0
  164. package/lib/intervalIndex/intervalIndexUtils.mjs +18 -0
  165. package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
  166. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts +44 -0
  167. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
  168. package/lib/intervalIndex/overlappingIntervalsIndex.mjs +111 -0
  169. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
  170. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts +11 -0
  171. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
  172. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
  173. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
  174. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts +35 -0
  175. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
  176. package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
  177. package/lib/intervalIndex/sequenceIntervalIndexes.mjs.map +1 -0
  178. package/lib/intervalIndex/startpointInRangeIndex.d.mts +34 -0
  179. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
  180. package/lib/intervalIndex/startpointInRangeIndex.mjs +61 -0
  181. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
  182. package/lib/intervalTree.d.mts +24 -0
  183. package/lib/intervalTree.d.mts.map +1 -0
  184. package/lib/intervalTree.mjs +76 -0
  185. package/lib/intervalTree.mjs.map +1 -0
  186. package/lib/intervals/index.d.mts +8 -0
  187. package/lib/intervals/index.d.mts.map +1 -0
  188. package/lib/intervals/index.mjs +8 -0
  189. package/lib/intervals/index.mjs.map +1 -0
  190. package/lib/intervals/interval.d.mts +84 -0
  191. package/lib/intervals/interval.d.mts.map +1 -0
  192. package/lib/intervals/interval.mjs +176 -0
  193. package/lib/intervals/interval.mjs.map +1 -0
  194. package/lib/intervals/intervalUtils.d.mts +240 -0
  195. package/lib/intervals/intervalUtils.d.mts.map +1 -0
  196. package/lib/intervals/intervalUtils.mjs +84 -0
  197. package/lib/intervals/intervalUtils.mjs.map +1 -0
  198. package/lib/intervals/sequenceInterval.d.mts +137 -0
  199. package/lib/intervals/sequenceInterval.d.mts.map +1 -0
  200. package/lib/intervals/sequenceInterval.mjs +370 -0
  201. package/lib/intervals/sequenceInterval.mjs.map +1 -0
  202. package/lib/{localValues.d.ts → localValues.d.mts} +4 -3
  203. package/lib/localValues.d.mts.map +1 -0
  204. package/lib/{localValues.js → localValues.mjs} +2 -2
  205. package/lib/localValues.mjs.map +1 -0
  206. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  207. package/lib/packageVersion.d.mts.map +1 -0
  208. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  209. package/lib/packageVersion.mjs.map +1 -0
  210. package/lib/revertibles.d.mts +86 -0
  211. package/lib/revertibles.d.mts.map +1 -0
  212. package/lib/revertibles.mjs +416 -0
  213. package/lib/revertibles.mjs.map +1 -0
  214. package/lib/sequence-alpha.d.mts +1277 -0
  215. package/lib/sequence-beta.d.mts +231 -0
  216. package/lib/sequence-public.d.mts +231 -0
  217. package/lib/sequence-untrimmed.d.mts +1765 -0
  218. package/lib/{sequence.d.ts → sequence.d.mts} +128 -51
  219. package/lib/sequence.d.mts.map +1 -0
  220. package/lib/{sequence.js → sequence.mjs} +229 -152
  221. package/lib/sequence.mjs.map +1 -0
  222. package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +25 -8
  223. package/lib/sequenceDeltaEvent.d.mts.map +1 -0
  224. package/lib/{sequenceDeltaEvent.js → sequenceDeltaEvent.mjs} +20 -8
  225. package/lib/sequenceDeltaEvent.mjs.map +1 -0
  226. package/lib/sequenceFactory.d.mts +22 -0
  227. package/lib/sequenceFactory.d.mts.map +1 -0
  228. package/lib/sequenceFactory.mjs +51 -0
  229. package/lib/sequenceFactory.mjs.map +1 -0
  230. package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +13 -13
  231. package/lib/sharedIntervalCollection.d.mts.map +1 -0
  232. package/lib/{sharedIntervalCollection.js → sharedIntervalCollection.mjs} +16 -21
  233. package/lib/sharedIntervalCollection.mjs.map +1 -0
  234. package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +16 -4
  235. package/lib/sharedSequence.d.mts.map +1 -0
  236. package/lib/{sharedSequence.js → sharedSequence.mjs} +30 -23
  237. package/lib/sharedSequence.mjs.map +1 -0
  238. package/lib/{sharedString.d.ts → sharedString.d.mts} +52 -29
  239. package/lib/sharedString.d.mts.map +1 -0
  240. package/lib/sharedString.mjs +269 -0
  241. package/lib/sharedString.mjs.map +1 -0
  242. package/package.json +168 -75
  243. package/prettier.config.cjs +8 -0
  244. package/src/defaultMap.ts +419 -403
  245. package/src/defaultMapInterfaces.ts +164 -117
  246. package/src/index.ts +86 -26
  247. package/src/intervalCollection.ts +2042 -1563
  248. package/src/intervalIndex/endpointInRangeIndex.ts +116 -0
  249. package/src/intervalIndex/endpointIndex.ts +91 -0
  250. package/src/intervalIndex/idIntervalIndex.ts +64 -0
  251. package/src/intervalIndex/index.ts +25 -0
  252. package/src/intervalIndex/intervalIndex.ts +32 -0
  253. package/src/intervalIndex/intervalIndexUtils.ts +27 -0
  254. package/src/intervalIndex/overlappingIntervalsIndex.ts +187 -0
  255. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +80 -0
  256. package/src/intervalIndex/sequenceIntervalIndexes.ts +34 -0
  257. package/src/intervalIndex/startpointInRangeIndex.ts +114 -0
  258. package/src/intervalTree.ts +98 -0
  259. package/src/intervals/index.ts +26 -0
  260. package/src/intervals/interval.ts +238 -0
  261. package/src/intervals/intervalUtils.ts +298 -0
  262. package/src/intervals/sequenceInterval.ts +616 -0
  263. package/src/localValues.ts +68 -73
  264. package/src/packageVersion.ts +1 -1
  265. package/src/revertibles.ts +693 -0
  266. package/src/sequence.ts +850 -690
  267. package/src/sequenceDeltaEvent.ts +164 -131
  268. package/src/sequenceFactory.ts +58 -214
  269. package/src/sharedIntervalCollection.ts +161 -152
  270. package/src/sharedSequence.ts +181 -167
  271. package/src/sharedString.ts +367 -234
  272. package/tsc-multi.test.json +10 -0
  273. package/tsconfig.json +11 -13
  274. package/.editorconfig +0 -7
  275. package/.vscode/launch.json +0 -15
  276. package/dist/defaultMap.js.map +0 -1
  277. package/dist/defaultMapInterfaces.js.map +0 -1
  278. package/dist/index.js +0 -44
  279. package/dist/index.js.map +0 -1
  280. package/dist/intervalCollection.js +0 -1250
  281. package/dist/intervalCollection.js.map +0 -1
  282. package/dist/localValues.js.map +0 -1
  283. package/dist/packageVersion.js.map +0 -1
  284. package/dist/sequence.js.map +0 -1
  285. package/dist/sequenceDeltaEvent.js.map +0 -1
  286. package/dist/sequenceFactory.js +0 -192
  287. package/dist/sequenceFactory.js.map +0 -1
  288. package/dist/sharedIntervalCollection.js.map +0 -1
  289. package/dist/sharedNumberSequence.d.ts +0 -50
  290. package/dist/sharedNumberSequence.d.ts.map +0 -1
  291. package/dist/sharedNumberSequence.js +0 -61
  292. package/dist/sharedNumberSequence.js.map +0 -1
  293. package/dist/sharedObjectSequence.d.ts +0 -50
  294. package/dist/sharedObjectSequence.d.ts.map +0 -1
  295. package/dist/sharedObjectSequence.js +0 -61
  296. package/dist/sharedObjectSequence.js.map +0 -1
  297. package/dist/sharedSequence.js.map +0 -1
  298. package/dist/sharedString.js +0 -187
  299. package/dist/sharedString.js.map +0 -1
  300. package/dist/sparsematrix.d.ts +0 -139
  301. package/dist/sparsematrix.d.ts.map +0 -1
  302. package/dist/sparsematrix.js +0 -332
  303. package/dist/sparsematrix.js.map +0 -1
  304. package/lib/defaultMap.d.ts.map +0 -1
  305. package/lib/defaultMap.js.map +0 -1
  306. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  307. package/lib/defaultMapInterfaces.js.map +0 -1
  308. package/lib/index.d.ts +0 -27
  309. package/lib/index.d.ts.map +0 -1
  310. package/lib/index.js +0 -26
  311. package/lib/index.js.map +0 -1
  312. package/lib/intervalCollection.d.ts +0 -270
  313. package/lib/intervalCollection.d.ts.map +0 -1
  314. package/lib/intervalCollection.js +0 -1238
  315. package/lib/intervalCollection.js.map +0 -1
  316. package/lib/localValues.d.ts.map +0 -1
  317. package/lib/localValues.js.map +0 -1
  318. package/lib/packageVersion.d.ts.map +0 -1
  319. package/lib/packageVersion.js.map +0 -1
  320. package/lib/sequence.d.ts.map +0 -1
  321. package/lib/sequence.js.map +0 -1
  322. package/lib/sequenceDeltaEvent.d.ts.map +0 -1
  323. package/lib/sequenceDeltaEvent.js.map +0 -1
  324. package/lib/sequenceFactory.d.ts +0 -108
  325. package/lib/sequenceFactory.d.ts.map +0 -1
  326. package/lib/sequenceFactory.js +0 -186
  327. package/lib/sequenceFactory.js.map +0 -1
  328. package/lib/sharedIntervalCollection.d.ts.map +0 -1
  329. package/lib/sharedIntervalCollection.js.map +0 -1
  330. package/lib/sharedNumberSequence.d.ts +0 -50
  331. package/lib/sharedNumberSequence.d.ts.map +0 -1
  332. package/lib/sharedNumberSequence.js +0 -57
  333. package/lib/sharedNumberSequence.js.map +0 -1
  334. package/lib/sharedObjectSequence.d.ts +0 -50
  335. package/lib/sharedObjectSequence.d.ts.map +0 -1
  336. package/lib/sharedObjectSequence.js +0 -57
  337. package/lib/sharedObjectSequence.js.map +0 -1
  338. package/lib/sharedSequence.d.ts.map +0 -1
  339. package/lib/sharedSequence.js.map +0 -1
  340. package/lib/sharedString.d.ts.map +0 -1
  341. package/lib/sharedString.js +0 -183
  342. package/lib/sharedString.js.map +0 -1
  343. package/lib/sparsematrix.d.ts +0 -139
  344. package/lib/sparsematrix.d.ts.map +0 -1
  345. package/lib/sparsematrix.js +0 -323
  346. package/lib/sparsematrix.js.map +0 -1
  347. package/src/sharedNumberSequence.ts +0 -62
  348. package/src/sharedObjectSequence.ts +0 -62
  349. package/src/sparsematrix.ts +0 -421
  350. package/tsconfig.esnext.json +0 -7
@@ -2,20 +2,21 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { Deferred } from "@fluidframework/common-utils";
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, LocalReference, LocalReferencePosition, PropertySet, RangeStackMap, ReferencePosition, ReferenceType } from "@fluidframework/merge-tree";
9
- import { IFluidSerializer, SharedObject, ISharedObjectEvents, SummarySerializer } from "@fluidframework/shared-object-base";
10
- import { IEventThisPlaceHolder } from "@fluidframework/common-definitions";
8
+ import { Client, IJSONSegment, IMergeTreeGroupMsg, IRelativePosition, ISegment, ISegmentAction, LocalReferencePosition, PropertySet, ReferencePosition, ReferenceType, MergeTreeRevertibleDriver, SlidingPreference } from "@fluidframework/merge-tree";
9
+ import { IFluidSerializer, SharedObject, ISharedObjectEvents } from "@fluidframework/shared-object-base";
10
+ import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
11
11
  import { ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
12
- import { IntervalCollection, SequenceInterval } from "./intervalCollection";
13
- import { SequenceDeltaEvent, SequenceMaintenanceEvent } from "./sequenceDeltaEvent";
14
- import { ISharedIntervalCollection } from "./sharedIntervalCollection";
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";
15
16
  /**
16
17
  * Events emitted in response to changes to the sequence data.
17
18
  *
18
- * @remarks
19
+ * @remarks
19
20
  *
20
21
  * The following is the list of events emitted.
21
22
  *
@@ -44,19 +45,37 @@ import { ISharedIntervalCollection } from "./sharedIntervalCollection";
44
45
  * - `event` - Various information on the segments that were modified.
45
46
  *
46
47
  * - `target` - The sequence itself.
48
+ * @alpha
47
49
  */
48
50
  export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
49
- (event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
50
- (event: "sequenceDelta", listener: (event: SequenceDeltaEvent, target: IEventThisPlaceHolder) => void): any;
51
- (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;
52
54
  }
53
- export declare abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval> {
55
+ /**
56
+ * @alpha
57
+ */
58
+ export declare abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver {
54
59
  private readonly dataStoreRuntime;
55
60
  id: string;
56
61
  readonly segmentFromSpec: (spec: IJSONSegment) => ISegment;
57
62
  get loaded(): Promise<void>;
63
+ /**
64
+ * This is a safeguard to avoid problematic reentrancy of local ops. This type of scenario occurs if the user of SharedString subscribes
65
+ * to the `sequenceDelta` event and uses the callback for a local op to submit further local ops.
66
+ * Historically (before 2.0.0-internal.6.1.0), doing so would result in eventual consistency issues or a corrupted document.
67
+ * These issues were fixed in #16815 which makes such reentrancy no different from applying the ops in order but not from within the change events,
68
+ * but there is still little test coverage for reentrant scenarios.
69
+ * Additionally, applications submitting ops from inside change events need to take extreme care that their data models also support reentrancy.
70
+ * Since this is likely not the case, by default SharedString throws when encountering reentrant ops.
71
+ *
72
+ * An application using SharedString which explicitly wants to opt in to allowing reentrancy anyway can set `sharedStringPreventReentrancy`
73
+ * on the data store options to `false`.
74
+ */
75
+ protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
58
76
  private static createOpsFromDelta;
59
77
  protected client: Client;
78
+ /** `Deferred` that triggers once the object is loaded */
60
79
  protected loadedDeferred: Deferred<void>;
61
80
  private readonly loadedDeferredOutgoingOps;
62
81
  private deferIncomingOps;
@@ -68,11 +87,29 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
68
87
  * @param start - The inclusive start of the range to remove
69
88
  * @param end - The exclusive end of the range to remove
70
89
  */
71
- removeRange(start: number, end: number): IMergeTreeRemoveMsg;
90
+ removeRange(start: number, end: number): void;
91
+ /**
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
103
+ */
72
104
  groupOperation(groupOp: IMergeTreeGroupMsg): void;
105
+ /**
106
+ * Finds the segment information (i.e. segment + offset) corresponding to a character position in the SharedString.
107
+ * If the position is past the end of the string, `segment` and `offset` on the returned object may be undefined.
108
+ * @param pos - Character position (index) into the current local view of the SharedString.
109
+ */
73
110
  getContainingSegment(pos: number): {
74
- segment: T;
75
- offset: number;
111
+ segment: T | undefined;
112
+ offset: number | undefined;
76
113
  };
77
114
  /**
78
115
  * Returns the length of the current sequence for the client
@@ -90,25 +127,31 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
90
127
  * @param start - The inclusive start position of the range to annotate
91
128
  * @param end - The exclusive end position of the range to annotate
92
129
  * @param props - The properties to annotate the range with
93
- * @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
94
130
  *
95
131
  */
96
- annotateRange(start: number, end: number, props: PropertySet, combiningOp?: ICombiningOp): void;
97
- getPropertiesAtPosition(pos: number): PropertySet;
132
+ annotateRange(start: number, end: number, props: PropertySet): void;
133
+ getPropertiesAtPosition(pos: number): PropertySet | undefined;
98
134
  getRangeExtentsOfPosition(pos: number): {
99
- posStart: number;
100
- posAfterEnd: number;
135
+ posStart: number | undefined;
136
+ posAfterEnd: number | undefined;
101
137
  };
102
138
  /**
103
- * @deprecated - use createLocalReferencePosition
139
+ * Creates a `LocalReferencePosition` on this SharedString. If the refType does not include
140
+ * ReferenceType.Transient, the returned reference will be added to the localRefs on the provided segment.
141
+ * @param segment - Segment to add the local reference on
142
+ * @param offset - Offset on the segment at which to place the local reference
143
+ * @param refType - ReferenceType for the created local reference
144
+ * @param properties - PropertySet to place on the created local reference
104
145
  */
105
- createPositionReference(segment: T, offset: number, refType: ReferenceType): LocalReference;
106
- createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined): LocalReferencePosition;
146
+ createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
107
147
  /**
108
- * @deprecated - use localReferencePositionToPosition
148
+ * Resolves a `ReferencePosition` into a character position using this client's perspective.
109
149
  */
110
- localRefToPos(localRef: LocalReference): number;
111
150
  localReferencePositionToPosition(lref: ReferencePosition): number;
151
+ /**
152
+ * Removes a `LocalReferencePosition` from this SharedString.
153
+ */
154
+ removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;
112
155
  /**
113
156
  * Resolves a remote client's position against the local sequence
114
157
  * and returns the remote client's position relative to the local
@@ -123,17 +166,8 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
123
166
  * @param remoteClientRefSeq - The reference sequence number of the remote client
124
167
  * @param remoteClientId - The client id of the remote client
125
168
  */
126
- resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: string): number;
127
- submitSequenceMessage(message: IMergeTreeOp): void;
128
- /**
129
- * @deprecated - use createLocalReferencePosition
130
- */
131
- addLocalReference(lref: LocalReference): void;
132
- /**
133
- * @deprecated - use removeLocalReferencePosition
134
- */
135
- removeLocalReference(lref: LocalReference): LocalReferencePosition;
136
- removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition;
169
+ resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: string): number | undefined;
170
+ private submitSequenceMessage;
137
171
  /**
138
172
  * Given a position specified relative to a marker id, lookup the marker
139
173
  * and convert the position to a character position.
@@ -142,42 +176,63 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
142
176
  posFromRelativePos(relativePos: IRelativePosition): number;
143
177
  /**
144
178
  * Walk the underlying segments of the sequence.
145
- * The walked segments may extend beyond the range
146
- * if the segments cross the ranges start or end boundaries.
147
- * Set split range to true to ensure only segments within the
148
- * 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.
149
183
  *
150
- * @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.
151
186
  * @param start - Optional. The start of range walk.
152
187
  * @param end - Optional. The end of range walk
153
188
  * @param accum - Optional. An object that will be passed to the handler for accumulation
154
189
  * @param splitRange - Optional. Splits boundary segments on the range boundaries
155
190
  */
156
191
  walkSegments<TClientData>(handler: ISegmentAction<TClientData>, start?: number, end?: number, accum?: TClientData, splitRange?: boolean): void;
157
- getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap;
192
+ /**
193
+ * @returns The most recent sequence number which has been acked by the server and processed by this
194
+ * SharedSegmentSequence.
195
+ */
158
196
  getCurrentSeq(): number;
197
+ /**
198
+ * Inserts a segment directly before a `ReferencePosition`.
199
+ * @param refPos - The reference position to insert the segment at
200
+ * @param segment - The segment to insert
201
+ */
159
202
  insertAtReferencePosition(pos: ReferencePosition, segment: T): void;
160
203
  /**
161
- * @deprecated - IntervalCollections are created on a first-write wins basis, and concurrent creates
162
- * are supported. Use `getIntervalCollection` instead.
204
+ * Inserts a segment
205
+ * @param start - The position to insert the segment at
206
+ * @param spec - The segment to inserts spec
207
+ */
208
+ insertFromSpec(pos: number, spec: IJSONSegment): void;
209
+ /**
210
+ * Retrieves the interval collection keyed on `label`. If no such interval collection exists,
211
+ * creates one.
163
212
  */
164
- waitIntervalCollection(label: string): Promise<IntervalCollection<SequenceInterval>>;
165
- getIntervalCollection(label: string): IntervalCollection<SequenceInterval>;
213
+ getIntervalCollection(label: string): IIntervalCollection<SequenceInterval>;
166
214
  /**
167
- * @returns an iterable object that enumerates the IntervalCollection labels
168
- * Usage:
215
+ * @returns An iterable object that enumerates the IntervalCollection labels.
216
+ *
217
+ * @example
218
+ *
219
+ * ```typescript
169
220
  * const iter = this.getIntervalCollectionKeys();
170
221
  * for (key of iter)
171
222
  * const collection = this.getIntervalCollection(key);
172
223
  * ...
173
- */
224
+ * ```
225
+ */
174
226
  getIntervalCollectionLabels(): IterableIterator<string>;
227
+ /**
228
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
229
+ */
175
230
  protected summarizeCore(serializer: IFluidSerializer, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
176
231
  /**
177
232
  * Runs serializer over the GC data for this SharedMatrix.
178
233
  * All the IFluidHandle's represent routes to other objects.
179
234
  */
180
- protected processGCDataCore(serializer: SummarySerializer): void;
235
+ protected processGCDataCore(serializer: IFluidSerializer): void;
181
236
  /**
182
237
  * Replace the range specified from start to end with the provided segment
183
238
  * This is done by inserting the segment at the end of the range, followed
@@ -188,15 +243,33 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
188
243
  * @param segment - The segment that will replace the range
189
244
  */
190
245
  protected replaceRange(start: number, end: number, segment: ISegment): void;
246
+ /**
247
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onConnect}
248
+ */
191
249
  protected onConnect(): void;
250
+ /**
251
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
252
+ */
192
253
  protected onDisconnect(): void;
254
+ /**
255
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}
256
+ */
193
257
  protected reSubmitCore(content: any, localOpMetadata: unknown): void;
194
258
  /**
195
259
  * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
196
260
  */
197
261
  protected loadCore(storage: IChannelStorageService): Promise<void>;
262
+ /**
263
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
264
+ */
198
265
  protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
266
+ /**
267
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.didAttach}
268
+ */
199
269
  protected didAttach(): void;
270
+ /**
271
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.initializeLocalCore}
272
+ */
200
273
  protected initializeLocalCore(): void;
201
274
  /**
202
275
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
@@ -208,4 +281,8 @@ export declare abstract class SharedSegmentSequence<T extends ISegment> extends
208
281
  private loadFinished;
209
282
  private initializeIntervalCollections;
210
283
  }
211
- //# sourceMappingURL=sequence.d.ts.map
284
+ /**
285
+ * Resets the reentrancy log counter. Test-only API.
286
+ */
287
+ export declare function resetReentrancyLogCounter(): void;
288
+ //# sourceMappingURL=sequence.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.mts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"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"}