@fluidframework/merge-tree 2.1.0-276985 → 2.1.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 (524) hide show
  1. package/.eslintrc.cjs +2 -4
  2. package/CHANGELOG.md +15 -0
  3. package/README.md +109 -1
  4. package/api-extractor/api-extractor.current.json +5 -0
  5. package/api-extractor/api-extractor.legacy.json +1 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/merge-tree.legacy.alpha.api.md +10 -22
  8. package/api-report/merge-tree.legacy.public.api.md +9 -0
  9. package/dist/MergeTreeTextHelper.d.ts.map +1 -1
  10. package/dist/MergeTreeTextHelper.js +1 -1
  11. package/dist/MergeTreeTextHelper.js.map +1 -1
  12. package/dist/attributionCollection.d.ts.map +1 -1
  13. package/dist/attributionCollection.js +65 -17
  14. package/dist/attributionCollection.js.map +1 -1
  15. package/dist/attributionPolicy.d.ts +2 -1
  16. package/dist/attributionPolicy.d.ts.map +1 -1
  17. package/dist/attributionPolicy.js +10 -3
  18. package/dist/attributionPolicy.js.map +1 -1
  19. package/dist/client.d.ts +3 -1
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +65 -37
  22. package/dist/client.js.map +1 -1
  23. package/dist/collections/list.d.ts.map +1 -1
  24. package/dist/collections/list.js +5 -2
  25. package/dist/collections/list.js.map +1 -1
  26. package/dist/collections/rbTree.d.ts +2 -2
  27. package/dist/collections/rbTree.d.ts.map +1 -1
  28. package/dist/collections/rbTree.js +23 -35
  29. package/dist/collections/rbTree.js.map +1 -1
  30. package/dist/endOfTreeSegment.d.ts.map +1 -1
  31. package/dist/endOfTreeSegment.js +4 -1
  32. package/dist/endOfTreeSegment.js.map +1 -1
  33. package/dist/legacy.d.ts +1 -1
  34. package/dist/localReference.d.ts +16 -6
  35. package/dist/localReference.d.ts.map +1 -1
  36. package/dist/localReference.js +31 -20
  37. package/dist/localReference.js.map +1 -1
  38. package/dist/mergeTree.d.ts +0 -1
  39. package/dist/mergeTree.d.ts.map +1 -1
  40. package/dist/mergeTree.js +127 -112
  41. package/dist/mergeTree.js.map +1 -1
  42. package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
  43. package/dist/mergeTreeNodeWalk.js +1 -1
  44. package/dist/mergeTreeNodeWalk.js.map +1 -1
  45. package/dist/mergeTreeNodes.d.ts +6 -5
  46. package/dist/mergeTreeNodes.d.ts.map +1 -1
  47. package/dist/mergeTreeNodes.js +29 -20
  48. package/dist/mergeTreeNodes.js.map +1 -1
  49. package/dist/mergeTreeTracking.js +3 -3
  50. package/dist/mergeTreeTracking.js.map +1 -1
  51. package/dist/opBuilder.d.ts +6 -1
  52. package/dist/opBuilder.d.ts.map +1 -1
  53. package/dist/opBuilder.js +5 -0
  54. package/dist/opBuilder.js.map +1 -1
  55. package/dist/ops.d.ts.map +1 -1
  56. package/dist/ops.js.map +1 -1
  57. package/dist/ordinal.d.ts.map +1 -1
  58. package/dist/ordinal.js +7 -0
  59. package/dist/ordinal.js.map +1 -1
  60. package/dist/partialLengths.d.ts +4 -2
  61. package/dist/partialLengths.d.ts.map +1 -1
  62. package/dist/partialLengths.js +101 -53
  63. package/dist/partialLengths.js.map +1 -1
  64. package/dist/perspective.d.ts +4 -1
  65. package/dist/perspective.d.ts.map +1 -1
  66. package/dist/perspective.js +7 -6
  67. package/dist/perspective.js.map +1 -1
  68. package/dist/properties.d.ts +13 -10
  69. package/dist/properties.d.ts.map +1 -1
  70. package/dist/properties.js +22 -11
  71. package/dist/properties.js.map +1 -1
  72. package/dist/public.d.ts +1 -1
  73. package/dist/referencePositions.d.ts +7 -0
  74. package/dist/referencePositions.d.ts.map +1 -1
  75. package/dist/referencePositions.js +7 -0
  76. package/dist/referencePositions.js.map +1 -1
  77. package/dist/revertibles.d.ts +6 -0
  78. package/dist/revertibles.d.ts.map +1 -1
  79. package/dist/revertibles.js +50 -21
  80. package/dist/revertibles.js.map +1 -1
  81. package/dist/segmentGroupCollection.d.ts.map +1 -1
  82. package/dist/segmentGroupCollection.js +2 -0
  83. package/dist/segmentGroupCollection.js.map +1 -1
  84. package/dist/segmentPropertiesManager.d.ts +7 -3
  85. package/dist/segmentPropertiesManager.d.ts.map +1 -1
  86. package/dist/segmentPropertiesManager.js +20 -15
  87. package/dist/segmentPropertiesManager.js.map +1 -1
  88. package/dist/snapshotChunks.d.ts.map +1 -1
  89. package/dist/snapshotChunks.js +10 -5
  90. package/dist/snapshotChunks.js.map +1 -1
  91. package/dist/snapshotLoader.d.ts.map +1 -1
  92. package/dist/snapshotLoader.js +14 -10
  93. package/dist/snapshotLoader.js.map +1 -1
  94. package/dist/snapshotV1.d.ts.map +1 -1
  95. package/dist/snapshotV1.js +20 -8
  96. package/dist/snapshotV1.js.map +1 -1
  97. package/dist/snapshotlegacy.d.ts.map +1 -1
  98. package/dist/snapshotlegacy.js +4 -2
  99. package/dist/snapshotlegacy.js.map +1 -1
  100. package/dist/sortedSegmentSet.d.ts.map +1 -1
  101. package/dist/sortedSegmentSet.js +8 -1
  102. package/dist/sortedSegmentSet.js.map +1 -1
  103. package/dist/sortedSet.d.ts.map +1 -1
  104. package/dist/sortedSet.js +4 -0
  105. package/dist/sortedSet.js.map +1 -1
  106. package/dist/test/Insertion.perf.spec.js.map +1 -1
  107. package/dist/test/Removal.perf.spec.js.map +1 -1
  108. package/dist/test/Snapshot.perf.spec.js +1 -0
  109. package/dist/test/Snapshot.perf.spec.js.map +1 -1
  110. package/dist/test/attributionCollection.perf.spec.js +3 -1
  111. package/dist/test/attributionCollection.perf.spec.js.map +1 -1
  112. package/dist/test/attributionCollection.spec.js +69 -68
  113. package/dist/test/attributionCollection.spec.js.map +1 -1
  114. package/dist/test/attributionPolicy.spec.js +29 -27
  115. package/dist/test/attributionPolicy.spec.js.map +1 -1
  116. package/dist/test/beastTest.spec.d.ts +1 -4
  117. package/dist/test/beastTest.spec.d.ts.map +1 -1
  118. package/dist/test/beastTest.spec.js +32 -30
  119. package/dist/test/beastTest.spec.js.map +1 -1
  120. package/dist/test/client.annotateMarker.spec.js +5 -5
  121. package/dist/test/client.annotateMarker.spec.js.map +1 -1
  122. package/dist/test/client.apis.spec.d.ts.map +1 -1
  123. package/dist/test/client.apis.spec.js +5 -7
  124. package/dist/test/client.apis.spec.js.map +1 -1
  125. package/dist/test/client.applyMsg.spec.js +125 -103
  126. package/dist/test/client.applyMsg.spec.js.map +1 -1
  127. package/dist/test/client.applyStashedOpFarm.spec.js +18 -10
  128. package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
  129. package/dist/test/client.attributionFarm.spec.js +13 -8
  130. package/dist/test/client.attributionFarm.spec.js.map +1 -1
  131. package/dist/test/client.conflictFarm.spec.js +4 -2
  132. package/dist/test/client.conflictFarm.spec.js.map +1 -1
  133. package/dist/test/client.getPosition.spec.js +10 -10
  134. package/dist/test/client.getPosition.spec.js.map +1 -1
  135. package/dist/test/client.localReference.spec.js +111 -104
  136. package/dist/test/client.localReference.spec.js.map +1 -1
  137. package/dist/test/client.localReferenceFarm.spec.js +14 -10
  138. package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
  139. package/dist/test/client.rebasePosition.spec.js +12 -12
  140. package/dist/test/client.rebasePosition.spec.js.map +1 -1
  141. package/dist/test/client.reconnectFarm.spec.js +12 -9
  142. package/dist/test/client.reconnectFarm.spec.js.map +1 -1
  143. package/dist/test/client.replay.spec.js +11 -10
  144. package/dist/test/client.replay.spec.js.map +1 -1
  145. package/dist/test/client.rollback.spec.js +87 -84
  146. package/dist/test/client.rollback.spec.js.map +1 -1
  147. package/dist/test/client.rollbackFarm.spec.js +3 -1
  148. package/dist/test/client.rollbackFarm.spec.js.map +1 -1
  149. package/dist/test/client.searchForMarker.spec.js +122 -112
  150. package/dist/test/client.searchForMarker.spec.js.map +1 -1
  151. package/dist/test/client.walkSegments.spec.js +7 -7
  152. package/dist/test/client.walkSegments.spec.js.map +1 -1
  153. package/dist/test/collections.list.spec.js +14 -14
  154. package/dist/test/collections.list.spec.js.map +1 -1
  155. package/dist/test/createInsertOnlyAttributionPolicy.spec.js +3 -3
  156. package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  157. package/dist/test/dirname.cjs +1 -0
  158. package/dist/test/dirname.cjs.map +1 -1
  159. package/dist/test/dirname.d.cts.map +1 -1
  160. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +7 -7
  161. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  162. package/dist/test/mergeTree.annotate.spec.js +87 -87
  163. package/dist/test/mergeTree.annotate.spec.js.map +1 -1
  164. package/dist/test/mergeTree.insert.deltaCallback.spec.js +6 -6
  165. package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  166. package/dist/test/mergeTree.insertingWalk.spec.js +24 -24
  167. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
  168. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +6 -6
  169. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  170. package/dist/test/mergeTree.markRangeRemoved.spec.js +23 -23
  171. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  172. package/dist/test/mergeTree.walk.spec.js +3 -3
  173. package/dist/test/mergeTree.walk.spec.js.map +1 -1
  174. package/dist/test/mergeTree.zamboni.spec.js +10 -10
  175. package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
  176. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
  177. package/dist/test/mergeTreeOperationRunner.js +28 -16
  178. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  179. package/dist/test/mergeTreeOperationRunner.spec.js +9 -5
  180. package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
  181. package/dist/test/obliterate.concurrent.spec.js +165 -165
  182. package/dist/test/obliterate.concurrent.spec.js.map +1 -1
  183. package/dist/test/obliterate.deltaCallback.spec.js +20 -21
  184. package/dist/test/obliterate.deltaCallback.spec.js.map +1 -1
  185. package/dist/test/obliterate.partialLength.spec.js +7 -7
  186. package/dist/test/obliterate.partialLength.spec.js.map +1 -1
  187. package/dist/test/obliterate.reconnect.spec.js +13 -13
  188. package/dist/test/obliterate.reconnect.spec.js.map +1 -1
  189. package/dist/test/obliterate.spec.js +9 -9
  190. package/dist/test/obliterate.spec.js.map +1 -1
  191. package/dist/test/ordinal.spec.js +10 -4
  192. package/dist/test/ordinal.spec.js.map +1 -1
  193. package/dist/test/partialLength.spec.js.map +1 -1
  194. package/dist/test/properties.spec.js +15 -15
  195. package/dist/test/properties.spec.js.map +1 -1
  196. package/dist/test/reconnectHelper.d.ts +4 -4
  197. package/dist/test/reconnectHelper.d.ts.map +1 -1
  198. package/dist/test/reconnectHelper.js +28 -20
  199. package/dist/test/reconnectHelper.js.map +1 -1
  200. package/dist/test/resetPendingSegmentsToOp.spec.js +35 -29
  201. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  202. package/dist/test/revertibleFarm.spec.js +11 -10
  203. package/dist/test/revertibleFarm.spec.js.map +1 -1
  204. package/dist/test/revertibles.spec.d.ts.map +1 -1
  205. package/dist/test/revertibles.spec.js +96 -57
  206. package/dist/test/revertibles.spec.js.map +1 -1
  207. package/dist/test/segmentGroupCollection.spec.js +17 -17
  208. package/dist/test/segmentGroupCollection.spec.js.map +1 -1
  209. package/dist/test/snapshot.spec.js +5 -5
  210. package/dist/test/snapshot.spec.js.map +1 -1
  211. package/dist/test/snapshot.utils.d.ts.map +1 -1
  212. package/dist/test/snapshot.utils.js +6 -6
  213. package/dist/test/snapshot.utils.js.map +1 -1
  214. package/dist/test/snapshotlegacy.spec.js +18 -13
  215. package/dist/test/snapshotlegacy.spec.js.map +1 -1
  216. package/dist/test/sortedSegmentSet.spec.js +22 -18
  217. package/dist/test/sortedSegmentSet.spec.js.map +1 -1
  218. package/dist/test/testClient.d.ts +6 -5
  219. package/dist/test/testClient.d.ts.map +1 -1
  220. package/dist/test/testClient.js +30 -32
  221. package/dist/test/testClient.js.map +1 -1
  222. package/dist/test/testClientLogger.d.ts.map +1 -1
  223. package/dist/test/testClientLogger.js +39 -38
  224. package/dist/test/testClientLogger.js.map +1 -1
  225. package/dist/test/testSerializer.d.ts +5 -5
  226. package/dist/test/testSerializer.d.ts.map +1 -1
  227. package/dist/test/testSerializer.js +0 -1
  228. package/dist/test/testSerializer.js.map +1 -1
  229. package/dist/test/testServer.d.ts.map +1 -1
  230. package/dist/test/testServer.js.map +1 -1
  231. package/dist/test/testUtils.d.ts +1 -1
  232. package/dist/test/testUtils.d.ts.map +1 -1
  233. package/dist/test/testUtils.js +15 -17
  234. package/dist/test/testUtils.js.map +1 -1
  235. package/dist/test/text.d.ts.map +1 -1
  236. package/dist/test/text.js +1 -1
  237. package/dist/test/text.js.map +1 -1
  238. package/dist/test/tracking.spec.js +50 -46
  239. package/dist/test/tracking.spec.js.map +1 -1
  240. package/dist/test/wordUnitTests.spec.d.ts.map +1 -1
  241. package/dist/test/wordUnitTests.spec.js +10 -10
  242. package/dist/test/wordUnitTests.spec.js.map +1 -1
  243. package/dist/textSegment.d.ts +1 -1
  244. package/dist/textSegment.d.ts.map +1 -1
  245. package/dist/textSegment.js +3 -3
  246. package/dist/textSegment.js.map +1 -1
  247. package/dist/zamboni.d.ts.map +1 -1
  248. package/dist/zamboni.js +7 -2
  249. package/dist/zamboni.js.map +1 -1
  250. package/internal.d.ts +1 -1
  251. package/legacy.d.ts +1 -1
  252. package/lib/MergeTreeTextHelper.d.ts.map +1 -1
  253. package/lib/MergeTreeTextHelper.js +1 -1
  254. package/lib/MergeTreeTextHelper.js.map +1 -1
  255. package/lib/attributionCollection.d.ts.map +1 -1
  256. package/lib/attributionCollection.js +65 -17
  257. package/lib/attributionCollection.js.map +1 -1
  258. package/lib/attributionPolicy.d.ts +2 -1
  259. package/lib/attributionPolicy.d.ts.map +1 -1
  260. package/lib/attributionPolicy.js +10 -3
  261. package/lib/attributionPolicy.js.map +1 -1
  262. package/lib/client.d.ts +3 -1
  263. package/lib/client.d.ts.map +1 -1
  264. package/lib/client.js +65 -37
  265. package/lib/client.js.map +1 -1
  266. package/lib/collections/list.d.ts.map +1 -1
  267. package/lib/collections/list.js +5 -2
  268. package/lib/collections/list.js.map +1 -1
  269. package/lib/collections/rbTree.d.ts +2 -2
  270. package/lib/collections/rbTree.d.ts.map +1 -1
  271. package/lib/collections/rbTree.js +23 -35
  272. package/lib/collections/rbTree.js.map +1 -1
  273. package/lib/endOfTreeSegment.d.ts.map +1 -1
  274. package/lib/endOfTreeSegment.js +4 -1
  275. package/lib/endOfTreeSegment.js.map +1 -1
  276. package/lib/legacy.d.ts +1 -1
  277. package/lib/localReference.d.ts +16 -6
  278. package/lib/localReference.d.ts.map +1 -1
  279. package/lib/localReference.js +31 -20
  280. package/lib/localReference.js.map +1 -1
  281. package/lib/mergeTree.d.ts +0 -1
  282. package/lib/mergeTree.d.ts.map +1 -1
  283. package/lib/mergeTree.js +127 -112
  284. package/lib/mergeTree.js.map +1 -1
  285. package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
  286. package/lib/mergeTreeNodeWalk.js +1 -1
  287. package/lib/mergeTreeNodeWalk.js.map +1 -1
  288. package/lib/mergeTreeNodes.d.ts +6 -5
  289. package/lib/mergeTreeNodes.d.ts.map +1 -1
  290. package/lib/mergeTreeNodes.js +29 -20
  291. package/lib/mergeTreeNodes.js.map +1 -1
  292. package/lib/mergeTreeTracking.js +3 -3
  293. package/lib/mergeTreeTracking.js.map +1 -1
  294. package/lib/opBuilder.d.ts +6 -1
  295. package/lib/opBuilder.d.ts.map +1 -1
  296. package/lib/opBuilder.js +5 -0
  297. package/lib/opBuilder.js.map +1 -1
  298. package/lib/ops.d.ts.map +1 -1
  299. package/lib/ops.js.map +1 -1
  300. package/lib/ordinal.d.ts.map +1 -1
  301. package/lib/ordinal.js +7 -0
  302. package/lib/ordinal.js.map +1 -1
  303. package/lib/partialLengths.d.ts +4 -2
  304. package/lib/partialLengths.d.ts.map +1 -1
  305. package/lib/partialLengths.js +101 -53
  306. package/lib/partialLengths.js.map +1 -1
  307. package/lib/perspective.d.ts +4 -1
  308. package/lib/perspective.d.ts.map +1 -1
  309. package/lib/perspective.js +7 -6
  310. package/lib/perspective.js.map +1 -1
  311. package/lib/properties.d.ts +13 -10
  312. package/lib/properties.d.ts.map +1 -1
  313. package/lib/properties.js +22 -11
  314. package/lib/properties.js.map +1 -1
  315. package/lib/public.d.ts +1 -1
  316. package/lib/referencePositions.d.ts +7 -0
  317. package/lib/referencePositions.d.ts.map +1 -1
  318. package/lib/referencePositions.js +7 -0
  319. package/lib/referencePositions.js.map +1 -1
  320. package/lib/revertibles.d.ts +6 -0
  321. package/lib/revertibles.d.ts.map +1 -1
  322. package/lib/revertibles.js +50 -21
  323. package/lib/revertibles.js.map +1 -1
  324. package/lib/segmentGroupCollection.d.ts.map +1 -1
  325. package/lib/segmentGroupCollection.js +2 -0
  326. package/lib/segmentGroupCollection.js.map +1 -1
  327. package/lib/segmentPropertiesManager.d.ts +7 -3
  328. package/lib/segmentPropertiesManager.d.ts.map +1 -1
  329. package/lib/segmentPropertiesManager.js +20 -15
  330. package/lib/segmentPropertiesManager.js.map +1 -1
  331. package/lib/snapshotChunks.d.ts.map +1 -1
  332. package/lib/snapshotChunks.js +10 -5
  333. package/lib/snapshotChunks.js.map +1 -1
  334. package/lib/snapshotLoader.d.ts.map +1 -1
  335. package/lib/snapshotLoader.js +14 -10
  336. package/lib/snapshotLoader.js.map +1 -1
  337. package/lib/snapshotV1.d.ts.map +1 -1
  338. package/lib/snapshotV1.js +20 -8
  339. package/lib/snapshotV1.js.map +1 -1
  340. package/lib/snapshotlegacy.d.ts.map +1 -1
  341. package/lib/snapshotlegacy.js +4 -2
  342. package/lib/snapshotlegacy.js.map +1 -1
  343. package/lib/sortedSegmentSet.d.ts.map +1 -1
  344. package/lib/sortedSegmentSet.js +8 -1
  345. package/lib/sortedSegmentSet.js.map +1 -1
  346. package/lib/sortedSet.d.ts.map +1 -1
  347. package/lib/sortedSet.js +4 -0
  348. package/lib/sortedSet.js.map +1 -1
  349. package/lib/test/Insertion.perf.spec.js.map +1 -1
  350. package/lib/test/Removal.perf.spec.js.map +1 -1
  351. package/lib/test/Snapshot.perf.spec.js +1 -0
  352. package/lib/test/Snapshot.perf.spec.js.map +1 -1
  353. package/lib/test/attributionCollection.perf.spec.js +3 -1
  354. package/lib/test/attributionCollection.perf.spec.js.map +1 -1
  355. package/lib/test/attributionCollection.spec.js +3 -2
  356. package/lib/test/attributionCollection.spec.js.map +1 -1
  357. package/lib/test/attributionPolicy.spec.js +3 -1
  358. package/lib/test/attributionPolicy.spec.js.map +1 -1
  359. package/lib/test/beastTest.spec.d.ts +1 -4
  360. package/lib/test/beastTest.spec.d.ts.map +1 -1
  361. package/lib/test/beastTest.spec.js +26 -24
  362. package/lib/test/beastTest.spec.js.map +1 -1
  363. package/lib/test/client.annotateMarker.spec.js +1 -1
  364. package/lib/test/client.annotateMarker.spec.js.map +1 -1
  365. package/lib/test/client.apis.spec.d.ts.map +1 -1
  366. package/lib/test/client.apis.spec.js +4 -6
  367. package/lib/test/client.apis.spec.js.map +1 -1
  368. package/lib/test/client.applyMsg.spec.js +72 -50
  369. package/lib/test/client.applyMsg.spec.js.map +1 -1
  370. package/lib/test/client.applyStashedOpFarm.spec.js +18 -10
  371. package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -1
  372. package/lib/test/client.attributionFarm.spec.js +12 -7
  373. package/lib/test/client.attributionFarm.spec.js.map +1 -1
  374. package/lib/test/client.conflictFarm.spec.js +4 -2
  375. package/lib/test/client.conflictFarm.spec.js.map +1 -1
  376. package/lib/test/client.getPosition.spec.js +1 -1
  377. package/lib/test/client.getPosition.spec.js.map +1 -1
  378. package/lib/test/client.localReference.spec.js +14 -7
  379. package/lib/test/client.localReference.spec.js.map +1 -1
  380. package/lib/test/client.localReferenceFarm.spec.js +13 -9
  381. package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
  382. package/lib/test/client.rebasePosition.spec.js +1 -1
  383. package/lib/test/client.rebasePosition.spec.js.map +1 -1
  384. package/lib/test/client.reconnectFarm.spec.js +11 -8
  385. package/lib/test/client.reconnectFarm.spec.js.map +1 -1
  386. package/lib/test/client.replay.spec.js +8 -7
  387. package/lib/test/client.replay.spec.js.map +1 -1
  388. package/lib/test/client.rollback.spec.js +14 -11
  389. package/lib/test/client.rollback.spec.js.map +1 -1
  390. package/lib/test/client.rollbackFarm.spec.js +3 -1
  391. package/lib/test/client.rollbackFarm.spec.js.map +1 -1
  392. package/lib/test/client.searchForMarker.spec.js +29 -19
  393. package/lib/test/client.searchForMarker.spec.js.map +1 -1
  394. package/lib/test/client.walkSegments.spec.js +1 -1
  395. package/lib/test/client.walkSegments.spec.js.map +1 -1
  396. package/lib/test/collections.list.spec.js +1 -1
  397. package/lib/test/collections.list.spec.js.map +1 -1
  398. package/lib/test/createInsertOnlyAttributionPolicy.spec.js +1 -1
  399. package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  400. package/lib/test/dirname.cjs +1 -0
  401. package/lib/test/dirname.cjs.map +1 -1
  402. package/lib/test/dirname.d.cts.map +1 -1
  403. package/lib/test/mergeTree.annotate.deltaCallback.spec.js +1 -1
  404. package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  405. package/lib/test/mergeTree.annotate.spec.js +1 -1
  406. package/lib/test/mergeTree.annotate.spec.js.map +1 -1
  407. package/lib/test/mergeTree.insert.deltaCallback.spec.js +1 -1
  408. package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  409. package/lib/test/mergeTree.insertingWalk.spec.js +8 -8
  410. package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
  411. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
  412. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  413. package/lib/test/mergeTree.markRangeRemoved.spec.js +1 -1
  414. package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  415. package/lib/test/mergeTree.walk.spec.js +1 -1
  416. package/lib/test/mergeTree.walk.spec.js.map +1 -1
  417. package/lib/test/mergeTree.zamboni.spec.js +1 -1
  418. package/lib/test/mergeTree.zamboni.spec.js.map +1 -1
  419. package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
  420. package/lib/test/mergeTreeOperationRunner.js +27 -15
  421. package/lib/test/mergeTreeOperationRunner.js.map +1 -1
  422. package/lib/test/mergeTreeOperationRunner.spec.js +5 -1
  423. package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -1
  424. package/lib/test/obliterate.concurrent.spec.js +4 -4
  425. package/lib/test/obliterate.concurrent.spec.js.map +1 -1
  426. package/lib/test/obliterate.deltaCallback.spec.js +2 -3
  427. package/lib/test/obliterate.deltaCallback.spec.js.map +1 -1
  428. package/lib/test/obliterate.partialLength.spec.js +1 -1
  429. package/lib/test/obliterate.partialLength.spec.js.map +1 -1
  430. package/lib/test/obliterate.reconnect.spec.js +1 -1
  431. package/lib/test/obliterate.reconnect.spec.js.map +1 -1
  432. package/lib/test/obliterate.spec.js +1 -1
  433. package/lib/test/obliterate.spec.js.map +1 -1
  434. package/lib/test/ordinal.spec.js +7 -1
  435. package/lib/test/ordinal.spec.js.map +1 -1
  436. package/lib/test/partialLength.spec.js.map +1 -1
  437. package/lib/test/properties.spec.js +1 -1
  438. package/lib/test/properties.spec.js.map +1 -1
  439. package/lib/test/reconnectHelper.d.ts +4 -4
  440. package/lib/test/reconnectHelper.d.ts.map +1 -1
  441. package/lib/test/reconnectHelper.js +22 -14
  442. package/lib/test/reconnectHelper.js.map +1 -1
  443. package/lib/test/resetPendingSegmentsToOp.spec.js +8 -2
  444. package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  445. package/lib/test/revertibleFarm.spec.js +8 -7
  446. package/lib/test/revertibleFarm.spec.js.map +1 -1
  447. package/lib/test/revertibles.spec.d.ts.map +1 -1
  448. package/lib/test/revertibles.spec.js +93 -54
  449. package/lib/test/revertibles.spec.js.map +1 -1
  450. package/lib/test/segmentGroupCollection.spec.js +1 -1
  451. package/lib/test/segmentGroupCollection.spec.js.map +1 -1
  452. package/lib/test/snapshot.spec.js +1 -1
  453. package/lib/test/snapshot.spec.js.map +1 -1
  454. package/lib/test/snapshot.utils.d.ts.map +1 -1
  455. package/lib/test/snapshot.utils.js +1 -1
  456. package/lib/test/snapshot.utils.js.map +1 -1
  457. package/lib/test/snapshotlegacy.spec.js +10 -5
  458. package/lib/test/snapshotlegacy.spec.js.map +1 -1
  459. package/lib/test/sortedSegmentSet.spec.js +6 -2
  460. package/lib/test/sortedSegmentSet.spec.js.map +1 -1
  461. package/lib/test/testClient.d.ts +6 -5
  462. package/lib/test/testClient.d.ts.map +1 -1
  463. package/lib/test/testClient.js +25 -27
  464. package/lib/test/testClient.js.map +1 -1
  465. package/lib/test/testClientLogger.d.ts.map +1 -1
  466. package/lib/test/testClientLogger.js +37 -36
  467. package/lib/test/testClientLogger.js.map +1 -1
  468. package/lib/test/testSerializer.d.ts +5 -5
  469. package/lib/test/testSerializer.d.ts.map +1 -1
  470. package/lib/test/testSerializer.js +0 -1
  471. package/lib/test/testSerializer.js.map +1 -1
  472. package/lib/test/testServer.d.ts.map +1 -1
  473. package/lib/test/testServer.js.map +1 -1
  474. package/lib/test/testUtils.d.ts +1 -1
  475. package/lib/test/testUtils.d.ts.map +1 -1
  476. package/lib/test/testUtils.js +6 -8
  477. package/lib/test/testUtils.js.map +1 -1
  478. package/lib/test/text.d.ts.map +1 -1
  479. package/lib/test/text.js +1 -1
  480. package/lib/test/text.js.map +1 -1
  481. package/lib/test/tracking.spec.js +9 -5
  482. package/lib/test/tracking.spec.js.map +1 -1
  483. package/lib/test/wordUnitTests.spec.d.ts.map +1 -1
  484. package/lib/test/wordUnitTests.spec.js +9 -9
  485. package/lib/test/wordUnitTests.spec.js.map +1 -1
  486. package/lib/textSegment.d.ts +1 -1
  487. package/lib/textSegment.d.ts.map +1 -1
  488. package/lib/textSegment.js +3 -3
  489. package/lib/textSegment.js.map +1 -1
  490. package/lib/zamboni.d.ts.map +1 -1
  491. package/lib/zamboni.js +7 -2
  492. package/lib/zamboni.js.map +1 -1
  493. package/package.json +29 -27
  494. package/src/MergeTreeTextHelper.ts +2 -2
  495. package/src/attributionCollection.ts +71 -28
  496. package/src/attributionPolicy.ts +14 -9
  497. package/src/client.ts +120 -71
  498. package/src/collections/list.ts +9 -6
  499. package/src/collections/rbTree.ts +62 -71
  500. package/src/endOfTreeSegment.ts +21 -10
  501. package/src/localReference.ts +61 -43
  502. package/src/mergeTree.ts +229 -178
  503. package/src/mergeTreeNodeWalk.ts +2 -1
  504. package/src/mergeTreeNodes.ts +59 -46
  505. package/src/mergeTreeTracking.ts +3 -3
  506. package/src/opBuilder.ts +6 -1
  507. package/src/ops.ts +5 -0
  508. package/src/ordinal.ts +8 -1
  509. package/src/partialLengths.ts +143 -87
  510. package/src/perspective.ts +10 -7
  511. package/src/properties.ts +36 -18
  512. package/src/referencePositions.ts +7 -0
  513. package/src/revertibles.ts +71 -41
  514. package/src/segmentGroupCollection.ts +8 -6
  515. package/src/segmentPropertiesManager.ts +28 -24
  516. package/src/snapshotChunks.ts +12 -7
  517. package/src/snapshotLoader.ts +20 -17
  518. package/src/snapshotV1.ts +36 -18
  519. package/src/snapshotlegacy.ts +7 -5
  520. package/src/sortedSegmentSet.ts +9 -3
  521. package/src/sortedSet.ts +7 -3
  522. package/src/textSegment.ts +9 -9
  523. package/src/zamboni.ts +14 -10
  524. package/tsconfig.json +0 -1
