@fluid-experimental/tree 0.58.2000 → 0.58.3000-61081

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 (815) hide show
  1. package/README.md +9 -9
  2. package/dist/ChangeCompression.d.ts +39 -0
  3. package/dist/ChangeCompression.d.ts.map +1 -0
  4. package/dist/ChangeCompression.js +117 -0
  5. package/dist/ChangeCompression.js.map +1 -0
  6. package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -100
  7. package/dist/ChangeTypes.d.ts.map +1 -0
  8. package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
  9. package/dist/ChangeTypes.js.map +1 -0
  10. package/dist/Checkout.d.ts +39 -27
  11. package/dist/Checkout.d.ts.map +1 -1
  12. package/dist/Checkout.js +59 -31
  13. package/dist/Checkout.js.map +1 -1
  14. package/dist/Common.d.ts +175 -38
  15. package/dist/Common.d.ts.map +1 -1
  16. package/dist/Common.js +240 -103
  17. package/dist/Common.js.map +1 -1
  18. package/dist/EagerCheckout.d.ts +24 -0
  19. package/dist/EagerCheckout.d.ts.map +1 -0
  20. package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
  21. package/dist/EagerCheckout.js.map +1 -0
  22. package/dist/EditLog.d.ts +77 -63
  23. package/dist/EditLog.d.ts.map +1 -1
  24. package/dist/EditLog.js +85 -48
  25. package/dist/EditLog.js.map +1 -1
  26. package/dist/EditUtilities.d.ts +168 -0
  27. package/dist/EditUtilities.d.ts.map +1 -0
  28. package/dist/EditUtilities.js +373 -0
  29. package/dist/EditUtilities.js.map +1 -0
  30. package/dist/EventTypes.d.ts +73 -0
  31. package/dist/EventTypes.d.ts.map +1 -0
  32. package/dist/EventTypes.js +78 -0
  33. package/dist/EventTypes.js.map +1 -0
  34. package/dist/Forest.d.ts +29 -7
  35. package/dist/Forest.d.ts.map +1 -1
  36. package/dist/Forest.js +60 -36
  37. package/dist/Forest.js.map +1 -1
  38. package/dist/HistoryEditFactory.d.ts +20 -0
  39. package/dist/HistoryEditFactory.d.ts.map +1 -0
  40. package/dist/HistoryEditFactory.js +226 -0
  41. package/dist/HistoryEditFactory.js.map +1 -0
  42. package/dist/IdConversion.d.ts +12 -0
  43. package/dist/IdConversion.d.ts.map +1 -0
  44. package/dist/IdConversion.js +98 -0
  45. package/dist/IdConversion.js.map +1 -0
  46. package/dist/Identifiers.d.ts +89 -2
  47. package/dist/Identifiers.d.ts.map +1 -1
  48. package/dist/Identifiers.js +10 -0
  49. package/dist/Identifiers.js.map +1 -1
  50. package/dist/InitialTree.d.ts +2 -2
  51. package/dist/InitialTree.d.ts.map +1 -1
  52. package/dist/InitialTree.js +2 -1
  53. package/dist/InitialTree.js.map +1 -1
  54. package/dist/LazyCheckout.d.ts +28 -0
  55. package/dist/LazyCheckout.d.ts.map +1 -0
  56. package/dist/LazyCheckout.js +44 -0
  57. package/dist/LazyCheckout.js.map +1 -0
  58. package/dist/LogViewer.d.ts +130 -85
  59. package/dist/LogViewer.d.ts.map +1 -1
  60. package/dist/LogViewer.js +110 -85
  61. package/dist/LogViewer.js.map +1 -1
  62. package/dist/MergeHealth.d.ts +221 -0
  63. package/dist/MergeHealth.d.ts.map +1 -0
  64. package/dist/MergeHealth.js +263 -0
  65. package/dist/MergeHealth.js.map +1 -0
  66. package/dist/NodeIdUtilities.d.ts +90 -0
  67. package/dist/NodeIdUtilities.d.ts.map +1 -0
  68. package/dist/NodeIdUtilities.js +60 -0
  69. package/dist/NodeIdUtilities.js.map +1 -0
  70. package/dist/PayloadUtilities.d.ts +42 -0
  71. package/dist/PayloadUtilities.d.ts.map +1 -0
  72. package/dist/PayloadUtilities.js +114 -0
  73. package/dist/PayloadUtilities.js.map +1 -0
  74. package/dist/ReconciliationPath.d.ts +18 -13
  75. package/dist/ReconciliationPath.d.ts.map +1 -1
  76. package/dist/ReconciliationPath.js.map +1 -1
  77. package/dist/RevisionValueCache.d.ts +11 -2
  78. package/dist/RevisionValueCache.d.ts.map +1 -1
  79. package/dist/RevisionValueCache.js +2 -3
  80. package/dist/RevisionValueCache.js.map +1 -1
  81. package/dist/RevisionView.d.ts +83 -0
  82. package/dist/RevisionView.d.ts.map +1 -0
  83. package/dist/RevisionView.js +182 -0
  84. package/dist/RevisionView.js.map +1 -0
  85. package/dist/SerializationUtilities.d.ts +36 -0
  86. package/dist/SerializationUtilities.d.ts.map +1 -0
  87. package/dist/SerializationUtilities.js +102 -0
  88. package/dist/SerializationUtilities.js.map +1 -0
  89. package/dist/SharedTree.d.ts +400 -0
  90. package/dist/SharedTree.d.ts.map +1 -0
  91. package/dist/SharedTree.js +1064 -0
  92. package/dist/SharedTree.js.map +1 -0
  93. package/dist/SharedTreeEncoder.d.ts +102 -0
  94. package/dist/SharedTreeEncoder.d.ts.map +1 -0
  95. package/dist/SharedTreeEncoder.js +313 -0
  96. package/dist/SharedTreeEncoder.js.map +1 -0
  97. package/dist/StringInterner.d.ts +46 -0
  98. package/dist/StringInterner.d.ts.map +1 -0
  99. package/dist/StringInterner.js +61 -0
  100. package/dist/StringInterner.js.map +1 -0
  101. package/dist/Summary.d.ts +40 -0
  102. package/dist/Summary.d.ts.map +1 -0
  103. package/dist/Summary.js +23 -0
  104. package/dist/Summary.js.map +1 -0
  105. package/dist/SummaryBackCompatibility.d.ts +22 -22
  106. package/dist/SummaryBackCompatibility.d.ts.map +1 -1
  107. package/dist/SummaryBackCompatibility.js +30 -33
  108. package/dist/SummaryBackCompatibility.js.map +1 -1
  109. package/dist/SummaryTestUtilities.d.ts +31 -0
  110. package/dist/SummaryTestUtilities.d.ts.map +1 -0
  111. package/dist/SummaryTestUtilities.js +37 -0
  112. package/dist/SummaryTestUtilities.js.map +1 -0
  113. package/dist/Transaction.d.ts +53 -0
  114. package/dist/Transaction.d.ts.map +1 -0
  115. package/dist/Transaction.js +76 -0
  116. package/dist/Transaction.js.map +1 -0
  117. package/dist/TransactionInternal.d.ts +543 -0
  118. package/dist/TransactionInternal.d.ts.map +1 -0
  119. package/dist/TransactionInternal.js +622 -0
  120. package/dist/TransactionInternal.js.map +1 -0
  121. package/dist/TreeCompressor.d.ts +37 -0
  122. package/dist/TreeCompressor.d.ts.map +1 -0
  123. package/dist/TreeCompressor.js +132 -0
  124. package/dist/TreeCompressor.js.map +1 -0
  125. package/dist/TreeNodeHandle.d.ts +12 -18
  126. package/dist/TreeNodeHandle.d.ts.map +1 -1
  127. package/dist/TreeNodeHandle.js +13 -23
  128. package/dist/TreeNodeHandle.js.map +1 -1
  129. package/dist/TreeView.d.ts +166 -0
  130. package/dist/TreeView.d.ts.map +1 -0
  131. package/dist/TreeView.js +217 -0
  132. package/dist/TreeView.js.map +1 -0
  133. package/dist/TreeViewUtilities.d.ts +21 -0
  134. package/dist/TreeViewUtilities.d.ts.map +1 -0
  135. package/dist/TreeViewUtilities.js +77 -0
  136. package/dist/TreeViewUtilities.js.map +1 -0
  137. package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  138. package/dist/UndoRedoHandler.d.ts.map +1 -0
  139. package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
  140. package/dist/UndoRedoHandler.js.map +1 -0
  141. package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  142. package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  143. package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
  144. package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
  145. package/dist/id-compressor/IdCompressor.d.ts +389 -0
  146. package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
  147. package/dist/id-compressor/IdCompressor.js +1353 -0
  148. package/dist/id-compressor/IdCompressor.js.map +1 -0
  149. package/dist/id-compressor/IdRange.d.ts +11 -0
  150. package/dist/id-compressor/IdRange.d.ts.map +1 -0
  151. package/dist/id-compressor/IdRange.js +29 -0
  152. package/dist/id-compressor/IdRange.js.map +1 -0
  153. package/dist/id-compressor/NumericUuid.d.ts +63 -0
  154. package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
  155. package/dist/id-compressor/NumericUuid.js +377 -0
  156. package/dist/id-compressor/NumericUuid.js.map +1 -0
  157. package/dist/id-compressor/index.d.ts +12 -0
  158. package/dist/id-compressor/index.d.ts.map +1 -0
  159. package/dist/id-compressor/index.js +26 -0
  160. package/dist/id-compressor/index.js.map +1 -0
  161. package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  162. package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  163. package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
  164. package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
  165. package/dist/id-compressor/persisted-types/index.d.ts +6 -0
  166. package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
  167. package/dist/id-compressor/persisted-types/index.js +18 -0
  168. package/dist/id-compressor/persisted-types/index.js.map +1 -0
  169. package/dist/index.d.ts +29 -9
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +50 -35
  172. package/dist/index.js.map +1 -1
  173. package/dist/persisted-types/0.0.2.d.ts +385 -0
  174. package/dist/persisted-types/0.0.2.d.ts.map +1 -0
  175. package/dist/persisted-types/0.0.2.js +113 -0
  176. package/dist/persisted-types/0.0.2.js.map +1 -0
  177. package/dist/persisted-types/0.1.1.d.ts +314 -0
  178. package/dist/persisted-types/0.1.1.d.ts.map +1 -0
  179. package/dist/persisted-types/0.1.1.js +153 -0
  180. package/dist/persisted-types/0.1.1.js.map +1 -0
  181. package/dist/persisted-types/index.d.ts +7 -0
  182. package/dist/persisted-types/index.d.ts.map +1 -0
  183. package/dist/persisted-types/index.js +20 -0
  184. package/dist/persisted-types/index.js.map +1 -0
  185. package/docs/0-1-1-Compression.md +228 -0
  186. package/docs/Breaking-Change-Migration.md +52 -0
  187. package/docs/Compression.md +2 -2
  188. package/docs/Telemetry.md +43 -0
  189. package/lib/ChangeCompression.d.ts +39 -0
  190. package/lib/ChangeCompression.d.ts.map +1 -0
  191. package/lib/ChangeCompression.js +111 -0
  192. package/lib/ChangeCompression.js.map +1 -0
  193. package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -100
  194. package/lib/ChangeTypes.d.ts.map +1 -0
  195. package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
  196. package/lib/ChangeTypes.js.map +1 -0
  197. package/lib/Checkout.d.ts +39 -27
  198. package/lib/Checkout.d.ts.map +1 -1
  199. package/lib/Checkout.js +51 -23
  200. package/lib/Checkout.js.map +1 -1
  201. package/lib/Common.d.ts +175 -38
  202. package/lib/Common.d.ts.map +1 -1
  203. package/lib/Common.js +226 -101
  204. package/lib/Common.js.map +1 -1
  205. package/lib/EagerCheckout.d.ts +24 -0
  206. package/lib/EagerCheckout.d.ts.map +1 -0
  207. package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
  208. package/lib/EagerCheckout.js.map +1 -0
  209. package/lib/EditLog.d.ts +77 -63
  210. package/lib/EditLog.d.ts.map +1 -1
  211. package/lib/EditLog.js +83 -47
  212. package/lib/EditLog.js.map +1 -1
  213. package/lib/EditUtilities.d.ts +168 -0
  214. package/lib/EditUtilities.d.ts.map +1 -0
  215. package/lib/EditUtilities.js +353 -0
  216. package/lib/EditUtilities.js.map +1 -0
  217. package/lib/EventTypes.d.ts +73 -0
  218. package/lib/EventTypes.d.ts.map +1 -0
  219. package/lib/EventTypes.js +75 -0
  220. package/lib/EventTypes.js.map +1 -0
  221. package/lib/Forest.d.ts +29 -7
  222. package/lib/Forest.d.ts.map +1 -1
  223. package/lib/Forest.js +58 -35
  224. package/lib/Forest.js.map +1 -1
  225. package/lib/HistoryEditFactory.d.ts +20 -0
  226. package/lib/HistoryEditFactory.d.ts.map +1 -0
  227. package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
  228. package/lib/HistoryEditFactory.js.map +1 -0
  229. package/lib/IdConversion.d.ts +12 -0
  230. package/lib/IdConversion.d.ts.map +1 -0
  231. package/lib/IdConversion.js +91 -0
  232. package/lib/IdConversion.js.map +1 -0
  233. package/lib/Identifiers.d.ts +89 -2
  234. package/lib/Identifiers.d.ts.map +1 -1
  235. package/lib/Identifiers.js +8 -1
  236. package/lib/Identifiers.js.map +1 -1
  237. package/lib/InitialTree.d.ts +2 -2
  238. package/lib/InitialTree.d.ts.map +1 -1
  239. package/lib/InitialTree.js +2 -1
  240. package/lib/InitialTree.js.map +1 -1
  241. package/lib/LazyCheckout.d.ts +28 -0
  242. package/lib/LazyCheckout.d.ts.map +1 -0
  243. package/lib/LazyCheckout.js +40 -0
  244. package/lib/LazyCheckout.js.map +1 -0
  245. package/lib/LogViewer.d.ts +130 -85
  246. package/lib/LogViewer.d.ts.map +1 -1
  247. package/lib/LogViewer.js +102 -77
  248. package/lib/LogViewer.js.map +1 -1
  249. package/lib/MergeHealth.d.ts +221 -0
  250. package/lib/MergeHealth.d.ts.map +1 -0
  251. package/lib/MergeHealth.js +258 -0
  252. package/lib/MergeHealth.js.map +1 -0
  253. package/lib/NodeIdUtilities.d.ts +90 -0
  254. package/lib/NodeIdUtilities.d.ts.map +1 -0
  255. package/lib/NodeIdUtilities.js +53 -0
  256. package/lib/NodeIdUtilities.js.map +1 -0
  257. package/lib/PayloadUtilities.d.ts +42 -0
  258. package/lib/PayloadUtilities.d.ts.map +1 -0
  259. package/lib/PayloadUtilities.js +110 -0
  260. package/lib/PayloadUtilities.js.map +1 -0
  261. package/lib/ReconciliationPath.d.ts +18 -13
  262. package/lib/ReconciliationPath.d.ts.map +1 -1
  263. package/lib/ReconciliationPath.js.map +1 -1
  264. package/lib/RevisionValueCache.d.ts +11 -2
  265. package/lib/RevisionValueCache.d.ts.map +1 -1
  266. package/lib/RevisionValueCache.js +2 -3
  267. package/lib/RevisionValueCache.js.map +1 -1
  268. package/lib/RevisionView.d.ts +83 -0
  269. package/lib/RevisionView.d.ts.map +1 -0
  270. package/lib/RevisionView.js +175 -0
  271. package/lib/RevisionView.js.map +1 -0
  272. package/lib/SerializationUtilities.d.ts +36 -0
  273. package/lib/SerializationUtilities.d.ts.map +1 -0
  274. package/lib/SerializationUtilities.js +95 -0
  275. package/lib/SerializationUtilities.js.map +1 -0
  276. package/lib/SharedTree.d.ts +400 -0
  277. package/lib/SharedTree.d.ts.map +1 -0
  278. package/lib/SharedTree.js +1059 -0
  279. package/lib/SharedTree.js.map +1 -0
  280. package/lib/SharedTreeEncoder.d.ts +102 -0
  281. package/lib/SharedTreeEncoder.d.ts.map +1 -0
  282. package/lib/SharedTreeEncoder.js +308 -0
  283. package/lib/SharedTreeEncoder.js.map +1 -0
  284. package/lib/StringInterner.d.ts +46 -0
  285. package/lib/StringInterner.d.ts.map +1 -0
  286. package/lib/StringInterner.js +57 -0
  287. package/lib/StringInterner.js.map +1 -0
  288. package/lib/Summary.d.ts +40 -0
  289. package/lib/Summary.d.ts.map +1 -0
  290. package/lib/Summary.js +19 -0
  291. package/lib/Summary.js.map +1 -0
  292. package/lib/SummaryBackCompatibility.d.ts +22 -22
  293. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  294. package/lib/SummaryBackCompatibility.js +29 -32
  295. package/lib/SummaryBackCompatibility.js.map +1 -1
  296. package/lib/SummaryTestUtilities.d.ts +31 -0
  297. package/lib/SummaryTestUtilities.d.ts.map +1 -0
  298. package/lib/SummaryTestUtilities.js +32 -0
  299. package/lib/SummaryTestUtilities.js.map +1 -0
  300. package/lib/Transaction.d.ts +53 -0
  301. package/lib/Transaction.d.ts.map +1 -0
  302. package/lib/Transaction.js +72 -0
  303. package/lib/Transaction.js.map +1 -0
  304. package/lib/TransactionInternal.d.ts +543 -0
  305. package/lib/TransactionInternal.d.ts.map +1 -0
  306. package/lib/TransactionInternal.js +618 -0
  307. package/lib/TransactionInternal.js.map +1 -0
  308. package/lib/TreeCompressor.d.ts +37 -0
  309. package/lib/TreeCompressor.d.ts.map +1 -0
  310. package/lib/TreeCompressor.js +128 -0
  311. package/lib/TreeCompressor.js.map +1 -0
  312. package/lib/TreeNodeHandle.d.ts +12 -18
  313. package/lib/TreeNodeHandle.d.ts.map +1 -1
  314. package/lib/TreeNodeHandle.js +14 -24
  315. package/lib/TreeNodeHandle.js.map +1 -1
  316. package/lib/TreeView.d.ts +166 -0
  317. package/lib/TreeView.d.ts.map +1 -0
  318. package/lib/TreeView.js +213 -0
  319. package/lib/TreeView.js.map +1 -0
  320. package/lib/TreeViewUtilities.d.ts +21 -0
  321. package/lib/TreeViewUtilities.d.ts.map +1 -0
  322. package/lib/TreeViewUtilities.js +71 -0
  323. package/lib/TreeViewUtilities.js.map +1 -0
  324. package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  325. package/lib/UndoRedoHandler.d.ts.map +1 -0
  326. package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
  327. package/lib/UndoRedoHandler.js.map +1 -0
  328. package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  329. package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  330. package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
  331. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
  332. package/lib/id-compressor/IdCompressor.d.ts +389 -0
  333. package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
  334. package/lib/id-compressor/IdCompressor.js +1343 -0
  335. package/lib/id-compressor/IdCompressor.js.map +1 -0
  336. package/lib/id-compressor/IdRange.d.ts +11 -0
  337. package/lib/id-compressor/IdRange.d.ts.map +1 -0
  338. package/lib/id-compressor/IdRange.js +25 -0
  339. package/lib/id-compressor/IdRange.js.map +1 -0
  340. package/lib/id-compressor/NumericUuid.d.ts +63 -0
  341. package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
  342. package/lib/id-compressor/NumericUuid.js +365 -0
  343. package/lib/id-compressor/NumericUuid.js.map +1 -0
  344. package/lib/id-compressor/index.d.ts +12 -0
  345. package/lib/id-compressor/index.d.ts.map +1 -0
  346. package/lib/id-compressor/index.js +12 -0
  347. package/lib/id-compressor/index.js.map +1 -0
  348. package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  349. package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  350. package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
  351. package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
  352. package/lib/id-compressor/persisted-types/index.d.ts +6 -0
  353. package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
  354. package/lib/id-compressor/persisted-types/index.js +6 -0
  355. package/lib/id-compressor/persisted-types/index.js.map +1 -0
  356. package/lib/index.d.ts +29 -9
  357. package/lib/index.d.ts.map +1 -1
  358. package/lib/index.js +23 -6
  359. package/lib/index.js.map +1 -1
  360. package/lib/persisted-types/0.0.2.d.ts +385 -0
  361. package/lib/persisted-types/0.0.2.d.ts.map +1 -0
  362. package/lib/persisted-types/0.0.2.js +110 -0
  363. package/lib/persisted-types/0.0.2.js.map +1 -0
  364. package/lib/persisted-types/0.1.1.d.ts +314 -0
  365. package/lib/persisted-types/0.1.1.d.ts.map +1 -0
  366. package/lib/persisted-types/0.1.1.js +150 -0
  367. package/lib/persisted-types/0.1.1.js.map +1 -0
  368. package/lib/persisted-types/index.d.ts +7 -0
  369. package/lib/persisted-types/index.d.ts.map +1 -0
  370. package/lib/persisted-types/index.js +8 -0
  371. package/lib/persisted-types/index.js.map +1 -0
  372. package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
  373. package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
  374. package/lib/test/AppendOnlySortedMap.tests.js +169 -0
  375. package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
  376. package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
  377. package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
  378. package/lib/test/ChangeCompression.tests.js +145 -0
  379. package/lib/test/ChangeCompression.tests.js.map +1 -0
  380. package/lib/test/Checkout.tests.d.ts +2 -3
  381. package/lib/test/Checkout.tests.d.ts.map +1 -1
  382. package/lib/test/Checkout.tests.js +126 -69
  383. package/lib/test/Checkout.tests.js.map +1 -1
  384. package/lib/test/Common.tests.js +60 -2
  385. package/lib/test/Common.tests.js.map +1 -1
  386. package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
  387. package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
  388. package/lib/test/EagerCheckout.tests.js +20 -0
  389. package/lib/test/EagerCheckout.tests.js.map +1 -0
  390. package/lib/test/Edit.tests.js +22 -14
  391. package/lib/test/Edit.tests.js.map +1 -1
  392. package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
  393. package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
  394. package/lib/test/EditLog.perf.tests.js +30 -0
  395. package/lib/test/EditLog.perf.tests.js.map +1 -0
  396. package/lib/test/EditLog.tests.js +10 -6
  397. package/lib/test/EditLog.tests.js.map +1 -1
  398. package/lib/test/EditUtilities.tests.d.ts +6 -0
  399. package/lib/test/EditUtilities.tests.d.ts.map +1 -0
  400. package/lib/test/EditUtilities.tests.js +503 -0
  401. package/lib/test/EditUtilities.tests.js.map +1 -0
  402. package/lib/test/Forest.perf.tests.d.ts +6 -0
  403. package/lib/test/Forest.perf.tests.d.ts.map +1 -0
  404. package/lib/test/Forest.perf.tests.js +133 -0
  405. package/lib/test/Forest.perf.tests.js.map +1 -0
  406. package/lib/test/Forest.tests.js +54 -27
  407. package/lib/test/Forest.tests.js.map +1 -1
  408. package/lib/test/GenericTransaction.tests.js +12 -3
  409. package/lib/test/GenericTransaction.tests.js.map +1 -1
  410. package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
  411. package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
  412. package/lib/test/HistoryEditFactory.tests.js +90 -0
  413. package/lib/test/HistoryEditFactory.tests.js.map +1 -0
  414. package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
  415. package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
  416. package/lib/test/IdCompressor.perf.tests.js +304 -0
  417. package/lib/test/IdCompressor.perf.tests.js.map +1 -0
  418. package/lib/test/IdCompressor.tests.d.ts +6 -0
  419. package/lib/test/IdCompressor.tests.d.ts.map +1 -0
  420. package/lib/test/IdCompressor.tests.js +1075 -0
  421. package/lib/test/IdCompressor.tests.js.map +1 -0
  422. package/lib/test/IdConversion.tests.d.ts +6 -0
  423. package/lib/test/IdConversion.tests.d.ts.map +1 -0
  424. package/lib/test/IdConversion.tests.js +36 -0
  425. package/lib/test/IdConversion.tests.js.map +1 -0
  426. package/lib/test/LazyCheckout.tests.d.ts +6 -0
  427. package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
  428. package/lib/test/LazyCheckout.tests.js +22 -0
  429. package/lib/test/LazyCheckout.tests.js.map +1 -0
  430. package/lib/test/LogViewer.tests.js +269 -187
  431. package/lib/test/LogViewer.tests.js.map +1 -1
  432. package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
  433. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
  434. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
  435. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
  436. package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
  437. package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
  438. package/lib/test/NumericUuid.perf.tests.js +68 -0
  439. package/lib/test/NumericUuid.perf.tests.js.map +1 -0
  440. package/lib/test/NumericUuid.tests.d.ts +6 -0
  441. package/lib/test/NumericUuid.tests.d.ts.map +1 -0
  442. package/lib/test/NumericUuid.tests.js +191 -0
  443. package/lib/test/NumericUuid.tests.js.map +1 -0
  444. package/lib/test/RevisionView.tests.d.ts +6 -0
  445. package/lib/test/RevisionView.tests.d.ts.map +1 -0
  446. package/lib/test/RevisionView.tests.js +133 -0
  447. package/lib/test/RevisionView.tests.js.map +1 -0
  448. package/lib/test/SharedTree.perf.tests.d.ts +6 -0
  449. package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
  450. package/lib/test/SharedTree.perf.tests.js +39 -0
  451. package/lib/test/SharedTree.perf.tests.js.map +1 -0
  452. package/lib/test/SharedTree.tests.js +15 -3
  453. package/lib/test/SharedTree.tests.js.map +1 -1
  454. package/lib/test/StringInterner.tests.d.ts +6 -0
  455. package/lib/test/StringInterner.tests.d.ts.map +1 -0
  456. package/lib/test/StringInterner.tests.js +71 -0
  457. package/lib/test/StringInterner.tests.js.map +1 -0
  458. package/lib/test/Summary.tests.d.ts +8 -0
  459. package/lib/test/Summary.tests.d.ts.map +1 -0
  460. package/lib/test/Summary.tests.js +407 -0
  461. package/lib/test/Summary.tests.js.map +1 -0
  462. package/lib/test/Transaction.tests.js +76 -330
  463. package/lib/test/Transaction.tests.js.map +1 -1
  464. package/lib/test/TransactionInternal.tests.d.ts +6 -0
  465. package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
  466. package/lib/test/TransactionInternal.tests.js +568 -0
  467. package/lib/test/TransactionInternal.tests.js.map +1 -0
  468. package/lib/test/TreeCompression.tests.d.ts +6 -0
  469. package/lib/test/TreeCompression.tests.d.ts.map +1 -0
  470. package/lib/test/TreeCompression.tests.js +292 -0
  471. package/lib/test/TreeCompression.tests.js.map +1 -0
  472. package/lib/test/TreeView.tests.d.ts +6 -0
  473. package/lib/test/TreeView.tests.d.ts.map +1 -0
  474. package/lib/test/TreeView.tests.js +147 -0
  475. package/lib/test/TreeView.tests.js.map +1 -0
  476. package/lib/test/UndoRedoHandler.tests.js +2 -2
  477. package/lib/test/UndoRedoHandler.tests.js.map +1 -1
  478. package/lib/test/Virtualization.tests.js +147 -62
  479. package/lib/test/Virtualization.tests.js.map +1 -1
  480. package/lib/test/fuzz/Generators.d.ts +19 -0
  481. package/lib/test/fuzz/Generators.d.ts.map +1 -0
  482. package/lib/test/fuzz/Generators.js +420 -0
  483. package/lib/test/fuzz/Generators.js.map +1 -0
  484. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
  485. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
  486. package/lib/test/fuzz/SharedTreeFuzzTests.js +200 -0
  487. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
  488. package/lib/test/fuzz/Types.d.ts +133 -0
  489. package/lib/test/fuzz/Types.d.ts.map +1 -0
  490. package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
  491. package/lib/test/fuzz/Types.js.map +1 -0
  492. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
  493. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
  494. package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
  495. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
  496. package/lib/test/utilities/MockTransaction.d.ts +26 -7
  497. package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
  498. package/lib/test/utilities/MockTransaction.js +40 -11
  499. package/lib/test/utilities/MockTransaction.js.map +1 -1
  500. package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
  501. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
  502. package/lib/test/utilities/PendingLocalStateTests.js +105 -0
  503. package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
  504. package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
  505. package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
  506. package/lib/test/utilities/SharedTreeTests.js +696 -439
  507. package/lib/test/utilities/SharedTreeTests.js.map +1 -1
  508. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
  509. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
  510. package/lib/test/utilities/SharedTreeVersioningTests.js +345 -0
  511. package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
  512. package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
  513. package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
  514. package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
  515. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
  516. package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
  517. package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
  518. package/lib/test/utilities/SummarySizeTests.js +158 -0
  519. package/lib/test/utilities/SummarySizeTests.js.map +1 -0
  520. package/lib/test/utilities/TestCommon.d.ts +9 -0
  521. package/lib/test/utilities/TestCommon.d.ts.map +1 -0
  522. package/lib/test/utilities/TestCommon.js +13 -0
  523. package/lib/test/utilities/TestCommon.js.map +1 -0
  524. package/lib/test/utilities/TestNode.d.ts +140 -0
  525. package/lib/test/utilities/TestNode.d.ts.map +1 -0
  526. package/lib/test/utilities/TestNode.js +292 -0
  527. package/lib/test/utilities/TestNode.js.map +1 -0
  528. package/lib/test/utilities/TestUtilities.d.ts +84 -70
  529. package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
  530. package/lib/test/utilities/TestUtilities.js +218 -143
  531. package/lib/test/utilities/TestUtilities.js.map +1 -1
  532. package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
  533. package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
  534. package/lib/test/utilities/UndoRedoTests.js +138 -149
  535. package/lib/test/utilities/UndoRedoTests.js.map +1 -1
  536. package/package.json +19 -14
  537. package/src/ChangeCompression.ts +159 -0
  538. package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -120
  539. package/src/Checkout.ts +81 -52
  540. package/src/Common.ts +317 -117
  541. package/src/EagerCheckout.ts +38 -0
  542. package/src/EditLog.ts +153 -100
  543. package/src/EditUtilities.ts +559 -0
  544. package/src/EventTypes.ts +74 -0
  545. package/src/Forest.ts +81 -73
  546. package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
  547. package/src/IdConversion.ts +125 -0
  548. package/src/Identifiers.ts +101 -1
  549. package/src/InitialTree.ts +5 -4
  550. package/src/LazyCheckout.ts +51 -0
  551. package/src/LogViewer.ts +242 -166
  552. package/src/MergeHealth.ts +447 -0
  553. package/src/NodeIdUtilities.ts +141 -0
  554. package/src/PayloadUtilities.ts +124 -0
  555. package/src/ReconciliationPath.ts +18 -13
  556. package/src/RevisionValueCache.ts +14 -5
  557. package/src/RevisionView.ts +252 -0
  558. package/src/SerializationUtilities.ts +130 -0
  559. package/src/SharedTree.ts +1448 -0
  560. package/src/SharedTreeEncoder.ts +493 -0
  561. package/src/StringInterner.ts +72 -0
  562. package/src/Summary.ts +48 -0
  563. package/src/SummaryBackCompatibility.ts +47 -57
  564. package/src/SummaryTestUtilities.ts +54 -0
  565. package/src/Transaction.ts +94 -0
  566. package/src/TransactionInternal.ts +1088 -0
  567. package/src/TreeCompressor.ts +222 -0
  568. package/src/TreeNodeHandle.ts +19 -32
  569. package/src/TreeView.ts +321 -0
  570. package/src/TreeViewUtilities.ts +77 -0
  571. package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
  572. package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
  573. package/src/id-compressor/IdCompressor.md +3 -0
  574. package/src/id-compressor/IdCompressor.ts +1848 -0
  575. package/src/id-compressor/IdRange.ts +33 -0
  576. package/src/id-compressor/NumericUuid.ts +414 -0
  577. package/src/id-compressor/index.ts +13 -0
  578. package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
  579. package/src/id-compressor/persisted-types/README.md +3 -0
  580. package/src/id-compressor/persisted-types/index.ts +6 -0
  581. package/src/index.ts +119 -59
  582. package/src/persisted-types/0.0.2.ts +442 -0
  583. package/src/persisted-types/0.1.1.ts +476 -0
  584. package/src/persisted-types/README.md +22 -0
  585. package/src/persisted-types/index.ts +9 -0
  586. package/.mocharc.js +0 -41
  587. package/api/tree.api.md +0 -729
  588. package/dist/BasicCheckout.d.ts +0 -23
  589. package/dist/BasicCheckout.d.ts.map +0 -1
  590. package/dist/BasicCheckout.js.map +0 -1
  591. package/dist/Snapshot.d.ts +0 -198
  592. package/dist/Snapshot.d.ts.map +0 -1
  593. package/dist/Snapshot.js +0 -267
  594. package/dist/Snapshot.js.map +0 -1
  595. package/dist/SnapshotUtilities.d.ts +0 -29
  596. package/dist/SnapshotUtilities.d.ts.map +0 -1
  597. package/dist/SnapshotUtilities.js +0 -73
  598. package/dist/SnapshotUtilities.js.map +0 -1
  599. package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
  600. package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
  601. package/dist/anchored-edits/AnchorResolution.js +0 -162
  602. package/dist/anchored-edits/AnchorResolution.js.map +0 -1
  603. package/dist/anchored-edits/Factory.d.ts +0 -56
  604. package/dist/anchored-edits/Factory.d.ts.map +0 -1
  605. package/dist/anchored-edits/Factory.js +0 -79
  606. package/dist/anchored-edits/Factory.js.map +0 -1
  607. package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
  608. package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
  609. package/dist/anchored-edits/PersistedTypes.js +0 -131
  610. package/dist/anchored-edits/PersistedTypes.js.map +0 -1
  611. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  612. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  613. package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
  614. package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  615. package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  616. package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  617. package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
  618. package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
  619. package/dist/anchored-edits/index.d.ts +0 -10
  620. package/dist/anchored-edits/index.d.ts.map +0 -1
  621. package/dist/anchored-edits/index.js +0 -34
  622. package/dist/anchored-edits/index.js.map +0 -1
  623. package/dist/default-edits/EditUtilities.d.ts +0 -57
  624. package/dist/default-edits/EditUtilities.d.ts.map +0 -1
  625. package/dist/default-edits/EditUtilities.js +0 -192
  626. package/dist/default-edits/EditUtilities.js.map +0 -1
  627. package/dist/default-edits/Factory.d.ts +0 -56
  628. package/dist/default-edits/Factory.d.ts.map +0 -1
  629. package/dist/default-edits/Factory.js +0 -79
  630. package/dist/default-edits/Factory.js.map +0 -1
  631. package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
  632. package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
  633. package/dist/default-edits/HistoryEditFactory.js +0 -187
  634. package/dist/default-edits/HistoryEditFactory.js.map +0 -1
  635. package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
  636. package/dist/default-edits/PersistedTypes.js.map +0 -1
  637. package/dist/default-edits/SharedTree.d.ts +0 -111
  638. package/dist/default-edits/SharedTree.d.ts.map +0 -1
  639. package/dist/default-edits/SharedTree.js +0 -124
  640. package/dist/default-edits/SharedTree.js.map +0 -1
  641. package/dist/default-edits/Summary.d.ts +0 -15
  642. package/dist/default-edits/Summary.d.ts.map +0 -1
  643. package/dist/default-edits/Summary.js +0 -35
  644. package/dist/default-edits/Summary.js.map +0 -1
  645. package/dist/default-edits/Transaction.d.ts +0 -41
  646. package/dist/default-edits/Transaction.d.ts.map +0 -1
  647. package/dist/default-edits/Transaction.js +0 -225
  648. package/dist/default-edits/Transaction.js.map +0 -1
  649. package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
  650. package/dist/default-edits/UndoRedoHandler.js.map +0 -1
  651. package/dist/default-edits/index.d.ts +0 -13
  652. package/dist/default-edits/index.d.ts.map +0 -1
  653. package/dist/default-edits/index.js +0 -41
  654. package/dist/default-edits/index.js.map +0 -1
  655. package/dist/generic/GenericEditUtilities.d.ts +0 -26
  656. package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
  657. package/dist/generic/GenericEditUtilities.js +0 -45
  658. package/dist/generic/GenericEditUtilities.js.map +0 -1
  659. package/dist/generic/GenericSharedTree.d.ts +0 -221
  660. package/dist/generic/GenericSharedTree.d.ts.map +0 -1
  661. package/dist/generic/GenericSharedTree.js +0 -447
  662. package/dist/generic/GenericSharedTree.js.map +0 -1
  663. package/dist/generic/GenericTransaction.d.ts +0 -87
  664. package/dist/generic/GenericTransaction.d.ts.map +0 -1
  665. package/dist/generic/GenericTransaction.js +0 -144
  666. package/dist/generic/GenericTransaction.js.map +0 -1
  667. package/dist/generic/PersistedTypes.d.ts +0 -194
  668. package/dist/generic/PersistedTypes.d.ts.map +0 -1
  669. package/dist/generic/PersistedTypes.js +0 -42
  670. package/dist/generic/PersistedTypes.js.map +0 -1
  671. package/dist/generic/Summary.d.ts +0 -63
  672. package/dist/generic/Summary.d.ts.map +0 -1
  673. package/dist/generic/Summary.js +0 -64
  674. package/dist/generic/Summary.js.map +0 -1
  675. package/dist/generic/index.d.ts +0 -10
  676. package/dist/generic/index.d.ts.map +0 -1
  677. package/dist/generic/index.js +0 -26
  678. package/dist/generic/index.js.map +0 -1
  679. package/lib/BasicCheckout.d.ts +0 -23
  680. package/lib/BasicCheckout.d.ts.map +0 -1
  681. package/lib/BasicCheckout.js.map +0 -1
  682. package/lib/Snapshot.d.ts +0 -198
  683. package/lib/Snapshot.d.ts.map +0 -1
  684. package/lib/Snapshot.js +0 -263
  685. package/lib/Snapshot.js.map +0 -1
  686. package/lib/SnapshotUtilities.d.ts +0 -29
  687. package/lib/SnapshotUtilities.d.ts.map +0 -1
  688. package/lib/SnapshotUtilities.js +0 -67
  689. package/lib/SnapshotUtilities.js.map +0 -1
  690. package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
  691. package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
  692. package/lib/anchored-edits/AnchorResolution.js +0 -152
  693. package/lib/anchored-edits/AnchorResolution.js.map +0 -1
  694. package/lib/anchored-edits/Factory.d.ts +0 -56
  695. package/lib/anchored-edits/Factory.d.ts.map +0 -1
  696. package/lib/anchored-edits/Factory.js +0 -74
  697. package/lib/anchored-edits/Factory.js.map +0 -1
  698. package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
  699. package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
  700. package/lib/anchored-edits/PersistedTypes.js +0 -128
  701. package/lib/anchored-edits/PersistedTypes.js.map +0 -1
  702. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  703. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  704. package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
  705. package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  706. package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  707. package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  708. package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
  709. package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
  710. package/lib/anchored-edits/index.d.ts +0 -10
  711. package/lib/anchored-edits/index.d.ts.map +0 -1
  712. package/lib/anchored-edits/index.js +0 -11
  713. package/lib/anchored-edits/index.js.map +0 -1
  714. package/lib/default-edits/EditUtilities.d.ts +0 -57
  715. package/lib/default-edits/EditUtilities.d.ts.map +0 -1
  716. package/lib/default-edits/EditUtilities.js +0 -181
  717. package/lib/default-edits/EditUtilities.js.map +0 -1
  718. package/lib/default-edits/Factory.d.ts +0 -56
  719. package/lib/default-edits/Factory.d.ts.map +0 -1
  720. package/lib/default-edits/Factory.js +0 -74
  721. package/lib/default-edits/Factory.js.map +0 -1
  722. package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
  723. package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
  724. package/lib/default-edits/HistoryEditFactory.js.map +0 -1
  725. package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
  726. package/lib/default-edits/PersistedTypes.js.map +0 -1
  727. package/lib/default-edits/SharedTree.d.ts +0 -111
  728. package/lib/default-edits/SharedTree.d.ts.map +0 -1
  729. package/lib/default-edits/SharedTree.js +0 -100
  730. package/lib/default-edits/SharedTree.js.map +0 -1
  731. package/lib/default-edits/Summary.d.ts +0 -15
  732. package/lib/default-edits/Summary.d.ts.map +0 -1
  733. package/lib/default-edits/Summary.js +0 -31
  734. package/lib/default-edits/Summary.js.map +0 -1
  735. package/lib/default-edits/Transaction.d.ts +0 -41
  736. package/lib/default-edits/Transaction.d.ts.map +0 -1
  737. package/lib/default-edits/Transaction.js +0 -221
  738. package/lib/default-edits/Transaction.js.map +0 -1
  739. package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
  740. package/lib/default-edits/UndoRedoHandler.js.map +0 -1
  741. package/lib/default-edits/index.d.ts +0 -13
  742. package/lib/default-edits/index.d.ts.map +0 -1
  743. package/lib/default-edits/index.js +0 -14
  744. package/lib/default-edits/index.js.map +0 -1
  745. package/lib/generic/GenericEditUtilities.d.ts +0 -26
  746. package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
  747. package/lib/generic/GenericEditUtilities.js +0 -38
  748. package/lib/generic/GenericEditUtilities.js.map +0 -1
  749. package/lib/generic/GenericSharedTree.d.ts +0 -221
  750. package/lib/generic/GenericSharedTree.d.ts.map +0 -1
  751. package/lib/generic/GenericSharedTree.js +0 -443
  752. package/lib/generic/GenericSharedTree.js.map +0 -1
  753. package/lib/generic/GenericTransaction.d.ts +0 -87
  754. package/lib/generic/GenericTransaction.d.ts.map +0 -1
  755. package/lib/generic/GenericTransaction.js +0 -140
  756. package/lib/generic/GenericTransaction.js.map +0 -1
  757. package/lib/generic/PersistedTypes.d.ts +0 -194
  758. package/lib/generic/PersistedTypes.d.ts.map +0 -1
  759. package/lib/generic/PersistedTypes.js +0 -39
  760. package/lib/generic/PersistedTypes.js.map +0 -1
  761. package/lib/generic/Summary.d.ts +0 -63
  762. package/lib/generic/Summary.d.ts.map +0 -1
  763. package/lib/generic/Summary.js +0 -58
  764. package/lib/generic/Summary.js.map +0 -1
  765. package/lib/generic/index.d.ts +0 -10
  766. package/lib/generic/index.d.ts.map +0 -1
  767. package/lib/generic/index.js +0 -11
  768. package/lib/generic/index.js.map +0 -1
  769. package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
  770. package/lib/test/Anchors.glassBox.tests.js +0 -410
  771. package/lib/test/Anchors.glassBox.tests.js.map +0 -1
  772. package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
  773. package/lib/test/BasicCheckout.tests.js +0 -8
  774. package/lib/test/BasicCheckout.tests.js.map +0 -1
  775. package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
  776. package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
  777. package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
  778. package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
  779. package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
  780. package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
  781. package/lib/test/Snapshot.tests.d.ts.map +0 -1
  782. package/lib/test/Snapshot.tests.js +0 -96
  783. package/lib/test/Snapshot.tests.js.map +0 -1
  784. package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
  785. package/lib/test/SnapshotUtilities.tests.js +0 -168
  786. package/lib/test/SnapshotUtilities.tests.js.map +0 -1
  787. package/lib/test/undoRedoStackManager.d.ts +0 -26
  788. package/lib/test/undoRedoStackManager.d.ts.map +0 -1
  789. package/lib/test/undoRedoStackManager.js +0 -176
  790. package/lib/test/undoRedoStackManager.js.map +0 -1
  791. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
  792. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
  793. package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
  794. package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
  795. package/src/BasicCheckout.ts +0 -34
  796. package/src/Snapshot.ts +0 -363
  797. package/src/SnapshotUtilities.ts +0 -88
  798. package/src/anchored-edits/AnchorResolution.ts +0 -442
  799. package/src/anchored-edits/Factory.ts +0 -94
  800. package/src/anchored-edits/PersistedTypes.ts +0 -310
  801. package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
  802. package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
  803. package/src/anchored-edits/index.ts +0 -21
  804. package/src/default-edits/EditUtilities.ts +0 -220
  805. package/src/default-edits/Factory.ts +0 -94
  806. package/src/default-edits/SharedTree.ts +0 -174
  807. package/src/default-edits/Summary.ts +0 -44
  808. package/src/default-edits/Transaction.ts +0 -262
  809. package/src/default-edits/index.ts +0 -29
  810. package/src/generic/GenericEditUtilities.ts +0 -46
  811. package/src/generic/GenericSharedTree.ts +0 -593
  812. package/src/generic/GenericTransaction.ts +0 -194
  813. package/src/generic/PersistedTypes.ts +0 -221
  814. package/src/generic/Summary.ts +0 -113
  815. package/src/generic/index.ts +0 -41
