@fluid-experimental/tree 0.58.2001 → 0.59.2000-61729

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 +71 -0
  114. package/dist/Transaction.d.ts.map +1 -0
  115. package/dist/Transaction.js +92 -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 +71 -0
  302. package/lib/Transaction.d.ts.map +1 -0
  303. package/lib/Transaction.js +88 -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 +109 -329
  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 +120 -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"undoRedoStackManager.js","sourceRoot":"","sources":["../../src/test/undoRedoStackManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0FAA0F;AAC1F,wFAAwF;AACxF,kBAAkB;AAElB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,IAAK,YAIJ;AAJD,WAAK,YAAY;IAChB,+CAAI,CAAA;IACJ,+CAAI,CAAA;IACJ,+CAAI,CAAA;AACL,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AAED;;GAEG;AACH,MAAM,KAAK;IAGV,YAAY,GAAG,KAAU;QADR,UAAK,GAAQ,EAAE,CAAC;QAEhC,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACzC;IACF,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAChC,CAAC;IACM,GAAG;QACT,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACrB;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IACM,GAAG;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEM,IAAI,CAAC,IAAO;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC1B;IACF,CAAC;CACD;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,KAAqC;IACzD,IAAI,CAAC,IAAoC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC;SAC5D;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEM,iCAAiC;QACvC,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrB;aAAM;YACN,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC9B;IACF,CAAC;IAEO,sBAAsB;QAC7B,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC1B;IACF,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAqChC;QALiB,cAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,cAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACzC,SAAI,GAAiB,YAAY,CAAC,IAAI,CAAC;QAC9B,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAGlD,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClF,CAAC;IAvCO,MAAM,CAAC,MAAM,CAAC,WAA0B,EAAE,SAAwB;QACzE,gDAAgD;QAChD,oDAAoD;QACpD,8BAA8B;QAC9B,SAAS,CAAC,iCAAiC,EAAE,CAAC;QAE9C,gEAAgE;QAChE,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE;YAC/D,WAAW,CAAC,GAAG,EAAE,CAAC;SAClB;QAED,mDAAmD;QACnD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACzC,IAAI,cAAc,KAAK,SAAS,EAAE;gBACjC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE;oBAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;oBACvC,IAAI,SAAS,KAAK,SAAS,EAAE;wBAC5B,SAAS,CAAC,MAAM,EAAE,CAAC;qBACnB;iBACD;aACD;SACD;QAED,iDAAiD;QACjD,sDAAsD;QACtD,EAAE;QACF,WAAW,CAAC,iCAAiC,EAAE,CAAC;QAChD,SAAS,CAAC,iCAAiC,EAAE,CAAC;IAC/C,CAAC;IAYM,qBAAqB;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,iCAAiC,EAAE,CAAC;SACnD;IACF,CAAC;IAEM,EAAE,CAAC,KAAqB,EAAE,QAAoB;QACpD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IACM,cAAc,CAAC,KAAqB,EAAE,QAAoB;QAChE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,aAAa;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SACb;QACD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9B,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,aAAa;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SACb;QACD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9B,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,sBAAsB,CAAC,UAAuB;QACpD,IAAI,YAA2B,CAAC;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE;YAClB,KAAK,YAAY,CAAC,IAAI;gBACrB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YAEP,KAAK,YAAY,CAAC,IAAI;gBACrB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,MAAM;YAEP,KAAK,YAAY,CAAC,IAAI;gBACrB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,MAAM;YAEP;gBACC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACjC;QACD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,cAAc,KAAK,SAAS,EAAE;YACjC,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,CAAc,UAAU,CAAC,CAAC,CAAC;SACtD;aAAM;YACN,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAChC;IACF,CAAC;IAEO,cAAc;QACrB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;YAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YAC/C,IAAI,iBAAiB,KAAK,SAAS,EAAE;gBACpC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE;oBAClC,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;oBAC9C,IAAI,aAAa,KAAK,SAAS,EAAE;wBAChC,aAAa,CAAC,OAAO,EAAE,CAAC;qBACxB;iBACD;aACD;SACD;IACF,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// TODO: This is a temporary copy of the 'UndoRedoStackManager' from 'framework/undo-redo'\n// to unblock testing of SharedMatrix undo while we decide on the correct layering\n// for undo.\n\nimport { EventEmitter } from 'events';\nimport { IRevertible } from '../default-edits/UndoRedoHandler';\n\nenum UndoRedoMode {\n\tNone,\n\tRedo,\n\tUndo,\n}\n\n/**\n * Helper class for createing a stack over an array\n */\nclass Stack<T> {\n\tpublic itemPushedCallback: (() => void) | undefined;\n\tprivate readonly items: T[] = [];\n\tconstructor(...items: T[]) {\n\t\tif (items !== undefined) {\n\t\t\titems.forEach((item) => this.push(item));\n\t\t}\n\t}\n\n\tpublic empty(): boolean {\n\t\treturn this.items.length === 0;\n\t}\n\tpublic top(): T | undefined {\n\t\tif (!this.empty()) {\n\t\t\treturn this.items[0];\n\t\t}\n\t\treturn undefined;\n\t}\n\tpublic pop(): T | undefined {\n\t\treturn this.items.shift();\n\t}\n\n\tpublic push(item: T) {\n\t\tthis.items.unshift(item);\n\t\tif (this.itemPushedCallback !== undefined) {\n\t\t\tthis.itemPushedCallback();\n\t\t}\n\t}\n}\n\n/**\n * Helper class for creating the Undo and Redo stacks\n */\nclass UndoRedoStack extends Stack<Stack<IRevertible> | undefined> {\n\tpublic push(item: Stack<IRevertible> | undefined) {\n\t\tif (item !== undefined) {\n\t\t\titem.itemPushedCallback = () => this.callItemPushedCallback;\n\t\t}\n\t\tsuper.push(item);\n\t}\n\n\tpublic closeCurrentOperationIfInProgress() {\n\t\tif (this.top() !== undefined) {\n\t\t\tthis.push(undefined);\n\t\t} else {\n\t\t\tthis.callItemPushedCallback();\n\t\t}\n\t}\n\n\tprivate callItemPushedCallback() {\n\t\tif (this.itemPushedCallback !== undefined) {\n\t\t\tthis.itemPushedCallback();\n\t\t}\n\t}\n}\n\n/**\n * Manages the Undo and Redo stacks, and operations withing those stacks.\n * Allows adding items to the current operation on the stack, closing the current operation,\n * and issuing and undo or a redo.\n */\nexport class UndoRedoStackManager {\n\tprivate static revert(revertStack: UndoRedoStack, pushStack: UndoRedoStack) {\n\t\t// Close the pushStack, as it could get new ops\n\t\t// from the revert, and we don't want those combined\n\t\t// with any existing operation\n\t\tpushStack.closeCurrentOperationIfInProgress();\n\n\t\t// Search the revert stack for the first defined operation stack\n\t\twhile (!revertStack.empty() && revertStack.top() === undefined) {\n\t\t\trevertStack.pop();\n\t\t}\n\n\t\t// If there is a defined operation stack, revert it\n\t\tif (!revertStack.empty()) {\n\t\t\tconst operationStack = revertStack.pop();\n\t\t\tif (operationStack !== undefined) {\n\t\t\t\twhile (!operationStack.empty()) {\n\t\t\t\t\tconst operation = operationStack.pop();\n\t\t\t\t\tif (operation !== undefined) {\n\t\t\t\t\t\toperation.revert();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Make sure both stacks have any open operations\n\t\t// closed, since we won't want anything added to those\n\t\t//\n\t\trevertStack.closeCurrentOperationIfInProgress();\n\t\tpushStack.closeCurrentOperationIfInProgress();\n\t}\n\n\tprivate readonly undoStack = new UndoRedoStack();\n\tprivate readonly redoStack = new UndoRedoStack();\n\tprivate mode: UndoRedoMode = UndoRedoMode.None;\n\tprivate readonly eventEmitter = new EventEmitter();\n\n\tconstructor() {\n\t\tthis.undoStack.itemPushedCallback = () => this.eventEmitter.emit('changePushed');\n\t\tthis.redoStack.itemPushedCallback = () => this.eventEmitter.emit('changePushed');\n\t}\n\n\tpublic closeCurrentOperation() {\n\t\tif (this.mode === UndoRedoMode.None) {\n\t\t\tthis.undoStack.closeCurrentOperationIfInProgress();\n\t\t}\n\t}\n\n\tpublic on(event: 'changePushed', listener: () => void) {\n\t\tthis.eventEmitter.on(event, listener);\n\t}\n\tpublic removeListener(event: 'changePushed', listener: () => void) {\n\t\tthis.eventEmitter.removeListener(event, listener);\n\t}\n\n\tpublic undoOperation(): boolean {\n\t\tif (this.undoStack.empty()) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.mode = UndoRedoMode.Undo;\n\t\tUndoRedoStackManager.revert(this.undoStack, this.redoStack);\n\t\tthis.mode = UndoRedoMode.None;\n\t\treturn true;\n\t}\n\n\tpublic redoOperation(): boolean {\n\t\tif (this.redoStack.empty()) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.mode = UndoRedoMode.Redo;\n\t\tUndoRedoStackManager.revert(this.redoStack, this.undoStack);\n\t\tthis.mode = UndoRedoMode.None;\n\t\treturn true;\n\t}\n\n\tpublic pushToCurrentOperation(revertible: IRevertible) {\n\t\tlet currentStack: UndoRedoStack;\n\n\t\tswitch (this.mode) {\n\t\t\tcase UndoRedoMode.None:\n\t\t\t\tcurrentStack = this.undoStack;\n\t\t\t\tthis.clearRedoStack();\n\t\t\t\tbreak;\n\n\t\t\tcase UndoRedoMode.Redo:\n\t\t\t\tcurrentStack = this.undoStack;\n\t\t\t\tbreak;\n\n\t\t\tcase UndoRedoMode.Undo:\n\t\t\t\tcurrentStack = this.redoStack;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error('unknown mode');\n\t\t}\n\t\tconst operationStack = currentStack.top();\n\t\tif (operationStack === undefined) {\n\t\t\tcurrentStack.push(new Stack<IRevertible>(revertible));\n\t\t} else {\n\t\t\toperationStack.push(revertible);\n\t\t}\n\t}\n\n\tprivate clearRedoStack() {\n\t\twhile (!this.redoStack.empty()) {\n\t\t\tconst redoOpertionStack = this.redoStack.pop();\n\t\t\tif (redoOpertionStack !== undefined) {\n\t\t\t\twhile (!redoOpertionStack.empty()) {\n\t\t\t\t\tconst redoOperation = redoOpertionStack.pop();\n\t\t\t\t\tif (redoOperation !== undefined) {\n\t\t\t\t\t\tredoOperation.discard();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -1,13 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { SharedTree } from '../../default-edits';
6
- import { SharedTreeWithAnchors } from '../../anchored-edits';
7
- import { LocalServerSharedTreeTestingComponents, LocalServerSharedTreeTestingOptions, SharedTreeTestingComponents, SharedTreeTestingOptions } from './TestUtilities';
8
- /**
9
- * Runs a test suite for summaries on `SharedTree`.
10
- * This suite can be used to test other implementations that aim to fulfill `SharedTree`'s contract.
11
- */
12
- export declare function runSummaryTests<TSharedTree extends SharedTree | SharedTreeWithAnchors>(title: string, setUpTestSharedTree: (options?: SharedTreeTestingOptions) => SharedTreeTestingComponents<TSharedTree>, setUpLocalServerTestSharedTree: (options: LocalServerSharedTreeTestingOptions) => Promise<LocalServerSharedTreeTestingComponents<TSharedTree>>): void;
13
- //# sourceMappingURL=SummaryFormatCompatibilityTests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SummaryFormatCompatibilityTests.d.ts","sourceRoot":"","sources":["../../../src/test/utilities/SummaryFormatCompatibilityTests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAEN,sCAAsC,EACtC,mCAAmC,EACnC,2BAA2B,EAC3B,wBAAwB,EACxB,MAAM,iBAAiB,CAAC;AAoBzB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,SAAS,UAAU,GAAG,qBAAqB,EACrF,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,wBAAwB,KAAK,2BAA2B,CAAC,WAAW,CAAC,EACrG,8BAA8B,EAAE,CAC/B,OAAO,EAAE,mCAAmC,KACxC,OAAO,CAAC,sCAAsC,CAAC,WAAW,CAAC,CAAC,QA8JjE"}
@@ -1,154 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import * as fs from 'fs';
6
- import { resolve, join } from 'path';
7
- import { assert, expect } from 'chai';
8
- import { fail } from '../../Common';
9
- import { deserialize } from '../../SummaryBackCompatibility';
10
- import { fullHistorySummarizer, fullHistorySummarizer_0_1_0, } from '../../generic';
11
- import { createStableEdits, } from './TestUtilities';
12
- import { TestFluidSerializer } from './TestSerializer';
13
- // This accounts for this file being executed after compilation. If many tests want to leverage resources, we should unify
14
- // resource path logic to a single place.
15
- const pathBase = resolve(__dirname, '../../../src/test/summary-files/');
16
- function summaryFilePath(summaryName) {
17
- return join(pathBase, `${summaryName}.json`);
18
- }
19
- /**
20
- * A version/summarizer pair must be specified for a write test to be generated.
21
- * Versions that can no longer be written should be removed from this list.
22
- */
23
- const supportedSummarizers = [
24
- { version: '0.0.2', summarizer: fullHistorySummarizer },
25
- { version: '0.1.0', summarizer: fullHistorySummarizer_0_1_0 },
26
- ];
27
- /**
28
- * Runs a test suite for summaries on `SharedTree`.
29
- * This suite can be used to test other implementations that aim to fulfill `SharedTree`'s contract.
30
- */
31
- export function runSummaryTests(title, setUpTestSharedTree, setUpLocalServerTestSharedTree) {
32
- describe(title, () => {
33
- var _a;
34
- const setupEditId = '9406d301-7449-48a5-b2ea-9be637b0c6e4';
35
- const testSerializer = new TestFluidSerializer();
36
- let expectedTree;
37
- let testObjectProvider;
38
- const testSummaryFiles = fs.readdirSync(pathBase);
39
- // Create and populate a map of the file names associated with their summary type
40
- const summaryTypes = new Map();
41
- for (let fileName of testSummaryFiles) {
42
- // Summary files should be named in the following format: `${summaryType}-${version}.json`
43
- const fileNameRegularExpression = /(?<summaryType>[\w+-]*\w+)-(?<version>\d+\.\d\.\d).json/;
44
- const match = fileNameRegularExpression.exec(fileName);
45
- const matchGroups = (_a = match === null || match === void 0 ? void 0 : match.groups) !== null && _a !== void 0 ? _a : fail(`invalid filename ${fileName}`);
46
- const summaryType = matchGroups.summaryType;
47
- fileName = `${matchGroups.summaryType}-${matchGroups.version}`;
48
- let collection = summaryTypes.get(summaryType);
49
- if (collection === undefined) {
50
- collection = [];
51
- summaryTypes.set(summaryType, collection);
52
- }
53
- collection.push(fileName);
54
- }
55
- // Resets the tree before each test
56
- beforeEach(async () => {
57
- const testingComponents = await setUpLocalServerTestSharedTree({
58
- setupEditId,
59
- });
60
- expectedTree = testingComponents.tree;
61
- testObjectProvider = testingComponents.testObjectProvider;
62
- });
63
- afterEach(async () => {
64
- testObjectProvider.reset();
65
- });
66
- const validateSummaryRead = (fileName) => {
67
- const serializedSummary = fs.readFileSync(summaryFilePath(fileName), 'utf8');
68
- const summary = deserialize(serializedSummary, testSerializer);
69
- const { tree } = setUpTestSharedTree();
70
- assert.typeOf(summary, 'object');
71
- tree.loadSummary(summary);
72
- expect(tree.equals(expectedTree)).to.be.true;
73
- };
74
- const validateSummaryWrite = (summarizer) => {
75
- // Save a new summary with the expected tree and use it to load a new SharedTree
76
- const newSummary = summarizer(expectedTree.edits, expectedTree.currentView);
77
- const { tree: tree2 } = setUpTestSharedTree();
78
- tree2.loadSummary(newSummary);
79
- // The expected tree, tree loaded with the existing summary, and the tree loaded
80
- // with the new summary should all be equal.
81
- expect(tree2.equals(expectedTree)).to.be.true;
82
- };
83
- for (const [summaryType, files] of summaryTypes.entries()) {
84
- it(`files of type '${summaryType}' with different format versions produce identical trees`, () => {
85
- // Load the first summary file
86
- const serializedSummary = fs.readFileSync(summaryFilePath(files[0]), 'utf8');
87
- const summary = deserialize(serializedSummary, testSerializer);
88
- assert.typeOf(summary, 'object');
89
- expectedTree.loadSummary(summary);
90
- // Check every other summary file results in the same loaded tree
91
- for (let i = 1; i < files.length; i++) {
92
- const { tree } = setUpTestSharedTree();
93
- const serializedSummary = fs.readFileSync(summaryFilePath(files[i]), 'utf8');
94
- const summary = deserialize(serializedSummary, testSerializer);
95
- assert.typeOf(summary, 'object');
96
- tree.loadSummary(summary);
97
- expect(tree.equals(expectedTree)).to.be.true;
98
- }
99
- });
100
- for (const { version, summarizer } of supportedSummarizers) {
101
- it(`format version ${version} can be written for ${summaryType} summary type`, async () => {
102
- // Load the first summary file (the one with the oldest version)
103
- const serializedSummary = fs.readFileSync(summaryFilePath(files.sort()[0]), 'utf8');
104
- const summary = deserialize(serializedSummary, testSerializer);
105
- assert.typeOf(summary, 'object');
106
- // Wait for the ops to to be submitted and processed across the containers.
107
- await testObjectProvider.ensureSynchronized();
108
- expectedTree.loadSummary(summary);
109
- await testObjectProvider.ensureSynchronized();
110
- // Write a new summary with the specified version
111
- const newSummary = expectedTree.saveSerializedSummary({ summarizer });
112
- // Check the newly written summary is equivalent to its corresponding test summary file
113
- const fileName = `${summaryType}-${version}`;
114
- // Re-stringify the the JSON file to remove escaped characters
115
- const expectedSummary = JSON.stringify(JSON.parse(fs.readFileSync(summaryFilePath(fileName), 'utf8')));
116
- expect(newSummary).to.equal(expectedSummary);
117
- });
118
- }
119
- }
120
- describe('version 0.0.2', () => {
121
- it('can be read and written with no history', async () => {
122
- validateSummaryRead('no-history-0.0.2');
123
- validateSummaryWrite(fullHistorySummarizer);
124
- });
125
- it('can be read and written with small history', async () => {
126
- createStableEdits(11).forEach((edit) => {
127
- expectedTree.processLocalEdit(edit);
128
- });
129
- // Wait for the ops to to be submitted and processed across the containers.
130
- await testObjectProvider.ensureSynchronized();
131
- validateSummaryRead('small-history-0.0.2');
132
- validateSummaryWrite(fullHistorySummarizer);
133
- });
134
- });
135
- describe('version 0.1.0', () => {
136
- it('can be read and written with no history', async () => {
137
- validateSummaryRead('no-history-0.1.0');
138
- validateSummaryWrite(fullHistorySummarizer_0_1_0);
139
- });
140
- it('can be read and written with large history', async () => {
141
- testObjectProvider.logger.registerExpectedEvent({ eventName: 'fluid:telemetry:Batching:LengthTooBig' }, { eventName: 'fluid:telemetry:Batching:LengthTooBig' });
142
- // Process an arbitrarily large number of stable edits
143
- createStableEdits(251).forEach((edit) => {
144
- expectedTree.processLocalEdit(edit);
145
- });
146
- // Wait for the ops to to be submitted and processed across the containers.
147
- await testObjectProvider.ensureSynchronized();
148
- validateSummaryRead('large-history-0.1.0');
149
- validateSummaryWrite(fullHistorySummarizer_0_1_0);
150
- });
151
- });
152
- });
153
- }
154
- //# sourceMappingURL=SummaryFormatCompatibilityTests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SummaryFormatCompatibilityTests.js","sourceRoot":"","sources":["../../../src/test/utilities/SummaryFormatCompatibilityTests.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 * as fs from 'fs';\nimport { resolve, join } from 'path';\nimport { assert, expect } from 'chai';\nimport { TestObjectProvider } from '@fluidframework/test-utils';\nimport { fail } from '../../Common';\nimport { SharedTree } from '../../default-edits';\nimport { EditId } from '../../Identifiers';\nimport { deserialize } from '../../SummaryBackCompatibility';\nimport {\n\tfullHistorySummarizer,\n\tfullHistorySummarizer_0_1_0,\n\tSharedTreeSummarizer,\n\tSharedTreeSummaryBase,\n} from '../../generic';\nimport { SharedTreeWithAnchors } from '../../anchored-edits';\nimport {\n\tcreateStableEdits,\n\tLocalServerSharedTreeTestingComponents,\n\tLocalServerSharedTreeTestingOptions,\n\tSharedTreeTestingComponents,\n\tSharedTreeTestingOptions,\n} from './TestUtilities';\nimport { TestFluidSerializer } from './TestSerializer';\n\n// This accounts for this file being executed after compilation. If many tests want to leverage resources, we should unify\n// resource path logic to a single place.\nconst pathBase = resolve(__dirname, '../../../src/test/summary-files/');\n\nfunction summaryFilePath(summaryName: string): string {\n\treturn join(pathBase, `${summaryName}.json`);\n}\n\n/**\n * A version/summarizer pair must be specified for a write test to be generated.\n * Versions that can no longer be written should be removed from this list.\n */\nconst supportedSummarizers: { version: string; summarizer: SharedTreeSummarizer<unknown> }[] = [\n\t{ version: '0.0.2', summarizer: fullHistorySummarizer },\n\t{ version: '0.1.0', summarizer: fullHistorySummarizer_0_1_0 },\n];\n\n/**\n * Runs a test suite for summaries on `SharedTree`.\n * This suite can be used to test other implementations that aim to fulfill `SharedTree`'s contract.\n */\nexport function runSummaryTests<TSharedTree extends SharedTree | SharedTreeWithAnchors>(\n\ttitle: string,\n\tsetUpTestSharedTree: (options?: SharedTreeTestingOptions) => SharedTreeTestingComponents<TSharedTree>,\n\tsetUpLocalServerTestSharedTree: (\n\t\toptions: LocalServerSharedTreeTestingOptions\n\t) => Promise<LocalServerSharedTreeTestingComponents<TSharedTree>>\n) {\n\tdescribe(title, () => {\n\t\tconst setupEditId = '9406d301-7449-48a5-b2ea-9be637b0c6e4' as EditId;\n\n\t\tconst testSerializer = new TestFluidSerializer();\n\n\t\tlet expectedTree: TSharedTree;\n\t\tlet testObjectProvider: TestObjectProvider;\n\n\t\tconst testSummaryFiles = fs.readdirSync(pathBase);\n\n\t\t// Create and populate a map of the file names associated with their summary type\n\t\tconst summaryTypes = new Map<string, string[]>();\n\t\tfor (let fileName of testSummaryFiles) {\n\t\t\t// Summary files should be named in the following format: `${summaryType}-${version}.json`\n\t\t\tconst fileNameRegularExpression = /(?<summaryType>[\\w+-]*\\w+)-(?<version>\\d+\\.\\d\\.\\d).json/;\n\t\t\tconst match = fileNameRegularExpression.exec(fileName);\n\n\t\t\tconst matchGroups = match?.groups ?? fail(`invalid filename ${fileName}`);\n\t\t\tconst summaryType = matchGroups.summaryType;\n\t\t\tfileName = `${matchGroups.summaryType}-${matchGroups.version}`;\n\n\t\t\tlet collection = summaryTypes.get(summaryType);\n\t\t\tif (collection === undefined) {\n\t\t\t\tcollection = [];\n\t\t\t\tsummaryTypes.set(summaryType, collection);\n\t\t\t}\n\t\t\tcollection.push(fileName);\n\t\t}\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\texpectedTree = testingComponents.tree;\n\t\t\ttestObjectProvider = testingComponents.testObjectProvider;\n\t\t});\n\n\t\tafterEach(async () => {\n\t\t\ttestObjectProvider.reset();\n\t\t});\n\n\t\tconst validateSummaryRead = (fileName: string): void => {\n\t\t\tconst serializedSummary = fs.readFileSync(summaryFilePath(fileName), 'utf8');\n\t\t\tconst summary = deserialize(serializedSummary, testSerializer);\n\n\t\t\tconst { tree } = setUpTestSharedTree();\n\t\t\tassert.typeOf(summary, 'object');\n\t\t\ttree.loadSummary(summary as SharedTreeSummaryBase);\n\n\t\t\texpect(tree.equals(expectedTree)).to.be.true;\n\t\t};\n\n\t\tconst validateSummaryWrite = (summarizer: SharedTreeSummarizer<unknown>): void => {\n\t\t\t// Save a new summary with the expected tree and use it to load a new SharedTree\n\t\t\tconst newSummary = summarizer(expectedTree.edits, expectedTree.currentView);\n\t\t\tconst { tree: tree2 } = setUpTestSharedTree();\n\t\t\ttree2.loadSummary(newSummary);\n\n\t\t\t// The expected tree, tree loaded with the existing summary, and the tree loaded\n\t\t\t// with the new summary should all be equal.\n\t\t\texpect(tree2.equals(expectedTree)).to.be.true;\n\t\t};\n\n\t\tfor (const [summaryType, files] of summaryTypes.entries()) {\n\t\t\tit(`files of type '${summaryType}' with different format versions produce identical trees`, () => {\n\t\t\t\t// Load the first summary file\n\t\t\t\tconst serializedSummary = fs.readFileSync(summaryFilePath(files[0]), 'utf8');\n\t\t\t\tconst summary = deserialize(serializedSummary, testSerializer);\n\t\t\t\tassert.typeOf(summary, 'object');\n\t\t\t\texpectedTree.loadSummary(summary as SharedTreeSummaryBase);\n\n\t\t\t\t// Check every other summary file results in the same loaded tree\n\t\t\t\tfor (let i = 1; i < files.length; i++) {\n\t\t\t\t\tconst { tree } = setUpTestSharedTree();\n\n\t\t\t\t\tconst serializedSummary = fs.readFileSync(summaryFilePath(files[i]), 'utf8');\n\t\t\t\t\tconst summary = deserialize(serializedSummary, testSerializer);\n\t\t\t\t\tassert.typeOf(summary, 'object');\n\t\t\t\t\ttree.loadSummary(summary as SharedTreeSummaryBase);\n\n\t\t\t\t\texpect(tree.equals(expectedTree)).to.be.true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (const { version, summarizer } of supportedSummarizers) {\n\t\t\t\tit(`format version ${version} can be written for ${summaryType} summary type`, async () => {\n\t\t\t\t\t// Load the first summary file (the one with the oldest version)\n\t\t\t\t\tconst serializedSummary = fs.readFileSync(summaryFilePath(files.sort()[0]), 'utf8');\n\t\t\t\t\tconst summary = deserialize(serializedSummary, testSerializer);\n\t\t\t\t\tassert.typeOf(summary, 'object');\n\n\t\t\t\t\t// Wait for the ops to to be submitted and processed across the containers.\n\t\t\t\t\tawait testObjectProvider.ensureSynchronized();\n\t\t\t\t\texpectedTree.loadSummary(summary as SharedTreeSummaryBase);\n\n\t\t\t\t\tawait testObjectProvider.ensureSynchronized();\n\n\t\t\t\t\t// Write a new summary with the specified version\n\t\t\t\t\tconst newSummary = expectedTree.saveSerializedSummary({ summarizer });\n\n\t\t\t\t\t// Check the newly written summary is equivalent to its corresponding test summary file\n\t\t\t\t\tconst fileName = `${summaryType}-${version}`;\n\t\t\t\t\t// Re-stringify the the JSON file to remove escaped characters\n\t\t\t\t\tconst expectedSummary = JSON.stringify(\n\t\t\t\t\t\tJSON.parse(fs.readFileSync(summaryFilePath(fileName), 'utf8'))\n\t\t\t\t\t);\n\n\t\t\t\t\texpect(newSummary).to.equal(expectedSummary);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tdescribe('version 0.0.2', () => {\n\t\t\tit('can be read and written with no history', async () => {\n\t\t\t\tvalidateSummaryRead('no-history-0.0.2');\n\t\t\t\tvalidateSummaryWrite(fullHistorySummarizer);\n\t\t\t});\n\n\t\t\tit('can be read and written with small history', async () => {\n\t\t\t\tcreateStableEdits(11).forEach((edit) => {\n\t\t\t\t\texpectedTree.processLocalEdit(edit);\n\t\t\t\t});\n\n\t\t\t\t// Wait for the ops to to be submitted and processed across the containers.\n\t\t\t\tawait testObjectProvider.ensureSynchronized();\n\n\t\t\t\tvalidateSummaryRead('small-history-0.0.2');\n\t\t\t\tvalidateSummaryWrite(fullHistorySummarizer);\n\t\t\t});\n\t\t});\n\n\t\tdescribe('version 0.1.0', () => {\n\t\t\tit('can be read and written with no history', async () => {\n\t\t\t\tvalidateSummaryRead('no-history-0.1.0');\n\t\t\t\tvalidateSummaryWrite(fullHistorySummarizer_0_1_0);\n\t\t\t});\n\n\t\t\tit('can be read and written with large history', async () => {\n\t\t\t\ttestObjectProvider.logger.registerExpectedEvent(\n\t\t\t\t\t{ eventName: 'fluid:telemetry:Batching:LengthTooBig' },\n\t\t\t\t\t{ eventName: 'fluid:telemetry:Batching:LengthTooBig' }\n\t\t\t\t);\n\t\t\t\t// Process an arbitrarily large number of stable edits\n\t\t\t\tcreateStableEdits(251).forEach((edit) => {\n\t\t\t\t\texpectedTree.processLocalEdit(edit);\n\t\t\t\t});\n\n\t\t\t\t// Wait for the ops to to be submitted and processed across the containers.\n\t\t\t\tawait testObjectProvider.ensureSynchronized();\n\n\t\t\t\tvalidateSummaryRead('large-history-0.1.0');\n\t\t\t\tvalidateSummaryWrite(fullHistorySummarizer_0_1_0);\n\t\t\t});\n\t\t});\n\t});\n}\n"]}
@@ -1,34 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- import { Snapshot } from './Snapshot';
7
- import { Checkout } from './Checkout';
8
- import { EditCommittedEventArguments, GenericSharedTree } from './generic';
9
-
10
- /**
11
- * Basic Session that stays up to date with the SharedTree.
12
- *
13
- * waitForPendingUpdates is always a no-op since BasicCheckout is always up to date.
14
- * @public
15
- * @sealed
16
- */
17
- export class BasicCheckout<TChange> extends Checkout<TChange> {
18
- /**
19
- * @param tree - the tree
20
- */
21
- public constructor(tree: GenericSharedTree<TChange>) {
22
- super(tree, tree.currentView, (args: EditCommittedEventArguments<GenericSharedTree<TChange>>) => {
23
- this.emitChange();
24
- });
25
- }
26
-
27
- protected get latestCommittedView(): Snapshot {
28
- return this.tree.currentView;
29
- }
30
-
31
- public async waitForPendingUpdates(): Promise<void> {
32
- return Promise.resolve();
33
- }
34
- }
package/src/Snapshot.ts DELETED
@@ -1,363 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- import { assert, copyPropertyIfDefined, fail } from './Common';
7
- import { NodeId, TraitLabel } from './Identifiers';
8
- import { getChangeNodeFromSnapshot } from './SnapshotUtilities';
9
- import { Delta, Forest } from './Forest';
10
- import { ChangeNode, NodeData, Payload, TraitLocation } from './generic';
11
-
12
- /**
13
- * An immutable view of a distributed tree node.
14
- * @public
15
- */
16
- export interface SnapshotNode extends NodeData {
17
- readonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;
18
- }
19
-
20
- /**
21
- * Index of a place within a trait.
22
- * 0 = before all nodes,
23
- * 1 = after first node,
24
- * etc.
25
- * @public
26
- */
27
- export type PlaceIndex = number & { readonly PlaceIndex: unique symbol };
28
-
29
- /**
30
- * Index of a node within a trait.
31
- * 0 = first node,
32
- * 1 = second node,
33
- * etc.
34
- * @public
35
- */
36
- export type TraitNodeIndex = number & { readonly TraitNodeIndex: unique symbol };
37
-
38
- /**
39
- * A place within a particular `Snapshot` that is anchored relative to a specific node in the tree, or relative to the outside of the trait.
40
- * Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.
41
- * @public
42
- */
43
- export interface SnapshotPlace {
44
- readonly sibling?: NodeId;
45
- readonly side: Side;
46
- readonly trait: TraitLocation;
47
- }
48
-
49
- /**
50
- * Defines a place relative to sibling.
51
- * The "outside" of a trait is the `undefined` sibling,
52
- * so After `undefined` is the beginning of the trait, and before `undefined` is the end.
53
- *
54
- * For this purpose, traits look like:
55
- *
56
- * `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`
57
- *
58
- * Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.
59
- * Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.
60
- * This means that `After` `{undefined}` means the same `Place` as before the first node
61
- * and `Before` `{undefined}` means the `Place` after the last Node.
62
- *
63
- * Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):
64
- * the choice of which way to anchor a place only matters when the kept across an edit, and thus evaluated in multiple contexts where the
65
- * two place description may no longer evaluate to the same place.
66
- * @public
67
- */
68
- export enum Side {
69
- Before = 0,
70
- After = 1,
71
- }
72
-
73
- /**
74
- * Specifies the range of nodes from `start` to `end` within a trait within a particular `Snapshot`.
75
- * Valid iff start and end are valid and are withing the same trait.
76
- * @public
77
- */
78
- export interface SnapshotRange {
79
- readonly start: SnapshotPlace;
80
- readonly end: SnapshotPlace;
81
- }
82
-
83
- /**
84
- * An immutable view of a distributed tree.
85
- * @public
86
- */
87
- export class Snapshot {
88
- public readonly root: NodeId;
89
- private readonly forest: Forest;
90
-
91
- /**
92
- * A cache of node's index within their parent trait.
93
- * Used to avoid redundant linear scans of traits.
94
- * Not shared across snapshots; initialized to empty each time a Snapshot is created.
95
- */
96
- private traitIndicesCache?: Map<NodeId, TraitNodeIndex>;
97
-
98
- /**
99
- * Constructs a Snapshot using the supplied tree.
100
- * @param root - the root of the tree to use as the contents of the `Snapshot`
101
- */
102
- public static fromTree(root: ChangeNode, expensiveValidation = false): Snapshot {
103
- function insertNodeRecursive(node: ChangeNode, newSnapshotNodes: Map<NodeId, SnapshotNode>): NodeId {
104
- const { identifier, definition } = node;
105
- const traits: Map<TraitLabel, readonly NodeId[]> = new Map();
106
-
107
- // eslint-disable-next-line no-restricted-syntax
108
- for (const key in node.traits) {
109
- if (Object.prototype.hasOwnProperty.call(node.traits, key)) {
110
- const element = node.traits[key];
111
- if (element.length > 0) {
112
- traits.set(
113
- key as TraitLabel,
114
- element.map((n) => insertNodeRecursive(n, newSnapshotNodes))
115
- );
116
- }
117
- }
118
- }
119
- const snapshotNode: SnapshotNode = { identifier, definition, traits };
120
- copyPropertyIfDefined(node, snapshotNode, 'payload');
121
- assert(
122
- !newSnapshotNodes.has(identifier),
123
- `duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`
124
- );
125
- newSnapshotNodes.set(snapshotNode.identifier, snapshotNode);
126
- return snapshotNode.identifier;
127
- }
128
-
129
- const map = new Map<NodeId, SnapshotNode>();
130
- return new Snapshot(insertNodeRecursive(root, map), Forest.create(expensiveValidation).add(map.values()));
131
- }
132
-
133
- private constructor(root: NodeId, forest: Forest) {
134
- this.root = root;
135
- this.forest = forest;
136
- }
137
-
138
- /** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */
139
- public getChangeNodeTree(): ChangeNode {
140
- return getChangeNodeFromSnapshot(this, this.root);
141
- }
142
-
143
- /**
144
- * Returns the number of nodes in this `Snapshot`
145
- */
146
- public get size(): number {
147
- return this.forest.size;
148
- }
149
-
150
- /**
151
- * @returns true iff the nodeId exists.
152
- */
153
- public hasNode(id: NodeId): boolean {
154
- return this.forest.tryGet(id) !== undefined;
155
- }
156
-
157
- /**
158
- * @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.
159
- */
160
- public getChangeNode(id: NodeId): ChangeNode {
161
- return getChangeNodeFromSnapshot(this, id);
162
- }
163
-
164
- /**
165
- * @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.
166
- */
167
- public getChangeNodes(nodeIds: readonly NodeId[]): ChangeNode[] {
168
- return nodeIds.map((id) => this.getChangeNode(id));
169
- }
170
-
171
- /**
172
- * Asserts the forest is in a consistent state.
173
- */
174
- public assertConsistent(): void {
175
- this.forest.assertConsistent();
176
- }
177
-
178
- /**
179
- * Inserts all nodes in a NodeSequence into the forest.
180
- */
181
- public addNodes(sequence: Iterable<SnapshotNode>): Snapshot {
182
- return new Snapshot(this.root, this.forest.add(sequence));
183
- }
184
-
185
- /**
186
- * Remove all nodes with the given ids from the forest
187
- */
188
- public deleteNodes(nodes: Iterable<NodeId>): Snapshot {
189
- return new Snapshot(this.root, this.forest.delete(nodes, true));
190
- }
191
-
192
- /**
193
- * Parents a set of detached nodes at a specified place.
194
- * @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.
195
- * @param place - the location to insert the nodes.
196
- */
197
- public attachRange(nodesToAttach: readonly NodeId[], place: SnapshotPlace): Snapshot {
198
- const { parent, label } = place.trait;
199
- const index = this.findIndexWithinTrait(place);
200
- return new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));
201
- }
202
-
203
- /**
204
- * Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.
205
- * @param rangeToDetach - the range of nodes to detach
206
- */
207
- public detachRange(rangeToDetach: SnapshotRange): { snapshot: Snapshot; detached: readonly NodeId[] } {
208
- const { start, end } = rangeToDetach;
209
- const { trait: traitLocation } = start;
210
- const { parent, label } = traitLocation;
211
- const startIndex = this.findIndexWithinTrait(start);
212
- const endIndex = this.findIndexWithinTrait(end);
213
- const { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);
214
- return { snapshot: new Snapshot(this.root, forest), detached };
215
- }
216
-
217
- /**
218
- * Sets a node's value. The node must exist in this `Snapshot`.
219
- * @param nodeId - the id of the node
220
- * @param value - the new value
221
- */
222
- public setNodeValue(nodeId: NodeId, value: Payload): Snapshot {
223
- return new Snapshot(this.root, this.forest.setValue(nodeId, value));
224
- }
225
-
226
- /**
227
- * @returns the index just after place (which specifies a location between items).
228
- * Performance note: this is O(siblings in trait).
229
- */
230
- public findIndexWithinTrait(place: SnapshotPlace): PlaceIndex {
231
- if (place.sibling === undefined) {
232
- return this.getIndexOfSide(place.side, place.trait);
233
- }
234
- return getIndex(place.side, this.getIndexInTrait(place.sibling));
235
- }
236
-
237
- /**
238
- * Returns the node associated with `id` in this `Snapshot`.
239
- */
240
- public getSnapshotNode(id: NodeId): SnapshotNode {
241
- return this.forest.get(id);
242
- }
243
-
244
- /**
245
- * Returns the label of the trait that a node is under. Returns undefined if the node is not present or if it is the root node.
246
- */
247
- public getTraitLabel(id: NodeId): TraitLabel | undefined {
248
- return this.forest.tryGetParent(id)?.traitParent;
249
- }
250
-
251
- /**
252
- * Returns the parent of a node. Returns undefined if the node does not exist in the snapshot or if it does not have a parent.
253
- */
254
- public getParentSnapshotNode(id: NodeId): SnapshotNode | undefined {
255
- const parentInfo = this.forest.tryGetParent(id);
256
- if (parentInfo === undefined) {
257
- return undefined;
258
- }
259
- return this.getSnapshotNode(parentInfo.parentId);
260
- }
261
-
262
- /**
263
- * @param node - must have a parent.
264
- */
265
- public getTraitLocation(node: NodeId): TraitLocation {
266
- const parentData = this.forest.getParent(node);
267
- assert(parentData !== undefined, 'node must have parent');
268
- return {
269
- parent: parentData.parentId,
270
- label: parentData.traitParent,
271
- };
272
- }
273
-
274
- /**
275
- * @param node - must have a parent.
276
- * Performance note: this is O(siblings in trait).
277
- */
278
- public getIndexInTrait(node: NodeId): TraitNodeIndex {
279
- if (this.traitIndicesCache === undefined) {
280
- this.traitIndicesCache = new Map();
281
- } else {
282
- const cached = this.traitIndicesCache.get(node);
283
- if (cached !== undefined) {
284
- return cached;
285
- }
286
- }
287
- const parentData = this.forest.getParent(node);
288
- const parent = this.forest.get(parentData.parentId);
289
- const traitParent =
290
- parent.traits.get(parentData.traitParent) ?? fail('invalid parentData: trait parent not found.');
291
- let foundIndex = -1 as TraitNodeIndex;
292
- for (let i = 0; i < traitParent.length; i++) {
293
- const nodeInTrait = traitParent[i];
294
- const index = i as TraitNodeIndex;
295
- this.traitIndicesCache.set(nodeInTrait, index);
296
- if (nodeInTrait === node) {
297
- foundIndex = index;
298
- }
299
- }
300
- return foundIndex !== -1 ? foundIndex : fail('invalidParentData: node not found in specified trait');
301
- }
302
-
303
- /**
304
- * Return a trait given its location
305
- * @param traitLocation - the location of the trait
306
- */
307
- public getTrait(traitLocation: TraitLocation): readonly NodeId[] {
308
- return this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label) ?? [];
309
- }
310
-
311
- private getIndexOfSide(side: Side, traitLocation: TraitLocation): PlaceIndex {
312
- return side === Side.After ? (0 as PlaceIndex) : (this.getTrait(traitLocation).length as PlaceIndex);
313
- }
314
-
315
- /** Compares this snapshot to another for equality. */
316
- public equals(snapshot: Snapshot): boolean {
317
- if (this.root !== snapshot.root) {
318
- return false;
319
- }
320
-
321
- // TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.
322
- return this.forest.equals(snapshot.forest);
323
- }
324
-
325
- private *iterateNodeDescendants(nodeId: NodeId): IterableIterator<SnapshotNode> {
326
- const node = this.getSnapshotNode(nodeId);
327
- yield node;
328
- for (const trait of node.traits.values()) {
329
- for (const childId of trait) {
330
- yield* this.iterateNodeDescendants(childId);
331
- }
332
- }
333
- }
334
-
335
- /**
336
- * Calculate the difference between two `Snapshot`s
337
- * @param snapshot - the other snapshot to compare to this one
338
- * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.
339
- * The snapshots must share a root.
340
- */
341
- public delta(snapshot: Snapshot): Delta<NodeId> {
342
- assert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');
343
- return this.forest.delta(snapshot.forest);
344
- }
345
-
346
- public [Symbol.iterator](): IterableIterator<SnapshotNode> {
347
- return this.iterateNodeDescendants(this.root);
348
- }
349
- }
350
-
351
- function getIndex(side: Side, index: TraitNodeIndex): PlaceIndex {
352
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
353
- return (side + index) as PlaceIndex;
354
- }
355
-
356
- /**
357
- * Contains some redundant information. Use only in computations between edits. Do not store.
358
- * @public
359
- */
360
- export interface NodeInTrait {
361
- readonly trait: TraitLocation;
362
- readonly index: TraitNodeIndex;
363
- }