@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 internal_1 = require("@fluidframework/telemetry-utils/internal");
9
9
  const mergeTree_js_1 = require("../mergeTree.js");
10
10
  const reconnectHelper_js_1 = require("./reconnectHelper.js");
@@ -60,7 +60,7 @@ for (const incremental of [true, false]) {
60
60
  helper.obliterateRange("A", 2, 11);
61
61
  helper.removeRange("A", 1, 2);
62
62
  helper.processAllOps();
63
- assert_1.strict.equal(helper.clients.A.getText(), "I");
63
+ node_assert_1.strict.equal(helper.clients.A.getText(), "I");
64
64
  helper.logger.validate();
65
65
  });
66
66
  it("deletes concurrent insert that occurs after obliterate", () => {
@@ -70,8 +70,8 @@ for (const incremental of [true, false]) {
70
70
  helper.obliterateRange("B", 0, 4);
71
71
  helper.insertText("C", 2, "X");
72
72
  helper.processAllOps();
73
- assert_1.strict.equal(helper.clients.A.getText(), "");
74
- assert_1.strict.equal(helper.clients.C.getText(), "");
73
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
74
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
75
75
  helper.logger.validate();
76
76
  });
77
77
  it("deletes concurrent insert that occurs before obliterate", () => {
@@ -81,8 +81,8 @@ for (const incremental of [true, false]) {
81
81
  helper.insertText("C", 2, "X");
82
82
  helper.obliterateRange("B", 0, 4);
83
83
  helper.processAllOps();
84
- assert_1.strict.equal(helper.clients.A.getText(), "");
85
- assert_1.strict.equal(helper.clients.C.getText(), "");
84
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
85
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
86
86
  helper.logger.validate();
87
87
  });
88
88
  it("does not delete unacked segment at start of string", () => {
@@ -91,9 +91,9 @@ for (const incremental of [true, false]) {
91
91
  helper.obliterateRange("C", 2, 3);
92
92
  helper.insertText("B", 0, "X");
93
93
  helper.processAllOps();
94
- assert_1.strict.equal(helper.clients.A.getText(), "XAB");
95
- assert_1.strict.equal(helper.clients.B.getText(), "XAB");
96
- assert_1.strict.equal(helper.clients.C.getText(), "XAB");
94
+ node_assert_1.strict.equal(helper.clients.A.getText(), "XAB");
95
+ node_assert_1.strict.equal(helper.clients.B.getText(), "XAB");
96
+ node_assert_1.strict.equal(helper.clients.C.getText(), "XAB");
97
97
  helper.logger.validate();
98
98
  });
99
99
  it("throws when local obliterate has range end outside length of local string", () => {
@@ -102,11 +102,11 @@ for (const incremental of [true, false]) {
102
102
  helper.insertText("C", 0, "B");
103
103
  try {
104
104
  helper.obliterateRange("C", 0, 2);
105
- assert_1.strict.fail("should not be possible to obliterate outside local range");
105
+ node_assert_1.strict.fail("should not be possible to obliterate outside local range");
106
106
  }
107
- catch (e) {
108
- (0, assert_1.strict)(e instanceof internal_1.LoggingError);
109
- assert_1.strict.equal(e.message, "RangeOutOfBounds");
107
+ catch (error) {
108
+ (0, node_assert_1.strict)(error instanceof internal_1.LoggingError);
109
+ node_assert_1.strict.equal(error.message, "RangeOutOfBounds");
110
110
  }
111
111
  });
112
112
  it("does not delete when obliterate immediately after insert", () => {
@@ -117,9 +117,9 @@ for (const incremental of [true, false]) {
117
117
  helper.insertText("C", 0, "D");
118
118
  helper.obliterateRange("C", 0, 1);
119
119
  helper.processAllOps();
120
- assert_1.strict.equal(helper.clients.A.getText(), "W");
121
- assert_1.strict.equal(helper.clients.B.getText(), "W");
122
- assert_1.strict.equal(helper.clients.C.getText(), "W");
120
+ node_assert_1.strict.equal(helper.clients.A.getText(), "W");
121
+ node_assert_1.strict.equal(helper.clients.B.getText(), "W");
122
+ node_assert_1.strict.equal(helper.clients.C.getText(), "W");
123
123
  helper.logger.validate();
124
124
  });
125
125
  it("does not delete remote insert when between local insert+obliterate", () => {
@@ -130,9 +130,9 @@ for (const incremental of [true, false]) {
130
130
  helper.insertText("C", 0, "B");
131
131
  helper.obliterateRange("C", 0, 1);
132
132
  helper.processAllOps();
133
- assert_1.strict.equal(helper.clients.A.getText(), "X");
134
- assert_1.strict.equal(helper.clients.B.getText(), "X");
135
- assert_1.strict.equal(helper.clients.C.getText(), "X");
133
+ node_assert_1.strict.equal(helper.clients.A.getText(), "X");
134
+ node_assert_1.strict.equal(helper.clients.B.getText(), "X");
135
+ node_assert_1.strict.equal(helper.clients.C.getText(), "X");
136
136
  helper.logger.validate();
137
137
  });
138
138
  it("does not delete remote insert when between local insert+obliterate", () => {
@@ -143,9 +143,9 @@ for (const incremental of [true, false]) {
143
143
  helper.insertText("C", 0, "X");
144
144
  helper.obliterateRange("B", 0, 1);
145
145
  helper.processAllOps();
146
- assert_1.strict.equal(helper.clients.A.getText(), "X");
147
- assert_1.strict.equal(helper.clients.B.getText(), "X");
148
- assert_1.strict.equal(helper.clients.C.getText(), "X");
146
+ node_assert_1.strict.equal(helper.clients.A.getText(), "X");
147
+ node_assert_1.strict.equal(helper.clients.B.getText(), "X");
148
+ node_assert_1.strict.equal(helper.clients.C.getText(), "X");
149
149
  helper.logger.validate();
150
150
  });
151
151
  it("does not delete remote insert when in middle of segment", () => {
@@ -155,9 +155,9 @@ for (const incremental of [true, false]) {
155
155
  helper.obliterateRange("C", 0, 1);
156
156
  helper.insertText("B", 0, "X");
157
157
  helper.processAllOps();
158
- assert_1.strict.equal(helper.clients.A.getText(), "XB");
159
- assert_1.strict.equal(helper.clients.B.getText(), "XB");
160
- assert_1.strict.equal(helper.clients.C.getText(), "XB");
158
+ node_assert_1.strict.equal(helper.clients.A.getText(), "XB");
159
+ node_assert_1.strict.equal(helper.clients.B.getText(), "XB");
160
+ node_assert_1.strict.equal(helper.clients.C.getText(), "XB");
161
161
  helper.logger.validate();
162
162
  });
163
163
  it("deletes segment inserted into locally obliterated segment", () => {
@@ -167,9 +167,9 @@ for (const incremental of [true, false]) {
167
167
  helper.insertText("C", 0, "B");
168
168
  helper.obliterateRange("C", 0, 2);
169
169
  helper.processAllOps();
170
- assert_1.strict.equal(helper.clients.A.getText(), "");
171
- assert_1.strict.equal(helper.clients.B.getText(), "");
172
- assert_1.strict.equal(helper.clients.C.getText(), "");
170
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
171
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
172
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
173
173
  helper.logger.validate();
174
174
  });
175
175
  it("updates lengths after obliterated insertion", () => {
@@ -180,12 +180,12 @@ for (const incremental of [true, false]) {
180
180
  helper.obliterateRange("C", 0, 2);
181
181
  helper.insertText("B", 1, "B");
182
182
  helper.processAllOps();
183
- assert_1.strict.equal(helper.clients.A.getText(), "");
184
- assert_1.strict.equal(helper.clients.B.getText(), "");
185
- assert_1.strict.equal(helper.clients.C.getText(), "");
186
- assert_1.strict.equal(helper.clients.A.getLength(), 0);
187
- assert_1.strict.equal(helper.clients.B.getLength(), 0);
188
- assert_1.strict.equal(helper.clients.C.getLength(), 0);
183
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
184
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
185
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
186
+ node_assert_1.strict.equal(helper.clients.A.getLength(), 0);
187
+ node_assert_1.strict.equal(helper.clients.B.getLength(), 0);
188
+ node_assert_1.strict.equal(helper.clients.C.getLength(), 0);
189
189
  helper.logger.validate();
190
190
  });
191
191
  it("updates lengths when insertion causes tree to split", () => {
@@ -197,10 +197,10 @@ for (const incremental of [true, false]) {
197
197
  helper.obliterateRange("C", 2, 5);
198
198
  helper.insertText("B", 1, "A");
199
199
  helper.processAllOps();
200
- assert_1.strict.equal(helper.clients.A.getText().length, helper.clients.A.getLength());
201
- assert_1.strict.equal(helper.clients.B.getText().length, helper.clients.B.getLength());
202
- assert_1.strict.equal(helper.clients.C.getText().length, helper.clients.C.getLength());
203
- assert_1.strict.equal(helper.clients.A.getText(), "GG30");
200
+ node_assert_1.strict.equal(helper.clients.A.getText().length, helper.clients.A.getLength());
201
+ node_assert_1.strict.equal(helper.clients.B.getText().length, helper.clients.B.getLength());
202
+ node_assert_1.strict.equal(helper.clients.C.getText().length, helper.clients.C.getLength());
203
+ node_assert_1.strict.equal(helper.clients.A.getText(), "GG30");
204
204
  helper.logger.validate();
205
205
  });
206
206
  it("length of node split by insertion does not count remotely obliterated segments", () => {
@@ -213,8 +213,8 @@ for (const incremental of [true, false]) {
213
213
  helper.obliterateRange("C", 2, 6);
214
214
  helper.insertText("C", 1, "D");
215
215
  helper.processAllOps();
216
- assert_1.strict.equal(helper.clients.A.getText(), "GDGX21");
217
- assert_1.strict.equal(helper.clients.C.getText(), "GDGX21");
216
+ node_assert_1.strict.equal(helper.clients.A.getText(), "GDGX21");
217
+ node_assert_1.strict.equal(helper.clients.C.getText(), "GDGX21");
218
218
  helper.logger.validate();
219
219
  });
220
220
  it("length of node split by obliterate does not count remotely obliterated segments", () => {
@@ -228,8 +228,8 @@ for (const incremental of [true, false]) {
228
228
  helper.insertText("C", 1, "C");
229
229
  helper.insertText("B", 1, "D");
230
230
  helper.processAllOps();
231
- assert_1.strict.equal(helper.clients.A.getText(), "GCGX21");
232
- assert_1.strict.equal(helper.clients.B.getText(), "GCGX21");
231
+ node_assert_1.strict.equal(helper.clients.A.getText(), "GCGX21");
232
+ node_assert_1.strict.equal(helper.clients.B.getText(), "GCGX21");
233
233
  helper.logger.validate();
234
234
  });
235
235
  it("counts remotely but not concurrently inserted segments for length when tree is split", () => {
@@ -246,8 +246,8 @@ for (const incremental of [true, false]) {
246
246
  helper.obliterateRange("B", 0, 2);
247
247
  helper.removeRange("B", 4, 5);
248
248
  helper.processAllOps();
249
- assert_1.strict.equal(helper.clients.A.getText(), "cde13");
250
- assert_1.strict.equal(helper.clients.C.getText(), "cde13");
249
+ node_assert_1.strict.equal(helper.clients.A.getText(), "cde13");
250
+ node_assert_1.strict.equal(helper.clients.C.getText(), "cde13");
251
251
  helper.logger.validate();
252
252
  });
253
253
  it("does obliterate X for all clients", () => {
@@ -258,8 +258,8 @@ for (const incremental of [true, false]) {
258
258
  helper.insertText("B", 0, "ABC");
259
259
  helper.obliterateRange("B", 2, 4);
260
260
  helper.processAllOps();
261
- assert_1.strict.equal(helper.clients.A.getText(), "AB");
262
- assert_1.strict.equal(helper.clients.C.getText(), "AB");
261
+ node_assert_1.strict.equal(helper.clients.A.getText(), "AB");
262
+ node_assert_1.strict.equal(helper.clients.C.getText(), "AB");
263
263
  helper.logger.validate();
264
264
  });
265
265
  it("does not include remote but unacked segments in partial len calculation", () => {
@@ -275,8 +275,8 @@ for (const incremental of [true, false]) {
275
275
  helper.insertText("A", 3, "w");
276
276
  helper.insertText("C", 3, "Y");
277
277
  helper.processAllOps();
278
- assert_1.strict.equal(helper.clients.A.getText(), "823YX");
279
- assert_1.strict.equal(helper.clients.B.getText(), "823YX");
278
+ node_assert_1.strict.equal(helper.clients.A.getText(), "823YX");
279
+ node_assert_1.strict.equal(helper.clients.B.getText(), "823YX");
280
280
  helper.logger.validate();
281
281
  });
282
282
  it("correctly accounts for overlapping obliterate", () => {
@@ -286,9 +286,9 @@ for (const incremental of [true, false]) {
286
286
  helper.obliterateRange("C", 0, 1);
287
287
  helper.obliterateRange("B", 0, 1);
288
288
  helper.processAllOps();
289
- assert_1.strict.equal(helper.clients.A.getText(), "B");
290
- assert_1.strict.equal(helper.clients.B.getText(), "B");
291
- assert_1.strict.equal(helper.clients.C.getText(), "B");
289
+ node_assert_1.strict.equal(helper.clients.A.getText(), "B");
290
+ node_assert_1.strict.equal(helper.clients.B.getText(), "B");
291
+ node_assert_1.strict.equal(helper.clients.C.getText(), "B");
292
292
  helper.logger.validate();
293
293
  });
294
294
  it("correctly accounts for overlapping obliterate and remove", () => {
@@ -298,9 +298,9 @@ for (const incremental of [true, false]) {
298
298
  helper.removeRange("C", 0, 1);
299
299
  helper.obliterateRange("B", 0, 1);
300
300
  helper.processAllOps();
301
- assert_1.strict.equal(helper.clients.A.getText(), "B");
302
- assert_1.strict.equal(helper.clients.B.getText(), "B");
303
- assert_1.strict.equal(helper.clients.C.getText(), "B");
301
+ node_assert_1.strict.equal(helper.clients.A.getText(), "B");
302
+ node_assert_1.strict.equal(helper.clients.B.getText(), "B");
303
+ node_assert_1.strict.equal(helper.clients.C.getText(), "B");
304
304
  helper.logger.validate();
305
305
  });
306
306
  it("clones movedClientIds array during insert", () => {
@@ -317,9 +317,9 @@ for (const incremental of [true, false]) {
317
317
  helper.obliterateRange("A", 1, 3);
318
318
  helper.obliterateRange("B", 1, 4);
319
319
  helper.processAllOps();
320
- assert_1.strict.equal(helper.clients.A.getText(), "AD");
321
- assert_1.strict.equal(helper.clients.B.getText(), "AD");
322
- assert_1.strict.equal(helper.clients.C.getText(), "AD");
320
+ node_assert_1.strict.equal(helper.clients.A.getText(), "AD");
321
+ node_assert_1.strict.equal(helper.clients.B.getText(), "AD");
322
+ node_assert_1.strict.equal(helper.clients.C.getText(), "AD");
323
323
  helper.logger.validate();
324
324
  });
325
325
  it("client partial lens consider overlapping obliterates", () => {
@@ -331,9 +331,9 @@ for (const incremental of [true, false]) {
331
331
  helper.obliterateRange("C", 1, 4);
332
332
  helper.obliterateRange("C", 4, 5);
333
333
  helper.processAllOps();
334
- assert_1.strict.equal(helper.clients.A.getText(), "AEF13");
335
- assert_1.strict.equal(helper.clients.B.getText(), "AEF13");
336
- assert_1.strict.equal(helper.clients.C.getText(), "AEF13");
334
+ node_assert_1.strict.equal(helper.clients.A.getText(), "AEF13");
335
+ node_assert_1.strict.equal(helper.clients.B.getText(), "AEF13");
336
+ node_assert_1.strict.equal(helper.clients.C.getText(), "AEF13");
337
337
  helper.logger.validate();
338
338
  });
339
339
  it("client partial lens consider overlapping obliterates", () => {
@@ -345,8 +345,8 @@ for (const incremental of [true, false]) {
345
345
  helper.obliterateRange("C", 1, 4);
346
346
  helper.obliterateRange("C", 2, 3);
347
347
  helper.processAllOps();
348
- assert_1.strict.equal(helper.clients.A.getText(), "AEGX");
349
- assert_1.strict.equal(helper.clients.C.getText(), "AEGX");
348
+ node_assert_1.strict.equal(helper.clients.A.getText(), "AEGX");
349
+ node_assert_1.strict.equal(helper.clients.C.getText(), "AEGX");
350
350
  helper.logger.validate();
351
351
  });
352
352
  it("tracks obliterate refSeq when acking op for partial len calculation", () => {
@@ -363,8 +363,8 @@ for (const incremental of [true, false]) {
363
363
  helper.insertText("A", 0, "6");
364
364
  helper.obliterateRange("B", 3, 5);
365
365
  helper.processAllOps();
366
- assert_1.strict.equal(helper.clients.A.getText(), "62");
367
- assert_1.strict.equal(helper.clients.B.getText(), "62");
366
+ node_assert_1.strict.equal(helper.clients.A.getText(), "62");
367
+ node_assert_1.strict.equal(helper.clients.B.getText(), "62");
368
368
  helper.logger.validate();
369
369
  });
370
370
  it("does not have negative len when segment obliterated before insert", () => {
@@ -381,9 +381,9 @@ for (const incremental of [true, false]) {
381
381
  helper.removeRange("A", 2, 5);
382
382
  helper.insertText("C", 3, "X");
383
383
  helper.processAllOps();
384
- assert_1.strict.equal(helper.clients.A.getText(), "12B");
385
- assert_1.strict.equal(helper.clients.B.getText(), "12B");
386
- assert_1.strict.equal(helper.clients.C.getText(), "12B");
384
+ node_assert_1.strict.equal(helper.clients.A.getText(), "12B");
385
+ node_assert_1.strict.equal(helper.clients.B.getText(), "12B");
386
+ node_assert_1.strict.equal(helper.clients.C.getText(), "12B");
387
387
  helper.logger.validate();
388
388
  });
389
389
  it("does not have negative len when segment obliterated before insert", () => {
@@ -399,9 +399,9 @@ for (const incremental of [true, false]) {
399
399
  helper.obliterateRange("C", 0, 2);
400
400
  helper.insertText("B", 1, "XX");
401
401
  helper.processAllOps();
402
- assert_1.strict.equal(helper.clients.A.getText(), "E13");
403
- assert_1.strict.equal(helper.clients.B.getText(), "E13");
404
- assert_1.strict.equal(helper.clients.C.getText(), "E13");
402
+ node_assert_1.strict.equal(helper.clients.A.getText(), "E13");
403
+ node_assert_1.strict.equal(helper.clients.B.getText(), "E13");
404
+ node_assert_1.strict.equal(helper.clients.C.getText(), "E13");
405
405
  helper.logger.validate();
406
406
  });
407
407
  it("deletes segments between two obliterates with different seq", () => {
@@ -421,7 +421,7 @@ for (const incremental of [true, false]) {
421
421
  helper.insertText("A", 1, "EFG");
422
422
  helper.obliterateRange("A", 1, 11);
423
423
  helper.processAllOps();
424
- assert_1.strict.equal(helper.clients.A.getText(), "9DCBA");
424
+ node_assert_1.strict.equal(helper.clients.A.getText(), "9DCBA");
425
425
  helper.logger.validate();
426
426
  });
427
427
  it("deletes inserted segment when obliterate of different seq in-between", () => {
@@ -433,9 +433,9 @@ for (const incremental of [true, false]) {
433
433
  helper.insertText("A", 0, "CD");
434
434
  helper.obliterateRange("A", 1, 4);
435
435
  helper.processAllOps();
436
- assert_1.strict.equal(helper.clients.A.getText(), "C2");
437
- assert_1.strict.equal(helper.clients.B.getText(), "C2");
438
- assert_1.strict.equal(helper.clients.C.getText(), "C2");
436
+ node_assert_1.strict.equal(helper.clients.A.getText(), "C2");
437
+ node_assert_1.strict.equal(helper.clients.B.getText(), "C2");
438
+ node_assert_1.strict.equal(helper.clients.C.getText(), "C2");
439
439
  helper.logger.validate();
440
440
  });
441
441
  it("deletes inserted segment when obliterate of different seq in-between", () => {
@@ -446,9 +446,9 @@ for (const incremental of [true, false]) {
446
446
  helper.insertText("A", 1, "D");
447
447
  helper.obliterateRange("C", 0, 2);
448
448
  helper.processAllOps();
449
- assert_1.strict.equal(helper.clients.A.getText(), "");
450
- assert_1.strict.equal(helper.clients.B.getText(), "");
451
- assert_1.strict.equal(helper.clients.C.getText(), "");
449
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
450
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
451
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
452
452
  helper.logger.validate();
453
453
  });
454
454
  it("deletes inserted segment when obliterate of different seq in-between", () => {
@@ -459,9 +459,9 @@ for (const incremental of [true, false]) {
459
459
  helper.insertText("A", 1, "D");
460
460
  helper.obliterateRange("C", 0, 2);
461
461
  helper.processAllOps();
462
- assert_1.strict.equal(helper.clients.A.getText(), "");
463
- assert_1.strict.equal(helper.clients.B.getText(), "");
464
- assert_1.strict.equal(helper.clients.C.getText(), "");
462
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
463
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
464
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
465
465
  helper.logger.validate();
466
466
  });
467
467
  it("considers obliterated local segments as remotely obliterate", () => {
@@ -477,8 +477,8 @@ for (const incremental of [true, false]) {
477
477
  helper.insertText("B", 1, "I");
478
478
  helper.insertText("C", 1, "J");
479
479
  helper.processAllOps();
480
- assert_1.strict.equal(helper.clients.A.getText(), "GJDEA");
481
- assert_1.strict.equal(helper.clients.B.getText(), "GJDEA");
480
+ node_assert_1.strict.equal(helper.clients.A.getText(), "GJDEA");
481
+ node_assert_1.strict.equal(helper.clients.B.getText(), "GJDEA");
482
482
  helper.logger.validate();
483
483
  });
484
484
  it("traverses hier block in obliterated when len at ref seq is >0 and len at len seq == 0", () => {
@@ -495,8 +495,8 @@ for (const incremental of [true, false]) {
495
495
  helper.removeRange("A", 5, 7);
496
496
  helper.obliterateRange("C", 7, 9);
497
497
  helper.processAllOps();
498
- assert_1.strict.equal(helper.clients.A.getText(), helper.clients.D.getText());
499
- assert_1.strict.equal(helper.clients.B.getText(), "EHIJKAD");
498
+ node_assert_1.strict.equal(helper.clients.A.getText(), helper.clients.D.getText());
499
+ node_assert_1.strict.equal(helper.clients.B.getText(), "EHIJKAD");
500
500
  helper.logger.validate();
501
501
  });
502
502
  it("traverses hier block in obliterate when len at ref seq is >0 and len at len seq == 0", () => {
@@ -516,8 +516,8 @@ for (const incremental of [true, false]) {
516
516
  helper.insertText("A", 0, "3");
517
517
  helper.insertText("A", 0, "4");
518
518
  helper.processAllOps();
519
- assert_1.strict.equal(helper.clients.A.getText(), "43FBD");
520
- assert_1.strict.equal(helper.clients.B.getText(), "43FBD");
519
+ node_assert_1.strict.equal(helper.clients.A.getText(), "43FBD");
520
+ node_assert_1.strict.equal(helper.clients.B.getText(), "43FBD");
521
521
  helper.logger.validate();
522
522
  });
523
523
  it("ignores segments where movedSeq < seq for partial len calculations", () => {
@@ -532,9 +532,9 @@ for (const incremental of [true, false]) {
532
532
  helper.logger.validate();
533
533
  helper.insertText("B", 4, "X");
534
534
  helper.processAllOps();
535
- assert_1.strict.equal(helper.clients.A.getText(), "12BCX");
536
- assert_1.strict.equal(helper.clients.B.getText(), "12BCX");
537
- assert_1.strict.equal(helper.clients.C.getText(), "12BCX");
535
+ node_assert_1.strict.equal(helper.clients.A.getText(), "12BCX");
536
+ node_assert_1.strict.equal(helper.clients.B.getText(), "12BCX");
537
+ node_assert_1.strict.equal(helper.clients.C.getText(), "12BCX");
538
538
  helper.logger.validate();
539
539
  });
540
540
  it("accounts for overlapping obliterates from same client", () => {
@@ -546,9 +546,9 @@ for (const incremental of [true, false]) {
546
546
  helper.obliterateRange("B", 0, 1);
547
547
  helper.removeRange("A", 0, 1);
548
548
  helper.processAllOps();
549
- assert_1.strict.equal(helper.clients.A.getText(), "");
550
- assert_1.strict.equal(helper.clients.B.getText(), "");
551
- assert_1.strict.equal(helper.clients.C.getText(), "");
549
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
550
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
551
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
552
552
  helper.logger.validate();
553
553
  });
554
554
  it("accounts for concurrently obliterated segments from the perspective of the inserting client for partial lengths", () => {
@@ -562,8 +562,8 @@ for (const incremental of [true, false]) {
562
562
  helper.insertText("A", 2, "D");
563
563
  helper.insertText("A", 4, "E");
564
564
  helper.processAllOps();
565
- assert_1.strict.equal(helper.clients.A.getText(), "1E4CBA");
566
- assert_1.strict.equal(helper.clients.B.getText(), "1E4CBA");
565
+ node_assert_1.strict.equal(helper.clients.A.getText(), "1E4CBA");
566
+ node_assert_1.strict.equal(helper.clients.B.getText(), "1E4CBA");
567
567
  helper.logger.validate();
568
568
  });
569
569
  it("traverses segments when there is a local obliterate", () => {
@@ -576,7 +576,7 @@ for (const incremental of [true, false]) {
576
576
  helper.insertText("C", 2, "C");
577
577
  helper.obliterateRange("A", 0, 3);
578
578
  helper.processAllOps();
579
- assert_1.strict.equal(helper.clients.A.getText(), "");
579
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
580
580
  helper.logger.validate();
581
581
  });
582
582
  it("keeps track of all obliterates on a segment", () => {
@@ -594,10 +594,10 @@ for (const incremental of [true, false]) {
594
594
  helper.obliterateRange("A", 0, 2);
595
595
  helper.insertText("B", 1, "C");
596
596
  helper.processAllOps();
597
- assert_1.strict.equal(helper.clients.A.getText(), "");
598
- assert_1.strict.equal(helper.clients.B.getText(), "");
599
- assert_1.strict.equal(helper.clients.C.getText(), "");
600
- assert_1.strict.equal(helper.clients.D.getText(), "");
597
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
598
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
599
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
600
+ node_assert_1.strict.equal(helper.clients.D.getText(), "");
601
601
  helper.logger.validate();
602
602
  });
603
603
  it("many overlapping obliterates", () => {
@@ -614,7 +614,7 @@ for (const incremental of [true, false]) {
614
614
  helper.obliterateRange("A", 0, 1);
615
615
  helper.obliterateRange("B", 1, 2);
616
616
  helper.processAllOps();
617
- assert_1.strict.equal(helper.clients.A.getText(), "2BD");
617
+ node_assert_1.strict.equal(helper.clients.A.getText(), "2BD");
618
618
  helper.logger.validate();
619
619
  });
620
620
  it("overlapping obliterates at start", () => {
@@ -646,10 +646,10 @@ for (const incremental of [true, false]) {
646
646
  helper.insertText("B", 5, "H");
647
647
  helper.insertText("C", 1, "I");
648
648
  helper.processAllOps();
649
- assert_1.strict.equal(helper.clients.A.getText(), "DIEHF");
650
- assert_1.strict.equal(helper.clients.B.getText(), "DIEHF");
651
- assert_1.strict.equal(helper.clients.C.getText(), "DIEHF");
652
- assert_1.strict.equal(helper.clients.D.getText(), "DIEHF");
649
+ node_assert_1.strict.equal(helper.clients.A.getText(), "DIEHF");
650
+ node_assert_1.strict.equal(helper.clients.B.getText(), "DIEHF");
651
+ node_assert_1.strict.equal(helper.clients.C.getText(), "DIEHF");
652
+ node_assert_1.strict.equal(helper.clients.D.getText(), "DIEHF");
653
653
  helper.logger.validate();
654
654
  });
655
655
  it("two local obliterates get different seq numbers after ack", () => {
@@ -666,8 +666,8 @@ for (const incremental of [true, false]) {
666
666
  helper.insertText("B", 2, "D");
667
667
  helper.obliterateRange("C", 0, 1);
668
668
  helper.processAllOps();
669
- assert_1.strict.equal(helper.clients.A.getText(), "D");
670
- assert_1.strict.equal(helper.clients.C.getText(), "D");
669
+ node_assert_1.strict.equal(helper.clients.A.getText(), "D");
670
+ node_assert_1.strict.equal(helper.clients.C.getText(), "D");
671
671
  helper.logger.validate();
672
672
  });
673
673
  it("acks remote segment obliterated by local op", () => {
@@ -684,8 +684,8 @@ for (const incremental of [true, false]) {
684
684
  helper.logger.validate();
685
685
  helper.insertText("C", 1, "E");
686
686
  helper.processAllOps();
687
- assert_1.strict.equal(helper.clients.A.getText(), "BE");
688
- assert_1.strict.equal(helper.clients.B.getText(), "BE");
687
+ node_assert_1.strict.equal(helper.clients.A.getText(), "BE");
688
+ node_assert_1.strict.equal(helper.clients.B.getText(), "BE");
689
689
  helper.logger.validate();
690
690
  });
691
691
  it("skips segments obliterated before refSeq when traversing for insertion", () => {
@@ -703,9 +703,9 @@ for (const incremental of [true, false]) {
703
703
  // before the refSeq, which made it appear as an un-deleted segment
704
704
  helper.insertText("B", 3, "F");
705
705
  helper.processAllOps();
706
- assert_1.strict.equal(helper.clients.A.getText(), "C");
707
- assert_1.strict.equal(helper.clients.B.getText(), "C");
708
- assert_1.strict.equal(helper.clients.C.getText(), "C");
706
+ node_assert_1.strict.equal(helper.clients.A.getText(), "C");
707
+ node_assert_1.strict.equal(helper.clients.B.getText(), "C");
708
+ node_assert_1.strict.equal(helper.clients.C.getText(), "C");
709
709
  helper.logger.validate();
710
710
  });
711
711
  it("applies correct movedSeq when right segment has multiple movedSeqs", () => {
@@ -724,9 +724,9 @@ for (const incremental of [true, false]) {
724
724
  helper.insertText("A", 1, "C");
725
725
  helper.insertText("A", 2, "D");
726
726
  helper.processAllOps();
727
- assert_1.strict.equal(helper.clients.A.getText(), "");
728
- assert_1.strict.equal(helper.clients.B.getText(), "");
729
- assert_1.strict.equal(helper.clients.C.getText(), "");
727
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
728
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
729
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
730
730
  helper.logger.validate();
731
731
  });
732
732
  it("takes the correct moved client id when multiple clientIds for right segment", () => {
@@ -744,9 +744,9 @@ for (const incremental of [true, false]) {
744
744
  helper.obliterateRange("C", 0, 2);
745
745
  helper.insertText("A", 2, "D");
746
746
  helper.processAllOps();
747
- assert_1.strict.equal(helper.clients.A.getText(), "");
748
- assert_1.strict.equal(helper.clients.B.getText(), "");
749
- assert_1.strict.equal(helper.clients.C.getText(), "");
747
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
748
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
749
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
750
750
  helper.logger.validate();
751
751
  });
752
752
  it("selects clientId if 0", () => {
@@ -764,9 +764,9 @@ for (const incremental of [true, false]) {
764
764
  helper.insertText("A", 1, "D");
765
765
  helper.insertText("A", 2, "E");
766
766
  helper.processAllOps();
767
- assert_1.strict.equal(helper.clients.A.getText(), "");
768
- assert_1.strict.equal(helper.clients.B.getText(), "");
769
- assert_1.strict.equal(helper.clients.C.getText(), "");
767
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
768
+ node_assert_1.strict.equal(helper.clients.B.getText(), "");
769
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
770
770
  helper.logger.validate();
771
771
  });
772
772
  it("obliterates unacked segment inside non-leaf-segment", () => {
@@ -791,9 +791,9 @@ for (const incremental of [true, false]) {
791
791
  helper.obliterateRange("A", 11, 13);
792
792
  helper.insertText("B", 13, "L");
793
793
  helper.processAllOps();
794
- assert_1.strict.equal(helper.clients.A.getText(), "FGHIJE12345AKB");
795
- assert_1.strict.equal(helper.clients.B.getText(), "FGHIJE12345AKB");
796
- assert_1.strict.equal(helper.clients.C.getText(), "FGHIJE12345AKB");
794
+ node_assert_1.strict.equal(helper.clients.A.getText(), "FGHIJE12345AKB");
795
+ node_assert_1.strict.equal(helper.clients.B.getText(), "FGHIJE12345AKB");
796
+ node_assert_1.strict.equal(helper.clients.C.getText(), "FGHIJE12345AKB");
797
797
  helper.logger.validate();
798
798
  });
799
799
  it("tracks length at seq of lower move/remove seq when overlapping", () => {
@@ -814,9 +814,9 @@ for (const incremental of [true, false]) {
814
814
  // occurred prior to the remove
815
815
  helper.insertText("A", 1, "I");
816
816
  helper.processAllOps();
817
- assert_1.strict.equal(helper.clients.A.getText(), "IEB");
818
- assert_1.strict.equal(helper.clients.B.getText(), "IEB");
819
- assert_1.strict.equal(helper.clients.C.getText(), "IEB");
817
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IEB");
818
+ node_assert_1.strict.equal(helper.clients.B.getText(), "IEB");
819
+ node_assert_1.strict.equal(helper.clients.C.getText(), "IEB");
820
820
  helper.logger.validate();
821
821
  });
822
822
  it("segment obliterated on insert overlaps with local obliterate", () => {
@@ -830,7 +830,7 @@ for (const incremental of [true, false]) {
830
830
  helper.obliterateRange("B", 0, 2);
831
831
  helper.obliterateRange("A", 0, 2);
832
832
  helper.processAllOps();
833
- assert_1.strict.equal(helper.clients.A.getText(), "");
833
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
834
834
  helper.logger.validate();
835
835
  });
836
836
  it("obliterates entire string when concurrent inserts inside range", () => {
@@ -844,7 +844,7 @@ for (const incremental of [true, false]) {
844
844
  helper.insertText("C", 1, "OY");
845
845
  helper.insertText("C", 2, "S");
846
846
  helper.processAllOps();
847
- assert_1.strict.equal(helper.clients.A.getText(), "");
847
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
848
848
  helper.logger.validate();
849
849
  });
850
850
  it("obliterate ack traverses over non-obliterated remove", () => {
@@ -865,8 +865,8 @@ for (const incremental of [true, false]) {
865
865
  helper.logger.validate();
866
866
  helper.insertText("A", 6, "3");
867
867
  helper.processAllOps();
868
- assert_1.strict.equal(helper.clients.A.getText(), "ABCDE13");
869
- assert_1.strict.equal(helper.clients.C.getText(), "ABCDE13");
868
+ node_assert_1.strict.equal(helper.clients.A.getText(), "ABCDE13");
869
+ node_assert_1.strict.equal(helper.clients.C.getText(), "ABCDE13");
870
870
  helper.logger.validate();
871
871
  });
872
872
  it("overlapping remove and obliterate when remove happens last", () => {
@@ -884,10 +884,10 @@ for (const incremental of [true, false]) {
884
884
  helper.removeRange("A", 0, 1);
885
885
  helper.insertText("A", 5, "I");
886
886
  helper.processAllOps();
887
- assert_1.strict.equal(helper.clients.A.getText(), "HEDBICA");
888
- assert_1.strict.equal(helper.clients.B.getText(), "HEDBICA");
889
- assert_1.strict.equal(helper.clients.C.getText(), "HEDBICA");
890
- assert_1.strict.equal(helper.clients.D.getText(), "HEDBICA");
887
+ node_assert_1.strict.equal(helper.clients.A.getText(), "HEDBICA");
888
+ node_assert_1.strict.equal(helper.clients.B.getText(), "HEDBICA");
889
+ node_assert_1.strict.equal(helper.clients.C.getText(), "HEDBICA");
890
+ node_assert_1.strict.equal(helper.clients.D.getText(), "HEDBICA");
891
891
  helper.logger.validate();
892
892
  });
893
893
  it("overlapping remove and obliterate when remove happens last _and_ partial length already exists", () => {
@@ -904,7 +904,7 @@ for (const incremental of [true, false]) {
904
904
  helper.removeRange("A", 0, 4);
905
905
  helper.insertText("A", 1, "Z");
906
906
  helper.processAllOps();
907
- assert_1.strict.equal(helper.clients.A.getText(), "DZEBA");
907
+ node_assert_1.strict.equal(helper.clients.A.getText(), "DZEBA");
908
908
  helper.logger.validate();
909
909
  });
910
910
  it("overlapping obliterate and remove when obliterate is larger than remove and happened last", () => {
@@ -921,7 +921,7 @@ for (const incremental of [true, false]) {
921
921
  helper.obliterateRange("C", 0, 4);
922
922
  helper.insertText("C", 1, "Z");
923
923
  helper.processAllOps();
924
- assert_1.strict.equal(helper.clients.A.getText(), "FZGBA");
924
+ node_assert_1.strict.equal(helper.clients.A.getText(), "FZGBA");
925
925
  helper.logger.validate();
926
926
  });
927
927
  it("wasMovedOnInsert remains after leaf node is split", () => {
@@ -939,7 +939,7 @@ for (const incremental of [true, false]) {
939
939
  helper.obliterateRange("A", 1, 2);
940
940
  helper.insertText("B", 0, "I");
941
941
  helper.processAllOps();
942
- assert_1.strict.equal(helper.clients.A.getText(), "IFDBA");
942
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IFDBA");
943
943
  helper.logger.validate();
944
944
  });
945
945
  it("overlapping obliterates, segment is obliterated on insert and by local client", () => {
@@ -958,7 +958,7 @@ for (const incremental of [true, false]) {
958
958
  helper.obliterateRange("A", 0, 5);
959
959
  helper.insertText("A", 1, "I");
960
960
  helper.processAllOps();
961
- assert_1.strict.equal(helper.clients.A.getText(), "BICA");
961
+ node_assert_1.strict.equal(helper.clients.A.getText(), "BICA");
962
962
  helper.logger.validate();
963
963
  });
964
964
  it("overlapping obliterates and remove", () => {
@@ -975,7 +975,7 @@ for (const incremental of [true, false]) {
975
975
  helper.obliterateRange("C", 0, 10);
976
976
  helper.insertText("C", 1, "M");
977
977
  helper.processAllOps();
978
- assert_1.strict.equal(helper.clients.A.getText(), "EMA");
978
+ node_assert_1.strict.equal(helper.clients.A.getText(), "EMA");
979
979
  helper.logger.validate();
980
980
  });
981
981
  it("does not mark obliterated on insert for non-acked obliterates", () => {
@@ -993,7 +993,7 @@ for (const incremental of [true, false]) {
993
993
  helper.obliterateRange("C", 0, 2);
994
994
  helper.insertText("C", 0, "I");
995
995
  helper.processAllOps();
996
- assert_1.strict.equal(helper.clients.A.getText(), "IHEBA");
996
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IHEBA");
997
997
  helper.logger.validate();
998
998
  });
999
999
  it("partial len isLocal when seq is -1 but moveSeq > -1", () => {
@@ -1009,7 +1009,7 @@ for (const incremental of [true, false]) {
1009
1009
  helper.insertText("B", 4, "H");
1010
1010
  helper.insertText("A", 2, "I");
1011
1011
  helper.processAllOps();
1012
- assert_1.strict.equal(helper.clients.A.getText(), "CGAHB");
1012
+ node_assert_1.strict.equal(helper.clients.A.getText(), "CGAHB");
1013
1013
  helper.logger.validate();
1014
1014
  });
1015
1015
  it("obliterated on insert by overlapping obliterates", () => {
@@ -1026,7 +1026,7 @@ for (const incremental of [true, false]) {
1026
1026
  helper.insertText("C", 2, "H");
1027
1027
  helper.insertText("A", 1, "I");
1028
1028
  helper.processAllOps();
1029
- assert_1.strict.equal(helper.clients.A.getText(), "A");
1029
+ node_assert_1.strict.equal(helper.clients.A.getText(), "A");
1030
1030
  helper.logger.validate();
1031
1031
  });
1032
1032
  it("overlapping obliterates", () => {
@@ -1045,7 +1045,7 @@ for (const incremental of [true, false]) {
1045
1045
  helper.insertText("C", 0, "I");
1046
1046
  helper.obliterateRange("A", 0, 4);
1047
1047
  helper.processAllOps();
1048
- assert_1.strict.equal(helper.clients.A.getText(), "IF");
1048
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IF");
1049
1049
  helper.logger.validate();
1050
1050
  });
1051
1051
  it("overlapping obliterates", () => {
@@ -1065,7 +1065,7 @@ for (const incremental of [true, false]) {
1065
1065
  helper.insertText("C", 1, "I");
1066
1066
  helper.obliterateRange("A", 1, 2);
1067
1067
  helper.processAllOps();
1068
- assert_1.strict.equal(helper.clients.A.getText(), "B");
1068
+ node_assert_1.strict.equal(helper.clients.A.getText(), "B");
1069
1069
  helper.logger.validate();
1070
1070
  });
1071
1071
  it("overlapping remove and obliterate, local obliterate does not have a remote obliterated len", () => {
@@ -1081,7 +1081,7 @@ for (const incremental of [true, false]) {
1081
1081
  helper.insertText("A", 1, "I");
1082
1082
  helper.obliterateRange("B", 1, 3);
1083
1083
  helper.processAllOps();
1084
- assert_1.strict.equal(helper.clients.A.getText(), "GDBIC");
1084
+ node_assert_1.strict.equal(helper.clients.A.getText(), "GDBIC");
1085
1085
  helper.logger.validate();
1086
1086
  });
1087
1087
  it("triple overlapping obliterate and overlapping remove", () => {
@@ -1105,8 +1105,8 @@ for (const incremental of [true, false]) {
1105
1105
  helper.obliterateRange("C", 6, 7);
1106
1106
  helper.removeRange("A", 0, 6);
1107
1107
  helper.processAllOps();
1108
- assert_1.strict.equal(helper.clients.A.getText(), "");
1109
- assert_1.strict.equal(helper.clients.C.getText(), "");
1108
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
1109
+ node_assert_1.strict.equal(helper.clients.C.getText(), "");
1110
1110
  helper.logger.validate();
1111
1111
  });
1112
1112
  it("triple overlapping obliterate with one being local", () => {
@@ -1128,7 +1128,7 @@ for (const incremental of [true, false]) {
1128
1128
  helper.insertText("B", 0, "J");
1129
1129
  helper.obliterateRange("B", 3, 5);
1130
1130
  helper.processAllOps();
1131
- assert_1.strict.equal(helper.clients.C.getText(), "JIGBA");
1131
+ node_assert_1.strict.equal(helper.clients.C.getText(), "JIGBA");
1132
1132
  helper.logger.validate();
1133
1133
  });
1134
1134
  it("obliterate ack traversal is not stopped by moved segment", () => {
@@ -1145,8 +1145,8 @@ for (const incremental of [true, false]) {
1145
1145
  helper.logger.validate();
1146
1146
  helper.insertText("C", 1, "F");
1147
1147
  helper.processAllOps();
1148
- assert_1.strict.equal(helper.clients.A.getText(), "DF");
1149
- assert_1.strict.equal(helper.clients.C.getText(), "DF");
1148
+ node_assert_1.strict.equal(helper.clients.A.getText(), "DF");
1149
+ node_assert_1.strict.equal(helper.clients.C.getText(), "DF");
1150
1150
  helper.logger.validate();
1151
1151
  });
1152
1152
  it("updates partial lengths for segments when doing obliterate ack traversal", () => {
@@ -1172,7 +1172,7 @@ for (const incremental of [true, false]) {
1172
1172
  helper.logger.validate();
1173
1173
  helper.insertText("B", 1, "R");
1174
1174
  helper.processAllOps();
1175
- assert_1.strict.equal(helper.clients.A.getText(), "BR");
1175
+ node_assert_1.strict.equal(helper.clients.A.getText(), "BR");
1176
1176
  helper.logger.validate();
1177
1177
  });
1178
1178
  // fails only for incremental
@@ -1206,7 +1206,7 @@ for (const incremental of [true, false]) {
1206
1206
  helper.obliterateRange("A", 38, 40);
1207
1207
  helper.insertText("C", 17, "klmnop");
1208
1208
  helper.processAllOps();
1209
- assert_1.strict.equal(helper.clients.A.getText(), "abcdefghijklmnop5890QBC");
1209
+ node_assert_1.strict.equal(helper.clients.A.getText(), "abcdefghijklmnop5890QBC");
1210
1210
  helper.logger.validate();
1211
1211
  helper.removeRange("B", 3, 6);
1212
1212
  helper.insertText("C", 11, "Q");
@@ -1216,7 +1216,7 @@ for (const incremental of [true, false]) {
1216
1216
  helper.obliterateRange("B", 14, 18);
1217
1217
  helper.insertText("B", 1, "T");
1218
1218
  helper.processAllOps();
1219
- assert_1.strict.equal(helper.clients.A.getText(), "aTbScghijkQlRmnoC");
1219
+ node_assert_1.strict.equal(helper.clients.A.getText(), "aTbScghijkQlRmnoC");
1220
1220
  helper.logger.validate();
1221
1221
  });
1222
1222
  it("three obliterates on same segment", () => {
@@ -1244,7 +1244,7 @@ for (const incremental of [true, false]) {
1244
1244
  helper.insertText("A", 0, "C");
1245
1245
  helper.obliterateRange("A", 0, 2);
1246
1246
  helper.processAllOps();
1247
- assert_1.strict.equal(helper.clients.A.getText(), "");
1247
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
1248
1248
  helper.logger.validate();
1249
1249
  });
1250
1250
  it("obliterates 2 concurrently inserted segments", () => {
@@ -1256,7 +1256,7 @@ for (const incremental of [true, false]) {
1256
1256
  helper.obliterateRange("B", 0, 2);
1257
1257
  helper.insertText("A", 1, "D");
1258
1258
  helper.processAllOps();
1259
- assert_1.strict.equal(helper.clients.A.getText(), "");
1259
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
1260
1260
  helper.logger.validate();
1261
1261
  });
1262
1262
  it("obliterates 4 concurrently inserted segments", () => {
@@ -1270,7 +1270,7 @@ for (const incremental of [true, false]) {
1270
1270
  helper.insertText("A", 1, "H");
1271
1271
  helper.insertText("B", 0, "I");
1272
1272
  helper.processAllOps();
1273
- assert_1.strict.equal(helper.clients.A.getText(), "IFB");
1273
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IFB");
1274
1274
  helper.logger.validate();
1275
1275
  });
1276
1276
  it("obliterates 3 concurrently inserted segments", () => {
@@ -1284,7 +1284,7 @@ for (const incremental of [true, false]) {
1284
1284
  helper.obliterateRange("B", 1, 3);
1285
1285
  helper.insertText("B", 0, "I");
1286
1286
  helper.processAllOps();
1287
- assert_1.strict.equal(helper.clients.A.getText(), "IGCA");
1287
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IGCA");
1288
1288
  helper.logger.validate();
1289
1289
  });
1290
1290
  it("overlapping remove + obliterate, remove happened first", () => {
@@ -1301,7 +1301,7 @@ for (const incremental of [true, false]) {
1301
1301
  helper.obliterateRange("A", 1, 3);
1302
1302
  helper.insertText("A", 0, "I");
1303
1303
  helper.processAllOps();
1304
- assert_1.strict.equal(helper.clients.A.getText(), "IDGBHCA");
1304
+ node_assert_1.strict.equal(helper.clients.A.getText(), "IDGBHCA");
1305
1305
  helper.logger.validate();
1306
1306
  });
1307
1307
  it("overlapping remove + obliterate, remove happened last", () => {
@@ -1318,7 +1318,7 @@ for (const incremental of [true, false]) {
1318
1318
  helper.removeRange("A", 1, 4);
1319
1319
  helper.removeRange("A", 0, 1);
1320
1320
  helper.processAllOps();
1321
- assert_1.strict.equal(helper.clients.A.getText(), "HCBA");
1321
+ node_assert_1.strict.equal(helper.clients.A.getText(), "HCBA");
1322
1322
  helper.logger.validate();
1323
1323
  });
1324
1324
  it("segment inside locally obliterated segment group is split", () => {
@@ -1338,7 +1338,7 @@ for (const incremental of [true, false]) {
1338
1338
  helper.logger.validate();
1339
1339
  helper.obliterateRange("B", 2, 3);
1340
1340
  helper.processAllOps();
1341
- assert_1.strict.equal(helper.clients.A.getText(), "DE");
1341
+ node_assert_1.strict.equal(helper.clients.A.getText(), "DE");
1342
1342
  helper.logger.validate();
1343
1343
  });
1344
1344
  it("continues traversal past locally removed segment inserted before first obliterate", () => {
@@ -1354,7 +1354,7 @@ for (const incremental of [true, false]) {
1354
1354
  helper.insertText("C", 0, "E");
1355
1355
  helper.obliterateRange("C", 0, 2);
1356
1356
  helper.processAllOps();
1357
- assert_1.strict.equal(helper.clients.A.getText(), "");
1357
+ node_assert_1.strict.equal(helper.clients.A.getText(), "");
1358
1358
  helper.logger.validate();
1359
1359
  });
1360
1360
  it("keeps track of remote obliterated length when hier node contains hier nodes", () => {
@@ -1381,7 +1381,7 @@ for (const incremental of [true, false]) {
1381
1381
  helper.insertText("B", 5, "ghijk");
1382
1382
  helper.insertText("C", 0, "lmnopq"); // seq: 13, len: 7
1383
1383
  helper.processAllOps();
1384
- assert_1.strict.equal(helper.clients.A.getText(), "lmnopqLNOHghijkIbcefdB");
1384
+ node_assert_1.strict.equal(helper.clients.A.getText(), "lmnopqLNOHghijkIbcefdB");
1385
1385
  helper.logger.validate();
1386
1386
  helper.insertText("A", 0, "r");
1387
1387
  helper.insertText("B", 12, "stu");
@@ -1391,7 +1391,7 @@ for (const incremental of [true, false]) {
1391
1391
  helper.removeRange("A", 14, 15); // seq: 19, len: 3
1392
1392
  helper.insertText("B", 1, "x");
1393
1393
  helper.processAllOps();
1394
- assert_1.strict.equal(helper.clients.A.getText(), "rlxmntfdB");
1394
+ node_assert_1.strict.equal(helper.clients.A.getText(), "rlxmntfdB");
1395
1395
  helper.logger.validate();
1396
1396
  });
1397
1397
  it("combines remote obliterated length for parent node of tree with depth >=3", () => {
@@ -1419,7 +1419,7 @@ for (const incremental of [true, false]) {
1419
1419
  helper.removeRange("A", 1, 2);
1420
1420
  helper.insertText("A", 0, "VWXYZ0"); // seq: 10, len: 2
1421
1421
  helper.processAllOps();
1422
- assert_1.strict.equal(helper.clients.A.getText(), "VWXYZ0MOEFGHIJBPTUQRSCD");
1422
+ node_assert_1.strict.equal(helper.clients.A.getText(), "VWXYZ0MOEFGHIJBPTUQRSCD");
1423
1423
  helper.logger.validate();
1424
1424
  helper.insertText("C", 12, "ab");
1425
1425
  helper.removeRange("B", 11, 17);
@@ -1434,7 +1434,7 @@ for (const incremental of [true, false]) {
1434
1434
  helper.insertText("C", 0, "i");
1435
1435
  helper.insertText("A", 0, "j"); // seq: 22, len: 1
1436
1436
  helper.processAllOps();
1437
- assert_1.strict.equal(helper.clients.A.getText(), "jihagSCdfeD");
1437
+ node_assert_1.strict.equal(helper.clients.A.getText(), "jihagSCdfeD");
1438
1438
  helper.logger.validate();
1439
1439
  });
1440
1440
  });