@fluidframework/merge-tree 2.0.0-internal.8.0.0 → 2.0.0-rc.1.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 (481) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +0 -6
  3. package/api-extractor-esm.json +17 -0
  4. package/api-extractor-lint.json +1 -10
  5. package/api-extractor.json +0 -4
  6. package/api-report/merge-tree.api.md +4 -9
  7. package/dist/client.d.ts +0 -7
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +0 -7
  10. package/dist/client.js.map +1 -1
  11. package/dist/merge-tree-alpha.d.ts +27 -12
  12. package/dist/merge-tree-beta.d.ts +0 -16
  13. package/dist/merge-tree-public.d.ts +0 -16
  14. package/dist/merge-tree-untrimmed.d.ts +5 -29
  15. package/dist/mergeTree.d.ts +0 -17
  16. package/dist/mergeTree.d.ts.map +1 -1
  17. package/dist/mergeTree.js +0 -130
  18. package/dist/mergeTree.js.map +1 -1
  19. package/dist/ops.d.ts +1 -1
  20. package/dist/ops.js +1 -1
  21. package/dist/ops.js.map +1 -1
  22. package/dist/revertibles.d.ts +4 -4
  23. package/dist/revertibles.js +3 -3
  24. package/dist/revertibles.js.map +1 -1
  25. package/dist/test/Insertion.perf.spec.d.ts +6 -0
  26. package/dist/test/Insertion.perf.spec.d.ts.map +1 -0
  27. package/dist/test/Insertion.perf.spec.js +113 -0
  28. package/dist/test/Insertion.perf.spec.js.map +1 -0
  29. package/dist/test/PartialLengths.perf.spec.d.ts +6 -0
  30. package/dist/test/PartialLengths.perf.spec.d.ts.map +1 -0
  31. package/dist/test/PartialLengths.perf.spec.js +67 -0
  32. package/dist/test/PartialLengths.perf.spec.js.map +1 -0
  33. package/dist/test/Removal.perf.spec.d.ts +6 -0
  34. package/dist/test/Removal.perf.spec.d.ts.map +1 -0
  35. package/dist/test/Removal.perf.spec.js +166 -0
  36. package/dist/test/Removal.perf.spec.js.map +1 -0
  37. package/dist/test/Snapshot.perf.spec.d.ts +6 -0
  38. package/dist/test/Snapshot.perf.spec.d.ts.map +1 -0
  39. package/dist/test/Snapshot.perf.spec.js +33 -0
  40. package/dist/test/Snapshot.perf.spec.js.map +1 -0
  41. package/dist/test/attributionCollection.perf.spec.d.ts +6 -0
  42. package/dist/test/attributionCollection.perf.spec.d.ts.map +1 -0
  43. package/dist/test/attributionCollection.perf.spec.js +231 -0
  44. package/dist/test/attributionCollection.perf.spec.js.map +1 -0
  45. package/dist/test/attributionCollection.spec.d.ts +6 -0
  46. package/dist/test/attributionCollection.spec.d.ts.map +1 -0
  47. package/dist/test/attributionCollection.spec.js +486 -0
  48. package/dist/test/attributionCollection.spec.js.map +1 -0
  49. package/dist/test/attributionPolicy.spec.d.ts +6 -0
  50. package/dist/test/attributionPolicy.spec.d.ts.map +1 -0
  51. package/dist/test/attributionPolicy.spec.js +189 -0
  52. package/dist/test/attributionPolicy.spec.js.map +1 -0
  53. package/dist/test/beastTest.d.ts +54 -0
  54. package/dist/test/beastTest.d.ts.map +1 -0
  55. package/dist/test/beastTest.js +1333 -0
  56. package/dist/test/beastTest.js.map +1 -0
  57. package/dist/test/client.annotateMarker.spec.d.ts +6 -0
  58. package/dist/test/client.annotateMarker.spec.d.ts.map +1 -0
  59. package/dist/test/client.annotateMarker.spec.js +45 -0
  60. package/dist/test/client.annotateMarker.spec.js.map +1 -0
  61. package/dist/test/client.apis.d.ts +7 -0
  62. package/dist/test/client.apis.d.ts.map +1 -0
  63. package/dist/test/client.apis.js +72 -0
  64. package/dist/test/client.apis.js.map +1 -0
  65. package/dist/test/client.applyMsg.spec.d.ts +6 -0
  66. package/dist/test/client.applyMsg.spec.d.ts.map +1 -0
  67. package/dist/test/client.applyMsg.spec.js +500 -0
  68. package/dist/test/client.applyMsg.spec.js.map +1 -0
  69. package/dist/test/client.applyStashedOpFarm.spec.d.ts +12 -0
  70. package/dist/test/client.applyStashedOpFarm.spec.d.ts.map +1 -0
  71. package/dist/test/client.applyStashedOpFarm.spec.js +144 -0
  72. package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -0
  73. package/dist/test/client.attributionFarm.spec.d.ts +7 -0
  74. package/dist/test/client.attributionFarm.spec.d.ts.map +1 -0
  75. package/dist/test/client.attributionFarm.spec.js +96 -0
  76. package/dist/test/client.attributionFarm.spec.js.map +1 -0
  77. package/dist/test/client.conflictFarm.spec.d.ts +15 -0
  78. package/dist/test/client.conflictFarm.spec.d.ts.map +1 -0
  79. package/dist/test/client.conflictFarm.spec.js +88 -0
  80. package/dist/test/client.conflictFarm.spec.js.map +1 -0
  81. package/dist/test/client.getPosition.spec.d.ts +6 -0
  82. package/dist/test/client.getPosition.spec.d.ts.map +1 -0
  83. package/dist/test/client.getPosition.spec.js +54 -0
  84. package/dist/test/client.getPosition.spec.js.map +1 -0
  85. package/dist/test/client.localReference.spec.d.ts +6 -0
  86. package/dist/test/client.localReference.spec.d.ts.map +1 -0
  87. package/dist/test/client.localReference.spec.js +439 -0
  88. package/dist/test/client.localReference.spec.js.map +1 -0
  89. package/dist/test/client.localReferenceFarm.spec.d.ts +6 -0
  90. package/dist/test/client.localReferenceFarm.spec.d.ts.map +1 -0
  91. package/dist/test/client.localReferenceFarm.spec.js +88 -0
  92. package/dist/test/client.localReferenceFarm.spec.js.map +1 -0
  93. package/dist/test/client.rebasePosition.spec.d.ts +6 -0
  94. package/dist/test/client.rebasePosition.spec.d.ts.map +1 -0
  95. package/dist/test/client.rebasePosition.spec.js +102 -0
  96. package/dist/test/client.rebasePosition.spec.js.map +1 -0
  97. package/dist/test/client.reconnectFarm.spec.d.ts +12 -0
  98. package/dist/test/client.reconnectFarm.spec.d.ts.map +1 -0
  99. package/dist/test/client.reconnectFarm.spec.js +91 -0
  100. package/dist/test/client.reconnectFarm.spec.js.map +1 -0
  101. package/dist/test/client.replay.spec.d.ts +6 -0
  102. package/dist/test/client.replay.spec.d.ts.map +1 -0
  103. package/dist/test/client.replay.spec.js +85 -0
  104. package/dist/test/client.replay.spec.js.map +1 -0
  105. package/dist/test/client.rollback.spec.d.ts +6 -0
  106. package/dist/test/client.rollback.spec.d.ts.map +1 -0
  107. package/dist/test/client.rollback.spec.js +453 -0
  108. package/dist/test/client.rollback.spec.js.map +1 -0
  109. package/dist/test/client.rollbackFarm.spec.d.ts +6 -0
  110. package/dist/test/client.rollbackFarm.spec.d.ts.map +1 -0
  111. package/dist/test/client.rollbackFarm.spec.js +48 -0
  112. package/dist/test/client.rollbackFarm.spec.js.map +1 -0
  113. package/dist/test/client.searchForMarker.spec.d.ts +6 -0
  114. package/dist/test/client.searchForMarker.spec.d.ts.map +1 -0
  115. package/dist/test/client.searchForMarker.spec.js +446 -0
  116. package/dist/test/client.searchForMarker.spec.js.map +1 -0
  117. package/dist/test/client.walkSegments.spec.d.ts +6 -0
  118. package/dist/test/client.walkSegments.spec.d.ts.map +1 -0
  119. package/dist/test/client.walkSegments.spec.js +54 -0
  120. package/dist/test/client.walkSegments.spec.js.map +1 -0
  121. package/dist/test/collections.list.spec.d.ts +6 -0
  122. package/dist/test/collections.list.spec.d.ts.map +1 -0
  123. package/dist/test/collections.list.spec.js +84 -0
  124. package/dist/test/collections.list.spec.js.map +1 -0
  125. package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts +6 -0
  126. package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts.map +1 -0
  127. package/dist/test/createInsertOnlyAttributionPolicy.spec.js +35 -0
  128. package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -0
  129. package/dist/test/index.d.ts +13 -0
  130. package/dist/test/index.d.ts.map +1 -0
  131. package/dist/test/index.js +88 -0
  132. package/dist/test/index.js.map +1 -0
  133. package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts +6 -0
  134. package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts.map +1 -0
  135. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +142 -0
  136. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -0
  137. package/dist/test/mergeTree.annotate.spec.d.ts +6 -0
  138. package/dist/test/mergeTree.annotate.spec.d.ts.map +1 -0
  139. package/dist/test/mergeTree.annotate.spec.js +448 -0
  140. package/dist/test/mergeTree.annotate.spec.js.map +1 -0
  141. package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts +6 -0
  142. package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts.map +1 -0
  143. package/dist/test/mergeTree.insert.deltaCallback.spec.js +126 -0
  144. package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -0
  145. package/dist/test/mergeTree.insertingWalk.spec.d.ts +6 -0
  146. package/dist/test/mergeTree.insertingWalk.spec.d.ts.map +1 -0
  147. package/dist/test/mergeTree.insertingWalk.spec.js +279 -0
  148. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -0
  149. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts +6 -0
  150. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts.map +1 -0
  151. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +178 -0
  152. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -0
  153. package/dist/test/mergeTree.markRangeRemoved.spec.d.ts +6 -0
  154. package/dist/test/mergeTree.markRangeRemoved.spec.d.ts.map +1 -0
  155. package/dist/test/mergeTree.markRangeRemoved.spec.js +130 -0
  156. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -0
  157. package/dist/test/mergeTree.walk.spec.d.ts +6 -0
  158. package/dist/test/mergeTree.walk.spec.d.ts.map +1 -0
  159. package/dist/test/mergeTree.walk.spec.js +63 -0
  160. package/dist/test/mergeTree.walk.spec.js.map +1 -0
  161. package/dist/test/mergeTree.zamboni.spec.d.ts +6 -0
  162. package/dist/test/mergeTree.zamboni.spec.d.ts.map +1 -0
  163. package/dist/test/mergeTree.zamboni.spec.js +52 -0
  164. package/dist/test/mergeTree.zamboni.spec.js.map +1 -0
  165. package/dist/test/mergeTreeOperationRunner.d.ts +63 -0
  166. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -0
  167. package/dist/test/mergeTreeOperationRunner.js +245 -0
  168. package/dist/test/mergeTreeOperationRunner.js.map +1 -0
  169. package/dist/test/mergeTreeOperationRunner.spec.d.ts +6 -0
  170. package/dist/test/mergeTreeOperationRunner.spec.d.ts.map +1 -0
  171. package/dist/test/mergeTreeOperationRunner.spec.js +156 -0
  172. package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -0
  173. package/dist/test/obliterate.concurrent.spec.d.ts +6 -0
  174. package/dist/test/obliterate.concurrent.spec.d.ts.map +1 -0
  175. package/dist/test/obliterate.concurrent.spec.js +1446 -0
  176. package/dist/test/obliterate.concurrent.spec.js.map +1 -0
  177. package/dist/test/obliterate.partialLength.spec.d.ts +6 -0
  178. package/dist/test/obliterate.partialLength.spec.d.ts.map +1 -0
  179. package/dist/test/obliterate.partialLength.spec.js +279 -0
  180. package/dist/test/obliterate.partialLength.spec.js.map +1 -0
  181. package/dist/test/obliterate.reconnect.spec.d.ts +6 -0
  182. package/dist/test/obliterate.reconnect.spec.d.ts.map +1 -0
  183. package/dist/test/obliterate.reconnect.spec.js +164 -0
  184. package/dist/test/obliterate.reconnect.spec.js.map +1 -0
  185. package/dist/test/obliterate.spec.d.ts +6 -0
  186. package/dist/test/obliterate.spec.d.ts.map +1 -0
  187. package/dist/test/obliterate.spec.js +162 -0
  188. package/dist/test/obliterate.spec.js.map +1 -0
  189. package/dist/test/ordinal.spec.d.ts +2 -0
  190. package/dist/test/ordinal.spec.d.ts.map +1 -0
  191. package/dist/test/ordinal.spec.js +43 -0
  192. package/dist/test/ordinal.spec.js.map +1 -0
  193. package/dist/test/partialLength.spec.d.ts +6 -0
  194. package/dist/test/partialLength.spec.d.ts.map +1 -0
  195. package/dist/test/partialLength.spec.js +282 -0
  196. package/dist/test/partialLength.spec.js.map +1 -0
  197. package/dist/test/properties.spec.d.ts +6 -0
  198. package/dist/test/properties.spec.d.ts.map +1 -0
  199. package/dist/test/properties.spec.js +55 -0
  200. package/dist/test/properties.spec.js.map +1 -0
  201. package/dist/test/reconnectHelper.d.ts +48 -0
  202. package/dist/test/reconnectHelper.d.ts.map +1 -0
  203. package/dist/test/reconnectHelper.js +86 -0
  204. package/dist/test/reconnectHelper.js.map +1 -0
  205. package/dist/test/resetPendingSegmentsToOp.spec.d.ts +6 -0
  206. package/dist/test/resetPendingSegmentsToOp.spec.d.ts.map +1 -0
  207. package/dist/test/resetPendingSegmentsToOp.spec.js +218 -0
  208. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -0
  209. package/dist/test/revertibleFarm.spec.d.ts +6 -0
  210. package/dist/test/revertibleFarm.spec.d.ts.map +1 -0
  211. package/dist/test/revertibleFarm.spec.js +124 -0
  212. package/dist/test/revertibleFarm.spec.js.map +1 -0
  213. package/dist/test/revertibles.spec.d.ts +17 -0
  214. package/dist/test/revertibles.spec.d.ts.map +1 -0
  215. package/dist/test/revertibles.spec.js +385 -0
  216. package/dist/test/revertibles.spec.js.map +1 -0
  217. package/dist/test/segmentGroupCollection.spec.d.ts +6 -0
  218. package/dist/test/segmentGroupCollection.spec.d.ts.map +1 -0
  219. package/dist/test/segmentGroupCollection.spec.js +60 -0
  220. package/dist/test/segmentGroupCollection.spec.js.map +1 -0
  221. package/dist/test/snapshot.spec.d.ts +6 -0
  222. package/dist/test/snapshot.spec.d.ts.map +1 -0
  223. package/dist/test/snapshot.spec.js +178 -0
  224. package/dist/test/snapshot.spec.js.map +1 -0
  225. package/dist/test/snapshot.utils.d.ts +33 -0
  226. package/dist/test/snapshot.utils.d.ts.map +1 -0
  227. package/dist/test/snapshot.utils.js +109 -0
  228. package/dist/test/snapshot.utils.js.map +1 -0
  229. package/dist/test/snapshotlegacy.spec.d.ts +6 -0
  230. package/dist/test/snapshotlegacy.spec.d.ts.map +1 -0
  231. package/dist/test/snapshotlegacy.spec.js +139 -0
  232. package/dist/test/snapshotlegacy.spec.js.map +1 -0
  233. package/dist/test/sortedSegmentSet.spec.d.ts +6 -0
  234. package/dist/test/sortedSegmentSet.spec.d.ts.map +1 -0
  235. package/dist/test/sortedSegmentSet.spec.js +95 -0
  236. package/dist/test/sortedSegmentSet.spec.js.map +1 -0
  237. package/dist/test/testClient.d.ts +119 -0
  238. package/dist/test/testClient.d.ts.map +1 -0
  239. package/dist/test/testClient.js +439 -0
  240. package/dist/test/testClient.js.map +1 -0
  241. package/dist/test/testClientLogger.d.ts +44 -0
  242. package/dist/test/testClientLogger.d.ts.map +1 -0
  243. package/dist/test/testClientLogger.js +287 -0
  244. package/dist/test/testClientLogger.js.map +1 -0
  245. package/dist/test/testSerializer.d.ts +18 -0
  246. package/dist/test/testSerializer.d.ts.map +1 -0
  247. package/dist/test/testSerializer.js +33 -0
  248. package/dist/test/testSerializer.js.map +1 -0
  249. package/dist/test/testServer.d.ts +36 -0
  250. package/dist/test/testServer.d.ts.map +1 -0
  251. package/dist/test/testServer.js +138 -0
  252. package/dist/test/testServer.js.map +1 -0
  253. package/dist/test/testUtils.d.ts +69 -0
  254. package/dist/test/testUtils.d.ts.map +1 -0
  255. package/dist/test/testUtils.js +149 -0
  256. package/dist/test/testUtils.js.map +1 -0
  257. package/dist/test/text.d.ts +9 -0
  258. package/dist/test/text.d.ts.map +1 -0
  259. package/dist/test/text.js +76 -0
  260. package/dist/test/text.js.map +1 -0
  261. package/dist/test/tracking.spec.d.ts +6 -0
  262. package/dist/test/tracking.spec.d.ts.map +1 -0
  263. package/dist/test/tracking.spec.js +120 -0
  264. package/dist/test/tracking.spec.js.map +1 -0
  265. package/dist/test/wordUnitTests.d.ts +6 -0
  266. package/dist/test/wordUnitTests.d.ts.map +1 -0
  267. package/dist/test/wordUnitTests.js +172 -0
  268. package/dist/test/wordUnitTests.js.map +1 -0
  269. package/lib/{MergeTreeTextHelper.d.ts → MergeTreeTextHelper.d.mts} +3 -3
  270. package/lib/MergeTreeTextHelper.d.mts.map +1 -0
  271. package/lib/{MergeTreeTextHelper.js → MergeTreeTextHelper.mjs} +5 -10
  272. package/lib/MergeTreeTextHelper.mjs.map +1 -0
  273. package/lib/{attributionCollection.d.ts → attributionCollection.d.mts} +2 -2
  274. package/lib/attributionCollection.d.mts.map +1 -0
  275. package/lib/{attributionCollection.js → attributionCollection.mjs} +9 -14
  276. package/lib/attributionCollection.mjs.map +1 -0
  277. package/lib/{attributionPolicy.d.ts → attributionPolicy.d.mts} +2 -2
  278. package/lib/attributionPolicy.d.mts.map +1 -0
  279. package/lib/{attributionPolicy.js → attributionPolicy.mjs} +21 -27
  280. package/lib/attributionPolicy.mjs.map +1 -0
  281. package/lib/{client.d.ts → client.d.mts} +9 -16
  282. package/lib/client.d.mts.map +1 -0
  283. package/lib/{client.js → client.mjs} +101 -110
  284. package/lib/client.mjs.map +1 -0
  285. package/lib/collections/{index.d.ts → index.d.mts} +3 -3
  286. package/lib/collections/index.d.mts.map +1 -0
  287. package/lib/collections/index.mjs +7 -0
  288. package/lib/collections/index.mjs.map +1 -0
  289. package/lib/collections/{list.d.ts → list.d.mts} +1 -1
  290. package/lib/collections/list.d.mts.map +1 -0
  291. package/lib/collections/{list.js → list.mjs} +6 -11
  292. package/lib/collections/list.mjs.map +1 -0
  293. package/lib/collections/{rbTree.d.ts → rbTree.d.mts} +1 -1
  294. package/lib/collections/rbTree.d.mts.map +1 -0
  295. package/lib/collections/{rbTree.js → rbTree.mjs} +16 -20
  296. package/lib/collections/rbTree.mjs.map +1 -0
  297. package/lib/{constants.d.ts → constants.d.mts} +1 -1
  298. package/lib/constants.d.mts.map +1 -0
  299. package/lib/constants.mjs +32 -0
  300. package/lib/constants.mjs.map +1 -0
  301. package/lib/{endOfTreeSegment.d.ts → endOfTreeSegment.d.mts} +4 -4
  302. package/lib/endOfTreeSegment.d.mts.map +1 -0
  303. package/lib/{endOfTreeSegment.js → endOfTreeSegment.mjs} +13 -18
  304. package/lib/endOfTreeSegment.mjs.map +1 -0
  305. package/lib/{index.d.ts → index.d.mts} +21 -21
  306. package/lib/index.d.mts.map +1 -0
  307. package/lib/index.mjs +24 -0
  308. package/lib/index.mjs.map +1 -0
  309. package/lib/{localReference.d.ts → localReference.d.mts} +7 -7
  310. package/lib/localReference.d.mts.map +1 -0
  311. package/lib/{localReference.js → localReference.mjs} +38 -47
  312. package/lib/localReference.mjs.map +1 -0
  313. package/lib/{merge-tree-alpha.d.ts → merge-tree-alpha.d.mts} +27 -12
  314. package/lib/{merge-tree-beta.d.ts → merge-tree-beta.d.mts} +0 -16
  315. package/lib/{merge-tree-public.d.ts → merge-tree-public.d.mts} +0 -16
  316. package/lib/{merge-tree-untrimmed.d.ts → merge-tree-untrimmed.d.mts} +5 -29
  317. package/lib/{mergeTree.d.ts → mergeTree.d.mts} +12 -29
  318. package/lib/mergeTree.d.mts.map +1 -0
  319. package/lib/{mergeTree.js → mergeTree.mjs} +203 -340
  320. package/lib/mergeTree.mjs.map +1 -0
  321. package/lib/{mergeTreeDeltaCallback.d.ts → mergeTreeDeltaCallback.d.mts} +4 -8
  322. package/lib/mergeTreeDeltaCallback.d.mts.map +1 -0
  323. package/lib/{mergeTreeDeltaCallback.js → mergeTreeDeltaCallback.mjs} +2 -5
  324. package/lib/mergeTreeDeltaCallback.mjs.map +1 -0
  325. package/lib/{mergeTreeNodeWalk.d.ts → mergeTreeNodeWalk.d.mts} +2 -2
  326. package/lib/mergeTreeNodeWalk.d.mts.map +1 -0
  327. package/lib/{mergeTreeNodeWalk.js → mergeTreeNodeWalk.mjs} +14 -21
  328. package/lib/mergeTreeNodeWalk.mjs.map +1 -0
  329. package/lib/{mergeTreeNodes.d.ts → mergeTreeNodes.d.mts} +12 -12
  330. package/lib/mergeTreeNodes.d.mts.map +1 -0
  331. package/lib/{mergeTreeNodes.js → mergeTreeNodes.mjs} +60 -76
  332. package/lib/mergeTreeNodes.mjs.map +1 -0
  333. package/lib/{mergeTreeTracking.d.ts → mergeTreeTracking.d.mts} +3 -3
  334. package/lib/mergeTreeTracking.d.mts.map +1 -0
  335. package/lib/{mergeTreeTracking.js → mergeTreeTracking.mjs} +6 -13
  336. package/lib/mergeTreeTracking.mjs.map +1 -0
  337. package/lib/{opBuilder.d.ts → opBuilder.d.mts} +4 -4
  338. package/lib/opBuilder.d.mts.map +1 -0
  339. package/lib/{opBuilder.js → opBuilder.mjs} +15 -25
  340. package/lib/opBuilder.mjs.map +1 -0
  341. package/lib/{ops.d.ts → ops.d.mts} +2 -2
  342. package/lib/ops.d.mts.map +1 -0
  343. package/lib/{ops.js → ops.mjs} +5 -8
  344. package/lib/ops.mjs.map +1 -0
  345. package/lib/{ordinal.d.ts → ordinal.d.mts} +1 -1
  346. package/lib/ordinal.d.mts.map +1 -0
  347. package/lib/{ordinal.js → ordinal.mjs} +4 -9
  348. package/lib/ordinal.mjs.map +1 -0
  349. package/lib/{partialLengths.d.ts → partialLengths.d.mts} +4 -4
  350. package/lib/partialLengths.d.mts.map +1 -0
  351. package/lib/{partialLengths.js → partialLengths.mjs} +38 -46
  352. package/lib/partialLengths.mjs.map +1 -0
  353. package/lib/{properties.d.ts → properties.d.mts} +1 -1
  354. package/lib/properties.d.mts.map +1 -0
  355. package/lib/{properties.js → properties.mjs} +7 -16
  356. package/lib/properties.mjs.map +1 -0
  357. package/lib/{referencePositions.d.ts → referencePositions.d.mts} +5 -5
  358. package/lib/referencePositions.d.mts.map +1 -0
  359. package/lib/referencePositions.mjs +70 -0
  360. package/lib/referencePositions.mjs.map +1 -0
  361. package/lib/{revertibles.d.ts → revertibles.d.mts} +12 -12
  362. package/lib/revertibles.d.mts.map +1 -0
  363. package/lib/{revertibles.js → revertibles.mjs} +60 -67
  364. package/lib/revertibles.mjs.map +1 -0
  365. package/lib/{segmentGroupCollection.d.ts → segmentGroupCollection.d.mts} +2 -2
  366. package/lib/segmentGroupCollection.d.mts.map +1 -0
  367. package/lib/{segmentGroupCollection.js → segmentGroupCollection.mjs} +5 -9
  368. package/lib/segmentGroupCollection.mjs.map +1 -0
  369. package/lib/{segmentPropertiesManager.d.ts → segmentPropertiesManager.d.mts} +3 -3
  370. package/lib/segmentPropertiesManager.d.mts.map +1 -0
  371. package/lib/{segmentPropertiesManager.js → segmentPropertiesManager.mjs} +14 -20
  372. package/lib/{segmentPropertiesManager.js.map → segmentPropertiesManager.mjs.map} +1 -1
  373. package/lib/{snapshotChunks.d.ts → snapshotChunks.d.mts} +4 -4
  374. package/lib/snapshotChunks.d.mts.map +1 -0
  375. package/lib/{snapshotChunks.js → snapshotChunks.mjs} +10 -17
  376. package/lib/snapshotChunks.mjs.map +1 -0
  377. package/lib/{snapshotLoader.d.ts → snapshotLoader.d.mts} +3 -3
  378. package/lib/snapshotLoader.d.mts.map +1 -0
  379. package/lib/{snapshotLoader.js → snapshotLoader.mjs} +33 -38
  380. package/lib/snapshotLoader.mjs.map +1 -0
  381. package/lib/{snapshotV1.d.ts → snapshotV1.d.mts} +4 -4
  382. package/lib/snapshotV1.d.mts.map +1 -0
  383. package/lib/{snapshotV1.js → snapshotV1.mjs} +28 -32
  384. package/lib/snapshotV1.mjs.map +1 -0
  385. package/lib/{snapshotlegacy.d.ts → snapshotlegacy.d.mts} +3 -3
  386. package/lib/snapshotlegacy.d.mts.map +1 -0
  387. package/lib/{snapshotlegacy.js → snapshotlegacy.mjs} +21 -26
  388. package/lib/snapshotlegacy.mjs.map +1 -0
  389. package/lib/{sortedSegmentSet.d.ts → sortedSegmentSet.d.mts} +4 -4
  390. package/lib/sortedSegmentSet.d.mts.map +1 -0
  391. package/lib/{sortedSegmentSet.js → sortedSegmentSet.mjs} +3 -8
  392. package/lib/sortedSegmentSet.mjs.map +1 -0
  393. package/lib/{sortedSet.d.ts → sortedSet.d.mts} +1 -1
  394. package/lib/sortedSet.d.mts.map +1 -0
  395. package/lib/{sortedSet.js → sortedSet.mjs} +2 -6
  396. package/lib/sortedSet.mjs.map +1 -0
  397. package/lib/{textSegment.d.ts → textSegment.d.mts} +4 -4
  398. package/lib/textSegment.d.mts.map +1 -0
  399. package/lib/{textSegment.js → textSegment.mjs} +8 -12
  400. package/lib/textSegment.mjs.map +1 -0
  401. package/lib/{zamboni.d.ts → zamboni.d.mts} +3 -3
  402. package/lib/zamboni.d.mts.map +1 -0
  403. package/lib/{zamboni.js → zamboni.mjs} +22 -28
  404. package/lib/zamboni.mjs.map +1 -0
  405. package/package.json +95 -164
  406. package/src/client.ts +0 -8
  407. package/src/mergeTree.ts +0 -226
  408. package/src/ops.ts +1 -1
  409. package/src/revertibles.ts +4 -4
  410. package/lib/MergeTreeTextHelper.d.ts.map +0 -1
  411. package/lib/MergeTreeTextHelper.js.map +0 -1
  412. package/lib/attributionCollection.d.ts.map +0 -1
  413. package/lib/attributionCollection.js.map +0 -1
  414. package/lib/attributionPolicy.d.ts.map +0 -1
  415. package/lib/attributionPolicy.js.map +0 -1
  416. package/lib/client.d.ts.map +0 -1
  417. package/lib/client.js.map +0 -1
  418. package/lib/collections/index.d.ts.map +0 -1
  419. package/lib/collections/index.js +0 -14
  420. package/lib/collections/index.js.map +0 -1
  421. package/lib/collections/list.d.ts.map +0 -1
  422. package/lib/collections/list.js.map +0 -1
  423. package/lib/collections/rbTree.d.ts.map +0 -1
  424. package/lib/collections/rbTree.js.map +0 -1
  425. package/lib/constants.d.ts.map +0 -1
  426. package/lib/constants.js +0 -35
  427. package/lib/constants.js.map +0 -1
  428. package/lib/endOfTreeSegment.d.ts.map +0 -1
  429. package/lib/endOfTreeSegment.js.map +0 -1
  430. package/lib/index.d.ts.map +0 -1
  431. package/lib/index.js +0 -80
  432. package/lib/index.js.map +0 -1
  433. package/lib/localReference.d.ts.map +0 -1
  434. package/lib/localReference.js.map +0 -1
  435. package/lib/mergeTree.d.ts.map +0 -1
  436. package/lib/mergeTree.js.map +0 -1
  437. package/lib/mergeTreeDeltaCallback.d.ts.map +0 -1
  438. package/lib/mergeTreeDeltaCallback.js.map +0 -1
  439. package/lib/mergeTreeNodeWalk.d.ts.map +0 -1
  440. package/lib/mergeTreeNodeWalk.js.map +0 -1
  441. package/lib/mergeTreeNodes.d.ts.map +0 -1
  442. package/lib/mergeTreeNodes.js.map +0 -1
  443. package/lib/mergeTreeTracking.d.ts.map +0 -1
  444. package/lib/mergeTreeTracking.js.map +0 -1
  445. package/lib/opBuilder.d.ts.map +0 -1
  446. package/lib/opBuilder.js.map +0 -1
  447. package/lib/ops.d.ts.map +0 -1
  448. package/lib/ops.js.map +0 -1
  449. package/lib/ordinal.d.ts.map +0 -1
  450. package/lib/ordinal.js.map +0 -1
  451. package/lib/partialLengths.d.ts.map +0 -1
  452. package/lib/partialLengths.js.map +0 -1
  453. package/lib/properties.d.ts.map +0 -1
  454. package/lib/properties.js.map +0 -1
  455. package/lib/referencePositions.d.ts.map +0 -1
  456. package/lib/referencePositions.js +0 -80
  457. package/lib/referencePositions.js.map +0 -1
  458. package/lib/revertibles.d.ts.map +0 -1
  459. package/lib/revertibles.js.map +0 -1
  460. package/lib/segmentGroupCollection.d.ts.map +0 -1
  461. package/lib/segmentGroupCollection.js.map +0 -1
  462. package/lib/segmentPropertiesManager.d.ts.map +0 -1
  463. package/lib/snapshotChunks.d.ts.map +0 -1
  464. package/lib/snapshotChunks.js.map +0 -1
  465. package/lib/snapshotLoader.d.ts.map +0 -1
  466. package/lib/snapshotLoader.js.map +0 -1
  467. package/lib/snapshotV1.d.ts.map +0 -1
  468. package/lib/snapshotV1.js.map +0 -1
  469. package/lib/snapshotlegacy.d.ts.map +0 -1
  470. package/lib/snapshotlegacy.js.map +0 -1
  471. package/lib/sortedSegmentSet.d.ts.map +0 -1
  472. package/lib/sortedSegmentSet.js.map +0 -1
  473. package/lib/sortedSet.d.ts.map +0 -1
  474. package/lib/sortedSet.js.map +0 -1
  475. package/lib/textSegment.d.ts.map +0 -1
  476. package/lib/textSegment.js.map +0 -1
  477. package/lib/zamboni.d.ts.map +0 -1
  478. package/lib/zamboni.js.map +0 -1
  479. package/merge-tree.test-files.tar +0 -0
  480. package/src/mergeTreeExample1.pdf +0 -0
  481. package/tsconfig.esnext.json +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.mjs","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { IFluidHandle, type IEventThisPlaceHolder } from \"@fluidframework/core-interfaces\";\nimport { IFluidSerializer } from \"@fluidframework/shared-object-base\";\nimport { ISequencedDocumentMessage, MessageType } from \"@fluidframework/protocol-definitions\";\nimport {\n\tIFluidDataStoreRuntime,\n\tIChannelStorageService,\n} from \"@fluidframework/datastore-definitions\";\nimport { ISummaryTreeWithStats } from \"@fluidframework/runtime-definitions\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils\";\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { ITelemetryLoggerExt, LoggingError, UsageError } from \"@fluidframework/telemetry-utils\";\nimport { DoublyLinkedList, RedBlackTree } from \"./collections\";\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants\";\nimport { LocalReferencePosition, SlidingPreference } from \"./localReference\";\nimport {\n\t// eslint-disable-next-line import/no-deprecated\n\tCollaborationWindow,\n\tcompareStrings,\n\tIMoveInfo,\n\tIMergeLeaf,\n\tISegment,\n\tISegmentAction,\n\tMarker,\n\t// eslint-disable-next-line import/no-deprecated\n\tSegmentGroup,\n} from \"./mergeTreeNodes\";\nimport {\n\tcreateAnnotateMarkerOp,\n\tcreateAnnotateRangeOp,\n\t// eslint-disable-next-line import/no-deprecated\n\tcreateGroupOp,\n\tcreateInsertSegmentOp,\n\tcreateObliterateRangeOp,\n\tcreateRemoveRangeOp,\n} from \"./opBuilder\";\nimport {\n\tIJSONSegment,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeDeltaOp,\n\t// eslint-disable-next-line import/no-deprecated\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeOp,\n\tIRelativePosition,\n\tMergeTreeDeltaType,\n\tReferenceType,\n\t// eslint-disable-next-line import/no-deprecated\n\tIMergeTreeObliterateMsg,\n} from \"./ops\";\nimport { PropertySet } from \"./properties\";\nimport { SnapshotLegacy } from \"./snapshotlegacy\";\nimport { SnapshotLoader } from \"./snapshotLoader\";\n// eslint-disable-next-line import/no-deprecated\nimport { IMergeTreeTextHelper } from \"./textSegment\";\nimport { SnapshotV1 } from \"./snapshotV1\";\nimport { ReferencePosition, DetachedReferencePosition } from \"./referencePositions\";\nimport { IMergeTreeOptions, MergeTree } from \"./mergeTree\";\nimport { MergeTreeTextHelper } from \"./MergeTreeTextHelper\";\nimport { walkAllChildSegments } from \"./mergeTreeNodeWalk\";\nimport {\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeMaintenanceCallbackArgs,\n} from \"./index\";\n\ntype IMergeTreeDeltaRemoteOpArgs = Omit<IMergeTreeDeltaOpArgs, \"sequencedMessage\"> &\n\tRequired<Pick<IMergeTreeDeltaOpArgs, \"sequencedMessage\">>;\n\nfunction removeMoveInfo(segment: Partial<IMoveInfo>): void {\n\tdelete segment.movedSeq;\n\tdelete segment.movedSeqs;\n\tdelete segment.localMovedSeq;\n\tdelete segment.movedClientIds;\n\tdelete segment.wasMovedOnInsert;\n}\n\n/**\n * A range [start, end)\n * @internal\n */\nexport interface IIntegerRange {\n\tstart: number;\n\tend: number;\n}\n\n/**\n * Emitted before this client's merge-tree normalizes its segments on reconnect, potentially\n * ordering them. Useful for DDS-like consumers built atop the merge-tree to compute any information\n * they need for rebasing their ops on reconnection.\n * @alpha\n */\nexport interface IClientEvents {\n\t(event: \"normalize\", listener: (target: IEventThisPlaceHolder) => void): void;\n\t(\n\t\tevent: \"delta\",\n\t\tlistener: (\n\t\t\topArgs: IMergeTreeDeltaOpArgs,\n\t\t\tdeltaArgs: IMergeTreeDeltaCallbackArgs,\n\t\t\ttarget: IEventThisPlaceHolder,\n\t\t) => void,\n\t): void;\n\t(\n\t\tevent: \"maintenance\",\n\t\tlistener: (\n\t\t\targs: IMergeTreeMaintenanceCallbackArgs,\n\t\t\tdeltaArgs: IMergeTreeDeltaOpArgs | undefined,\n\t\t\ttarget: IEventThisPlaceHolder,\n\t\t) => void,\n\t): void;\n}\n\n/**\n * @deprecated This functionality was not meant to be exported and will be removed in a future release\n * @alpha\n */\nexport class Client extends TypedEventEmitter<IClientEvents> {\n\tpublic longClientId: string | undefined;\n\n\tprivate readonly _mergeTree: MergeTree;\n\n\tprivate readonly clientNameToIds = new RedBlackTree<string, number>(compareStrings);\n\tprivate readonly shortClientIdMap: string[] = [];\n\n\tconstructor(\n\t\t// Passing this callback would be unnecessary if Client were merged with SharedSegmentSequence\n\t\tpublic readonly specToSegment: (spec: IJSONSegment) => ISegment,\n\t\tpublic readonly logger: ITelemetryLoggerExt,\n\t\toptions?: IMergeTreeOptions & PropertySet,\n\t) {\n\t\tsuper();\n\t\tthis._mergeTree = new MergeTree(options);\n\t\tthis._mergeTree.mergeTreeDeltaCallback = (opArgs, deltaArgs) => {\n\t\t\tthis.emit(\"delta\", opArgs, deltaArgs, this);\n\t\t};\n\t\tthis._mergeTree.mergeTreeMaintenanceCallback = (args, opArgs) => {\n\t\t\tthis.emit(\"maintenance\", args, opArgs, this);\n\t\t};\n\n\t\tif (options?.attribution?.track) {\n\t\t\tconst policy = this._mergeTree?.attributionPolicy;\n\t\t\tif (policy === undefined) {\n\t\t\t\tthrow new UsageError(\n\t\t\t\t\t\"Attribution policy must be provided when attribution tracking is requested.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tpolicy.attach(this);\n\t\t}\n\t}\n\n\t/**\n\t * The merge tree maintains a queue of segment groups for each local operation.\n\t * These segment groups track segments modified by an operation.\n\t * This method peeks the tail of that queue, and returns the segments groups there.\n\t * It is used to get the segment group(s) for the previous operations.\n\t * @param count - The number segment groups to get peek from the tail of the queue. Default 1.\n\t */\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic peekPendingSegmentGroups(count: number = 1): SegmentGroup | SegmentGroup[] | undefined {\n\t\tconst pending = this._mergeTree.pendingSegments;\n\t\tlet node = pending?.last;\n\t\tif (count === 1 || pending === undefined) {\n\t\t\treturn node?.data;\n\t\t}\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tconst taken: SegmentGroup[] = new Array(Math.min(count, pending.length));\n\t\tfor (let i = taken.length - 1; i >= 0; i--) {\n\t\t\ttaken[i] = node!.data;\n\t\t\tnode = node!.prev;\n\t\t}\n\t\treturn taken;\n\t}\n\n\t/**\n\t * Annotates the markers with the provided properties\n\t * @param marker - The marker to annotate\n\t * @param props - The properties to annotate the marker with\n\t * @returns The annotate op if valid, otherwise undefined\n\t */\n\tpublic annotateMarker(marker: Marker, props: PropertySet): IMergeTreeAnnotateMsg | undefined {\n\t\tconst annotateOp = createAnnotateMarkerOp(marker, props)!;\n\t\tthis.applyAnnotateRangeOp({ op: annotateOp });\n\t\treturn annotateOp;\n\t}\n\n\t/**\n\t * Annotates the range with the provided properties\n\t * @param start - The inclusive start position of the range to annotate\n\t * @param end - The exclusive end position of the range to annotate\n\t * @param props - The properties to annotate the range with\n\t * @returns The annotate op if valid, otherwise undefined\n\t */\n\tpublic annotateRangeLocal(\n\t\tstart: number,\n\t\tend: number,\n\t\tprops: PropertySet,\n\t): IMergeTreeAnnotateMsg | undefined {\n\t\tconst annotateOp = createAnnotateRangeOp(start, end, props);\n\t\tthis.applyAnnotateRangeOp({ op: annotateOp });\n\t\treturn annotateOp;\n\t}\n\n\t/**\n\t * Removes the range\n\t *\n\t * @param start - The inclusive start of the range to remove\n\t * @param end - The exclusive end of the range to remove\n\t */\n\tpublic removeRangeLocal(start: number, end: number): IMergeTreeRemoveMsg {\n\t\tconst removeOp = createRemoveRangeOp(start, end);\n\t\tthis.applyRemoveRangeOp({ op: removeOp });\n\t\treturn removeOp;\n\t}\n\n\t/**\n\t * Obliterates the range. This is similar to removing the range, but also\n\t * includes any concurrently inserted content.\n\t *\n\t * @param start - The inclusive start of the range to obliterate\n\t * @param end - The exclusive end of the range to obliterate\n\t */\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic obliterateRangeLocal(start: number, end: number): IMergeTreeObliterateMsg {\n\t\tconst obliterateOp = createObliterateRangeOp(start, end);\n\t\tthis.applyObliterateRangeOp({ op: obliterateOp });\n\t\treturn obliterateOp;\n\t}\n\n\t/**\n\t * @param pos - The position to insert the segment at\n\t * @param segment - The segment to insert\n\t */\n\tpublic insertSegmentLocal(pos: number, segment: ISegment): IMergeTreeInsertMsg | undefined {\n\t\tif (segment.cachedLength <= 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst insertOp = createInsertSegmentOp(pos, segment);\n\t\tif (this.applyInsertOp({ op: insertOp })) {\n\t\t\treturn insertOp;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * @param refPos - The reference position to insert the segment at\n\t * @param segment - The segment to insert\n\t */\n\tpublic insertAtReferencePositionLocal(\n\t\trefPos: ReferencePosition,\n\t\tsegment: ISegment,\n\t): IMergeTreeInsertMsg | undefined {\n\t\tconst pos = this._mergeTree.referencePositionToLocalPosition(\n\t\t\trefPos,\n\t\t\tthis.getCurrentSeq(),\n\t\t\tthis.getClientId(),\n\t\t);\n\n\t\tif (pos === DetachedReferencePosition) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst op = createInsertSegmentOp(pos, segment);\n\n\t\tif (this.applyInsertOp({ op })) {\n\t\t\treturn op;\n\t\t}\n\t}\n\n\tpublic walkSegments<TClientData>(\n\t\thandler: ISegmentAction<TClientData>,\n\t\tstart: number | undefined,\n\t\tend: number | undefined,\n\t\taccum: TClientData,\n\t\tsplitRange?: boolean,\n\t): void;\n\tpublic walkSegments<undefined>(\n\t\thandler: ISegmentAction<undefined>,\n\t\tstart?: number,\n\t\tend?: number,\n\t\taccum?: undefined,\n\t\tsplitRange?: boolean,\n\t): void;\n\tpublic walkSegments<TClientData>(\n\t\thandler: ISegmentAction<TClientData>,\n\t\tstart: number | undefined,\n\t\tend: number | undefined,\n\t\taccum: TClientData,\n\t\tsplitRange: boolean = false,\n\t): void {\n\t\tthis._mergeTree.mapRange(\n\t\t\thandler,\n\t\t\tthis.getCurrentSeq(),\n\t\t\tthis.getClientId(),\n\t\t\taccum,\n\t\t\tstart,\n\t\t\tend,\n\t\t\tsplitRange,\n\t\t);\n\t}\n\n\tprotected walkAllSegments<TClientData>(\n\t\taction: (segment: ISegment, accum?: TClientData) => boolean,\n\t\taccum?: TClientData,\n\t): boolean {\n\t\treturn walkAllChildSegments(\n\t\t\tthis._mergeTree.root,\n\t\t\taccum === undefined ? action : (seg) => action(seg, accum),\n\t\t);\n\t}\n\n\t/**\n\t * Serializes the data required for garbage collection. The IFluidHandles stored in all segments that haven't\n\t * been removed represent routes to other objects. We serialize the data in these segments using the passed in\n\t * serializer which keeps track of all serialized handles.\n\t */\n\tpublic serializeGCData(\n\t\thandle: IFluidHandle,\n\t\thandleCollectingSerializer: IFluidSerializer,\n\t): void {\n\t\tlet localInserts = 0;\n\t\tlet localRemoves = 0;\n\t\twalkAllChildSegments(this._mergeTree.root, (seg) => {\n\t\t\tif (seg.seq === UnassignedSequenceNumber) {\n\t\t\t\tlocalInserts++;\n\t\t\t}\n\t\t\tif (seg.removedSeq === UnassignedSequenceNumber) {\n\t\t\t\tlocalRemoves++;\n\t\t\t}\n\t\t\t// Only serialize segments that have not been removed.\n\t\t\tif (seg.removedSeq === undefined) {\n\t\t\t\thandleCollectingSerializer.stringify(seg.clone().toJSONObject(), handle);\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tif (localInserts > 0 || localRemoves > 0) {\n\t\t\tthis.logger.sendErrorEvent({\n\t\t\t\teventName: \"LocalEditsInProcessGCData\",\n\t\t\t\tlocalInserts,\n\t\t\t\tlocalRemoves,\n\t\t\t});\n\t\t}\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic getCollabWindow(): CollaborationWindow {\n\t\treturn this._mergeTree.collabWindow;\n\t}\n\n\t/**\n\t * Returns the current position of a segment, and -1 if the segment\n\t * does not exist in this merge tree\n\t * @param segment - The segment to get the position of\n\t */\n\tpublic getPosition(segment: ISegment | undefined, localSeq?: number): number {\n\t\tconst mergeSegment: IMergeLeaf | undefined = segment;\n\t\tif (mergeSegment?.parent === undefined) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._mergeTree.getPosition(\n\t\t\tmergeSegment,\n\t\t\tthis.getCurrentSeq(),\n\t\t\tthis.getClientId(),\n\t\t\tlocalSeq,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a `LocalReferencePosition` on this client. If the refType does not include ReferenceType.Transient,\n\t * the returned reference will be added to the localRefs on the provided segment.\n\t * @param segment - Segment to add the local reference on\n\t * @param offset - Offset on the segment at which to place the local reference\n\t * @param refType - ReferenceType for the created local reference\n\t * @param properties - PropertySet to place on the created local reference\n\t * @param canSlideToEndpoint - Whether or not the created local reference can\n\t * slide onto one of the special endpoint segments denoting the position\n\t * before the start of or after the end of the tree\n\t */\n\tpublic createLocalReferencePosition(\n\t\tsegment: ISegment | \"start\" | \"end\",\n\t\toffset: number | undefined,\n\t\trefType: ReferenceType,\n\t\tproperties: PropertySet | undefined,\n\t\tslidingPreference?: SlidingPreference,\n\t\tcanSlideToEndpoint?: boolean,\n\t): LocalReferencePosition {\n\t\treturn this._mergeTree.createLocalReferencePosition(\n\t\t\tsegment,\n\t\t\toffset ?? 0,\n\t\t\trefType,\n\t\t\tproperties,\n\t\t\tslidingPreference,\n\t\t\tcanSlideToEndpoint,\n\t\t);\n\t}\n\n\t/**\n\t * Removes a `LocalReferencePosition` from this client.\n\t */\n\tpublic removeLocalReferencePosition(lref: LocalReferencePosition) {\n\t\treturn this._mergeTree.removeLocalReferencePosition(lref);\n\t}\n\n\t/**\n\t * Resolves a `ReferencePosition` into a character position using this client's perspective.\n\t */\n\tpublic localReferencePositionToPosition(lref: ReferencePosition): number {\n\t\treturn this._mergeTree.referencePositionToLocalPosition(lref);\n\t}\n\n\t/**\n\t * Given a position specified relative to a marker id, lookup the marker\n\t * and convert the position to a character position.\n\t * @param relativePos - Id of marker (may be indirect) and whether position is before or after marker.\n\t */\n\tpublic posFromRelativePos(relativePos: IRelativePosition) {\n\t\treturn this._mergeTree.posFromRelativePos(relativePos);\n\t}\n\n\tpublic getMarkerFromId(id: string): ISegment | undefined {\n\t\treturn this._mergeTree.getMarkerFromId(id);\n\t}\n\n\t/**\n\t * Revert an op\n\t */\n\tpublic rollback?(op: any, localOpMetadata: unknown) {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis._mergeTree.rollback(op as IMergeTreeDeltaOp, localOpMetadata as SegmentGroup);\n\t}\n\n\tprivate applyObliterateRangeOp(opArgs: IMergeTreeDeltaOpArgs): void {\n\t\tassert(\n\t\t\topArgs.op.type === MergeTreeDeltaType.OBLITERATE,\n\t\t\t0x866 /* Unexpected op type on range obliterate! */,\n\t\t);\n\t\tconst op = opArgs.op;\n\t\tconst clientArgs = this.getClientSequenceArgs(opArgs);\n\t\tconst range = this.getValidOpRange(op, clientArgs);\n\n\t\tthis._mergeTree.obliterateRange(\n\t\t\trange.start,\n\t\t\trange.end,\n\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\tclientArgs.clientId,\n\t\t\tclientArgs.sequenceNumber,\n\t\t\tfalse,\n\t\t\topArgs,\n\t\t);\n\t}\n\n\t/**\n\t * Performs the remove based on the provided op\n\t * @param opArgs - The ops args for the op\n\t */\n\tprivate applyRemoveRangeOp(opArgs: IMergeTreeDeltaOpArgs): void {\n\t\tassert(\n\t\t\topArgs.op.type === MergeTreeDeltaType.REMOVE,\n\t\t\t0x02d /* \"Unexpected op type on range remove!\" */,\n\t\t);\n\t\tconst op = opArgs.op;\n\t\tconst clientArgs = this.getClientSequenceArgs(opArgs);\n\t\tconst range = this.getValidOpRange(op, clientArgs);\n\n\t\tthis._mergeTree.markRangeRemoved(\n\t\t\trange.start,\n\t\t\trange.end,\n\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\tclientArgs.clientId,\n\t\t\tclientArgs.sequenceNumber,\n\t\t\tfalse,\n\t\t\topArgs,\n\t\t);\n\t}\n\n\t/**\n\t * Performs the annotate based on the provided op\n\t * @param opArgs - The ops args for the op\n\t */\n\tprivate applyAnnotateRangeOp(opArgs: IMergeTreeDeltaOpArgs): void {\n\t\tassert(\n\t\t\topArgs.op.type === MergeTreeDeltaType.ANNOTATE,\n\t\t\t0x02e /* \"Unexpected op type on range annotate!\" */,\n\t\t);\n\t\tconst op = opArgs.op;\n\t\tconst clientArgs = this.getClientSequenceArgs(opArgs);\n\t\tconst range = this.getValidOpRange(op, clientArgs);\n\n\t\tthis._mergeTree.annotateRange(\n\t\t\trange.start,\n\t\t\trange.end,\n\t\t\top.props,\n\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\tclientArgs.clientId,\n\t\t\tclientArgs.sequenceNumber,\n\t\t\topArgs,\n\t\t);\n\t}\n\n\t/**\n\t * Performs the insert based on the provided op\n\t * @param opArgs - The ops args for the op\n\t * @returns True if the insert was applied. False if it could not be.\n\t */\n\tprivate applyInsertOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n\t\tassert(\n\t\t\topArgs.op.type === MergeTreeDeltaType.INSERT,\n\t\t\t0x02f /* \"Unexpected op type on range insert!\" */,\n\t\t);\n\t\tconst op = opArgs.op;\n\t\tconst clientArgs = this.getClientSequenceArgs(opArgs);\n\t\tconst range = this.getValidOpRange(op, clientArgs);\n\n\t\tlet segments: ISegment[] | undefined;\n\t\tif (op.seg) {\n\t\t\tsegments = [this.specToSegment(op.seg)];\n\t\t}\n\n\t\tif (!segments || segments.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._mergeTree.insertSegments(\n\t\t\trange.start,\n\t\t\tsegments,\n\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\tclientArgs.clientId,\n\t\t\tclientArgs.sequenceNumber,\n\t\t\topArgs,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns a valid range for the op, or undefined\n\t * @param op - The op to generate the range for\n\t * @param clientArgs - The client args for the op\n\t */\n\tprivate getValidOpRange(\n\t\top:\n\t\t\t| IMergeTreeAnnotateMsg\n\t\t\t| IMergeTreeInsertMsg\n\t\t\t| IMergeTreeRemoveMsg\n\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\t| IMergeTreeObliterateMsg,\n\t\tclientArgs: IMergeTreeClientSequenceArgs,\n\t): IIntegerRange {\n\t\tlet start: number | undefined = op.pos1;\n\t\tif (start === undefined && op.relativePos1) {\n\t\t\tstart = this._mergeTree.posFromRelativePos(\n\t\t\t\top.relativePos1,\n\t\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\t\tclientArgs.clientId,\n\t\t\t);\n\t\t}\n\n\t\tlet end: number | undefined = op.pos2;\n\t\tif (end === undefined && op.relativePos2) {\n\t\t\tend = this._mergeTree.posFromRelativePos(\n\t\t\t\top.relativePos2,\n\t\t\t\tclientArgs.referenceSequenceNumber,\n\t\t\t\tclientArgs.clientId,\n\t\t\t);\n\t\t}\n\n\t\t// Validate if local op\n\t\tif (clientArgs.clientId === this.getClientId()) {\n\t\t\tconst length = this.getLength();\n\n\t\t\tconst invalidPositions: string[] = [];\n\n\t\t\t// Validate start position\n\t\t\t//\n\t\t\tif (\n\t\t\t\tstart === undefined ||\n\t\t\t\tstart < 0 ||\n\t\t\t\tstart > length ||\n\t\t\t\t(start === length && op.type !== MergeTreeDeltaType.INSERT)\n\t\t\t) {\n\t\t\t\tinvalidPositions.push(\"start\");\n\t\t\t}\n\t\t\t// Validate end if not insert, or insert has end\n\t\t\t//\n\t\t\tif (op.type !== MergeTreeDeltaType.INSERT || end !== undefined) {\n\t\t\t\tif (end === undefined || end <= start!) {\n\t\t\t\t\tinvalidPositions.push(\"end\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (op.type === MergeTreeDeltaType.OBLITERATE && end !== undefined && end > length) {\n\t\t\t\tinvalidPositions.push(\"end\");\n\t\t\t}\n\n\t\t\tif (invalidPositions.length > 0) {\n\t\t\t\tthrow new LoggingError(\"RangeOutOfBounds\", {\n\t\t\t\t\tusageError: true,\n\t\t\t\t\tend,\n\t\t\t\t\tinvalidPositions: invalidPositions.toString(),\n\t\t\t\t\tlength,\n\t\t\t\t\topPos1: op.pos1,\n\t\t\t\t\topPos1Relative: op.relativePos1 !== undefined,\n\t\t\t\t\topPos2: op.pos2,\n\t\t\t\t\topPos2Relative: op.relativePos2 !== undefined,\n\t\t\t\t\topType: op.type,\n\t\t\t\t\tstart,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// start and end are guaranteed to be non-null here, otherwise we throw above.\n\t\treturn { start: start!, end: end! };\n\t}\n\n\t/**\n\t * Gets the client args from the op if remote, otherwise uses the local clients info\n\t * @param sequencedMessage - The sequencedMessage to get the client sequence args for\n\t */\n\tprivate getClientSequenceArgsForMessage(\n\t\tsequencedMessage:\n\t\t\t| ISequencedDocumentMessage\n\t\t\t| Pick<ISequencedDocumentMessage, \"referenceSequenceNumber\" | \"clientId\">\n\t\t\t| undefined,\n\t) {\n\t\t// If there this no sequenced message, then the op is local\n\t\t// and unacked, so use this clients sequenced args\n\t\t//\n\t\tif (!sequencedMessage) {\n\t\t\tconst segWindow = this.getCollabWindow();\n\t\t\treturn {\n\t\t\t\tclientId: segWindow.clientId,\n\t\t\t\treferenceSequenceNumber: segWindow.currentSeq,\n\t\t\t\tsequenceNumber: this.getLocalSequenceNumber(),\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tclientId: this.getOrAddShortClientIdFromMessage(sequencedMessage),\n\t\t\t\treferenceSequenceNumber: sequencedMessage.referenceSequenceNumber,\n\t\t\t\t// Note: return value satisfies overload signatures despite the cast, as if input argument doesn't contain sequenceNumber,\n\t\t\t\t// return value isn't expected to have it either.\n\t\t\t\tsequenceNumber: (sequencedMessage as ISequencedDocumentMessage).sequenceNumber,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Gets the client args from the op if remote, otherwise uses the local clients info\n\t * @param opArgs - The op arg to get the client sequence args for\n\t */\n\tprivate getClientSequenceArgs(opArgs: IMergeTreeDeltaOpArgs): IMergeTreeClientSequenceArgs {\n\t\treturn this.getClientSequenceArgsForMessage(opArgs.sequencedMessage);\n\t}\n\n\tprivate ackPendingSegment(opArgs: IMergeTreeDeltaRemoteOpArgs) {\n\t\tif (opArgs.op.type === MergeTreeDeltaType.GROUP) {\n\t\t\tfor (const memberOp of opArgs.op.ops) {\n\t\t\t\tthis._mergeTree.ackPendingSegment({\n\t\t\t\t\tgroupOp: opArgs.op,\n\t\t\t\t\top: memberOp,\n\t\t\t\t\tsequencedMessage: opArgs.sequencedMessage,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthis._mergeTree.ackPendingSegment(opArgs);\n\t\t}\n\t}\n\n\tgetOrAddShortClientId(longClientId: string) {\n\t\tif (!this.clientNameToIds.get(longClientId)) {\n\t\t\tthis.addLongClientId(longClientId);\n\t\t}\n\t\treturn this.getShortClientId(longClientId);\n\t}\n\n\tprotected getShortClientId(longClientId: string) {\n\t\treturn this.clientNameToIds.get(longClientId)!.data;\n\t}\n\n\tgetLongClientId(shortClientId: number) {\n\t\treturn shortClientId >= 0 ? this.shortClientIdMap[shortClientId] : \"original\";\n\t}\n\n\taddLongClientId(longClientId: string) {\n\t\tthis.clientNameToIds.put(longClientId, this.shortClientIdMap.length);\n\t\tthis.shortClientIdMap.push(longClientId);\n\t}\n\n\tprivate getOrAddShortClientIdFromMessage(msg: Pick<ISequencedDocumentMessage, \"clientId\">) {\n\t\treturn this.getOrAddShortClientId(msg.clientId ?? \"server\");\n\t}\n\n\t/**\n\t * During reconnect, we must find the positions to pending segments\n\t * relative to other pending segments. This methods computes that\n\t * position relative to a localSeq. Pending segments above the localSeq\n\t * will be ignored.\n\t *\n\t * @param segment - The segment to find the position for\n\t * @param localSeq - The localSeq to find the position of the segment at\n\t */\n\tpublic findReconnectionPosition(segment: ISegment, localSeq: number) {\n\t\tassert(\n\t\t\tlocalSeq <= this._mergeTree.collabWindow.localSeq,\n\t\t\t0x032 /* \"localSeq greater than collab window\" */,\n\t\t);\n\t\tconst { currentSeq, clientId } = this.getCollabWindow();\n\t\treturn this._mergeTree.getPosition(segment, currentSeq, clientId, localSeq);\n\t}\n\n\tprivate resetPendingDeltaToOps(\n\t\tresetOp: IMergeTreeDeltaOp,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tsegmentGroup: SegmentGroup,\n\t): IMergeTreeDeltaOp[] {\n\t\tassert(!!segmentGroup, 0x033 /* \"Segment group undefined\" */);\n\t\tconst NACKedSegmentGroup = this.pendingRebase?.shift()?.data;\n\t\tassert(\n\t\t\tsegmentGroup === NACKedSegmentGroup,\n\t\t\t0x034 /* \"Segment group not at head of pending rebase queue\" */,\n\t\t);\n\t\tif (this.pendingRebase?.empty) {\n\t\t\tthis.pendingRebase = undefined;\n\t\t}\n\n\t\t// if this is an obliterate op, keep all segments in same segment group\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tconst obliterateSegmentGroup: SegmentGroup = {\n\t\t\tsegments: [],\n\t\t\tlocalSeq: segmentGroup.localSeq,\n\t\t\trefSeq: this.getCollabWindow().currentSeq,\n\t\t};\n\n\t\tconst opList: IMergeTreeDeltaOp[] = [];\n\t\t// We need to sort the segments by ordinal, as the segments are not sorted in the segment group.\n\t\t// The reason they need them sorted, as they have the same local sequence number and which means\n\t\t// farther segments will take into account nearer segments when calculating their position.\n\t\t// By sorting we ensure the nearer segment will be applied and sequenced before the farther segments\n\t\t// so their recalculated positions will be correct.\n\t\tfor (const segment of segmentGroup.segments.sort((a, b) =>\n\t\t\ta.ordinal < b.ordinal ? -1 : 1,\n\t\t)) {\n\t\t\tconst segmentSegGroup = segment.segmentGroups.dequeue();\n\t\t\tassert(\n\t\t\t\tsegmentGroup === segmentSegGroup,\n\t\t\t\t0x035 /* \"Segment group not at head of segment pending queue\" */,\n\t\t\t);\n\t\t\tassert(\n\t\t\t\tsegmentGroup.localSeq !== undefined,\n\t\t\t\t0x867 /* expected segment group localSeq to be defined */,\n\t\t\t);\n\t\t\tconst segmentPosition = this.findReconnectionPosition(segment, segmentGroup.localSeq);\n\t\t\tlet newOp: IMergeTreeDeltaOp | undefined;\n\t\t\tswitch (resetOp.type) {\n\t\t\t\tcase MergeTreeDeltaType.ANNOTATE:\n\t\t\t\t\tassert(\n\t\t\t\t\t\tsegment.propertyManager?.hasPendingProperties() === true,\n\t\t\t\t\t\t0x036 /* \"Segment has no pending properties\" */,\n\t\t\t\t\t);\n\t\t\t\t\t// if the segment has been removed or obliterated, there's no need to send the annotate op\n\t\t\t\t\t// unless the remove was local, in which case the annotate must have come\n\t\t\t\t\t// before the remove\n\t\t\t\t\tif (\n\t\t\t\t\t\t(segment.removedSeq === undefined ||\n\t\t\t\t\t\t\t(segment.localRemovedSeq !== undefined &&\n\t\t\t\t\t\t\t\tsegment.removedSeq === UnassignedSequenceNumber)) &&\n\t\t\t\t\t\t(segment.movedSeq === undefined ||\n\t\t\t\t\t\t\t(segment.localMovedSeq !== undefined &&\n\t\t\t\t\t\t\t\tsegment.movedSeq === UnassignedSequenceNumber))\n\t\t\t\t\t) {\n\t\t\t\t\t\tnewOp = createAnnotateRangeOp(\n\t\t\t\t\t\t\tsegmentPosition,\n\t\t\t\t\t\t\tsegmentPosition + segment.cachedLength,\n\t\t\t\t\t\t\tresetOp.props,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MergeTreeDeltaType.INSERT:\n\t\t\t\t\tassert(\n\t\t\t\t\t\tsegment.seq === UnassignedSequenceNumber,\n\t\t\t\t\t\t0x037 /* \"Segment already has assigned sequence number\" */,\n\t\t\t\t\t);\n\t\t\t\t\tlet segInsertOp = segment;\n\t\t\t\t\tif (typeof resetOp.seg === \"object\" && resetOp.seg.props !== undefined) {\n\t\t\t\t\t\tsegInsertOp = segment.clone();\n\t\t\t\t\t\tsegInsertOp.properties = resetOp.seg.props;\n\t\t\t\t\t}\n\t\t\t\t\tif (segment.movedSeq !== UnassignedSequenceNumber) {\n\t\t\t\t\t\tremoveMoveInfo(segment);\n\t\t\t\t\t}\n\t\t\t\t\tnewOp = createInsertSegmentOp(segmentPosition, segInsertOp);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MergeTreeDeltaType.REMOVE:\n\t\t\t\t\tif (\n\t\t\t\t\t\tsegment.localRemovedSeq !== undefined &&\n\t\t\t\t\t\tsegment.removedSeq === UnassignedSequenceNumber &&\n\t\t\t\t\t\t(segment.movedSeq === undefined ||\n\t\t\t\t\t\t\t(segment.localMovedSeq !== undefined &&\n\t\t\t\t\t\t\t\tsegment.movedSeq === UnassignedSequenceNumber))\n\t\t\t\t\t) {\n\t\t\t\t\t\tnewOp = createRemoveRangeOp(\n\t\t\t\t\t\t\tsegmentPosition,\n\t\t\t\t\t\t\tsegmentPosition + segment.cachedLength,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase MergeTreeDeltaType.OBLITERATE:\n\t\t\t\t\tif (\n\t\t\t\t\t\tsegment.localMovedSeq !== undefined &&\n\t\t\t\t\t\tsegment.movedSeq === UnassignedSequenceNumber &&\n\t\t\t\t\t\t(segment.removedSeq === undefined ||\n\t\t\t\t\t\t\t(segment.localRemovedSeq !== undefined &&\n\t\t\t\t\t\t\t\tsegment.removedSeq === UnassignedSequenceNumber))\n\t\t\t\t\t) {\n\t\t\t\t\t\tnewOp = createObliterateRangeOp(\n\t\t\t\t\t\t\tsegmentPosition,\n\t\t\t\t\t\t\tsegmentPosition + segment.cachedLength,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Invalid op type`);\n\t\t\t}\n\n\t\t\tif (newOp && resetOp.type === MergeTreeDeltaType.OBLITERATE) {\n\t\t\t\tsegment.segmentGroups.enqueue(obliterateSegmentGroup);\n\n\t\t\t\tconst first = opList[0];\n\n\t\t\t\tif (!!first && first.pos2 !== undefined) {\n\t\t\t\t\tfirst.pos2 += newOp.pos2! - newOp.pos1!;\n\t\t\t\t} else {\n\t\t\t\t\topList.push(newOp);\n\t\t\t\t}\n\t\t\t} else if (newOp) {\n\t\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\t\tconst newSegmentGroup: SegmentGroup = {\n\t\t\t\t\tsegments: [],\n\t\t\t\t\tlocalSeq: segmentGroup.localSeq,\n\t\t\t\t\trefSeq: this.getCollabWindow().currentSeq,\n\t\t\t\t};\n\t\t\t\tsegment.segmentGroups.enqueue(newSegmentGroup);\n\n\t\t\t\tthis._mergeTree.pendingSegments.push(newSegmentGroup);\n\n\t\t\t\topList.push(newOp);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tresetOp.type === MergeTreeDeltaType.OBLITERATE &&\n\t\t\tobliterateSegmentGroup.segments.length > 0\n\t\t) {\n\t\t\tthis._mergeTree.pendingSegments.push(obliterateSegmentGroup);\n\t\t}\n\n\t\treturn opList;\n\t}\n\n\tprivate applyRemoteOp(opArgs: IMergeTreeDeltaRemoteOpArgs) {\n\t\tconst op = opArgs.op;\n\t\tconst msg = opArgs.sequencedMessage;\n\t\tthis.getOrAddShortClientIdFromMessage(msg);\n\t\tswitch (op.type) {\n\t\t\tcase MergeTreeDeltaType.INSERT:\n\t\t\t\tthis.applyInsertOp(opArgs);\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.REMOVE:\n\t\t\t\tthis.applyRemoveRangeOp(opArgs);\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.ANNOTATE:\n\t\t\t\tthis.applyAnnotateRangeOp(opArgs);\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.OBLITERATE:\n\t\t\t\tthis.applyObliterateRangeOp(opArgs);\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.GROUP: {\n\t\t\t\tfor (const memberOp of op.ops) {\n\t\t\t\t\tthis.applyRemoteOp({\n\t\t\t\t\t\top: memberOp,\n\t\t\t\t\t\tgroupOp: op,\n\t\t\t\t\t\tsequencedMessage: msg,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic applyStashedOp(op: IMergeTreeDeltaOp): SegmentGroup;\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic applyStashedOp(op: IMergeTreeGroupMsg): SegmentGroup[];\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic applyStashedOp(op: IMergeTreeOp): SegmentGroup | SegmentGroup[];\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic applyStashedOp(op: IMergeTreeOp): SegmentGroup | SegmentGroup[] {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tlet metadata: SegmentGroup | SegmentGroup[] | undefined;\n\t\tconst stashed = true;\n\t\tswitch (op.type) {\n\t\t\tcase MergeTreeDeltaType.INSERT:\n\t\t\t\tthis.applyInsertOp({ op, stashed });\n\t\t\t\tmetadata = this.peekPendingSegmentGroups();\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.REMOVE:\n\t\t\t\tthis.applyRemoveRangeOp({ op, stashed });\n\t\t\t\tmetadata = this.peekPendingSegmentGroups();\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.ANNOTATE:\n\t\t\t\tthis.applyAnnotateRangeOp({ op, stashed });\n\t\t\t\tmetadata = this.peekPendingSegmentGroups();\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.OBLITERATE:\n\t\t\t\tthis.applyObliterateRangeOp({ op });\n\t\t\t\tmetadata = this.peekPendingSegmentGroups();\n\t\t\t\tbreak;\n\t\t\tcase MergeTreeDeltaType.GROUP:\n\t\t\t\treturn op.ops.map((o) => this.applyStashedOp(o));\n\t\t\tdefault:\n\t\t\t\tunreachableCase(op, \"unrecognized op type\");\n\t\t}\n\t\tassert(!!metadata, 0x2db /* \"Applying op must generate a pending segment\" */);\n\t\treturn metadata;\n\t}\n\n\tpublic applyMsg(msg: ISequencedDocumentMessage, local: boolean = false) {\n\t\t// Ensure client ID is registered\n\t\tthis.getOrAddShortClientIdFromMessage(msg);\n\t\t// Apply if an operation message\n\t\tif (msg.type === MessageType.Operation) {\n\t\t\tconst opArgs: IMergeTreeDeltaRemoteOpArgs = {\n\t\t\t\top: msg.contents as IMergeTreeOp,\n\t\t\t\tsequencedMessage: msg,\n\t\t\t};\n\t\t\tif (opArgs.sequencedMessage?.clientId === this.longClientId || local) {\n\t\t\t\tthis.ackPendingSegment(opArgs);\n\t\t\t} else {\n\t\t\t\tthis.applyRemoteOp(opArgs);\n\t\t\t}\n\t\t}\n\n\t\tthis.updateSeqNumbers(msg.minimumSequenceNumber, msg.sequenceNumber);\n\t}\n\n\tprivate updateSeqNumbers(min: number, seq: number) {\n\t\tconst collabWindow = this.getCollabWindow();\n\t\t// Equal is fine here due to SharedSegmentSequence<>.snapshotContent() potentially updating with same #\n\t\tassert(\n\t\t\tcollabWindow.currentSeq <= seq,\n\t\t\t0x038 /* \"Incoming op sequence# < local collabWindow's currentSequence#\" */,\n\t\t);\n\t\tcollabWindow.currentSeq = seq;\n\t\tassert(min <= seq, 0x039 /* \"Incoming op sequence# < minSequence#\" */);\n\t\tthis.updateMinSeq(min);\n\t}\n\n\t/**\n\t * Resolves a remote client's position against the local sequence\n\t * and returns the remote client's position relative to the local\n\t * sequence\n\t * @param remoteClientPosition - The remote client's position to resolve\n\t * @param remoteClientRefSeq - The reference sequence number of the remote client\n\t * @param remoteClientId - The client id of the remote client\n\t */\n\tpublic resolveRemoteClientPosition(\n\t\tremoteClientPosition: number,\n\t\tremoteClientRefSeq: number,\n\t\tremoteClientId: string,\n\t): number | undefined {\n\t\tconst shortRemoteClientId = this.getOrAddShortClientId(remoteClientId);\n\t\treturn this._mergeTree.resolveRemoteClientPosition(\n\t\t\tremoteClientPosition,\n\t\t\tremoteClientRefSeq,\n\t\t\tshortRemoteClientId,\n\t\t);\n\t}\n\n\tprivate lastNormalizationRefSeq = 0;\n\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate pendingRebase: DoublyLinkedList<SegmentGroup> | undefined;\n\n\t/**\n\t * Given a pending operation and segment group, regenerate the op, so it\n\t * can be resubmitted\n\t * @param resetOp - The op to reset\n\t * @param segmentGroup - The segment group associated with the op\n\t */\n\tpublic regeneratePendingOp(\n\t\tresetOp: IMergeTreeOp,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tsegmentGroup: SegmentGroup | SegmentGroup[],\n\t): IMergeTreeOp {\n\t\tif (this.pendingRebase === undefined || this.pendingRebase.empty) {\n\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\tlet firstGroup: SegmentGroup;\n\t\t\tif (Array.isArray(segmentGroup)) {\n\t\t\t\tif (segmentGroup.length === 0) {\n\t\t\t\t\t// sometimes we rebase to an empty op\n\t\t\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\t\t\treturn createGroupOp();\n\t\t\t\t}\n\t\t\t\tfirstGroup = segmentGroup[0];\n\t\t\t} else {\n\t\t\t\tfirstGroup = segmentGroup;\n\t\t\t}\n\t\t\tconst firstGroupNode = this._mergeTree.pendingSegments.find(\n\t\t\t\t(node) => node.data === firstGroup,\n\t\t\t);\n\t\t\tassert(\n\t\t\t\tfirstGroupNode !== undefined,\n\t\t\t\t0x70e /* segment group must exist in pending list */,\n\t\t\t);\n\t\t\tthis.pendingRebase = this._mergeTree.pendingSegments.splice(firstGroupNode);\n\t\t}\n\n\t\tconst rebaseTo = this.getCollabWindow().currentSeq;\n\t\tif (rebaseTo !== this.lastNormalizationRefSeq) {\n\t\t\tthis.emit(\"normalize\", this);\n\t\t\tthis._mergeTree.normalizeSegmentsOnRebase();\n\t\t\tthis.lastNormalizationRefSeq = rebaseTo;\n\t\t}\n\n\t\tconst opList: IMergeTreeDeltaOp[] = [];\n\t\tif (resetOp.type === MergeTreeDeltaType.GROUP) {\n\t\t\tif (Array.isArray(segmentGroup)) {\n\t\t\t\tassert(\n\t\t\t\t\tresetOp.ops.length === segmentGroup.length,\n\t\t\t\t\t0x03a /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */,\n\t\t\t\t);\n\n\t\t\t\tfor (let i = 0; i < resetOp.ops.length; i++) {\n\t\t\t\t\topList.push(...this.resetPendingDeltaToOps(resetOp.ops[i], segmentGroup[i]));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A group op containing a single op will pass a direct reference to 'segmentGroup'\n\t\t\t\t// rather than an array of segment groups. (See 'peekPendingSegmentGroups()')\n\t\t\t\tassert(\n\t\t\t\t\tresetOp.ops.length === 1,\n\t\t\t\t\t0x03b /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */,\n\t\t\t\t);\n\t\t\t\topList.push(...this.resetPendingDeltaToOps(resetOp.ops[0], segmentGroup));\n\t\t\t}\n\t\t} else {\n\t\t\tassert(\n\t\t\t\t(resetOp.type as any) !== MergeTreeDeltaType.GROUP,\n\t\t\t\t0x03c /* \"Reset op has 'group' delta type!\" */,\n\t\t\t);\n\t\t\tassert(\n\t\t\t\t!Array.isArray(segmentGroup),\n\t\t\t\t0x03d /* \"segmentGroup is array rather than singleton!\" */,\n\t\t\t);\n\t\t\topList.push(...this.resetPendingDeltaToOps(resetOp, segmentGroup));\n\t\t}\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\treturn opList.length === 1 ? opList[0] : createGroupOp(...opList);\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic createTextHelper(): IMergeTreeTextHelper {\n\t\treturn new MergeTreeTextHelper(this._mergeTree);\n\t}\n\n\tpublic summarize(\n\t\truntime: IFluidDataStoreRuntime,\n\t\thandle: IFluidHandle,\n\t\tserializer: IFluidSerializer,\n\t\tcatchUpMsgs: ISequencedDocumentMessage[],\n\t): ISummaryTreeWithStats {\n\t\tconst deltaManager = runtime.deltaManager;\n\t\tconst minSeq = deltaManager.minimumSequenceNumber;\n\n\t\t// Catch up to latest MSN, if we have not had a chance to do it.\n\t\t// Required for case where FluidDataStoreRuntime.attachChannel()\n\t\t// generates summary right after loading data store.\n\n\t\tthis.updateSeqNumbers(minSeq, deltaManager.lastSequenceNumber);\n\n\t\t// One of the summaries (from SPO) I observed to have chunk.chunkSequenceNumber > minSeq!\n\t\t// Not sure why - need to catch it sooner\n\t\tassert(\n\t\t\tthis.getCollabWindow().minSeq === minSeq,\n\t\t\t0x03e /* \"minSeq mismatch between collab window and delta manager!\" */,\n\t\t);\n\n\t\t// Must continue to support legacy\n\t\t// (See https://github.com/microsoft/FluidFramework/issues/84)\n\t\tif (this._mergeTree.options?.newMergeTreeSnapshotFormat === true) {\n\t\t\tassert(\n\t\t\t\tcatchUpMsgs === undefined || catchUpMsgs.length === 0,\n\t\t\t\t0x03f /* \"New format should not emit catchup ops\" */,\n\t\t\t);\n\t\t\tconst snap = new SnapshotV1(this._mergeTree, this.logger, (id) =>\n\t\t\t\tthis.getLongClientId(id),\n\t\t\t);\n\t\t\tsnap.extractSync();\n\t\t\treturn snap.emit(serializer, handle);\n\t\t} else {\n\t\t\tconst snap = new SnapshotLegacy(this._mergeTree, this.logger);\n\t\t\tsnap.extractSync();\n\t\t\treturn snap.emit(catchUpMsgs, serializer, handle);\n\t\t}\n\t}\n\n\tpublic async load(\n\t\truntime: IFluidDataStoreRuntime,\n\t\tstorage: IChannelStorageService,\n\t\tserializer: IFluidSerializer,\n\t): Promise<{ catchupOpsP: Promise<ISequencedDocumentMessage[]> }> {\n\t\tconst loader = new SnapshotLoader(runtime, this, this._mergeTree, this.logger, serializer);\n\n\t\treturn loader.initialize(storage);\n\t}\n\n\tprivate getLocalSequenceNumber() {\n\t\tconst segWindow = this.getCollabWindow();\n\t\treturn segWindow.collaborating ? UnassignedSequenceNumber : UniversalSequenceNumber;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tlocalTransaction(groupOp: IMergeTreeGroupMsg) {\n\t\tfor (const op of groupOp.ops) {\n\t\t\tconst opArgs: IMergeTreeDeltaOpArgs = {\n\t\t\t\top,\n\t\t\t\tgroupOp,\n\t\t\t};\n\t\t\tswitch (op.type) {\n\t\t\t\tcase MergeTreeDeltaType.INSERT:\n\t\t\t\t\tthis.applyInsertOp(opArgs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase MergeTreeDeltaType.ANNOTATE:\n\t\t\t\t\tthis.applyAnnotateRangeOp(opArgs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase MergeTreeDeltaType.REMOVE:\n\t\t\t\t\tthis.applyRemoveRangeOp(opArgs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase MergeTreeDeltaType.OBLITERATE:\n\t\t\t\t\tthis.applyObliterateRangeOp(opArgs);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateMinSeq(minSeq: number) {\n\t\tthis._mergeTree.setMinSeq(minSeq);\n\t}\n\n\tgetContainingSegment<T extends ISegment>(\n\t\tpos: number,\n\t\tsequenceArgs?: Pick<ISequencedDocumentMessage, \"referenceSequenceNumber\" | \"clientId\">,\n\t\tlocalSeq?: number,\n\t) {\n\t\tconst { referenceSequenceNumber, clientId } =\n\t\t\tthis.getClientSequenceArgsForMessage(sequenceArgs);\n\t\treturn this._mergeTree.getContainingSegment<T>(\n\t\t\tpos,\n\t\t\treferenceSequenceNumber,\n\t\t\tclientId,\n\t\t\tlocalSeq,\n\t\t);\n\t}\n\n\tgetPropertiesAtPosition(pos: number) {\n\t\tlet propertiesAtPosition: PropertySet | undefined;\n\t\tconst segoff = this.getContainingSegment(pos);\n\t\tconst seg = segoff.segment;\n\t\tif (seg) {\n\t\t\tpropertiesAtPosition = seg.properties;\n\t\t}\n\t\treturn propertiesAtPosition;\n\t}\n\n\tgetRangeExtentsOfPosition(pos: number) {\n\t\tlet posStart: number | undefined;\n\t\tlet posAfterEnd: number | undefined;\n\n\t\tconst segoff = this.getContainingSegment(pos);\n\t\tconst seg = segoff.segment;\n\t\tif (seg) {\n\t\t\tposStart = this.getPosition(seg);\n\t\t\tposAfterEnd = posStart + seg.cachedLength;\n\t\t}\n\t\treturn { posStart, posAfterEnd };\n\t}\n\n\tgetCurrentSeq() {\n\t\treturn this.getCollabWindow().currentSeq;\n\t}\n\n\tgetClientId() {\n\t\treturn this.getCollabWindow().clientId;\n\t}\n\n\tgetLength() {\n\t\treturn this._mergeTree.length ?? 0;\n\t}\n\n\tstartOrUpdateCollaboration(longClientId: string | undefined, minSeq = 0, currentSeq = 0) {\n\t\t// we should always have a client id if we are collaborating\n\t\t// if the client id is undefined we are likely bound to a detached\n\t\t// container, so we should keep going in local mode. once\n\t\t// the container attaches this will be called again on connect with the\n\t\t// client id\n\t\tif (longClientId !== undefined) {\n\t\t\tif (this.longClientId === undefined) {\n\t\t\t\tthis.longClientId = longClientId;\n\t\t\t\tthis.addLongClientId(this.longClientId);\n\t\t\t\tthis._mergeTree.startCollaboration(\n\t\t\t\t\tthis.getShortClientId(this.longClientId),\n\t\t\t\t\tminSeq,\n\t\t\t\t\tcurrentSeq,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst oldClientId = this.longClientId;\n\t\t\t\tconst oldData = this.clientNameToIds.get(oldClientId)!.data;\n\t\t\t\tthis.longClientId = longClientId;\n\t\t\t\tthis.clientNameToIds.put(longClientId, oldData);\n\t\t\t\tthis.shortClientIdMap[oldData] = longClientId;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Searches a string for the nearest marker in either direction to a given start position.\n\t * The search will include the start position, so markers at the start position are valid\n\t * results of the search. Makes use of block-accelerated search functions for log(n) complexity.\n\t *\n\t * @param startPos - Position at which to start the search\n\t * @param markerLabel - Label of the marker to search for\n\t * @param forwards - Whether the desired marker comes before (false) or after (true) `startPos`\n\t */\n\tsearchForMarker(startPos: number, markerLabel: string, forwards = true) {\n\t\tconst clientId = this.getClientId();\n\t\treturn this._mergeTree.searchForMarker(startPos, clientId, markerLabel, forwards);\n\t}\n}\n"]}
