@fluidframework/merge-tree 2.0.0-rc.2.0.1 → 2.0.0-rc.3.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 (461) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-report/merge-tree.api.md +16 -4
  3. package/dist/MergeTreeTextHelper.d.ts.map +1 -1
  4. package/dist/MergeTreeTextHelper.js.map +1 -1
  5. package/dist/attributionCollection.d.ts +1 -1
  6. package/dist/attributionCollection.d.ts.map +1 -1
  7. package/dist/attributionCollection.js +6 -6
  8. package/dist/attributionCollection.js.map +1 -1
  9. package/dist/attributionPolicy.d.ts +2 -2
  10. package/dist/attributionPolicy.d.ts.map +1 -1
  11. package/dist/attributionPolicy.js +5 -5
  12. package/dist/attributionPolicy.js.map +1 -1
  13. package/dist/client.d.ts +8 -8
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +37 -48
  16. package/dist/client.js.map +1 -1
  17. package/dist/collections/list.js +3 -3
  18. package/dist/collections/list.js.map +1 -1
  19. package/dist/endOfTreeSegment.d.ts +5 -5
  20. package/dist/endOfTreeSegment.d.ts.map +1 -1
  21. package/dist/endOfTreeSegment.js +2 -2
  22. package/dist/endOfTreeSegment.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/legacy.d.ts +76 -0
  28. package/dist/localReference.d.ts.map +1 -1
  29. package/dist/localReference.js +7 -7
  30. package/dist/localReference.js.map +1 -1
  31. package/dist/mergeTree.d.ts +8 -8
  32. package/dist/mergeTree.d.ts.map +1 -1
  33. package/dist/mergeTree.js +44 -57
  34. package/dist/mergeTree.js.map +1 -1
  35. package/dist/mergeTreeDeltaCallback.d.ts +1 -1
  36. package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
  37. package/dist/mergeTreeDeltaCallback.js +4 -0
  38. package/dist/mergeTreeDeltaCallback.js.map +1 -1
  39. package/dist/mergeTreeNodeWalk.d.ts +3 -3
  40. package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
  41. package/dist/mergeTreeNodeWalk.js.map +1 -1
  42. package/dist/mergeTreeNodes.d.ts +37 -55
  43. package/dist/mergeTreeNodes.d.ts.map +1 -1
  44. package/dist/mergeTreeNodes.js +40 -19
  45. package/dist/mergeTreeNodes.js.map +1 -1
  46. package/dist/opBuilder.d.ts +1 -1
  47. package/dist/opBuilder.d.ts.map +1 -1
  48. package/dist/opBuilder.js.map +1 -1
  49. package/dist/ordinal.js +2 -2
  50. package/dist/ordinal.js.map +1 -1
  51. package/dist/partialLengths.d.ts +6 -6
  52. package/dist/partialLengths.d.ts.map +1 -1
  53. package/dist/partialLengths.js +13 -13
  54. package/dist/partialLengths.js.map +1 -1
  55. package/dist/public.d.ts +12 -0
  56. package/dist/revertibles.d.ts +1 -1
  57. package/dist/revertibles.d.ts.map +1 -1
  58. package/dist/revertibles.js +15 -15
  59. package/dist/revertibles.js.map +1 -1
  60. package/dist/segmentPropertiesManager.d.ts.map +1 -1
  61. package/dist/segmentPropertiesManager.js +2 -2
  62. package/dist/segmentPropertiesManager.js.map +1 -1
  63. package/dist/snapshotChunks.d.ts +2 -2
  64. package/dist/snapshotChunks.d.ts.map +1 -1
  65. package/dist/snapshotChunks.js.map +1 -1
  66. package/dist/snapshotLoader.d.ts +2 -2
  67. package/dist/snapshotLoader.d.ts.map +1 -1
  68. package/dist/snapshotLoader.js +11 -11
  69. package/dist/snapshotLoader.js.map +1 -1
  70. package/dist/snapshotV1.d.ts +3 -3
  71. package/dist/snapshotV1.d.ts.map +1 -1
  72. package/dist/snapshotV1.js +10 -10
  73. package/dist/snapshotV1.js.map +1 -1
  74. package/dist/snapshotlegacy.d.ts +4 -4
  75. package/dist/snapshotlegacy.d.ts.map +1 -1
  76. package/dist/snapshotlegacy.js +9 -10
  77. package/dist/snapshotlegacy.js.map +1 -1
  78. package/dist/test/Insertion.perf.spec.js.map +1 -1
  79. package/dist/test/PartialLengths.perf.spec.js +1 -1
  80. package/dist/test/PartialLengths.perf.spec.js.map +1 -1
  81. package/dist/test/Removal.perf.spec.js +1 -1
  82. package/dist/test/Removal.perf.spec.js.map +1 -1
  83. package/dist/test/Snapshot.perf.spec.js.map +1 -1
  84. package/dist/test/attributionCollection.perf.spec.js +2 -2
  85. package/dist/test/attributionCollection.perf.spec.js.map +1 -1
  86. package/dist/test/attributionCollection.spec.js.map +1 -1
  87. package/dist/test/attributionPolicy.spec.js.map +1 -1
  88. package/dist/test/beastTest.spec.d.ts.map +1 -1
  89. package/dist/test/beastTest.spec.js +7 -7
  90. package/dist/test/beastTest.spec.js.map +1 -1
  91. package/dist/test/client.annotateMarker.spec.js.map +1 -1
  92. package/dist/test/client.apis.spec.d.ts.map +1 -1
  93. package/dist/test/client.apis.spec.js.map +1 -1
  94. package/dist/test/client.applyMsg.spec.js +2 -2
  95. package/dist/test/client.applyMsg.spec.js.map +1 -1
  96. package/dist/test/client.applyStashedOpFarm.spec.d.ts +1 -1
  97. package/dist/test/client.applyStashedOpFarm.spec.d.ts.map +1 -1
  98. package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
  99. package/dist/test/client.attributionFarm.spec.d.ts.map +1 -1
  100. package/dist/test/client.attributionFarm.spec.js +1 -1
  101. package/dist/test/client.attributionFarm.spec.js.map +1 -1
  102. package/dist/test/client.conflictFarm.spec.d.ts.map +1 -1
  103. package/dist/test/client.conflictFarm.spec.js.map +1 -1
  104. package/dist/test/client.getPosition.spec.js +1 -1
  105. package/dist/test/client.getPosition.spec.js.map +1 -1
  106. package/dist/test/client.localReference.spec.js +6 -6
  107. package/dist/test/client.localReference.spec.js.map +1 -1
  108. package/dist/test/client.localReferenceFarm.spec.js +2 -2
  109. package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
  110. package/dist/test/client.rebasePosition.spec.js.map +1 -1
  111. package/dist/test/client.reconnectFarm.spec.d.ts +1 -1
  112. package/dist/test/client.reconnectFarm.spec.d.ts.map +1 -1
  113. package/dist/test/client.reconnectFarm.spec.js +1 -1
  114. package/dist/test/client.reconnectFarm.spec.js.map +1 -1
  115. package/dist/test/client.replay.spec.js +4 -4
  116. package/dist/test/client.replay.spec.js.map +1 -1
  117. package/dist/test/client.rollback.spec.js +2 -2
  118. package/dist/test/client.rollback.spec.js.map +1 -1
  119. package/dist/test/client.rollbackFarm.spec.js.map +1 -1
  120. package/dist/test/client.searchForMarker.spec.js +1 -1
  121. package/dist/test/client.searchForMarker.spec.js.map +1 -1
  122. package/dist/test/client.walkSegments.spec.js.map +1 -1
  123. package/dist/test/collections.list.spec.js.map +1 -1
  124. package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  125. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +3 -3
  126. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  127. package/dist/test/mergeTree.annotate.spec.js +1 -1
  128. package/dist/test/mergeTree.annotate.spec.js.map +1 -1
  129. package/dist/test/mergeTree.insert.deltaCallback.spec.js +1 -1
  130. package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  131. package/dist/test/mergeTree.insertingWalk.spec.js +3 -3
  132. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
  133. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
  134. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  135. package/dist/test/mergeTree.markRangeRemoved.spec.js +1 -1
  136. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  137. package/dist/test/mergeTree.walk.spec.js +2 -2
  138. package/dist/test/mergeTree.walk.spec.js.map +1 -1
  139. package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
  140. package/dist/test/mergeTreeOperationRunner.d.ts +2 -2
  141. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
  142. package/dist/test/mergeTreeOperationRunner.js +3 -3
  143. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  144. package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
  145. package/dist/test/obliterate.concurrent.spec.js +2 -2
  146. package/dist/test/obliterate.concurrent.spec.js.map +1 -1
  147. package/dist/test/obliterate.deltaCallback.spec.js +1 -1
  148. package/dist/test/obliterate.deltaCallback.spec.js.map +1 -1
  149. package/dist/test/obliterate.partialLength.spec.js.map +1 -1
  150. package/dist/test/obliterate.reconnect.spec.js.map +1 -1
  151. package/dist/test/obliterate.spec.js.map +1 -1
  152. package/dist/test/ordinal.spec.d.ts +4 -0
  153. package/dist/test/ordinal.spec.d.ts.map +1 -1
  154. package/dist/test/ordinal.spec.js +4 -4
  155. package/dist/test/ordinal.spec.js.map +1 -1
  156. package/dist/test/partialLength.spec.js.map +1 -1
  157. package/dist/test/properties.spec.js.map +1 -1
  158. package/dist/test/reconnectHelper.d.ts +1 -1
  159. package/dist/test/reconnectHelper.d.ts.map +1 -1
  160. package/dist/test/reconnectHelper.js.map +1 -1
  161. package/dist/test/resetPendingSegmentsToOp.spec.js +1 -1
  162. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  163. package/dist/test/revertibleFarm.spec.js +1 -1
  164. package/dist/test/revertibleFarm.spec.js.map +1 -1
  165. package/dist/test/revertibles.spec.d.ts.map +1 -1
  166. package/dist/test/revertibles.spec.js +1 -1
  167. package/dist/test/revertibles.spec.js.map +1 -1
  168. package/dist/test/segmentGroupCollection.spec.js.map +1 -1
  169. package/dist/test/snapshot.spec.js +1 -1
  170. package/dist/test/snapshot.spec.js.map +1 -1
  171. package/dist/test/snapshot.utils.d.ts +1 -1
  172. package/dist/test/snapshot.utils.d.ts.map +1 -1
  173. package/dist/test/snapshot.utils.js +3 -3
  174. package/dist/test/snapshot.utils.js.map +1 -1
  175. package/dist/test/snapshotlegacy.spec.js +8 -8
  176. package/dist/test/snapshotlegacy.spec.js.map +1 -1
  177. package/dist/test/sortedSegmentSet.spec.js +2 -2
  178. package/dist/test/sortedSegmentSet.spec.js.map +1 -1
  179. package/dist/test/testClient.d.ts +5 -5
  180. package/dist/test/testClient.d.ts.map +1 -1
  181. package/dist/test/testClient.js +11 -11
  182. package/dist/test/testClient.js.map +1 -1
  183. package/dist/test/testClientLogger.d.ts +1 -1
  184. package/dist/test/testClientLogger.d.ts.map +1 -1
  185. package/dist/test/testClientLogger.js +10 -8
  186. package/dist/test/testClientLogger.js.map +1 -1
  187. package/dist/test/testSerializer.d.ts.map +1 -1
  188. package/dist/test/testSerializer.js +2 -2
  189. package/dist/test/testSerializer.js.map +1 -1
  190. package/dist/test/testServer.d.ts +1 -1
  191. package/dist/test/testServer.d.ts.map +1 -1
  192. package/dist/test/testServer.js +4 -4
  193. package/dist/test/testServer.js.map +1 -1
  194. package/dist/test/testUtils.d.ts +5 -5
  195. package/dist/test/testUtils.d.ts.map +1 -1
  196. package/dist/test/testUtils.js +3 -3
  197. package/dist/test/testUtils.js.map +1 -1
  198. package/dist/test/text.d.ts +1 -1
  199. package/dist/test/text.d.ts.map +1 -1
  200. package/dist/test/text.js.map +1 -1
  201. package/dist/test/tracking.spec.js.map +1 -1
  202. package/dist/test/wordUnitTests.spec.d.ts.map +1 -1
  203. package/dist/test/wordUnitTests.spec.js +2 -2
  204. package/dist/test/wordUnitTests.spec.js.map +1 -1
  205. package/dist/textSegment.d.ts.map +1 -1
  206. package/dist/textSegment.js +2 -2
  207. package/dist/textSegment.js.map +1 -1
  208. package/dist/zamboni.d.ts +2 -2
  209. package/dist/zamboni.d.ts.map +1 -1
  210. package/dist/zamboni.js.map +1 -1
  211. package/internal.d.ts +11 -0
  212. package/legacy.d.ts +11 -0
  213. package/lib/MergeTreeTextHelper.d.ts.map +1 -1
  214. package/lib/MergeTreeTextHelper.js.map +1 -1
  215. package/lib/attributionCollection.d.ts +1 -1
  216. package/lib/attributionCollection.d.ts.map +1 -1
  217. package/lib/attributionCollection.js +1 -1
  218. package/lib/attributionCollection.js.map +1 -1
  219. package/lib/attributionPolicy.d.ts +2 -2
  220. package/lib/attributionPolicy.d.ts.map +1 -1
  221. package/lib/attributionPolicy.js +4 -4
  222. package/lib/attributionPolicy.js.map +1 -1
  223. package/lib/client.d.ts +8 -8
  224. package/lib/client.d.ts.map +1 -1
  225. package/lib/client.js +14 -25
  226. package/lib/client.js.map +1 -1
  227. package/lib/collections/list.js +1 -1
  228. package/lib/collections/list.js.map +1 -1
  229. package/lib/endOfTreeSegment.d.ts +5 -5
  230. package/lib/endOfTreeSegment.d.ts.map +1 -1
  231. package/lib/endOfTreeSegment.js +2 -2
  232. package/lib/endOfTreeSegment.js.map +1 -1
  233. package/lib/index.d.ts +1 -1
  234. package/lib/index.d.ts.map +1 -1
  235. package/lib/index.js +1 -1
  236. package/lib/index.js.map +1 -1
  237. package/lib/legacy.d.ts +76 -0
  238. package/lib/localReference.d.ts.map +1 -1
  239. package/lib/localReference.js +2 -2
  240. package/lib/localReference.js.map +1 -1
  241. package/lib/mergeTree.d.ts +8 -8
  242. package/lib/mergeTree.d.ts.map +1 -1
  243. package/lib/mergeTree.js +23 -36
  244. package/lib/mergeTree.js.map +1 -1
  245. package/lib/mergeTreeDeltaCallback.d.ts +1 -1
  246. package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
  247. package/lib/mergeTreeDeltaCallback.js +4 -0
  248. package/lib/mergeTreeDeltaCallback.js.map +1 -1
  249. package/lib/mergeTreeNodeWalk.d.ts +3 -3
  250. package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
  251. package/lib/mergeTreeNodeWalk.js.map +1 -1
  252. package/lib/mergeTreeNodes.d.ts +37 -55
  253. package/lib/mergeTreeNodes.d.ts.map +1 -1
  254. package/lib/mergeTreeNodes.js +28 -8
  255. package/lib/mergeTreeNodes.js.map +1 -1
  256. package/lib/opBuilder.d.ts +1 -1
  257. package/lib/opBuilder.d.ts.map +1 -1
  258. package/lib/opBuilder.js.map +1 -1
  259. package/lib/ordinal.js +1 -1
  260. package/lib/ordinal.js.map +1 -1
  261. package/lib/partialLengths.d.ts +6 -6
  262. package/lib/partialLengths.d.ts.map +1 -1
  263. package/lib/partialLengths.js +3 -3
  264. package/lib/partialLengths.js.map +1 -1
  265. package/lib/public.d.ts +12 -0
  266. package/lib/revertibles.d.ts +1 -1
  267. package/lib/revertibles.d.ts.map +1 -1
  268. package/lib/revertibles.js +4 -4
  269. package/lib/revertibles.js.map +1 -1
  270. package/lib/segmentPropertiesManager.d.ts.map +1 -1
  271. package/lib/segmentPropertiesManager.js +1 -1
  272. package/lib/segmentPropertiesManager.js.map +1 -1
  273. package/lib/snapshotChunks.d.ts +2 -2
  274. package/lib/snapshotChunks.d.ts.map +1 -1
  275. package/lib/snapshotChunks.js.map +1 -1
  276. package/lib/snapshotLoader.d.ts +2 -2
  277. package/lib/snapshotLoader.d.ts.map +1 -1
  278. package/lib/snapshotLoader.js +2 -2
  279. package/lib/snapshotLoader.js.map +1 -1
  280. package/lib/snapshotV1.d.ts +3 -3
  281. package/lib/snapshotV1.d.ts.map +1 -1
  282. package/lib/snapshotV1.js +5 -5
  283. package/lib/snapshotV1.js.map +1 -1
  284. package/lib/snapshotlegacy.d.ts +4 -4
  285. package/lib/snapshotlegacy.d.ts.map +1 -1
  286. package/lib/snapshotlegacy.js +3 -4
  287. package/lib/snapshotlegacy.js.map +1 -1
  288. package/lib/test/Insertion.perf.spec.js +1 -1
  289. package/lib/test/Insertion.perf.spec.js.map +1 -1
  290. package/lib/test/PartialLengths.perf.spec.js +2 -2
  291. package/lib/test/PartialLengths.perf.spec.js.map +1 -1
  292. package/lib/test/Removal.perf.spec.js +2 -2
  293. package/lib/test/Removal.perf.spec.js.map +1 -1
  294. package/lib/test/Snapshot.perf.spec.js +2 -2
  295. package/lib/test/Snapshot.perf.spec.js.map +1 -1
  296. package/lib/test/attributionCollection.perf.spec.js +4 -4
  297. package/lib/test/attributionCollection.perf.spec.js.map +1 -1
  298. package/lib/test/attributionCollection.spec.js.map +1 -1
  299. package/lib/test/attributionPolicy.spec.js.map +1 -1
  300. package/lib/test/beastTest.spec.d.ts.map +1 -1
  301. package/lib/test/beastTest.spec.js +8 -8
  302. package/lib/test/beastTest.spec.js.map +1 -1
  303. package/lib/test/client.annotateMarker.spec.js.map +1 -1
  304. package/lib/test/client.apis.spec.d.ts.map +1 -1
  305. package/lib/test/client.apis.spec.js.map +1 -1
  306. package/lib/test/client.applyMsg.spec.js +3 -3
  307. package/lib/test/client.applyMsg.spec.js.map +1 -1
  308. package/lib/test/client.applyStashedOpFarm.spec.d.ts +1 -1
  309. package/lib/test/client.applyStashedOpFarm.spec.d.ts.map +1 -1
  310. package/lib/test/client.applyStashedOpFarm.spec.js +1 -1
  311. package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -1
  312. package/lib/test/client.attributionFarm.spec.d.ts.map +1 -1
  313. package/lib/test/client.attributionFarm.spec.js +2 -2
  314. package/lib/test/client.attributionFarm.spec.js.map +1 -1
  315. package/lib/test/client.conflictFarm.spec.d.ts.map +1 -1
  316. package/lib/test/client.conflictFarm.spec.js +1 -1
  317. package/lib/test/client.conflictFarm.spec.js.map +1 -1
  318. package/lib/test/client.getPosition.spec.js.map +1 -1
  319. package/lib/test/client.localReference.spec.js +5 -5
  320. package/lib/test/client.localReference.spec.js.map +1 -1
  321. package/lib/test/client.localReferenceFarm.spec.js +2 -2
  322. package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
  323. package/lib/test/client.rebasePosition.spec.js.map +1 -1
  324. package/lib/test/client.reconnectFarm.spec.d.ts +1 -1
  325. package/lib/test/client.reconnectFarm.spec.d.ts.map +1 -1
  326. package/lib/test/client.reconnectFarm.spec.js +2 -2
  327. package/lib/test/client.reconnectFarm.spec.js.map +1 -1
  328. package/lib/test/client.replay.spec.js +3 -3
  329. package/lib/test/client.replay.spec.js.map +1 -1
  330. package/lib/test/client.rollback.spec.js +1 -1
  331. package/lib/test/client.rollback.spec.js.map +1 -1
  332. package/lib/test/client.rollbackFarm.spec.js +1 -1
  333. package/lib/test/client.rollbackFarm.spec.js.map +1 -1
  334. package/lib/test/client.searchForMarker.spec.js +2 -2
  335. package/lib/test/client.searchForMarker.spec.js.map +1 -1
  336. package/lib/test/client.walkSegments.spec.js.map +1 -1
  337. package/lib/test/collections.list.spec.js.map +1 -1
  338. package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  339. package/lib/test/mergeTree.annotate.deltaCallback.spec.js +3 -3
  340. package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  341. package/lib/test/mergeTree.annotate.spec.js +1 -1
  342. package/lib/test/mergeTree.annotate.spec.js.map +1 -1
  343. package/lib/test/mergeTree.insert.deltaCallback.spec.js +1 -1
  344. package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  345. package/lib/test/mergeTree.insertingWalk.spec.js +3 -3
  346. package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
  347. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
  348. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  349. package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  350. package/lib/test/mergeTree.walk.spec.js +2 -2
  351. package/lib/test/mergeTree.walk.spec.js.map +1 -1
  352. package/lib/test/mergeTree.zamboni.spec.js +1 -1
  353. package/lib/test/mergeTree.zamboni.spec.js.map +1 -1
  354. package/lib/test/mergeTreeOperationRunner.d.ts +2 -2
  355. package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
  356. package/lib/test/mergeTreeOperationRunner.js +3 -3
  357. package/lib/test/mergeTreeOperationRunner.js.map +1 -1
  358. package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -1
  359. package/lib/test/obliterate.concurrent.spec.js +1 -1
  360. package/lib/test/obliterate.concurrent.spec.js.map +1 -1
  361. package/lib/test/obliterate.deltaCallback.spec.js +1 -1
  362. package/lib/test/obliterate.deltaCallback.spec.js.map +1 -1
  363. package/lib/test/obliterate.partialLength.spec.js.map +1 -1
  364. package/lib/test/obliterate.reconnect.spec.js.map +1 -1
  365. package/lib/test/obliterate.spec.js.map +1 -1
  366. package/lib/test/ordinal.spec.d.ts +4 -0
  367. package/lib/test/ordinal.spec.d.ts.map +1 -1
  368. package/lib/test/ordinal.spec.js.map +1 -1
  369. package/lib/test/partialLength.spec.js.map +1 -1
  370. package/lib/test/properties.spec.js.map +1 -1
  371. package/lib/test/reconnectHelper.d.ts +1 -1
  372. package/lib/test/reconnectHelper.d.ts.map +1 -1
  373. package/lib/test/reconnectHelper.js +1 -1
  374. package/lib/test/reconnectHelper.js.map +1 -1
  375. package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  376. package/lib/test/revertibleFarm.spec.js +3 -3
  377. package/lib/test/revertibleFarm.spec.js.map +1 -1
  378. package/lib/test/revertibles.spec.d.ts.map +1 -1
  379. package/lib/test/revertibles.spec.js +2 -2
  380. package/lib/test/revertibles.spec.js.map +1 -1
  381. package/lib/test/segmentGroupCollection.spec.js.map +1 -1
  382. package/lib/test/snapshot.spec.js +2 -2
  383. package/lib/test/snapshot.spec.js.map +1 -1
  384. package/lib/test/snapshot.utils.d.ts +1 -1
  385. package/lib/test/snapshot.utils.d.ts.map +1 -1
  386. package/lib/test/snapshot.utils.js +2 -2
  387. package/lib/test/snapshot.utils.js.map +1 -1
  388. package/lib/test/snapshotlegacy.spec.js +4 -4
  389. package/lib/test/snapshotlegacy.spec.js.map +1 -1
  390. package/lib/test/sortedSegmentSet.spec.js +2 -2
  391. package/lib/test/sortedSegmentSet.spec.js.map +1 -1
  392. package/lib/test/testClient.d.ts +5 -5
  393. package/lib/test/testClient.d.ts.map +1 -1
  394. package/lib/test/testClient.js +7 -7
  395. package/lib/test/testClient.js.map +1 -1
  396. package/lib/test/testClientLogger.d.ts +1 -1
  397. package/lib/test/testClientLogger.d.ts.map +1 -1
  398. package/lib/test/testClientLogger.js +9 -7
  399. package/lib/test/testClientLogger.js.map +1 -1
  400. package/lib/test/testSerializer.d.ts.map +1 -1
  401. package/lib/test/testSerializer.js +1 -1
  402. package/lib/test/testSerializer.js.map +1 -1
  403. package/lib/test/testServer.d.ts +1 -1
  404. package/lib/test/testServer.d.ts.map +1 -1
  405. package/lib/test/testServer.js +2 -2
  406. package/lib/test/testServer.js.map +1 -1
  407. package/lib/test/testUtils.d.ts +5 -5
  408. package/lib/test/testUtils.d.ts.map +1 -1
  409. package/lib/test/testUtils.js +3 -3
  410. package/lib/test/testUtils.js.map +1 -1
  411. package/lib/test/text.d.ts +1 -1
  412. package/lib/test/text.d.ts.map +1 -1
  413. package/lib/test/text.js.map +1 -1
  414. package/lib/test/tracking.spec.js.map +1 -1
  415. package/lib/test/wordUnitTests.spec.d.ts.map +1 -1
  416. package/lib/test/wordUnitTests.spec.js +2 -2
  417. package/lib/test/wordUnitTests.spec.js.map +1 -1
  418. package/lib/textSegment.d.ts.map +1 -1
  419. package/lib/textSegment.js +1 -1
  420. package/lib/textSegment.js.map +1 -1
  421. package/lib/zamboni.d.ts +2 -2
  422. package/lib/zamboni.d.ts.map +1 -1
  423. package/lib/zamboni.js.map +1 -1
  424. package/package.json +37 -58
  425. package/src/MergeTreeTextHelper.ts +1 -1
  426. package/src/attributionCollection.ts +4 -3
  427. package/src/attributionPolicy.ts +7 -6
  428. package/src/client.ts +32 -45
  429. package/src/collections/list.ts +1 -1
  430. package/src/endOfTreeSegment.ts +5 -4
  431. package/src/index.ts +5 -1
  432. package/src/localReference.ts +4 -3
  433. package/src/mergeTree.ts +66 -84
  434. package/src/mergeTreeDeltaCallback.ts +3 -1
  435. package/src/mergeTreeNodeWalk.ts +6 -6
  436. package/src/mergeTreeNodes.ts +59 -61
  437. package/src/opBuilder.ts +3 -3
  438. package/src/ordinal.ts +1 -1
  439. package/src/partialLengths.ts +11 -10
  440. package/src/revertibles.ts +6 -5
  441. package/src/segmentPropertiesManager.ts +3 -2
  442. package/src/snapshotChunks.ts +3 -2
  443. package/src/snapshotLoader.ts +10 -12
  444. package/src/snapshotV1.ts +15 -12
  445. package/src/snapshotlegacy.ts +8 -6
  446. package/src/textSegment.ts +2 -1
  447. package/src/zamboni.ts +7 -7
  448. package/api-extractor-cjs.json +0 -8
  449. package/dist/merge-tree-alpha.d.ts +0 -1558
  450. package/dist/merge-tree-beta.d.ts +0 -230
  451. package/dist/merge-tree-public.d.ts +0 -230
  452. package/dist/merge-tree-untrimmed.d.ts +0 -1894
  453. package/lib/merge-tree-alpha.d.ts +0 -1558
  454. package/lib/merge-tree-beta.d.ts +0 -230
  455. package/lib/merge-tree-public.d.ts +0 -230
  456. package/lib/merge-tree-untrimmed.d.ts +0 -1894
  457. package/lib/test/types/validateMergeTreePrevious.generated.d.ts +0 -2
  458. package/lib/test/types/validateMergeTreePrevious.generated.d.ts.map +0 -1
  459. package/lib/test/types/validateMergeTreePrevious.generated.js +0 -228
  460. package/lib/test/types/validateMergeTreePrevious.generated.js.map +0 -1
  461. /package/{dist → lib}/tsdoc-metadata.json +0 -0
