@fluidframework/merge-tree 2.1.0-276985 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/.eslintrc.cjs +2 -4
  2. package/CHANGELOG.md +15 -0
  3. package/README.md +109 -1
  4. package/api-extractor/api-extractor.current.json +5 -0
  5. package/api-extractor/api-extractor.legacy.json +1 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/merge-tree.legacy.alpha.api.md +10 -22
  8. package/api-report/merge-tree.legacy.public.api.md +9 -0
  9. package/dist/MergeTreeTextHelper.d.ts.map +1 -1
  10. package/dist/MergeTreeTextHelper.js +1 -1
  11. package/dist/MergeTreeTextHelper.js.map +1 -1
  12. package/dist/attributionCollection.d.ts.map +1 -1
  13. package/dist/attributionCollection.js +65 -17
  14. package/dist/attributionCollection.js.map +1 -1
  15. package/dist/attributionPolicy.d.ts +2 -1
  16. package/dist/attributionPolicy.d.ts.map +1 -1
  17. package/dist/attributionPolicy.js +10 -3
  18. package/dist/attributionPolicy.js.map +1 -1
  19. package/dist/client.d.ts +3 -1
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +65 -37
  22. package/dist/client.js.map +1 -1
  23. package/dist/collections/list.d.ts.map +1 -1
  24. package/dist/collections/list.js +5 -2
  25. package/dist/collections/list.js.map +1 -1
  26. package/dist/collections/rbTree.d.ts +2 -2
  27. package/dist/collections/rbTree.d.ts.map +1 -1
  28. package/dist/collections/rbTree.js +23 -35
  29. package/dist/collections/rbTree.js.map +1 -1
  30. package/dist/endOfTreeSegment.d.ts.map +1 -1
  31. package/dist/endOfTreeSegment.js +4 -1
  32. package/dist/endOfTreeSegment.js.map +1 -1
  33. package/dist/legacy.d.ts +1 -1
  34. package/dist/localReference.d.ts +16 -6
  35. package/dist/localReference.d.ts.map +1 -1
  36. package/dist/localReference.js +31 -20
  37. package/dist/localReference.js.map +1 -1
  38. package/dist/mergeTree.d.ts +0 -1
  39. package/dist/mergeTree.d.ts.map +1 -1
  40. package/dist/mergeTree.js +127 -112
  41. package/dist/mergeTree.js.map +1 -1
  42. package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
  43. package/dist/mergeTreeNodeWalk.js +1 -1
  44. package/dist/mergeTreeNodeWalk.js.map +1 -1
  45. package/dist/mergeTreeNodes.d.ts +6 -5
  46. package/dist/mergeTreeNodes.d.ts.map +1 -1
  47. package/dist/mergeTreeNodes.js +29 -20
  48. package/dist/mergeTreeNodes.js.map +1 -1
  49. package/dist/mergeTreeTracking.js +3 -3
  50. package/dist/mergeTreeTracking.js.map +1 -1
  51. package/dist/opBuilder.d.ts +6 -1
  52. package/dist/opBuilder.d.ts.map +1 -1
  53. package/dist/opBuilder.js +5 -0
  54. package/dist/opBuilder.js.map +1 -1
  55. package/dist/ops.d.ts.map +1 -1
  56. package/dist/ops.js.map +1 -1
  57. package/dist/ordinal.d.ts.map +1 -1
  58. package/dist/ordinal.js +7 -0
  59. package/dist/ordinal.js.map +1 -1
  60. package/dist/partialLengths.d.ts +4 -2
  61. package/dist/partialLengths.d.ts.map +1 -1
  62. package/dist/partialLengths.js +101 -53
  63. package/dist/partialLengths.js.map +1 -1
  64. package/dist/perspective.d.ts +4 -1
  65. package/dist/perspective.d.ts.map +1 -1
  66. package/dist/perspective.js +7 -6
  67. package/dist/perspective.js.map +1 -1
  68. package/dist/properties.d.ts +13 -10
  69. package/dist/properties.d.ts.map +1 -1
  70. package/dist/properties.js +22 -11
  71. package/dist/properties.js.map +1 -1
  72. package/dist/public.d.ts +1 -1
  73. package/dist/referencePositions.d.ts +7 -0
  74. package/dist/referencePositions.d.ts.map +1 -1
  75. package/dist/referencePositions.js +7 -0
  76. package/dist/referencePositions.js.map +1 -1
  77. package/dist/revertibles.d.ts +6 -0
  78. package/dist/revertibles.d.ts.map +1 -1
  79. package/dist/revertibles.js +50 -21
  80. package/dist/revertibles.js.map +1 -1
  81. package/dist/segmentGroupCollection.d.ts.map +1 -1
  82. package/dist/segmentGroupCollection.js +2 -0
  83. package/dist/segmentGroupCollection.js.map +1 -1
  84. package/dist/segmentPropertiesManager.d.ts +7 -3
  85. package/dist/segmentPropertiesManager.d.ts.map +1 -1
  86. package/dist/segmentPropertiesManager.js +20 -15
  87. package/dist/segmentPropertiesManager.js.map +1 -1
  88. package/dist/snapshotChunks.d.ts.map +1 -1
  89. package/dist/snapshotChunks.js +10 -5
  90. package/dist/snapshotChunks.js.map +1 -1
  91. package/dist/snapshotLoader.d.ts.map +1 -1
  92. package/dist/snapshotLoader.js +14 -10
  93. package/dist/snapshotLoader.js.map +1 -1
  94. package/dist/snapshotV1.d.ts.map +1 -1
  95. package/dist/snapshotV1.js +20 -8
  96. package/dist/snapshotV1.js.map +1 -1
  97. package/dist/snapshotlegacy.d.ts.map +1 -1
  98. package/dist/snapshotlegacy.js +4 -2
  99. package/dist/snapshotlegacy.js.map +1 -1
  100. package/dist/sortedSegmentSet.d.ts.map +1 -1
  101. package/dist/sortedSegmentSet.js +8 -1
  102. package/dist/sortedSegmentSet.js.map +1 -1
  103. package/dist/sortedSet.d.ts.map +1 -1
  104. package/dist/sortedSet.js +4 -0
  105. package/dist/sortedSet.js.map +1 -1
  106. package/dist/test/Insertion.perf.spec.js.map +1 -1
  107. package/dist/test/Removal.perf.spec.js.map +1 -1
  108. package/dist/test/Snapshot.perf.spec.js +1 -0
  109. package/dist/test/Snapshot.perf.spec.js.map +1 -1
  110. package/dist/test/attributionCollection.perf.spec.js +3 -1
  111. package/dist/test/attributionCollection.perf.spec.js.map +1 -1
  112. package/dist/test/attributionCollection.spec.js +69 -68
  113. package/dist/test/attributionCollection.spec.js.map +1 -1
  114. package/dist/test/attributionPolicy.spec.js +29 -27
  115. package/dist/test/attributionPolicy.spec.js.map +1 -1
  116. package/dist/test/beastTest.spec.d.ts +1 -4
  117. package/dist/test/beastTest.spec.d.ts.map +1 -1
  118. package/dist/test/beastTest.spec.js +32 -30
  119. package/dist/test/beastTest.spec.js.map +1 -1
  120. package/dist/test/client.annotateMarker.spec.js +5 -5
  121. package/dist/test/client.annotateMarker.spec.js.map +1 -1
  122. package/dist/test/client.apis.spec.d.ts.map +1 -1
  123. package/dist/test/client.apis.spec.js +5 -7
  124. package/dist/test/client.apis.spec.js.map +1 -1
  125. package/dist/test/client.applyMsg.spec.js +125 -103
  126. package/dist/test/client.applyMsg.spec.js.map +1 -1
  127. package/dist/test/client.applyStashedOpFarm.spec.js +18 -10
  128. package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -1
  129. package/dist/test/client.attributionFarm.spec.js +13 -8
  130. package/dist/test/client.attributionFarm.spec.js.map +1 -1
  131. package/dist/test/client.conflictFarm.spec.js +4 -2
  132. package/dist/test/client.conflictFarm.spec.js.map +1 -1
  133. package/dist/test/client.getPosition.spec.js +10 -10
  134. package/dist/test/client.getPosition.spec.js.map +1 -1
  135. package/dist/test/client.localReference.spec.js +111 -104
  136. package/dist/test/client.localReference.spec.js.map +1 -1
  137. package/dist/test/client.localReferenceFarm.spec.js +14 -10
  138. package/dist/test/client.localReferenceFarm.spec.js.map +1 -1
  139. package/dist/test/client.rebasePosition.spec.js +12 -12
  140. package/dist/test/client.rebasePosition.spec.js.map +1 -1
  141. package/dist/test/client.reconnectFarm.spec.js +12 -9
  142. package/dist/test/client.reconnectFarm.spec.js.map +1 -1
  143. package/dist/test/client.replay.spec.js +11 -10
  144. package/dist/test/client.replay.spec.js.map +1 -1
  145. package/dist/test/client.rollback.spec.js +87 -84
  146. package/dist/test/client.rollback.spec.js.map +1 -1
  147. package/dist/test/client.rollbackFarm.spec.js +3 -1
  148. package/dist/test/client.rollbackFarm.spec.js.map +1 -1
  149. package/dist/test/client.searchForMarker.spec.js +122 -112
  150. package/dist/test/client.searchForMarker.spec.js.map +1 -1
  151. package/dist/test/client.walkSegments.spec.js +7 -7
  152. package/dist/test/client.walkSegments.spec.js.map +1 -1
  153. package/dist/test/collections.list.spec.js +14 -14
  154. package/dist/test/collections.list.spec.js.map +1 -1
  155. package/dist/test/createInsertOnlyAttributionPolicy.spec.js +3 -3
  156. package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  157. package/dist/test/dirname.cjs +1 -0
  158. package/dist/test/dirname.cjs.map +1 -1
  159. package/dist/test/dirname.d.cts.map +1 -1
  160. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +7 -7
  161. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  162. package/dist/test/mergeTree.annotate.spec.js +87 -87
  163. package/dist/test/mergeTree.annotate.spec.js.map +1 -1
  164. package/dist/test/mergeTree.insert.deltaCallback.spec.js +6 -6
  165. package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  166. package/dist/test/mergeTree.insertingWalk.spec.js +24 -24
  167. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -1
  168. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +6 -6
  169. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  170. package/dist/test/mergeTree.markRangeRemoved.spec.js +23 -23
  171. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  172. package/dist/test/mergeTree.walk.spec.js +3 -3
  173. package/dist/test/mergeTree.walk.spec.js.map +1 -1
  174. package/dist/test/mergeTree.zamboni.spec.js +10 -10
  175. package/dist/test/mergeTree.zamboni.spec.js.map +1 -1
  176. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -1
  177. package/dist/test/mergeTreeOperationRunner.js +28 -16
  178. package/dist/test/mergeTreeOperationRunner.js.map +1 -1
  179. package/dist/test/mergeTreeOperationRunner.spec.js +9 -5
  180. package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -1
  181. package/dist/test/obliterate.concurrent.spec.js +165 -165
  182. package/dist/test/obliterate.concurrent.spec.js.map +1 -1
  183. package/dist/test/obliterate.deltaCallback.spec.js +20 -21
  184. package/dist/test/obliterate.deltaCallback.spec.js.map +1 -1
  185. package/dist/test/obliterate.partialLength.spec.js +7 -7
  186. package/dist/test/obliterate.partialLength.spec.js.map +1 -1
  187. package/dist/test/obliterate.reconnect.spec.js +13 -13
  188. package/dist/test/obliterate.reconnect.spec.js.map +1 -1
  189. package/dist/test/obliterate.spec.js +9 -9
  190. package/dist/test/obliterate.spec.js.map +1 -1
  191. package/dist/test/ordinal.spec.js +10 -4
  192. package/dist/test/ordinal.spec.js.map +1 -1
  193. package/dist/test/partialLength.spec.js.map +1 -1
  194. package/dist/test/properties.spec.js +15 -15
  195. package/dist/test/properties.spec.js.map +1 -1
  196. package/dist/test/reconnectHelper.d.ts +4 -4
  197. package/dist/test/reconnectHelper.d.ts.map +1 -1
  198. package/dist/test/reconnectHelper.js +28 -20
  199. package/dist/test/reconnectHelper.js.map +1 -1
  200. package/dist/test/resetPendingSegmentsToOp.spec.js +35 -29
  201. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  202. package/dist/test/revertibleFarm.spec.js +11 -10
  203. package/dist/test/revertibleFarm.spec.js.map +1 -1
  204. package/dist/test/revertibles.spec.d.ts.map +1 -1
  205. package/dist/test/revertibles.spec.js +96 -57
  206. package/dist/test/revertibles.spec.js.map +1 -1
  207. package/dist/test/segmentGroupCollection.spec.js +17 -17
  208. package/dist/test/segmentGroupCollection.spec.js.map +1 -1
  209. package/dist/test/snapshot.spec.js +5 -5
  210. package/dist/test/snapshot.spec.js.map +1 -1
  211. package/dist/test/snapshot.utils.d.ts.map +1 -1
  212. package/dist/test/snapshot.utils.js +6 -6
  213. package/dist/test/snapshot.utils.js.map +1 -1
  214. package/dist/test/snapshotlegacy.spec.js +18 -13
  215. package/dist/test/snapshotlegacy.spec.js.map +1 -1
  216. package/dist/test/sortedSegmentSet.spec.js +22 -18
  217. package/dist/test/sortedSegmentSet.spec.js.map +1 -1
  218. package/dist/test/testClient.d.ts +6 -5
  219. package/dist/test/testClient.d.ts.map +1 -1
  220. package/dist/test/testClient.js +30 -32
  221. package/dist/test/testClient.js.map +1 -1
  222. package/dist/test/testClientLogger.d.ts.map +1 -1
  223. package/dist/test/testClientLogger.js +39 -38
  224. package/dist/test/testClientLogger.js.map +1 -1
  225. package/dist/test/testSerializer.d.ts +5 -5
  226. package/dist/test/testSerializer.d.ts.map +1 -1
  227. package/dist/test/testSerializer.js +0 -1
  228. package/dist/test/testSerializer.js.map +1 -1
  229. package/dist/test/testServer.d.ts.map +1 -1
  230. package/dist/test/testServer.js.map +1 -1
  231. package/dist/test/testUtils.d.ts +1 -1
  232. package/dist/test/testUtils.d.ts.map +1 -1
  233. package/dist/test/testUtils.js +15 -17
  234. package/dist/test/testUtils.js.map +1 -1
  235. package/dist/test/text.d.ts.map +1 -1
  236. package/dist/test/text.js +1 -1
  237. package/dist/test/text.js.map +1 -1
  238. package/dist/test/tracking.spec.js +50 -46
  239. package/dist/test/tracking.spec.js.map +1 -1
  240. package/dist/test/wordUnitTests.spec.d.ts.map +1 -1
  241. package/dist/test/wordUnitTests.spec.js +10 -10
  242. package/dist/test/wordUnitTests.spec.js.map +1 -1
  243. package/dist/textSegment.d.ts +1 -1
  244. package/dist/textSegment.d.ts.map +1 -1
  245. package/dist/textSegment.js +3 -3
  246. package/dist/textSegment.js.map +1 -1
  247. package/dist/zamboni.d.ts.map +1 -1
  248. package/dist/zamboni.js +7 -2
  249. package/dist/zamboni.js.map +1 -1
  250. package/internal.d.ts +1 -1
  251. package/legacy.d.ts +1 -1
  252. package/lib/MergeTreeTextHelper.d.ts.map +1 -1
  253. package/lib/MergeTreeTextHelper.js +1 -1
  254. package/lib/MergeTreeTextHelper.js.map +1 -1
  255. package/lib/attributionCollection.d.ts.map +1 -1
  256. package/lib/attributionCollection.js +65 -17
  257. package/lib/attributionCollection.js.map +1 -1
  258. package/lib/attributionPolicy.d.ts +2 -1
  259. package/lib/attributionPolicy.d.ts.map +1 -1
  260. package/lib/attributionPolicy.js +10 -3
  261. package/lib/attributionPolicy.js.map +1 -1
  262. package/lib/client.d.ts +3 -1
  263. package/lib/client.d.ts.map +1 -1
  264. package/lib/client.js +65 -37
  265. package/lib/client.js.map +1 -1
  266. package/lib/collections/list.d.ts.map +1 -1
  267. package/lib/collections/list.js +5 -2
  268. package/lib/collections/list.js.map +1 -1
  269. package/lib/collections/rbTree.d.ts +2 -2
  270. package/lib/collections/rbTree.d.ts.map +1 -1
  271. package/lib/collections/rbTree.js +23 -35
  272. package/lib/collections/rbTree.js.map +1 -1
  273. package/lib/endOfTreeSegment.d.ts.map +1 -1
  274. package/lib/endOfTreeSegment.js +4 -1
  275. package/lib/endOfTreeSegment.js.map +1 -1
  276. package/lib/legacy.d.ts +1 -1
  277. package/lib/localReference.d.ts +16 -6
  278. package/lib/localReference.d.ts.map +1 -1
  279. package/lib/localReference.js +31 -20
  280. package/lib/localReference.js.map +1 -1
  281. package/lib/mergeTree.d.ts +0 -1
  282. package/lib/mergeTree.d.ts.map +1 -1
  283. package/lib/mergeTree.js +127 -112
  284. package/lib/mergeTree.js.map +1 -1
  285. package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
  286. package/lib/mergeTreeNodeWalk.js +1 -1
  287. package/lib/mergeTreeNodeWalk.js.map +1 -1
  288. package/lib/mergeTreeNodes.d.ts +6 -5
  289. package/lib/mergeTreeNodes.d.ts.map +1 -1
  290. package/lib/mergeTreeNodes.js +29 -20
  291. package/lib/mergeTreeNodes.js.map +1 -1
  292. package/lib/mergeTreeTracking.js +3 -3
  293. package/lib/mergeTreeTracking.js.map +1 -1
  294. package/lib/opBuilder.d.ts +6 -1
  295. package/lib/opBuilder.d.ts.map +1 -1
  296. package/lib/opBuilder.js +5 -0
  297. package/lib/opBuilder.js.map +1 -1
  298. package/lib/ops.d.ts.map +1 -1
  299. package/lib/ops.js.map +1 -1
  300. package/lib/ordinal.d.ts.map +1 -1
  301. package/lib/ordinal.js +7 -0
  302. package/lib/ordinal.js.map +1 -1
  303. package/lib/partialLengths.d.ts +4 -2
  304. package/lib/partialLengths.d.ts.map +1 -1
  305. package/lib/partialLengths.js +101 -53
  306. package/lib/partialLengths.js.map +1 -1
  307. package/lib/perspective.d.ts +4 -1
  308. package/lib/perspective.d.ts.map +1 -1
  309. package/lib/perspective.js +7 -6
  310. package/lib/perspective.js.map +1 -1
  311. package/lib/properties.d.ts +13 -10
  312. package/lib/properties.d.ts.map +1 -1
  313. package/lib/properties.js +22 -11
  314. package/lib/properties.js.map +1 -1
  315. package/lib/public.d.ts +1 -1
  316. package/lib/referencePositions.d.ts +7 -0
  317. package/lib/referencePositions.d.ts.map +1 -1
  318. package/lib/referencePositions.js +7 -0
  319. package/lib/referencePositions.js.map +1 -1
  320. package/lib/revertibles.d.ts +6 -0
  321. package/lib/revertibles.d.ts.map +1 -1
  322. package/lib/revertibles.js +50 -21
  323. package/lib/revertibles.js.map +1 -1
  324. package/lib/segmentGroupCollection.d.ts.map +1 -1
  325. package/lib/segmentGroupCollection.js +2 -0
  326. package/lib/segmentGroupCollection.js.map +1 -1
  327. package/lib/segmentPropertiesManager.d.ts +7 -3
  328. package/lib/segmentPropertiesManager.d.ts.map +1 -1
  329. package/lib/segmentPropertiesManager.js +20 -15
  330. package/lib/segmentPropertiesManager.js.map +1 -1
  331. package/lib/snapshotChunks.d.ts.map +1 -1
  332. package/lib/snapshotChunks.js +10 -5
  333. package/lib/snapshotChunks.js.map +1 -1
  334. package/lib/snapshotLoader.d.ts.map +1 -1
  335. package/lib/snapshotLoader.js +14 -10
  336. package/lib/snapshotLoader.js.map +1 -1
  337. package/lib/snapshotV1.d.ts.map +1 -1
  338. package/lib/snapshotV1.js +20 -8
  339. package/lib/snapshotV1.js.map +1 -1
  340. package/lib/snapshotlegacy.d.ts.map +1 -1
  341. package/lib/snapshotlegacy.js +4 -2
  342. package/lib/snapshotlegacy.js.map +1 -1
  343. package/lib/sortedSegmentSet.d.ts.map +1 -1
  344. package/lib/sortedSegmentSet.js +8 -1
  345. package/lib/sortedSegmentSet.js.map +1 -1
  346. package/lib/sortedSet.d.ts.map +1 -1
  347. package/lib/sortedSet.js +4 -0
  348. package/lib/sortedSet.js.map +1 -1
  349. package/lib/test/Insertion.perf.spec.js.map +1 -1
  350. package/lib/test/Removal.perf.spec.js.map +1 -1
  351. package/lib/test/Snapshot.perf.spec.js +1 -0
  352. package/lib/test/Snapshot.perf.spec.js.map +1 -1
  353. package/lib/test/attributionCollection.perf.spec.js +3 -1
  354. package/lib/test/attributionCollection.perf.spec.js.map +1 -1
  355. package/lib/test/attributionCollection.spec.js +3 -2
  356. package/lib/test/attributionCollection.spec.js.map +1 -1
  357. package/lib/test/attributionPolicy.spec.js +3 -1
  358. package/lib/test/attributionPolicy.spec.js.map +1 -1
  359. package/lib/test/beastTest.spec.d.ts +1 -4
  360. package/lib/test/beastTest.spec.d.ts.map +1 -1
  361. package/lib/test/beastTest.spec.js +26 -24
  362. package/lib/test/beastTest.spec.js.map +1 -1
  363. package/lib/test/client.annotateMarker.spec.js +1 -1
  364. package/lib/test/client.annotateMarker.spec.js.map +1 -1
  365. package/lib/test/client.apis.spec.d.ts.map +1 -1
  366. package/lib/test/client.apis.spec.js +4 -6
  367. package/lib/test/client.apis.spec.js.map +1 -1
  368. package/lib/test/client.applyMsg.spec.js +72 -50
  369. package/lib/test/client.applyMsg.spec.js.map +1 -1
  370. package/lib/test/client.applyStashedOpFarm.spec.js +18 -10
  371. package/lib/test/client.applyStashedOpFarm.spec.js.map +1 -1
  372. package/lib/test/client.attributionFarm.spec.js +12 -7
  373. package/lib/test/client.attributionFarm.spec.js.map +1 -1
  374. package/lib/test/client.conflictFarm.spec.js +4 -2
  375. package/lib/test/client.conflictFarm.spec.js.map +1 -1
  376. package/lib/test/client.getPosition.spec.js +1 -1
  377. package/lib/test/client.getPosition.spec.js.map +1 -1
  378. package/lib/test/client.localReference.spec.js +14 -7
  379. package/lib/test/client.localReference.spec.js.map +1 -1
  380. package/lib/test/client.localReferenceFarm.spec.js +13 -9
  381. package/lib/test/client.localReferenceFarm.spec.js.map +1 -1
  382. package/lib/test/client.rebasePosition.spec.js +1 -1
  383. package/lib/test/client.rebasePosition.spec.js.map +1 -1
  384. package/lib/test/client.reconnectFarm.spec.js +11 -8
  385. package/lib/test/client.reconnectFarm.spec.js.map +1 -1
  386. package/lib/test/client.replay.spec.js +8 -7
  387. package/lib/test/client.replay.spec.js.map +1 -1
  388. package/lib/test/client.rollback.spec.js +14 -11
  389. package/lib/test/client.rollback.spec.js.map +1 -1
  390. package/lib/test/client.rollbackFarm.spec.js +3 -1
  391. package/lib/test/client.rollbackFarm.spec.js.map +1 -1
  392. package/lib/test/client.searchForMarker.spec.js +29 -19
  393. package/lib/test/client.searchForMarker.spec.js.map +1 -1
  394. package/lib/test/client.walkSegments.spec.js +1 -1
  395. package/lib/test/client.walkSegments.spec.js.map +1 -1
  396. package/lib/test/collections.list.spec.js +1 -1
  397. package/lib/test/collections.list.spec.js.map +1 -1
  398. package/lib/test/createInsertOnlyAttributionPolicy.spec.js +1 -1
  399. package/lib/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -1
  400. package/lib/test/dirname.cjs +1 -0
  401. package/lib/test/dirname.cjs.map +1 -1
  402. package/lib/test/dirname.d.cts.map +1 -1
  403. package/lib/test/mergeTree.annotate.deltaCallback.spec.js +1 -1
  404. package/lib/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -1
  405. package/lib/test/mergeTree.annotate.spec.js +1 -1
  406. package/lib/test/mergeTree.annotate.spec.js.map +1 -1
  407. package/lib/test/mergeTree.insert.deltaCallback.spec.js +1 -1
  408. package/lib/test/mergeTree.insert.deltaCallback.spec.js.map +1 -1
  409. package/lib/test/mergeTree.insertingWalk.spec.js +8 -8
  410. package/lib/test/mergeTree.insertingWalk.spec.js.map +1 -1
  411. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +1 -1
  412. package/lib/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -1
  413. package/lib/test/mergeTree.markRangeRemoved.spec.js +1 -1
  414. package/lib/test/mergeTree.markRangeRemoved.spec.js.map +1 -1
  415. package/lib/test/mergeTree.walk.spec.js +1 -1
  416. package/lib/test/mergeTree.walk.spec.js.map +1 -1
  417. package/lib/test/mergeTree.zamboni.spec.js +1 -1
  418. package/lib/test/mergeTree.zamboni.spec.js.map +1 -1
  419. package/lib/test/mergeTreeOperationRunner.d.ts.map +1 -1
  420. package/lib/test/mergeTreeOperationRunner.js +27 -15
  421. package/lib/test/mergeTreeOperationRunner.js.map +1 -1
  422. package/lib/test/mergeTreeOperationRunner.spec.js +5 -1
  423. package/lib/test/mergeTreeOperationRunner.spec.js.map +1 -1
  424. package/lib/test/obliterate.concurrent.spec.js +4 -4
  425. package/lib/test/obliterate.concurrent.spec.js.map +1 -1
  426. package/lib/test/obliterate.deltaCallback.spec.js +2 -3
  427. package/lib/test/obliterate.deltaCallback.spec.js.map +1 -1
  428. package/lib/test/obliterate.partialLength.spec.js +1 -1
  429. package/lib/test/obliterate.partialLength.spec.js.map +1 -1
  430. package/lib/test/obliterate.reconnect.spec.js +1 -1
  431. package/lib/test/obliterate.reconnect.spec.js.map +1 -1
  432. package/lib/test/obliterate.spec.js +1 -1
  433. package/lib/test/obliterate.spec.js.map +1 -1
  434. package/lib/test/ordinal.spec.js +7 -1
  435. package/lib/test/ordinal.spec.js.map +1 -1
  436. package/lib/test/partialLength.spec.js.map +1 -1
  437. package/lib/test/properties.spec.js +1 -1
  438. package/lib/test/properties.spec.js.map +1 -1
  439. package/lib/test/reconnectHelper.d.ts +4 -4
  440. package/lib/test/reconnectHelper.d.ts.map +1 -1
  441. package/lib/test/reconnectHelper.js +22 -14
  442. package/lib/test/reconnectHelper.js.map +1 -1
  443. package/lib/test/resetPendingSegmentsToOp.spec.js +8 -2
  444. package/lib/test/resetPendingSegmentsToOp.spec.js.map +1 -1
  445. package/lib/test/revertibleFarm.spec.js +8 -7
  446. package/lib/test/revertibleFarm.spec.js.map +1 -1
  447. package/lib/test/revertibles.spec.d.ts.map +1 -1
  448. package/lib/test/revertibles.spec.js +93 -54
  449. package/lib/test/revertibles.spec.js.map +1 -1
  450. package/lib/test/segmentGroupCollection.spec.js +1 -1
  451. package/lib/test/segmentGroupCollection.spec.js.map +1 -1
  452. package/lib/test/snapshot.spec.js +1 -1
  453. package/lib/test/snapshot.spec.js.map +1 -1
  454. package/lib/test/snapshot.utils.d.ts.map +1 -1
  455. package/lib/test/snapshot.utils.js +1 -1
  456. package/lib/test/snapshot.utils.js.map +1 -1
  457. package/lib/test/snapshotlegacy.spec.js +10 -5
  458. package/lib/test/snapshotlegacy.spec.js.map +1 -1
  459. package/lib/test/sortedSegmentSet.spec.js +6 -2
  460. package/lib/test/sortedSegmentSet.spec.js.map +1 -1
  461. package/lib/test/testClient.d.ts +6 -5
  462. package/lib/test/testClient.d.ts.map +1 -1
  463. package/lib/test/testClient.js +25 -27
  464. package/lib/test/testClient.js.map +1 -1
  465. package/lib/test/testClientLogger.d.ts.map +1 -1
  466. package/lib/test/testClientLogger.js +37 -36
  467. package/lib/test/testClientLogger.js.map +1 -1
  468. package/lib/test/testSerializer.d.ts +5 -5
  469. package/lib/test/testSerializer.d.ts.map +1 -1
  470. package/lib/test/testSerializer.js +0 -1
  471. package/lib/test/testSerializer.js.map +1 -1
  472. package/lib/test/testServer.d.ts.map +1 -1
  473. package/lib/test/testServer.js.map +1 -1
  474. package/lib/test/testUtils.d.ts +1 -1
  475. package/lib/test/testUtils.d.ts.map +1 -1
  476. package/lib/test/testUtils.js +6 -8
  477. package/lib/test/testUtils.js.map +1 -1
  478. package/lib/test/text.d.ts.map +1 -1
  479. package/lib/test/text.js +1 -1
  480. package/lib/test/text.js.map +1 -1
  481. package/lib/test/tracking.spec.js +9 -5
  482. package/lib/test/tracking.spec.js.map +1 -1
  483. package/lib/test/wordUnitTests.spec.d.ts.map +1 -1
  484. package/lib/test/wordUnitTests.spec.js +9 -9
  485. package/lib/test/wordUnitTests.spec.js.map +1 -1
  486. package/lib/textSegment.d.ts +1 -1
  487. package/lib/textSegment.d.ts.map +1 -1
  488. package/lib/textSegment.js +3 -3
  489. package/lib/textSegment.js.map +1 -1
  490. package/lib/zamboni.d.ts.map +1 -1
  491. package/lib/zamboni.js +7 -2
  492. package/lib/zamboni.js.map +1 -1
  493. package/package.json +29 -27
  494. package/src/MergeTreeTextHelper.ts +2 -2
  495. package/src/attributionCollection.ts +71 -28
  496. package/src/attributionPolicy.ts +14 -9
  497. package/src/client.ts +120 -71
  498. package/src/collections/list.ts +9 -6
  499. package/src/collections/rbTree.ts +62 -71
  500. package/src/endOfTreeSegment.ts +21 -10
  501. package/src/localReference.ts +61 -43
  502. package/src/mergeTree.ts +229 -178
  503. package/src/mergeTreeNodeWalk.ts +2 -1
  504. package/src/mergeTreeNodes.ts +59 -46
  505. package/src/mergeTreeTracking.ts +3 -3
  506. package/src/opBuilder.ts +6 -1
  507. package/src/ops.ts +5 -0
  508. package/src/ordinal.ts +8 -1
  509. package/src/partialLengths.ts +143 -87
  510. package/src/perspective.ts +10 -7
  511. package/src/properties.ts +36 -18
  512. package/src/referencePositions.ts +7 -0
  513. package/src/revertibles.ts +71 -41
  514. package/src/segmentGroupCollection.ts +8 -6
  515. package/src/segmentPropertiesManager.ts +28 -24
  516. package/src/snapshotChunks.ts +12 -7
  517. package/src/snapshotLoader.ts +20 -17
  518. package/src/snapshotV1.ts +36 -18
  519. package/src/snapshotlegacy.ts +7 -5
  520. package/src/sortedSegmentSet.ts +9 -3
  521. package/src/sortedSet.ts +7 -3
  522. package/src/textSegment.ts +9 -9
  523. package/src/zamboni.ts +14 -10
  524. package/tsconfig.json +0 -1
