@fluid-experimental/tree 0.58.2001 → 0.59.2000-61729

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (817) hide show
  1. package/README.md +159 -46
  2. package/dist/ChangeCompression.d.ts +39 -0
  3. package/dist/ChangeCompression.d.ts.map +1 -0
  4. package/dist/ChangeCompression.js +117 -0
  5. package/dist/ChangeCompression.js.map +1 -0
  6. package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -105
  7. package/dist/ChangeTypes.d.ts.map +1 -0
  8. package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
  9. package/dist/ChangeTypes.js.map +1 -0
  10. package/dist/Checkout.d.ts +39 -27
  11. package/dist/Checkout.d.ts.map +1 -1
  12. package/dist/Checkout.js +61 -32
  13. package/dist/Checkout.js.map +1 -1
  14. package/dist/Common.d.ts +175 -38
  15. package/dist/Common.d.ts.map +1 -1
  16. package/dist/Common.js +240 -103
  17. package/dist/Common.js.map +1 -1
  18. package/dist/EagerCheckout.d.ts +24 -0
  19. package/dist/EagerCheckout.d.ts.map +1 -0
  20. package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
  21. package/dist/EagerCheckout.js.map +1 -0
  22. package/dist/EditLog.d.ts +77 -63
  23. package/dist/EditLog.d.ts.map +1 -1
  24. package/dist/EditLog.js +85 -48
  25. package/dist/EditLog.js.map +1 -1
  26. package/dist/EditUtilities.d.ts +168 -0
  27. package/dist/EditUtilities.d.ts.map +1 -0
  28. package/dist/EditUtilities.js +373 -0
  29. package/dist/EditUtilities.js.map +1 -0
  30. package/dist/EventTypes.d.ts +73 -0
  31. package/dist/EventTypes.d.ts.map +1 -0
  32. package/dist/EventTypes.js +78 -0
  33. package/dist/EventTypes.js.map +1 -0
  34. package/dist/Forest.d.ts +29 -7
  35. package/dist/Forest.d.ts.map +1 -1
  36. package/dist/Forest.js +60 -36
  37. package/dist/Forest.js.map +1 -1
  38. package/dist/HistoryEditFactory.d.ts +20 -0
  39. package/dist/HistoryEditFactory.d.ts.map +1 -0
  40. package/dist/HistoryEditFactory.js +226 -0
  41. package/dist/HistoryEditFactory.js.map +1 -0
  42. package/dist/IdConversion.d.ts +12 -0
  43. package/dist/IdConversion.d.ts.map +1 -0
  44. package/dist/IdConversion.js +98 -0
  45. package/dist/IdConversion.js.map +1 -0
  46. package/dist/Identifiers.d.ts +89 -2
  47. package/dist/Identifiers.d.ts.map +1 -1
  48. package/dist/Identifiers.js +10 -0
  49. package/dist/Identifiers.js.map +1 -1
  50. package/dist/InitialTree.d.ts +2 -2
  51. package/dist/InitialTree.d.ts.map +1 -1
  52. package/dist/InitialTree.js +2 -1
  53. package/dist/InitialTree.js.map +1 -1
  54. package/dist/LazyCheckout.d.ts +28 -0
  55. package/dist/LazyCheckout.d.ts.map +1 -0
  56. package/dist/LazyCheckout.js +44 -0
  57. package/dist/LazyCheckout.js.map +1 -0
  58. package/dist/LogViewer.d.ts +129 -85
  59. package/dist/LogViewer.d.ts.map +1 -1
  60. package/dist/LogViewer.js +111 -85
  61. package/dist/LogViewer.js.map +1 -1
  62. package/dist/MergeHealth.d.ts +221 -0
  63. package/dist/MergeHealth.d.ts.map +1 -0
  64. package/dist/MergeHealth.js +263 -0
  65. package/dist/MergeHealth.js.map +1 -0
  66. package/dist/NodeIdUtilities.d.ts +105 -0
  67. package/dist/NodeIdUtilities.d.ts.map +1 -0
  68. package/dist/NodeIdUtilities.js +60 -0
  69. package/dist/NodeIdUtilities.js.map +1 -0
  70. package/dist/PayloadUtilities.d.ts +42 -0
  71. package/dist/PayloadUtilities.d.ts.map +1 -0
  72. package/dist/PayloadUtilities.js +114 -0
  73. package/dist/PayloadUtilities.js.map +1 -0
  74. package/dist/ReconciliationPath.d.ts +18 -13
  75. package/dist/ReconciliationPath.d.ts.map +1 -1
  76. package/dist/ReconciliationPath.js.map +1 -1
  77. package/dist/RevisionValueCache.d.ts +11 -2
  78. package/dist/RevisionValueCache.d.ts.map +1 -1
  79. package/dist/RevisionValueCache.js +2 -3
  80. package/dist/RevisionValueCache.js.map +1 -1
  81. package/dist/RevisionView.d.ts +83 -0
  82. package/dist/RevisionView.d.ts.map +1 -0
  83. package/dist/RevisionView.js +182 -0
  84. package/dist/RevisionView.js.map +1 -0
  85. package/dist/SerializationUtilities.d.ts +36 -0
  86. package/dist/SerializationUtilities.d.ts.map +1 -0
  87. package/dist/SerializationUtilities.js +102 -0
  88. package/dist/SerializationUtilities.js.map +1 -0
  89. package/dist/SharedTree.d.ts +439 -0
  90. package/dist/SharedTree.d.ts.map +1 -0
  91. package/dist/SharedTree.js +1109 -0
  92. package/dist/SharedTree.js.map +1 -0
  93. package/dist/SharedTreeEncoder.d.ts +102 -0
  94. package/dist/SharedTreeEncoder.d.ts.map +1 -0
  95. package/dist/SharedTreeEncoder.js +313 -0
  96. package/dist/SharedTreeEncoder.js.map +1 -0
  97. package/dist/StringInterner.d.ts +46 -0
  98. package/dist/StringInterner.d.ts.map +1 -0
  99. package/dist/StringInterner.js +61 -0
  100. package/dist/StringInterner.js.map +1 -0
  101. package/dist/Summary.d.ts +40 -0
  102. package/dist/Summary.d.ts.map +1 -0
  103. package/dist/Summary.js +23 -0
  104. package/dist/Summary.js.map +1 -0
  105. package/dist/SummaryBackCompatibility.d.ts +22 -22
  106. package/dist/SummaryBackCompatibility.d.ts.map +1 -1
  107. package/dist/SummaryBackCompatibility.js +30 -33
  108. package/dist/SummaryBackCompatibility.js.map +1 -1
  109. package/dist/SummaryTestUtilities.d.ts +31 -0
  110. package/dist/SummaryTestUtilities.d.ts.map +1 -0
  111. package/dist/SummaryTestUtilities.js +37 -0
  112. package/dist/SummaryTestUtilities.js.map +1 -0
  113. package/dist/Transaction.d.ts +71 -0
  114. package/dist/Transaction.d.ts.map +1 -0
  115. package/dist/Transaction.js +92 -0
  116. package/dist/Transaction.js.map +1 -0
  117. package/dist/TransactionInternal.d.ts +540 -0
  118. package/dist/TransactionInternal.d.ts.map +1 -0
  119. package/dist/TransactionInternal.js +626 -0
  120. package/dist/TransactionInternal.js.map +1 -0
  121. package/dist/TreeCompressor.d.ts +36 -0
  122. package/dist/TreeCompressor.d.ts.map +1 -0
  123. package/dist/TreeCompressor.js +137 -0
  124. package/dist/TreeCompressor.js.map +1 -0
  125. package/dist/TreeNodeHandle.d.ts +12 -18
  126. package/dist/TreeNodeHandle.d.ts.map +1 -1
  127. package/dist/TreeNodeHandle.js +13 -23
  128. package/dist/TreeNodeHandle.js.map +1 -1
  129. package/dist/TreeView.d.ts +166 -0
  130. package/dist/TreeView.d.ts.map +1 -0
  131. package/dist/TreeView.js +218 -0
  132. package/dist/TreeView.js.map +1 -0
  133. package/dist/TreeViewUtilities.d.ts +21 -0
  134. package/dist/TreeViewUtilities.d.ts.map +1 -0
  135. package/dist/TreeViewUtilities.js +77 -0
  136. package/dist/TreeViewUtilities.js.map +1 -0
  137. package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  138. package/dist/UndoRedoHandler.d.ts.map +1 -0
  139. package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
  140. package/dist/UndoRedoHandler.js.map +1 -0
  141. package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  142. package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  143. package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
  144. package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
  145. package/dist/id-compressor/IdCompressor.d.ts +389 -0
  146. package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
  147. package/dist/id-compressor/IdCompressor.js +1353 -0
  148. package/dist/id-compressor/IdCompressor.js.map +1 -0
  149. package/dist/id-compressor/IdRange.d.ts +11 -0
  150. package/dist/id-compressor/IdRange.d.ts.map +1 -0
  151. package/dist/id-compressor/IdRange.js +29 -0
  152. package/dist/id-compressor/IdRange.js.map +1 -0
  153. package/dist/id-compressor/NumericUuid.d.ts +63 -0
  154. package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
  155. package/dist/id-compressor/NumericUuid.js +377 -0
  156. package/dist/id-compressor/NumericUuid.js.map +1 -0
  157. package/dist/id-compressor/index.d.ts +12 -0
  158. package/dist/id-compressor/index.d.ts.map +1 -0
  159. package/dist/id-compressor/index.js +26 -0
  160. package/dist/id-compressor/index.js.map +1 -0
  161. package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  162. package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  163. package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
  164. package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
  165. package/dist/id-compressor/persisted-types/index.d.ts +6 -0
  166. package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
  167. package/dist/id-compressor/persisted-types/index.js +18 -0
  168. package/dist/id-compressor/persisted-types/index.js.map +1 -0
  169. package/dist/index.d.ts +29 -9
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +50 -35
  172. package/dist/index.js.map +1 -1
  173. package/dist/persisted-types/0.0.2.d.ts +385 -0
  174. package/dist/persisted-types/0.0.2.d.ts.map +1 -0
  175. package/dist/persisted-types/0.0.2.js +113 -0
  176. package/dist/persisted-types/0.0.2.js.map +1 -0
  177. package/dist/persisted-types/0.1.1.d.ts +314 -0
  178. package/dist/persisted-types/0.1.1.d.ts.map +1 -0
  179. package/dist/persisted-types/0.1.1.js +153 -0
  180. package/dist/persisted-types/0.1.1.js.map +1 -0
  181. package/dist/persisted-types/index.d.ts +7 -0
  182. package/dist/persisted-types/index.d.ts.map +1 -0
  183. package/dist/persisted-types/index.js +20 -0
  184. package/dist/persisted-types/index.js.map +1 -0
  185. package/docs/0-1-1-Compression.md +228 -0
  186. package/docs/Breaking-Change-Migration.md +52 -0
  187. package/docs/Compression.md +2 -2
  188. package/docs/Telemetry.md +43 -0
  189. package/docs/Write-Format.md +19 -0
  190. package/lib/ChangeCompression.d.ts +39 -0
  191. package/lib/ChangeCompression.d.ts.map +1 -0
  192. package/lib/ChangeCompression.js +111 -0
  193. package/lib/ChangeCompression.js.map +1 -0
  194. package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -105
  195. package/lib/ChangeTypes.d.ts.map +1 -0
  196. package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
  197. package/lib/ChangeTypes.js.map +1 -0
  198. package/lib/Checkout.d.ts +39 -27
  199. package/lib/Checkout.d.ts.map +1 -1
  200. package/lib/Checkout.js +53 -24
  201. package/lib/Checkout.js.map +1 -1
  202. package/lib/Common.d.ts +175 -38
  203. package/lib/Common.d.ts.map +1 -1
  204. package/lib/Common.js +226 -101
  205. package/lib/Common.js.map +1 -1
  206. package/lib/EagerCheckout.d.ts +24 -0
  207. package/lib/EagerCheckout.d.ts.map +1 -0
  208. package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
  209. package/lib/EagerCheckout.js.map +1 -0
  210. package/lib/EditLog.d.ts +77 -63
  211. package/lib/EditLog.d.ts.map +1 -1
  212. package/lib/EditLog.js +83 -47
  213. package/lib/EditLog.js.map +1 -1
  214. package/lib/EditUtilities.d.ts +168 -0
  215. package/lib/EditUtilities.d.ts.map +1 -0
  216. package/lib/EditUtilities.js +353 -0
  217. package/lib/EditUtilities.js.map +1 -0
  218. package/lib/EventTypes.d.ts +73 -0
  219. package/lib/EventTypes.d.ts.map +1 -0
  220. package/lib/EventTypes.js +75 -0
  221. package/lib/EventTypes.js.map +1 -0
  222. package/lib/Forest.d.ts +29 -7
  223. package/lib/Forest.d.ts.map +1 -1
  224. package/lib/Forest.js +58 -35
  225. package/lib/Forest.js.map +1 -1
  226. package/lib/HistoryEditFactory.d.ts +20 -0
  227. package/lib/HistoryEditFactory.d.ts.map +1 -0
  228. package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
  229. package/lib/HistoryEditFactory.js.map +1 -0
  230. package/lib/IdConversion.d.ts +12 -0
  231. package/lib/IdConversion.d.ts.map +1 -0
  232. package/lib/IdConversion.js +91 -0
  233. package/lib/IdConversion.js.map +1 -0
  234. package/lib/Identifiers.d.ts +89 -2
  235. package/lib/Identifiers.d.ts.map +1 -1
  236. package/lib/Identifiers.js +8 -1
  237. package/lib/Identifiers.js.map +1 -1
  238. package/lib/InitialTree.d.ts +2 -2
  239. package/lib/InitialTree.d.ts.map +1 -1
  240. package/lib/InitialTree.js +2 -1
  241. package/lib/InitialTree.js.map +1 -1
  242. package/lib/LazyCheckout.d.ts +28 -0
  243. package/lib/LazyCheckout.d.ts.map +1 -0
  244. package/lib/LazyCheckout.js +40 -0
  245. package/lib/LazyCheckout.js.map +1 -0
  246. package/lib/LogViewer.d.ts +129 -85
  247. package/lib/LogViewer.d.ts.map +1 -1
  248. package/lib/LogViewer.js +103 -77
  249. package/lib/LogViewer.js.map +1 -1
  250. package/lib/MergeHealth.d.ts +221 -0
  251. package/lib/MergeHealth.d.ts.map +1 -0
  252. package/lib/MergeHealth.js +258 -0
  253. package/lib/MergeHealth.js.map +1 -0
  254. package/lib/NodeIdUtilities.d.ts +105 -0
  255. package/lib/NodeIdUtilities.d.ts.map +1 -0
  256. package/lib/NodeIdUtilities.js +53 -0
  257. package/lib/NodeIdUtilities.js.map +1 -0
  258. package/lib/PayloadUtilities.d.ts +42 -0
  259. package/lib/PayloadUtilities.d.ts.map +1 -0
  260. package/lib/PayloadUtilities.js +110 -0
  261. package/lib/PayloadUtilities.js.map +1 -0
  262. package/lib/ReconciliationPath.d.ts +18 -13
  263. package/lib/ReconciliationPath.d.ts.map +1 -1
  264. package/lib/ReconciliationPath.js.map +1 -1
  265. package/lib/RevisionValueCache.d.ts +11 -2
  266. package/lib/RevisionValueCache.d.ts.map +1 -1
  267. package/lib/RevisionValueCache.js +2 -3
  268. package/lib/RevisionValueCache.js.map +1 -1
  269. package/lib/RevisionView.d.ts +83 -0
  270. package/lib/RevisionView.d.ts.map +1 -0
  271. package/lib/RevisionView.js +175 -0
  272. package/lib/RevisionView.js.map +1 -0
  273. package/lib/SerializationUtilities.d.ts +36 -0
  274. package/lib/SerializationUtilities.d.ts.map +1 -0
  275. package/lib/SerializationUtilities.js +95 -0
  276. package/lib/SerializationUtilities.js.map +1 -0
  277. package/lib/SharedTree.d.ts +439 -0
  278. package/lib/SharedTree.d.ts.map +1 -0
  279. package/lib/SharedTree.js +1104 -0
  280. package/lib/SharedTree.js.map +1 -0
  281. package/lib/SharedTreeEncoder.d.ts +102 -0
  282. package/lib/SharedTreeEncoder.d.ts.map +1 -0
  283. package/lib/SharedTreeEncoder.js +308 -0
  284. package/lib/SharedTreeEncoder.js.map +1 -0
  285. package/lib/StringInterner.d.ts +46 -0
  286. package/lib/StringInterner.d.ts.map +1 -0
  287. package/lib/StringInterner.js +57 -0
  288. package/lib/StringInterner.js.map +1 -0
  289. package/lib/Summary.d.ts +40 -0
  290. package/lib/Summary.d.ts.map +1 -0
  291. package/lib/Summary.js +19 -0
  292. package/lib/Summary.js.map +1 -0
  293. package/lib/SummaryBackCompatibility.d.ts +22 -22
  294. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  295. package/lib/SummaryBackCompatibility.js +29 -32
  296. package/lib/SummaryBackCompatibility.js.map +1 -1
  297. package/lib/SummaryTestUtilities.d.ts +31 -0
  298. package/lib/SummaryTestUtilities.d.ts.map +1 -0
  299. package/lib/SummaryTestUtilities.js +32 -0
  300. package/lib/SummaryTestUtilities.js.map +1 -0
  301. package/lib/Transaction.d.ts +71 -0
  302. package/lib/Transaction.d.ts.map +1 -0
  303. package/lib/Transaction.js +88 -0
  304. package/lib/Transaction.js.map +1 -0
  305. package/lib/TransactionInternal.d.ts +540 -0
  306. package/lib/TransactionInternal.d.ts.map +1 -0
  307. package/lib/TransactionInternal.js +622 -0
  308. package/lib/TransactionInternal.js.map +1 -0
  309. package/lib/TreeCompressor.d.ts +36 -0
  310. package/lib/TreeCompressor.d.ts.map +1 -0
  311. package/lib/TreeCompressor.js +133 -0
  312. package/lib/TreeCompressor.js.map +1 -0
  313. package/lib/TreeNodeHandle.d.ts +12 -18
  314. package/lib/TreeNodeHandle.d.ts.map +1 -1
  315. package/lib/TreeNodeHandle.js +14 -24
  316. package/lib/TreeNodeHandle.js.map +1 -1
  317. package/lib/TreeView.d.ts +166 -0
  318. package/lib/TreeView.d.ts.map +1 -0
  319. package/lib/TreeView.js +214 -0
  320. package/lib/TreeView.js.map +1 -0
  321. package/lib/TreeViewUtilities.d.ts +21 -0
  322. package/lib/TreeViewUtilities.d.ts.map +1 -0
  323. package/lib/TreeViewUtilities.js +71 -0
  324. package/lib/TreeViewUtilities.js.map +1 -0
  325. package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  326. package/lib/UndoRedoHandler.d.ts.map +1 -0
  327. package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
  328. package/lib/UndoRedoHandler.js.map +1 -0
  329. package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  330. package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  331. package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
  332. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
  333. package/lib/id-compressor/IdCompressor.d.ts +389 -0
  334. package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
  335. package/lib/id-compressor/IdCompressor.js +1343 -0
  336. package/lib/id-compressor/IdCompressor.js.map +1 -0
  337. package/lib/id-compressor/IdRange.d.ts +11 -0
  338. package/lib/id-compressor/IdRange.d.ts.map +1 -0
  339. package/lib/id-compressor/IdRange.js +25 -0
  340. package/lib/id-compressor/IdRange.js.map +1 -0
  341. package/lib/id-compressor/NumericUuid.d.ts +63 -0
  342. package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
  343. package/lib/id-compressor/NumericUuid.js +365 -0
  344. package/lib/id-compressor/NumericUuid.js.map +1 -0
  345. package/lib/id-compressor/index.d.ts +12 -0
  346. package/lib/id-compressor/index.d.ts.map +1 -0
  347. package/lib/id-compressor/index.js +12 -0
  348. package/lib/id-compressor/index.js.map +1 -0
  349. package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  350. package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  351. package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
  352. package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
  353. package/lib/id-compressor/persisted-types/index.d.ts +6 -0
  354. package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
  355. package/lib/id-compressor/persisted-types/index.js +6 -0
  356. package/lib/id-compressor/persisted-types/index.js.map +1 -0
  357. package/lib/index.d.ts +29 -9
  358. package/lib/index.d.ts.map +1 -1
  359. package/lib/index.js +23 -6
  360. package/lib/index.js.map +1 -1
  361. package/lib/persisted-types/0.0.2.d.ts +385 -0
  362. package/lib/persisted-types/0.0.2.d.ts.map +1 -0
  363. package/lib/persisted-types/0.0.2.js +110 -0
  364. package/lib/persisted-types/0.0.2.js.map +1 -0
  365. package/lib/persisted-types/0.1.1.d.ts +314 -0
  366. package/lib/persisted-types/0.1.1.d.ts.map +1 -0
  367. package/lib/persisted-types/0.1.1.js +150 -0
  368. package/lib/persisted-types/0.1.1.js.map +1 -0
  369. package/lib/persisted-types/index.d.ts +7 -0
  370. package/lib/persisted-types/index.d.ts.map +1 -0
  371. package/lib/persisted-types/index.js +8 -0
  372. package/lib/persisted-types/index.js.map +1 -0
  373. package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
  374. package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
  375. package/lib/test/AppendOnlySortedMap.tests.js +169 -0
  376. package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
  377. package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
  378. package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
  379. package/lib/test/ChangeCompression.tests.js +145 -0
  380. package/lib/test/ChangeCompression.tests.js.map +1 -0
  381. package/lib/test/Checkout.tests.d.ts +2 -3
  382. package/lib/test/Checkout.tests.d.ts.map +1 -1
  383. package/lib/test/Checkout.tests.js +126 -69
  384. package/lib/test/Checkout.tests.js.map +1 -1
  385. package/lib/test/Common.tests.js +60 -2
  386. package/lib/test/Common.tests.js.map +1 -1
  387. package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
  388. package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
  389. package/lib/test/EagerCheckout.tests.js +20 -0
  390. package/lib/test/EagerCheckout.tests.js.map +1 -0
  391. package/lib/test/Edit.tests.js +22 -14
  392. package/lib/test/Edit.tests.js.map +1 -1
  393. package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
  394. package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
  395. package/lib/test/EditLog.perf.tests.js +30 -0
  396. package/lib/test/EditLog.perf.tests.js.map +1 -0
  397. package/lib/test/EditLog.tests.js +10 -6
  398. package/lib/test/EditLog.tests.js.map +1 -1
  399. package/lib/test/EditUtilities.tests.d.ts +6 -0
  400. package/lib/test/EditUtilities.tests.d.ts.map +1 -0
  401. package/lib/test/EditUtilities.tests.js +503 -0
  402. package/lib/test/EditUtilities.tests.js.map +1 -0
  403. package/lib/test/Forest.perf.tests.d.ts +6 -0
  404. package/lib/test/Forest.perf.tests.d.ts.map +1 -0
  405. package/lib/test/Forest.perf.tests.js +133 -0
  406. package/lib/test/Forest.perf.tests.js.map +1 -0
  407. package/lib/test/Forest.tests.js +54 -27
  408. package/lib/test/Forest.tests.js.map +1 -1
  409. package/lib/test/GenericTransaction.tests.js +12 -3
  410. package/lib/test/GenericTransaction.tests.js.map +1 -1
  411. package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
  412. package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
  413. package/lib/test/HistoryEditFactory.tests.js +90 -0
  414. package/lib/test/HistoryEditFactory.tests.js.map +1 -0
  415. package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
  416. package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
  417. package/lib/test/IdCompressor.perf.tests.js +304 -0
  418. package/lib/test/IdCompressor.perf.tests.js.map +1 -0
  419. package/lib/test/IdCompressor.tests.d.ts +6 -0
  420. package/lib/test/IdCompressor.tests.d.ts.map +1 -0
  421. package/lib/test/IdCompressor.tests.js +1075 -0
  422. package/lib/test/IdCompressor.tests.js.map +1 -0
  423. package/lib/test/IdConversion.tests.d.ts +6 -0
  424. package/lib/test/IdConversion.tests.d.ts.map +1 -0
  425. package/lib/test/IdConversion.tests.js +36 -0
  426. package/lib/test/IdConversion.tests.js.map +1 -0
  427. package/lib/test/LazyCheckout.tests.d.ts +6 -0
  428. package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
  429. package/lib/test/LazyCheckout.tests.js +22 -0
  430. package/lib/test/LazyCheckout.tests.js.map +1 -0
  431. package/lib/test/LogViewer.tests.js +276 -191
  432. package/lib/test/LogViewer.tests.js.map +1 -1
  433. package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
  434. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
  435. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
  436. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
  437. package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
  438. package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
  439. package/lib/test/NumericUuid.perf.tests.js +68 -0
  440. package/lib/test/NumericUuid.perf.tests.js.map +1 -0
  441. package/lib/test/NumericUuid.tests.d.ts +6 -0
  442. package/lib/test/NumericUuid.tests.d.ts.map +1 -0
  443. package/lib/test/NumericUuid.tests.js +191 -0
  444. package/lib/test/NumericUuid.tests.js.map +1 -0
  445. package/lib/test/RevisionView.tests.d.ts +6 -0
  446. package/lib/test/RevisionView.tests.d.ts.map +1 -0
  447. package/lib/test/RevisionView.tests.js +133 -0
  448. package/lib/test/RevisionView.tests.js.map +1 -0
  449. package/lib/test/SharedTree.perf.tests.d.ts +6 -0
  450. package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
  451. package/lib/test/SharedTree.perf.tests.js +39 -0
  452. package/lib/test/SharedTree.perf.tests.js.map +1 -0
  453. package/lib/test/SharedTree.tests.js +15 -3
  454. package/lib/test/SharedTree.tests.js.map +1 -1
  455. package/lib/test/StringInterner.tests.d.ts +6 -0
  456. package/lib/test/StringInterner.tests.d.ts.map +1 -0
  457. package/lib/test/StringInterner.tests.js +71 -0
  458. package/lib/test/StringInterner.tests.js.map +1 -0
  459. package/lib/test/Summary.tests.d.ts +8 -0
  460. package/lib/test/Summary.tests.d.ts.map +1 -0
  461. package/lib/test/Summary.tests.js +407 -0
  462. package/lib/test/Summary.tests.js.map +1 -0
  463. package/lib/test/Transaction.tests.js +109 -329
  464. package/lib/test/Transaction.tests.js.map +1 -1
  465. package/lib/test/TransactionInternal.tests.d.ts +6 -0
  466. package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
  467. package/lib/test/TransactionInternal.tests.js +568 -0
  468. package/lib/test/TransactionInternal.tests.js.map +1 -0
  469. package/lib/test/TreeCompression.tests.d.ts +6 -0
  470. package/lib/test/TreeCompression.tests.d.ts.map +1 -0
  471. package/lib/test/TreeCompression.tests.js +292 -0
  472. package/lib/test/TreeCompression.tests.js.map +1 -0
  473. package/lib/test/TreeView.tests.d.ts +6 -0
  474. package/lib/test/TreeView.tests.d.ts.map +1 -0
  475. package/lib/test/TreeView.tests.js +176 -0
  476. package/lib/test/TreeView.tests.js.map +1 -0
  477. package/lib/test/UndoRedoHandler.tests.js +2 -2
  478. package/lib/test/UndoRedoHandler.tests.js.map +1 -1
  479. package/lib/test/Virtualization.tests.js +146 -62
  480. package/lib/test/Virtualization.tests.js.map +1 -1
  481. package/lib/test/fuzz/Generators.d.ts +19 -0
  482. package/lib/test/fuzz/Generators.d.ts.map +1 -0
  483. package/lib/test/fuzz/Generators.js +420 -0
  484. package/lib/test/fuzz/Generators.js.map +1 -0
  485. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
  486. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
  487. package/lib/test/fuzz/SharedTreeFuzzTests.js +217 -0
  488. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
  489. package/lib/test/fuzz/Types.d.ts +133 -0
  490. package/lib/test/fuzz/Types.d.ts.map +1 -0
  491. package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
  492. package/lib/test/fuzz/Types.js.map +1 -0
  493. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
  494. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
  495. package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
  496. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
  497. package/lib/test/utilities/MockTransaction.d.ts +26 -7
  498. package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
  499. package/lib/test/utilities/MockTransaction.js +40 -11
  500. package/lib/test/utilities/MockTransaction.js.map +1 -1
  501. package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
  502. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
  503. package/lib/test/utilities/PendingLocalStateTests.js +105 -0
  504. package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
  505. package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
  506. package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
  507. package/lib/test/utilities/SharedTreeTests.js +696 -439
  508. package/lib/test/utilities/SharedTreeTests.js.map +1 -1
  509. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
  510. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
  511. package/lib/test/utilities/SharedTreeVersioningTests.js +370 -0
  512. package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
  513. package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
  514. package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
  515. package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
  516. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
  517. package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
  518. package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
  519. package/lib/test/utilities/SummarySizeTests.js +158 -0
  520. package/lib/test/utilities/SummarySizeTests.js.map +1 -0
  521. package/lib/test/utilities/TestCommon.d.ts +9 -0
  522. package/lib/test/utilities/TestCommon.d.ts.map +1 -0
  523. package/lib/test/utilities/TestCommon.js +13 -0
  524. package/lib/test/utilities/TestCommon.js.map +1 -0
  525. package/lib/test/utilities/TestNode.d.ts +140 -0
  526. package/lib/test/utilities/TestNode.d.ts.map +1 -0
  527. package/lib/test/utilities/TestNode.js +292 -0
  528. package/lib/test/utilities/TestNode.js.map +1 -0
  529. package/lib/test/utilities/TestUtilities.d.ts +84 -70
  530. package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
  531. package/lib/test/utilities/TestUtilities.js +218 -143
  532. package/lib/test/utilities/TestUtilities.js.map +1 -1
  533. package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
  534. package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
  535. package/lib/test/utilities/UndoRedoTests.js +138 -149
  536. package/lib/test/utilities/UndoRedoTests.js.map +1 -1
  537. package/package.json +22 -17
  538. package/src/ChangeCompression.ts +159 -0
  539. package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -125
  540. package/src/Checkout.ts +82 -53
  541. package/src/Common.ts +317 -117
  542. package/src/EagerCheckout.ts +38 -0
  543. package/src/EditLog.ts +153 -100
  544. package/src/EditUtilities.ts +559 -0
  545. package/src/EventTypes.ts +74 -0
  546. package/src/Forest.ts +81 -73
  547. package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
  548. package/src/IdConversion.ts +125 -0
  549. package/src/Identifiers.ts +101 -1
  550. package/src/InitialTree.ts +5 -4
  551. package/src/LazyCheckout.ts +51 -0
  552. package/src/LogViewer.ts +242 -166
  553. package/src/MergeHealth.ts +447 -0
  554. package/src/NodeIdUtilities.ts +156 -0
  555. package/src/PayloadUtilities.ts +124 -0
  556. package/src/ReconciliationPath.ts +18 -13
  557. package/src/RevisionValueCache.ts +14 -5
  558. package/src/RevisionView.ts +252 -0
  559. package/src/SerializationUtilities.ts +130 -0
  560. package/src/SharedTree.ts +1501 -0
  561. package/src/SharedTreeEncoder.ts +493 -0
  562. package/src/StringInterner.ts +72 -0
  563. package/src/Summary.ts +48 -0
  564. package/src/SummaryBackCompatibility.ts +47 -57
  565. package/src/SummaryTestUtilities.ts +54 -0
  566. package/src/Transaction.ts +120 -0
  567. package/src/TransactionInternal.ts +1087 -0
  568. package/src/TreeCompressor.ts +213 -0
  569. package/src/TreeNodeHandle.ts +19 -32
  570. package/src/TreeView.ts +322 -0
  571. package/src/TreeViewUtilities.ts +77 -0
  572. package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
  573. package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
  574. package/src/id-compressor/IdCompressor.md +3 -0
  575. package/src/id-compressor/IdCompressor.ts +1848 -0
  576. package/src/id-compressor/IdRange.ts +33 -0
  577. package/src/id-compressor/NumericUuid.ts +414 -0
  578. package/src/id-compressor/index.ts +13 -0
  579. package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
  580. package/src/id-compressor/persisted-types/README.md +3 -0
  581. package/src/id-compressor/persisted-types/index.ts +6 -0
  582. package/src/index.ts +118 -59
  583. package/src/persisted-types/0.0.2.ts +442 -0
  584. package/src/persisted-types/0.1.1.ts +476 -0
  585. package/src/persisted-types/README.md +22 -0
  586. package/src/persisted-types/index.ts +9 -0
  587. package/.mocharc.js +0 -41
  588. package/api/tree.api.md +0 -729
  589. package/dist/BasicCheckout.d.ts +0 -23
  590. package/dist/BasicCheckout.d.ts.map +0 -1
  591. package/dist/BasicCheckout.js.map +0 -1
  592. package/dist/Snapshot.d.ts +0 -198
  593. package/dist/Snapshot.d.ts.map +0 -1
  594. package/dist/Snapshot.js +0 -267
  595. package/dist/Snapshot.js.map +0 -1
  596. package/dist/SnapshotUtilities.d.ts +0 -29
  597. package/dist/SnapshotUtilities.d.ts.map +0 -1
  598. package/dist/SnapshotUtilities.js +0 -73
  599. package/dist/SnapshotUtilities.js.map +0 -1
  600. package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
  601. package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
  602. package/dist/anchored-edits/AnchorResolution.js +0 -162
  603. package/dist/anchored-edits/AnchorResolution.js.map +0 -1
  604. package/dist/anchored-edits/Factory.d.ts +0 -56
  605. package/dist/anchored-edits/Factory.d.ts.map +0 -1
  606. package/dist/anchored-edits/Factory.js +0 -79
  607. package/dist/anchored-edits/Factory.js.map +0 -1
  608. package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
  609. package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
  610. package/dist/anchored-edits/PersistedTypes.js +0 -131
  611. package/dist/anchored-edits/PersistedTypes.js.map +0 -1
  612. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  613. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  614. package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
  615. package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  616. package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  617. package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  618. package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
  619. package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
  620. package/dist/anchored-edits/index.d.ts +0 -10
  621. package/dist/anchored-edits/index.d.ts.map +0 -1
  622. package/dist/anchored-edits/index.js +0 -34
  623. package/dist/anchored-edits/index.js.map +0 -1
  624. package/dist/default-edits/EditUtilities.d.ts +0 -57
  625. package/dist/default-edits/EditUtilities.d.ts.map +0 -1
  626. package/dist/default-edits/EditUtilities.js +0 -192
  627. package/dist/default-edits/EditUtilities.js.map +0 -1
  628. package/dist/default-edits/Factory.d.ts +0 -56
  629. package/dist/default-edits/Factory.d.ts.map +0 -1
  630. package/dist/default-edits/Factory.js +0 -79
  631. package/dist/default-edits/Factory.js.map +0 -1
  632. package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
  633. package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
  634. package/dist/default-edits/HistoryEditFactory.js +0 -187
  635. package/dist/default-edits/HistoryEditFactory.js.map +0 -1
  636. package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
  637. package/dist/default-edits/PersistedTypes.js.map +0 -1
  638. package/dist/default-edits/SharedTree.d.ts +0 -111
  639. package/dist/default-edits/SharedTree.d.ts.map +0 -1
  640. package/dist/default-edits/SharedTree.js +0 -124
  641. package/dist/default-edits/SharedTree.js.map +0 -1
  642. package/dist/default-edits/Summary.d.ts +0 -15
  643. package/dist/default-edits/Summary.d.ts.map +0 -1
  644. package/dist/default-edits/Summary.js +0 -35
  645. package/dist/default-edits/Summary.js.map +0 -1
  646. package/dist/default-edits/Transaction.d.ts +0 -41
  647. package/dist/default-edits/Transaction.d.ts.map +0 -1
  648. package/dist/default-edits/Transaction.js +0 -225
  649. package/dist/default-edits/Transaction.js.map +0 -1
  650. package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
  651. package/dist/default-edits/UndoRedoHandler.js.map +0 -1
  652. package/dist/default-edits/index.d.ts +0 -13
  653. package/dist/default-edits/index.d.ts.map +0 -1
  654. package/dist/default-edits/index.js +0 -41
  655. package/dist/default-edits/index.js.map +0 -1
  656. package/dist/generic/GenericEditUtilities.d.ts +0 -26
  657. package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
  658. package/dist/generic/GenericEditUtilities.js +0 -45
  659. package/dist/generic/GenericEditUtilities.js.map +0 -1
  660. package/dist/generic/GenericSharedTree.d.ts +0 -221
  661. package/dist/generic/GenericSharedTree.d.ts.map +0 -1
  662. package/dist/generic/GenericSharedTree.js +0 -447
  663. package/dist/generic/GenericSharedTree.js.map +0 -1
  664. package/dist/generic/GenericTransaction.d.ts +0 -87
  665. package/dist/generic/GenericTransaction.d.ts.map +0 -1
  666. package/dist/generic/GenericTransaction.js +0 -144
  667. package/dist/generic/GenericTransaction.js.map +0 -1
  668. package/dist/generic/PersistedTypes.d.ts +0 -194
  669. package/dist/generic/PersistedTypes.d.ts.map +0 -1
  670. package/dist/generic/PersistedTypes.js +0 -42
  671. package/dist/generic/PersistedTypes.js.map +0 -1
  672. package/dist/generic/Summary.d.ts +0 -63
  673. package/dist/generic/Summary.d.ts.map +0 -1
  674. package/dist/generic/Summary.js +0 -64
  675. package/dist/generic/Summary.js.map +0 -1
  676. package/dist/generic/index.d.ts +0 -10
  677. package/dist/generic/index.d.ts.map +0 -1
  678. package/dist/generic/index.js +0 -26
  679. package/dist/generic/index.js.map +0 -1
  680. package/docs/Future.md +0 -155
  681. package/lib/BasicCheckout.d.ts +0 -23
  682. package/lib/BasicCheckout.d.ts.map +0 -1
  683. package/lib/BasicCheckout.js.map +0 -1
  684. package/lib/Snapshot.d.ts +0 -198
  685. package/lib/Snapshot.d.ts.map +0 -1
  686. package/lib/Snapshot.js +0 -263
  687. package/lib/Snapshot.js.map +0 -1
  688. package/lib/SnapshotUtilities.d.ts +0 -29
  689. package/lib/SnapshotUtilities.d.ts.map +0 -1
  690. package/lib/SnapshotUtilities.js +0 -67
  691. package/lib/SnapshotUtilities.js.map +0 -1
  692. package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
  693. package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
  694. package/lib/anchored-edits/AnchorResolution.js +0 -152
  695. package/lib/anchored-edits/AnchorResolution.js.map +0 -1
  696. package/lib/anchored-edits/Factory.d.ts +0 -56
  697. package/lib/anchored-edits/Factory.d.ts.map +0 -1
  698. package/lib/anchored-edits/Factory.js +0 -74
  699. package/lib/anchored-edits/Factory.js.map +0 -1
  700. package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
  701. package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
  702. package/lib/anchored-edits/PersistedTypes.js +0 -128
  703. package/lib/anchored-edits/PersistedTypes.js.map +0 -1
  704. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  705. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  706. package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
  707. package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  708. package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  709. package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  710. package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
  711. package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
  712. package/lib/anchored-edits/index.d.ts +0 -10
  713. package/lib/anchored-edits/index.d.ts.map +0 -1
  714. package/lib/anchored-edits/index.js +0 -11
  715. package/lib/anchored-edits/index.js.map +0 -1
  716. package/lib/default-edits/EditUtilities.d.ts +0 -57
  717. package/lib/default-edits/EditUtilities.d.ts.map +0 -1
  718. package/lib/default-edits/EditUtilities.js +0 -181
  719. package/lib/default-edits/EditUtilities.js.map +0 -1
  720. package/lib/default-edits/Factory.d.ts +0 -56
  721. package/lib/default-edits/Factory.d.ts.map +0 -1
  722. package/lib/default-edits/Factory.js +0 -74
  723. package/lib/default-edits/Factory.js.map +0 -1
  724. package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
  725. package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
  726. package/lib/default-edits/HistoryEditFactory.js.map +0 -1
  727. package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
  728. package/lib/default-edits/PersistedTypes.js.map +0 -1
  729. package/lib/default-edits/SharedTree.d.ts +0 -111
  730. package/lib/default-edits/SharedTree.d.ts.map +0 -1
  731. package/lib/default-edits/SharedTree.js +0 -100
  732. package/lib/default-edits/SharedTree.js.map +0 -1
  733. package/lib/default-edits/Summary.d.ts +0 -15
  734. package/lib/default-edits/Summary.d.ts.map +0 -1
  735. package/lib/default-edits/Summary.js +0 -31
  736. package/lib/default-edits/Summary.js.map +0 -1
  737. package/lib/default-edits/Transaction.d.ts +0 -41
  738. package/lib/default-edits/Transaction.d.ts.map +0 -1
  739. package/lib/default-edits/Transaction.js +0 -221
  740. package/lib/default-edits/Transaction.js.map +0 -1
  741. package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
  742. package/lib/default-edits/UndoRedoHandler.js.map +0 -1
  743. package/lib/default-edits/index.d.ts +0 -13
  744. package/lib/default-edits/index.d.ts.map +0 -1
  745. package/lib/default-edits/index.js +0 -14
  746. package/lib/default-edits/index.js.map +0 -1
  747. package/lib/generic/GenericEditUtilities.d.ts +0 -26
  748. package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
  749. package/lib/generic/GenericEditUtilities.js +0 -38
  750. package/lib/generic/GenericEditUtilities.js.map +0 -1
  751. package/lib/generic/GenericSharedTree.d.ts +0 -221
  752. package/lib/generic/GenericSharedTree.d.ts.map +0 -1
  753. package/lib/generic/GenericSharedTree.js +0 -443
  754. package/lib/generic/GenericSharedTree.js.map +0 -1
  755. package/lib/generic/GenericTransaction.d.ts +0 -87
  756. package/lib/generic/GenericTransaction.d.ts.map +0 -1
  757. package/lib/generic/GenericTransaction.js +0 -140
  758. package/lib/generic/GenericTransaction.js.map +0 -1
  759. package/lib/generic/PersistedTypes.d.ts +0 -194
  760. package/lib/generic/PersistedTypes.d.ts.map +0 -1
  761. package/lib/generic/PersistedTypes.js +0 -39
  762. package/lib/generic/PersistedTypes.js.map +0 -1
  763. package/lib/generic/Summary.d.ts +0 -63
  764. package/lib/generic/Summary.d.ts.map +0 -1
  765. package/lib/generic/Summary.js +0 -58
  766. package/lib/generic/Summary.js.map +0 -1
  767. package/lib/generic/index.d.ts +0 -10
  768. package/lib/generic/index.d.ts.map +0 -1
  769. package/lib/generic/index.js +0 -11
  770. package/lib/generic/index.js.map +0 -1
  771. package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
  772. package/lib/test/Anchors.glassBox.tests.js +0 -410
  773. package/lib/test/Anchors.glassBox.tests.js.map +0 -1
  774. package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
  775. package/lib/test/BasicCheckout.tests.js +0 -8
  776. package/lib/test/BasicCheckout.tests.js.map +0 -1
  777. package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
  778. package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
  779. package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
  780. package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
  781. package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
  782. package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
  783. package/lib/test/Snapshot.tests.d.ts.map +0 -1
  784. package/lib/test/Snapshot.tests.js +0 -96
  785. package/lib/test/Snapshot.tests.js.map +0 -1
  786. package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
  787. package/lib/test/SnapshotUtilities.tests.js +0 -168
  788. package/lib/test/SnapshotUtilities.tests.js.map +0 -1
  789. package/lib/test/undoRedoStackManager.d.ts +0 -26
  790. package/lib/test/undoRedoStackManager.d.ts.map +0 -1
  791. package/lib/test/undoRedoStackManager.js +0 -176
  792. package/lib/test/undoRedoStackManager.js.map +0 -1
  793. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
  794. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
  795. package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
  796. package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
  797. package/src/BasicCheckout.ts +0 -34
  798. package/src/Snapshot.ts +0 -363
  799. package/src/SnapshotUtilities.ts +0 -88
  800. package/src/anchored-edits/AnchorResolution.ts +0 -442
  801. package/src/anchored-edits/Factory.ts +0 -94
  802. package/src/anchored-edits/PersistedTypes.ts +0 -310
  803. package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
  804. package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
  805. package/src/anchored-edits/index.ts +0 -21
  806. package/src/default-edits/EditUtilities.ts +0 -220
  807. package/src/default-edits/Factory.ts +0 -94
  808. package/src/default-edits/SharedTree.ts +0 -174
  809. package/src/default-edits/Summary.ts +0 -44
  810. package/src/default-edits/Transaction.ts +0 -262
  811. package/src/default-edits/index.ts +0 -29
  812. package/src/generic/GenericEditUtilities.ts +0 -46
  813. package/src/generic/GenericSharedTree.ts +0 -593
  814. package/src/generic/GenericTransaction.ts +0 -194
  815. package/src/generic/PersistedTypes.ts +0 -221
  816. package/src/generic/Summary.ts +0 -113
  817. package/src/generic/index.ts +0 -41
