@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
package/lib/Snapshot.js DELETED
@@ -1,263 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { assert, copyPropertyIfDefined, fail } from './Common';
6
- import { getChangeNodeFromSnapshot } from './SnapshotUtilities';
7
- import { Forest } from './Forest';
8
- /**
9
- * Defines a place relative to sibling.
10
- * The "outside" of a trait is the `undefined` sibling,
11
- * so After `undefined` is the beginning of the trait, and before `undefined` is the end.
12
- *
13
- * For this purpose, traits look like:
14
- *
15
- * `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`
16
- *
17
- * Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.
18
- * Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.
19
- * This means that `After` `{undefined}` means the same `Place` as before the first node
20
- * and `Before` `{undefined}` means the `Place` after the last Node.
21
- *
22
- * Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):
23
- * 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
24
- * two place description may no longer evaluate to the same place.
25
- * @public
26
- */
27
- export var Side;
28
- (function (Side) {
29
- Side[Side["Before"] = 0] = "Before";
30
- Side[Side["After"] = 1] = "After";
31
- })(Side || (Side = {}));
32
- /**
33
- * An immutable view of a distributed tree.
34
- * @public
35
- */
36
- export class Snapshot {
37
- constructor(root, forest) {
38
- this.root = root;
39
- this.forest = forest;
40
- }
41
- /**
42
- * Constructs a Snapshot using the supplied tree.
43
- * @param root - the root of the tree to use as the contents of the `Snapshot`
44
- */
45
- static fromTree(root, expensiveValidation = false) {
46
- function insertNodeRecursive(node, newSnapshotNodes) {
47
- const { identifier, definition } = node;
48
- const traits = new Map();
49
- // eslint-disable-next-line no-restricted-syntax
50
- for (const key in node.traits) {
51
- if (Object.prototype.hasOwnProperty.call(node.traits, key)) {
52
- const element = node.traits[key];
53
- if (element.length > 0) {
54
- traits.set(key, element.map((n) => insertNodeRecursive(n, newSnapshotNodes)));
55
- }
56
- }
57
- }
58
- const snapshotNode = { identifier, definition, traits };
59
- copyPropertyIfDefined(node, snapshotNode, 'payload');
60
- assert(!newSnapshotNodes.has(identifier), `duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`);
61
- newSnapshotNodes.set(snapshotNode.identifier, snapshotNode);
62
- return snapshotNode.identifier;
63
- }
64
- const map = new Map();
65
- return new Snapshot(insertNodeRecursive(root, map), Forest.create(expensiveValidation).add(map.values()));
66
- }
67
- /** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */
68
- getChangeNodeTree() {
69
- return getChangeNodeFromSnapshot(this, this.root);
70
- }
71
- /**
72
- * Returns the number of nodes in this `Snapshot`
73
- */
74
- get size() {
75
- return this.forest.size;
76
- }
77
- /**
78
- * @returns true iff the nodeId exists.
79
- */
80
- hasNode(id) {
81
- return this.forest.tryGet(id) !== undefined;
82
- }
83
- /**
84
- * @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.
85
- */
86
- getChangeNode(id) {
87
- return getChangeNodeFromSnapshot(this, id);
88
- }
89
- /**
90
- * @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.
91
- */
92
- getChangeNodes(nodeIds) {
93
- return nodeIds.map((id) => this.getChangeNode(id));
94
- }
95
- /**
96
- * Asserts the forest is in a consistent state.
97
- */
98
- assertConsistent() {
99
- this.forest.assertConsistent();
100
- }
101
- /**
102
- * Inserts all nodes in a NodeSequence into the forest.
103
- */
104
- addNodes(sequence) {
105
- return new Snapshot(this.root, this.forest.add(sequence));
106
- }
107
- /**
108
- * Remove all nodes with the given ids from the forest
109
- */
110
- deleteNodes(nodes) {
111
- return new Snapshot(this.root, this.forest.delete(nodes, true));
112
- }
113
- /**
114
- * Parents a set of detached nodes at a specified place.
115
- * @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.
116
- * @param place - the location to insert the nodes.
117
- */
118
- attachRange(nodesToAttach, place) {
119
- const { parent, label } = place.trait;
120
- const index = this.findIndexWithinTrait(place);
121
- return new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));
122
- }
123
- /**
124
- * Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.
125
- * @param rangeToDetach - the range of nodes to detach
126
- */
127
- detachRange(rangeToDetach) {
128
- const { start, end } = rangeToDetach;
129
- const { trait: traitLocation } = start;
130
- const { parent, label } = traitLocation;
131
- const startIndex = this.findIndexWithinTrait(start);
132
- const endIndex = this.findIndexWithinTrait(end);
133
- const { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);
134
- return { snapshot: new Snapshot(this.root, forest), detached };
135
- }
136
- /**
137
- * Sets a node's value. The node must exist in this `Snapshot`.
138
- * @param nodeId - the id of the node
139
- * @param value - the new value
140
- */
141
- setNodeValue(nodeId, value) {
142
- return new Snapshot(this.root, this.forest.setValue(nodeId, value));
143
- }
144
- /**
145
- * @returns the index just after place (which specifies a location between items).
146
- * Performance note: this is O(siblings in trait).
147
- */
148
- findIndexWithinTrait(place) {
149
- if (place.sibling === undefined) {
150
- return this.getIndexOfSide(place.side, place.trait);
151
- }
152
- return getIndex(place.side, this.getIndexInTrait(place.sibling));
153
- }
154
- /**
155
- * Returns the node associated with `id` in this `Snapshot`.
156
- */
157
- getSnapshotNode(id) {
158
- return this.forest.get(id);
159
- }
160
- /**
161
- * 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.
162
- */
163
- getTraitLabel(id) {
164
- var _a;
165
- return (_a = this.forest.tryGetParent(id)) === null || _a === void 0 ? void 0 : _a.traitParent;
166
- }
167
- /**
168
- * 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.
169
- */
170
- getParentSnapshotNode(id) {
171
- const parentInfo = this.forest.tryGetParent(id);
172
- if (parentInfo === undefined) {
173
- return undefined;
174
- }
175
- return this.getSnapshotNode(parentInfo.parentId);
176
- }
177
- /**
178
- * @param node - must have a parent.
179
- */
180
- getTraitLocation(node) {
181
- const parentData = this.forest.getParent(node);
182
- assert(parentData !== undefined, 'node must have parent');
183
- return {
184
- parent: parentData.parentId,
185
- label: parentData.traitParent,
186
- };
187
- }
188
- /**
189
- * @param node - must have a parent.
190
- * Performance note: this is O(siblings in trait).
191
- */
192
- getIndexInTrait(node) {
193
- var _a;
194
- if (this.traitIndicesCache === undefined) {
195
- this.traitIndicesCache = new Map();
196
- }
197
- else {
198
- const cached = this.traitIndicesCache.get(node);
199
- if (cached !== undefined) {
200
- return cached;
201
- }
202
- }
203
- const parentData = this.forest.getParent(node);
204
- const parent = this.forest.get(parentData.parentId);
205
- const traitParent = (_a = parent.traits.get(parentData.traitParent)) !== null && _a !== void 0 ? _a : fail('invalid parentData: trait parent not found.');
206
- let foundIndex = -1;
207
- for (let i = 0; i < traitParent.length; i++) {
208
- const nodeInTrait = traitParent[i];
209
- const index = i;
210
- this.traitIndicesCache.set(nodeInTrait, index);
211
- if (nodeInTrait === node) {
212
- foundIndex = index;
213
- }
214
- }
215
- return foundIndex !== -1 ? foundIndex : fail('invalidParentData: node not found in specified trait');
216
- }
217
- /**
218
- * Return a trait given its location
219
- * @param traitLocation - the location of the trait
220
- */
221
- getTrait(traitLocation) {
222
- var _a;
223
- return (_a = this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label)) !== null && _a !== void 0 ? _a : [];
224
- }
225
- getIndexOfSide(side, traitLocation) {
226
- return side === Side.After ? 0 : this.getTrait(traitLocation).length;
227
- }
228
- /** Compares this snapshot to another for equality. */
229
- equals(snapshot) {
230
- if (this.root !== snapshot.root) {
231
- return false;
232
- }
233
- // TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.
234
- return this.forest.equals(snapshot.forest);
235
- }
236
- *iterateNodeDescendants(nodeId) {
237
- const node = this.getSnapshotNode(nodeId);
238
- yield node;
239
- for (const trait of node.traits.values()) {
240
- for (const childId of trait) {
241
- yield* this.iterateNodeDescendants(childId);
242
- }
243
- }
244
- }
245
- /**
246
- * Calculate the difference between two `Snapshot`s
247
- * @param snapshot - the other snapshot to compare to this one
248
- * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.
249
- * The snapshots must share a root.
250
- */
251
- delta(snapshot) {
252
- assert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');
253
- return this.forest.delta(snapshot.forest);
254
- }
255
- [Symbol.iterator]() {
256
- return this.iterateNodeDescendants(this.root);
257
- }
258
- }
259
- function getIndex(side, index) {
260
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
261
- return (side + index);
262
- }
263
- //# sourceMappingURL=Snapshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Snapshot.js","sourceRoot":"","sources":["../src/Snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAS,MAAM,EAAE,MAAM,UAAU,CAAC;AAwCzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAN,IAAY,IAGX;AAHD,WAAY,IAAI;IACf,mCAAU,CAAA;IACV,iCAAS,CAAA;AACV,CAAC,EAHW,IAAI,KAAJ,IAAI,QAGf;AAYD;;;GAGG;AACH,MAAM,OAAO,QAAQ;IA8CpB,YAAoB,IAAY,EAAE,MAAc;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAtCD;;;OAGG;IACI,MAAM,CAAC,QAAQ,CAAC,IAAgB,EAAE,mBAAmB,GAAG,KAAK;QACnE,SAAS,mBAAmB,CAAC,IAAgB,EAAE,gBAA2C;YACzF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;YACxC,MAAM,MAAM,GAAuC,IAAI,GAAG,EAAE,CAAC;YAE7D,gDAAgD;YAChD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;oBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACvB,MAAM,CAAC,GAAG,CACT,GAAiB,EACjB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAC5D,CAAC;qBACF;iBACD;aACD;YACD,MAAM,YAAY,GAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YACtE,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,CACL,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EACjC,sDAAsD,UAAU,iBAAiB,UAAU,EAAE,CAC7F,CAAC;YACF,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC5D,OAAO,YAAY,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC5C,OAAO,IAAI,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC;IAOD,uGAAuG;IAChG,iBAAiB;QACvB,OAAO,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,EAAU;QAC9B,OAAO,yBAAyB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,OAA0B;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,gBAAgB;QACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,QAAgC;QAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,KAAuB;QACzC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,aAAgC,EAAE,KAAoB;QACxE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IACxG,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,aAA4B;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;QACrC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpG,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAc,EAAE,KAAc;QACjD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,KAAoB;QAC/C,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;SACpD;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,EAAU;;QAC9B,aAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,0CAAE,WAAW,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,EAAU;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,UAAU,KAAK,SAAS,EAAE;YAC7B,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,IAAY;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC1D,OAAO;YACN,MAAM,EAAE,UAAU,CAAC,QAAQ;YAC3B,KAAK,EAAE,UAAU,CAAC,WAAW;SAC7B,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,IAAY;;QAClC,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;SACnC;aAAM;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS,EAAE;gBACzB,OAAO,MAAM,CAAC;aACd;SACD;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,SAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,mCAAI,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAClG,IAAI,UAAU,GAAG,CAAC,CAAmB,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,CAAmB,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,WAAW,KAAK,IAAI,EAAE;gBACzB,UAAU,GAAG,KAAK,CAAC;aACnB;SACD;QACD,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtG,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,aAA4B;;QAC3C,aAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;IACzF,CAAC;IAEO,cAAc,CAAC,IAAU,EAAE,aAA4B;QAC9D,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAgB,CAAC,CAAC,CAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAqB,CAAC;IACtG,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,QAAkB;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;YAChC,OAAO,KAAK,CAAC;SACb;QAED,+EAA+E;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,CAAC,sBAAsB,CAAC,MAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC;QACX,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBAC5B,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;aAC5C;SACD;IACF,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,QAAkB;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,kEAAkE,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACD;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAqB;IAClD,qEAAqE;IACrE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAe,CAAC;AACrC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, copyPropertyIfDefined, fail } from './Common';\nimport { NodeId, TraitLabel } from './Identifiers';\nimport { getChangeNodeFromSnapshot } from './SnapshotUtilities';\nimport { Delta, Forest } from './Forest';\nimport { ChangeNode, NodeData, Payload, TraitLocation } from './generic';\n\n/**\n * An immutable view of a distributed tree node.\n * @public\n */\nexport interface SnapshotNode extends NodeData {\n\treadonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;\n}\n\n/**\n * Index of a place within a trait.\n * 0 = before all nodes,\n * 1 = after first node,\n * etc.\n * @public\n */\nexport type PlaceIndex = number & { readonly PlaceIndex: unique symbol };\n\n/**\n * Index of a node within a trait.\n * 0 = first node,\n * 1 = second node,\n * etc.\n * @public\n */\nexport type TraitNodeIndex = number & { readonly TraitNodeIndex: unique symbol };\n\n/**\n * 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.\n * Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.\n * @public\n */\nexport interface SnapshotPlace {\n\treadonly sibling?: NodeId;\n\treadonly side: Side;\n\treadonly trait: TraitLocation;\n}\n\n/**\n * Defines a place relative to sibling.\n * The \"outside\" of a trait is the `undefined` sibling,\n * so After `undefined` is the beginning of the trait, and before `undefined` is the end.\n *\n * For this purpose, traits look like:\n *\n * `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`\n *\n * Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.\n * Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.\n * This means that `After` `{undefined}` means the same `Place` as before the first node\n * and `Before` `{undefined}` means the `Place` after the last Node.\n *\n * Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):\n * 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\n * two place description may no longer evaluate to the same place.\n * @public\n */\nexport enum Side {\n\tBefore = 0,\n\tAfter = 1,\n}\n\n/**\n * Specifies the range of nodes from `start` to `end` within a trait within a particular `Snapshot`.\n * Valid iff start and end are valid and are withing the same trait.\n * @public\n */\nexport interface SnapshotRange {\n\treadonly start: SnapshotPlace;\n\treadonly end: SnapshotPlace;\n}\n\n/**\n * An immutable view of a distributed tree.\n * @public\n */\nexport class Snapshot {\n\tpublic readonly root: NodeId;\n\tprivate readonly forest: Forest;\n\n\t/**\n\t * A cache of node's index within their parent trait.\n\t * Used to avoid redundant linear scans of traits.\n\t * Not shared across snapshots; initialized to empty each time a Snapshot is created.\n\t */\n\tprivate traitIndicesCache?: Map<NodeId, TraitNodeIndex>;\n\n\t/**\n\t * Constructs a Snapshot using the supplied tree.\n\t * @param root - the root of the tree to use as the contents of the `Snapshot`\n\t */\n\tpublic static fromTree(root: ChangeNode, expensiveValidation = false): Snapshot {\n\t\tfunction insertNodeRecursive(node: ChangeNode, newSnapshotNodes: Map<NodeId, SnapshotNode>): NodeId {\n\t\t\tconst { identifier, definition } = node;\n\t\t\tconst traits: Map<TraitLabel, readonly NodeId[]> = new Map();\n\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tfor (const key in node.traits) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(node.traits, key)) {\n\t\t\t\t\tconst element = node.traits[key];\n\t\t\t\t\tif (element.length > 0) {\n\t\t\t\t\t\ttraits.set(\n\t\t\t\t\t\t\tkey as TraitLabel,\n\t\t\t\t\t\t\telement.map((n) => insertNodeRecursive(n, newSnapshotNodes))\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst snapshotNode: SnapshotNode = { identifier, definition, traits };\n\t\t\tcopyPropertyIfDefined(node, snapshotNode, 'payload');\n\t\t\tassert(\n\t\t\t\t!newSnapshotNodes.has(identifier),\n\t\t\t\t`duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`\n\t\t\t);\n\t\t\tnewSnapshotNodes.set(snapshotNode.identifier, snapshotNode);\n\t\t\treturn snapshotNode.identifier;\n\t\t}\n\n\t\tconst map = new Map<NodeId, SnapshotNode>();\n\t\treturn new Snapshot(insertNodeRecursive(root, map), Forest.create(expensiveValidation).add(map.values()));\n\t}\n\n\tprivate constructor(root: NodeId, forest: Forest) {\n\t\tthis.root = root;\n\t\tthis.forest = forest;\n\t}\n\n\t/** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */\n\tpublic getChangeNodeTree(): ChangeNode {\n\t\treturn getChangeNodeFromSnapshot(this, this.root);\n\t}\n\n\t/**\n\t * Returns the number of nodes in this `Snapshot`\n\t */\n\tpublic get size(): number {\n\t\treturn this.forest.size;\n\t}\n\n\t/**\n\t * @returns true iff the nodeId exists.\n\t */\n\tpublic hasNode(id: NodeId): boolean {\n\t\treturn this.forest.tryGet(id) !== undefined;\n\t}\n\n\t/**\n\t * @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.\n\t */\n\tpublic getChangeNode(id: NodeId): ChangeNode {\n\t\treturn getChangeNodeFromSnapshot(this, id);\n\t}\n\n\t/**\n\t * @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.\n\t */\n\tpublic getChangeNodes(nodeIds: readonly NodeId[]): ChangeNode[] {\n\t\treturn nodeIds.map((id) => this.getChangeNode(id));\n\t}\n\n\t/**\n\t * Asserts the forest is in a consistent state.\n\t */\n\tpublic assertConsistent(): void {\n\t\tthis.forest.assertConsistent();\n\t}\n\n\t/**\n\t * Inserts all nodes in a NodeSequence into the forest.\n\t */\n\tpublic addNodes(sequence: Iterable<SnapshotNode>): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.add(sequence));\n\t}\n\n\t/**\n\t * Remove all nodes with the given ids from the forest\n\t */\n\tpublic deleteNodes(nodes: Iterable<NodeId>): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.delete(nodes, true));\n\t}\n\n\t/**\n\t * Parents a set of detached nodes at a specified place.\n\t * @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.\n\t * @param place - the location to insert the nodes.\n\t */\n\tpublic attachRange(nodesToAttach: readonly NodeId[], place: SnapshotPlace): Snapshot {\n\t\tconst { parent, label } = place.trait;\n\t\tconst index = this.findIndexWithinTrait(place);\n\t\treturn new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));\n\t}\n\n\t/**\n\t * Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.\n\t * @param rangeToDetach - the range of nodes to detach\n\t */\n\tpublic detachRange(rangeToDetach: SnapshotRange): { snapshot: Snapshot; detached: readonly NodeId[] } {\n\t\tconst { start, end } = rangeToDetach;\n\t\tconst { trait: traitLocation } = start;\n\t\tconst { parent, label } = traitLocation;\n\t\tconst startIndex = this.findIndexWithinTrait(start);\n\t\tconst endIndex = this.findIndexWithinTrait(end);\n\t\tconst { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);\n\t\treturn { snapshot: new Snapshot(this.root, forest), detached };\n\t}\n\n\t/**\n\t * Sets a node's value. The node must exist in this `Snapshot`.\n\t * @param nodeId - the id of the node\n\t * @param value - the new value\n\t */\n\tpublic setNodeValue(nodeId: NodeId, value: Payload): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.setValue(nodeId, value));\n\t}\n\n\t/**\n\t * @returns the index just after place (which specifies a location between items).\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic findIndexWithinTrait(place: SnapshotPlace): PlaceIndex {\n\t\tif (place.sibling === undefined) {\n\t\t\treturn this.getIndexOfSide(place.side, place.trait);\n\t\t}\n\t\treturn getIndex(place.side, this.getIndexInTrait(place.sibling));\n\t}\n\n\t/**\n\t * Returns the node associated with `id` in this `Snapshot`.\n\t */\n\tpublic getSnapshotNode(id: NodeId): SnapshotNode {\n\t\treturn this.forest.get(id);\n\t}\n\n\t/**\n\t * 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.\n\t */\n\tpublic getTraitLabel(id: NodeId): TraitLabel | undefined {\n\t\treturn this.forest.tryGetParent(id)?.traitParent;\n\t}\n\n\t/**\n\t * 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.\n\t */\n\tpublic getParentSnapshotNode(id: NodeId): SnapshotNode | undefined {\n\t\tconst parentInfo = this.forest.tryGetParent(id);\n\t\tif (parentInfo === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getSnapshotNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @param node - must have a parent.\n\t */\n\tpublic getTraitLocation(node: NodeId): TraitLocation {\n\t\tconst parentData = this.forest.getParent(node);\n\t\tassert(parentData !== undefined, 'node must have parent');\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @param node - must have a parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic getIndexInTrait(node: NodeId): TraitNodeIndex {\n\t\tif (this.traitIndicesCache === undefined) {\n\t\t\tthis.traitIndicesCache = new Map();\n\t\t} else {\n\t\t\tconst cached = this.traitIndicesCache.get(node);\n\t\t\tif (cached !== undefined) {\n\t\t\t\treturn cached;\n\t\t\t}\n\t\t}\n\t\tconst parentData = this.forest.getParent(node);\n\t\tconst parent = this.forest.get(parentData.parentId);\n\t\tconst traitParent =\n\t\t\tparent.traits.get(parentData.traitParent) ?? fail('invalid parentData: trait parent not found.');\n\t\tlet foundIndex = -1 as TraitNodeIndex;\n\t\tfor (let i = 0; i < traitParent.length; i++) {\n\t\t\tconst nodeInTrait = traitParent[i];\n\t\t\tconst index = i as TraitNodeIndex;\n\t\t\tthis.traitIndicesCache.set(nodeInTrait, index);\n\t\t\tif (nodeInTrait === node) {\n\t\t\t\tfoundIndex = index;\n\t\t\t}\n\t\t}\n\t\treturn foundIndex !== -1 ? foundIndex : fail('invalidParentData: node not found in specified trait');\n\t}\n\n\t/**\n\t * Return a trait given its location\n\t * @param traitLocation - the location of the trait\n\t */\n\tpublic getTrait(traitLocation: TraitLocation): readonly NodeId[] {\n\t\treturn this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label) ?? [];\n\t}\n\n\tprivate getIndexOfSide(side: Side, traitLocation: TraitLocation): PlaceIndex {\n\t\treturn side === Side.After ? (0 as PlaceIndex) : (this.getTrait(traitLocation).length as PlaceIndex);\n\t}\n\n\t/** Compares this snapshot to another for equality. */\n\tpublic equals(snapshot: Snapshot): boolean {\n\t\tif (this.root !== snapshot.root) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.\n\t\treturn this.forest.equals(snapshot.forest);\n\t}\n\n\tprivate *iterateNodeDescendants(nodeId: NodeId): IterableIterator<SnapshotNode> {\n\t\tconst node = this.getSnapshotNode(nodeId);\n\t\tyield node;\n\t\tfor (const trait of node.traits.values()) {\n\t\t\tfor (const childId of trait) {\n\t\t\t\tyield* this.iterateNodeDescendants(childId);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculate the difference between two `Snapshot`s\n\t * @param snapshot - the other snapshot to compare to this one\n\t * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.\n\t * The snapshots must share a root.\n\t */\n\tpublic delta(snapshot: Snapshot): Delta<NodeId> {\n\t\tassert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');\n\t\treturn this.forest.delta(snapshot.forest);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<SnapshotNode> {\n\t\treturn this.iterateNodeDescendants(this.root);\n\t}\n}\n\nfunction getIndex(side: Side, index: TraitNodeIndex): PlaceIndex {\n\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\treturn (side + index) as PlaceIndex;\n}\n\n/**\n * Contains some redundant information. Use only in computations between edits. Do not store.\n * @public\n */\nexport interface NodeInTrait {\n\treadonly trait: TraitLocation;\n\treadonly index: TraitNodeIndex;\n}\n"]}
@@ -1,29 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { NodeId } from './Identifiers';
6
- import { ChangeNode } from './generic';
7
- import { Snapshot } from './Snapshot';
8
- /**
9
- * Converts a node in a snapshot to an equivalent `ChangeNode`.
10
- * @param snapshot - the snapshot in which the node exists
11
- * @param nodeId - the id of the node in the snapshot
12
- * @param lazyTraits - whether or not traits should be populated lazily.
13
- * If lazy, the subtrees under each trait will not be read until the trait is first accessed.
14
- */
15
- export declare function getChangeNodeFromSnapshot(snapshot: Snapshot, nodeId: NodeId, lazyTraits?: boolean): ChangeNode;
16
- /**
17
- * Compares finite numbers to form a strict partial ordering.
18
- *
19
- * Handles +/-0 like Map: -0 is equal to +0.
20
- *
21
- * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
22
- */
23
- export declare function compareFiniteNumbers(a: number, b: number): number;
24
- /**
25
- * Compares strings lexically to form a strict partial ordering.
26
- * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
27
- */
28
- export declare function compareStrings(a: string, b: string): number;
29
- //# sourceMappingURL=SnapshotUtilities.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SnapshotUtilities.d.ts","sourceRoot":"","sources":["../src/SnapshotUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAY,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,UAAU,CAqB5G;AAgCD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -1,67 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { copyPropertyIfDefined, memoizeGetter } from './Common';
6
- /**
7
- * Converts a node in a snapshot to an equivalent `ChangeNode`.
8
- * @param snapshot - the snapshot in which the node exists
9
- * @param nodeId - the id of the node in the snapshot
10
- * @param lazyTraits - whether or not traits should be populated lazily.
11
- * If lazy, the subtrees under each trait will not be read until the trait is first accessed.
12
- */
13
- export function getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits = false) {
14
- const node = snapshot.getSnapshotNode(nodeId);
15
- const nodeData = {
16
- definition: node.definition,
17
- identifier: node.identifier,
18
- };
19
- copyPropertyIfDefined(node, nodeData, 'payload');
20
- if (lazyTraits) {
21
- return Object.assign(Object.assign({}, nodeData), { get traits() {
22
- return memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));
23
- } });
24
- }
25
- return Object.assign(Object.assign({}, nodeData), { traits: makeTraits(snapshot, node.traits, lazyTraits) });
26
- }
27
- /** Given the traits of a SnapshotNode, return the corresponding traits on a Node */
28
- function makeTraits(snapshot, traits, lazyTraits = false) {
29
- const traitMap = {};
30
- for (const [label, trait] of traits.entries()) {
31
- if (lazyTraits) {
32
- Object.defineProperty(traitMap, label, {
33
- get() {
34
- const treeNodeTrait = trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits));
35
- return memoizeGetter(this, label, treeNodeTrait);
36
- },
37
- configurable: true,
38
- enumerable: true,
39
- });
40
- }
41
- else {
42
- Object.defineProperty(traitMap, label, {
43
- value: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),
44
- enumerable: true,
45
- });
46
- }
47
- }
48
- return traitMap;
49
- }
50
- /**
51
- * Compares finite numbers to form a strict partial ordering.
52
- *
53
- * Handles +/-0 like Map: -0 is equal to +0.
54
- *
55
- * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
56
- */
57
- export function compareFiniteNumbers(a, b) {
58
- return a - b;
59
- }
60
- /**
61
- * Compares strings lexically to form a strict partial ordering.
62
- * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
63
- */
64
- export function compareStrings(a, b) {
65
- return a > b ? 1 : a === b ? 0 : -1;
66
- }
67
- //# sourceMappingURL=SnapshotUtilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SnapshotUtilities.js","sourceRoot":"","sources":["../src/SnapshotUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKhE;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAkB,EAAE,MAAc,EAAE,UAAU,GAAG,KAAK;IAC/F,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAC;IACF,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,UAAU,EAAE;QACf,uCACI,QAAQ,KACX,IAAI,MAAM;gBACT,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrF,CAAC,IACA;KACF;IAED,uCACI,QAAQ,KACX,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IACpD;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,UAAU,CAClB,QAAkB,EAClB,MAAkD,EAClD,UAAU,GAAG,KAAK;IAElB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;QAC9C,IAAI,UAAU,EAAE;YACf,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACtC,GAAG;oBACF,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CACvD,CAAC;oBACF,OAAO,aAAa,CAAC,IAA4B,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBAC1E,CAAC;gBACD,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aAChB,CAAC,CAAC;SACH;aAAM;YACN,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACtC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBACrF,UAAU,EAAE,IAAI;aAChB,CAAC,CAAC;SACH;KACD;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAS,EAAE,CAAS;IACxD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { copyPropertyIfDefined, memoizeGetter } from './Common';\nimport { NodeId, TraitLabel } from './Identifiers';\nimport { ChangeNode, TraitMap } from './generic';\nimport { Snapshot } from './Snapshot';\n\n/**\n * Converts a node in a snapshot to an equivalent `ChangeNode`.\n * @param snapshot - the snapshot in which the node exists\n * @param nodeId - the id of the node in the snapshot\n * @param lazyTraits - whether or not traits should be populated lazily.\n * If lazy, the subtrees under each trait will not be read until the trait is first accessed.\n */\nexport function getChangeNodeFromSnapshot(snapshot: Snapshot, nodeId: NodeId, lazyTraits = false): ChangeNode {\n\tconst node = snapshot.getSnapshotNode(nodeId);\n\tconst nodeData = {\n\t\tdefinition: node.definition,\n\t\tidentifier: node.identifier,\n\t};\n\tcopyPropertyIfDefined(node, nodeData, 'payload');\n\n\tif (lazyTraits) {\n\t\treturn {\n\t\t\t...nodeData,\n\t\t\tget traits() {\n\t\t\t\treturn memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\t...nodeData,\n\t\ttraits: makeTraits(snapshot, node.traits, lazyTraits),\n\t};\n}\n\n/** Given the traits of a SnapshotNode, return the corresponding traits on a Node */\nfunction makeTraits(\n\tsnapshot: Snapshot,\n\ttraits: ReadonlyMap<TraitLabel, readonly NodeId[]>,\n\tlazyTraits = false\n): TraitMap<ChangeNode> {\n\tconst traitMap = {};\n\tfor (const [label, trait] of traits.entries()) {\n\t\tif (lazyTraits) {\n\t\t\tObject.defineProperty(traitMap, label, {\n\t\t\t\tget() {\n\t\t\t\t\tconst treeNodeTrait = trait.map((nodeId) =>\n\t\t\t\t\t\tgetChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)\n\t\t\t\t\t);\n\t\t\t\t\treturn memoizeGetter(this as TraitMap<ChangeNode>, label, treeNodeTrait);\n\t\t\t\t},\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t} else {\n\t\t\tObject.defineProperty(traitMap, label, {\n\t\t\t\tvalue: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn traitMap;\n}\n\n/**\n * Compares finite numbers to form a strict partial ordering.\n *\n * Handles +/-0 like Map: -0 is equal to +0.\n *\n * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.\n */\nexport function compareFiniteNumbers(a: number, b: number): number {\n\treturn a - b;\n}\n\n/**\n * Compares strings lexically to form a strict partial ordering.\n * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.\n */\nexport function compareStrings(a: string, b: string): number {\n\treturn a > b ? 1 : a === b ? 0 : -1;\n}\n"]}
@@ -1,144 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { Snapshot } from '../Snapshot';
6
- import { Change, StablePlace, StableRange } from '../default-edits';
7
- import { EditValidationResult } from '../Checkout';
8
- import { NodeId } from '../Identifiers';
9
- import { ReconciliationPath } from '../ReconciliationPath';
10
- import { AnchoredChange, NodeAnchor, PlaceAnchor, RangeAnchor, RelativePlaceAnchor } from './PersistedTypes';
11
- /**
12
- * A change and the snapshots that precede and succeed it.
13
- */
14
- export interface EvaluatedChange<TChange> {
15
- readonly change: TChange;
16
- /**
17
- * The snapshot before the change was applied.
18
- */
19
- readonly before: Snapshot;
20
- /**
21
- * The snapshot after the change was applied.
22
- */
23
- readonly after: Snapshot;
24
- }
25
- /**
26
- * Object that includes a function for resolving node anchors.
27
- */
28
- export interface HasNodeResolver {
29
- nodeResolver: (node: NodeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => NodeId | undefined;
30
- }
31
- /**
32
- * Object that includes a function for resolving place anchors.
33
- */
34
- export interface HasPlaceResolver {
35
- placeResolver: (range: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => StablePlace | undefined;
36
- }
37
- /**
38
- * Object that includes a function for resolving range anchors.
39
- */
40
- export interface HasRangeResolver {
41
- rangeResolver: (range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => StableRange | undefined;
42
- }
43
- /**
44
- * Object that includes a function for validating places.
45
- */
46
- export interface HasPlaceValidator {
47
- placeValidator: (snapshot: Snapshot, place: StablePlace) => EditValidationResult;
48
- }
49
- /**
50
- * Reconciliates a given `change` in the face of concurrent edits described in a `ReconciliationPath`.
51
- * @param change - The anchor to reconciliate.
52
- * @param before - The state to which the `change` would be applied to.
53
- * @param path - The reconciliation path for the `change`.
54
- * @returns A `Change` that satisfies the same semantics of the given `change` but whose tree locations are valid in the `before` snapshot.
55
- * Undefined if no such change can be produced.
56
- * @internal
57
- */
58
- export declare function resolveChangeAnchors(change: AnchoredChange, before: Snapshot, path: ReconciliationPath<AnchoredChange>): Change | undefined;
59
- /**
60
- * For testing purposes only.
61
- * @internal
62
- */
63
- export declare function resolveChangeAnchors(change: AnchoredChange, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasNodeResolver & HasPlaceResolver & HasRangeResolver): Change | undefined;
64
- /**
65
- * Resolves a given `node` anchor in the face of a `ReconciliationPath`.
66
- * @param node - The anchor to resolve.
67
- * @param before - The state to which the change that the `node` anchor should be applied to.
68
- * @param path - The reconciliation path for the change that the `node` is part of.
69
- * @returns A matching `NodeId` that is valid in the snapshot at the end of the `path`. Undefined if no such node exists.
70
- * @internal
71
- */
72
- export declare function resolveNodeAnchor(node: NodeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): NodeId | undefined;
73
- /**
74
- * Resolves a given `range` anchor in the face of a `ReconciliationPath`.
75
- * @param range - The anchor to resolve.
76
- * @param before - The state to which the change that the `range` anchor should be applied to.
77
- * @param path - The reconciliation path for the change that the `range` is part of.
78
- * @returns A matching `StableRange` that is valid in the snapshot at the end of the `path`. Undefined if no such valid range exists.
79
- * @internal
80
- */
81
- export declare function resolveRangeAnchor(range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): StableRange | undefined;
82
- /**
83
- * For testing purposes only.
84
- * @internal
85
- */
86
- export declare function resolveRangeAnchor(range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceResolver & {
87
- rangeValidator: (snapshot: Snapshot, range: StableRange) => EditValidationResult;
88
- }): StableRange | undefined;
89
- /**
90
- * Resolves a given `place` anchor in the face of a `ReconciliationPath`.
91
- * @param place - The anchor to resolve.
92
- * @param before - The state to which the change that the `place` anchor should be applied to.
93
- * @param path - The reconciliation path for the change that the `place` is part of.
94
- * @returns A matching `StablePlace` that is valid in the snapshot at the end of the `path`. Undefined if no such valid place exists.
95
- * @internal
96
- */
97
- export declare function resolvePlaceAnchor(place: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): StablePlace | undefined;
98
- /**
99
- * For testing purposes only.
100
- * @internal
101
- */
102
- export declare function resolvePlaceAnchor(place: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceValidator & {
103
- placeUpdatorForPath: (place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>) => PlaceAnchor | undefined;
104
- }): StablePlace | undefined;
105
- /**
106
- * Updates a given `place` anchor in the face of a `ReconciliationPath` that violates its semantics.
107
- * @param place - The anchor to update. Assumed to be invalid after the latest change.
108
- * @param path - The sequence of edits that violates the anchor's semantics.
109
- * @returns A place anchor whose semantics are inline with the given `place`, and valid after the most recent change that made it invalid.
110
- * Undefined if those semantics cannot be preserved.
111
- * @internal
112
- */
113
- export declare function updateRelativePlaceAnchorForPath(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>): PlaceAnchor | undefined;
114
- /**
115
- * For testing purposes only.
116
- * @internal
117
- */
118
- export declare function updateRelativePlaceAnchorForPath(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>, dependencies?: {
119
- lastOffendingChangeFinder: (place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>) => EvaluatedChange<AnchoredChange> | undefined;
120
- placeUpdatorForChange: (place: RelativePlaceAnchor, change: EvaluatedChange<AnchoredChange>) => PlaceAnchor | undefined;
121
- }): PlaceAnchor | undefined;
122
- /**
123
- * Finds the latest change in the given `path` that last made the given `place` invalid.
124
- * @param place - A anchor that is invalid in the last snapshot on the path.
125
- * @param path - The sequence of edits that violates the anchor's semantics.
126
- * @returns The change that last made the given `place` invalid and the snapshots before and after it. Undefined if `place` was never valid.
127
- * @internal
128
- */
129
- export declare function findLastOffendingChange(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>): EvaluatedChange<AnchoredChange> | undefined;
130
- /**
131
- * For testing purposes only.
132
- * @internal
133
- */
134
- export declare function findLastOffendingChange(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceValidator): EvaluatedChange<AnchoredChange> | undefined;
135
- /**
136
- * Updates a given `place` anchor in the face of a change that violates its semantics.
137
- * @param place - The anchor to update.
138
- * @param change - The change that violates the anchor's semantics.
139
- * @returns A place anchor that is valid after the given `change` and in line with the original `place`'s semantics.
140
- * Undefined if those semantics cannot be preserved.
141
- * @internal
142
- */
143
- export declare function updateRelativePlaceAnchorForChange(place: RelativePlaceAnchor, change: EvaluatedChange<AnchoredChange>): PlaceAnchor | undefined;
144
- //# sourceMappingURL=AnchorResolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnchorResolution.d.ts","sourceRoot":"","sources":["../../src/anchored-edits/AnchorResolution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACN,MAAM,EAGN,WAAW,EACX,WAAW,EAGX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACN,cAAc,EACd,UAAU,EACV,WAAW,EAEX,WAAW,EACX,mBAAmB,EACnB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CACnH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,aAAa,EAAE,CACd,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,KACpC,WAAW,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,aAAa,EAAE,CACd,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,KACpC,WAAW,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,KAAK,oBAAoB,CAAC;CACjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,MAAM,GAAG,SAAS,CAAC;AAEtB;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,EACxC,YAAY,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAClE,MAAM,GAAG,SAAS,CAAC;AAoCtB;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,WAAW,GAAG,SAAS,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,EACxC,YAAY,CAAC,EAAE,gBAAgB,GAAG;IACjC,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,KAAK,oBAAoB,CAAC;CACjF,GACC,WAAW,GAAG,SAAS,CAAC;AA8B3B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,WAAW,GAAG,SAAS,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,EACxC,YAAY,CAAC,EAAE,iBAAiB,GAAG;IAClC,mBAAmB,EAAE,CACpB,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,KACpC,WAAW,GAAG,SAAS,CAAC;CAC7B,GACC,WAAW,GAAG,SAAS,CAAC;AAsC3B;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,WAAW,GAAG,SAAS,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,EACxC,YAAY,CAAC,EAAE;IACd,yBAAyB,EAAE,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,KACpC,eAAe,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IACjD,qBAAqB,EAAE,CACtB,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,KACnC,WAAW,GAAG,SAAS,CAAC;CAC7B,GACC,WAAW,GAAG,SAAS,CAAC;AA8B3B;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,GACtC,eAAe,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC,EACxC,YAAY,CAAC,EAAE,iBAAiB,GAC9B,eAAe,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;AAoC/C;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CACjD,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,GACrC,WAAW,GAAG,SAAS,CAAC"}