@@ -4,7 +4,7 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const assert_1 = require("assert");
7
+ const node_assert_1 = require("node:assert");
8
8
  const stochastic_test_utils_1 = require("@fluid-private/stochastic-test-utils");
9
9
  const constants_js_1 = require("../constants.js");
10
10
  const mergeTreeNodes_js_1 = require("../mergeTreeNodes.js");
@@ -37,15 +37,15 @@ describe("TestClient", () => {
37
37
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
38
38
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
39
39
  });
40
- assert_1.strict.equal(client.getLength(), 8);
40
+ node_assert_1.strict.equal(client.getLength(), 8);
41
41
  const marker1 = client.searchForMarker(4, "Eop", true);
42
- (0, assert_1.strict)(marker1, "Returned marker undefined.");
42
+ (0, node_assert_1.strict)(marker1, "Returned marker undefined.");
43
43
  let exp = client.mergeTree.referencePositionToLocalPosition(marker1, constants_js_1.UniversalSequenceNumber, client.getClientId());
44
- assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
44
+ node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
45
45
  const marker2 = client.searchForMarker(4, "Eop", false);
46
- (0, assert_1.strict)(marker2, "Returned marker undefined.");
46
+ (0, node_assert_1.strict)(marker2, "Returned marker undefined.");
47
47
  exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