@@ -0,0 +1,158 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { IsoBuffer } from '@fluidframework/common-utils';
6
+ import { expect } from 'chai';
7
+ import { Change, StablePlace, StableRange } from '../../ChangeTypes';
8
+ import { revert } from '../../HistoryEditFactory';
9
+ import { IdCompressor } from '../../id-compressor';
10
+ import { setUpTestTree, } from './TestUtilities';
11
+ /**
12
+ * Summary size tests where `edits` are applied and checked against the `expectedSize`.
13
+ */
14
+ const summarySizeTests = [
15
+ {
16
+ edits: (testTree) => [
17
+ Change.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),
18
+ ],
19
+ expectedSize: 1075,
20
+ description: 'when inserting a node',
21
+ },
22
+ {
23
+ edits: (testTree) => {
24
+ const edits = [];
25
+ for (let i = 0; i < 50; i++) {
26
+ edits.push(Change.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)));
27
+ }
28
+ return edits;
29
+ },
30
+ expectedSize: 10680,
31
+ description: 'with 50 inserts',
32
+ },
33
+ {
34
+ edits: (testTree) => {
35
+ const node = testTree.buildLeaf(testTree.generateNodeId());
36
+ return [
37
+ Change.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),
38
+ [Change.setPayload(node.identifier, 10)],
39
+ ];
40
+ },
41
+ expectedSize: 1170,
42
+ description: 'when inserting and setting a node',
43
+ },
44
+ {
45
+ edits: (testTree) => {
46
+ const node = testTree.buildLeaf(testTree.generateNodeId());
47
+ return [
48
+ Change.insertTree(node, StablePlace.atEndOf(testTree.right.traitLocation)),
49
+ [Change.delete(StableRange.only(node))],
50
+ ];
51
+ },
52
+ expectedSize: 1223,
53
+ description: 'when inserting and deleting a node',
54
+ },
55
+ {
56
+ edits: (testTree) => [
57
+ Change.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),
58
+ ],
59
+ expectedSize: 1223,
60
+ description: 'when inserting and reverting a node',
61
+ revertEdits: true,
62
+ },
63
+ {
64
+ edits: (testTree) => [
65
+ Change.insertTree(makeLargeTestTree(testTree), StablePlace.atStartOf(testTree.right.traitLocation)),
66
+ ],
67
+ expectedSize: 76979,
68
+ description: 'when inserting a large tree',
69
+ },
70
+ {
71
+ edits: (testTree) => {
72
+ const largeTree = makeLargeTestTree(testTree);
73
+ return [
74
+ Change.insertTree(largeTree, StablePlace.atStartOf(testTree.right.traitLocation)),
75
+ Change.move(StableRange.only(largeTree), StablePlace.atEndOf(testTree.left.traitLocation)),
76
+ ];
77
+ },
78
+ expectedSize: 77243,
79
+ description: 'when inserting and moving a large tree',
80
+ },
81
+ ];
82
+ /**
83
+ * Runs a test suite for summaries on `SharedTree` that verifies their sizes do not exceed the defined limits.
84
+ * This suite can be used to test other implementations that aim to fulfill `SharedTree`'s contract.
85
+ */
86
+ export function runSummarySizeTests(title, setUpLocalServerTestSharedTree) {
87
+ describe(title, () => {
88
+ const setupEditId = '9406d301-7449-48a5-b2ea-9be637b0c6e4';
89
+ let tree;
90
+ let testTree;
91
+ let testObjectProvider;
92
+ // Resets the tree before each test
93
+ beforeEach(async () => {
94
+ const testingComponents = await setUpLocalServerTestSharedTree({
95
+ setupEditId,
96
+ });
97
+ tree = testingComponents.tree;
98
+ testTree = setUpTestTree(tree);
99
+ testObjectProvider = testingComponents.testObjectProvider;
100
+ });
101
+ async function checkSummarySize(changes, expectedSummarySize, revertEdits = false) {
102
+ const edits = changes.map((e) => tree.applyEdit(...e));
103
+ if (revertEdits) {
104
+ for (let i = changes.length - 1; i >= 0; i--) {
105
+ const editIndex = tree.edits.getIndexOfId(edits[i].id);
106
+ const edit = tree.edits.getEditInSessionAtIndex(editIndex);
107
+ const reverted = revert(edit.changes, tree.logViewer.getRevisionViewInSession(editIndex));
108
+ if (reverted !== undefined) {
109
+ tree.applyEditInternal(reverted);
110
+ }
111
+ }
112
+ }
113
+ // Wait for the ops to to be submitted and processed across the containers.
114
+ await testObjectProvider.ensureSynchronized();
115
+ const summary = tree.saveSerializedSummary();
116
+ const summarySize = IsoBuffer.from(summary).byteLength;
117
+ // TODO: make lte when 0.1.1 is settled
118
+ expect(summarySize).to.equal(expectedSummarySize);
119
+ }
120
+ for (const { edits, expectedSize, description, revertEdits } of summarySizeTests) {
121
+ it(`does not exceed ${expectedSize} ${description}`, async () => {
122
+ await checkSummarySize(edits(testTree), expectedSize, revertEdits);
123
+ });
124
+ }
125
+ });
126
+ }
127
+ function makeLargeTestTree(testTree, nodesPerTrait = 10, traitsPerLevel = 2, levels = 2) {
128
+ const specialSession = '9f858704-89f6-4923-abf3-14fc986e717f';
129
+ // ensure uuids for traits and definitions are stable
130
+ const compressor = new IdCompressor(specialSession, 0);
131
+ const uuidv4 = () => compressor.decompress(compressor.generateCompressedId());
132
+ const definition = uuidv4();
133
+ const traitLabels = [];
134
+ for (let i = 0; i < traitsPerLevel; i++) {
135
+ traitLabels.push(uuidv4());
136
+ }
137
+ return {
138
+ definition,
139
+ identifier: testTree.generateNodeId(),
140
+ traits: generateTraits(testTree, definition, traitLabels, nodesPerTrait, levels),
141
+ };
142
+ }
143
+ function generateTraits(testTree, definition, traitLabels, nodesPerTrait, totalLevels, level = 0) {
144
+ const traits = {};
145
+ traitLabels.forEach((label) => {
146
+ traits[label] = Array.from(Array(nodesPerTrait).keys()).map(() => {
147
+ return {
148
+ definition,
149
+ identifier: testTree.generateNodeId(),
150
+ traits: level < totalLevels
151
+ ? generateTraits(testTree, definition, traitLabels, nodesPerTrait, totalLevels, level + 1)
152
+ : {},
153
+ };
154
+ });
155
+ });
156
+ return traits;
157
+ }
158
+ //# sourceMappingURL=SummarySizeTests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummarySizeTests.js","sourceRoot":"","sources":["../../../src/test/utilities/SummarySizeTests.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 { IsoBuffer } from '@fluidframework/common-utils';\nimport { TestObjectProvider } from '@fluidframework/test-utils';\nimport { expect } from 'chai';\nimport { Definition, EditId, SessionId, TraitLabel } from '../../Identifiers';\nimport { Change, StablePlace, StableRange } from '../../ChangeTypes';\nimport { SharedTree } from '../../SharedTree';\nimport { ChangeInternal, ChangeNode, Edit, TraitMap } from '../../persisted-types';\nimport { revert } from '../../HistoryEditFactory';\nimport { IdCompressor } from '../../id-compressor';\nimport { TestTree } from './TestNode';\nimport {\n\tLocalServerSharedTreeTestingComponents,\n\tLocalServerSharedTreeTestingOptions,\n\tsetUpTestTree,\n} from './TestUtilities';\n\n/**\n * An entry into the summarySizeTests list.\n */\ninterface SummarySizeTestEntry {\n\t/** Helper to obtain the list of edits to apply to the SharedTree. */\n\tedits: (testTree: TestTree) => Change[][];\n\t/** Expected size of the summary of the SharedTree after applying the `edits`. */\n\texpectedSize: number;\n\t/** Description for the test and the edits applied. */\n\tdescription: string;\n\t/** Flag to determine whether to revert the applied edits or not. */\n\trevertEdits?: boolean;\n}\n\n/**\n * Summary size tests where `edits` are applied and checked against the `expectedSize`.\n */\nconst summarySizeTests: SummarySizeTestEntry[] = [\n\t{\n\t\tedits: (testTree) => [\n\t\t\tChange.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),\n\t\t],\n\t\texpectedSize: 1075,\n\t\tdescription: 'when inserting a node',\n\t},\n\t{\n\t\tedits: (testTree) => {\n\t\t\tconst edits: Change[][] = [];\n\t\t\tfor (let i = 0; i < 50; i++) {\n\t\t\t\tedits.push(Change.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)));\n\t\t\t}\n\t\t\treturn edits;\n\t\t},\n\t\texpectedSize: 10680,\n\t\tdescription: 'with 50 inserts',\n\t},\n\t{\n\t\tedits: (testTree) => {\n\t\t\tconst node = testTree.buildLeaf(testTree.generateNodeId());\n\t\t\treturn [\n\t\t\t\tChange.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),\n\t\t\t\t[Change.setPayload(node.identifier, 10)],\n\t\t\t];\n\t\t},\n\t\texpectedSize: 1170,\n\t\tdescription: 'when inserting and setting a node',\n\t},\n\t{\n\t\tedits: (testTree) => {\n\t\t\tconst node = testTree.buildLeaf(testTree.generateNodeId());\n\t\t\treturn [\n\t\t\t\tChange.insertTree(node, StablePlace.atEndOf(testTree.right.traitLocation)),\n\t\t\t\t[Change.delete(StableRange.only(node))],\n\t\t\t];\n\t\t},\n\t\texpectedSize: 1223,\n\t\tdescription: 'when inserting and deleting a node',\n\t},\n\t{\n\t\tedits: (testTree) => [\n\t\t\tChange.insertTree(testTree.buildLeaf(), StablePlace.atEndOf(testTree.right.traitLocation)),\n\t\t],\n\t\texpectedSize: 1223,\n\t\tdescription: 'when inserting and reverting a node',\n\t\trevertEdits: true,\n\t},\n\t{\n\t\tedits: (testTree) => [\n\t\t\tChange.insertTree(makeLargeTestTree(testTree), StablePlace.atStartOf(testTree.right.traitLocation)),\n\t\t],\n\t\texpectedSize: 76979,\n\t\tdescription: 'when inserting a large tree',\n\t},\n\t{\n\t\tedits: (testTree) => {\n\t\t\tconst largeTree = makeLargeTestTree(testTree);\n\t\t\treturn [\n\t\t\t\tChange.insertTree(largeTree, StablePlace.atStartOf(testTree.right.traitLocation)),\n\t\t\t\tChange.move(StableRange.only(largeTree), StablePlace.atEndOf(testTree.left.traitLocation)),\n\t\t\t];\n\t\t},\n\t\texpectedSize: 77243,\n\t\tdescription: 'when inserting and moving a large tree',\n\t},\n];\n\n/**\n * Runs a test suite for summaries on `SharedTree` that verifies their sizes do not exceed the defined limits.\n * This suite can be used to test other implementations that aim to fulfill `SharedTree`'s contract.\n */\nexport function runSummarySizeTests(\n\ttitle: string,\n\tsetUpLocalServerTestSharedTree: (\n\t\toptions: LocalServerSharedTreeTestingOptions\n\t) => Promise<LocalServerSharedTreeTestingComponents>\n) {\n\tdescribe(title, () => {\n\t\tconst setupEditId = '9406d301-7449-48a5-b2ea-9be637b0c6e4' as EditId;\n\n\t\tlet tree: SharedTree;\n\t\tlet testTree: TestTree;\n\t\tlet testObjectProvider: TestObjectProvider;\n\n\t\t// Resets the tree before each test\n\t\tbeforeEach(async () => {\n\t\t\tconst testingComponents = await setUpLocalServerTestSharedTree({\n\t\t\t\tsetupEditId,\n\t\t\t});\n\t\t\ttree = testingComponents.tree;\n\t\t\ttestTree = setUpTestTree(tree);\n\t\t\ttestObjectProvider = testingComponents.testObjectProvider;\n\t\t});\n\n\t\tasync function checkSummarySize(\n\t\t\tchanges: Change[][],\n\t\t\texpectedSummarySize: number,\n\t\t\trevertEdits = false\n\t\t): Promise<void> {\n\t\t\tconst edits = changes.map((e) => tree.applyEdit(...e));\n\n\t\t\tif (revertEdits) {\n\t\t\t\tfor (let i = changes.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst editIndex = tree.edits.getIndexOfId(edits[i].id);\n\t\t\t\t\tconst edit = tree.edits.getEditInSessionAtIndex(editIndex) as Edit<ChangeInternal>;\n\t\t\t\t\tconst reverted = revert(edit.changes, tree.logViewer.getRevisionViewInSession(editIndex));\n\t\t\t\t\tif (reverted !== undefined) {\n\t\t\t\t\t\ttree.applyEditInternal(reverted);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Wait for the ops to to be submitted and processed across the containers.\n\t\t\tawait testObjectProvider.ensureSynchronized();\n\n\t\t\tconst summary = tree.saveSerializedSummary();\n\t\t\tconst summarySize = IsoBuffer.from(summary).byteLength;\n\n\t\t\t// TODO: make lte when 0.1.1 is settled\n\t\t\texpect(summarySize).to.equal(expectedSummarySize);\n\t\t}\n\n\t\tfor (const { edits, expectedSize, description, revertEdits } of summarySizeTests) {\n\t\t\tit(`does not exceed ${expectedSize} ${description}`, async () => {\n\t\t\t\tawait checkSummarySize(edits(testTree), expectedSize, revertEdits);\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction makeLargeTestTree(testTree: TestTree, nodesPerTrait = 10, traitsPerLevel = 2, levels = 2): ChangeNode {\n\tconst specialSession = '9f858704-89f6-4923-abf3-14fc986e717f' as SessionId;\n\t// ensure uuids for traits and definitions are stable\n\tconst compressor = new IdCompressor(specialSession, 0);\n\tconst uuidv4 = (): string => compressor.decompress(compressor.generateCompressedId());\n\tconst definition = uuidv4() as Definition;\n\n\tconst traitLabels: TraitLabel[] = [];\n\tfor (let i = 0; i < traitsPerLevel; i++) {\n\t\ttraitLabels.push(uuidv4() as TraitLabel);\n\t}\n\n\treturn {\n\t\tdefinition,\n\t\tidentifier: testTree.generateNodeId(),\n\t\ttraits: generateTraits(testTree, definition, traitLabels, nodesPerTrait, levels),\n\t};\n}\n\nfunction generateTraits(\n\ttestTree: TestTree,\n\tdefinition: Definition,\n\ttraitLabels: TraitLabel[],\n\tnodesPerTrait: number,\n\ttotalLevels: number,\n\tlevel = 0\n): TraitMap<ChangeNode> {\n\tconst traits = {};\n\n\ttraitLabels.forEach((label) => {\n\t\ttraits[label] = Array.from(Array(nodesPerTrait).keys()).map(() => {\n\t\t\treturn {\n\t\t\t\tdefinition,\n\t\t\t\tidentifier: testTree.generateNodeId(),\n\t\t\t\ttraits:\n\t\t\t\t\tlevel < totalLevels\n\t\t\t\t\t\t? generateTraits(testTree, definition, traitLabels, nodesPerTrait, totalLevels, level + 1)\n\t\t\t\t\t\t: {},\n\t\t\t};\n\t\t});\n\t});\n\n\treturn traits;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Check if the given value is defined using mocha's `expect`. Return the defined value;
7
+ */
8
+ export declare function expectDefined<T>(value: T | undefined): T;
9
+ //# sourceMappingURL=TestCommon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestCommon.d.ts","sourceRoot":"","sources":["../../../src/test/utilities/TestCommon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAGxD"}
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { expect } from 'chai';
6
+ /**
7
+ * Check if the given value is defined using mocha's `expect`. Return the defined value;
8
+ */
9
+ export function expectDefined(value) {
10
+ expect(value).to.be.not.undefined;
11
+ return value;
12
+ }
13
+ //# sourceMappingURL=TestCommon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestCommon.js","sourceRoot":"","sources":["../../../src/test/utilities/TestCommon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,KAAoB;IACpD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC,OAAO,KAAU,CAAC;AACnB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { expect } from 'chai';\n\n/**\n * Check if the given value is defined using mocha's `expect`. Return the defined value;\n */\nexport function expectDefined<T>(value: T | undefined): T {\n\texpect(value).to.be.not.undefined;\n\treturn value as T;\n}\n"]}
@@ -0,0 +1,140 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { BuildTreeNode } from '../../ChangeTypes';
6
+ import { Definition, NodeId, OpSpaceNodeId, SessionId, StableNodeId, TraitLabel } from '../../Identifiers';
7
+ import { NodeIdContext, NodeIdConverter, NodeIdNormalizer } from '../../NodeIdUtilities';
8
+ import { BuildNodeInternal, ChangeNode, Payload, TraitLocationInternal_0_0_2, TraitMap, TreeNode } from '../../persisted-types';
9
+ import { RevisionView } from '../../RevisionView';
10
+ import { TraitLocation } from '../../TreeView';
11
+ /** A legacy format of a `TestNode` */
12
+ export declare type TestNode_0_0_2 = TreeNode<TestNode_0_0_2, StableNodeId>;
13
+ /**
14
+ * A node with no children
15
+ */
16
+ export declare type LeafNode<T> = Omit<T, 'traits'> & {
17
+ traits: Record<string, never>;
18
+ };
19
+ /**
20
+ * Test extension of {@link TraitLocation} which can be converted to stable or legacy formats
21
+ */
22
+ export interface TestTraitLocation extends TraitLocation {
23
+ stable: TraitLocationInternal_0_0_2;
24
+ /** Translate this location into the equivalent location in another ID context */
25
+ translate(idConverter: NodeIdConverter): TestTraitLocation;
26
+ }
27
+ /**
28
+ * An object containing useful properties for analyzing a node within a test context.
29
+ */
30
+ export interface TestNode extends TreeNode<TestNode, NodeId> {
31
+ /** The label of the trait under which this node resides */
32
+ traitLabel: TraitLabel;
33
+ /** The trait location at which this node resides */
34
+ traitLocation: TestTraitLocation;
35
+ /** A revision view of this node */
36
+ view: RevisionView;
37
+ /** A version of this tree with stable IDs */
38
+ stable: TestNode_0_0_2;
39
+ /** Translate this node's ID into the equivalent ID in another ID context */
40
+ translateId(idConverter: NodeIdConverter): NodeId;
41
+ /** Express this tree as a ChangeNode */
42
+ toChangeNode(): ChangeNode;
43
+ }
44
+ /**
45
+ * A small tree of `TestNode`s consisting of a root/parent node, a "left" child and a "right" child. This is a useful tree for initializing
46
+ * tests as it makes it ergonomic to retrieve various properties of the tree. Note that it only represents the initial state of the tree,
47
+ * it does not update even if the SharedTree that it was the initial state for is mutated.
48
+ */
49
+ export interface TestTree extends TestNode, NodeIdContext, NodeIdNormalizer<OpSpaceNodeId> {
50
+ /** The left child node */
51
+ left: TestNode;
52
+ /** The right child node */
53
+ right: TestNode;
54
+ /** Create an arbitrary unparented node with the given payload, if specified */
55
+ buildLeaf(id?: undefined, payload?: Payload): LeafNode<BuildTreeNode>;
56
+ /** Create an arbitrary unparented node with the given identifier and payload, if specified */
57
+ buildLeaf(id: NodeId, payload?: Payload): LeafNode<ChangeNode>;
58
+ /**
59
+ * Generates a leaf node for use in internal build changes.
60
+ * If no `id` is explicitly provided, one will be generated.
61
+ * @param id - Explicit ID to use as the new node's identifier. If not provided, one will be generated.
62
+ */
63
+ buildLeafInternal(id?: NodeId, payload?: Payload): LeafNode<TreeNode<BuildNodeInternal, NodeId>>;
64
+ }
65
+ /**
66
+ * A TestTree for general use within the shared-tree package. The nodes in every `SimpleTestTree` will have unique identifiers - i.e. two
67
+ * different instances of `SimpleTestTree` are never equivalent.
68
+ */
69
+ export declare class SimpleTestTree implements TestTree {
70
+ private readonly nodeIdContext;
71
+ private readonly nodeIdNormalizer;
72
+ static readonly definition: Definition;
73
+ static readonly traitLabel: TraitLabel;
74
+ static readonly leftTraitLabel: TraitLabel;
75
+ static readonly rightTraitLabel: TraitLabel;
76
+ private readonly root;
77
+ readonly left: TestNode;
78
+ readonly right: TestNode;
79
+ readonly expensiveValidation: any;
80
+ constructor(nodeIdContext: NodeIdContext, nodeIdNormalizer: NodeIdNormalizer<OpSpaceNodeId>, expensiveValidation?: boolean);
81
+ get definition(): Definition;
82
+ get identifier(): NodeId;
83
+ get traits(): TraitMap<TestNode>;
84
+ get traitLabel(): TraitLabel;
85
+ get traitLocation(): TestTraitLocation;
86
+ get view(): RevisionView;
87
+ get stable(): TestNode_0_0_2;
88
+ translateId(idConverter: NodeIdConverter): NodeId;
89
+ toChangeNode(): ChangeNode;
90
+ buildLeaf(id?: undefined, payload?: Payload): LeafNode<BuildTreeNode>;
91
+ buildLeaf(id: NodeId, payload?: Payload): LeafNode<ChangeNode>;
92
+ buildLeafInternal(id?: NodeId, payload?: Payload): LeafNode<TreeNode<BuildNodeInternal, NodeId>>;
93
+ generateNodeId(override?: string): NodeId;
94
+ convertToStableNodeId(id: NodeId): StableNodeId;
95
+ tryConvertToStableNodeId(id: NodeId): StableNodeId | undefined;
96
+ convertToNodeId(id: StableNodeId): NodeId;
97
+ tryConvertToNodeId(id: StableNodeId): NodeId | undefined;
98
+ get localSessionId(): SessionId;
99
+ normalizeToOpSpace(id: NodeId): OpSpaceNodeId;
100
+ normalizeToSessionSpace(id: OpSpaceNodeId, sessionId: SessionId): NodeId;
101
+ }
102
+ /** A TestTree which resets before each test */
103
+ export declare class RefreshingTestTree<T extends TestTree> implements TestTree {
104
+ private _testTree?;
105
+ constructor(createTestTree: () => T, fn?: (testTree: T) => void);
106
+ private get testTree();
107
+ get left(): TestNode;
108
+ get right(): TestNode;
109
+ get definition(): Definition;
110
+ get identifier(): NodeId;
111
+ get traits(): TraitMap<TestNode>;
112
+ get traitLabel(): TraitLabel;
113
+ get traitLocation(): TestTraitLocation;
114
+ get view(): RevisionView;
115
+ get stable(): TestNode_0_0_2;
116
+ translateId(idConverter: NodeIdConverter): NodeId;
117
+ toChangeNode(): ChangeNode;
118
+ buildLeaf(id?: undefined, payload?: Payload): LeafNode<BuildTreeNode>;
119
+ buildLeaf(id: NodeId, payload?: Payload): LeafNode<ChangeNode>;
120
+ buildLeafInternal(id?: NodeId, payload?: Payload): LeafNode<TreeNode<BuildNodeInternal, NodeId>>;
121
+ generateNodeId(override?: string): NodeId;
122
+ convertToStableNodeId(id: NodeId): StableNodeId;
123
+ tryConvertToStableNodeId(id: NodeId): StableNodeId | undefined;
124
+ convertToNodeId(id: StableNodeId): NodeId;
125
+ tryConvertToNodeId(id: StableNodeId): NodeId | undefined;
126
+ get localSessionId(): SessionId;
127
+ normalizeToOpSpace(id: NodeId): OpSpaceNodeId;
128
+ normalizeToSessionSpace(id: OpSpaceNodeId, sessionId: SessionId): NodeId;
129
+ }
130
+ /** Create a new node with an automatically generated ID and the given payload */
131
+ export declare function buildLeaf(id?: undefined, payload?: Payload): LeafNode<BuildTreeNode>;
132
+ /** Create a new node with the given ID and payload */
133
+ export declare function buildLeaf(id: NodeId, payload?: Payload): LeafNode<ChangeNode>;
134
+ /**
135
+ * Generates a leaf {@link ChangeNode}.
136
+ * If no `id` is explicitly provided, one will be generated.
137
+ * @param id - Explicit ID to use as the new node's identifier. If not provided, one will be generated.
138
+ */
139
+ export declare function buildLeafInternal(nodeIdContext: NodeIdContext, id?: NodeId, payload?: Payload): LeafNode<TreeNode<BuildNodeInternal, NodeId>>;
140
+ //# sourceMappingURL=TestNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestNode.d.ts","sourceRoot":"","sources":["../../../src/test/utilities/TestNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { memoizeGetter, fail, setPropertyIfDefined, identity } from '../../Common';
6
+ import { convertTreeNodes } from '../../EditUtilities';
7
+ import { convertNodeDataIds } from '../../IdConversion';
8
+ import { initialTree } from '../../InitialTree';
9
+ import { RevisionView } from '../../RevisionView';
10
+ /**
11
+ * A TestTree for general use within the shared-tree package. The nodes in every `SimpleTestTree` will have unique identifiers - i.e. two
12
+ * different instances of `SimpleTestTree` are never equivalent.
13
+ */
14
+ export class SimpleTestTree {
15
+ constructor(nodeIdContext, nodeIdNormalizer, expensiveValidation = true) {
16
+ this.nodeIdContext = nodeIdContext;
17
+ this.nodeIdNormalizer = nodeIdNormalizer;
18
+ const leftIdentifier = nodeIdContext.generateNodeId();
19
+ const rightIdentifier = nodeIdContext.generateNodeId();
20
+ const rootIdentifier = nodeIdContext.generateNodeId();
21
+ this.expensiveValidation = expensiveValidation;
22
+ this.left = {
23
+ definition: SimpleTestTree.definition,
24
+ identifier: leftIdentifier,
25
+ traits: {},
26
+ traitLabel: SimpleTestTree.leftTraitLabel,
27
+ traitLocation: {
28
+ parent: rootIdentifier,
29
+ label: SimpleTestTree.leftTraitLabel,
30
+ get stable() {
31
+ return memoizeGetter(this, 'stable', convertToTraitLocation_0_0_2(this, nodeIdContext));
32
+ },
33
+ translate: (idConverter) => translateTraitLocation(SimpleTestTree.leftTraitLabel, rootIdentifier, nodeIdContext, idConverter),
34
+ },
35
+ get view() {
36
+ return memoizeGetter(this, 'view', RevisionView.fromTree(this, expensiveValidation));
37
+ },
38
+ get stable() {
39
+ return memoizeGetter(this, 'stable', convertToTestNode_0_0_2(this, nodeIdContext));
40
+ },
41
+ translateId: (idConverter) => translateId(leftIdentifier, nodeIdContext, idConverter),
42
+ toChangeNode: () => convertTreeNodes(this.left, (node) => convertNodeDataIds(node, identity)),
43
+ };
44
+ this.right = {
45
+ definition: SimpleTestTree.definition,
46
+ identifier: rightIdentifier,
47
+ traits: {},
48
+ traitLabel: SimpleTestTree.rightTraitLabel,
49
+ traitLocation: {
50
+ parent: rootIdentifier,
51
+ label: SimpleTestTree.rightTraitLabel,
52
+ get stable() {
53
+ return memoizeGetter(this, 'stable', convertToTraitLocation_0_0_2(this, nodeIdContext));
54
+ },
55
+ translate: (idConverter) => translateTraitLocation(SimpleTestTree.rightTraitLabel, rootIdentifier, nodeIdContext, idConverter),
56
+ },
57
+ get view() {
58
+ return memoizeGetter(this, 'view', RevisionView.fromTree(this, expensiveValidation));
59
+ },
60
+ get stable() {
61
+ return memoizeGetter(this, 'stable', convertToTestNode_0_0_2(this, nodeIdContext));
62
+ },
63
+ translateId: (idConverter) => translateId(rightIdentifier, nodeIdContext, idConverter),
64
+ toChangeNode: () => convertTreeNodes(this.right, (node) => convertNodeDataIds(node, identity)),
65
+ };
66
+ const rootParent = nodeIdContext.convertToNodeId(initialTree.identifier);
67
+ this.root = {
68
+ definition: SimpleTestTree.definition,
69
+ identifier: rootIdentifier,
70
+ traits: {
71
+ [SimpleTestTree.leftTraitLabel]: [this.left],
72
+ [SimpleTestTree.rightTraitLabel]: [this.right],
73
+ },
74
+ traitLabel: SimpleTestTree.traitLabel,
75
+ traitLocation: {
76
+ label: SimpleTestTree.traitLabel,
77
+ parent: rootParent,
78
+ get stable() {
79
+ return memoizeGetter(this, 'stable', convertToTraitLocation_0_0_2(this, nodeIdContext));
80
+ },
81
+ translate: (idConverter) => translateTraitLocation(SimpleTestTree.traitLabel, rootParent, nodeIdContext, idConverter),
82
+ },
83
+ get view() {
84
+ return memoizeGetter(this, 'view', RevisionView.fromTree(this, expensiveValidation));
85
+ },
86
+ get stable() {
87
+ return memoizeGetter(this, 'stable', convertToTestNode_0_0_2(this, nodeIdContext));
88
+ },
89
+ translateId: (idConverter) => translateId(rootIdentifier, nodeIdContext, idConverter),
90
+ toChangeNode: () => convertTreeNodes(this.root, (node) => convertNodeDataIds(node, identity)),
91
+ };
92
+ }
93
+ get definition() {
94
+ return this.root.definition;
95
+ }
96
+ get identifier() {
97
+ return this.root.identifier;
98
+ }
99
+ get traits() {
100
+ return this.root.traits;
101
+ }
102
+ get traitLabel() {
103
+ return this.root.traitLabel;
104
+ }
105
+ get traitLocation() {
106
+ return this.root.traitLocation;
107
+ }
108
+ get view() {
109
+ return this.root.view;
110
+ }
111
+ get stable() {
112
+ return this.root.stable;
113
+ }
114
+ translateId(idConverter) {
115
+ return this.root.translateId(idConverter);
116
+ }
117
+ toChangeNode() {
118
+ return convertTreeNodes(this, (node) => convertNodeDataIds(node, identity));
119
+ }
120
+ buildLeaf(id, payload) {
121
+ if (id === undefined) {
122
+ return buildLeaf(undefined, payload);
123
+ }
124
+ else {
125
+ return buildLeaf(id, payload);
126
+ }
127
+ }
128
+ buildLeafInternal(id, payload) {
129
+ return buildLeafInternal(this, id, payload);
130
+ }
131
+ generateNodeId(override) {
132
+ return this.nodeIdContext.generateNodeId(override);
133
+ }
134
+ convertToStableNodeId(id) {
135
+ return this.nodeIdContext.convertToStableNodeId(id);
136
+ }
137
+ tryConvertToStableNodeId(id) {
138
+ return this.nodeIdContext.tryConvertToStableNodeId(id);
139
+ }
140
+ convertToNodeId(id) {
141
+ return this.nodeIdContext.convertToNodeId(id);
142
+ }
143
+ tryConvertToNodeId(id) {
144
+ return this.nodeIdContext.tryConvertToNodeId(id);
145
+ }
146
+ get localSessionId() {
147
+ return this.nodeIdNormalizer.localSessionId;
148
+ }
149
+ normalizeToOpSpace(id) {
150
+ return this.nodeIdNormalizer.normalizeToOpSpace(id);
151
+ }
152
+ normalizeToSessionSpace(id, sessionId) {
153
+ return this.nodeIdNormalizer.normalizeToSessionSpace(id, sessionId);
154
+ }
155
+ }
156
+ SimpleTestTree.definition = 'node';
157
+ SimpleTestTree.traitLabel = 'e276f382-fa99-49a1-ae81-42001791c733';
158
+ SimpleTestTree.leftTraitLabel = 'left';
159
+ SimpleTestTree.rightTraitLabel = 'right';
160
+ /** A TestTree which resets before each test */
161
+ export class RefreshingTestTree {
162
+ constructor(createTestTree, fn) {
163
+ beforeEach(() => {
164
+ this._testTree = createTestTree();
165
+ fn === null || fn === void 0 ? void 0 : fn(this._testTree);
166
+ });
167
+ afterEach(() => {
168
+ this._testTree = undefined;
169
+ });
170
+ }
171
+ get testTree() {
172
+ var _a;
173
+ return ((_a = this._testTree) !== null && _a !== void 0 ? _a : fail('RefreshingTestTree should be created within a describe() block and should only be read within it() blocks'));
174
+ }
175
+ get left() {
176
+ return this.testTree.left;
177
+ }
178
+ get right() {
179
+ return this.testTree.right;
180
+ }
181
+ get definition() {
182
+ return this.testTree.definition;
183
+ }
184
+ get identifier() {
185
+ return this.testTree.identifier;
186
+ }
187
+ get traits() {
188
+ return this.testTree.traits;
189
+ }
190
+ get traitLabel() {
191
+ return this.testTree.traitLabel;
192
+ }
193
+ get traitLocation() {
194
+ return this.testTree.traitLocation;
195
+ }
196
+ get view() {
197
+ return this.testTree.view;
198
+ }
199
+ get stable() {
200
+ return this.testTree.stable;
201
+ }
202
+ translateId(idConverter) {
203
+ return this.testTree.translateId(idConverter);
204
+ }
205
+ toChangeNode() {
206
+ return convertTreeNodes(this.testTree, (node) => convertNodeDataIds(node, identity));
207
+ }
208
+ buildLeaf(id, payload) {
209
+ if (id === undefined) {
210
+ return this.testTree.buildLeaf(undefined, payload);
211
+ }
212
+ else {
213
+ return this.testTree.buildLeaf(id, payload);
214
+ }
215
+ }
216
+ buildLeafInternal(id, payload) {
217
+ return this.testTree.buildLeafInternal(id, payload);
218
+ }
219
+ generateNodeId(override) {
220
+ return this.testTree.generateNodeId(override);
221
+ }
222
+ convertToStableNodeId(id) {
223
+ return this.testTree.convertToStableNodeId(id);
224
+ }
225
+ tryConvertToStableNodeId(id) {
226
+ return this.testTree.convertToStableNodeId(id);
227
+ }
228
+ convertToNodeId(id) {
229
+ return this.testTree.convertToNodeId(id);
230
+ }
231
+ tryConvertToNodeId(id) {
232
+ return this.testTree.tryConvertToNodeId(id);
233
+ }
234
+ get localSessionId() {
235
+ return this.testTree.localSessionId;
236
+ }
237
+ normalizeToOpSpace(id) {
238
+ return this.testTree.normalizeToOpSpace(id);
239
+ }
240
+ normalizeToSessionSpace(id, sessionId) {
241
+ return this.testTree.normalizeToSessionSpace(id, sessionId);
242
+ }
243
+ }
244
+ /** Create a new node with the given ID and payload */
245
+ export function buildLeaf(id, payload) {
246
+ const node = {
247
+ definition: SimpleTestTree.definition,
248
+ traits: {},
249
+ };
250
+ setPropertyIfDefined(id, node, 'identifier');
251
+ setPropertyIfDefined(payload, node, 'payload');
252
+ return node;
253
+ }
254
+ /**
255
+ * Generates a leaf {@link ChangeNode}.
256
+ * If no `id` is explicitly provided, one will be generated.
257
+ * @param id - Explicit ID to use as the new node's identifier. If not provided, one will be generated.
258
+ */
259
+ export function buildLeafInternal(nodeIdContext, id, payload) {
260
+ const leaf = buildLeaf(undefined, payload);
261
+ return {
262
+ definition: leaf.definition,
263
+ identifier: id !== null && id !== void 0 ? id : nodeIdContext.generateNodeId(),
264
+ traits: {},
265
+ };
266
+ }
267
+ /** Translate an ID in one context to an ID in another */
268
+ function translateId(id, from, to) {
269
+ return to.convertToNodeId(from.convertToStableNodeId(id));
270
+ }
271
+ function translateTraitLocation(label, parentId, from, to) {
272
+ return {
273
+ label,
274
+ parent: translateId(parentId, from, to),
275
+ get stable() {
276
+ return memoizeGetter(this, 'stable', convertToTraitLocation_0_0_2(this, to));
277
+ },
278
+ translate: (idManager) => translateTraitLocation(label, parentId, to, idManager),
279
+ };
280
+ }
281
+ function convertToTestNode_0_0_2(node, idConverter) {
282
+ // This is equivalent to calling tryConvertToChangeNode_0_0_2 but that causes lint to stack overflow
283
+ return convertTreeNodes(node, (nodeData) => convertNodeDataIds(nodeData, (id) => idConverter.convertToStableNodeId(id)));
284
+ }
285
+ function convertToTraitLocation_0_0_2(traitLocation, idConverter) {
286
+ const parent = idConverter.convertToStableNodeId(traitLocation.parent);
287
+ return {
288
+ label: traitLocation.label,
289
+ parent,
290
+ };
291
+ }
292
+ //# sourceMappingURL=TestNode.js.map