@fluidframework/merge-tree 2.0.0-internal.8.0.0 → 2.0.0-rc.1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +0 -6
  3. package/api-extractor-esm.json +17 -0
  4. package/api-extractor-lint.json +1 -10
  5. package/api-extractor.json +0 -4
  6. package/api-report/merge-tree.api.md +4 -9
  7. package/dist/client.d.ts +0 -7
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +0 -7
  10. package/dist/client.js.map +1 -1
  11. package/dist/merge-tree-alpha.d.ts +27 -12
  12. package/dist/merge-tree-beta.d.ts +0 -16
  13. package/dist/merge-tree-public.d.ts +0 -16
  14. package/dist/merge-tree-untrimmed.d.ts +5 -29
  15. package/dist/mergeTree.d.ts +0 -17
  16. package/dist/mergeTree.d.ts.map +1 -1
  17. package/dist/mergeTree.js +0 -130
  18. package/dist/mergeTree.js.map +1 -1
  19. package/dist/ops.d.ts +1 -1
  20. package/dist/ops.js +1 -1
  21. package/dist/ops.js.map +1 -1
  22. package/dist/revertibles.d.ts +4 -4
  23. package/dist/revertibles.js +3 -3
  24. package/dist/revertibles.js.map +1 -1
  25. package/dist/test/Insertion.perf.spec.d.ts +6 -0
  26. package/dist/test/Insertion.perf.spec.d.ts.map +1 -0
  27. package/dist/test/Insertion.perf.spec.js +113 -0
  28. package/dist/test/Insertion.perf.spec.js.map +1 -0
  29. package/dist/test/PartialLengths.perf.spec.d.ts +6 -0
  30. package/dist/test/PartialLengths.perf.spec.d.ts.map +1 -0
  31. package/dist/test/PartialLengths.perf.spec.js +67 -0
  32. package/dist/test/PartialLengths.perf.spec.js.map +1 -0
  33. package/dist/test/Removal.perf.spec.d.ts +6 -0
  34. package/dist/test/Removal.perf.spec.d.ts.map +1 -0
  35. package/dist/test/Removal.perf.spec.js +166 -0
  36. package/dist/test/Removal.perf.spec.js.map +1 -0
  37. package/dist/test/Snapshot.perf.spec.d.ts +6 -0
  38. package/dist/test/Snapshot.perf.spec.d.ts.map +1 -0
  39. package/dist/test/Snapshot.perf.spec.js +33 -0
  40. package/dist/test/Snapshot.perf.spec.js.map +1 -0
  41. package/dist/test/attributionCollection.perf.spec.d.ts +6 -0
  42. package/dist/test/attributionCollection.perf.spec.d.ts.map +1 -0
  43. package/dist/test/attributionCollection.perf.spec.js +231 -0
  44. package/dist/test/attributionCollection.perf.spec.js.map +1 -0
  45. package/dist/test/attributionCollection.spec.d.ts +6 -0
  46. package/dist/test/attributionCollection.spec.d.ts.map +1 -0
  47. package/dist/test/attributionCollection.spec.js +486 -0
  48. package/dist/test/attributionCollection.spec.js.map +1 -0
  49. package/dist/test/attributionPolicy.spec.d.ts +6 -0
  50. package/dist/test/attributionPolicy.spec.d.ts.map +1 -0
  51. package/dist/test/attributionPolicy.spec.js +189 -0
  52. package/dist/test/attributionPolicy.spec.js.map +1 -0
  53. package/dist/test/beastTest.d.ts +54 -0
  54. package/dist/test/beastTest.d.ts.map +1 -0
  55. package/dist/test/beastTest.js +1333 -0
  56. package/dist/test/beastTest.js.map +1 -0
  57. package/dist/test/client.annotateMarker.spec.d.ts +6 -0
  58. package/dist/test/client.annotateMarker.spec.d.ts.map +1 -0
  59. package/dist/test/client.annotateMarker.spec.js +45 -0
  60. package/dist/test/client.annotateMarker.spec.js.map +1 -0
  61. package/dist/test/client.apis.d.ts +7 -0
  62. package/dist/test/client.apis.d.ts.map +1 -0
  63. package/dist/test/client.apis.js +72 -0
  64. package/dist/test/client.apis.js.map +1 -0
  65. package/dist/test/client.applyMsg.spec.d.ts +6 -0
  66. package/dist/test/client.applyMsg.spec.d.ts.map +1 -0
  67. package/dist/test/client.applyMsg.spec.js +500 -0
  68. package/dist/test/client.applyMsg.spec.js.map +1 -0
  69. package/dist/test/client.applyStashedOpFarm.spec.d.ts +12 -0
  70. package/dist/test/client.applyStashedOpFarm.spec.d.ts.map +1 -0
  71. package/dist/test/client.applyStashedOpFarm.spec.js +144 -0
  72. package/dist/test/client.applyStashedOpFarm.spec.js.map +1 -0
  73. package/dist/test/client.attributionFarm.spec.d.ts +7 -0
  74. package/dist/test/client.attributionFarm.spec.d.ts.map +1 -0
  75. package/dist/test/client.attributionFarm.spec.js +96 -0
  76. package/dist/test/client.attributionFarm.spec.js.map +1 -0
  77. package/dist/test/client.conflictFarm.spec.d.ts +15 -0
  78. package/dist/test/client.conflictFarm.spec.d.ts.map +1 -0
  79. package/dist/test/client.conflictFarm.spec.js +88 -0
  80. package/dist/test/client.conflictFarm.spec.js.map +1 -0
  81. package/dist/test/client.getPosition.spec.d.ts +6 -0
  82. package/dist/test/client.getPosition.spec.d.ts.map +1 -0
  83. package/dist/test/client.getPosition.spec.js +54 -0
  84. package/dist/test/client.getPosition.spec.js.map +1 -0
  85. package/dist/test/client.localReference.spec.d.ts +6 -0
  86. package/dist/test/client.localReference.spec.d.ts.map +1 -0
  87. package/dist/test/client.localReference.spec.js +439 -0
  88. package/dist/test/client.localReference.spec.js.map +1 -0
  89. package/dist/test/client.localReferenceFarm.spec.d.ts +6 -0
  90. package/dist/test/client.localReferenceFarm.spec.d.ts.map +1 -0
  91. package/dist/test/client.localReferenceFarm.spec.js +88 -0
  92. package/dist/test/client.localReferenceFarm.spec.js.map +1 -0
  93. package/dist/test/client.rebasePosition.spec.d.ts +6 -0
  94. package/dist/test/client.rebasePosition.spec.d.ts.map +1 -0
  95. package/dist/test/client.rebasePosition.spec.js +102 -0
  96. package/dist/test/client.rebasePosition.spec.js.map +1 -0
  97. package/dist/test/client.reconnectFarm.spec.d.ts +12 -0
  98. package/dist/test/client.reconnectFarm.spec.d.ts.map +1 -0
  99. package/dist/test/client.reconnectFarm.spec.js +91 -0
  100. package/dist/test/client.reconnectFarm.spec.js.map +1 -0
  101. package/dist/test/client.replay.spec.d.ts +6 -0
  102. package/dist/test/client.replay.spec.d.ts.map +1 -0
  103. package/dist/test/client.replay.spec.js +85 -0
  104. package/dist/test/client.replay.spec.js.map +1 -0
  105. package/dist/test/client.rollback.spec.d.ts +6 -0
  106. package/dist/test/client.rollback.spec.d.ts.map +1 -0
  107. package/dist/test/client.rollback.spec.js +453 -0
  108. package/dist/test/client.rollback.spec.js.map +1 -0
  109. package/dist/test/client.rollbackFarm.spec.d.ts +6 -0
  110. package/dist/test/client.rollbackFarm.spec.d.ts.map +1 -0
  111. package/dist/test/client.rollbackFarm.spec.js +48 -0
  112. package/dist/test/client.rollbackFarm.spec.js.map +1 -0
  113. package/dist/test/client.searchForMarker.spec.d.ts +6 -0
  114. package/dist/test/client.searchForMarker.spec.d.ts.map +1 -0
  115. package/dist/test/client.searchForMarker.spec.js +446 -0
  116. package/dist/test/client.searchForMarker.spec.js.map +1 -0
  117. package/dist/test/client.walkSegments.spec.d.ts +6 -0
  118. package/dist/test/client.walkSegments.spec.d.ts.map +1 -0
  119. package/dist/test/client.walkSegments.spec.js +54 -0
  120. package/dist/test/client.walkSegments.spec.js.map +1 -0
  121. package/dist/test/collections.list.spec.d.ts +6 -0
  122. package/dist/test/collections.list.spec.d.ts.map +1 -0
  123. package/dist/test/collections.list.spec.js +84 -0
  124. package/dist/test/collections.list.spec.js.map +1 -0
  125. package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts +6 -0
  126. package/dist/test/createInsertOnlyAttributionPolicy.spec.d.ts.map +1 -0
  127. package/dist/test/createInsertOnlyAttributionPolicy.spec.js +35 -0
  128. package/dist/test/createInsertOnlyAttributionPolicy.spec.js.map +1 -0
  129. package/dist/test/index.d.ts +13 -0
  130. package/dist/test/index.d.ts.map +1 -0
  131. package/dist/test/index.js +88 -0
  132. package/dist/test/index.js.map +1 -0
  133. package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts +6 -0
  134. package/dist/test/mergeTree.annotate.deltaCallback.spec.d.ts.map +1 -0
  135. package/dist/test/mergeTree.annotate.deltaCallback.spec.js +142 -0
  136. package/dist/test/mergeTree.annotate.deltaCallback.spec.js.map +1 -0
  137. package/dist/test/mergeTree.annotate.spec.d.ts +6 -0
  138. package/dist/test/mergeTree.annotate.spec.d.ts.map +1 -0
  139. package/dist/test/mergeTree.annotate.spec.js +448 -0
  140. package/dist/test/mergeTree.annotate.spec.js.map +1 -0
  141. package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts +6 -0
  142. package/dist/test/mergeTree.insert.deltaCallback.spec.d.ts.map +1 -0
  143. package/dist/test/mergeTree.insert.deltaCallback.spec.js +126 -0
  144. package/dist/test/mergeTree.insert.deltaCallback.spec.js.map +1 -0
  145. package/dist/test/mergeTree.insertingWalk.spec.d.ts +6 -0
  146. package/dist/test/mergeTree.insertingWalk.spec.d.ts.map +1 -0
  147. package/dist/test/mergeTree.insertingWalk.spec.js +279 -0
  148. package/dist/test/mergeTree.insertingWalk.spec.js.map +1 -0
  149. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts +6 -0
  150. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.d.ts.map +1 -0
  151. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js +178 -0
  152. package/dist/test/mergeTree.markRangeRemoved.deltaCallback.spec.js.map +1 -0
  153. package/dist/test/mergeTree.markRangeRemoved.spec.d.ts +6 -0
  154. package/dist/test/mergeTree.markRangeRemoved.spec.d.ts.map +1 -0
  155. package/dist/test/mergeTree.markRangeRemoved.spec.js +130 -0
  156. package/dist/test/mergeTree.markRangeRemoved.spec.js.map +1 -0
  157. package/dist/test/mergeTree.walk.spec.d.ts +6 -0
  158. package/dist/test/mergeTree.walk.spec.d.ts.map +1 -0
  159. package/dist/test/mergeTree.walk.spec.js +63 -0
  160. package/dist/test/mergeTree.walk.spec.js.map +1 -0
  161. package/dist/test/mergeTree.zamboni.spec.d.ts +6 -0
  162. package/dist/test/mergeTree.zamboni.spec.d.ts.map +1 -0
  163. package/dist/test/mergeTree.zamboni.spec.js +52 -0
  164. package/dist/test/mergeTree.zamboni.spec.js.map +1 -0
  165. package/dist/test/mergeTreeOperationRunner.d.ts +63 -0
  166. package/dist/test/mergeTreeOperationRunner.d.ts.map +1 -0
  167. package/dist/test/mergeTreeOperationRunner.js +245 -0
  168. package/dist/test/mergeTreeOperationRunner.js.map +1 -0
  169. package/dist/test/mergeTreeOperationRunner.spec.d.ts +6 -0
  170. package/dist/test/mergeTreeOperationRunner.spec.d.ts.map +1 -0
  171. package/dist/test/mergeTreeOperationRunner.spec.js +156 -0
  172. package/dist/test/mergeTreeOperationRunner.spec.js.map +1 -0
  173. package/dist/test/obliterate.concurrent.spec.d.ts +6 -0
  174. package/dist/test/obliterate.concurrent.spec.d.ts.map +1 -0
  175. package/dist/test/obliterate.concurrent.spec.js +1446 -0
  176. package/dist/test/obliterate.concurrent.spec.js.map +1 -0
  177. package/dist/test/obliterate.partialLength.spec.d.ts +6 -0
  178. package/dist/test/obliterate.partialLength.spec.d.ts.map +1 -0
  179. package/dist/test/obliterate.partialLength.spec.js +279 -0
  180. package/dist/test/obliterate.partialLength.spec.js.map +1 -0
  181. package/dist/test/obliterate.reconnect.spec.d.ts +6 -0
  182. package/dist/test/obliterate.reconnect.spec.d.ts.map +1 -0
  183. package/dist/test/obliterate.reconnect.spec.js +164 -0
  184. package/dist/test/obliterate.reconnect.spec.js.map +1 -0
  185. package/dist/test/obliterate.spec.d.ts +6 -0
  186. package/dist/test/obliterate.spec.d.ts.map +1 -0
  187. package/dist/test/obliterate.spec.js +162 -0
  188. package/dist/test/obliterate.spec.js.map +1 -0
  189. package/dist/test/ordinal.spec.d.ts +2 -0
  190. package/dist/test/ordinal.spec.d.ts.map +1 -0
  191. package/dist/test/ordinal.spec.js +43 -0
  192. package/dist/test/ordinal.spec.js.map +1 -0
  193. package/dist/test/partialLength.spec.d.ts +6 -0
  194. package/dist/test/partialLength.spec.d.ts.map +1 -0
  195. package/dist/test/partialLength.spec.js +282 -0
  196. package/dist/test/partialLength.spec.js.map +1 -0
  197. package/dist/test/properties.spec.d.ts +6 -0
  198. package/dist/test/properties.spec.d.ts.map +1 -0
  199. package/dist/test/properties.spec.js +55 -0
  200. package/dist/test/properties.spec.js.map +1 -0
  201. package/dist/test/reconnectHelper.d.ts +48 -0
  202. package/dist/test/reconnectHelper.d.ts.map +1 -0
  203. package/dist/test/reconnectHelper.js +86 -0
  204. package/dist/test/reconnectHelper.js.map +1 -0
  205. package/dist/test/resetPendingSegmentsToOp.spec.d.ts +6 -0
  206. package/dist/test/resetPendingSegmentsToOp.spec.d.ts.map +1 -0
  207. package/dist/test/resetPendingSegmentsToOp.spec.js +218 -0
  208. package/dist/test/resetPendingSegmentsToOp.spec.js.map +1 -0
  209. package/dist/test/revertibleFarm.spec.d.ts +6 -0
  210. package/dist/test/revertibleFarm.spec.d.ts.map +1 -0
  211. package/dist/test/revertibleFarm.spec.js +124 -0
  212. package/dist/test/revertibleFarm.spec.js.map +1 -0
  213. package/dist/test/revertibles.spec.d.ts +17 -0
  214. package/dist/test/revertibles.spec.d.ts.map +1 -0
  215. package/dist/test/revertibles.spec.js +385 -0
  216. package/dist/test/revertibles.spec.js.map +1 -0
  217. package/dist/test/segmentGroupCollection.spec.d.ts +6 -0
  218. package/dist/test/segmentGroupCollection.spec.d.ts.map +1 -0
  219. package/dist/test/segmentGroupCollection.spec.js +60 -0
  220. package/dist/test/segmentGroupCollection.spec.js.map +1 -0
  221. package/dist/test/snapshot.spec.d.ts +6 -0
  222. package/dist/test/snapshot.spec.d.ts.map +1 -0
  223. package/dist/test/snapshot.spec.js +178 -0
  224. package/dist/test/snapshot.spec.js.map +1 -0
  225. package/dist/test/snapshot.utils.d.ts +33 -0
  226. package/dist/test/snapshot.utils.d.ts.map +1 -0
  227. package/dist/test/snapshot.utils.js +109 -0
  228. package/dist/test/snapshot.utils.js.map +1 -0
  229. package/dist/test/snapshotlegacy.spec.d.ts +6 -0
  230. package/dist/test/snapshotlegacy.spec.d.ts.map +1 -0
  231. package/dist/test/snapshotlegacy.spec.js +139 -0
  232. package/dist/test/snapshotlegacy.spec.js.map +1 -0
  233. package/dist/test/sortedSegmentSet.spec.d.ts +6 -0
  234. package/dist/test/sortedSegmentSet.spec.d.ts.map +1 -0
  235. package/dist/test/sortedSegmentSet.spec.js +95 -0
  236. package/dist/test/sortedSegmentSet.spec.js.map +1 -0
  237. package/dist/test/testClient.d.ts +119 -0
  238. package/dist/test/testClient.d.ts.map +1 -0
  239. package/dist/test/testClient.js +439 -0
  240. package/dist/test/testClient.js.map +1 -0
  241. package/dist/test/testClientLogger.d.ts +44 -0
  242. package/dist/test/testClientLogger.d.ts.map +1 -0
  243. package/dist/test/testClientLogger.js +287 -0
  244. package/dist/test/testClientLogger.js.map +1 -0
  245. package/dist/test/testSerializer.d.ts +18 -0
  246. package/dist/test/testSerializer.d.ts.map +1 -0
  247. package/dist/test/testSerializer.js +33 -0
  248. package/dist/test/testSerializer.js.map +1 -0
  249. package/dist/test/testServer.d.ts +36 -0
  250. package/dist/test/testServer.d.ts.map +1 -0
  251. package/dist/test/testServer.js +138 -0
  252. package/dist/test/testServer.js.map +1 -0
  253. package/dist/test/testUtils.d.ts +69 -0
  254. package/dist/test/testUtils.d.ts.map +1 -0
  255. package/dist/test/testUtils.js +149 -0
  256. package/dist/test/testUtils.js.map +1 -0
  257. package/dist/test/text.d.ts +9 -0
  258. package/dist/test/text.d.ts.map +1 -0
  259. package/dist/test/text.js +76 -0
  260. package/dist/test/text.js.map +1 -0
  261. package/dist/test/tracking.spec.d.ts +6 -0
  262. package/dist/test/tracking.spec.d.ts.map +1 -0
  263. package/dist/test/tracking.spec.js +120 -0
  264. package/dist/test/tracking.spec.js.map +1 -0
  265. package/dist/test/wordUnitTests.d.ts +6 -0
  266. package/dist/test/wordUnitTests.d.ts.map +1 -0
  267. package/dist/test/wordUnitTests.js +172 -0
  268. package/dist/test/wordUnitTests.js.map +1 -0
  269. package/lib/{MergeTreeTextHelper.d.ts → MergeTreeTextHelper.d.mts} +3 -3
  270. package/lib/MergeTreeTextHelper.d.mts.map +1 -0
  271. package/lib/{MergeTreeTextHelper.js → MergeTreeTextHelper.mjs} +5 -10
  272. package/lib/MergeTreeTextHelper.mjs.map +1 -0
  273. package/lib/{attributionCollection.d.ts → attributionCollection.d.mts} +2 -2
  274. package/lib/attributionCollection.d.mts.map +1 -0
  275. package/lib/{attributionCollection.js → attributionCollection.mjs} +9 -14
  276. package/lib/attributionCollection.mjs.map +1 -0
  277. package/lib/{attributionPolicy.d.ts → attributionPolicy.d.mts} +2 -2
  278. package/lib/attributionPolicy.d.mts.map +1 -0
  279. package/lib/{attributionPolicy.js → attributionPolicy.mjs} +21 -27
  280. package/lib/attributionPolicy.mjs.map +1 -0
  281. package/lib/{client.d.ts → client.d.mts} +9 -16
  282. package/lib/client.d.mts.map +1 -0
  283. package/lib/{client.js → client.mjs} +101 -110
  284. package/lib/client.mjs.map +1 -0
  285. package/lib/collections/{index.d.ts → index.d.mts} +3 -3
  286. package/lib/collections/index.d.mts.map +1 -0
  287. package/lib/collections/index.mjs +7 -0
  288. package/lib/collections/index.mjs.map +1 -0
  289. package/lib/collections/{list.d.ts → list.d.mts} +1 -1
  290. package/lib/collections/list.d.mts.map +1 -0
  291. package/lib/collections/{list.js → list.mjs} +6 -11
  292. package/lib/collections/list.mjs.map +1 -0
  293. package/lib/collections/{rbTree.d.ts → rbTree.d.mts} +1 -1
  294. package/lib/collections/rbTree.d.mts.map +1 -0
  295. package/lib/collections/{rbTree.js → rbTree.mjs} +16 -20
  296. package/lib/collections/rbTree.mjs.map +1 -0
  297. package/lib/{constants.d.ts → constants.d.mts} +1 -1
  298. package/lib/constants.d.mts.map +1 -0
  299. package/lib/constants.mjs +32 -0
  300. package/lib/constants.mjs.map +1 -0
  301. package/lib/{endOfTreeSegment.d.ts → endOfTreeSegment.d.mts} +4 -4
  302. package/lib/endOfTreeSegment.d.mts.map +1 -0
  303. package/lib/{endOfTreeSegment.js → endOfTreeSegment.mjs} +13 -18
  304. package/lib/endOfTreeSegment.mjs.map +1 -0
  305. package/lib/{index.d.ts → index.d.mts} +21 -21
  306. package/lib/index.d.mts.map +1 -0
  307. package/lib/index.mjs +24 -0
  308. package/lib/index.mjs.map +1 -0
  309. package/lib/{localReference.d.ts → localReference.d.mts} +7 -7
  310. package/lib/localReference.d.mts.map +1 -0
  311. package/lib/{localReference.js → localReference.mjs} +38 -47
  312. package/lib/localReference.mjs.map +1 -0
  313. package/lib/{merge-tree-alpha.d.ts → merge-tree-alpha.d.mts} +27 -12
  314. package/lib/{merge-tree-beta.d.ts → merge-tree-beta.d.mts} +0 -16
  315. package/lib/{merge-tree-public.d.ts → merge-tree-public.d.mts} +0 -16
  316. package/lib/{merge-tree-untrimmed.d.ts → merge-tree-untrimmed.d.mts} +5 -29
  317. package/lib/{mergeTree.d.ts → mergeTree.d.mts} +12 -29
  318. package/lib/mergeTree.d.mts.map +1 -0
  319. package/lib/{mergeTree.js → mergeTree.mjs} +203 -340
  320. package/lib/mergeTree.mjs.map +1 -0
  321. package/lib/{mergeTreeDeltaCallback.d.ts → mergeTreeDeltaCallback.d.mts} +4 -8
  322. package/lib/mergeTreeDeltaCallback.d.mts.map +1 -0
  323. package/lib/{mergeTreeDeltaCallback.js → mergeTreeDeltaCallback.mjs} +2 -5
  324. package/lib/mergeTreeDeltaCallback.mjs.map +1 -0
  325. package/lib/{mergeTreeNodeWalk.d.ts → mergeTreeNodeWalk.d.mts} +2 -2
  326. package/lib/mergeTreeNodeWalk.d.mts.map +1 -0
  327. package/lib/{mergeTreeNodeWalk.js → mergeTreeNodeWalk.mjs} +14 -21
  328. package/lib/mergeTreeNodeWalk.mjs.map +1 -0
  329. package/lib/{mergeTreeNodes.d.ts → mergeTreeNodes.d.mts} +12 -12
  330. package/lib/mergeTreeNodes.d.mts.map +1 -0
  331. package/lib/{mergeTreeNodes.js → mergeTreeNodes.mjs} +60 -76
  332. package/lib/mergeTreeNodes.mjs.map +1 -0
  333. package/lib/{mergeTreeTracking.d.ts → mergeTreeTracking.d.mts} +3 -3
  334. package/lib/mergeTreeTracking.d.mts.map +1 -0
  335. package/lib/{mergeTreeTracking.js → mergeTreeTracking.mjs} +6 -13
  336. package/lib/mergeTreeTracking.mjs.map +1 -0
  337. package/lib/{opBuilder.d.ts → opBuilder.d.mts} +4 -4
  338. package/lib/opBuilder.d.mts.map +1 -0
  339. package/lib/{opBuilder.js → opBuilder.mjs} +15 -25
  340. package/lib/opBuilder.mjs.map +1 -0
  341. package/lib/{ops.d.ts → ops.d.mts} +2 -2
  342. package/lib/ops.d.mts.map +1 -0
  343. package/lib/{ops.js → ops.mjs} +5 -8
  344. package/lib/ops.mjs.map +1 -0
  345. package/lib/{ordinal.d.ts → ordinal.d.mts} +1 -1
  346. package/lib/ordinal.d.mts.map +1 -0
  347. package/lib/{ordinal.js → ordinal.mjs} +4 -9
  348. package/lib/ordinal.mjs.map +1 -0
  349. package/lib/{partialLengths.d.ts → partialLengths.d.mts} +4 -4
  350. package/lib/partialLengths.d.mts.map +1 -0
  351. package/lib/{partialLengths.js → partialLengths.mjs} +38 -46
  352. package/lib/partialLengths.mjs.map +1 -0
  353. package/lib/{properties.d.ts → properties.d.mts} +1 -1
  354. package/lib/properties.d.mts.map +1 -0
  355. package/lib/{properties.js → properties.mjs} +7 -16
  356. package/lib/properties.mjs.map +1 -0
  357. package/lib/{referencePositions.d.ts → referencePositions.d.mts} +5 -5
  358. package/lib/referencePositions.d.mts.map +1 -0
  359. package/lib/referencePositions.mjs +70 -0
  360. package/lib/referencePositions.mjs.map +1 -0
  361. package/lib/{revertibles.d.ts → revertibles.d.mts} +12 -12
  362. package/lib/revertibles.d.mts.map +1 -0
  363. package/lib/{revertibles.js → revertibles.mjs} +60 -67
  364. package/lib/revertibles.mjs.map +1 -0
  365. package/lib/{segmentGroupCollection.d.ts → segmentGroupCollection.d.mts} +2 -2
  366. package/lib/segmentGroupCollection.d.mts.map +1 -0
  367. package/lib/{segmentGroupCollection.js → segmentGroupCollection.mjs} +5 -9
  368. package/lib/segmentGroupCollection.mjs.map +1 -0
  369. package/lib/{segmentPropertiesManager.d.ts → segmentPropertiesManager.d.mts} +3 -3
  370. package/lib/segmentPropertiesManager.d.mts.map +1 -0
  371. package/lib/{segmentPropertiesManager.js → segmentPropertiesManager.mjs} +14 -20
  372. package/lib/{segmentPropertiesManager.js.map → segmentPropertiesManager.mjs.map} +1 -1
  373. package/lib/{snapshotChunks.d.ts → snapshotChunks.d.mts} +4 -4
  374. package/lib/snapshotChunks.d.mts.map +1 -0
  375. package/lib/{snapshotChunks.js → snapshotChunks.mjs} +10 -17
  376. package/lib/snapshotChunks.mjs.map +1 -0
  377. package/lib/{snapshotLoader.d.ts → snapshotLoader.d.mts} +3 -3
  378. package/lib/snapshotLoader.d.mts.map +1 -0
  379. package/lib/{snapshotLoader.js → snapshotLoader.mjs} +33 -38
  380. package/lib/snapshotLoader.mjs.map +1 -0
  381. package/lib/{snapshotV1.d.ts → snapshotV1.d.mts} +4 -4
  382. package/lib/snapshotV1.d.mts.map +1 -0
  383. package/lib/{snapshotV1.js → snapshotV1.mjs} +28 -32
  384. package/lib/snapshotV1.mjs.map +1 -0
  385. package/lib/{snapshotlegacy.d.ts → snapshotlegacy.d.mts} +3 -3
  386. package/lib/snapshotlegacy.d.mts.map +1 -0
  387. package/lib/{snapshotlegacy.js → snapshotlegacy.mjs} +21 -26
  388. package/lib/snapshotlegacy.mjs.map +1 -0
  389. package/lib/{sortedSegmentSet.d.ts → sortedSegmentSet.d.mts} +4 -4
  390. package/lib/sortedSegmentSet.d.mts.map +1 -0
  391. package/lib/{sortedSegmentSet.js → sortedSegmentSet.mjs} +3 -8
  392. package/lib/sortedSegmentSet.mjs.map +1 -0
  393. package/lib/{sortedSet.d.ts → sortedSet.d.mts} +1 -1
  394. package/lib/sortedSet.d.mts.map +1 -0
  395. package/lib/{sortedSet.js → sortedSet.mjs} +2 -6
  396. package/lib/sortedSet.mjs.map +1 -0
  397. package/lib/{textSegment.d.ts → textSegment.d.mts} +4 -4
  398. package/lib/textSegment.d.mts.map +1 -0
  399. package/lib/{textSegment.js → textSegment.mjs} +8 -12
  400. package/lib/textSegment.mjs.map +1 -0
  401. package/lib/{zamboni.d.ts → zamboni.d.mts} +3 -3
  402. package/lib/zamboni.d.mts.map +1 -0
  403. package/lib/{zamboni.js → zamboni.mjs} +22 -28
  404. package/lib/zamboni.mjs.map +1 -0
  405. package/package.json +95 -164
  406. package/src/client.ts +0 -8
  407. package/src/mergeTree.ts +0 -226
  408. package/src/ops.ts +1 -1
  409. package/src/revertibles.ts +4 -4
  410. package/lib/MergeTreeTextHelper.d.ts.map +0 -1
  411. package/lib/MergeTreeTextHelper.js.map +0 -1
  412. package/lib/attributionCollection.d.ts.map +0 -1
  413. package/lib/attributionCollection.js.map +0 -1
  414. package/lib/attributionPolicy.d.ts.map +0 -1
  415. package/lib/attributionPolicy.js.map +0 -1
  416. package/lib/client.d.ts.map +0 -1
  417. package/lib/client.js.map +0 -1
  418. package/lib/collections/index.d.ts.map +0 -1
  419. package/lib/collections/index.js +0 -14
  420. package/lib/collections/index.js.map +0 -1
  421. package/lib/collections/list.d.ts.map +0 -1
  422. package/lib/collections/list.js.map +0 -1
  423. package/lib/collections/rbTree.d.ts.map +0 -1
  424. package/lib/collections/rbTree.js.map +0 -1
  425. package/lib/constants.d.ts.map +0 -1
  426. package/lib/constants.js +0 -35
  427. package/lib/constants.js.map +0 -1
  428. package/lib/endOfTreeSegment.d.ts.map +0 -1
  429. package/lib/endOfTreeSegment.js.map +0 -1
  430. package/lib/index.d.ts.map +0 -1
  431. package/lib/index.js +0 -80
  432. package/lib/index.js.map +0 -1
  433. package/lib/localReference.d.ts.map +0 -1
  434. package/lib/localReference.js.map +0 -1
  435. package/lib/mergeTree.d.ts.map +0 -1
  436. package/lib/mergeTree.js.map +0 -1
  437. package/lib/mergeTreeDeltaCallback.d.ts.map +0 -1
  438. package/lib/mergeTreeDeltaCallback.js.map +0 -1
  439. package/lib/mergeTreeNodeWalk.d.ts.map +0 -1
  440. package/lib/mergeTreeNodeWalk.js.map +0 -1
  441. package/lib/mergeTreeNodes.d.ts.map +0 -1
  442. package/lib/mergeTreeNodes.js.map +0 -1
  443. package/lib/mergeTreeTracking.d.ts.map +0 -1
  444. package/lib/mergeTreeTracking.js.map +0 -1
  445. package/lib/opBuilder.d.ts.map +0 -1
  446. package/lib/opBuilder.js.map +0 -1
  447. package/lib/ops.d.ts.map +0 -1
  448. package/lib/ops.js.map +0 -1
  449. package/lib/ordinal.d.ts.map +0 -1
  450. package/lib/ordinal.js.map +0 -1
  451. package/lib/partialLengths.d.ts.map +0 -1
  452. package/lib/partialLengths.js.map +0 -1
  453. package/lib/properties.d.ts.map +0 -1
  454. package/lib/properties.js.map +0 -1
  455. package/lib/referencePositions.d.ts.map +0 -1
  456. package/lib/referencePositions.js +0 -80
  457. package/lib/referencePositions.js.map +0 -1
  458. package/lib/revertibles.d.ts.map +0 -1
  459. package/lib/revertibles.js.map +0 -1
  460. package/lib/segmentGroupCollection.d.ts.map +0 -1
  461. package/lib/segmentGroupCollection.js.map +0 -1
  462. package/lib/segmentPropertiesManager.d.ts.map +0 -1
  463. package/lib/snapshotChunks.d.ts.map +0 -1
  464. package/lib/snapshotChunks.js.map +0 -1
  465. package/lib/snapshotLoader.d.ts.map +0 -1
  466. package/lib/snapshotLoader.js.map +0 -1
  467. package/lib/snapshotV1.d.ts.map +0 -1
  468. package/lib/snapshotV1.js.map +0 -1
  469. package/lib/snapshotlegacy.d.ts.map +0 -1
  470. package/lib/snapshotlegacy.js.map +0 -1
  471. package/lib/sortedSegmentSet.d.ts.map +0 -1
  472. package/lib/sortedSegmentSet.js.map +0 -1
  473. package/lib/sortedSet.d.ts.map +0 -1
  474. package/lib/sortedSet.js.map +0 -1
  475. package/lib/textSegment.d.ts.map +0 -1
  476. package/lib/textSegment.js.map +0 -1
  477. package/lib/zamboni.d.ts.map +0 -1
  478. package/lib/zamboni.js.map +0 -1
  479. package/merge-tree.test-files.tar +0 -0
  480. package/src/mergeTreeExample1.pdf +0 -0
  481. package/tsconfig.esnext.json +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.walkSegments.spec.js","sourceRoot":"","sources":["../../src/test/client.walkSegments.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAA0C;AAC1C,6CAA0C;AAE1C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,eAAe,GAAG,WAAW,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,IAAI,MAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACf,MAAM,GAAG,IAAI,uBAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC;YACzB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAClB,CAAC,CAAC,EAAE,EAAE;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC;YACzB,OAAO,IAAI,CAAC;QACb,CAAC,EACD,IAAI,CAAC,MAAM,GAAG,CAAC,EACf,IAAI,CAAC,MAAM,GAAG,CAAC,CACf,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAClB,CAAC,CAAC,EAAE,EAAE;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC;YACzB,OAAO,IAAI,CAAC;QACb,CAAC,EACD,IAAI,CAAC,MAAM,GAAG,CAAC,EACf,IAAI,CAAC,MAAM,GAAG,CAAC,EACf,SAAS,EACT,IAAI,CACJ,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { TestClient } from \"./testClient\";\n\ndescribe(\"client.applyMsg\", () => {\n\tconst localUserLongId = \"localUser\";\n\tconst seg1 = \"hello\";\n\tconst seg2 = \"world\";\n\tlet client: TestClient;\n\n\tbeforeEach(() => {\n\t\tclient = new TestClient();\n\t\tclient.insertTextLocal(client.getLength(), seg1);\n\t\tclient.insertTextLocal(client.getLength(), seg2);\n\t\tclient.startOrUpdateCollaboration(localUserLongId);\n\t});\n\n\tit(\"Walk All Segments\", () => {\n\t\tlet segCount = 0;\n\t\tlet segLen = 0;\n\t\tclient.walkSegments((s) => {\n\t\t\tsegCount++;\n\t\t\tsegLen += s.cachedLength;\n\t\t\treturn true;\n\t\t});\n\t\tassert.equal(segCount, 2);\n\t\tassert.equal(segLen, seg1.length + seg2.length);\n\t});\n\n\tit(\"Walk Segment Range\", () => {\n\t\tlet segCount = 0;\n\t\tlet segLen = 0;\n\t\tclient.walkSegments(\n\t\t\t(s) => {\n\t\t\t\tsegCount++;\n\t\t\t\tsegLen += s.cachedLength;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tseg1.length - 2,\n\t\t\tseg1.length + 2,\n\t\t);\n\t\tassert.equal(segCount, 2);\n\t\tassert.equal(segLen, seg1.length + seg2.length);\n\t});\n\n\tit(\"Walk Segment Range With Split\", () => {\n\t\tlet segCount = 0;\n\t\tlet segLen = 0;\n\t\tclient.walkSegments(\n\t\t\t(s) => {\n\t\t\t\tsegCount++;\n\t\t\t\tsegLen += s.cachedLength;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tseg1.length - 2,\n\t\t\tseg1.length + 2,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t\tassert.equal(segCount, 2);\n\t\tassert.equal(segLen, 4);\n\t});\n});\n"]}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=collections.list.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.list.spec.d.ts","sourceRoot":"","sources":["../../src/test/collections.list.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const assert_1 = require("assert");