48
- assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
48
+ node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
49
49
  });
50
50
  it("Should return the marker at the search position in either direction from multiple blocks", () => {
51
51
  client.insertTextLocal(0, "abcd");
@@ -54,15 +54,15 @@ describe("TestClient", () => {
54
54
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
55
55
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
56
56
  });
57
- assert_1.strict.equal(client.getLength(), 8);
57
+ node_assert_1.strict.equal(client.getLength(), 8);
58
58
  const marker1 = client.searchForMarker(4, "Eop", true);
59
- (0, assert_1.strict)(marker1, "Returned marker undefined.");
59
+ (0, node_assert_1.strict)(marker1, "Returned marker undefined.");
60
60
  let exp = client.mergeTree.referencePositionToLocalPosition(marker1, constants_js_1.UniversalSequenceNumber, client.getClientId());
61
- assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
61
+ node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
62
62
  const marker2 = client.searchForMarker(4, "Eop", false);
63
- (0, assert_1.strict)(marker2, "Returned marker undefined.");
63
+ (0, node_assert_1.strict)(marker2, "Returned marker undefined.");
64
64
  exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
65
- assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
65
+ node_assert_1.strict.equal(exp, 4, "Marker with label not at expected position");
66
66
  });
67
67
  it("Should be able to find forward marker position based on label", () => {
68
68
  const markerLabel = "EOP";
@@ -71,11 +71,11 @@ describe("TestClient", () => {
71
71
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
72
72
  });
73
73
  client.insertTextLocal(0, "abc");
74
- assert_1.strict.equal(client.getLength(), 4, "length not expected");
74
+ node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
75
75
  const marker = client.searchForMarker(0, markerLabel, true);
76
- (0, assert_1.strict)(marker, "Returned marker undefined.");
76
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
77
77
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
78
- assert_1.strict.equal(exp, 3, "Marker with label not at expected position");
78
+ node_assert_1.strict.equal(exp, 3, "Marker with label not at expected position");
79
79
  });