@@ -1,221 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
6
- import { IFluidDataStoreRuntime, IChannelStorageService, IChannelAttributes } from '@fluidframework/datastore-definitions';
7
- import { IFluidSerializer, ISharedObjectEvents, SharedObject } from '@fluidframework/shared-object-base';
8
- import { ITelemetryLogger } from '@fluidframework/common-definitions';
9
- import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
10
- import { OrderedEditSet } from '../EditLog';
11
- import { EditId } from '../Identifiers';
12
- import { Snapshot } from '../Snapshot';
13
- import { LogViewer } from '../LogViewer';
14
- import { Edit } from './PersistedTypes';
15
- import { SharedTreeSummarizer, SharedTreeSummaryBase } from './Summary';
16
- import { GenericTransaction } from './GenericTransaction';
17
- /**
18
- * An event emitted by a `SharedTree` to indicate a state change. See {@link ISharedTreeEvents} for event argument information.
19
- * @public
20
- */
21
- export declare enum SharedTreeEvent {
22
- /**
23
- * An edit has been committed to the log.
24
- * This happens when either:
25
- * 1. A locally generated edit is added to the log.
26
- * 2. A remotely generated edit is added to the log.
27
- * Note that, for locally generated edits, this event will not be emitted again when that edit is sequenced.
28
- * Passed the EditId of the committed edit, i.e. supports callbacks of type {@link EditCommittedHandler}.
29
- */
30
- EditCommitted = "committedEdit"
31
- }
32
- /**
33
- * An event emitted by a `SharedTree` for diagnostic purposes.
34
- * See {@link ISharedTreeEvents} for event argument information.
35
- */
36
- export declare enum SharedTreeDiagnosticEvent {
37
- /**
38
- * A single catch up blob has been uploaded.
39
- */
40
- CatchUpBlobUploaded = "uploadedCatchUpBlob",
41
- /**
42
- * A valid edit (local or remote) has been applied.
43
- * Passed the EditId of the applied edit.
44
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
45
- * and/or due to not caching the output of every edit.
46
- */
47
- AppliedEdit = "appliedEdit",
48
- /**
49
- * An invalid edit (local or remote) has been dropped.
50
- * Passed the EditId of the dropped edit.
51
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
52
- * and/or due to not caching the output of every edit.
53
- */
54
- DroppedInvalidEdit = "droppedInvalidEdit",
55
- /**
56
- * A malformed edit (local or remote) has been dropped.
57
- * Passed the EditId of the dropped edit.
58
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
59
- * and/or due to not caching the output of every edit.
60
- */
61
- DroppedMalformedEdit = "droppedMalformedEdit"
62
- }
63
- /**
64
- * The arguments included when the EditCommitted SharedTreeEvent is emitted.
65
- * @public
66
- */
67
- export interface EditCommittedEventArguments<TSharedTree> {
68
- /** The ID of the edit committed. */
69
- editId: EditId;
70
- /** Whether or not this is a local edit. */
71
- local: boolean;
72
- /** The tree the edit was committed on. Required for local edit events handled by SharedTreeUndoRedoHandler. */
73
- tree: TSharedTree;
74
- }
75
- /**
76
- * Events which may be emitted by `SharedTree`. See {@link SharedTreeEvent} for documentation of event semantics.
77
- */
78
- export interface ISharedTreeEvents<TSharedTree> extends ISharedObjectEvents {
79
- (event: 'committedEdit', listener: EditCommittedHandler<TSharedTree>): any;
80
- }
81
- /**
82
- * Expected type for a handler of the `EditCommitted` event.
83
- */
84
- export declare type EditCommittedHandler<TSharedTree> = (args: EditCommittedEventArguments<TSharedTree>) => void;
85
- /**
86
- * A distributed tree.
87
- * @public
88
- */
89
- export declare abstract class GenericSharedTree<TChange> extends SharedObject<ISharedTreeEvents<TChange>> {
90
- private readonly expensiveValidation;
91
- protected readonly summarizeHistory: boolean;
92
- /**
93
- * The log of completed edits for this SharedTree.
94
- */
95
- private editLog;
96
- /**
97
- * As an implementation detail, SharedTree uses a log viewer that caches snapshots at different revisions.
98
- * It is not exposed to avoid accidental correctness issues, but `logViewer` is exposed in order to give clients a way
99
- * to access the revision history.
100
- */
101
- private cachingLogViewer;
102
- /**
103
- * Viewer for trees defined by editLog. This allows access to views of the tree at different revisions (various points in time).
104
- */
105
- get logViewer(): LogViewer;
106
- protected readonly logger: ITelemetryLogger;
107
- readonly transactionFactory: (snapshot: Snapshot) => GenericTransaction<TChange>;
108
- /** Indicates if the client is the oldest member of the quorum. */
109
- private currentIsOldest;
110
- private readonly processEditResult;
111
- /**
112
- * Create a new SharedTreeFactory.
113
- * @param runtime - The runtime the SharedTree will be associated with
114
- * @param id - Unique ID for the SharedTree
115
- * @param expensiveValidation - Enable expensive asserts.
116
- * @param summarizeHistory - Determines if the history is included in summaries.
117
- */
118
- constructor(runtime: IFluidDataStoreRuntime, id: string, transactionFactory: (snapshot: Snapshot) => GenericTransaction<TChange>, attributes: IChannelAttributes, expensiveValidation?: boolean, summarizeHistory?: boolean);
119
- /**
120
- * Re-computes currentIsOldest and emits an event if it has changed.
121
- * TODO:#55900: Get rid of copy-pasted OldestClientObserver code
122
- */
123
- private readonly updateOldest;
124
- /**
125
- * Computes the oldest client in the quorum, true by default if the container is detached and false by default if the client isn't connected.
126
- * TODO:#55900: Get rid of copy-pasted OldestClientObserver code
127
- */
128
- private computeIsOldest;
129
- /**
130
- * @returns the current view of the tree.
131
- */
132
- get currentView(): Snapshot;
133
- /**
134
- * @returns the edit history of the tree.
135
- */
136
- get edits(): OrderedEditSet<TChange>;
137
- /**
138
- * Convenience helper for applying an edit containing the given changes.
139
- * Opens an edit, applies the given changes, and closes the edit. See (`openEdit()`/`applyChanges()`/`closeEdit()`).
140
- *
141
- * For convenient imperative variants of edits, see `editor`.
142
- * @internal
143
- */
144
- applyEdit(...changes: TChange[]): EditId;
145
- private deserializeHandle;
146
- /**
147
- * Uploads the edit chunk and sends the chunk starting revision along with the resulting handle as an op.
148
- */
149
- private uploadEditChunk;
150
- /**
151
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
152
- */
153
- summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats;
154
- /**
155
- * Saves this SharedTree into a serialized summary.
156
- *
157
- * @param options - Optional serializer and summarizer to use. If not passed in, SharedTree's serializer and summarizer are used.
158
- * @internal
159
- */
160
- saveSerializedSummary(options?: {
161
- serializer?: IFluidSerializer;
162
- summarizer?: SharedTreeSummarizer<TChange>;
163
- }): string;
164
- /**
165
- * Saves this SharedTree into a summary.
166
- * @internal
167
- */
168
- saveSummary(): SharedTreeSummaryBase;
169
- /**
170
- * Generates a SharedTree summary for the current state of the tree.
171
- * Will never be called when local edits are present.
172
- */
173
- protected abstract generateSummary(editLog: OrderedEditSet<TChange>): SharedTreeSummaryBase;
174
- /**
175
- * Initialize shared tree with a summary.
176
- * @internal
177
- */
178
- loadSummary(summary: SharedTreeSummaryBase): void;
179
- private static eventFromEditResult;
180
- private createEditLogFromSummary;
181
- /**
182
- * Upload any full chunks that have yet to be uploaded.
183
- */
184
- private uploadCatchUpBlobs;
185
- /**
186
- * Compares this shared tree to another for equality.
187
- *
188
- * Equality means that the histories as captured by the EditLogs are equal.
189
- *
190
- * Equality does not include:
191
- * - if an edit is open
192
- * - the shared tree's id
193
- * - local vs sequenced status of edits
194
- * - registered event listeners
195
- * - state of caches
196
- * */
197
- equals<TOtherChangeTypes>(sharedTree: GenericSharedTree<TOtherChangeTypes>): boolean;
198
- /**
199
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
200
- */
201
- protected loadCore(storage: IChannelStorageService): Promise<void>;
202
- /**
203
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
204
- */
205
- protected processCore(message: ISequencedDocumentMessage, local: boolean): void;
206
- /**
207
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
208
- */
209
- protected onDisconnect(): void;
210
- private processSequencedEdit;
211
- /**
212
- * Add an `Edit` directly.
213
- * External users should use one of the more specialized functions, like applyEdit which handles constructing the actual `Edit` object.
214
- * This is exposed as it is useful for testing, particularly with invalid and malformed Edits.
215
- * @internal
216
- */
217
- processLocalEdit(edit: Edit<TChange>): void;
218
- getRuntime(): IFluidDataStoreRuntime;
219
- protected applyStashedOp(): void;
220
- }
221
- //# sourceMappingURL=GenericSharedTree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenericSharedTree.d.ts","sourceRoot":"","sources":["../../src/generic/GenericSharedTree.ts"],"names":[],"mappings":"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"}
@@ -1,443 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { bufferToString, IsoBuffer } from '@fluidframework/common-utils';
6
- import { AttachState } from '@fluidframework/container-definitions';
7
- import { createSingleBlobSummary, serializeHandles, SharedObject, } from '@fluidframework/shared-object-base';
8
- import { ChildLogger, PerformanceEvent } from '@fluidframework/telemetry-utils';
9
- import { assert, assertNotUndefined, fail } from '../Common';
10
- import { EditLog } from '../EditLog';
11
- import { Snapshot } from '../Snapshot';
12
- import { initialTree } from '../InitialTree';
13
- import { CachingLogViewer } from '../LogViewer';
14
- import { convertSummaryToReadFormat, deserialize, readFormatVersion } from '../SummaryBackCompatibility';
15
- import { SharedTreeOpType, EditStatus, } from './PersistedTypes';
16
- import { serialize } from './Summary';
17
- import { newEdit } from './GenericEditUtilities';
18
- /**
19
- * Filename where the snapshot is stored.
20
- */
21
- const snapshotFileName = 'header';
22
- const initialSummary = {
23
- version: readFormatVersion,
24
- currentTree: initialTree,
25
- editHistory: {
26
- editChunks: [],
27
- editIds: [],
28
- },
29
- };
30
- /**
31
- * An event emitted by a `SharedTree` to indicate a state change. See {@link ISharedTreeEvents} for event argument information.
32
- * @public
33
- */
34
- export var SharedTreeEvent;
35
- (function (SharedTreeEvent) {
36
- /**
37
- * An edit has been committed to the log.
38
- * This happens when either:
39
- * 1. A locally generated edit is added to the log.
40
- * 2. A remotely generated edit is added to the log.
41
- * Note that, for locally generated edits, this event will not be emitted again when that edit is sequenced.
42
- * Passed the EditId of the committed edit, i.e. supports callbacks of type {@link EditCommittedHandler}.
43
- */
44
- SharedTreeEvent["EditCommitted"] = "committedEdit";
45
- })(SharedTreeEvent || (SharedTreeEvent = {}));
46
- /**
47
- * An event emitted by a `SharedTree` for diagnostic purposes.
48
- * See {@link ISharedTreeEvents} for event argument information.
49
- */
50
- export var SharedTreeDiagnosticEvent;
51
- (function (SharedTreeDiagnosticEvent) {
52
- /**
53
- * A single catch up blob has been uploaded.
54
- */
55
- SharedTreeDiagnosticEvent["CatchUpBlobUploaded"] = "uploadedCatchUpBlob";
56
- /**
57
- * A valid edit (local or remote) has been applied.
58
- * Passed the EditId of the applied edit.
59
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
60
- * and/or due to not caching the output of every edit.
61
- */
62
- SharedTreeDiagnosticEvent["AppliedEdit"] = "appliedEdit";
63
- /**
64
- * An invalid edit (local or remote) has been dropped.
65
- * Passed the EditId of the dropped edit.
66
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
67
- * and/or due to not caching the output of every edit.
68
- */
69
- SharedTreeDiagnosticEvent["DroppedInvalidEdit"] = "droppedInvalidEdit";
70
- /**
71
- * A malformed edit (local or remote) has been dropped.
72
- * Passed the EditId of the dropped edit.
73
- * Note that this may be called multiple times, due to concurrent edits causing reordering,
74
- * and/or due to not caching the output of every edit.
75
- */
76
- SharedTreeDiagnosticEvent["DroppedMalformedEdit"] = "droppedMalformedEdit";
77
- })(SharedTreeDiagnosticEvent || (SharedTreeDiagnosticEvent = {}));
78
- const sharedTreeTelemetryProperties = { all: { isSharedTreeEvent: true } };
79
- /**
80
- * A distributed tree.
81
- * @public
82
- */
83
- export class GenericSharedTree extends SharedObject {
84
- /**
85
- * Create a new SharedTreeFactory.
86
- * @param runtime - The runtime the SharedTree will be associated with
87
- * @param id - Unique ID for the SharedTree
88
- * @param expensiveValidation - Enable expensive asserts.
89
- * @param summarizeHistory - Determines if the history is included in summaries.
90
- */
91
- constructor(runtime, id, transactionFactory, attributes, expensiveValidation = false, summarizeHistory = true) {
92
- super(id, runtime, attributes);
93
- this.expensiveValidation = expensiveValidation;
94
- this.summarizeHistory = summarizeHistory;
95
- this.processEditResult = (editResult, editId) => {
96
- // TODO:#44859: Invalid results should be handled by the app
97
- this.emit(GenericSharedTree.eventFromEditResult(editResult), editId);
98
- };
99
- /**
100
- * Re-computes currentIsOldest and emits an event if it has changed.
101
- * TODO:#55900: Get rid of copy-pasted OldestClientObserver code
102
- */
103
- this.updateOldest = () => {
104
- const oldest = this.computeIsOldest();
105
- if (this.currentIsOldest !== oldest) {
106
- this.currentIsOldest = oldest;
107
- if (oldest) {
108
- this.emit('becameOldest');
109
- }
110
- else {
111
- this.emit('lostOldest');
112
- }
113
- }
114
- };
115
- this.expensiveValidation = expensiveValidation;
116
- this.transactionFactory = transactionFactory;
117
- // This code is somewhat duplicated from OldestClientObserver because it currently depends on the container runtime
118
- // which SharedTree does not have access to.
119
- // TODO:#55900: Get rid of copy-pasted OldestClientObserver code
120
- const quorum = this.runtime.getQuorum();
121
- this.currentIsOldest = this.computeIsOldest();
122
- quorum.on('addMember', this.updateOldest);
123
- quorum.on('removeMember', this.updateOldest);
124
- runtime.on('connected', this.updateOldest);
125
- runtime.on('disconnected', this.updateOldest);
126
- this.logger = ChildLogger.create(runtime.logger, 'SharedTree', sharedTreeTelemetryProperties);
127
- const { editLog, cachingLogViewer } = this.createEditLogFromSummary(initialSummary, this.processEditResult);
128
- this.editLog = editLog;
129
- this.cachingLogViewer = cachingLogViewer;
130
- }
131
- /**
132
- * Viewer for trees defined by editLog. This allows access to views of the tree at different revisions (various points in time).
133
- */
134
- get logViewer() {
135
- return this.cachingLogViewer;
136
- }
137
- /**
138
- * Computes the oldest client in the quorum, true by default if the container is detached and false by default if the client isn't connected.
139
- * TODO:#55900: Get rid of copy-pasted OldestClientObserver code
140
- */
141
- computeIsOldest() {
142
- // If the container is detached, we are the only ones that know about it and are the oldest by default.
143
- if (this.runtime.attachState === AttachState.Detached) {
144
- return true;
145
- }
146
- // If we're not connected we can't be the oldest connected client.
147
- if (!this.runtime.connected) {
148
- return false;
149
- }
150
- assert(this.runtime.clientId !== undefined, 'Client id should be set if connected.');
151
- const quorum = this.runtime.getQuorum();
152
- const selfSequencedClient = quorum.getMember(this.runtime.clientId);
153
- // When in readonly mode our clientId will not be present in the quorum.
154
- if (selfSequencedClient === undefined) {
155
- return false;
156
- }
157
- const members = quorum.getMembers();
158
- for (const sequencedClient of members.values()) {
159
- if (sequencedClient.sequenceNumber < selfSequencedClient.sequenceNumber) {
160
- return false;
161
- }
162
- }
163
- // No member of the quorum was older
164
- return true;
165
- }
166
- /**
167
- * @returns the current view of the tree.
168
- */
169
- get currentView() {
170
- return this.logViewer.getSnapshotInSession(Number.POSITIVE_INFINITY);
171
- }
172
- /**
173
- * @returns the edit history of the tree.
174
- */
175
- get edits() {
176
- return this.editLog;
177
- }
178
- /**
179
- * Convenience helper for applying an edit containing the given changes.
180
- * Opens an edit, applies the given changes, and closes the edit. See (`openEdit()`/`applyChanges()`/`closeEdit()`).
181
- *
182
- * For convenient imperative variants of edits, see `editor`.
183
- * @internal
184
- */
185
- applyEdit(...changes) {
186
- const edit = newEdit(changes);
187
- this.processLocalEdit(edit);
188
- return edit.id;
189
- }
190
- deserializeHandle(serializedHandle) {
191
- const deserializeHandle = this.serializer.parse(serializedHandle);
192
- assert(typeof deserializeHandle === 'object');
193
- return deserializeHandle;
194
- }
195
- /**
196
- * Uploads the edit chunk and sends the chunk starting revision along with the resulting handle as an op.
197
- */
198
- async uploadEditChunk(edits, startRevision) {
199
- try {
200
- const editHandle = await this.runtime.uploadBlob(IsoBuffer.from(JSON.stringify({ edits })));
201
- this.submitLocalMessage({
202
- editHandle: serializeHandles(editHandle, this.serializer, this.handle),
203
- startRevision,
204
- type: SharedTreeOpType.Handle,
205
- });
206
- }
207
- catch (error) {
208
- // If chunk load fails, we will try again later in loadCore on the oldest client so we log the error instead of throwing.
209
- this.logger.sendErrorEvent({
210
- eventName: 'EditChunkUploadFailure',
211
- }, error);
212
- }
213
- }
214
- /**
215
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
216
- */
217
- summarizeCore(serializer) {
218
- return createSingleBlobSummary(snapshotFileName, this.saveSerializedSummary({ serializer }));
219
- }
220
- /**
221
- * Saves this SharedTree into a serialized summary.
222
- *
223
- * @param options - Optional serializer and summarizer to use. If not passed in, SharedTree's serializer and summarizer are used.
224
- * @internal
225
- */
226
- saveSerializedSummary(options) {
227
- const { serializer, summarizer } = options || {};
228
- return serialize(summarizer ? summarizer(this.editLog, this.currentView) : this.saveSummary(), serializer || this.serializer, this.handle);
229
- }
230
- /**
231
- * Saves this SharedTree into a summary.
232
- * @internal
233
- */
234
- saveSummary() {
235
- // If local changes exist, emulate the sequencing of those changes.
236
- // Doing so is necessary so edits created during DataObject.initializingFirstTime are included.
237
- // Doing so is safe because it is guaranteed that the DDS has not yet been attached. This is because summary creation is only
238
- // ever invoked on a DataObject containing local changes when it is attached for the first time. In post-attach flows, an extra
239
- // instance of the DataObject is created for generating summaries and will never have local edits.
240
- if (this.editLog.numberOfLocalEdits > 0) {
241
- assert(this.runtime.attachState !== AttachState.Attached, 'Summarizing should not occur with local edits except on first attach.');
242
- this.editLog.sequenceLocalEdits();
243
- }
244
- assert(this.editLog.numberOfLocalEdits === 0, 'generateSummary must not be called with local edits');
245
- return this.generateSummary(this.editLog);
246
- }
247
- /**
248
- * Initialize shared tree with a summary.
249
- * @internal
250
- */
251
- loadSummary(summary) {
252
- const { editLog, cachingLogViewer } = this.createEditLogFromSummary(summary, this.processEditResult);
253
- this.editLog = editLog;
254
- this.cachingLogViewer = cachingLogViewer;
255
- if (this.runtime.connected) {
256
- const noChunksReadyForUpload = this.editLog.getEditChunksReadyForUpload()[Symbol.iterator]().next().done;
257
- if (noChunksReadyForUpload === undefined || !noChunksReadyForUpload) {
258
- // A client does not become a member of the quorum until it is within the collaboration window.
259
- //
260
- // The collaboration window is the range from the minimum sequence number enforced by the server and head.
261
- // When a client sends an op, they include the last sequence number the client has processed. We call this the reference
262
- // sequence number.
263
- //
264
- // If there are no members in the quorum, we send a no op op in order to have this client added as a member to the quorum.
265
- // This is required so we can ensure only the oldest client will upload blobs during summary load.
266
- if (this.runtime.getQuorum().getMembers().size === 0) {
267
- const noop = {
268
- type: SharedTreeOpType.NoOp,
269
- };
270
- this.submitLocalMessage(noop);
271
- }
272
- else if (this.currentIsOldest) {
273
- void this.uploadCatchUpBlobs();
274
- }
275
- }
276
- // If this client becomes the oldest, it should take care of uploading catch up blobs.
277
- this.on('becameOldest', () => void this.uploadCatchUpBlobs());
278
- }
279
- }
280
- static eventFromEditResult(editStatus) {
281
- switch (editStatus) {
282
- case EditStatus.Applied:
283
- return SharedTreeDiagnosticEvent.AppliedEdit;
284
- case EditStatus.Invalid:
285
- return SharedTreeDiagnosticEvent.DroppedInvalidEdit;
286
- default:
287
- return SharedTreeDiagnosticEvent.DroppedMalformedEdit;
288
- }
289
- }
290
- createEditLogFromSummary(summary, callback) {
291
- const convertedSummary = convertSummaryToReadFormat(summary);
292
- if (typeof convertedSummary === 'string') {
293
- fail(convertedSummary);
294
- }
295
- const { editHistory, currentTree } = convertedSummary;
296
- const currentView = Snapshot.fromTree(currentTree);
297
- const editLog = new EditLog(editHistory, this.logger);
298
- const logViewer = new CachingLogViewer(editLog, Snapshot.fromTree(initialTree),
299
- // TODO:#47830: Store multiple checkpoints in summary.
300
- [[editLog.length, { snapshot: currentView }]], this.expensiveValidation, callback, this.logger, this.transactionFactory, 0);
301
- return { editLog, cachingLogViewer: logViewer };
302
- }
303
- /**
304
- * Upload any full chunks that have yet to be uploaded.
305
- */
306
- async uploadCatchUpBlobs() {
307
- for (const [startRevision, chunk] of this.editLog.getEditChunksReadyForUpload()) {
308
- await this.uploadEditChunk(chunk, startRevision);
309
- this.emit(SharedTreeDiagnosticEvent.CatchUpBlobUploaded);
310
- }
311
- }
312
- /**
313
- * Compares this shared tree to another for equality.
314
- *
315
- * Equality means that the histories as captured by the EditLogs are equal.
316
- *
317
- * Equality does not include:
318
- * - if an edit is open
319
- * - the shared tree's id
320
- * - local vs sequenced status of edits
321
- * - registered event listeners
322
- * - state of caches
323
- * */
324
- equals(sharedTree) {
325
- if (!this.currentView.equals(sharedTree.currentView)) {
326
- return false;
327
- }
328
- return this.editLog.equals(sharedTree.editLog);
329
- }
330
- /**
331
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
332
- */
333
- async loadCore(storage) {
334
- const summaryLoadPerformanceEvent = PerformanceEvent.start(this.logger, { eventName: 'SummaryLoad' });
335
- try {
336
- const newBlob = await storage.readBlob(snapshotFileName);
337
- const blobData = bufferToString(newBlob, 'utf8');
338
- const summary = deserialize(blobData, this.serializer);
339
- if (typeof summary === 'string') {
340
- fail(summary);
341
- }
342
- this.loadSummary(summary);
343
- summaryLoadPerformanceEvent.end({ historySize: this.edits.length });
344
- }
345
- catch (error) {
346
- summaryLoadPerformanceEvent.cancel(undefined, error);
347
- throw error;
348
- }
349
- }
350
- /**
351
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
352
- */
353
- processCore(message, local) {
354
- this.cachingLogViewer.setMinimumSequenceNumber(message.minimumSequenceNumber);
355
- const { type } = message.contents;
356
- if (type === SharedTreeOpType.Handle) {
357
- const { editHandle, startRevision } = message.contents;
358
- this.editLog.processEditChunkHandle(this.deserializeHandle(editHandle), startRevision);
359
- }
360
- else if (type === SharedTreeOpType.Edit) {
361
- const semiSerializedEdit = message.contents.edit;
362
- // semiSerializedEdit may have handles which have been replaced by `serializer.encode`.
363
- // Since there is no API to un-replace them except via parse, re-stringify the edit, then parse it.
364
- // Stringify using JSON, not IFluidSerializer since OPs use JSON directly.
365
- // TODO:Performance:#48025: Avoid this serialization round trip.
366
- const stringEdit = JSON.stringify(semiSerializedEdit);
367
- const parsedEdit = this.serializer.parse(stringEdit);
368
- const edit = parsedEdit;
369
- this.processSequencedEdit(edit, message);
370
- }
371
- }
372
- /**
373
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
374
- */
375
- onDisconnect() {
376
- // Do nothing
377
- }
378
- processSequencedEdit(edit, message) {
379
- const { id: editId } = edit;
380
- const wasLocalEdit = this.editLog.isLocalEdit(editId);
381
- // If the id of the supplied edit matches a non-local edit already present in the log, this would normally be indicative of an error.
382
- // However, the @fluidframework packages prior to 0.37.x have a bug which can cause data corruption by sequencing duplicate edits--
383
- // see discussion on the following github issue: https://github.com/microsoft/FluidFramework/issues/4399
384
- // To work around this issue, we currently tolerate duplicate ops in loaded documents.
385
- // This could be strengthened in the future to only apply to documents which may have been impacted.
386
- const shouldIgnoreEdit = this.editLog.tryGetIndexOfId(editId) !== undefined && !wasLocalEdit;
387
- if (shouldIgnoreEdit) {
388
- return;
389
- }
390
- this.editLog.addSequencedEdit(edit, message);
391
- if (!wasLocalEdit) {
392
- const eventArguments = {
393
- editId,
394
- local: false,
395
- tree: this,
396
- };
397
- this.emit(SharedTreeEvent.EditCommitted, eventArguments);
398
- }
399
- else {
400
- // If this client created the edit that filled up a chunk, it is responsible for uploading that chunk.
401
- const lastPair = this.editLog.getLastEditChunk();
402
- if (lastPair !== undefined) {
403
- const [startRevision, chunk] = lastPair;
404
- const edits = assertNotUndefined(chunk.edits);
405
- if (edits.length === this.editLog.editsPerChunk) {
406
- void this.uploadEditChunk(edits, startRevision);
407
- }
408
- }
409
- }
410
- }
411
- /**
412
- * Add an `Edit` directly.
413
- * External users should use one of the more specialized functions, like applyEdit which handles constructing the actual `Edit` object.
414
- * This is exposed as it is useful for testing, particularly with invalid and malformed Edits.
415
- * @internal
416
- */
417
- processLocalEdit(edit) {
418
- const editOp = {
419
- type: SharedTreeOpType.Edit,
420
- edit,
421
- };
422
- // IFluidHandles are not allowed in Ops.
423
- // Ops can contain Fluid's Serializable (for payloads) which allows IFluidHandles.
424
- // So replace the handles before sending:
425
- const semiSerialized = this.serializer.encode(editOp, this.handle);
426
- // TODO:44711: what should be passed in when unattached?
427
- this.submitLocalMessage(semiSerialized);
428
- this.editLog.addLocalEdit(edit);
429
- const eventArguments = {
430
- editId: edit.id,
431
- local: true,
432
- tree: this,
433
- };
434
- this.emit(SharedTreeEvent.EditCommitted, eventArguments);
435
- }
436
- getRuntime() {
437
- return this.runtime;
438
- }
439
- applyStashedOp() {
440
- throw new Error('not implemented');
441
- }
442
- }
443
- //# sourceMappingURL=GenericSharedTree.js.map