8
+ const collections_1 = require("../collections");
9
+ describe("Collections.DoublyLinkedList", () => {
10
+ const listCount = 5;
11
+ let list;
12
+ beforeEach(() => {
13
+ list = new collections_1.DoublyLinkedList();
14
+ for (let i = 0; i < listCount; i++) {
15
+ list.unshift(i);
16
+ }
17
+ });
18
+ describe(".length", () => {
19
+ it("Should return the total number of items in the list", () => assert_1.strict.equal(list.length, listCount, "The list count doesn't match the expected count."));
20
+ });
21
+ describe(".first", () => {
22
+ it("Should return the first item in the list", () => assert_1.strict.equal(list.first?.data, listCount - 1, "first item not expected value"));
23
+ });
24
+ describe(".last", () => {
25
+ it("Should return the last item in the list", () => assert_1.strict.equal(list.last?.data, 0, "last item not expected value"));
26
+ });
27
+ describe("walkList", () => {
28
+ it("Should walk all items of the list", () => {
29
+ let i = listCount - 1;
30
+ (0, collections_1.walkList)(list, (node) => {
31
+ assert_1.strict.equal(node.data, i, "elemeted not expected value");
32
+ i--;
33
+ });
34
+ });
35
+ });
36
+ describe(".iterator", () => {
37
+ it("Should walk all items of the list", () => {
38
+ let i = listCount - 1;
39
+ for (const item of list) {
40
+ assert_1.strict.equal(item.data, i, "elemeted not expected value");
41
+ i--;
42
+ }
43
+ });
44
+ });
45
+ describe(".unshift", () => {
46
+ it("Should add item to the start of the list", () => {
47
+ list.unshift(99);
48
+ assert_1.strict.equal(list.first?.data, 99, "first item not expected value");
49
+ assert_1.strict.equal(list.length, listCount + 1, "The list count doesn't match the expected count.");
50
+ });
51
+ });
52
+ describe(".push", () => {
53
+ it("Should add item to the end of the list", () => {
54
+ list.push(99);
55
+ assert_1.strict.equal(list.last?.data, 99, "last item not expected value");
56
+ assert_1.strict.equal(list.length, listCount + 1, "The list count doesn't match the expected count.");
57
+ });
58
+ });
59
+ describe(".splice", () => {
60
+ for (const splicePos of [-1, 0, 1, Math.floor(listCount / 2), listCount, listCount - 1]) {
61
+ it(`splice at position ${splicePos}`, () => {
62
+ const nodesArray = [...list];
63
+ // negative numbers for the start move back from the end
64
+ // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice#syntax
65
+ const spliceIndex = splicePos < 0 ? nodesArray.length + splicePos : splicePos;
66
+ // capture the node for the list splice
67
+ const spliceNode = nodesArray[spliceIndex];
68
+ const arraySplice = nodesArray.splice(spliceIndex);
69
+ const listSplice = spliceNode === undefined ? new collections_1.DoublyLinkedList() : list.splice(spliceNode);
70
+ assert_1.strict.equal(list.length, nodesArray.length, "remaining lengths don't match");
71
+ assert_1.strict.equal(listSplice.length, arraySplice.length, "spliced lengths don't match");
72
+ const listNodes = [...list];
73
+ for (let i = 0; i < listNodes.length; i++) {
74
+ assert_1.strict.equal(listNodes[i], nodesArray[i], `remaining node mismatch at pos ${i}`);
75
+ }
76
+ const listSpliceNodes = [...listSplice];
77
+ for (let i = 0; i < listSpliceNodes.length; i++) {
78
+ assert_1.strict.equal(listSpliceNodes[i], arraySplice[i], `splice node mismatch at pos ${i}`);
79
+ }
80
+ });
81
+ }
82
+ });
83
+ });
84
+ //# sourceMappingURL=collections.list.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.list.spec.js","sourceRoot":"","sources":["../../src/test/collections.list.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { DoublyLinkedList, walkList } from \"../collections\";\n\ndescribe(\"Collections.DoublyLinkedList\", () => {\n\tconst listCount = 5;\n\tlet list: DoublyLinkedList<number>;\n\n\tbeforeEach(() => {\n\t\tlist = new DoublyLinkedList<number>();\n\t\tfor (let i = 0; i < listCount; i++) {\n\t\t\tlist.unshift(i);\n\t\t}\n\t});\n\n\tdescribe(\".length\", () => {\n\t\tit(\"Should return the total number of items in the list\", () =>\n\t\t\tassert.equal(\n\t\t\t\tlist.length,\n\t\t\t\tlistCount,\n\t\t\t\t\"The list count doesn't match the expected count.\",\n\t\t\t));\n\t});\n\n\tdescribe(\".first\", () => {\n\t\tit(\"Should return the first item in the list\", () =>\n\t\t\tassert.equal(list.first?.data, listCount - 1, \"first item not expected value\"));\n\t});\n\n\tdescribe(\".last\", () => {\n\t\tit(\"Should return the last item in the list\", () =>\n\t\t\tassert.equal(list.last?.data, 0, \"last item not expected value\"));\n\t});\n\n\tdescribe(\"walkList\", () => {\n\t\tit(\"Should walk all items of the list\", () => {\n\t\t\tlet i = listCount - 1;\n\t\t\twalkList(list, (node) => {\n\t\t\t\tassert.equal(node.data, i, \"elemeted not expected value\");\n\t\t\t\ti--;\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\".iterator\", () => {\n\t\tit(\"Should walk all items of the list\", () => {\n\t\t\tlet i = listCount - 1;\n\t\t\tfor (const item of list) {\n\t\t\t\tassert.equal(item.data, i, \"elemeted not expected value\");\n\t\t\t\ti--;\n\t\t\t}\n\t\t});\n\t});\n\n\tdescribe(\".unshift\", () => {\n\t\tit(\"Should add item to the start of the list\", () => {\n\t\t\tlist.unshift(99);\n\t\t\tassert.equal(list.first?.data, 99, \"first item not expected value\");\n\t\t\tassert.equal(\n\t\t\t\tlist.length,\n\t\t\t\tlistCount + 1,\n\t\t\t\t\"The list count doesn't match the expected count.\",\n\t\t\t);\n\t\t});\n\t});\n\tdescribe(\".push\", () => {\n\t\tit(\"Should add item to the end of the list\", () => {\n\t\t\tlist.push(99);\n\t\t\tassert.equal(list.last?.data, 99, \"last item not expected value\");\n\t\t\tassert.equal(\n\t\t\t\tlist.length,\n\t\t\t\tlistCount + 1,\n\t\t\t\t\"The list count doesn't match the expected count.\",\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\".splice\", () => {\n\t\tfor (const splicePos of [-1, 0, 1, Math.floor(listCount / 2), listCount, listCount - 1]) {\n\t\t\tit(`splice at position ${splicePos}`, () => {\n\t\t\t\tconst nodesArray = [...list];\n\t\t\t\t// negative numbers for the start move back from the end\n\t\t\t\t// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice#syntax\n\t\t\t\tconst spliceIndex = splicePos < 0 ? nodesArray.length + splicePos : splicePos;\n\t\t\t\t// capture the node for the list splice\n\t\t\t\tconst spliceNode = nodesArray[spliceIndex];\n\t\t\t\tconst arraySplice = nodesArray.splice(spliceIndex);\n\n\t\t\t\tconst listSplice =\n\t\t\t\t\tspliceNode === undefined ? new DoublyLinkedList() : list.splice(spliceNode);\n\n\t\t\t\tassert.equal(list.length, nodesArray.length, \"remaining lengths don't match\");\n\t\t\t\tassert.equal(listSplice.length, arraySplice.length, \"spliced lengths don't match\");\n\n\t\t\t\tconst listNodes = [...list];\n\t\t\t\tfor (let i = 0; i < listNodes.length; i++) {\n\t\t\t\t\tassert.equal(\n\t\t\t\t\t\tlistNodes[i],\n\t\t\t\t\t\tnodesArray[i],\n\t\t\t\t\t\t`remaining node mismatch at pos ${i}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst listSpliceNodes = [...listSplice];\n\t\t\t\tfor (let i = 0; i < listSpliceNodes.length; i++) {\n\t\t\t\t\tassert.equal(\n\t\t\t\t\t\tlistSpliceNodes[i],\n\t\t\t\t\t\tarraySplice[i],\n\t\t\t\t\t\t`splice node mismatch at pos ${i}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n});\n"]}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=createInsertOnlyAttributionPolicy.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInsertOnlyAttributionPolicy.spec.d.ts","sourceRoot":"","sources":["../../src/test/createInsertOnlyAttributionPolicy.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const assert_1 = require("assert");
8
+ const attributionPolicy_1 = require("../attributionPolicy");
9
+ const testClient_1 = require("./testClient");
10
+ const localUserLongId = "localUser";
11
+ describe("createInsertOnlyAttributionPolicy", () => {
12
+ let client;
13
+ let seq = 0;
14
+ beforeEach(() => {
15
+ client = new testClient_1.TestClient({
16
+ attribution: {
17
+ track: true,
18
+ policyFactory: attributionPolicy_1.createInsertOnlyAttributionPolicy,
19
+ },
20
+ });
21
+ seq = 0;
22
+ });
23
+ it("Attributes content on insert", () => {
24
+ client.startOrUpdateCollaboration(localUserLongId);
25
+ client.applyMsg(client.makeOpMessage(client.insertTextLocal(0, "ABC"), ++seq, seq - 1));
26
+ assert_1.strict.deepEqual(client.getAllAttributionSeqs(), [1, 1, 1]);
27
+ });
28
+ it("Attributes content inserted before starting collaboration with a detached key", () => {
29
+ client.insertTextLocal(0, "C");
30
+ client.startOrUpdateCollaboration(localUserLongId);
31
+ client.applyMsg(client.makeOpMessage(client.insertTextLocal(0, "AB"), ++seq, seq - 1));
32
+ assert_1.strict.deepEqual(client.getAllAttributionSeqs(), [1, 1, { type: "detached", id: 0 }]);
33
+ });
34
+ });
35
+ //# sourceMappingURL=createInsertOnlyAttributionPolicy.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInsertOnlyAttributionPolicy.spec.js","sourceRoot":"","sources":["../../src/test/createInsertOnlyAttributionPolicy.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAA0C;AAC1C,4DAAyE;AACzE,6CAA0C;AAE1C,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAClD,IAAI,MAAkB,CAAC;IACvB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,UAAU,CAAC,GAAG,EAAE;QACf,MAAM,GAAG,IAAI,uBAAU,CAAC;YACvB,WAAW,EAAE;gBACZ,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,qDAAiC;aAChD;SACD,CAAC,CAAC;QACH,GAAG,GAAG,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,eAAM,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACvF,eAAM,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { createInsertOnlyAttributionPolicy } from \"../attributionPolicy\";\nimport { TestClient } from \"./testClient\";\n\nconst localUserLongId = \"localUser\";\ndescribe(\"createInsertOnlyAttributionPolicy\", () => {\n\tlet client: TestClient;\n\tlet seq = 0;\n\tbeforeEach(() => {\n\t\tclient = new TestClient({\n\t\t\tattribution: {\n\t\t\t\ttrack: true,\n\t\t\t\tpolicyFactory: createInsertOnlyAttributionPolicy,\n\t\t\t},\n\t\t});\n\t\tseq = 0;\n\t});\n\n\tit(\"Attributes content on insert\", () => {\n\t\tclient.startOrUpdateCollaboration(localUserLongId);\n\t\tclient.applyMsg(client.makeOpMessage(client.insertTextLocal(0, \"ABC\"), ++seq, seq - 1));\n\t\tassert.deepEqual(client.getAllAttributionSeqs(), [1, 1, 1]);\n\t});\n\n\tit(\"Attributes content inserted before starting collaboration with a detached key\", () => {\n\t\tclient.insertTextLocal(0, \"C\");\n\t\tclient.startOrUpdateCollaboration(localUserLongId);\n\t\tclient.applyMsg(client.makeOpMessage(client.insertTextLocal(0, \"AB\"), ++seq, seq - 1));\n\t\tassert.deepEqual(client.getAllAttributionSeqs(), [1, 1, { type: \"detached\", id: 0 }]);\n\t});\n});\n"]}
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export { createRevertDriver, getStats, MergeTreeStats, specToSegment, TestClient, TestClientRevertibleDriver, } from "./testClient";
6
+ export { checkTextMatchRelative, TestServer } from "./testServer";
7
+ export { countOperations, insertMarker, insertSegments, insertText, loadTextFromFile, loadTextFromFileWithMarkers, markRangeRemoved, nodeOrdinalsHaveIntegrity, validatePartialLengths, } from "./testUtils";
8
+ export { annotateRange, applyMessages, doOverRange, generateClientNames, generateOperationMessagesForClients, IConfigRange, IMergeTreeOperationRunnerConfig, insertAtRefPos, removeRange, ReplayGroup, replayResultsPath, runMergeTreeOperationRunner, TestOperation, } from "./mergeTreeOperationRunner";
9
+ export { LRUSegment, MergeTree } from "../mergeTree";
10
+ export { MergeTreeTextHelper } from "../MergeTreeTextHelper";
11
+ export { SnapshotLegacy } from "../snapshotlegacy";
12
+ export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, ConflictAction, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, IJSONMarkerSegment, IJSONSegment, IMarkerDef, IMergeNodeCommon, IMergeTreeAnnotateMsg, IMergeTreeClientSequenceArgs, IMergeTreeDelta, IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOp, IMergeTreeDeltaOpArgs, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeMaintenanceCallbackArgs, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeSegmentDelta, IMergeTreeTextHelper, IRBAugmentation, IRBMatcher, IRelativePosition, IRemovalInfo, ISegment, ISegmentAction, KeyComparer, LocalReferenceCollection, LocalReferencePosition, MapLike, Marker, matchProperties, maxReferencePosition, MergeNode, MergeTreeDeltaOperationType, MergeTreeDeltaOperationTypes, MergeTreeDeltaRevertible, MergeTreeDeltaType, MergeTreeMaintenanceType, MergeTreeRevertibleDriver, minReferencePosition, PropertiesManager, Property, PropertyAction, PropertySet, RBNode, RBNodeActions, RedBlackTree, ReferencePosition, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SegmentGroup, SegmentGroupCollection, SortedSegmentSet, SortedSegmentSetItem, SortedSet, TextSegment, toRemovalInfo, Trackable, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,0BAA0B,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EACnC,YAAY,EACZ,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,iCAAiC,EACjC,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,OAAO,EACP,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MergeTreeMaintenanceType = exports.MergeTreeDeltaType = exports.MergeNode = exports.maxReferencePosition = exports.matchProperties = exports.Marker = exports.LocalReferenceCollection = exports.discardMergeTreeDeltaRevertible = exports.DetachedReferencePosition = exports.debugMarkerToString = exports.createRemoveRangeOp = exports.createMap = exports.createInsertSegmentOp = exports.createInsertOp = exports.createGroupOp = exports.createDetachedLocalReferencePosition = exports.createAnnotateRangeOp = exports.compareReferencePositions = exports.CollaborationWindow = exports.Client = exports.BaseSegment = exports.appendToMergeTreeDeltaRevertibles = exports.addProperties = exports.SnapshotLegacy = exports.MergeTreeTextHelper = exports.MergeTree = exports.runMergeTreeOperationRunner = exports.replayResultsPath = exports.removeRange = exports.insertAtRefPos = exports.generateOperationMessagesForClients = exports.generateClientNames = exports.doOverRange = exports.applyMessages = exports.annotateRange = exports.validatePartialLengths = exports.nodeOrdinalsHaveIntegrity = exports.markRangeRemoved = exports.loadTextFromFileWithMarkers = exports.loadTextFromFile = exports.insertText = exports.insertSegments = exports.insertMarker = exports.countOperations = exports.TestServer = exports.checkTextMatchRelative = exports.TestClient = exports.specToSegment = exports.getStats = exports.createRevertDriver = void 0;
8
+ exports.UniversalSequenceNumber = exports.UnassignedSequenceNumber = exports.TrackingGroupCollection = exports.TrackingGroup = exports.toRemovalInfo = exports.TextSegment = exports.SortedSet = exports.SortedSegmentSet = exports.SegmentGroupCollection = exports.revertMergeTreeDeltaRevertibles = exports.reservedTileLabelsKey = exports.reservedMarkerSimpleTypeKey = exports.reservedMarkerIdKey = exports.refTypeIncludesFlag = exports.refHasTileLabels = exports.refHasTileLabel = exports.refGetTileLabels = exports.ReferenceType = exports.RedBlackTree = exports.PropertiesManager = exports.minReferencePosition = void 0;
9
+ var testClient_1 = require("./testClient");
10
+ Object.defineProperty(exports, "createRevertDriver", { enumerable: true, get: function () { return testClient_1.createRevertDriver; } });
11
+ Object.defineProperty(exports, "getStats", { enumerable: true, get: function () { return testClient_1.getStats; } });
12
+ Object.defineProperty(exports, "specToSegment", { enumerable: true, get: function () { return testClient_1.specToSegment; } });
13
+ Object.defineProperty(exports, "TestClient", { enumerable: true, get: function () { return testClient_1.TestClient; } });
14
+ var testServer_1 = require("./testServer");
15
+ Object.defineProperty(exports, "checkTextMatchRelative", { enumerable: true, get: function () { return testServer_1.checkTextMatchRelative; } });
16
+ Object.defineProperty(exports, "TestServer", { enumerable: true, get: function () { return testServer_1.TestServer; } });
17
+ var testUtils_1 = require("./testUtils");
18
+ Object.defineProperty(exports, "countOperations", { enumerable: true, get: function () { return testUtils_1.countOperations; } });
19
+ Object.defineProperty(exports, "insertMarker", { enumerable: true, get: function () { return testUtils_1.insertMarker; } });
20
+ Object.defineProperty(exports, "insertSegments", { enumerable: true, get: function () { return testUtils_1.insertSegments; } });
21
+ Object.defineProperty(exports, "insertText", { enumerable: true, get: function () { return testUtils_1.insertText; } });
22
+ Object.defineProperty(exports, "loadTextFromFile", { enumerable: true, get: function () { return testUtils_1.loadTextFromFile; } });
23
+ Object.defineProperty(exports, "loadTextFromFileWithMarkers", { enumerable: true, get: function () { return testUtils_1.loadTextFromFileWithMarkers; } });
24
+ Object.defineProperty(exports, "markRangeRemoved", { enumerable: true, get: function () { return testUtils_1.markRangeRemoved; } });
25
+ Object.defineProperty(exports, "nodeOrdinalsHaveIntegrity", { enumerable: true, get: function () { return testUtils_1.nodeOrdinalsHaveIntegrity; } });
26
+ Object.defineProperty(exports, "validatePartialLengths", { enumerable: true, get: function () { return testUtils_1.validatePartialLengths; } });
27
+ var mergeTreeOperationRunner_1 = require("./mergeTreeOperationRunner");
28
+ Object.defineProperty(exports, "annotateRange", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.annotateRange; } });
29
+ Object.defineProperty(exports, "applyMessages", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.applyMessages; } });
30
+ Object.defineProperty(exports, "doOverRange", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.doOverRange; } });
31
+ Object.defineProperty(exports, "generateClientNames", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.generateClientNames; } });
32
+ Object.defineProperty(exports, "generateOperationMessagesForClients", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.generateOperationMessagesForClients; } });
33
+ Object.defineProperty(exports, "insertAtRefPos", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.insertAtRefPos; } });
34
+ Object.defineProperty(exports, "removeRange", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.removeRange; } });
35
+ Object.defineProperty(exports, "replayResultsPath", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.replayResultsPath; } });
36
+ Object.defineProperty(exports, "runMergeTreeOperationRunner", { enumerable: true, get: function () { return mergeTreeOperationRunner_1.runMergeTreeOperationRunner; } });
37
+ var mergeTree_1 = require("../mergeTree");
38
+ Object.defineProperty(exports, "MergeTree", { enumerable: true, get: function () { return mergeTree_1.MergeTree; } });
39
+ var MergeTreeTextHelper_1 = require("../MergeTreeTextHelper");
40
+ Object.defineProperty(exports, "MergeTreeTextHelper", { enumerable: true, get: function () { return MergeTreeTextHelper_1.MergeTreeTextHelper; } });
41
+ var snapshotlegacy_1 = require("../snapshotlegacy");
42
+ Object.defineProperty(exports, "SnapshotLegacy", { enumerable: true, get: function () { return snapshotlegacy_1.SnapshotLegacy; } });
43
+ var index_1 = require("../index");
44
+ Object.defineProperty(exports, "addProperties", { enumerable: true, get: function () { return index_1.addProperties; } });
45
+ Object.defineProperty(exports, "appendToMergeTreeDeltaRevertibles", { enumerable: true, get: function () { return index_1.appendToMergeTreeDeltaRevertibles; } });
46
+ Object.defineProperty(exports, "BaseSegment", { enumerable: true, get: function () { return index_1.BaseSegment; } });
47
+ Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return index_1.Client; } });
48
+ Object.defineProperty(exports, "CollaborationWindow", { enumerable: true, get: function () { return index_1.CollaborationWindow; } });
49
+ Object.defineProperty(exports, "compareReferencePositions", { enumerable: true, get: function () { return index_1.compareReferencePositions; } });
50
+ Object.defineProperty(exports, "createAnnotateRangeOp", { enumerable: true, get: function () { return index_1.createAnnotateRangeOp; } });
51
+ Object.defineProperty(exports, "createDetachedLocalReferencePosition", { enumerable: true, get: function () { return index_1.createDetachedLocalReferencePosition; } });
52
+ Object.defineProperty(exports, "createGroupOp", { enumerable: true, get: function () { return index_1.createGroupOp; } });
53
+ Object.defineProperty(exports, "createInsertOp", { enumerable: true, get: function () { return index_1.createInsertOp; } });
54
+ Object.defineProperty(exports, "createInsertSegmentOp", { enumerable: true, get: function () { return index_1.createInsertSegmentOp; } });
55
+ Object.defineProperty(exports, "createMap", { enumerable: true, get: function () { return index_1.createMap; } });
56
+ Object.defineProperty(exports, "createRemoveRangeOp", { enumerable: true, get: function () { return index_1.createRemoveRangeOp; } });
57
+ Object.defineProperty(exports, "debugMarkerToString", { enumerable: true, get: function () { return index_1.debugMarkerToString; } });
58
+ Object.defineProperty(exports, "DetachedReferencePosition", { enumerable: true, get: function () { return index_1.DetachedReferencePosition; } });
59
+ Object.defineProperty(exports, "discardMergeTreeDeltaRevertible", { enumerable: true, get: function () { return index_1.discardMergeTreeDeltaRevertible; } });
60
+ Object.defineProperty(exports, "LocalReferenceCollection", { enumerable: true, get: function () { return index_1.LocalReferenceCollection; } });
61
+ Object.defineProperty(exports, "Marker", { enumerable: true, get: function () { return index_1.Marker; } });
62
+ Object.defineProperty(exports, "matchProperties", { enumerable: true, get: function () { return index_1.matchProperties; } });
63
+ Object.defineProperty(exports, "maxReferencePosition", { enumerable: true, get: function () { return index_1.maxReferencePosition; } });
64
+ Object.defineProperty(exports, "MergeNode", { enumerable: true, get: function () { return index_1.MergeNode; } });
65
+ Object.defineProperty(exports, "MergeTreeDeltaType", { enumerable: true, get: function () { return index_1.MergeTreeDeltaType; } });
66
+ Object.defineProperty(exports, "MergeTreeMaintenanceType", { enumerable: true, get: function () { return index_1.MergeTreeMaintenanceType; } });
67
+ Object.defineProperty(exports, "minReferencePosition", { enumerable: true, get: function () { return index_1.minReferencePosition; } });
68
+ Object.defineProperty(exports, "PropertiesManager", { enumerable: true, get: function () { return index_1.PropertiesManager; } });
69
+ Object.defineProperty(exports, "RedBlackTree", { enumerable: true, get: function () { return index_1.RedBlackTree; } });
70
+ Object.defineProperty(exports, "ReferenceType", { enumerable: true, get: function () { return index_1.ReferenceType; } });
71
+ Object.defineProperty(exports, "refGetTileLabels", { enumerable: true, get: function () { return index_1.refGetTileLabels; } });
72
+ Object.defineProperty(exports, "refHasTileLabel", { enumerable: true, get: function () { return index_1.refHasTileLabel; } });
73
+ Object.defineProperty(exports, "refHasTileLabels", { enumerable: true, get: function () { return index_1.refHasTileLabels; } });
74
+ Object.defineProperty(exports, "refTypeIncludesFlag", { enumerable: true, get: function () { return index_1.refTypeIncludesFlag; } });
75
+ Object.defineProperty(exports, "reservedMarkerIdKey", { enumerable: true, get: function () { return index_1.reservedMarkerIdKey; } });
76
+ Object.defineProperty(exports, "reservedMarkerSimpleTypeKey", { enumerable: true, get: function () { return index_1.reservedMarkerSimpleTypeKey; } });
77
+ Object.defineProperty(exports, "reservedTileLabelsKey", { enumerable: true, get: function () { return index_1.reservedTileLabelsKey; } });
78
+ Object.defineProperty(exports, "revertMergeTreeDeltaRevertibles", { enumerable: true, get: function () { return index_1.revertMergeTreeDeltaRevertibles; } });
79
+ Object.defineProperty(exports, "SegmentGroupCollection", { enumerable: true, get: function () { return index_1.SegmentGroupCollection; } });
80
+ Object.defineProperty(exports, "SortedSegmentSet", { enumerable: true, get: function () { return index_1.SortedSegmentSet; } });
81
+ Object.defineProperty(exports, "SortedSet", { enumerable: true, get: function () { return index_1.SortedSet; } });
82
+ Object.defineProperty(exports, "TextSegment", { enumerable: true, get: function () { return index_1.TextSegment; } });
83
+ Object.defineProperty(exports, "toRemovalInfo", { enumerable: true, get: function () { return index_1.toRemovalInfo; } });
84
+ Object.defineProperty(exports, "TrackingGroup", { enumerable: true, get: function () { return index_1.TrackingGroup; } });
85
+ Object.defineProperty(exports, "TrackingGroupCollection", { enumerable: true, get: function () { return index_1.TrackingGroupCollection; } });
86
+ Object.defineProperty(exports, "UnassignedSequenceNumber", { enumerable: true, get: function () { return index_1.UnassignedSequenceNumber; } });
87
+ Object.defineProperty(exports, "UniversalSequenceNumber", { enumerable: true, get: function () { return index_1.UniversalSequenceNumber; } });
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH,2CAOsB;AANrB,gHAAA,kBAAkB,OAAA;AAClB,sGAAA,QAAQ,OAAA;AAER,2GAAA,aAAa,OAAA;AACb,wGAAA,UAAU,OAAA;AAGX,2CAAkE;AAAzD,oHAAA,sBAAsB,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC3C,yCAUqB;AATpB,4GAAA,eAAe,OAAA;AACf,yGAAA,YAAY,OAAA;AACZ,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,wHAAA,2BAA2B,OAAA;AAC3B,6GAAA,gBAAgB,OAAA;AAChB,sHAAA,yBAAyB,OAAA;AACzB,mHAAA,sBAAsB,OAAA;AAEvB,uEAcoC;AAbnC,yHAAA,aAAa,OAAA;AACb,yHAAA,aAAa,OAAA;AACb,uHAAA,WAAW,OAAA;AACX,+HAAA,mBAAmB,OAAA;AACnB,+IAAA,mCAAmC,OAAA;AAGnC,0HAAA,cAAc,OAAA;AACd,uHAAA,WAAW,OAAA;AAEX,6HAAA,iBAAiB,OAAA;AACjB,uIAAA,2BAA2B,OAAA;AAG5B,0CAAqD;AAAhC,sGAAA,SAAS,OAAA;AAC9B,8DAA6D;AAApD,0HAAA,mBAAmB,OAAA;AAC5B,oDAAmD;AAA1C,gHAAA,cAAc,OAAA;AACvB,kCAqFkB;AApFjB,sGAAA,aAAa,OAAA;AACb,0HAAA,iCAAiC,OAAA;AACjC,oGAAA,WAAW,OAAA;AACX,+FAAA,MAAM,OAAA;AACN,4GAAA,mBAAmB,OAAA;AACnB,kHAAA,yBAAyB,OAAA;AAEzB,8GAAA,qBAAqB,OAAA;AACrB,6HAAA,oCAAoC,OAAA;AACpC,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AACd,8GAAA,qBAAqB,OAAA;AACrB,kGAAA,SAAS,OAAA;AACT,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AACnB,kHAAA,yBAAyB,OAAA;AACzB,wHAAA,+BAA+B,OAAA;AAyB/B,iHAAA,wBAAwB,OAAA;AAGxB,+FAAA,MAAM,OAAA;AACN,wGAAA,eAAe,OAAA;AACf,6GAAA,oBAAoB,OAAA;AACpB,kGAAA,SAAS,OAAA;AAIT,2GAAA,kBAAkB,OAAA;AAClB,iHAAA,wBAAwB,OAAA;AAExB,6GAAA,oBAAoB,OAAA;AACpB,0GAAA,iBAAiB,OAAA;AAMjB,qGAAA,YAAY,OAAA;AAEZ,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AACnB,oHAAA,2BAA2B,OAAA;AAC3B,8GAAA,qBAAqB,OAAA;AACrB,wHAAA,+BAA+B,OAAA;AAE/B,+GAAA,sBAAsB,OAAA;AACtB,yGAAA,gBAAgB,OAAA;AAEhB,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AAEb,sGAAA,aAAa,OAAA;AACb,gHAAA,uBAAuB,OAAA;AACvB,iHAAA,wBAAwB,OAAA;AACxB,gHAAA,uBAAuB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tcreateRevertDriver,\n\tgetStats,\n\tMergeTreeStats,\n\tspecToSegment,\n\tTestClient,\n\tTestClientRevertibleDriver,\n} from \"./testClient\";\nexport { checkTextMatchRelative, TestServer } from \"./testServer\";\nexport {\n\tcountOperations,\n\tinsertMarker,\n\tinsertSegments,\n\tinsertText,\n\tloadTextFromFile,\n\tloadTextFromFileWithMarkers,\n\tmarkRangeRemoved,\n\tnodeOrdinalsHaveIntegrity,\n\tvalidatePartialLengths,\n} from \"./testUtils\";\nexport {\n\tannotateRange,\n\tapplyMessages,\n\tdoOverRange,\n\tgenerateClientNames,\n\tgenerateOperationMessagesForClients,\n\tIConfigRange,\n\tIMergeTreeOperationRunnerConfig,\n\tinsertAtRefPos,\n\tremoveRange,\n\tReplayGroup,\n\treplayResultsPath,\n\trunMergeTreeOperationRunner,\n\tTestOperation,\n} from \"./mergeTreeOperationRunner\";\nexport { LRUSegment, MergeTree } from \"../mergeTree\";\nexport { MergeTreeTextHelper } from \"../MergeTreeTextHelper\";\nexport { SnapshotLegacy } from \"../snapshotlegacy\";\nexport {\n\taddProperties,\n\tappendToMergeTreeDeltaRevertibles,\n\tBaseSegment,\n\tClient,\n\tCollaborationWindow,\n\tcompareReferencePositions,\n\tConflictAction,\n\tcreateAnnotateRangeOp,\n\tcreateDetachedLocalReferencePosition,\n\tcreateGroupOp,\n\tcreateInsertOp,\n\tcreateInsertSegmentOp,\n\tcreateMap,\n\tcreateRemoveRangeOp,\n\tdebugMarkerToString,\n\tDetachedReferencePosition,\n\tdiscardMergeTreeDeltaRevertible,\n\tIJSONMarkerSegment,\n\tIJSONSegment,\n\tIMarkerDef,\n\tIMergeNodeCommon,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDelta,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOp,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tIMergeTreeOp,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeSegmentDelta,\n\tIMergeTreeTextHelper,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tIRelativePosition,\n\tIRemovalInfo,\n\tISegment,\n\tISegmentAction,\n\tKeyComparer,\n\tLocalReferenceCollection,\n\tLocalReferencePosition,\n\tMapLike,\n\tMarker,\n\tmatchProperties,\n\tmaxReferencePosition,\n\tMergeNode,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeDeltaRevertible,\n\tMergeTreeDeltaType,\n\tMergeTreeMaintenanceType,\n\tMergeTreeRevertibleDriver,\n\tminReferencePosition,\n\tPropertiesManager,\n\tProperty,\n\tPropertyAction,\n\tPropertySet,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tReferencePosition,\n\tReferenceType,\n\trefGetTileLabels,\n\trefHasTileLabel,\n\trefHasTileLabels,\n\trefTypeIncludesFlag,\n\treservedMarkerIdKey,\n\treservedMarkerSimpleTypeKey,\n\treservedTileLabelsKey,\n\trevertMergeTreeDeltaRevertibles,\n\tSegmentGroup,\n\tSegmentGroupCollection,\n\tSortedSegmentSet,\n\tSortedSegmentSetItem,\n\tSortedSet,\n\tTextSegment,\n\ttoRemovalInfo,\n\tTrackable,\n\tTrackingGroup,\n\tTrackingGroupCollection,\n\tUnassignedSequenceNumber,\n\tUniversalSequenceNumber,\n} from \"../index\";\n"]}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=mergeTree.annotate.deltaCallback.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeTree.annotate.deltaCallback.spec.d.ts","sourceRoot":"","sources":["../../src/test/mergeTree.annotate.deltaCallback.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const assert_1 = require("assert");
8
+ const ops_1 = require("../ops");
9
+ const mergeTreeDeltaCallback_1 = require("../mergeTreeDeltaCallback");
10
+ const constants_1 = require("../constants");
11
+ const textSegment_1 = require("../textSegment");
12
+ const mergeTree_1 = require("../mergeTree");
13
+ const testUtils_1 = require("./testUtils");
14
+ describe("MergeTree", () => {
15
+ let mergeTree;
16
+ const localClientId = 17;
17
+ let currentSequenceNumber;
18
+ beforeEach(() => {
19
+ mergeTree = new mergeTree_1.MergeTree();
20
+ (0, testUtils_1.insertSegments)({
21
+ mergeTree,
22
+ pos: 0,
23
+ segments: [textSegment_1.TextSegment.make("hello world")],
24
+ refSeq: constants_1.UniversalSequenceNumber,
25
+ clientId: constants_1.LocalClientId,
26
+ seq: constants_1.UniversalSequenceNumber,
27
+ opArgs: undefined,
28
+ });
29
+ currentSequenceNumber = 0;
30
+ mergeTree.startCollaboration(localClientId,
31
+ /* minSeq: */ currentSequenceNumber,
32
+ /* currentSeq: */ currentSequenceNumber);
33
+ });
34
+ describe("annotateRange", () => {
35
+ it("Event on annotation", () => {
36
+ const count = (0, testUtils_1.countOperations)(mergeTree);
37
+ mergeTree.annotateRange(4, 6, {
38
+ foo: "bar",
39
+ }, currentSequenceNumber, localClientId, constants_1.UnassignedSequenceNumber, undefined);
40
+ assert_1.strict.deepStrictEqual(count, {
41
+ [ops_1.MergeTreeDeltaType.ANNOTATE]: 1,
42
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 2,
43
+ });
44
+ });
45
+ it("No event on annotation of empty range", () => {
46
+ const count = (0, testUtils_1.countOperations)(mergeTree);
47
+ mergeTree.annotateRange(3, 3, {
48
+ foo: "bar",
49
+ }, currentSequenceNumber, localClientId, ++currentSequenceNumber, undefined);
50
+ assert_1.strict.deepStrictEqual(count, {
51
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 1,
52
+ });
53
+ });
54
+ it("Annotate over local insertion", () => {
55
+ (0, testUtils_1.insertText)({
56
+ mergeTree,
57
+ pos: 4,
58
+ refSeq: currentSequenceNumber,
59
+ clientId: localClientId,
60
+ seq: constants_1.UnassignedSequenceNumber,
61
+ text: "a",
62
+ props: undefined,
63
+ opArgs: undefined,
64
+ });
65
+ const count = (0, testUtils_1.countOperations)(mergeTree);
66
+ mergeTree.annotateRange(3, 8, {
67
+ foo: "bar",
68
+ }, currentSequenceNumber, localClientId, constants_1.UnassignedSequenceNumber, undefined);
69
+ assert_1.strict.deepStrictEqual(count, {
70
+ [ops_1.MergeTreeDeltaType.ANNOTATE]: 1,
71
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 2,
72
+ });
73
+ });
74
+ it("Annotate over remote insertion", () => {
75
+ const remoteClientId = 35;
76
+ let remoteSequenceNumber = currentSequenceNumber;
77
+ (0, testUtils_1.insertText)({
78
+ mergeTree,
79
+ pos: 4,
80
+ refSeq: remoteSequenceNumber,
81
+ clientId: remoteClientId,
82
+ seq: ++remoteSequenceNumber,
83
+ text: "a",
84
+ props: undefined,
85
+ opArgs: undefined,
86
+ });
87
+ const count = (0, testUtils_1.countOperations)(mergeTree);
88
+ mergeTree.annotateRange(3, 8, {
89
+ foo: "bar",
90
+ }, currentSequenceNumber, localClientId, constants_1.UnassignedSequenceNumber, undefined);
91
+ assert_1.strict.deepStrictEqual(count, {
92
+ [ops_1.MergeTreeDeltaType.ANNOTATE]: 1,
93
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 2,
94
+ });
95
+ });
96
+ it("Annotate over remote deletion", () => {
97
+ const remoteClientId = 35;
98
+ let remoteSequenceNumber = currentSequenceNumber;
99
+ (0, testUtils_1.markRangeRemoved)({
100
+ mergeTree,
101
+ start: 4,
102
+ end: 6,
103
+ refSeq: remoteSequenceNumber,
104
+ clientId: remoteClientId,
105
+ seq: ++remoteSequenceNumber,
106
+ overwrite: false,
107
+ opArgs: undefined,
108
+ });
109
+ const count = (0, testUtils_1.countOperations)(mergeTree);
110
+ mergeTree.annotateRange(3, 8, {
111
+ foo: "bar",
112
+ }, currentSequenceNumber, localClientId, constants_1.UnassignedSequenceNumber, undefined);
113
+ assert_1.strict.deepStrictEqual(count, {
114
+ [ops_1.MergeTreeDeltaType.ANNOTATE]: 1,
115
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 2,
116
+ });
117
+ });
118
+ it("Remote annotate within local deletion", () => {
119
+ const remoteClientId = 35;
120
+ let remoteSequenceNumber = currentSequenceNumber;
121
+ (0, testUtils_1.markRangeRemoved)({
122
+ mergeTree,
123
+ start: 3,
124
+ end: 8,
125
+ refSeq: currentSequenceNumber,
126
+ clientId: localClientId,
127
+ seq: constants_1.UnassignedSequenceNumber,
128
+ overwrite: false,
129
+ opArgs: undefined,
130
+ });
131
+ const count = (0, testUtils_1.countOperations)(mergeTree);
132
+ mergeTree.annotateRange(4, 6, {
133
+ foo: "bar",
134
+ }, remoteSequenceNumber, remoteClientId, ++remoteSequenceNumber, undefined);
135
+ assert_1.strict.deepStrictEqual(count, {
136
+ [ops_1.MergeTreeDeltaType.ANNOTATE]: 1,
137
+ [mergeTreeDeltaCallback_1.MergeTreeMaintenanceType.SPLIT]: 2,
138
+ });
139
+ });
140
+ });
141
+ });
142
+ //# sourceMappingURL=mergeTree.annotate.deltaCallback.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeTree.annotate.deltaCallback.spec.js","sourceRoot":"","sources":["../../src/test/mergeTree.annotate.deltaCallback.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { MergeTreeDeltaType } from \"../ops\";\nimport { MergeTreeMaintenanceType } from \"../mergeTreeDeltaCallback\";\nimport { LocalClientId, UnassignedSequenceNumber, UniversalSequenceNumber } from \"../constants\";\nimport { TextSegment } from \"../textSegment\";\nimport { MergeTree } from \"../mergeTree\";\nimport { countOperations, insertSegments, insertText, markRangeRemoved } from \"./testUtils\";\n\ndescribe(\"MergeTree\", () => {\n\tlet mergeTree: MergeTree;\n\tconst localClientId = 17;\n\tlet currentSequenceNumber: number;\n\tbeforeEach(() => {\n\t\tmergeTree = new MergeTree();\n\t\tinsertSegments({\n\t\t\tmergeTree,\n\t\t\tpos: 0,\n\t\t\tsegments: [TextSegment.make(\"hello world\")],\n\t\t\trefSeq: UniversalSequenceNumber,\n\t\t\tclientId: LocalClientId,\n\t\t\tseq: UniversalSequenceNumber,\n\t\t\topArgs: undefined,\n\t\t});\n\n\t\tcurrentSequenceNumber = 0;\n\t\tmergeTree.startCollaboration(\n\t\t\tlocalClientId,\n\t\t\t/* minSeq: */ currentSequenceNumber,\n\t\t\t/* currentSeq: */ currentSequenceNumber,\n\t\t);\n\t});\n\n\tdescribe(\"annotateRange\", () => {\n\t\tit(\"Event on annotation\", () => {\n\t\t\tconst count = countOperations(mergeTree);\n\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t4,\n\t\t\t\t6,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tcurrentSequenceNumber,\n\t\t\t\tlocalClientId,\n\t\t\t\tUnassignedSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeDeltaType.ANNOTATE]: 1,\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 2,\n\t\t\t});\n\t\t});\n\n\t\tit(\"No event on annotation of empty range\", () => {\n\t\t\tconst count = countOperations(mergeTree);\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t3,\n\t\t\t\t3,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tcurrentSequenceNumber,\n\t\t\t\tlocalClientId,\n\t\t\t\t++currentSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 1,\n\t\t\t});\n\t\t});\n\n\t\tit(\"Annotate over local insertion\", () => {\n\t\t\tinsertText({\n\t\t\t\tmergeTree,\n\t\t\t\tpos: 4,\n\t\t\t\trefSeq: currentSequenceNumber,\n\t\t\t\tclientId: localClientId,\n\t\t\t\tseq: UnassignedSequenceNumber,\n\t\t\t\ttext: \"a\",\n\t\t\t\tprops: undefined,\n\t\t\t\topArgs: undefined,\n\t\t\t});\n\n\t\t\tconst count = countOperations(mergeTree);\n\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t3,\n\t\t\t\t8,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tcurrentSequenceNumber,\n\t\t\t\tlocalClientId,\n\t\t\t\tUnassignedSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeDeltaType.ANNOTATE]: 1,\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 2,\n\t\t\t});\n\t\t});\n\n\t\tit(\"Annotate over remote insertion\", () => {\n\t\t\tconst remoteClientId: number = 35;\n\t\t\tlet remoteSequenceNumber = currentSequenceNumber;\n\n\t\t\tinsertText({\n\t\t\t\tmergeTree,\n\t\t\t\tpos: 4,\n\t\t\t\trefSeq: remoteSequenceNumber,\n\t\t\t\tclientId: remoteClientId,\n\t\t\t\tseq: ++remoteSequenceNumber,\n\t\t\t\ttext: \"a\",\n\t\t\t\tprops: undefined,\n\t\t\t\topArgs: undefined,\n\t\t\t});\n\n\t\t\tconst count = countOperations(mergeTree);\n\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t3,\n\t\t\t\t8,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tcurrentSequenceNumber,\n\t\t\t\tlocalClientId,\n\t\t\t\tUnassignedSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeDeltaType.ANNOTATE]: 1,\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 2,\n\t\t\t});\n\t\t});\n\n\t\tit(\"Annotate over remote deletion\", () => {\n\t\t\tconst remoteClientId: number = 35;\n\t\t\tlet remoteSequenceNumber = currentSequenceNumber;\n\n\t\t\tmarkRangeRemoved({\n\t\t\t\tmergeTree,\n\t\t\t\tstart: 4,\n\t\t\t\tend: 6,\n\t\t\t\trefSeq: remoteSequenceNumber,\n\t\t\t\tclientId: remoteClientId,\n\t\t\t\tseq: ++remoteSequenceNumber,\n\t\t\t\toverwrite: false,\n\t\t\t\topArgs: undefined as any,\n\t\t\t});\n\n\t\t\tconst count = countOperations(mergeTree);\n\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t3,\n\t\t\t\t8,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tcurrentSequenceNumber,\n\t\t\t\tlocalClientId,\n\t\t\t\tUnassignedSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeDeltaType.ANNOTATE]: 1,\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 2,\n\t\t\t});\n\t\t});\n\n\t\tit(\"Remote annotate within local deletion\", () => {\n\t\t\tconst remoteClientId: number = 35;\n\t\t\tlet remoteSequenceNumber = currentSequenceNumber;\n\n\t\t\tmarkRangeRemoved({\n\t\t\t\tmergeTree,\n\t\t\t\tstart: 3,\n\t\t\t\tend: 8,\n\t\t\t\trefSeq: currentSequenceNumber,\n\t\t\t\tclientId: localClientId,\n\t\t\t\tseq: UnassignedSequenceNumber,\n\t\t\t\toverwrite: false,\n\t\t\t\topArgs: undefined as any,\n\t\t\t});\n\n\t\t\tconst count = countOperations(mergeTree);\n\n\t\t\tmergeTree.annotateRange(\n\t\t\t\t4,\n\t\t\t\t6,\n\t\t\t\t{\n\t\t\t\t\tfoo: \"bar\",\n\t\t\t\t},\n\t\t\t\tremoteSequenceNumber,\n\t\t\t\tremoteClientId,\n\t\t\t\t++remoteSequenceNumber,\n\t\t\t\tundefined as any,\n\t\t\t);\n\n\t\t\tassert.deepStrictEqual(count, {\n\t\t\t\t[MergeTreeDeltaType.ANNOTATE]: 1,\n\t\t\t\t[MergeTreeMaintenanceType.SPLIT]: 2,\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=mergeTree.annotate.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeTree.annotate.spec.d.ts","sourceRoot":"","sources":["../../src/test/mergeTree.annotate.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}