80
80
  it("Should be able to find forward marker position based on label from client with single marker", () => {
81
81
  const markerLabel = "EOP";
@@ -84,11 +84,11 @@ describe("TestClient", () => {
84
84
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
85
85
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
86
86
  });
87
- assert_1.strict.equal(client.getLength(), 6, "length not expected");
87
+ node_assert_1.strict.equal(client.getLength(), 6, "length not expected");
88
88
  const marker = client.searchForMarker(0, markerLabel, true);
89
- (0, assert_1.strict)(marker, "Returned marker undefined.");
89
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
90
90
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
91
- assert_1.strict.equal(exp, 1, "Marker with label not at expected position");
91
+ node_assert_1.strict.equal(exp, 1, "Marker with label not at expected position");
92
92
  });
93
93
  it("Should be able to find backward marker position based on label from client with multiple marker", () => {
94
94
  const markerLabel = "EOP";
@@ -106,11 +106,11 @@ describe("TestClient", () => {
106
106
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
107
107
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
108
108
  });
109
- assert_1.strict.equal(client.getLength(), 10, "length not expected");
109
+ node_assert_1.strict.equal(client.getLength(), 10, "length not expected");
110
110
  const marker = client.searchForMarker(5, markerLabel, false);
111
- (0, assert_1.strict)(marker, "Returned marker undefined.");
111
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
112
112
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
113
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
113
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
114
114
  });
