@fluid-experimental/tree 0.58.2002 → 0.59.1000

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 (817) hide show
  1. package/README.md +159 -46
  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 -105
  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 +61 -32
  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 +129 -85
  59. package/dist/LogViewer.d.ts.map +1 -1
  60. package/dist/LogViewer.js +111 -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 +105 -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 +439 -0
  90. package/dist/SharedTree.d.ts.map +1 -0
  91. package/dist/SharedTree.js +1109 -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 +52 -0
  114. package/dist/Transaction.d.ts.map +1 -0
  115. package/dist/Transaction.js +72 -0
  116. package/dist/Transaction.js.map +1 -0
  117. package/dist/TransactionInternal.d.ts +540 -0
  118. package/dist/TransactionInternal.d.ts.map +1 -0
  119. package/dist/TransactionInternal.js +626 -0
  120. package/dist/TransactionInternal.js.map +1 -0
  121. package/dist/TreeCompressor.d.ts +36 -0
  122. package/dist/TreeCompressor.d.ts.map +1 -0
  123. package/dist/TreeCompressor.js +137 -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 +218 -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/docs/Write-Format.md +19 -0
  190. package/lib/ChangeCompression.d.ts +39 -0
  191. package/lib/ChangeCompression.d.ts.map +1 -0
  192. package/lib/ChangeCompression.js +111 -0
  193. package/lib/ChangeCompression.js.map +1 -0
  194. package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -105
  195. package/lib/ChangeTypes.d.ts.map +1 -0
  196. package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
  197. package/lib/ChangeTypes.js.map +1 -0
  198. package/lib/Checkout.d.ts +39 -27
  199. package/lib/Checkout.d.ts.map +1 -1
  200. package/lib/Checkout.js +53 -24
  201. package/lib/Checkout.js.map +1 -1
  202. package/lib/Common.d.ts +175 -38
  203. package/lib/Common.d.ts.map +1 -1
  204. package/lib/Common.js +226 -101
  205. package/lib/Common.js.map +1 -1
  206. package/lib/EagerCheckout.d.ts +24 -0
  207. package/lib/EagerCheckout.d.ts.map +1 -0
  208. package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
  209. package/lib/EagerCheckout.js.map +1 -0
  210. package/lib/EditLog.d.ts +77 -63
  211. package/lib/EditLog.d.ts.map +1 -1
  212. package/lib/EditLog.js +83 -47
  213. package/lib/EditLog.js.map +1 -1
  214. package/lib/EditUtilities.d.ts +168 -0
  215. package/lib/EditUtilities.d.ts.map +1 -0
  216. package/lib/EditUtilities.js +353 -0
  217. package/lib/EditUtilities.js.map +1 -0
  218. package/lib/EventTypes.d.ts +73 -0
  219. package/lib/EventTypes.d.ts.map +1 -0
  220. package/lib/EventTypes.js +75 -0
  221. package/lib/EventTypes.js.map +1 -0
  222. package/lib/Forest.d.ts +29 -7
  223. package/lib/Forest.d.ts.map +1 -1
  224. package/lib/Forest.js +58 -35
  225. package/lib/Forest.js.map +1 -1
  226. package/lib/HistoryEditFactory.d.ts +20 -0
  227. package/lib/HistoryEditFactory.d.ts.map +1 -0
  228. package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
  229. package/lib/HistoryEditFactory.js.map +1 -0
  230. package/lib/IdConversion.d.ts +12 -0
  231. package/lib/IdConversion.d.ts.map +1 -0
  232. package/lib/IdConversion.js +91 -0
  233. package/lib/IdConversion.js.map +1 -0
  234. package/lib/Identifiers.d.ts +89 -2
  235. package/lib/Identifiers.d.ts.map +1 -1
  236. package/lib/Identifiers.js +8 -1
  237. package/lib/Identifiers.js.map +1 -1
  238. package/lib/InitialTree.d.ts +2 -2
  239. package/lib/InitialTree.d.ts.map +1 -1
  240. package/lib/InitialTree.js +2 -1
  241. package/lib/InitialTree.js.map +1 -1
  242. package/lib/LazyCheckout.d.ts +28 -0
  243. package/lib/LazyCheckout.d.ts.map +1 -0
  244. package/lib/LazyCheckout.js +40 -0
  245. package/lib/LazyCheckout.js.map +1 -0
  246. package/lib/LogViewer.d.ts +129 -85
  247. package/lib/LogViewer.d.ts.map +1 -1
  248. package/lib/LogViewer.js +103 -77
  249. package/lib/LogViewer.js.map +1 -1
  250. package/lib/MergeHealth.d.ts +221 -0
  251. package/lib/MergeHealth.d.ts.map +1 -0
  252. package/lib/MergeHealth.js +258 -0
  253. package/lib/MergeHealth.js.map +1 -0
  254. package/lib/NodeIdUtilities.d.ts +105 -0
  255. package/lib/NodeIdUtilities.d.ts.map +1 -0
  256. package/lib/NodeIdUtilities.js +53 -0
  257. package/lib/NodeIdUtilities.js.map +1 -0
  258. package/lib/PayloadUtilities.d.ts +42 -0
  259. package/lib/PayloadUtilities.d.ts.map +1 -0
  260. package/lib/PayloadUtilities.js +110 -0
  261. package/lib/PayloadUtilities.js.map +1 -0
  262. package/lib/ReconciliationPath.d.ts +18 -13
  263. package/lib/ReconciliationPath.d.ts.map +1 -1
  264. package/lib/ReconciliationPath.js.map +1 -1
  265. package/lib/RevisionValueCache.d.ts +11 -2
  266. package/lib/RevisionValueCache.d.ts.map +1 -1
  267. package/lib/RevisionValueCache.js +2 -3
  268. package/lib/RevisionValueCache.js.map +1 -1
  269. package/lib/RevisionView.d.ts +83 -0
  270. package/lib/RevisionView.d.ts.map +1 -0
  271. package/lib/RevisionView.js +175 -0
  272. package/lib/RevisionView.js.map +1 -0
  273. package/lib/SerializationUtilities.d.ts +36 -0
  274. package/lib/SerializationUtilities.d.ts.map +1 -0
  275. package/lib/SerializationUtilities.js +95 -0
  276. package/lib/SerializationUtilities.js.map +1 -0
  277. package/lib/SharedTree.d.ts +439 -0
  278. package/lib/SharedTree.d.ts.map +1 -0
  279. package/lib/SharedTree.js +1104 -0
  280. package/lib/SharedTree.js.map +1 -0
  281. package/lib/SharedTreeEncoder.d.ts +102 -0
  282. package/lib/SharedTreeEncoder.d.ts.map +1 -0
  283. package/lib/SharedTreeEncoder.js +308 -0
  284. package/lib/SharedTreeEncoder.js.map +1 -0
  285. package/lib/StringInterner.d.ts +46 -0
  286. package/lib/StringInterner.d.ts.map +1 -0
  287. package/lib/StringInterner.js +57 -0
  288. package/lib/StringInterner.js.map +1 -0
  289. package/lib/Summary.d.ts +40 -0
  290. package/lib/Summary.d.ts.map +1 -0
  291. package/lib/Summary.js +19 -0
  292. package/lib/Summary.js.map +1 -0
  293. package/lib/SummaryBackCompatibility.d.ts +22 -22
  294. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  295. package/lib/SummaryBackCompatibility.js +29 -32
  296. package/lib/SummaryBackCompatibility.js.map +1 -1
  297. package/lib/SummaryTestUtilities.d.ts +31 -0
  298. package/lib/SummaryTestUtilities.d.ts.map +1 -0
  299. package/lib/SummaryTestUtilities.js +32 -0
  300. package/lib/SummaryTestUtilities.js.map +1 -0
  301. package/lib/Transaction.d.ts +52 -0
  302. package/lib/Transaction.d.ts.map +1 -0
  303. package/lib/Transaction.js +68 -0
  304. package/lib/Transaction.js.map +1 -0
  305. package/lib/TransactionInternal.d.ts +540 -0
  306. package/lib/TransactionInternal.d.ts.map +1 -0
  307. package/lib/TransactionInternal.js +622 -0
  308. package/lib/TransactionInternal.js.map +1 -0
  309. package/lib/TreeCompressor.d.ts +36 -0
  310. package/lib/TreeCompressor.d.ts.map +1 -0
  311. package/lib/TreeCompressor.js +133 -0
  312. package/lib/TreeCompressor.js.map +1 -0
  313. package/lib/TreeNodeHandle.d.ts +12 -18
  314. package/lib/TreeNodeHandle.d.ts.map +1 -1
  315. package/lib/TreeNodeHandle.js +14 -24
  316. package/lib/TreeNodeHandle.js.map +1 -1
  317. package/lib/TreeView.d.ts +166 -0
  318. package/lib/TreeView.d.ts.map +1 -0
  319. package/lib/TreeView.js +214 -0
  320. package/lib/TreeView.js.map +1 -0
  321. package/lib/TreeViewUtilities.d.ts +21 -0
  322. package/lib/TreeViewUtilities.d.ts.map +1 -0
  323. package/lib/TreeViewUtilities.js +71 -0
  324. package/lib/TreeViewUtilities.js.map +1 -0
  325. package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  326. package/lib/UndoRedoHandler.d.ts.map +1 -0
  327. package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
  328. package/lib/UndoRedoHandler.js.map +1 -0
  329. package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  330. package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  331. package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
  332. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
  333. package/lib/id-compressor/IdCompressor.d.ts +389 -0
  334. package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
  335. package/lib/id-compressor/IdCompressor.js +1343 -0
  336. package/lib/id-compressor/IdCompressor.js.map +1 -0
  337. package/lib/id-compressor/IdRange.d.ts +11 -0
  338. package/lib/id-compressor/IdRange.d.ts.map +1 -0
  339. package/lib/id-compressor/IdRange.js +25 -0
  340. package/lib/id-compressor/IdRange.js.map +1 -0
  341. package/lib/id-compressor/NumericUuid.d.ts +63 -0
  342. package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
  343. package/lib/id-compressor/NumericUuid.js +365 -0
  344. package/lib/id-compressor/NumericUuid.js.map +1 -0
  345. package/lib/id-compressor/index.d.ts +12 -0
  346. package/lib/id-compressor/index.d.ts.map +1 -0
  347. package/lib/id-compressor/index.js +12 -0
  348. package/lib/id-compressor/index.js.map +1 -0
  349. package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  350. package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  351. package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
  352. package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
  353. package/lib/id-compressor/persisted-types/index.d.ts +6 -0
  354. package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
  355. package/lib/id-compressor/persisted-types/index.js +6 -0
  356. package/lib/id-compressor/persisted-types/index.js.map +1 -0
  357. package/lib/index.d.ts +29 -9
  358. package/lib/index.d.ts.map +1 -1
  359. package/lib/index.js +23 -6
  360. package/lib/index.js.map +1 -1
  361. package/lib/persisted-types/0.0.2.d.ts +385 -0
  362. package/lib/persisted-types/0.0.2.d.ts.map +1 -0
  363. package/lib/persisted-types/0.0.2.js +110 -0
  364. package/lib/persisted-types/0.0.2.js.map +1 -0
  365. package/lib/persisted-types/0.1.1.d.ts +314 -0
  366. package/lib/persisted-types/0.1.1.d.ts.map +1 -0
  367. package/lib/persisted-types/0.1.1.js +150 -0
  368. package/lib/persisted-types/0.1.1.js.map +1 -0
  369. package/lib/persisted-types/index.d.ts +7 -0
  370. package/lib/persisted-types/index.d.ts.map +1 -0
  371. package/lib/persisted-types/index.js +8 -0
  372. package/lib/persisted-types/index.js.map +1 -0
  373. package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
  374. package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
  375. package/lib/test/AppendOnlySortedMap.tests.js +169 -0
  376. package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
  377. package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
  378. package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
  379. package/lib/test/ChangeCompression.tests.js +145 -0
  380. package/lib/test/ChangeCompression.tests.js.map +1 -0
  381. package/lib/test/Checkout.tests.d.ts +2 -3
  382. package/lib/test/Checkout.tests.d.ts.map +1 -1
  383. package/lib/test/Checkout.tests.js +126 -69
  384. package/lib/test/Checkout.tests.js.map +1 -1
  385. package/lib/test/Common.tests.js +60 -2
  386. package/lib/test/Common.tests.js.map +1 -1
  387. package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
  388. package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
  389. package/lib/test/EagerCheckout.tests.js +20 -0
  390. package/lib/test/EagerCheckout.tests.js.map +1 -0
  391. package/lib/test/Edit.tests.js +22 -14
  392. package/lib/test/Edit.tests.js.map +1 -1
  393. package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
  394. package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
  395. package/lib/test/EditLog.perf.tests.js +30 -0
  396. package/lib/test/EditLog.perf.tests.js.map +1 -0
  397. package/lib/test/EditLog.tests.js +10 -6
  398. package/lib/test/EditLog.tests.js.map +1 -1
  399. package/lib/test/EditUtilities.tests.d.ts +6 -0
  400. package/lib/test/EditUtilities.tests.d.ts.map +1 -0
  401. package/lib/test/EditUtilities.tests.js +503 -0
  402. package/lib/test/EditUtilities.tests.js.map +1 -0
  403. package/lib/test/Forest.perf.tests.d.ts +6 -0
  404. package/lib/test/Forest.perf.tests.d.ts.map +1 -0
  405. package/lib/test/Forest.perf.tests.js +133 -0
  406. package/lib/test/Forest.perf.tests.js.map +1 -0
  407. package/lib/test/Forest.tests.js +54 -27
  408. package/lib/test/Forest.tests.js.map +1 -1
  409. package/lib/test/GenericTransaction.tests.js +12 -3
  410. package/lib/test/GenericTransaction.tests.js.map +1 -1
  411. package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
  412. package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
  413. package/lib/test/HistoryEditFactory.tests.js +90 -0
  414. package/lib/test/HistoryEditFactory.tests.js.map +1 -0
  415. package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
  416. package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
  417. package/lib/test/IdCompressor.perf.tests.js +304 -0
  418. package/lib/test/IdCompressor.perf.tests.js.map +1 -0
  419. package/lib/test/IdCompressor.tests.d.ts +6 -0
  420. package/lib/test/IdCompressor.tests.d.ts.map +1 -0
  421. package/lib/test/IdCompressor.tests.js +1075 -0
  422. package/lib/test/IdCompressor.tests.js.map +1 -0
  423. package/lib/test/IdConversion.tests.d.ts +6 -0
  424. package/lib/test/IdConversion.tests.d.ts.map +1 -0
  425. package/lib/test/IdConversion.tests.js +36 -0
  426. package/lib/test/IdConversion.tests.js.map +1 -0
  427. package/lib/test/LazyCheckout.tests.d.ts +6 -0
  428. package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
  429. package/lib/test/LazyCheckout.tests.js +22 -0
  430. package/lib/test/LazyCheckout.tests.js.map +1 -0
  431. package/lib/test/LogViewer.tests.js +276 -191
  432. package/lib/test/LogViewer.tests.js.map +1 -1
  433. package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
  434. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
  435. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
  436. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
  437. package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
  438. package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
  439. package/lib/test/NumericUuid.perf.tests.js +68 -0
  440. package/lib/test/NumericUuid.perf.tests.js.map +1 -0
  441. package/lib/test/NumericUuid.tests.d.ts +6 -0
  442. package/lib/test/NumericUuid.tests.d.ts.map +1 -0
  443. package/lib/test/NumericUuid.tests.js +191 -0
  444. package/lib/test/NumericUuid.tests.js.map +1 -0
  445. package/lib/test/RevisionView.tests.d.ts +6 -0
  446. package/lib/test/RevisionView.tests.d.ts.map +1 -0
  447. package/lib/test/RevisionView.tests.js +133 -0
  448. package/lib/test/RevisionView.tests.js.map +1 -0
  449. package/lib/test/SharedTree.perf.tests.d.ts +6 -0
  450. package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
  451. package/lib/test/SharedTree.perf.tests.js +39 -0
  452. package/lib/test/SharedTree.perf.tests.js.map +1 -0
  453. package/lib/test/SharedTree.tests.js +15 -3
  454. package/lib/test/SharedTree.tests.js.map +1 -1
  455. package/lib/test/StringInterner.tests.d.ts +6 -0
  456. package/lib/test/StringInterner.tests.d.ts.map +1 -0
  457. package/lib/test/StringInterner.tests.js +71 -0
  458. package/lib/test/StringInterner.tests.js.map +1 -0
  459. package/lib/test/Summary.tests.d.ts +8 -0
  460. package/lib/test/Summary.tests.d.ts.map +1 -0
  461. package/lib/test/Summary.tests.js +407 -0
  462. package/lib/test/Summary.tests.js.map +1 -0
  463. package/lib/test/Transaction.tests.js +76 -330
  464. package/lib/test/Transaction.tests.js.map +1 -1
  465. package/lib/test/TransactionInternal.tests.d.ts +6 -0
  466. package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
  467. package/lib/test/TransactionInternal.tests.js +568 -0
  468. package/lib/test/TransactionInternal.tests.js.map +1 -0
  469. package/lib/test/TreeCompression.tests.d.ts +6 -0
  470. package/lib/test/TreeCompression.tests.d.ts.map +1 -0
  471. package/lib/test/TreeCompression.tests.js +292 -0
  472. package/lib/test/TreeCompression.tests.js.map +1 -0
  473. package/lib/test/TreeView.tests.d.ts +6 -0
  474. package/lib/test/TreeView.tests.d.ts.map +1 -0
  475. package/lib/test/TreeView.tests.js +176 -0
  476. package/lib/test/TreeView.tests.js.map +1 -0
  477. package/lib/test/UndoRedoHandler.tests.js +2 -2
  478. package/lib/test/UndoRedoHandler.tests.js.map +1 -1
  479. package/lib/test/Virtualization.tests.js +146 -62
  480. package/lib/test/Virtualization.tests.js.map +1 -1
  481. package/lib/test/fuzz/Generators.d.ts +19 -0
  482. package/lib/test/fuzz/Generators.d.ts.map +1 -0
  483. package/lib/test/fuzz/Generators.js +420 -0
  484. package/lib/test/fuzz/Generators.js.map +1 -0
  485. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
  486. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
  487. package/lib/test/fuzz/SharedTreeFuzzTests.js +217 -0
  488. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
  489. package/lib/test/fuzz/Types.d.ts +133 -0
  490. package/lib/test/fuzz/Types.d.ts.map +1 -0
  491. package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
  492. package/lib/test/fuzz/Types.js.map +1 -0
  493. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
  494. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
  495. package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
  496. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
  497. package/lib/test/utilities/MockTransaction.d.ts +26 -7
  498. package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
  499. package/lib/test/utilities/MockTransaction.js +40 -11
  500. package/lib/test/utilities/MockTransaction.js.map +1 -1
  501. package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
  502. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
  503. package/lib/test/utilities/PendingLocalStateTests.js +105 -0
  504. package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
  505. package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
  506. package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
  507. package/lib/test/utilities/SharedTreeTests.js +696 -439
  508. package/lib/test/utilities/SharedTreeTests.js.map +1 -1
  509. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
  510. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
  511. package/lib/test/utilities/SharedTreeVersioningTests.js +370 -0
  512. package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
  513. package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
  514. package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
  515. package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
  516. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
  517. package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
  518. package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
  519. package/lib/test/utilities/SummarySizeTests.js +158 -0
  520. package/lib/test/utilities/SummarySizeTests.js.map +1 -0
  521. package/lib/test/utilities/TestCommon.d.ts +9 -0
  522. package/lib/test/utilities/TestCommon.d.ts.map +1 -0
  523. package/lib/test/utilities/TestCommon.js +13 -0
  524. package/lib/test/utilities/TestCommon.js.map +1 -0
  525. package/lib/test/utilities/TestNode.d.ts +140 -0
  526. package/lib/test/utilities/TestNode.d.ts.map +1 -0
  527. package/lib/test/utilities/TestNode.js +292 -0
  528. package/lib/test/utilities/TestNode.js.map +1 -0
  529. package/lib/test/utilities/TestUtilities.d.ts +84 -70
  530. package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
  531. package/lib/test/utilities/TestUtilities.js +218 -143
  532. package/lib/test/utilities/TestUtilities.js.map +1 -1
  533. package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
  534. package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
  535. package/lib/test/utilities/UndoRedoTests.js +138 -149
  536. package/lib/test/utilities/UndoRedoTests.js.map +1 -1
  537. package/package.json +22 -17
  538. package/src/ChangeCompression.ts +159 -0
  539. package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -125
  540. package/src/Checkout.ts +82 -53
  541. package/src/Common.ts +317 -117
  542. package/src/EagerCheckout.ts +38 -0
  543. package/src/EditLog.ts +153 -100
  544. package/src/EditUtilities.ts +559 -0
  545. package/src/EventTypes.ts +74 -0
  546. package/src/Forest.ts +81 -73
  547. package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
  548. package/src/IdConversion.ts +125 -0
  549. package/src/Identifiers.ts +101 -1
  550. package/src/InitialTree.ts +5 -4
  551. package/src/LazyCheckout.ts +51 -0
  552. package/src/LogViewer.ts +242 -166
  553. package/src/MergeHealth.ts +447 -0
  554. package/src/NodeIdUtilities.ts +156 -0
  555. package/src/PayloadUtilities.ts +124 -0
  556. package/src/ReconciliationPath.ts +18 -13
  557. package/src/RevisionValueCache.ts +14 -5
  558. package/src/RevisionView.ts +252 -0
  559. package/src/SerializationUtilities.ts +130 -0
  560. package/src/SharedTree.ts +1501 -0
  561. package/src/SharedTreeEncoder.ts +493 -0
  562. package/src/StringInterner.ts +72 -0
  563. package/src/Summary.ts +48 -0
  564. package/src/SummaryBackCompatibility.ts +47 -57
  565. package/src/SummaryTestUtilities.ts +54 -0
  566. package/src/Transaction.ts +89 -0
  567. package/src/TransactionInternal.ts +1087 -0
  568. package/src/TreeCompressor.ts +213 -0
  569. package/src/TreeNodeHandle.ts +19 -32
  570. package/src/TreeView.ts +322 -0
  571. package/src/TreeViewUtilities.ts +77 -0
  572. package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
  573. package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
  574. package/src/id-compressor/IdCompressor.md +3 -0
  575. package/src/id-compressor/IdCompressor.ts +1848 -0
  576. package/src/id-compressor/IdRange.ts +33 -0
  577. package/src/id-compressor/NumericUuid.ts +414 -0
  578. package/src/id-compressor/index.ts +13 -0
  579. package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
  580. package/src/id-compressor/persisted-types/README.md +3 -0
  581. package/src/id-compressor/persisted-types/index.ts +6 -0
  582. package/src/index.ts +118 -59
  583. package/src/persisted-types/0.0.2.ts +442 -0
  584. package/src/persisted-types/0.1.1.ts +476 -0
  585. package/src/persisted-types/README.md +22 -0
  586. package/src/persisted-types/index.ts +9 -0
  587. package/.mocharc.js +0 -41
  588. package/api/tree.api.md +0 -729
  589. package/dist/BasicCheckout.d.ts +0 -23
  590. package/dist/BasicCheckout.d.ts.map +0 -1
  591. package/dist/BasicCheckout.js.map +0 -1
  592. package/dist/Snapshot.d.ts +0 -198
  593. package/dist/Snapshot.d.ts.map +0 -1
  594. package/dist/Snapshot.js +0 -267
  595. package/dist/Snapshot.js.map +0 -1
  596. package/dist/SnapshotUtilities.d.ts +0 -29
  597. package/dist/SnapshotUtilities.d.ts.map +0 -1
  598. package/dist/SnapshotUtilities.js +0 -73
  599. package/dist/SnapshotUtilities.js.map +0 -1
  600. package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
  601. package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
  602. package/dist/anchored-edits/AnchorResolution.js +0 -162
  603. package/dist/anchored-edits/AnchorResolution.js.map +0 -1
  604. package/dist/anchored-edits/Factory.d.ts +0 -56
  605. package/dist/anchored-edits/Factory.d.ts.map +0 -1
  606. package/dist/anchored-edits/Factory.js +0 -79
  607. package/dist/anchored-edits/Factory.js.map +0 -1
  608. package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
  609. package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
  610. package/dist/anchored-edits/PersistedTypes.js +0 -131
  611. package/dist/anchored-edits/PersistedTypes.js.map +0 -1
  612. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  613. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  614. package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
  615. package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  616. package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  617. package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  618. package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
  619. package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
  620. package/dist/anchored-edits/index.d.ts +0 -10
  621. package/dist/anchored-edits/index.d.ts.map +0 -1
  622. package/dist/anchored-edits/index.js +0 -34
  623. package/dist/anchored-edits/index.js.map +0 -1
  624. package/dist/default-edits/EditUtilities.d.ts +0 -57
  625. package/dist/default-edits/EditUtilities.d.ts.map +0 -1
  626. package/dist/default-edits/EditUtilities.js +0 -192
  627. package/dist/default-edits/EditUtilities.js.map +0 -1
  628. package/dist/default-edits/Factory.d.ts +0 -56
  629. package/dist/default-edits/Factory.d.ts.map +0 -1
  630. package/dist/default-edits/Factory.js +0 -79
  631. package/dist/default-edits/Factory.js.map +0 -1
  632. package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
  633. package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
  634. package/dist/default-edits/HistoryEditFactory.js +0 -187
  635. package/dist/default-edits/HistoryEditFactory.js.map +0 -1
  636. package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
  637. package/dist/default-edits/PersistedTypes.js.map +0 -1
  638. package/dist/default-edits/SharedTree.d.ts +0 -111
  639. package/dist/default-edits/SharedTree.d.ts.map +0 -1
  640. package/dist/default-edits/SharedTree.js +0 -124
  641. package/dist/default-edits/SharedTree.js.map +0 -1
  642. package/dist/default-edits/Summary.d.ts +0 -15
  643. package/dist/default-edits/Summary.d.ts.map +0 -1
  644. package/dist/default-edits/Summary.js +0 -35
  645. package/dist/default-edits/Summary.js.map +0 -1
  646. package/dist/default-edits/Transaction.d.ts +0 -41
  647. package/dist/default-edits/Transaction.d.ts.map +0 -1
  648. package/dist/default-edits/Transaction.js +0 -225
  649. package/dist/default-edits/Transaction.js.map +0 -1
  650. package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
  651. package/dist/default-edits/UndoRedoHandler.js.map +0 -1
  652. package/dist/default-edits/index.d.ts +0 -13
  653. package/dist/default-edits/index.d.ts.map +0 -1
  654. package/dist/default-edits/index.js +0 -41
  655. package/dist/default-edits/index.js.map +0 -1
  656. package/dist/generic/GenericEditUtilities.d.ts +0 -26
  657. package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
  658. package/dist/generic/GenericEditUtilities.js +0 -45
  659. package/dist/generic/GenericEditUtilities.js.map +0 -1
  660. package/dist/generic/GenericSharedTree.d.ts +0 -221
  661. package/dist/generic/GenericSharedTree.d.ts.map +0 -1
  662. package/dist/generic/GenericSharedTree.js +0 -447
  663. package/dist/generic/GenericSharedTree.js.map +0 -1
  664. package/dist/generic/GenericTransaction.d.ts +0 -87
  665. package/dist/generic/GenericTransaction.d.ts.map +0 -1
  666. package/dist/generic/GenericTransaction.js +0 -144
  667. package/dist/generic/GenericTransaction.js.map +0 -1
  668. package/dist/generic/PersistedTypes.d.ts +0 -194
  669. package/dist/generic/PersistedTypes.d.ts.map +0 -1
  670. package/dist/generic/PersistedTypes.js +0 -42
  671. package/dist/generic/PersistedTypes.js.map +0 -1
  672. package/dist/generic/Summary.d.ts +0 -63
  673. package/dist/generic/Summary.d.ts.map +0 -1
  674. package/dist/generic/Summary.js +0 -64
  675. package/dist/generic/Summary.js.map +0 -1
  676. package/dist/generic/index.d.ts +0 -10
  677. package/dist/generic/index.d.ts.map +0 -1
  678. package/dist/generic/index.js +0 -26
  679. package/dist/generic/index.js.map +0 -1
  680. package/docs/Future.md +0 -155
  681. package/lib/BasicCheckout.d.ts +0 -23
  682. package/lib/BasicCheckout.d.ts.map +0 -1
  683. package/lib/BasicCheckout.js.map +0 -1
  684. package/lib/Snapshot.d.ts +0 -198
  685. package/lib/Snapshot.d.ts.map +0 -1
  686. package/lib/Snapshot.js +0 -263
  687. package/lib/Snapshot.js.map +0 -1
  688. package/lib/SnapshotUtilities.d.ts +0 -29
  689. package/lib/SnapshotUtilities.d.ts.map +0 -1
  690. package/lib/SnapshotUtilities.js +0 -67
  691. package/lib/SnapshotUtilities.js.map +0 -1
  692. package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
  693. package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
  694. package/lib/anchored-edits/AnchorResolution.js +0 -152
  695. package/lib/anchored-edits/AnchorResolution.js.map +0 -1
  696. package/lib/anchored-edits/Factory.d.ts +0 -56
  697. package/lib/anchored-edits/Factory.d.ts.map +0 -1
  698. package/lib/anchored-edits/Factory.js +0 -74
  699. package/lib/anchored-edits/Factory.js.map +0 -1
  700. package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
  701. package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
  702. package/lib/anchored-edits/PersistedTypes.js +0 -128
  703. package/lib/anchored-edits/PersistedTypes.js.map +0 -1
  704. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  705. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  706. package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
  707. package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  708. package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  709. package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  710. package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
  711. package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
  712. package/lib/anchored-edits/index.d.ts +0 -10
  713. package/lib/anchored-edits/index.d.ts.map +0 -1
  714. package/lib/anchored-edits/index.js +0 -11
  715. package/lib/anchored-edits/index.js.map +0 -1
  716. package/lib/default-edits/EditUtilities.d.ts +0 -57
  717. package/lib/default-edits/EditUtilities.d.ts.map +0 -1
  718. package/lib/default-edits/EditUtilities.js +0 -181
  719. package/lib/default-edits/EditUtilities.js.map +0 -1
  720. package/lib/default-edits/Factory.d.ts +0 -56
  721. package/lib/default-edits/Factory.d.ts.map +0 -1
  722. package/lib/default-edits/Factory.js +0 -74
  723. package/lib/default-edits/Factory.js.map +0 -1
  724. package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
  725. package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
  726. package/lib/default-edits/HistoryEditFactory.js.map +0 -1
  727. package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
  728. package/lib/default-edits/PersistedTypes.js.map +0 -1
  729. package/lib/default-edits/SharedTree.d.ts +0 -111
  730. package/lib/default-edits/SharedTree.d.ts.map +0 -1
  731. package/lib/default-edits/SharedTree.js +0 -100
  732. package/lib/default-edits/SharedTree.js.map +0 -1
  733. package/lib/default-edits/Summary.d.ts +0 -15
  734. package/lib/default-edits/Summary.d.ts.map +0 -1
  735. package/lib/default-edits/Summary.js +0 -31
  736. package/lib/default-edits/Summary.js.map +0 -1
  737. package/lib/default-edits/Transaction.d.ts +0 -41
  738. package/lib/default-edits/Transaction.d.ts.map +0 -1
  739. package/lib/default-edits/Transaction.js +0 -221
  740. package/lib/default-edits/Transaction.js.map +0 -1
  741. package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
  742. package/lib/default-edits/UndoRedoHandler.js.map +0 -1
  743. package/lib/default-edits/index.d.ts +0 -13
  744. package/lib/default-edits/index.d.ts.map +0 -1
  745. package/lib/default-edits/index.js +0 -14
  746. package/lib/default-edits/index.js.map +0 -1
  747. package/lib/generic/GenericEditUtilities.d.ts +0 -26
  748. package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
  749. package/lib/generic/GenericEditUtilities.js +0 -38
  750. package/lib/generic/GenericEditUtilities.js.map +0 -1
  751. package/lib/generic/GenericSharedTree.d.ts +0 -221
  752. package/lib/generic/GenericSharedTree.d.ts.map +0 -1
  753. package/lib/generic/GenericSharedTree.js +0 -443
  754. package/lib/generic/GenericSharedTree.js.map +0 -1
  755. package/lib/generic/GenericTransaction.d.ts +0 -87
  756. package/lib/generic/GenericTransaction.d.ts.map +0 -1
  757. package/lib/generic/GenericTransaction.js +0 -140
  758. package/lib/generic/GenericTransaction.js.map +0 -1
  759. package/lib/generic/PersistedTypes.d.ts +0 -194
  760. package/lib/generic/PersistedTypes.d.ts.map +0 -1
  761. package/lib/generic/PersistedTypes.js +0 -39
  762. package/lib/generic/PersistedTypes.js.map +0 -1
  763. package/lib/generic/Summary.d.ts +0 -63
  764. package/lib/generic/Summary.d.ts.map +0 -1
  765. package/lib/generic/Summary.js +0 -58
  766. package/lib/generic/Summary.js.map +0 -1
  767. package/lib/generic/index.d.ts +0 -10
  768. package/lib/generic/index.d.ts.map +0 -1
  769. package/lib/generic/index.js +0 -11
  770. package/lib/generic/index.js.map +0 -1
  771. package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
  772. package/lib/test/Anchors.glassBox.tests.js +0 -410
  773. package/lib/test/Anchors.glassBox.tests.js.map +0 -1
  774. package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
  775. package/lib/test/BasicCheckout.tests.js +0 -8
  776. package/lib/test/BasicCheckout.tests.js.map +0 -1
  777. package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
  778. package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
  779. package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
  780. package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
  781. package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
  782. package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
  783. package/lib/test/Snapshot.tests.d.ts.map +0 -1
  784. package/lib/test/Snapshot.tests.js +0 -96
  785. package/lib/test/Snapshot.tests.js.map +0 -1
  786. package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
  787. package/lib/test/SnapshotUtilities.tests.js +0 -168
  788. package/lib/test/SnapshotUtilities.tests.js.map +0 -1
  789. package/lib/test/undoRedoStackManager.d.ts +0 -26
  790. package/lib/test/undoRedoStackManager.d.ts.map +0 -1
  791. package/lib/test/undoRedoStackManager.js +0 -176
  792. package/lib/test/undoRedoStackManager.js.map +0 -1
  793. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
  794. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
  795. package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
  796. package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
  797. package/src/BasicCheckout.ts +0 -34
  798. package/src/Snapshot.ts +0 -363
  799. package/src/SnapshotUtilities.ts +0 -88
  800. package/src/anchored-edits/AnchorResolution.ts +0 -442
  801. package/src/anchored-edits/Factory.ts +0 -94
  802. package/src/anchored-edits/PersistedTypes.ts +0 -310
  803. package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
  804. package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
  805. package/src/anchored-edits/index.ts +0 -21
  806. package/src/default-edits/EditUtilities.ts +0 -220
  807. package/src/default-edits/Factory.ts +0 -94
  808. package/src/default-edits/SharedTree.ts +0 -174
  809. package/src/default-edits/Summary.ts +0 -44
  810. package/src/default-edits/Transaction.ts +0 -262
  811. package/src/default-edits/index.ts +0 -29
  812. package/src/generic/GenericEditUtilities.ts +0 -46
  813. package/src/generic/GenericSharedTree.ts +0 -593
  814. package/src/generic/GenericTransaction.ts +0 -194
  815. package/src/generic/PersistedTypes.ts +0 -221
  816. package/src/generic/Summary.ts +0 -113
  817. 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