@@ -2,6 +2,6 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- export { DoublyLinkedList, ListNode, ListNodeRange, walkList } from "./list";
6
- export { ConflictAction, Dictionary, IRBAugmentation, IRBMatcher, KeyComparer, Property, PropertyAction, QProperty, RBColor, RBNode, RBNodeActions, RedBlackTree, SortedDictionary, } from "./rbTree";
7
- //# sourceMappingURL=index.d.ts.map
5
+ export { DoublyLinkedList, ListNode, ListNodeRange, walkList } from "./list.mjs";
6
+ export { ConflictAction, Dictionary, IRBAugmentation, IRBMatcher, KeyComparer, Property, PropertyAction, QProperty, RBColor, RBNode, RBNodeActions, RedBlackTree, SortedDictionary, } from "./rbTree.mjs";
7
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE;OACvD,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,gBAAgB,GAChB"}
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export { DoublyLinkedList, walkList } from "./list.mjs";
6
+ export { RBColor, RedBlackTree, } from "./rbTree.mjs";
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,gBAAgB,EAA2B,QAAQ,EAAE;OACvD,EASN,OAAO,EAGP,YAAY,GAEZ","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { DoublyLinkedList, ListNode, ListNodeRange, walkList } from \"./list\";\nexport {\n\tConflictAction,\n\tDictionary,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tKeyComparer,\n\tProperty,\n\tPropertyAction,\n\tQProperty,\n\tRBColor,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tSortedDictionary,\n} from \"./rbTree\";\n"]}
@@ -45,4 +45,4 @@ export declare class DoublyLinkedList<T> implements Iterable<ListNode<T>>, Parti
45
45
  get last(): ListNode<T> | undefined;