115
115
  it("Should be able to find forward marker position from client with multiple marker", () => {
116
116
  const markerLabel = "EOP";
@@ -128,15 +128,16 @@ describe("TestClient", () => {
128
128
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
129
129
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
130
130
  });
131
- assert_1.strict.equal(client.getLength(), 10, "length not expected");
131
+ node_assert_1.strict.equal(client.getLength(), 10, "length not expected");
132
132
  const marker = client.searchForMarker(5, markerLabel, true);
133
- (0, assert_1.strict)(marker, "Returned marker undefined.");
133
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
134
134
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
135
- assert_1.strict.equal(exp, 6, "Marker with label not at expected position");
135
+ node_assert_1.strict.equal(exp, 6, "Marker with label not at expected position");
136
136
  });
137
137
  it("Should be able to find forward marker position with multiple segments and markers", () => {
138
138
  const markerLabel = "EOP";
139
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
139
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
140
+ client.insertTextLocal(0, i.toString());
140
141
  // pad the string with markers on both ends so we never get undefined solely for convenience of this test
141
142
  for (let i = 0; i <= client.getLength(); i += 3) {
142
143
  client.insertMarkerLocal(i, ops_js_1.ReferenceType.Tile, {
@@ -146,15 +147,16 @@ describe("TestClient", () => {
146
147
  }
147
148
  for (let index = 0; index < client.getLength(); index++) {
148
149
  const marker = client.searchForMarker(index, markerLabel, true);
149
- (0, assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
150
+ (0, node_assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
150
151
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
151
152
  const offset = index % 3 === 0 ? index % 3 : 3 - (index % 3);
152
- assert_1.strict.equal(exp, index + offset, "Marker with label not at expected position");
153
+ node_assert_1.strict.equal(exp, index + offset, "Marker with label not at expected position");
153
154
  }
154
155
  });
155
156
  it("Should be able to find backward marker position with multiple segments and markers", () => {
156
157
  const markerLabel = "EOP";
157
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
158
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
159
+ client.insertTextLocal(0, i.toString());
158
160
  // pad the string with markers on both ends so we never get undefined solely for convenience of this test
159
161
  for (let i = 0; i <= client.getLength(); i += 3) {
160
162
  client.insertMarkerLocal(i, ops_js_1.ReferenceType.Tile, {
@@ -164,14 +166,15 @@ describe("TestClient", () => {
164
166
  }
165
167
  for (let index = client.getLength() - 1; index >= 0; index--) {
166
168
  const marker = client.searchForMarker(index, markerLabel, false);
167
- (0, assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
169
+ (0, node_assert_1.strict)(marker, `Returned marker undefined @ ${index}.`);
168
170
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
169
- assert_1.strict.equal(exp, index - (index % 3), "Marker with label not at expected position");
171
+ node_assert_1.strict.equal(exp, index - (index % 3), "Marker with label not at expected position");
170
172
  }
171
173
  });
172
174
  it("Should be able to find distant forward marker", () => {
173
175
  const markerLabel = "EOP";
174
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
176
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
177
+ client.insertTextLocal(0, i.toString());
175
178
  for (let i = 10; i > 1; i -= 2) {
176
179
  client.insertMarkerLocal(client.getLength() - i, ops_js_1.ReferenceType.Tile, {
177
180
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
@@ -181,12 +184,13 @@ describe("TestClient", () => {
181
184
  for (let index = 0; index < client.getLength(); index++) {
182
185
  const exp = client.slowSearchForMarker(index, markerLabel, true);
183
186
  const actual = client.searchForMarker(index, markerLabel, true);
184
- assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
187
+ node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
185
188
  }
186
189
  });
187
190
  it("Should be able to find distant backward marker", () => {
188
191
  const markerLabel = "EOP";
189
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
192
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock ** 3 * 2 }).entries())
193
+ client.insertTextLocal(0, i.toString());
190
194
  for (let i = 10; i > 1; i -= 2) {
191
195
  client.insertMarkerLocal(client.getLength() - i, ops_js_1.ReferenceType.Tile, {
192
196
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
@@ -196,12 +200,13 @@ describe("TestClient", () => {
196
200
  for (let index = client.getLength() - 1; index >= 0; index--) {
197
201
  const exp = client.slowSearchForMarker(index, markerLabel, false);
198
202
  const actual = client.searchForMarker(index, markerLabel, false);
199
- assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
203
+ node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
200
204
  }
201
205
  });
202
206
  it("Should match results from forwardExcursion for many segments", () => {
203
207
  const markerLabel = "EOP";
204
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
208
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).entries())
209
+ client.insertTextLocal(0, i.toString());
205
210
  const random = (0, stochastic_test_utils_1.makeRandom)(0xdeadbeef, 0xfeedbed, client.getLength());
206
211
  for (let i = 0; i <= client.getLength() / 6; i++) {
207
212
  const pos = random.integer(0, client.getLength() - 1);
@@ -213,12 +218,13 @@ describe("TestClient", () => {
213
218
  for (let index = 0; index < client.getLength(); index++) {
214
219
  const exp = client.slowSearchForMarker(index, markerLabel, true);
215
220
  const actual = client.searchForMarker(index, markerLabel, true);
216
- assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
221
+ node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
217
222
  }
218
223
  });
219
224
  it("Should match results from backwardExcursion for many segments", () => {
220
225
  const markerLabel = "EOP";
221
- Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).forEach((_, i) => client.insertTextLocal(0, i.toString()));
226
+ for (const [i, _] of Array.from({ length: mergeTreeNodes_js_1.MaxNodesInBlock * 3 }).entries())
227
+ client.insertTextLocal(0, i.toString());
222
228
  const random = (0, stochastic_test_utils_1.makeRandom)(0xdeadbeef, 0xfeedbed, client.getLength());
223
229
  for (let i = 0; i <= client.getLength() / 6; i++) {
224
230
  const pos = random.integer(0, client.getLength() - 1);
@@ -230,7 +236,7 @@ describe("TestClient", () => {
230
236
  for (let index = 0; index < client.getLength(); index++) {
231
237
  const exp = client.slowSearchForMarker(index, markerLabel, false);
232
238
  const actual = client.searchForMarker(index, markerLabel, false);
233
- assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
239
+ node_assert_1.strict.equal(exp, actual, "Marker with label not at expected position");
234
240
  }
235
241
  });
236
242
  it("Should be able to find marker from client with text length 1", () => {
@@ -239,15 +245,15 @@ describe("TestClient", () => {
239
245
  [referencePositions_js_1.reservedTileLabelsKey]: [markerLabel],
240
246
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
241
247
  });
242
- assert_1.strict.equal(client.getLength(), 1, "length not expected");
248
+ node_assert_1.strict.equal(client.getLength(), 1, "length not expected");
243
249
  const marker = client.searchForMarker(client.getLength() - 1, markerLabel, false);
244
- (0, assert_1.strict)(marker, "Returned marker undefined.");
250
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
245
251
  let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
246
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
252
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
247
253
  const marker1 = client.searchForMarker(0, markerLabel, true);
248
- (0, assert_1.strict)(marker1, "Returned marker undefined.");
254
+ (0, node_assert_1.strict)(marker1, "Returned marker undefined.");
249
255
  exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
250
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
256
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
251
257
  });
252
258
  it("Should not be able to find marker position with index out of bound", () => {
253
259
  const markerLabel = "EOP";
@@ -256,13 +262,13 @@ describe("TestClient", () => {
256
262
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "some-id",
257
263
  });
258
264
  client.insertTextLocal(0, "abc");
259
- assert_1.strict.equal(client.getLength(), 4, "length not expected");
265
+ node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
260
266
  const marker = client.searchForMarker(5, markerLabel, true);
261
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
267
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
262
268
  const marker1 = client.searchForMarker(5, markerLabel, false);
263
- assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
269
+ node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
264
270
  const marker2 = client.searchForMarker(-1, markerLabel, false);
265
- assert_1.strict.equal(marker2, undefined, "Returned marker should be undefined.");
271
+ node_assert_1.strict.equal(marker2, undefined, "Returned marker should be undefined.");
266
272
  });
267
273
  it("Should be able to find a deleted and rolled back marker", () => {
268
274
  client.insertTextLocal(0, "abc");
@@ -273,9 +279,9 @@ describe("TestClient", () => {
273
279
  client.removeRangeLocal(0, 1);
274
280
  client.rollback?.({ type: ops_js_1.MergeTreeDeltaType.REMOVE }, client.peekPendingSegmentGroups());
275
281
  const marker = client.searchForMarker(0, "Eop", true);
276
- (0, assert_1.strict)(marker, "Returned marker undefined.");
282
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
277
283
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
278
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
284
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
279
285
  });
280
286
  it("Should not be able to find an inserted and rolled back marker", () => {
281
287
  client.insertTextLocal(0, "abc");
@@ -285,7 +291,7 @@ describe("TestClient", () => {
285
291
  });
286
292
  client.rollback?.({ type: ops_js_1.MergeTreeDeltaType.INSERT }, client.peekPendingSegmentGroups());
287
293
  const marker = client.searchForMarker(0, "Eop", true);
288
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
294
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
289
295
  });
290
296
  it("Should be able to find a marker at 0 searching at 0 in both directions", () => {
291
297
  client.insertTextLocal(0, "abc");
@@ -293,15 +299,15 @@ describe("TestClient", () => {
293
299
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
294
300
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
295
301
  });
296
- assert_1.strict.equal(client.getLength(), 4);
302
+ node_assert_1.strict.equal(client.getLength(), 4);
297
303
  const marker = client.searchForMarker(0, "Eop", true);
298
- (0, assert_1.strict)(marker, "Returned marker undefined.");
304
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
299
305
  let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
300
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
306
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
301
307
  const marker2 = client.searchForMarker(0, "Eop", false);
302
- (0, assert_1.strict)(marker2, "Returned marker undefined.");
308
+ (0, node_assert_1.strict)(marker2, "Returned marker undefined.");
303
309
  exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
304
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
310
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
305
311
  });
306
312
  it("Should be able to find a marker at length-1 searching at length-1 in both directions", () => {
307
313
  client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
@@ -310,33 +316,33 @@ describe("TestClient", () => {
310
316
  });
311
317
  client.insertTextLocal(0, "abc");
312
318
  const length = client.getLength();
313
- assert_1.strict.equal(length, 4);
319
+ node_assert_1.strict.equal(length, 4);
314
320
  const marker = client.searchForMarker(length - 1, "Eop", true);
315
- (0, assert_1.strict)(marker, "Returned marker undefined.");
321
+ (0, node_assert_1.strict)(marker, "Returned marker undefined.");
316
322
  let exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
317
- assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
323
+ node_assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
318
324
  const marker2 = client.searchForMarker(length - 1, "Eop", false);
319
- (0, assert_1.strict)(marker2, "Returned marker undefined.");
325
+ (0, node_assert_1.strict)(marker2, "Returned marker undefined.");
320
326
  exp = client.mergeTree.referencePositionToLocalPosition(marker2, constants_js_1.UniversalSequenceNumber, client.getClientId());
321
- assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
327
+ node_assert_1.strict.equal(exp, length - 1, "Marker with label not at expected position");
322
328
  });
323
329
  it("Should return undefined when searching past the end of a string length 1", () => {
324
330
  client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
325
331
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
326
332
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
327
333
  });
328
- assert_1.strict.equal(client.getLength(), 1);
334
+ node_assert_1.strict.equal(client.getLength(), 1);
329
335
  const marker = client.searchForMarker(client.getLength(), "Eop", true);
330
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
336
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
331
337
  });
332
338
  it("Should return undefined when searching before the start of a string length 1", () => {
333
339
  client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
334
340
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
335
341
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
336
342
  });
337
- assert_1.strict.equal(client.getLength(), 1);
343
+ node_assert_1.strict.equal(client.getLength(), 1);
338
344
  const marker = client.searchForMarker(-1, "Eop", false);
339
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
345
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
340
346
  });
341
347
  it("Should return undefined when searching past the end of a string length > 1", () => {
342
348
  client.insertMarkerLocal(0, ops_js_1.ReferenceType.Tile, {
@@ -344,9 +350,9 @@ describe("TestClient", () => {
344
350
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
345
351
  });
346
352
  client.insertTextLocal(0, "abc");
347
- assert_1.strict.equal(client.getLength(), 4);
353
+ node_assert_1.strict.equal(client.getLength(), 4);
348
354
  const marker = client.searchForMarker(client.getLength(), "Eop", true);
349
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
355
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
350
356
  });
351
357
  it("Should return undefined when searching before the start of a string length > 1", () => {
352
358
  client.insertTextLocal(0, "abc");
@@ -354,25 +360,25 @@ describe("TestClient", () => {
354
360
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
355
361
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
356
362
  });
357
- assert_1.strict.equal(client.getLength(), 4);
363
+ node_assert_1.strict.equal(client.getLength(), 4);
358
364
  const marker = client.searchForMarker(-1, "Eop", false);
359
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
365
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
360
366
  });
361
367
  it("Should return undefined when trying to find marker from text without the specified marker", () => {
362
368
  const markerLabel = "EOP";
363
369
  client.insertTextLocal(0, "abc");
364
- assert_1.strict.equal(client.getLength(), 3, "length not expected");
370
+ node_assert_1.strict.equal(client.getLength(), 3, "length not expected");
365
371
  const marker = client.searchForMarker(1, markerLabel);
366
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
372
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
367
373
  const marker1 = client.searchForMarker(1, markerLabel, false);
368
- assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
374
+ node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
369
375
  });
370
376
  it("Should return undefined when trying to find marker from null text", () => {
371
377
  const markerLabel = "EOP";
372
378
  const marker = client.searchForMarker(1, markerLabel);
373
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
379
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
374
380
  const marker1 = client.searchForMarker(1, markerLabel, false);
375
- assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
381
+ node_assert_1.strict.equal(marker1, undefined, "Returned marker should be undefined.");
376
382
  });
377
383
  it("Should return undefined when trying to find a removed marker", () => {
378
384
  client.insertTextLocal(0, "abc");
@@ -380,11 +386,11 @@ describe("TestClient", () => {
380
386
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: "marker",
381
387
  [referencePositions_js_1.reservedTileLabelsKey]: ["Eop"],
382
388
  });
383
- assert_1.strict.equal(client.getLength(), 4, "length not expected");
389
+ node_assert_1.strict.equal(client.getLength(), 4, "length not expected");
384
390
  client.removeRangeLocal(0, 1);
385
- assert_1.strict.equal(client.getLength(), 3, "length not expected");
391
+ node_assert_1.strict.equal(client.getLength(), 3, "length not expected");
386
392
  const marker = client.searchForMarker(0, "Eop", true);
387
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined");
393
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined");
388
394
  });
389
395
  describe("with remote client", () => {
390
396
  const remoteUserLongId = "remoteUser";
@@ -413,12 +419,12 @@ describe("TestClient", () => {
413
419
  client2.applyMsg(textMsg);
414
420
  client.applyMsg(markerMsg);
415
421
  client2.applyMsg(markerMsg);
416
- assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
417
- assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
422
+ node_assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
423
+ node_assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
418
424
  const marker = client.searchForMarker(0, "Eop", true);
419
- (0, assert_1.strict)(marker, "Returned marker undefined");
425
+ (0, node_assert_1.strict)(marker, "Returned marker undefined");
420
426
  const exp = client.mergeTree.referencePositionToLocalPosition(marker, constants_js_1.UniversalSequenceNumber, client.getClientId());
421
- assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
427
+ node_assert_1.strict.equal(exp, 0, "Marker with label not at expected position");
422
428
  });
423
429
  it("Should not be able to find remotely removed marker", () => {
424
430
  let seq = 0;
@@ -431,15 +437,15 @@ describe("TestClient", () => {
431
437
  client2.applyMsg(textMsg);
432
438
  client.applyMsg(mInsertMsg);
433
439
  client2.applyMsg(mInsertMsg);
434
- assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
435
- assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
440
+ node_assert_1.strict.equal(client.getLength(), 4, "length not expected - client");
441
+ node_assert_1.strict.equal(client2.getLength(), 4, "length not expected - client 2");
436
442
  const mRemoveMsg = client2.makeOpMessage(client2.removeRangeLocal(0, 1), seq);
437
443
  client.applyMsg(mRemoveMsg);
438
444
  client2.applyMsg(mRemoveMsg);
439
- assert_1.strict.equal(client.getLength(), 3, "length not expected - client");
440
- assert_1.strict.equal(client2.getLength(), 3, "length not expected - client 2");
445
+ node_assert_1.strict.equal(client.getLength(), 3, "length not expected - client");
446
+ node_assert_1.strict.equal(client2.getLength(), 3, "length not expected - client 2");
441
447
  const marker = client.searchForMarker(0, "Eop", true);
442
- assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
448
+ node_assert_1.strict.equal(marker, undefined, "Returned marker should be undefined.");
443
449
  });
444
450
  });
445
451
  });
@@ -447,50 +453,54 @@ describe("TestClient", () => {
447
453
  it("removed marker", () => {
448
454
  const clients = (0, testClientLogger_js_1.createClientsAtInitialState)({ initialState: "hello world" }, "A", "B");
449
455
  const randomMarkerKey = "randomKey1";
450
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
456
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
451
457
  const ops = [
452
458
  clients.A.makeOpMessage(clients.A.insertMarkerLocal(5, ops_js_1.ReferenceType.Simple, {
453
459
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: randomMarkerKey,
454
460
  }), 1),
455
461
  ];
456
- (0, assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
457
- ops.splice(0).forEach((op) => {
458
- clients.all.forEach((c) => c.applyMsg(op));
459
- });
460
- (0, assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
461
- (0, assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
462
+ (0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
463
+ for (const op of ops.splice(0)) {
464
+ for (const c of clients.all)
465
+ c.applyMsg(op);
466
+ }
467
+ (0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
468
+ (0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
462
469
  ops.push(clients.A.makeOpMessage(clients.A.removeRangeLocal(5, 6), 1));
463
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove before ack");
464
- (0, assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove before ack");
465
- ops.splice(0).forEach((op) => {
466
- clients.all.forEach((c) => c.applyMsg(op));
467
- });
468
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove after ack");
469
- (0, assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove after ack");
470
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove before ack");
471
+ (0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove before ack");
472
+ for (const op of ops.splice(0)) {
473
+ for (const c of clients.all)
474
+ c.applyMsg(op);
475
+ }
476
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after remove after ack");
477
+ (0, node_assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after remove after ack");
470
478
  });
471
479
  it("obliterate marker", () => {
472
480
  const clients = (0, testClientLogger_js_1.createClientsAtInitialState)({ initialState: "hello world", options: { mergeTreeEnableObliterate: true } }, "A", "B");
473
481
  const randomMarkerKey = "randomKey1";
474
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
482
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client before insert");
475
483
  const ops = [
476
484
  clients.A.makeOpMessage(clients.A.insertMarkerLocal(5, ops_js_1.ReferenceType.Simple, {
477
485
  [mergeTreeNodes_js_1.reservedMarkerIdKey]: randomMarkerKey,
478
486
  }), 1),
479
487
  ];
480
- (0, assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
481
- ops.splice(0).forEach((op) => {
482
- clients.all.forEach((c) => c.applyMsg(op));
483
- });
484
- (0, assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
485
- (0, assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
488
+ (0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert before ack");
489
+ for (const op of ops.splice(0)) {
490
+ for (const c of clients.all)
491
+ c.applyMsg(op);
492
+ }
493
+ (0, node_assert_1.strict)(clients.A.getMarkerFromId(randomMarkerKey), "local client after insert after ack");
494
+ (0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after insert after ack");
486
495
  ops.push(clients.A.makeOpMessage(clients.A.obliterateRangeLocal(5, 6), 1));
487
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate before ack");
488
- (0, assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate before ack");
489
- ops.splice(0).forEach((op) => {
490
- clients.all.forEach((c) => c.applyMsg(op));
491
- });
492
- (0, assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate after ack");
493
- (0, assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate after ack");
496
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate before ack");
497
+ (0, node_assert_1.strict)(clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate before ack");
498
+ for (const op of ops.splice(0)) {
499
+ for (const c of clients.all)
500
+ c.applyMsg(op);
501
+ }
502
+ (0, node_assert_1.strict)(!clients.A.getMarkerFromId(randomMarkerKey), "local client after obliterate after ack");
503
+ (0, node_assert_1.strict)(!clients.B.getMarkerFromId(randomMarkerKey), "remote client after obliterate after ack");
494
504
  });
495
505
  });
496
506
  });