package/src/mergeTree.ts CHANGED
@@ -6,9 +6,12 @@
6
6
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
7
  /* eslint-disable no-bitwise */
8
8
 
9
- import { assert, Heap, IComparer } from "@fluidframework/core-utils";
10
- import { DataProcessingError, UsageError } from "@fluidframework/telemetry-utils";
9
+ import { assert, Heap, IComparer } from "@fluidframework/core-utils/internal";
10
+ import { DataProcessingError, UsageError } from "@fluidframework/telemetry-utils/internal";
11
+
11
12
  import { IAttributionCollectionSerializer } from "./attributionCollection.js";
13
+ // eslint-disable-next-line import/no-deprecated
14
+ import { Client } from "./client.js";
12
15
  import { DoublyLinkedList, ListNode } from "./collections/index.js";
13
16
  import {
14
17
  NonCollabClient,
@@ -16,69 +19,66 @@ import {
16
19
  UnassignedSequenceNumber,
17
20
  UniversalSequenceNumber,
18
21
  } from "./constants.js";
22
+ import { EndOfTreeSegment, StartOfTreeSegment } from "./endOfTreeSegment.js";
19
23
  import {
20
- anyLocalReferencePosition,
21
- filterLocalReferencePositions,
22
24
  LocalReferenceCollection,
23
25
  LocalReferencePosition,
24
26
  SlidingPreference,
27
+ anyLocalReferencePosition,
28
+ filterLocalReferencePositions,
25
29
  } from "./localReference.js";
30
+ import {
31
+ IMergeTreeDeltaOpArgs,
32
+ IMergeTreeSegmentDelta,
33
+ MergeTreeDeltaCallback,
34
+ MergeTreeMaintenanceCallback,
35
+ MergeTreeMaintenanceType,
36
+ } from "./mergeTreeDeltaCallback.js";
37
+ import {
38
+ NodeAction,
39
+ backwardExcursion,
40
+ depthFirstNodeWalk,
41
+ forwardExcursion,
42
+ walkAllChildSegments,
43
+ } from "./mergeTreeNodeWalk.js";
26
44
  import {
27
45
  BlockAction,
28
46
  // eslint-disable-next-line import/no-deprecated
29
47
  CollaborationWindow,
30
- IHierBlock,
31
- IMergeBlock,
32
- ISegmentLeaf,
48
+ HierMergeBlock,
33
49
  IMergeNode,
34
50
  IMoveInfo,
35
- InsertContext,
36
51
  IRemovalInfo,
37
52
  ISegment,
38
53
  ISegmentAction,
39
54
  ISegmentChanges,
55
+ ISegmentLeaf,
56
+ InsertContext,
40
57
  Marker,
41
58
  MaxNodesInBlock,
42
59
  MergeBlock,
43
- reservedMarkerIdKey,
44
60
  // eslint-disable-next-line import/no-deprecated
45
61
  SegmentGroup,
46
- toMoveInfo,
62
+ reservedMarkerIdKey,
47
63
  seqLTE,
64
+ toMoveInfo,
48
65
  toRemovalInfo,
49
66
  } from "./mergeTreeNodes.js";
50
- import {
51
- IMergeTreeDeltaOpArgs,
52
- IMergeTreeSegmentDelta,
53
- MergeTreeDeltaCallback,
54
- MergeTreeMaintenanceCallback,
55
- MergeTreeMaintenanceType,
56
- } from "./mergeTreeDeltaCallback.js";
67
+ import type { TrackingGroup } from "./mergeTreeTracking.js";
57
68
  import { createAnnotateRangeOp, createInsertSegmentOp, createRemoveRangeOp } from "./opBuilder.js";
58
69
  import { IMergeTreeDeltaOp, IRelativePosition, MergeTreeDeltaType, ReferenceType } from "./ops.js";
59
70
  import { PartialSequenceLengths } from "./partialLengths.js";
60
71
  // eslint-disable-next-line import/no-deprecated
61
- import { createMap, extend, extendIfUndefined, MapLike, PropertySet } from "./properties.js";
72
+ import { MapLike, PropertySet, createMap, extend, extendIfUndefined } from "./properties.js";
62
73
  import {
63
- refTypeIncludesFlag,
64
- ReferencePosition,
65
74
  DetachedReferencePosition,
75
+ ReferencePosition,
66
76
  refGetTileLabels,
67
77
  refHasTileLabel,
78
+ refTypeIncludesFlag,
68
79
  } from "./referencePositions.js";
69
80
  import { PropertiesRollback } from "./segmentPropertiesManager.js";
70
- import {
71
- backwardExcursion,
72
- depthFirstNodeWalk,
73
- forwardExcursion,
74
- NodeAction,
75
- walkAllChildSegments,
76
- } from "./mergeTreeNodeWalk.js";
77
- import type { TrackingGroup } from "./mergeTreeTracking.js";
78
81
  import { zamboniSegments } from "./zamboni.js";
79
- // eslint-disable-next-line import/no-deprecated
80
- import { Client } from "./client.js";
81
- import { EndOfTreeSegment, StartOfTreeSegment } from "./endOfTreeSegment.js";
82
82
 
83
83
  function wasRemovedAfter(seg: ISegment, seq: number): boolean {
84
84
  return (
@@ -154,23 +154,6 @@ function addTileIfNotPresent(tile: ReferencePosition, tiles: MapLike<ReferencePo
154
154
  }
155
155
  }
156
156
 
157
- class HierMergeBlock extends MergeBlock implements IHierBlock {
158
- public rightmostTiles: MapLike<ReferencePosition>;
159
- public leftmostTiles: MapLike<ReferencePosition>;
160
-
161
- constructor(childCount: number) {
162
- super(childCount);
163
- // eslint-disable-next-line import/no-deprecated
164
- this.rightmostTiles = createMap<ReferencePosition>();
165
- // eslint-disable-next-line import/no-deprecated
166
- this.leftmostTiles = createMap<ReferencePosition>();
167
- }
168
-
169
- public hierBlock() {
170
- return this;
171
- }
172
- }
173
-
174
157
  /**
175
158
  * @alpha
176
159
  */
@@ -279,7 +262,7 @@ export interface LRUSegment {
279
262
  maxSeq: number;
280
263
  }
281
264
 
282
- export interface IRootMergeBlock extends IMergeBlock {
265
+ export interface IRootMergeBlock extends MergeBlock {
283
266
  mergeTree?: MergeTree;
284
267
  }
285
268
 
@@ -422,7 +405,7 @@ export class MergeTree {
422
405
  zamboniSegments: true,
423
406
  };
424
407
 
425
- private static readonly theUnfinishedNode = { childCount: -1 } as unknown as IMergeBlock;
408
+ private static readonly theUnfinishedNode = { childCount: -1 } as unknown as MergeBlock;
426
409
 
427
410
  // eslint-disable-next-line import/no-deprecated
428
411
  public readonly collabWindow = new CollaborationWindow();
@@ -575,7 +558,7 @@ export class MergeTree {
575
558
  }
576
559
  }
577
560
 
578
- private addNode(block: IMergeBlock, node: IMergeNode) {
561
+ private addNode(block: MergeBlock, node: IMergeNode) {
579
562
  const index = block.childCount++;
580
563
  block.assignChild(node, index, false);
581
564
  return index;
@@ -593,7 +576,7 @@ export class MergeTree {
593
576
  // Starting with the leaf segments, recursively builds the B-Tree layer by layer from the bottom up.
594
577
  const buildMergeBlock = (nodes: IMergeNode[]): IRootMergeBlock => {
595
578
  const blockCount = Math.ceil(nodes.length / maxChildren); // Compute # blocks require for this level of B-Tree
596
- const blocks: IMergeBlock[] = new Array(blockCount); // Pre-alloc array to collect nodes
579
+ const blocks: MergeBlock[] = new Array(blockCount); // Pre-alloc array to collect nodes
597
580
 
598
581
  // For each block in this level of the B-Tree...
599
582
  for (
@@ -676,7 +659,7 @@ export class MergeTree {
676
659
 
677
660
  let totalOffset = 0;
678
661
  let parent = node.parent;
679
- let prevParent: IMergeBlock | undefined;
662
+ let prevParent: MergeBlock | undefined;
680
663
  while (parent) {
681
664
  const children = parent.children;
682
665
  for (let childIndex = 0; childIndex < parent.childCount; childIndex++) {
@@ -927,7 +910,7 @@ export class MergeTree {
927
910
  );
928
911
  }
929
912
 
930
- private blockLength(node: IMergeBlock, refSeq: number, clientId: number): number {
913
+ private blockLength(node: MergeBlock, refSeq: number, clientId: number): number {
931
914
  return this.collabWindow.collaborating && clientId !== this.collabWindow.clientId
932
915
  ? node.partialLengths!.getPartialLength(refSeq, clientId)
933
916
  : node.cachedLength ?? 0;
@@ -1110,16 +1093,16 @@ export class MergeTree {
1110
1093
  depthFirstNodeWalk(
1111
1094
  segWithParent.parent,
1112
1095
  segWithParent,
1113
- (seg) => {
1114
- if (seg.isLeaf()) {
1115
- if (Marker.is(seg) && refHasTileLabel(seg, markerLabel)) {
1116
- foundMarker = seg;
1096
+ (node) => {
1097
+ if (node.isLeaf()) {
1098
+ if (Marker.is(node) && refHasTileLabel(node, markerLabel)) {
1099
+ foundMarker = node;
1117
1100
  }
1118
1101
  } else {
1119
- const block = seg as IHierBlock;
1102
+ assert(node.hierBlock(), 0x90b /* must be hierBlock */);
1120
1103
  const marker = forwards
1121
- ? block.leftmostTiles[markerLabel]
1122
- : block.rightmostTiles[markerLabel];
1104
+ ? node.leftmostTiles[markerLabel]
1105
+ : node.rightmostTiles[markerLabel];
1123
1106
  if (marker !== undefined) {
1124
1107
  assert(
1125
1108
  marker.isLeaf() && Marker.is(marker),
@@ -1138,7 +1121,7 @@ export class MergeTree {
1138
1121
  return foundMarker;
1139
1122
  }
1140
1123
 
1141
- private updateRoot(splitNode: IMergeBlock | undefined) {
1124
+ private updateRoot(splitNode: MergeBlock | undefined) {
1142
1125
  if (splitNode !== undefined) {
1143
1126
  const newRoot = this.makeBlock(2);
1144
1127
  newRoot.assignChild(this.root, 0, false);
@@ -1156,7 +1139,7 @@ export class MergeTree {
1156
1139
  public ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs) {
1157
1140
  const seq = opArgs.sequencedMessage!.sequenceNumber;
1158
1141
  const pendingSegmentGroup = this.pendingSegments.shift()?.data;
1159
- const nodesToUpdate: IMergeBlock[] = [];
1142
+ const nodesToUpdate: MergeBlock[] = [];
1160
1143
  let overwrite = false;
1161
1144
  if (pendingSegmentGroup !== undefined) {
1162
1145
  const deltaSegments: IMergeTreeSegmentDelta[] = [];
@@ -1401,7 +1384,7 @@ export class MergeTree {
1401
1384
  localSeq: number | undefined,
1402
1385
  newSegments: T[],
1403
1386
  ) {
1404
- const continueFrom = (node: IMergeBlock) => {
1387
+ const continueFrom = (node: MergeBlock) => {
1405
1388
  let siblingExists = false;
1406
1389
  forwardExcursion(node, () => {
1407
1390
  siblingExists = true;
@@ -1682,7 +1665,7 @@ export class MergeTree {
1682
1665
  }
1683
1666
 
1684
1667
  private insertingWalk(
1685
- block: IMergeBlock,
1668
+ block: MergeBlock,
1686
1669
  pos: number,
1687
1670
  refSeq: number,
1688
1671
  clientId: number,
@@ -1695,7 +1678,7 @@ export class MergeTree {
1695
1678
  let childIndex: number;
1696
1679
  let child: IMergeNode;
1697
1680
  let newNode: IMergeNode | undefined;
1698
- let fromSplit: IMergeBlock | undefined;
1681
+ let fromSplit: MergeBlock | undefined;
1699
1682
  for (childIndex = 0; childIndex < block.childCount; childIndex++) {
1700
1683
  child = children[childIndex];
1701
1684
  // ensure we walk down the far edge of the tree, even if all sub-tree is eligible for zamboni
@@ -1801,7 +1784,7 @@ export class MergeTree {
1801
1784
  }
1802
1785
  }
1803
1786
 
1804
- private split(node: IMergeBlock) {
1787
+ private split(node: MergeBlock) {
1805
1788
  const halfCount = MaxNodesInBlock / 2;
1806
1789
  const newNode = this.makeBlock(halfCount);
1807
1790
  node.childCount = halfCount;
@@ -1816,7 +1799,7 @@ export class MergeTree {
1816
1799
  return newNode;
1817
1800
  }
1818
1801
 
1819
- public nodeUpdateOrdinals(block: IMergeBlock) {
1802
+ public nodeUpdateOrdinals(block: MergeBlock) {
1820
1803
  for (let i = 0; i < block.childCount; i++) {
1821
1804
  const child = block.children[i];
1822
1805
  block.setOrdinal(child, i);
@@ -1987,7 +1970,7 @@ export class MergeTree {
1987
1970
  return true;
1988
1971
  };
1989
1972
 
1990
- const afterMarkMoved = (node: IMergeBlock, pos: number, _start: number, _end: number) => {
1973
+ const afterMarkMoved = (node: MergeBlock, pos: number, _start: number, _end: number) => {
1991
1974
  if (_overwrite) {
1992
1975
  this.nodeUpdateLengthNewStructure(node);
1993
1976
  } else {
@@ -2098,7 +2081,7 @@ export class MergeTree {
2098
2081
  }
2099
2082
  return true;
2100
2083
  };
2101
- const afterMarkRemoved = (node: IMergeBlock, pos: number, _start: number, _end: number) => {
2084
+ const afterMarkRemoved = (node: MergeBlock, pos: number, _start: number, _end: number) => {
2102
2085
  if (_overwrite) {
2103
2086
  this.nodeUpdateLengthNewStructure(node);
2104
2087
  } else {
@@ -2260,7 +2243,7 @@ export class MergeTree {
2260
2243
  return segmentPosition;
2261
2244
  }
2262
2245
 
2263
- public nodeUpdateLengthNewStructure(node: IMergeBlock, recur = false) {
2246
+ public nodeUpdateLengthNewStructure(node: MergeBlock, recur = false) {
2264
2247
  this.blockUpdate(node);
2265
2248
  if (this.collabWindow.collaborating) {
2266
2249
  this.localPartialsComputed = false;
@@ -2498,22 +2481,21 @@ export class MergeTree {
2498
2481
  }
2499
2482
  }
2500
2483
  } else {
2501
- const block = node as IHierBlock;
2484
+ assert(node.hierBlock(), 0x90c /* must be hier block */);
2502
2485
  // eslint-disable-next-line import/no-deprecated
2503
- extend(rightmostTiles, block.rightmostTiles);
2486
+ extend(rightmostTiles, node.rightmostTiles);
2504
2487
  // eslint-disable-next-line import/no-deprecated
2505
- extendIfUndefined(leftmostTiles, block.leftmostTiles);
2488
+ extendIfUndefined(leftmostTiles, node.leftmostTiles);
2506
2489
  }
2507
2490
  }
2508
2491
 
2509
- private blockUpdate(block: IMergeBlock) {
2492
+ private blockUpdate(block: MergeBlock) {
2510
2493
  let len: number | undefined;
2511
- const hierBlock = block.hierBlock();
2512
- if (hierBlock) {
2494
+ if (block.hierBlock()) {
2513
2495
  // eslint-disable-next-line import/no-deprecated
2514
- hierBlock.rightmostTiles = createMap<Marker>();
2496
+ block.rightmostTiles = createMap<Marker>();
2515
2497
  // eslint-disable-next-line import/no-deprecated
2516
- hierBlock.leftmostTiles = createMap<Marker>();
2498
+ block.leftmostTiles = createMap<Marker>();
2517
2499
  }
2518
2500
  for (let i = 0; i < block.childCount; i++) {
2519
2501
  const child = block.children[i];
@@ -2522,8 +2504,8 @@ export class MergeTree {
2522
2504
  len ??= 0;
2523
2505
  len += nodeLength;
2524
2506
  }
2525
- if (hierBlock) {
2526
- this.addNodeReferences(child, hierBlock.rightmostTiles, hierBlock.leftmostTiles);
2507
+ if (block.hierBlock()) {
2508
+ this.addNodeReferences(child, block.rightmostTiles, block.leftmostTiles);
2527
2509
  }
2528
2510
  }
2529
2511
 
@@ -2531,12 +2513,12 @@ export class MergeTree {
2531
2513
  }
2532
2514
 
2533
2515
  public blockUpdatePathLengths(
2534
- startBlock: IMergeBlock | undefined,
2516
+ startBlock: MergeBlock | undefined,
2535
2517
  seq: number,
2536
2518
  clientId: number,
2537
2519
  newStructure = false,
2538
2520
  ) {
2539
- let block: IMergeBlock | undefined = startBlock;
2521
+ let block: MergeBlock | undefined = startBlock;
2540
2522
  while (block !== undefined) {
2541
2523
  if (newStructure) {
2542
2524
  this.nodeUpdateLengthNewStructure(block);
@@ -2547,7 +2529,7 @@ export class MergeTree {
2547
2529
  }
2548
2530
  }
2549
2531
 
2550
- private blockUpdateLength(node: IMergeBlock, seq: number, clientId: number) {
2532
+ private blockUpdateLength(node: MergeBlock, seq: number, clientId: number) {
2551
2533
  this.blockUpdate(node);
2552
2534
  this.localPartialsComputed = false;
2553
2535
  if (
@@ -2,11 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+
5
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
+
8
+ import { ISegment } from "./mergeTreeNodes.js";
6
9
  // eslint-disable-next-line import/no-deprecated
7
10
  import { IMergeTreeGroupMsg, IMergeTreeOp, MergeTreeDeltaType } from "./ops.js";
8
11
  import { PropertySet } from "./properties.js";
9
- import { ISegment } from "./mergeTreeNodes.js";
10
12
 
11
13
  /**
12
14
  * @alpha
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IMergeBlock, IMergeNode, ISegment } from "./mergeTreeNodes.js";
6
+ import { type MergeBlock, IMergeNode, ISegment } from "./mergeTreeNodes.js";
7
7
 
8
8
  export const LeafAction = {
9
9
  Exit: false,
@@ -33,11 +33,11 @@ export type NodeAction = (typeof NodeAction)[keyof typeof NodeAction] | Exclude<
33
33
  * @returns true if we naturally exit, false if exiting due to Exit action result
34
34
  */
35
35
  export function depthFirstNodeWalk(
36
- startBlock: IMergeBlock,
36
+ startBlock: MergeBlock,
37
37
  startChild: IMergeNode | undefined,
38
38
  downAction?: (node: IMergeNode) => NodeAction,
39
39
  leafActionOverride?: (seg: ISegment) => LeafAction,
40
- upAction?: (block: IMergeBlock) => void,
40
+ upAction?: (block: MergeBlock) => void,
41
41
  forward: boolean = true,
42
42
  ): boolean {
43
43
  const increment = forward ? 1 : -1;
@@ -56,7 +56,7 @@ export function depthFirstNodeWalk(
56
56
  let blockResult: NodeAction;
57
57
  while (start?.isLeaf() === false) {
58
58
  // cast is safe due to isLeaf === false in while above
59
- block = start as IMergeBlock;
59
+ block = start as MergeBlock;
60
60
  childCount = block.childCount;
61
61
  blockResult = downAction?.(block);
62
62
  // setting start undefined will skip the leaf walk
@@ -168,7 +168,7 @@ export function backwardExcursion(
168
168
  * @returns true if we naturally exit, false if exiting due to leaf action result
169
169
  */
170
170
  export function walkAllChildSegments(
171
- startBlock: IMergeBlock,
171
+ startBlock: MergeBlock,
172
172
  leafAction: (segment: ISegment) => boolean | undefined | void,
173
173
  ): boolean {
174
174
  if (startBlock.childCount === 0) {
@@ -177,7 +177,7 @@ export function walkAllChildSegments(
177
177
 
178
178
  // undefined shouldn't actually be added, but this allows subsequent check for `node.parent` to typecheck
179
179
  // without further runtime work.
180
- const ancestors = new Set<IMergeBlock | undefined>();
180
+ const ancestors = new Set<MergeBlock | undefined>();
181
181
  for (let cur = startBlock.parent; cur !== undefined; cur = cur.parent) {
182
182
  ancestors.add(cur);
183
183
  }
@@ -5,8 +5,9 @@
5
5
 
6
6
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
7
 
8
- import { assert } from "@fluidframework/core-utils";
9
- import { AttributionKey } from "@fluidframework/runtime-definitions";
8
+ import { assert } from "@fluidframework/core-utils/internal";
9
+ import { AttributionKey } from "@fluidframework/runtime-definitions/internal";
10
+
10
11
  import { IAttributionCollection } from "./attributionCollection.js";
11
12
  import { LocalClientId, UnassignedSequenceNumber, UniversalSequenceNumber } from "./constants.js";
12
13
  import { LocalReferenceCollection } from "./localReference.js";
@@ -14,10 +15,10 @@ import { IMergeTreeDeltaOpArgs } from "./mergeTreeDeltaCallback.js";
14
15
  import { TrackingGroupCollection } from "./mergeTreeTracking.js";
15
16
  import { IJSONSegment, IMarkerDef, MergeTreeDeltaType, ReferenceType } from "./ops.js";
16
17
  import { computeHierarchicalOrdinal } from "./ordinal.js";
17
- import { PartialSequenceLengths } from "./partialLengths.js";
18
+ import type { PartialSequenceLengths } from "./partialLengths.js";
18
19
  // eslint-disable-next-line import/no-deprecated
19
- import { clone, createMap, MapLike, PropertySet } from "./properties.js";
20
- import { refTypeIncludesFlag, ReferencePosition, refGetTileLabels } from "./referencePositions.js";
20
+ import { PropertySet, clone, createMap, type MapLike } from "./properties.js";
21
+ import { ReferencePosition, refGetTileLabels, refTypeIncludesFlag } from "./referencePositions.js";
21
22
  import { SegmentGroupCollection } from "./segmentGroupCollection.js";
22
23
  import { PropertiesManager, PropertiesRollback } from "./segmentPropertiesManager.js";
23
24
 
@@ -41,52 +42,8 @@ export interface IMergeNodeCommon {
41
42
  * someday we may split tree leaves from segments, but for now they are the same
42
43
  * this is just a convenience type that makes it clear that we need something that is both a segment and a leaf node
43
44
  */
44
- export type ISegmentLeaf = ISegment & { parent?: IMergeBlock };
45
- export type IMergeNode = IMergeBlock | ISegmentLeaf;
46
- /**
47
- * Internal (i.e. non-leaf) node in a merge tree.
48
- * @internal
49
- */
50
- export interface IMergeBlock extends IMergeNodeCommon {
51
- parent?: IMergeBlock;
52
-
53
- needsScour?: boolean;
54
- /**
55
- * Number of direct children of this node
56
- */
57
- childCount: number;
58
- /**
59
- * Array of child nodes.
60
- *
61
- * @remarks To avoid reallocation, this is always initialized to have maximum length as deemed by
62
- * the merge tree's branching factor. Use `childCount` to determine how many children this node actually has.
63
- */
64
- children: IMergeNode[];
65
- /**
66
- * Supports querying the total length of all descendants of this IMergeBlock from the perspective of any
67
- * (clientId, seq) within the collab window.
68
- *
69
- * @remarks This is only optional for implementation reasons (internal nodes can be created/moved without
70
- * immediately initializing the partial lengths). Aside from mid-update on tree operations, these lengths
71
- * objects are always defined.
72
- */
73
- partialLengths?: PartialSequenceLengths;
74
- /**
75
- * The length of the contents of the node.
76
- */
77
- cachedLength: number | undefined;
78
- hierBlock(): IHierBlock | undefined;
79
- assignChild(child: IMergeNode, index: number, updateOrdinal?: boolean): void;
80
- setOrdinal(child: IMergeNode, index: number): void;
81
- }
82
-
83
- /**
84
- * @internal
85
- */
86
- export interface IHierBlock extends IMergeBlock {
87
- rightmostTiles: MapLike<ReferencePosition>;
88
- leftmostTiles: MapLike<ReferencePosition>;
89
- }
45
+ export type ISegmentLeaf = ISegment & { parent?: MergeBlock };
46
+ export type IMergeNode = MergeBlock | ISegmentLeaf;
90
47
 
91
48
  /**
92
49
  * Contains removal information associated to an {@link ISegment}.
@@ -350,7 +307,7 @@ export interface ISegmentChanges {
350
307
  export interface BlockAction<TClientData> {
351
308
  // eslint-disable-next-line @typescript-eslint/prefer-function-type
352
309
  (
353
- block: IMergeBlock,
310
+ block: MergeBlock,
354
311
  pos: number,
355
312
  refSeq: number,
356
313
  clientId: number,
@@ -366,7 +323,7 @@ export interface BlockAction<TClientData> {
366
323
  export interface NodeAction<TClientData> {
367
324
  // eslint-disable-next-line @typescript-eslint/prefer-function-type
368
325
  (
369
- node: IMergeNode,
326
+ node: MergeNode,
370
327
  pos: number,
371
328
  refSeq: number,
372
329
  clientId: number,
@@ -382,7 +339,7 @@ export interface NodeAction<TClientData> {
382
339
  export interface InsertContext {
383
340
  candidateSegment?: ISegment;
384
341
  leaf: (segment: ISegment | undefined, pos: number, ic: InsertContext) => ISegmentChanges;
385
- continuePredicate?: (continueFromBlock: IMergeBlock) => boolean;
342
+ continuePredicate?: (continueFromBlock: MergeBlock) => boolean;
386
343
  }
387
344
 
388
345
  /**
@@ -409,6 +366,7 @@ export interface SegmentGroup {
409
366
 
410
367
  /**
411
368
  * @alpha
369
+ * @deprecated - unused and will be removed
412
370
  */
413
371
  export class MergeNode implements IMergeNodeCommon {
414
372
  index: number = 0;
@@ -431,16 +389,34 @@ export const MaxNodesInBlock = 8;
431
389
  /**
432
390
  * @internal
433
391
  */
434
- export class MergeBlock extends MergeNode implements IMergeBlock {
435
- parent?: IMergeBlock;
392
+ export class MergeBlock implements IMergeNodeCommon {
436
393
  public children: IMergeNode[];
394
+ public needsScour?: boolean;
395
+ public parent?: MergeBlock;
396
+ public index: number = 0;
397
+ public ordinal: string = "";
398
+ public cachedLength: number | undefined = 0;
399
+
400
+ isLeaf(): this is ISegment {
401
+ return false;
402
+ }
403
+
404
+ /**
405
+ * Supports querying the total length of all descendants of this IMergeBlock from the perspective of any
406
+ * (clientId, seq) within the collab window.
407
+ *
408
+ * @remarks This is only optional for implementation reasons (internal nodes can be created/moved without
409
+ * immediately initializing the partial lengths). Aside from mid-update on tree operations, these lengths
410
+ * objects are always defined.
411
+ */
412
+ partialLengths?: PartialSequenceLengths;
413
+
437
414
  public constructor(public childCount: number) {
438
- super();
439
415
  this.children = new Array<IMergeNode>(MaxNodesInBlock);
440
416
  }
441
417
 
442
- public hierBlock(): IHierBlock | undefined {
443
- return undefined;
418
+ public hierBlock(): this is HierMergeBlock {
419
+ return false;
444
420
  }
445
421
 
446
422
  public setOrdinal(child: IMergeNode, index: number) {
@@ -467,6 +443,23 @@ export class MergeBlock extends MergeNode implements IMergeBlock {
467
443
  }
468
444
  }
469
445
 
446
+ export class HierMergeBlock extends MergeBlock {
447
+ public rightmostTiles: MapLike<ReferencePosition>;
448
+ public leftmostTiles: MapLike<ReferencePosition>;
449
+
450
+ constructor(childCount: number) {
451
+ super(childCount);
452
+ // eslint-disable-next-line import/no-deprecated
453
+ this.rightmostTiles = createMap<ReferencePosition>();
454
+ // eslint-disable-next-line import/no-deprecated
455
+ this.leftmostTiles = createMap<ReferencePosition>();
456
+ }
457
+
458
+ public hierBlock(): this is HierMergeBlock {
459
+ return true;
460
+ }
461
+ }
462
+
470
463
  export function seqLTE(seq: number, minOrRefSeq: number) {
471
464
  return seq !== UnassignedSequenceNumber && seq <= minOrRefSeq;
472
465
  }
@@ -474,7 +467,7 @@ export function seqLTE(seq: number, minOrRefSeq: number) {
474
467
  /**
475
468
  * @alpha
476
469
  */
477
- export abstract class BaseSegment extends MergeNode implements ISegment {
470
+ export abstract class BaseSegment implements ISegment {
478
471
  public clientId: number = LocalClientId;
479
472
  public seq: number = UniversalSequenceNumber;
480
473
  public removedSeq?: number;
@@ -483,6 +476,10 @@ export abstract class BaseSegment extends MergeNode implements ISegment {
483
476
  public movedSeqs?: number[];
484
477
  public movedClientIds?: number[];
485
478
  public wasMovedOnInsert?: boolean | undefined;
479
+ public index: number = 0;
480
+ public ordinal: string = "";
481
+ public cachedLength: number = 0;
482
+
486
483
  public readonly segmentGroups: SegmentGroupCollection = new SegmentGroupCollection(this);
487
484
  public readonly trackingCollection: TrackingGroupCollection = new TrackingGroupCollection(this);
488
485
  /***/
@@ -695,9 +692,10 @@ export abstract class BaseSegment extends MergeNode implements ISegment {
695
692
  *
696
693
  * @remarks In general, marker ids should be accessed using the inherent method
697
694
  * {@link Marker.getId}. Marker ids should not be updated after creation.
698
- * @internal
695
+ * @alpha
699
696
  */
700
697
  export const reservedMarkerIdKey = "markerId";
698
+
701
699
  /**
702
700
  * @internal
703
701
  */
package/src/opBuilder.ts CHANGED
@@ -6,14 +6,14 @@
6
6
  import { ISegment, Marker } from "./mergeTreeNodes.js";
7
7
  import {
8
8
  IMergeTreeAnnotateMsg,
9
+ IMergeTreeDeltaOp,
9
10
  // eslint-disable-next-line import/no-deprecated
10
11
  IMergeTreeGroupMsg,
11
12
  IMergeTreeInsertMsg,
12
- IMergeTreeRemoveMsg,
13
- MergeTreeDeltaType,
14
- IMergeTreeDeltaOp,
15
13
  // eslint-disable-next-line import/no-deprecated
16
14
  IMergeTreeObliterateMsg,
15
+ IMergeTreeRemoveMsg,
16
+ MergeTreeDeltaType,
17
17
  } from "./ops.js";
18
18
  import { PropertySet } from "./properties.js";
19
19
 
package/src/ordinal.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  /* eslint-disable no-bitwise */
7
- import { assert } from "@fluidframework/core-utils";
7
+ import { assert } from "@fluidframework/core-utils/internal";
8
8
 
9
9
  export function computeHierarchicalOrdinal(
10
10
  maxCount: number,