@@ -189,7 +189,8 @@ export function walkAllChildSegments(
189
189
  startBlock.children[0],
190
190
  ancestors.size === 0
191
191
  ? undefined
192
- : (node) => (ancestors.has(node.parent) ? NodeAction.Exit : NodeAction.Continue),
192
+ : (node): false | undefined =>
193
+ ancestors.has(node.parent) ? NodeAction.Exit : NodeAction.Continue,
193
194
  leafAction,
194
195
  );
195
196
  }
@@ -20,7 +20,6 @@ import { TrackingGroupCollection } from "./mergeTreeTracking.js";
20
20
  import { IJSONSegment, IMarkerDef, MergeTreeDeltaType, ReferenceType } from "./ops.js";
21
21
  import { computeHierarchicalOrdinal } from "./ordinal.js";
22
22
  import type { PartialSequenceLengths } from "./partialLengths.js";
23
- // eslint-disable-next-line import/no-deprecated
24
23
  import { PropertySet, clone, createMap, type MapLike } from "./properties.js";
25
24
  import {
26
25
  ReferencePosition,
@@ -78,6 +77,8 @@ export interface IRemovalInfo {
78
77
  }
79
78
 
80
79
  /**
80
+ * Returns the removal information for a segment.
81
+ *
81
82
  * @internal
82
83
  */
83
84
  export function toRemovalInfo(
@@ -269,6 +270,8 @@ export interface ISegment extends IMergeNodeCommon, Partial<IRemovalInfo>, Parti
269
270
  canAppend(segment: ISegment): boolean;
270
271
  append(segment: ISegment): void;
271
272
  splitAt(pos: number): ISegment | undefined;
273
+ // Changing this to something other than any would break consumers.
274
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
272
275
  toJSONObject(): any;
273
276
  /**
274
277
  * Acks the current segment against the segment group, op, and merge tree.
@@ -442,14 +445,16 @@ export class MergeBlock implements IMergeNodeCommon {
442
445
  partialLengths?: PartialSequenceLengths;
443
446
 
444
447
  public constructor(public childCount: number) {
448
+ // Suppression needed due to the way the merge tree children are initalized - we
449
+ // allocate 8 children blocks, but any unused blocks are not counted in the childCount.
450
+ // Using Array.from leads to unused children being undefined, which are counted in childCount.
451
+ // eslint-disable-next-line unicorn/no-new-array
445
452
  this.children = new Array<IMergeNode>(MaxNodesInBlock);
446
- // eslint-disable-next-line import/no-deprecated
447
453
  this.rightmostTiles = createMap<Marker>();
448
- // eslint-disable-next-line import/no-deprecated
449
454
  this.leftmostTiles = createMap<Marker>();
450
455
  }
451
456
 
452
- public setOrdinal(child: IMergeNode, index: number) {
457
+ public setOrdinal(child: IMergeNode, index: number): void {
453
458
  const childCount = this.childCount;
454
459
  assert(
455
460
  childCount >= 1 && childCount <= MaxNodesInBlock,
@@ -463,7 +468,7 @@ export class MergeBlock implements IMergeNodeCommon {
463
468
  );
464
469
  }
465
470
 
466
- public assignChild(child: IMergeNode, index: number, updateOrdinal = true) {
471
+ public assignChild(child: IMergeNode, index: number, updateOrdinal = true): void {
467
472
  child.parent = this;
468
473
  child.index = index;
469
474
  if (updateOrdinal) {
@@ -473,7 +478,7 @@ export class MergeBlock implements IMergeNodeCommon {
473
478
  }
474
479
  }
475
480
 
476
- export function seqLTE(seq: number, minOrRefSeq: number) {
481
+ export function seqLTE(seq: number, minOrRefSeq: number): boolean {
477
482
  return seq !== UnassignedSequenceNumber && seq <= minOrRefSeq;
478
483
  }
479
484
 
@@ -513,9 +518,10 @@ export abstract class BaseSegment implements ISegment {
513
518
  seq?: number,
514
519
  collaborating?: boolean,
515
520
  rollback: PropertiesRollback = PropertiesRollback.None,
516
- ) {
521
+ ): PropertySet {
517
522
  this.propertyManager ??= new PropertiesManager();
518
- // eslint-disable-next-line import/no-deprecated
523
+ // A property set must be able to hold properties of any type, so the any is needed.
524
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
519
525
  this.properties ??= createMap<any>();
520
526
  return this.propertyManager.addProperties(
521
527
  this.properties,
@@ -534,10 +540,9 @@ export abstract class BaseSegment implements ISegment {
534
540
  return true;
535
541
  }
536
542
 
537
- protected cloneInto(b: ISegment) {
543
+ protected cloneInto(b: ISegment): void {
538
544
  b.clientId = this.clientId;
539
545
  // TODO: deep clone properties
540
- // eslint-disable-next-line import/no-deprecated
541
546
  b.properties = clone(this.properties);
542
547
  b.removedClientIds = this.removedClientIds?.slice();
543
548
  // TODO: copy removed client overlap and branch removal info
@@ -554,15 +559,16 @@ export abstract class BaseSegment implements ISegment {
554
559
  return false;
555
560
  }
556
561
 
557
- protected addSerializedProps(jseg: IJSONSegment) {
562
+ protected addSerializedProps(jseg: IJSONSegment): void {
558
563
  if (this.properties) {
559
564
  jseg.props = { ...this.properties };
560
565
  }
561
566
  }
562
-
567
+ // This has to return any type because the return type is different for different segment types.
568
+ // TODO: If possible, change the return type to match what should be returned for each segment type.
569
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
563
570
  public abstract toJSONObject(): any;
564
571
 
565
- /***/
566
572
  public ack(segmentGroup: SegmentGroup, opArgs: IMergeTreeDeltaOpArgs): boolean {
567
573
  const currentSegmentGroup = this.segmentGroups.dequeue();
568
574
  assert(
@@ -570,15 +576,16 @@ export abstract class BaseSegment implements ISegment {
570
576
  0x043 /* "On ack, unexpected segmentGroup!" */,
571
577
  );
572
578
  switch (opArgs.op.type) {
573
- case MergeTreeDeltaType.ANNOTATE:
579
+ case MergeTreeDeltaType.ANNOTATE: {
574
580
  assert(
575
581
  !!this.propertyManager,
576
582
  0x044 /* "On annotate ack, missing segment property manager!" */,
577
583
  );
578
584
  this.propertyManager.ackPendingProperties(opArgs.op);
579
585
  return true;
586
+ }
580
587
 
581
- case MergeTreeDeltaType.INSERT:
588
+ case MergeTreeDeltaType.INSERT: {
582
589
  assert(
583
590
  this.seq === UnassignedSequenceNumber,
584
591
  0x045 /* "On insert, seq number already assigned!" */,
@@ -586,8 +593,9 @@ export abstract class BaseSegment implements ISegment {
586
593
  this.seq = opArgs.sequencedMessage!.sequenceNumber;
587
594
  this.localSeq = undefined;
588
595
  return true;
596
+ }
589
597
 
590
- case MergeTreeDeltaType.REMOVE:
598
+ case MergeTreeDeltaType.REMOVE: {
591
599
  const removalInfo: IRemovalInfo | undefined = toRemovalInfo(this);
592
600
  assert(removalInfo !== undefined, 0x046 /* "On remove ack, missing removal info!" */);
593
601
  this.localRemovedSeq = undefined;
@@ -596,8 +604,9 @@ export abstract class BaseSegment implements ISegment {
596
604
  return true;
597
605
  }
598
606
  return false;
607
+ }
599
608
 
600
- case MergeTreeDeltaType.OBLITERATE:
609
+ case MergeTreeDeltaType.OBLITERATE: {
601
610
  const moveInfo: IMoveInfo | undefined = toMoveInfo(this);
602
611
  assert(moveInfo !== undefined, 0x86e /* On obliterate ack, missing move info! */);
603
612
  this.localMovedSeq = undefined;
@@ -611,9 +620,11 @@ export abstract class BaseSegment implements ISegment {
611
620
  }
612
621
 
613
622
  return false;
623
+ }
614
624
 
615
- default:
625
+ default: {
616
626
  throw new Error(`${opArgs.op.type} is in unrecognized operation type`);
627
+ }
617
628
  }
618
629
  }
619
630
 
@@ -629,13 +640,16 @@ export abstract class BaseSegment implements ISegment {
629
640
  }
630
641
 
631
642
  this.copyPropertiesTo(leafSegment);
632
- // eslint-disable-next-line @typescript-eslint/no-this-alias
643
+ // eslint-disable-next-line @typescript-eslint/no-this-alias, unicorn/no-this-assignment
633
644
  const thisAsMergeSegment: ISegmentLeaf = this;
634
645
  leafSegment.parent = thisAsMergeSegment.parent;
635
646
 
636
647
  // Give the leaf a temporary yet valid ordinal.
637
648
  // when this segment is put in the tree, it will get its real ordinal,
638
649
  // but this ordinal meets all the necessary invariants for now.
650
+ // Ordinals exist purely for lexicographical sort order and use a small set of valid bytes for each string character.
651
+ // The extra handling fromCodePoint has for things like surrogate pairs is therefore unnecessary.
652
+ // eslint-disable-next-line unicorn/prefer-code-point
639
653
  leafSegment.ordinal = this.ordinal + String.fromCharCode(0);
640
654
 
641
655
  leafSegment.removedClientIds = this.removedClientIds?.slice();
@@ -661,16 +675,14 @@ export abstract class BaseSegment implements ISegment {
661
675
  return leafSegment;
662
676
  }
663
677
 
664
- private copyPropertiesTo(other: ISegment) {
665
- if (this.propertyManager) {
666
- if (this.properties) {
667
- other.propertyManager = new PropertiesManager();
668
- other.properties = this.propertyManager.copyTo(
669
- this.properties,
670
- other.properties,
671
- other.propertyManager,
672
- );
673
- }
678
+ private copyPropertiesTo(other: ISegment): void {
679
+ if (this.propertyManager && this.properties) {
680
+ other.propertyManager = new PropertiesManager();
681
+ other.properties = this.propertyManager.copyTo(
682
+ this.properties,
683
+ other.properties,
684
+ other.propertyManager,
685
+ );
674
686
  }
675
687
  }
676
688
 
@@ -742,7 +754,7 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
742
754
  }
743
755
  public readonly type = Marker.type;
744
756
 
745
- public static make(refType: ReferenceType, props?: PropertySet) {
757
+ public static make(refType: ReferenceType, props?: PropertySet): Marker {
746
758
  const marker = new Marker(refType);
747
759
  if (props) {
748
760
  marker.addProperties(props);
@@ -755,34 +767,34 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
755
767
  this.cachedLength = 1;
756
768
  }
757
769
 
758
- toJSONObject() {
770
+ toJSONObject(): IJSONMarkerSegment {
759
771
  const obj: IJSONMarkerSegment = { marker: { refType: this.refType } };
760
772
  super.addSerializedProps(obj);
761
773
  return obj;
762
774
  }
763
775
 
764
- static fromJSONObject(spec: any) {
776
+ static fromJSONObject(spec: IJSONSegment): Marker | undefined {
765
777
  if (spec && typeof spec === "object" && "marker" in spec) {
766
- return Marker.make(spec.marker.refType, spec.props as PropertySet);
778
+ return Marker.make((spec.marker as Marker).refType, spec.props as PropertySet);
767
779
  }
768
780
  return undefined;
769
781
  }
770
782
 
771
- clone() {
783
+ clone(): Marker {
772
784
  const b = Marker.make(this.refType, this.properties);
773
785
  this.cloneInto(b);
774
786
  return b;
775
787
  }
776
788
 
777
- getSegment() {
789
+ getSegment(): Marker {
778
790
  return this;
779
791
  }
780
792
 
781
- getOffset() {
793
+ getOffset(): number {
782
794
  return 0;
783
795
  }
784
796
 
785
- getProperties() {
797
+ getProperties(): PropertySet | undefined {
786
798
  return this.properties;
787
799
  }
788
800
 
@@ -790,11 +802,11 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
790
802
  return this.properties?.[reservedMarkerIdKey] as string;
791
803
  }
792
804
 
793
- toString() {
805
+ toString(): string {
794
806
  return `M${this.getId()}`;
795
807
  }
796
808
 
797
- protected createSplitSegmentAt(pos: number) {
809
+ protected createSplitSegmentAt(pos: number): undefined {
798
810
  return undefined;
799
811
  }
800
812
 
@@ -802,7 +814,7 @@ export class Marker extends BaseSegment implements ReferencePosition, ISegment {
802
814
  return false;
803
815
  }
804
816
 
805
- append() {
817
+ append(): void {
806
818
  throw new Error("Can not append to marker");
807
819
  }
808
820
  }
@@ -890,7 +902,7 @@ export class CollaborationWindow {
890
902
  */
891
903
  localSeq = 0;
892
904
 
893
- loadFrom(a: CollaborationWindow) {
905
+ loadFrom(a: CollaborationWindow): void {
894
906
  this.clientId = a.clientId;
895
907
  this.collaborating = a.collaborating;
896
908
  this.minSeq = a.minSeq;
@@ -899,14 +911,14 @@ export class CollaborationWindow {
899
911
  }
900
912
 
901
913
  /**
902
- * @internal
914
+ * Compares two numbers.
903
915
  */
904
- export const compareNumbers = (a: number, b: number) => a - b;
916
+ export const compareNumbers = (a: number, b: number): number => a - b;
905
917
 
906
918
  /**
907
- * @internal
919
+ * Compares two strings.
908
920
  */
909
- export const compareStrings = (a: string, b: string) => a.localeCompare(b);
921
+ export const compareStrings = (a: string, b: string): number => a.localeCompare(b);
910
922
 
911
923
  /**
912
924
  * Get a human-readable string for a given {@link Marker}.
@@ -942,9 +954,10 @@ export function debugMarkerToString(marker: Marker): string {
942
954
  pbuf += JSON.stringify(marker.properties, (key, value) => {
943
955
  // Avoid circular reference when stringifying makers containing handles.
944
956
  // (Substitute a debug string instead.)
957
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
945
958
  const handle = !!value && value.IFluidHandle;
946
959
 
947
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
960
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
948
961
  return handle ? `#Handle(${handle.routeContext.path}/${handle.path})` : value;
949
962
  });
950
963
  }
@@ -78,7 +78,7 @@ export class UnorderedTrackingGroup implements ITrackingGroup {
78
78
  }
79
79
 
80
80
  public get tracked(): readonly Trackable[] {
81
- return Array.from(this.trackedSet);
81
+ return [...this.trackedSet];
82
82
  }
83
83
 
84
84
  public get size(): number {
@@ -149,9 +149,9 @@ export class TrackingGroupCollection {
149
149
  }
150
150
 
151
151
  public copyTo(trackable: Trackable): void {
152
- this._trackingGroups.forEach((sg) => {
152
+ for (const sg of this._trackingGroups) {
153
153
  trackable.trackingCollection.link(sg);
154
- });
154
+ }
155
155
  }
156
156
 
157
157
  public get empty(): boolean {
package/src/opBuilder.ts CHANGED
@@ -98,6 +98,7 @@ export function createObliterateRangeOp(start: number, end: number): IMergeTreeO
98
98
  }
99
99
 
100
100
  /**
101
+ * Creates an op for inserting a segment at the specified position.
101
102
  *
102
103
  * @param pos - The position to insert the segment at
103
104
  * @param segment - The segment to insert
@@ -109,9 +110,12 @@ export function createInsertSegmentOp(pos: number, segment: ISegment): IMergeTre
109
110
  }
110
111
 
111
112
  /**
113
+ * Creates the op for inserting a segment from its JSON representation at
114
+ * the specified position.
115
+ *
112
116
  * @internal
113
117
  */
114
- export function createInsertOp(pos: number, segSpec: any): IMergeTreeInsertMsg {
118
+ export function createInsertOp(pos: number, segSpec: unknown): IMergeTreeInsertMsg {
115
119
  return {
116
120
  pos1: pos,
117
121
  seg: segSpec,
@@ -120,6 +124,7 @@ export function createInsertOp(pos: number, segSpec: any): IMergeTreeInsertMsg {
120
124
  }
121
125
 
122
126
  /**
127
+ * Creates a group op from the provided ops.
123
128
  *
124
129
  * @param ops - The ops to group
125
130
  *
package/src/ops.ts CHANGED
@@ -121,6 +121,9 @@ export interface IMergeTreeInsertMsg extends IMergeTreeDelta {
121
121
  relativePos1?: IRelativePosition;
122
122
  pos2?: number;
123
123
  relativePos2?: IRelativePosition;
124
+ // The segment must be allowed to be of any type in order to acommodate converting from
125
+ // JSON to a segment.
126
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
127
  seg?: any;
125
128
  }
126
129
 
@@ -169,6 +172,7 @@ export interface IMergeTreeAnnotateMsg extends IMergeTreeDelta {
169
172
  relativePos1?: IRelativePosition;
170
173
  pos2?: number;
171
174
  relativePos2?: IRelativePosition;
175
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
176
  props: Record<string, any>;
173
177
  }
174
178
 
@@ -190,6 +194,7 @@ export interface IMergeTreeGroupMsg extends IMergeTreeDelta {
190
194
  * @alpha
191
195
  */
192
196
  export interface IJSONSegment {
197
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
193
198
  props?: Record<string, any>;
194
199
  }
195
200
 
package/src/ordinal.ts CHANGED
@@ -11,7 +11,7 @@ export function computeHierarchicalOrdinal(
11
11
  actualCount: number,
12
12
  parentOrdinal: string,
13
13
  previousOrdinal: string | undefined,
14
- ) {
14
+ ): string {
15
15
  assert(
16
16
  maxCount <= 16 && actualCount <= maxCount,
17
17
  0x3f0 /* count must be less than max, and max must be 16 or less */,
@@ -20,10 +20,17 @@ export function computeHierarchicalOrdinal(
20
20
  const ordinalWidth = 1 << (maxCount - actualCount);
21
21
  let ordinal: string;
22
22
  if (previousOrdinal === undefined) {
23
+ // Ordinals exist purely for lexicographical sort order and use a small set of valid bytes for each string character.
24
+ // The extra handling fromCodePoint has for things like surrogate pairs is therefore unnecessary.
25
+ // disable the rule to use code points when dealing with ordinals.
26
+ // eslint-disable-next-line unicorn/prefer-code-point
23
27
  ordinal = parentOrdinal + String.fromCharCode(ordinalWidth - 1);
24
28
  } else {
29
+ // eslint-disable-next-line unicorn/prefer-code-point
25
30
  const prevOrdCode = previousOrdinal.charCodeAt(previousOrdinal.length - 1);
31
+ assert(prevOrdCode !== undefined, 0x9ad /* previous ordinal should not be empty */);
26
32
  const localOrdinal = prevOrdCode + ordinalWidth;
33
+ // eslint-disable-next-line unicorn/prefer-code-point
27
34
  ordinal = parentOrdinal + String.fromCharCode(localOrdinal);
28
35
  }
29
36