46
46
  }
47
47
  export declare function walkList<T>(list: DoublyLinkedList<T>, visitor: (node: ListNode<T>) => boolean | void, start?: ListNode<T>, forward?: boolean): boolean;
48
- //# sourceMappingURL=list.d.ts.map
48
+ //# sourceMappingURL=list.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.mts","sourceRoot":"","sources":["../../src/collections/list.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,8 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.walkList = exports.DoublyLinkedList = void 0;
8
- const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
5
+ import { UsageError } from "@fluidframework/telemetry-utils";
9
6
  class HeadNode {
10
7
  constructor(list) {
11
8
  this._next = this;
@@ -57,11 +54,11 @@ function insertAfter(node, items) {
57
54
  // so i went with a more user-friendly error, which describes the
58
55
  // only condition that could lead to this being undefined in the current code.
59
56
  if (newRange === undefined) {
60
- throw new telemetry_utils_1.UsageError("items must not be empty");
57
+ throw new UsageError("items must not be empty");
61
58
  }
62
59
  return newRange;
63
60
  }
64
- class DoublyLinkedList {
61
+ export class DoublyLinkedList {
65
62
  constructor() {
66
63
  this._len = 0;
67
64
  this.headNode = new HeadNode(this);
@@ -195,12 +192,11 @@ class DoublyLinkedList {
195
192
  return this.headNode.prev;
196
193
  }
197
194
  }
198
- exports.DoublyLinkedList = DoublyLinkedList;
199
- function walkList(list, visitor, start, forward = true) {
195
+ export function walkList(list, visitor, start, forward = true) {
200
196
  let current;
201
197
  if (start) {
202
198
  if (!list.includes(start)) {
203
- throw new telemetry_utils_1.UsageError("start must be in the provided list");
199
+ throw new UsageError("start must be in the provided list");
204
200
  }
205
201
  current = start;
206
202
  }
@@ -219,5 +215,4 @@ function walkList(list, visitor, start, forward = true) {
219
215
  }
220
216
  return true;
221
217
  }
222
- exports.walkList = walkList;
223
- //# sourceMappingURL=list.js.map
218
+ //# sourceMappingURL=list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.mjs","sourceRoot":"","sources":["../../src/collections/list.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UsageError } from \"@fluidframework/telemetry-utils\";\n\nexport interface ListNode<T> {\n\treadonly list: DoublyLinkedList<T> | undefined;\n\treadonly data: T;\n\treadonly next: ListNode<T> | undefined;\n\treadonly prev: ListNode<T> | undefined;\n}\n\nexport interface ListNodeRange<T> {\n\tfirst: ListNode<T>;\n\tlast: ListNode<T>;\n}\n\nclass HeadNode<T> {\n\tpublic _next: HeadNode<T> | DataNode<T> = this;\n\tpublic _prev: HeadNode<T> | DataNode<T> = this;\n\tpublic headNode: HeadNode<T> = this;\n\tprivate readonly _list?: DoublyLinkedList<T>;\n\tconstructor(list: DoublyLinkedList<T> | undefined) {\n\t\tif (list) {\n\t\t\tthis._list = list;\n\t\t}\n\t}\n\tpublic get next(): DataNode<T> | undefined {\n\t\treturn this._next === this.headNode ? undefined : (this._next as DataNode<T>);\n\t}\n\tpublic get prev(): DataNode<T> | undefined {\n\t\treturn this._prev === this.headNode ? undefined : (this._prev as DataNode<T>);\n\t}\n\tpublic get list() {\n\t\treturn this.headNode._list;\n\t}\n}\n\nconst DeadHead = new HeadNode<any>(undefined);\n\nclass DataNode<T> extends HeadNode<T> implements ListNode<T> {\n\tconstructor(\n\t\theadNode: HeadNode<T>,\n\t\tpublic readonly data: T,\n\t) {\n\t\tsuper(undefined);\n\t\tthis.headNode = headNode;\n\t}\n}\n\nfunction insertAfter<T>(node: DataNode<T> | HeadNode<T>, items: T[]): ListNodeRange<T> {\n\tlet previousNode = node;\n\tconst oldNext = previousNode._next;\n\tlet newRange: ListNodeRange<T> | undefined;\n\titems.forEach((n) => {\n\t\tconst newNode = new DataNode<T>(node.headNode, n);\n\t\tif (newRange === undefined) {\n\t\t\tnewRange = { first: newNode, last: newNode };\n\t\t} else {\n\t\t\tnewRange.last = newNode;\n\t\t}\n\t\tnewNode._prev = previousNode;\n\t\tpreviousNode._next = newNode;\n\t\tpreviousNode = newNode;\n\t});\n\toldNext._prev = previousNode;\n\tpreviousNode._next = oldNext;\n\t// explicitly prevent newRange from being undefined without casting,\n\t// and without additional conditionals, as this is used in some perf critical areas.\n\t// i could have just asserted, but that throws a non-user friendly error,\n\t// so i went with a more user-friendly error, which describes the\n\t// only condition that could lead to this being undefined in the current code.\n\tif (newRange === undefined) {\n\t\tthrow new UsageError(\"items must not be empty\");\n\t}\n\treturn newRange;\n}\n\nexport class DoublyLinkedList<T>\n\timplements\n\t\tIterable<ListNode<T>>,\n\t\tPartial<ListNodeRange<T>>,\n\t\t// try to match array signature and semantics where possible\n\t\tPick<ListNode<T>[], \"pop\" | \"shift\" | \"length\" | \"includes\">\n{\n\tfind(\n\t\tpredicate: (value: ListNode<T>, obj: DoublyLinkedList<T>) => unknown,\n\t): ListNode<T> | undefined {\n\t\tlet found: ListNode<T> | undefined;\n\t\twalkList(this, (node) => {\n\t\t\tif (predicate(node, this)) {\n\t\t\t\tfound = node;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tmap<U>(callbackfn: (value: ListNode<T>) => U): Iterable<U> {\n\t\tlet node = this.first;\n\t\tconst iterator: IterableIterator<U> = {\n\t\t\tnext(): IteratorResult<U> {\n\t\t\t\tif (node === undefined) {\n\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t}\n\t\t\t\tconst rtn = { value: callbackfn(node), done: false };\n\t\t\t\tnode = node.next;\n\t\t\t\treturn rtn;\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tinsertAfter(preceding: ListNode<T>, ...items: T[]): ListNodeRange<T> {\n\t\tif (!this._includes(preceding)) {\n\t\t\tthrow new Error(\"preceding not in list\");\n\t\t}\n\t\tthis._len += items.length;\n\t\treturn insertAfter(preceding, items);\n\t}\n\n\tpop(): ListNode<T> | undefined {\n\t\treturn this.remove(this.last);\n\t}\n\n\tpush(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\tconst start = this.headNode._prev;\n\t\treturn insertAfter(start, items);\n\t}\n\n\t/**\n\t * Remove and return the first element\n\t */\n\tshift(): ListNode<T> | undefined {\n\t\treturn this.remove(this.first);\n\t}\n\n\t/**\n\t * Insert `items` at start of list\n\t */\n\tunshift(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\treturn insertAfter(this.headNode, items);\n\t}\n\n\t/**\n\t * Remove nodes starting at `start` until either the `end` node is reached\n\t * or until `count` nodes have been removed. Returns the removed nodes as\n\t * a separate linked list\n\t */\n\tsplice(start: ListNode<T>, countOrEnd?: ListNode<T> | number): DoublyLinkedList<T> {\n\t\tconst newList = new DoublyLinkedList<T>();\n\t\twalkList(\n\t\t\tthis,\n\t\t\t(node) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst removedNode = this._remove(node)!;\n\t\t\t\t// whats special here is we preserve the node\n\t\t\t\t// this allow looking up the old node in the new list\n\t\t\t\t// when something preserves a reference\n\t\t\t\tremovedNode.headNode = newList.headNode;\n\t\t\t\tremovedNode._next = newList.headNode;\n\t\t\t\tremovedNode._prev = newList.headNode._prev;\n\t\t\t\tnewList.headNode._prev._next = removedNode;\n\t\t\t\tnewList.headNode._prev = removedNode;\n\t\t\t\tnewList._len++;\n\t\t\t\tif (node === countOrEnd || newList.length === countOrEnd) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart,\n\t\t);\n\t\treturn newList;\n\t}\n\n\tpublic includes(node: ListNode<T> | undefined): node is ListNode<T> {\n\t\treturn this._includes(node);\n\t}\n\n\tprivate _includes(node: ListNode<T> | undefined): node is DataNode<T> {\n\t\treturn node instanceof DataNode && node.headNode === this.headNode;\n\t}\n\n\tprivate _remove(node: ListNode<T> | undefined): DataNode<T> | undefined {\n\t\tif (this._includes(node)) {\n\t\t\tnode._prev._next = node._next;\n\t\t\tnode._next._prev = node._prev;\n\t\t\tnode.headNode = node._next = node._prev = DeadHead;\n\t\t\tthis._len--;\n\t\t\treturn node;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic remove(node: ListNode<T> | undefined): ListNode<T> | undefined {\n\t\treturn this._remove(node);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<ListNode<T>> {\n\t\tlet value = this.first;\n\t\tconst iterator: IterableIterator<ListNode<T>> = {\n\t\t\tnext(): IteratorResult<ListNode<T>> {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\tconst rtn = { value, done: false };\n\t\t\t\t\tvalue = value.next;\n\t\t\t\t\treturn rtn;\n\t\t\t\t}\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tprivate _len: number = 0;\n\tprivate readonly headNode: HeadNode<T> | DataNode<T> = new HeadNode(this);\n\tpublic get length() {\n\t\treturn this._len;\n\t}\n\tpublic get empty() {\n\t\treturn this._len === 0;\n\t}\n\tpublic get first(): ListNode<T> | undefined {\n\t\treturn this.headNode.next;\n\t}\n\n\tpublic get last(): ListNode<T> | undefined {\n\t\treturn this.headNode.prev;\n\t}\n}\n\nexport function walkList<T>(\n\tlist: DoublyLinkedList<T>,\n\tvisitor: (node: ListNode<T>) => boolean | void,\n\tstart?: ListNode<T>,\n\tforward: boolean = true,\n) {\n\tlet current: ListNode<T> | undefined;\n\tif (start) {\n\t\tif (!list.includes(start)) {\n\t\t\tthrow new UsageError(\"start must be in the provided list\");\n\t\t}\n\t\tcurrent = start;\n\t} else {\n\t\tcurrent = forward ? list.first : list.last;\n\t}\n\t// cache the next node, incase the visitor mutates the list\n\t// need this to support splice\n\tlet next = forward ? current?.next : current?.prev;\n\twhile (current !== undefined) {\n\t\tif (visitor(current) === false) {\n\t\t\treturn false;\n\t\t}\n\t\tcurrent = next;\n\t\tnext = forward ? next?.next : next?.prev;\n\t}\n\treturn true;\n}\n"]}
@@ -157,4 +157,4 @@ export declare class RedBlackTree<TKey, TData> implements SortedDictionary<TKey,
157
157
  private nodeWalkBackward;
158
158
  private nodeMap;
159
159
  }
160
- //# sourceMappingURL=rbTree.d.ts.map
160
+ //# sourceMappingURL=rbTree.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbTree.d.mts","sourceRoot":"","sources":["../../src/collections/rbTree.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,18 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RedBlackTree = exports.RBColor = void 0;
8
5
  /**
9
6
  * @internal
10
7
  */
11
- exports.RBColor = {
8
+ export const RBColor = {
12
9
  RED: 0,
13
10
  BLACK: 1,
14
11
  };
15
12
  /**
16
13
  * @internal
17
14
  */
18
- class RedBlackTree {
15
+ export class RedBlackTree {
19
16
  constructor(compareKeys, aug) {
20
17
  this.compareKeys = compareKeys;
21
18
  this.aug = aug;
@@ -24,7 +21,7 @@ class RedBlackTree {
24
21
  return { key, data, color, size };
25
22
  }
26
23
  isRed(node) {
27
- return !!node && node.color === exports.RBColor.RED;
24
+ return !!node && node.color === RBColor.RED;
28
25
  }
29
26
  nodeSize(node) {
30
27
  return node ? node.size : 0;
@@ -121,14 +118,14 @@ class RedBlackTree {
121
118
  }
122
119
  else {
123
120
  this.root = this.nodePut(this.root, key, data, conflict);
124
- this.root.color = exports.RBColor.BLACK;
121
+ this.root.color = RBColor.BLACK;
125
122
  }
126
123
  }
127
124
  }
128
125
  nodePut(node, key, data, conflict) {
129
126
  let _node = node;
130
127
  if (!_node) {
131
- return this.makeNode(key, data, exports.RBColor.RED, 1);
128
+ return this.makeNode(key, data, RBColor.RED, 1);
132
129
  }
133
130
  else {
134
131
  const cmp = this.compareKeys(key, _node.key);
@@ -204,7 +201,7 @@ class RedBlackTree {
204
201
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
205
202
  if (!this.isRed(this.root.left) && !this.isRed(this.root.right)) {
206
203
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
207
- this.root.color = exports.RBColor.RED;
204
+ this.root.color = RBColor.RED;
208
205
  }
209
206
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
210
207
  this.root = this.nodeRemove(this.root, key);
@@ -313,7 +310,7 @@ class RedBlackTree {
313
310
  node.left = leftChild.right;
314
311
  leftChild.right = node;
315
312
  leftChild.color = leftChild.right.color;
316
- leftChild.right.color = exports.RBColor.RED;
313
+ leftChild.right.color = RBColor.RED;
317
314
  leftChild.size = node.size;
318
315
  node.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;
319
316
  if (this.aug) {
@@ -328,7 +325,7 @@ class RedBlackTree {
328
325
  node.right = rightChild.left;
329
326
  rightChild.left = node;
330
327
  rightChild.color = rightChild.left.color;
331
- rightChild.left.color = exports.RBColor.RED;
328
+ rightChild.left.color = RBColor.RED;
332
329
  rightChild.size = node.size;
333
330
  node.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;
334
331
  if (this.aug) {
@@ -338,7 +335,7 @@ class RedBlackTree {
338
335
  return rightChild;
339
336
  }
340
337
  oppositeColor(c) {
341
- return c === exports.RBColor.BLACK ? exports.RBColor.RED : exports.RBColor.BLACK;
338
+ return c === RBColor.BLACK ? RBColor.RED : RBColor.BLACK;
342
339
  }
343
340
  flipColors(node) {
344
341
  node.color = this.oppositeColor(node.color);
@@ -421,7 +418,7 @@ class RedBlackTree {
421
418
  let go = true;
422
419
  if (node) {
423
420
  if (actions.pre) {
424
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
421
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
425
422
  go = actions.pre(node);
426
423
  }
427
424
  }
@@ -429,7 +426,7 @@ class RedBlackTree {
429
426
  go = this.nodeWalk(node.left, actions);
430
427
  }
431
428
  if (go && actions.infix) {
432
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
429
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
433
430
  go = actions.infix(node);
434
431
  }
435
432
  }
@@ -437,7 +434,7 @@ class RedBlackTree {
437
434
  go = this.nodeWalk(node.right, actions);
438
435
  }
439
436
  if (go && actions.post) {
440
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
437
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
441
438
  go = actions.post(node);
442
439
  }
443
440
  }
@@ -448,7 +445,7 @@ class RedBlackTree {
448
445
  let go = true;
449
446
  if (node) {
450
447
  if (actions.pre) {
451
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
448
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
452
449
  go = actions.pre(node);
453
450
  }
454
451
  }
@@ -456,7 +453,7 @@ class RedBlackTree {
456
453
  go = this.nodeWalkBackward(node.right, actions);
457
454
  }
458
455
  if (go && actions.infix) {
459
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
456
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
460
457
  go = actions.infix(node);
461
458
  }
462
459
  }
@@ -464,7 +461,7 @@ class RedBlackTree {
464
461
  go = this.nodeWalkBackward(node.left, actions);
465
462
  }
466
463
  if (go && actions.post) {
467
- if (!!actions.showStructure || node.color === exports.RBColor.BLACK) {
464
+ if (!!actions.showStructure || node.color === RBColor.BLACK) {
468
465
  go = actions.post(node);
469
466
  }
470
467
  }
@@ -499,5 +496,4 @@ class RedBlackTree {
499
496
  return go;
500
497
  }
501
498
  }
502
- exports.RedBlackTree = RedBlackTree;
503
- //# sourceMappingURL=rbTree.js.map
499
+ //# sourceMappingURL=rbTree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbTree.mjs","sourceRoot":"","sources":["../../src/collections/rbTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @internal\n */\nexport const RBColor = {\n\tRED: 0,\n\tBLACK: 1,\n} as const;\n\n/**\n * @internal\n */\nexport type RBColor = (typeof RBColor)[keyof typeof RBColor];\n\n/**\n * @internal\n */\nexport interface RBNode<TKey, TData> {\n\tkey: TKey;\n\tdata: TData;\n\tleft: RBNode<TKey, TData> | undefined;\n\tright: RBNode<TKey, TData> | undefined;\n\tcolor: RBColor;\n\tsize: number;\n}\n/**\n * @internal\n */\nexport interface IRBAugmentation<TKey, TData> {\n\tupdate(node: RBNode<TKey, TData>): void;\n}\n/**\n * @internal\n */\nexport interface IRBMatcher<TKey, TData> {\n\tcontinueSubtree(node: RBNode<TKey, TData> | undefined, key: TKey): boolean;\n\tmatchNode(node: RBNode<TKey, TData> | undefined, key: TKey): boolean;\n}\n\n/**\n * @internal\n */\nexport interface RBNodeActions<TKey, TData> {\n\tinfix?(node: RBNode<TKey, TData>): boolean;\n\tpre?(node: RBNode<TKey, TData>): boolean;\n\tpost?(node: RBNode<TKey, TData>): boolean;\n\tshowStructure?: boolean;\n}\n\n/**\n * @internal\n */\nexport interface KeyComparer<TKey> {\n\t// eslint-disable-next-line @typescript-eslint/prefer-function-type\n\t(a: TKey, b: TKey): number;\n}\n\n/**\n * @internal\n */\nexport interface Property<TKey, TData> {\n\tkey: TKey;\n\tdata: TData;\n}\n\n/**\n * @internal\n */\nexport interface PropertyAction<TKey, TData> {\n\t// eslint-disable-next-line @typescript-eslint/prefer-function-type\n\t<TAccum>(p: Property<TKey, TData>, accum?: TAccum): boolean;\n}\n\n/**\n * @internal\n */\nexport interface QProperty<TKey, TData> {\n\tkey?: TKey;\n\tdata?: TData;\n}\n\n/**\n * @internal\n */\nexport type ConflictAction<TKey, TData> = (\n\tkey: TKey,\n\tcurrentKey: TKey,\n\tdata: TData,\n\tcurrentData: TData,\n) => QProperty<TKey, TData>;\n\n/**\n * @internal\n */\nexport interface SortedDictionary<TKey, TData> extends Dictionary<TKey, TData> {\n\tmax(): Property<TKey, TData> | undefined;\n\tmin(): Property<TKey, TData> | undefined;\n\tmapRange<TAccum>(\n\t\taction: PropertyAction<TKey, TData>,\n\t\taccum?: TAccum,\n\t\tstart?: TKey,\n\t\tend?: TKey,\n\t): void;\n}\n\n/**\n * @internal\n */\nexport interface Dictionary<TKey, TData> {\n\tget(key: TKey): Property<TKey, TData> | undefined;\n\tput(key: TKey, data: TData, conflict?: ConflictAction<TKey, TData>): void;\n\tremove(key: TKey): void;\n\tmap<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum): void;\n}\n\n/**\n * @internal\n */\nexport class RedBlackTree<TKey, TData> implements SortedDictionary<TKey, TData> {\n\tprivate root: RBNode<TKey, TData> | undefined;\n\n\tconstructor(\n\t\tprivate readonly compareKeys: KeyComparer<TKey>,\n\t\tprivate readonly aug?: IRBAugmentation<TKey, TData>,\n\t) {}\n\n\tprivate makeNode(key: TKey, data: TData, color: RBColor, size: number): RBNode<TKey, TData> {\n\t\treturn { key, data, color, size } as any as RBNode<TKey, TData>;\n\t}\n\n\tprivate isRed(node: RBNode<TKey, TData> | undefined) {\n\t\treturn !!node && node.color === RBColor.RED;\n\t}\n\n\tprivate nodeSize(node: RBNode<TKey, TData> | undefined) {\n\t\treturn node ? node.size : 0;\n\t}\n\tpublic size() {\n\t\treturn this.nodeSize(this.root);\n\t}\n\tpublic isEmpty() {\n\t\treturn !this.root;\n\t}\n\tpublic get(key: TKey) {\n\t\tif (key !== undefined) {\n\t\t\treturn this.nodeGet(this.root, key);\n\t\t}\n\t}\n\tprivate nodeGet(node: RBNode<TKey, TData> | undefined, key: TKey) {\n\t\tlet _node = node;\n\t\twhile (_node) {\n\t\t\tconst cmp = this.compareKeys(key, _node.key);\n\t\t\tif (cmp < 0) {\n\t\t\t\t_node = _node.left;\n\t\t\t} else if (cmp > 0) {\n\t\t\t\t_node = _node.right;\n\t\t\t} else {\n\t\t\t\treturn _node;\n\t\t\t}\n\t\t}\n\t}\n\tprivate contains(key: TKey) {\n\t\treturn this.get(key);\n\t}\n\n\tpublic gather(key: TKey, matcher: IRBMatcher<TKey, TData>) {\n\t\tconst results = [] as RBNode<TKey, TData>[];\n\t\tif (key !== undefined) {\n\t\t\tthis.nodeGather(this.root, results, key, matcher);\n\t\t}\n\t\treturn results;\n\t}\n\n\tprivate nodeGather(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tresults: RBNode<TKey, TData>[],\n\t\tkey: TKey,\n\t\tmatcher: IRBMatcher<TKey, TData>,\n\t) {\n\t\tif (node) {\n\t\t\tif (matcher.continueSubtree(node.left, key)) {\n\t\t\t\tthis.nodeGather(node.left, results, key, matcher);\n\t\t\t}\n\t\t\tif (matcher.matchNode(node, key)) {\n\t\t\t\tresults.push(node);\n\t\t\t}\n\t\t\tif (matcher.continueSubtree(node.right, key)) {\n\t\t\t\tthis.nodeGather(node.right, results, key, matcher);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic walkExactMatchesForward(\n\t\tcompareFn: (node: RBNode<TKey, TData>) => number,\n\t\tactionFn: (node: RBNode<TKey, TData>) => void,\n\t\tcontinueLeftFn: (number: number) => boolean,\n\t\tcontinueRightFn: (number: number) => boolean,\n\t) {\n\t\tthis.nodeWalkExactMatchesForward(\n\t\t\tthis.root,\n\t\t\tcompareFn,\n\t\t\tactionFn,\n\t\t\tcontinueLeftFn,\n\t\t\tcontinueRightFn,\n\t\t);\n\t}\n\n\tprivate nodeWalkExactMatchesForward(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tcompareFn: (node: RBNode<TKey, TData>) => number,\n\t\tactionFn: (node: RBNode<TKey, TData>) => void,\n\t\tcontinueLeftFn: (number: number) => boolean,\n\t\tcontinueRightFn: (number: number) => boolean,\n\t) {\n\t\tif (!node) {\n\t\t\treturn;\n\t\t}\n\t\tconst result: number = compareFn(node);\n\t\tif (continueLeftFn(result)) {\n\t\t\tthis.nodeWalkExactMatchesForward(\n\t\t\t\tnode.left,\n\t\t\t\tcompareFn,\n\t\t\t\tactionFn,\n\t\t\t\tcontinueLeftFn,\n\t\t\t\tcontinueRightFn,\n\t\t\t);\n\t\t}\n\t\tif (result === 0) {\n\t\t\tactionFn(node);\n\t\t}\n\t\tif (continueRightFn(result)) {\n\t\t\tthis.nodeWalkExactMatchesForward(\n\t\t\t\tnode.right,\n\t\t\t\tcompareFn,\n\t\t\t\tactionFn,\n\t\t\t\tcontinueLeftFn,\n\t\t\t\tcontinueRightFn,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic walkExactMatchesBackward(\n\t\tcompareFn: (node: RBNode<TKey, TData>) => number,\n\t\tactionFn: (node: RBNode<TKey, TData>) => void,\n\t\tcontinueLeftFn: (number: number) => boolean,\n\t\tcontinueRightFn: (number: number) => boolean,\n\t) {\n\t\tthis.nodeWalkExactMatchesBackward(\n\t\t\tthis.root,\n\t\t\tcompareFn,\n\t\t\tactionFn,\n\t\t\tcontinueLeftFn,\n\t\t\tcontinueRightFn,\n\t\t);\n\t}\n\n\tprivate nodeWalkExactMatchesBackward(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tcompareFn: (node: RBNode<TKey, TData>) => number,\n\t\tactionFn: (node: RBNode<TKey, TData>) => void,\n\t\tcontinueLeftFn: (cmp: number) => boolean,\n\t\tcontinueRightFn: (cmp: number) => boolean,\n\t) {\n\t\tif (!node) {\n\t\t\treturn;\n\t\t}\n\t\tconst result: number = compareFn(node);\n\t\tif (continueRightFn(result)) {\n\t\t\tthis.nodeWalkExactMatchesBackward(\n\t\t\t\tnode.right,\n\t\t\t\tcompareFn,\n\t\t\t\tactionFn,\n\t\t\t\tcontinueLeftFn,\n\t\t\t\tcontinueRightFn,\n\t\t\t);\n\t\t}\n\t\tif (result === 0) {\n\t\t\tactionFn(node);\n\t\t}\n\t\tif (continueLeftFn(result)) {\n\t\t\tthis.nodeWalkExactMatchesBackward(\n\t\t\t\tnode.left,\n\t\t\t\tcompareFn,\n\t\t\t\tactionFn,\n\t\t\t\tcontinueLeftFn,\n\t\t\t\tcontinueRightFn,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic put(key: TKey, data: TData, conflict?: ConflictAction<TKey, TData>) {\n\t\tif (key !== undefined) {\n\t\t\tif (data === undefined) {\n\t\t\t\tthis.remove(key);\n\t\t\t} else {\n\t\t\t\tthis.root = this.nodePut(this.root, key, data, conflict);\n\t\t\t\tthis.root.color = RBColor.BLACK;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate nodePut(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tkey: TKey,\n\t\tdata: TData,\n\t\tconflict?: ConflictAction<TKey, TData>,\n\t) {\n\t\tlet _node = node;\n\t\tif (!_node) {\n\t\t\treturn this.makeNode(key, data, RBColor.RED, 1);\n\t\t} else {\n\t\t\tconst cmp = this.compareKeys(key, _node.key);\n\t\t\tif (cmp < 0) {\n\t\t\t\t_node.left = this.nodePut(_node.left, key, data, conflict);\n\t\t\t} else if (cmp > 0) {\n\t\t\t\t_node.right = this.nodePut(_node.right, key, data, conflict);\n\t\t\t} else {\n\t\t\t\tif (conflict) {\n\t\t\t\t\tconst kd = conflict(key, _node.key, data, _node.data);\n\t\t\t\t\tif (kd.key) {\n\t\t\t\t\t\t_node.key = kd.key;\n\t\t\t\t\t}\n\t\t\t\t\t_node.data = kd.data ? kd.data : data;\n\t\t\t\t} else {\n\t\t\t\t\t_node.data = data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.isRed(_node.right) && !this.isRed(_node.left)) {\n\t\t\t\t_node = this.rotateLeft(_node);\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tif (this.isRed(_node.left) && this.isRed(_node.left!.left)) {\n\t\t\t\t_node = this.rotateRight(_node);\n\t\t\t}\n\t\t\tif (this.isRed(_node.left) && this.isRed(_node.right)) {\n\t\t\t\tthis.flipColors(_node);\n\t\t\t}\n\t\t\t_node.size = this.nodeSize(_node.left) + this.nodeSize(_node.right) + 1;\n\t\t\tif (this.aug) {\n\t\t\t\tthis.updateLocal(_node);\n\t\t\t}\n\t\t\treturn _node;\n\t\t}\n\t}\n\n\tprivate updateLocal(node: RBNode<TKey, TData>) {\n\t\tif (this.aug) {\n\t\t\tif (this.isRed(node.left)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tthis.aug.update(node.left!);\n\t\t\t}\n\t\t\tif (this.isRed(node.right)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tthis.aug.update(node.right!);\n\t\t\t}\n\t\t\tthis.aug.update(node);\n\t\t}\n\t}\n\n\tprivate nodeRemoveMin(node: RBNode<TKey, TData>) {\n\t\tlet _node = node;\n\t\tif (_node.left) {\n\t\t\tif (!this.isRed(_node.left) && !this.isRed(_node.left.left)) {\n\t\t\t\t_node = this.moveRedLeft(_node);\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t_node.left = this.nodeRemoveMin(_node.left!);\n\t\t\treturn this.balance(_node);\n\t\t}\n\t}\n\n\tpublic remove(key: TKey) {\n\t\tif (key !== undefined) {\n\t\t\tif (!this.contains(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.removeExisting(key);\n\t\t}\n\t\t// TODO: error on undefined key\n\t}\n\n\tpublic removeExisting(key: TKey) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif (!this.isRed(this.root!.left) && !this.isRed(this.root!.right)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tthis.root!.color = RBColor.RED;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tthis.root = this.nodeRemove(this.root!, key);\n\t}\n\n\tprivate nodeRemove(node: RBNode<TKey, TData>, key: TKey) {\n\t\tlet _node = node;\n\t\tif (this.compareKeys(key, _node.key) < 0) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tif (!this.isRed(_node.left) && !this.isRed(_node.left!.left)) {\n\t\t\t\t_node = this.moveRedLeft(_node);\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t_node.left = this.nodeRemove(_node.left!, key);\n\t\t} else {\n\t\t\tif (this.isRed(_node.left)) {\n\t\t\t\t_node = this.rotateRight(_node);\n\t\t\t}\n\t\t\tif (this.compareKeys(key, _node.key) === 0 && !_node.right) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tif (!this.isRed(_node.right) && !this.isRed(_node.right!.left)) {\n\t\t\t\t_node = this.moveRedRight(_node);\n\t\t\t}\n\t\t\tif (this.compareKeys(key, _node.key) === 0) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst subtreeMin = this.nodeMin(_node.right!);\n\t\t\t\t_node.key = subtreeMin.key;\n\t\t\t\t_node.data = subtreeMin.data;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t_node.right = this.nodeRemoveMin(_node.right!);\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t_node.right = this.nodeRemove(_node.right!, key);\n\t\t\t}\n\t\t}\n\t\treturn this.balance(_node);\n\t}\n\n\t/**\n\t * @returns The largest node in this tree which compares less than or equal to `key`\n\t */\n\tpublic floor(key: TKey) {\n\t\tif (!this.isEmpty()) {\n\t\t\treturn this.nodeFloor(this.root, key);\n\t\t}\n\t}\n\n\tprivate nodeFloor(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tkey: TKey,\n\t): RBNode<TKey, TData> | undefined {\n\t\tif (node) {\n\t\t\tconst cmp = this.compareKeys(key, node.key);\n\t\t\tif (cmp === 0) {\n\t\t\t\treturn node;\n\t\t\t} else if (cmp < 0) {\n\t\t\t\treturn this.nodeFloor(node.left, key);\n\t\t\t} else {\n\t\t\t\tconst rightFloor = this.nodeFloor(node.right, key);\n\t\t\t\treturn rightFloor ? rightFloor : node;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns The smallest node in this tree which compares greater than or equal to `key`\n\t */\n\tpublic ceil(key: TKey) {\n\t\tif (!this.isEmpty()) {\n\t\t\treturn this.nodeCeil(this.root, key);\n\t\t}\n\t}\n\n\tprivate nodeCeil(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tkey: TKey,\n\t): RBNode<TKey, TData> | undefined {\n\t\tif (node) {\n\t\t\tconst cmp = this.compareKeys(key, node.key);\n\t\t\tif (cmp === 0) {\n\t\t\t\treturn node;\n\t\t\t} else if (cmp > 0) {\n\t\t\t\treturn this.nodeCeil(node.right, key);\n\t\t\t} else {\n\t\t\t\tconst leftCeil = this.nodeCeil(node.left, key);\n\t\t\t\treturn leftCeil ? leftCeil : node;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic min() {\n\t\tif (this.root) {\n\t\t\treturn this.nodeMin(this.root);\n\t\t}\n\t}\n\n\tprivate nodeMin(node: RBNode<TKey, TData>): RBNode<TKey, TData> {\n\t\treturn !node.left ? node : this.nodeMin(node.left);\n\t}\n\n\tpublic max() {\n\t\tif (this.root) {\n\t\t\treturn this.nodeMax(this.root);\n\t\t}\n\t}\n\n\tprivate nodeMax(node: RBNode<TKey, TData>): RBNode<TKey, TData> {\n\t\treturn !node.right ? node : this.nodeMax(node.right);\n\t}\n\n\tprivate rotateRight(node: RBNode<TKey, TData>) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst leftChild = node.left!;\n\t\tnode.left = leftChild.right;\n\t\tleftChild.right = node;\n\t\tleftChild.color = leftChild.right.color;\n\t\tleftChild.right.color = RBColor.RED;\n\t\tleftChild.size = node.size;\n\t\tnode.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n\t\tif (this.aug) {\n\t\t\tthis.updateLocal(node);\n\t\t\tthis.updateLocal(leftChild);\n\t\t}\n\t\treturn leftChild;\n\t}\n\n\tprivate rotateLeft(node: RBNode<TKey, TData>) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst rightChild = node.right!;\n\t\tnode.right = rightChild.left;\n\t\trightChild.left = node;\n\t\trightChild.color = rightChild.left.color;\n\t\trightChild.left.color = RBColor.RED;\n\t\trightChild.size = node.size;\n\t\tnode.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n\t\tif (this.aug) {\n\t\t\tthis.updateLocal(node);\n\t\t\tthis.updateLocal(rightChild);\n\t\t}\n\t\treturn rightChild;\n\t}\n\n\tprivate oppositeColor(c: RBColor) {\n\t\treturn c === RBColor.BLACK ? RBColor.RED : RBColor.BLACK;\n\t}\n\n\tprivate flipColors(node: RBNode<TKey, TData>) {\n\t\tnode.color = this.oppositeColor(node.color);\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tnode.left!.color = this.oppositeColor(node.left!.color);\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tnode.right!.color = this.oppositeColor(node.right!.color);\n\t}\n\n\tprivate moveRedLeft(node: RBNode<TKey, TData>) {\n\t\tlet _node = node;\n\t\tthis.flipColors(_node);\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif (this.isRed(_node.right!.left)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t_node.right = this.rotateRight(_node.right!);\n\t\t\t_node = this.rotateLeft(_node);\n\t\t\tthis.flipColors(_node);\n\t\t}\n\t\treturn _node;\n\t}\n\n\tprivate moveRedRight(node: RBNode<TKey, TData>) {\n\t\tlet _node = node;\n\t\tthis.flipColors(_node);\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif (this.isRed(_node.left!.left)) {\n\t\t\t_node = this.rotateRight(_node);\n\t\t\tthis.flipColors(_node);\n\t\t}\n\t\treturn _node;\n\t}\n\n\tprivate balance(input: RBNode<TKey, TData>) {\n\t\tlet node: RBNode<TKey, TData> | undefined = input;\n\t\tif (this.isRed(node.right)) {\n\t\t\tnode = this.rotateLeft(node);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif (this.isRed(node.left) && this.isRed(node.left!.left)) {\n\t\t\tnode = this.rotateRight(node);\n\t\t}\n\t\tif (this.isRed(node.left) && this.isRed(node.right)) {\n\t\t\tthis.flipColors(node);\n\t\t}\n\t\tnode.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n\t\tif (this.aug) {\n\t\t\tthis.aug.update(node);\n\t\t}\n\t\treturn node;\n\t}\n\n\tpublic mapRange<TAccum>(\n\t\taction: PropertyAction<TKey, TData>,\n\t\taccum?: TAccum,\n\t\tstart?: TKey,\n\t\tend?: TKey,\n\t) {\n\t\tthis.nodeMap(this.root, action, accum, start, end);\n\t}\n\n\tpublic map<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum) {\n\t\t// TODO: optimize to avoid comparisons\n\t\tthis.nodeMap(this.root, action, accum);\n\t}\n\n\tpublic keys() {\n\t\tconst keyList: TKey[] = [];\n\t\tconst actions: RBNodeActions<TKey, TData> = {\n\t\t\tshowStructure: true,\n\t\t\tinfix: (node) => {\n\t\t\t\tkeyList.push(node.key);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t};\n\t\tthis.walk(actions);\n\t\treturn keyList;\n\t}\n\n\t/**\n\t * Depth-first traversal with custom action; if action returns\n\t * false, traversal is halted.\n\t * @param action - action to apply to each node\n\t */\n\tpublic walk(actions: RBNodeActions<TKey, TData>) {\n\t\tthis.nodeWalk(this.root, actions);\n\t}\n\n\tpublic walkBackward(actions: RBNodeActions<TKey, TData>) {\n\t\tthis.nodeWalkBackward(this.root, actions);\n\t}\n\n\tprivate nodeWalk(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tactions: RBNodeActions<TKey, TData>,\n\t): boolean {\n\t\tlet go = true;\n\t\tif (node) {\n\t\t\tif (actions.pre) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.pre(node);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node.left) {\n\t\t\t\tgo = this.nodeWalk(node.left, actions);\n\t\t\t}\n\t\t\tif (go && actions.infix) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.infix(node);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (go) {\n\t\t\t\tgo = this.nodeWalk(node.right, actions);\n\t\t\t}\n\t\t\tif (go && actions.post) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.post(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn go;\n\t}\n\n\tprivate nodeWalkBackward(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\tactions: RBNodeActions<TKey, TData>,\n\t): boolean {\n\t\tlet go = true;\n\t\tif (node) {\n\t\t\tif (actions.pre) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.pre(node);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node.right) {\n\t\t\t\tgo = this.nodeWalkBackward(node.right, actions);\n\t\t\t}\n\t\t\tif (go && actions.infix) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.infix(node);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (go) {\n\t\t\t\tgo = this.nodeWalkBackward(node.left, actions);\n\t\t\t}\n\t\t\tif (go && actions.post) {\n\t\t\t\tif (!!actions.showStructure || node.color === RBColor.BLACK) {\n\t\t\t\t\tgo = actions.post(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn go;\n\t}\n\n\tprivate nodeMap<TAccum>(\n\t\tnode: RBNode<TKey, TData> | undefined,\n\t\taction: PropertyAction<TKey, TData>,\n\t\taccum?: TAccum,\n\t\tstart?: TKey,\n\t\tend?: TKey,\n\t): boolean {\n\t\tlet _start = start;\n\t\tlet _end = end;\n\t\tif (!node) {\n\t\t\treturn true;\n\t\t}\n\t\tif (_start === undefined) {\n\t\t\t_start = this.nodeMin(node).key;\n\t\t}\n\t\tif (_end === undefined) {\n\t\t\t_end = this.nodeMax(node).key;\n\t\t}\n\t\tconst cmpStart = this.compareKeys(_start, node.key);\n\t\tconst cmpEnd = this.compareKeys(_end, node.key);\n\t\tlet go = true;\n\t\tif (cmpStart < 0) {\n\t\t\tgo = this.nodeMap(node.left, action, accum, _start, _end);\n\t\t}\n\t\tif (go && cmpStart <= 0 && cmpEnd >= 0) {\n\t\t\t// REVIEW: test for black node here\n\t\t\tgo = action(node, accum);\n\t\t}\n\t\tif (go && cmpEnd > 0) {\n\t\t\tgo = this.nodeMap(node.right, action, accum, _start, _end);\n\t\t}\n\t\treturn go;\n\t}\n}\n"]}
@@ -29,4 +29,4 @@ export declare const LocalClientId = -1;
29
29
  * @internal
30
30
  */
31
31
  export declare const NonCollabClient = -2;
32
- //# sourceMappingURL=constants.d.ts.map
32
+ //# sourceMappingURL=constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC"}
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * The sequence number which can be seen by all ops.
7
+ *
8
+ * This is useful in the context of snapshot loading, rollback, among other
9
+ * scenarios.
10
+ *
11
+ * @internal
12
+ */
13
+ export const UniversalSequenceNumber = 0;
14
+ /**
15
+ * The sequence number of an op before it is acked.
16
+ *
17
+ * @internal
18
+ */
19
+ export const UnassignedSequenceNumber = -1;
20
+ /**
21
+ * @internal
22
+ */
23
+ export const TreeMaintenanceSequenceNumber = -2;
24
+ /**
25
+ * @internal
26
+ */
27
+ export const LocalClientId = -1;
28
+ /**
29
+ * @internal
30
+ */
31
+ export const NonCollabClient = -2;
32
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * The sequence number which can be seen by all ops.\n *\n * This is useful in the context of snapshot loading, rollback, among other\n * scenarios.\n *\n * @internal\n */\nexport const UniversalSequenceNumber = 0;\n\n/**\n * The sequence number of an op before it is acked.\n *\n * @internal\n */\nexport const UnassignedSequenceNumber = -1;\n\n/**\n * @internal\n */\nexport const TreeMaintenanceSequenceNumber = -2;\n\n/**\n * @internal\n */\nexport const LocalClientId = -1;\n\n/**\n * @internal\n */\nexport const NonCollabClient = -2;\n"]}
@@ -2,9 +2,9 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { LocalReferenceCollection } from "./localReference";
6
- import { MergeTree } from "./mergeTree";
7
- import { IMergeBlock, IRemovalInfo, ISegment } from "./mergeTreeNodes";
5
+ import { LocalReferenceCollection } from "./localReference.mjs";
6
+ import { MergeTree } from "./mergeTree.mjs";
7
+ import { IMergeBlock, IRemovalInfo, ISegment } from "./mergeTreeNodes.mjs";
8
8
  /**
9
9
  * This is a special segment that is not bound or known by the merge tree itself,
10
10
  * but the segment itself pretends to be a removed segment at an endpoint of the
@@ -94,4 +94,4 @@ export declare class EndOfTreeSegment extends BaseEndpointSegment implements ISe
94
94
  get ordinal(): string;
95
95
  }
96
96
  export {};
97
- //# sourceMappingURL=endOfTreeSegment.d.ts.map
97
+ //# sourceMappingURL=endOfTreeSegment.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endOfTreeSegment.d.mts","sourceRoot":"","sources":["../src/endOfTreeSegment.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAII,EAAE,wBAAwB,EAAE;OAC5B,EAAgB,SAAS,EAAE;OAC3B,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE;AAG9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uBAAe,mBAAmB;IACrB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAOnD,UAAU,EAAE,MAAM,CAAK;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAmB;IAC7C,WAAW,EAAE,SAAS,CAAC;IACvB,eAAe,EAAE,SAAS,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,SAAS,CAAC;IAC3B,UAAU,EAAE,SAAS,CAAC;IACtB,GAAG,SAAK;IACR,QAAQ,SAAiB;IACzB,YAAY,SAAK;IAEjB,MAAM,IAAI,IAAI,IAAI,QAAQ;IAI1B,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI;QAC1C,MAAM,EAAE,WAAW,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACd;IAED,IAAI,MAAM,gBAET;IAED,IAAI,KAAK,WAER;IAED,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;IAE/B,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAMrC,IAAI,aAAa,UAEhB;IACD,IAAI,kBAAkB,UAErB;IACD,aAAa,cAAgB;IAC7B,KAAK,cAAgB;IACrB,SAAS,cAAgB;IACzB,MAAM,cAAgB;IACtB,OAAO,cAAgB;IACvB,YAAY,cAAgB;IAC5B,GAAG,cAAgB;CACnB;AAMD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,mBAAoB,YAAW,QAAQ,EAAE,YAAY;IAC5F,IAAI,EAAE,MAAM,CAAwB;IACpC,QAAQ,CAAC,YAAY,WAAW;IAEhC;;;OAGG;IACH,SAAS,CAAC,oBAAoB;;;;;IA2B9B,IAAI,OAAO,WAEV;CACD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,mBAAoB,YAAW,QAAQ,EAAE,YAAY;IAC1F,IAAI,EAAE,MAAM,CAAsB;IAClC,QAAQ,CAAC,YAAY,SAAS;IAE9B;;;OAGG;IACH,SAAS,CAAC,oBAAoB;;;;;IA2B9B,IAAI,OAAO,WAMV;CACD"}