@fluid-experimental/tree 0.58.2002 → 0.58.3000-61081

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (815) hide show
  1. package/README.md +9 -9
  2. package/dist/ChangeCompression.d.ts +39 -0
  3. package/dist/ChangeCompression.d.ts.map +1 -0
  4. package/dist/ChangeCompression.js +117 -0
  5. package/dist/ChangeCompression.js.map +1 -0
  6. package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -100
  7. package/dist/ChangeTypes.d.ts.map +1 -0
  8. package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
  9. package/dist/ChangeTypes.js.map +1 -0
  10. package/dist/Checkout.d.ts +39 -27
  11. package/dist/Checkout.d.ts.map +1 -1
  12. package/dist/Checkout.js +59 -31
  13. package/dist/Checkout.js.map +1 -1
  14. package/dist/Common.d.ts +175 -38
  15. package/dist/Common.d.ts.map +1 -1
  16. package/dist/Common.js +240 -103
  17. package/dist/Common.js.map +1 -1
  18. package/dist/EagerCheckout.d.ts +24 -0
  19. package/dist/EagerCheckout.d.ts.map +1 -0
  20. package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
  21. package/dist/EagerCheckout.js.map +1 -0
  22. package/dist/EditLog.d.ts +77 -63
  23. package/dist/EditLog.d.ts.map +1 -1
  24. package/dist/EditLog.js +85 -48
  25. package/dist/EditLog.js.map +1 -1
  26. package/dist/EditUtilities.d.ts +168 -0
  27. package/dist/EditUtilities.d.ts.map +1 -0
  28. package/dist/EditUtilities.js +373 -0
  29. package/dist/EditUtilities.js.map +1 -0
  30. package/dist/EventTypes.d.ts +73 -0
  31. package/dist/EventTypes.d.ts.map +1 -0
  32. package/dist/EventTypes.js +78 -0
  33. package/dist/EventTypes.js.map +1 -0
  34. package/dist/Forest.d.ts +29 -7
  35. package/dist/Forest.d.ts.map +1 -1
  36. package/dist/Forest.js +60 -36
  37. package/dist/Forest.js.map +1 -1
  38. package/dist/HistoryEditFactory.d.ts +20 -0
  39. package/dist/HistoryEditFactory.d.ts.map +1 -0
  40. package/dist/HistoryEditFactory.js +226 -0
  41. package/dist/HistoryEditFactory.js.map +1 -0
  42. package/dist/IdConversion.d.ts +12 -0
  43. package/dist/IdConversion.d.ts.map +1 -0
  44. package/dist/IdConversion.js +98 -0
  45. package/dist/IdConversion.js.map +1 -0
  46. package/dist/Identifiers.d.ts +89 -2
  47. package/dist/Identifiers.d.ts.map +1 -1
  48. package/dist/Identifiers.js +10 -0
  49. package/dist/Identifiers.js.map +1 -1
  50. package/dist/InitialTree.d.ts +2 -2
  51. package/dist/InitialTree.d.ts.map +1 -1
  52. package/dist/InitialTree.js +2 -1
  53. package/dist/InitialTree.js.map +1 -1
  54. package/dist/LazyCheckout.d.ts +28 -0
  55. package/dist/LazyCheckout.d.ts.map +1 -0
  56. package/dist/LazyCheckout.js +44 -0
  57. package/dist/LazyCheckout.js.map +1 -0
  58. package/dist/LogViewer.d.ts +130 -85
  59. package/dist/LogViewer.d.ts.map +1 -1
  60. package/dist/LogViewer.js +110 -85
  61. package/dist/LogViewer.js.map +1 -1
  62. package/dist/MergeHealth.d.ts +221 -0
  63. package/dist/MergeHealth.d.ts.map +1 -0
  64. package/dist/MergeHealth.js +263 -0
  65. package/dist/MergeHealth.js.map +1 -0
  66. package/dist/NodeIdUtilities.d.ts +90 -0
  67. package/dist/NodeIdUtilities.d.ts.map +1 -0
  68. package/dist/NodeIdUtilities.js +60 -0
  69. package/dist/NodeIdUtilities.js.map +1 -0
  70. package/dist/PayloadUtilities.d.ts +42 -0
  71. package/dist/PayloadUtilities.d.ts.map +1 -0
  72. package/dist/PayloadUtilities.js +114 -0
  73. package/dist/PayloadUtilities.js.map +1 -0
  74. package/dist/ReconciliationPath.d.ts +18 -13
  75. package/dist/ReconciliationPath.d.ts.map +1 -1
  76. package/dist/ReconciliationPath.js.map +1 -1
  77. package/dist/RevisionValueCache.d.ts +11 -2
  78. package/dist/RevisionValueCache.d.ts.map +1 -1
  79. package/dist/RevisionValueCache.js +2 -3
  80. package/dist/RevisionValueCache.js.map +1 -1
  81. package/dist/RevisionView.d.ts +83 -0
  82. package/dist/RevisionView.d.ts.map +1 -0
  83. package/dist/RevisionView.js +182 -0
  84. package/dist/RevisionView.js.map +1 -0
  85. package/dist/SerializationUtilities.d.ts +36 -0
  86. package/dist/SerializationUtilities.d.ts.map +1 -0
  87. package/dist/SerializationUtilities.js +102 -0
  88. package/dist/SerializationUtilities.js.map +1 -0
  89. package/dist/SharedTree.d.ts +400 -0
  90. package/dist/SharedTree.d.ts.map +1 -0
  91. package/dist/SharedTree.js +1064 -0
  92. package/dist/SharedTree.js.map +1 -0
  93. package/dist/SharedTreeEncoder.d.ts +102 -0
  94. package/dist/SharedTreeEncoder.d.ts.map +1 -0
  95. package/dist/SharedTreeEncoder.js +313 -0
  96. package/dist/SharedTreeEncoder.js.map +1 -0
  97. package/dist/StringInterner.d.ts +46 -0
  98. package/dist/StringInterner.d.ts.map +1 -0
  99. package/dist/StringInterner.js +61 -0
  100. package/dist/StringInterner.js.map +1 -0
  101. package/dist/Summary.d.ts +40 -0
  102. package/dist/Summary.d.ts.map +1 -0
  103. package/dist/Summary.js +23 -0
  104. package/dist/Summary.js.map +1 -0
  105. package/dist/SummaryBackCompatibility.d.ts +22 -22
  106. package/dist/SummaryBackCompatibility.d.ts.map +1 -1
  107. package/dist/SummaryBackCompatibility.js +30 -33
  108. package/dist/SummaryBackCompatibility.js.map +1 -1
  109. package/dist/SummaryTestUtilities.d.ts +31 -0
  110. package/dist/SummaryTestUtilities.d.ts.map +1 -0
  111. package/dist/SummaryTestUtilities.js +37 -0
  112. package/dist/SummaryTestUtilities.js.map +1 -0
  113. package/dist/Transaction.d.ts +53 -0
  114. package/dist/Transaction.d.ts.map +1 -0
  115. package/dist/Transaction.js +76 -0
  116. package/dist/Transaction.js.map +1 -0
  117. package/dist/TransactionInternal.d.ts +543 -0
  118. package/dist/TransactionInternal.d.ts.map +1 -0
  119. package/dist/TransactionInternal.js +622 -0
  120. package/dist/TransactionInternal.js.map +1 -0
  121. package/dist/TreeCompressor.d.ts +37 -0
  122. package/dist/TreeCompressor.d.ts.map +1 -0
  123. package/dist/TreeCompressor.js +132 -0
  124. package/dist/TreeCompressor.js.map +1 -0
  125. package/dist/TreeNodeHandle.d.ts +12 -18
  126. package/dist/TreeNodeHandle.d.ts.map +1 -1
  127. package/dist/TreeNodeHandle.js +13 -23
  128. package/dist/TreeNodeHandle.js.map +1 -1
  129. package/dist/TreeView.d.ts +166 -0
  130. package/dist/TreeView.d.ts.map +1 -0
  131. package/dist/TreeView.js +217 -0
  132. package/dist/TreeView.js.map +1 -0
  133. package/dist/TreeViewUtilities.d.ts +21 -0
  134. package/dist/TreeViewUtilities.d.ts.map +1 -0
  135. package/dist/TreeViewUtilities.js +77 -0
  136. package/dist/TreeViewUtilities.js.map +1 -0
  137. package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  138. package/dist/UndoRedoHandler.d.ts.map +1 -0
  139. package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
  140. package/dist/UndoRedoHandler.js.map +1 -0
  141. package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  142. package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  143. package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
  144. package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
  145. package/dist/id-compressor/IdCompressor.d.ts +389 -0
  146. package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
  147. package/dist/id-compressor/IdCompressor.js +1353 -0
  148. package/dist/id-compressor/IdCompressor.js.map +1 -0
  149. package/dist/id-compressor/IdRange.d.ts +11 -0
  150. package/dist/id-compressor/IdRange.d.ts.map +1 -0
  151. package/dist/id-compressor/IdRange.js +29 -0
  152. package/dist/id-compressor/IdRange.js.map +1 -0
  153. package/dist/id-compressor/NumericUuid.d.ts +63 -0
  154. package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
  155. package/dist/id-compressor/NumericUuid.js +377 -0
  156. package/dist/id-compressor/NumericUuid.js.map +1 -0
  157. package/dist/id-compressor/index.d.ts +12 -0
  158. package/dist/id-compressor/index.d.ts.map +1 -0
  159. package/dist/id-compressor/index.js +26 -0
  160. package/dist/id-compressor/index.js.map +1 -0
  161. package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  162. package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  163. package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
  164. package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
  165. package/dist/id-compressor/persisted-types/index.d.ts +6 -0
  166. package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
  167. package/dist/id-compressor/persisted-types/index.js +18 -0
  168. package/dist/id-compressor/persisted-types/index.js.map +1 -0
  169. package/dist/index.d.ts +29 -9
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +50 -35
  172. package/dist/index.js.map +1 -1
  173. package/dist/persisted-types/0.0.2.d.ts +385 -0
  174. package/dist/persisted-types/0.0.2.d.ts.map +1 -0
  175. package/dist/persisted-types/0.0.2.js +113 -0
  176. package/dist/persisted-types/0.0.2.js.map +1 -0
  177. package/dist/persisted-types/0.1.1.d.ts +314 -0
  178. package/dist/persisted-types/0.1.1.d.ts.map +1 -0
  179. package/dist/persisted-types/0.1.1.js +153 -0
  180. package/dist/persisted-types/0.1.1.js.map +1 -0
  181. package/dist/persisted-types/index.d.ts +7 -0
  182. package/dist/persisted-types/index.d.ts.map +1 -0
  183. package/dist/persisted-types/index.js +20 -0
  184. package/dist/persisted-types/index.js.map +1 -0
  185. package/docs/0-1-1-Compression.md +228 -0
  186. package/docs/Breaking-Change-Migration.md +52 -0
  187. package/docs/Compression.md +2 -2
  188. package/docs/Telemetry.md +43 -0
  189. package/lib/ChangeCompression.d.ts +39 -0
  190. package/lib/ChangeCompression.d.ts.map +1 -0
  191. package/lib/ChangeCompression.js +111 -0
  192. package/lib/ChangeCompression.js.map +1 -0
  193. package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -100
  194. package/lib/ChangeTypes.d.ts.map +1 -0
  195. package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
  196. package/lib/ChangeTypes.js.map +1 -0
  197. package/lib/Checkout.d.ts +39 -27
  198. package/lib/Checkout.d.ts.map +1 -1
  199. package/lib/Checkout.js +51 -23
  200. package/lib/Checkout.js.map +1 -1
  201. package/lib/Common.d.ts +175 -38
  202. package/lib/Common.d.ts.map +1 -1
  203. package/lib/Common.js +226 -101
  204. package/lib/Common.js.map +1 -1
  205. package/lib/EagerCheckout.d.ts +24 -0
  206. package/lib/EagerCheckout.d.ts.map +1 -0
  207. package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
  208. package/lib/EagerCheckout.js.map +1 -0
  209. package/lib/EditLog.d.ts +77 -63
  210. package/lib/EditLog.d.ts.map +1 -1
  211. package/lib/EditLog.js +83 -47
  212. package/lib/EditLog.js.map +1 -1
  213. package/lib/EditUtilities.d.ts +168 -0
  214. package/lib/EditUtilities.d.ts.map +1 -0
  215. package/lib/EditUtilities.js +353 -0
  216. package/lib/EditUtilities.js.map +1 -0
  217. package/lib/EventTypes.d.ts +73 -0
  218. package/lib/EventTypes.d.ts.map +1 -0
  219. package/lib/EventTypes.js +75 -0
  220. package/lib/EventTypes.js.map +1 -0
  221. package/lib/Forest.d.ts +29 -7
  222. package/lib/Forest.d.ts.map +1 -1
  223. package/lib/Forest.js +58 -35
  224. package/lib/Forest.js.map +1 -1
  225. package/lib/HistoryEditFactory.d.ts +20 -0
  226. package/lib/HistoryEditFactory.d.ts.map +1 -0
  227. package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
  228. package/lib/HistoryEditFactory.js.map +1 -0
  229. package/lib/IdConversion.d.ts +12 -0
  230. package/lib/IdConversion.d.ts.map +1 -0
  231. package/lib/IdConversion.js +91 -0
  232. package/lib/IdConversion.js.map +1 -0
  233. package/lib/Identifiers.d.ts +89 -2
  234. package/lib/Identifiers.d.ts.map +1 -1
  235. package/lib/Identifiers.js +8 -1
  236. package/lib/Identifiers.js.map +1 -1
  237. package/lib/InitialTree.d.ts +2 -2
  238. package/lib/InitialTree.d.ts.map +1 -1
  239. package/lib/InitialTree.js +2 -1
  240. package/lib/InitialTree.js.map +1 -1
  241. package/lib/LazyCheckout.d.ts +28 -0
  242. package/lib/LazyCheckout.d.ts.map +1 -0
  243. package/lib/LazyCheckout.js +40 -0
  244. package/lib/LazyCheckout.js.map +1 -0
  245. package/lib/LogViewer.d.ts +130 -85
  246. package/lib/LogViewer.d.ts.map +1 -1
  247. package/lib/LogViewer.js +102 -77
  248. package/lib/LogViewer.js.map +1 -1
  249. package/lib/MergeHealth.d.ts +221 -0
  250. package/lib/MergeHealth.d.ts.map +1 -0
  251. package/lib/MergeHealth.js +258 -0
  252. package/lib/MergeHealth.js.map +1 -0
  253. package/lib/NodeIdUtilities.d.ts +90 -0
  254. package/lib/NodeIdUtilities.d.ts.map +1 -0
  255. package/lib/NodeIdUtilities.js +53 -0
  256. package/lib/NodeIdUtilities.js.map +1 -0
  257. package/lib/PayloadUtilities.d.ts +42 -0
  258. package/lib/PayloadUtilities.d.ts.map +1 -0
  259. package/lib/PayloadUtilities.js +110 -0
  260. package/lib/PayloadUtilities.js.map +1 -0
  261. package/lib/ReconciliationPath.d.ts +18 -13
  262. package/lib/ReconciliationPath.d.ts.map +1 -1
  263. package/lib/ReconciliationPath.js.map +1 -1
  264. package/lib/RevisionValueCache.d.ts +11 -2
  265. package/lib/RevisionValueCache.d.ts.map +1 -1
  266. package/lib/RevisionValueCache.js +2 -3
  267. package/lib/RevisionValueCache.js.map +1 -1
  268. package/lib/RevisionView.d.ts +83 -0
  269. package/lib/RevisionView.d.ts.map +1 -0
  270. package/lib/RevisionView.js +175 -0
  271. package/lib/RevisionView.js.map +1 -0
  272. package/lib/SerializationUtilities.d.ts +36 -0
  273. package/lib/SerializationUtilities.d.ts.map +1 -0
  274. package/lib/SerializationUtilities.js +95 -0
  275. package/lib/SerializationUtilities.js.map +1 -0
  276. package/lib/SharedTree.d.ts +400 -0
  277. package/lib/SharedTree.d.ts.map +1 -0
  278. package/lib/SharedTree.js +1059 -0
  279. package/lib/SharedTree.js.map +1 -0
  280. package/lib/SharedTreeEncoder.d.ts +102 -0
  281. package/lib/SharedTreeEncoder.d.ts.map +1 -0
  282. package/lib/SharedTreeEncoder.js +308 -0
  283. package/lib/SharedTreeEncoder.js.map +1 -0
  284. package/lib/StringInterner.d.ts +46 -0
  285. package/lib/StringInterner.d.ts.map +1 -0
  286. package/lib/StringInterner.js +57 -0
  287. package/lib/StringInterner.js.map +1 -0
  288. package/lib/Summary.d.ts +40 -0
  289. package/lib/Summary.d.ts.map +1 -0
  290. package/lib/Summary.js +19 -0
  291. package/lib/Summary.js.map +1 -0
  292. package/lib/SummaryBackCompatibility.d.ts +22 -22
  293. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  294. package/lib/SummaryBackCompatibility.js +29 -32
  295. package/lib/SummaryBackCompatibility.js.map +1 -1
  296. package/lib/SummaryTestUtilities.d.ts +31 -0
  297. package/lib/SummaryTestUtilities.d.ts.map +1 -0
  298. package/lib/SummaryTestUtilities.js +32 -0
  299. package/lib/SummaryTestUtilities.js.map +1 -0
  300. package/lib/Transaction.d.ts +53 -0
  301. package/lib/Transaction.d.ts.map +1 -0
  302. package/lib/Transaction.js +72 -0
  303. package/lib/Transaction.js.map +1 -0
  304. package/lib/TransactionInternal.d.ts +543 -0
  305. package/lib/TransactionInternal.d.ts.map +1 -0
  306. package/lib/TransactionInternal.js +618 -0
  307. package/lib/TransactionInternal.js.map +1 -0
  308. package/lib/TreeCompressor.d.ts +37 -0
  309. package/lib/TreeCompressor.d.ts.map +1 -0
  310. package/lib/TreeCompressor.js +128 -0
  311. package/lib/TreeCompressor.js.map +1 -0
  312. package/lib/TreeNodeHandle.d.ts +12 -18
  313. package/lib/TreeNodeHandle.d.ts.map +1 -1
  314. package/lib/TreeNodeHandle.js +14 -24
  315. package/lib/TreeNodeHandle.js.map +1 -1
  316. package/lib/TreeView.d.ts +166 -0
  317. package/lib/TreeView.d.ts.map +1 -0
  318. package/lib/TreeView.js +213 -0
  319. package/lib/TreeView.js.map +1 -0
  320. package/lib/TreeViewUtilities.d.ts +21 -0
  321. package/lib/TreeViewUtilities.d.ts.map +1 -0
  322. package/lib/TreeViewUtilities.js +71 -0
  323. package/lib/TreeViewUtilities.js.map +1 -0
  324. package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
  325. package/lib/UndoRedoHandler.d.ts.map +1 -0
  326. package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
  327. package/lib/UndoRedoHandler.js.map +1 -0
  328. package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
  329. package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
  330. package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
  331. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
  332. package/lib/id-compressor/IdCompressor.d.ts +389 -0
  333. package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
  334. package/lib/id-compressor/IdCompressor.js +1343 -0
  335. package/lib/id-compressor/IdCompressor.js.map +1 -0
  336. package/lib/id-compressor/IdRange.d.ts +11 -0
  337. package/lib/id-compressor/IdRange.d.ts.map +1 -0
  338. package/lib/id-compressor/IdRange.js +25 -0
  339. package/lib/id-compressor/IdRange.js.map +1 -0
  340. package/lib/id-compressor/NumericUuid.d.ts +63 -0
  341. package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
  342. package/lib/id-compressor/NumericUuid.js +365 -0
  343. package/lib/id-compressor/NumericUuid.js.map +1 -0
  344. package/lib/id-compressor/index.d.ts +12 -0
  345. package/lib/id-compressor/index.d.ts.map +1 -0
  346. package/lib/id-compressor/index.js +12 -0
  347. package/lib/id-compressor/index.js.map +1 -0
  348. package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
  349. package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
  350. package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
  351. package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
  352. package/lib/id-compressor/persisted-types/index.d.ts +6 -0
  353. package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
  354. package/lib/id-compressor/persisted-types/index.js +6 -0
  355. package/lib/id-compressor/persisted-types/index.js.map +1 -0
  356. package/lib/index.d.ts +29 -9
  357. package/lib/index.d.ts.map +1 -1
  358. package/lib/index.js +23 -6
  359. package/lib/index.js.map +1 -1
  360. package/lib/persisted-types/0.0.2.d.ts +385 -0
  361. package/lib/persisted-types/0.0.2.d.ts.map +1 -0
  362. package/lib/persisted-types/0.0.2.js +110 -0
  363. package/lib/persisted-types/0.0.2.js.map +1 -0
  364. package/lib/persisted-types/0.1.1.d.ts +314 -0
  365. package/lib/persisted-types/0.1.1.d.ts.map +1 -0
  366. package/lib/persisted-types/0.1.1.js +150 -0
  367. package/lib/persisted-types/0.1.1.js.map +1 -0
  368. package/lib/persisted-types/index.d.ts +7 -0
  369. package/lib/persisted-types/index.d.ts.map +1 -0
  370. package/lib/persisted-types/index.js +8 -0
  371. package/lib/persisted-types/index.js.map +1 -0
  372. package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
  373. package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
  374. package/lib/test/AppendOnlySortedMap.tests.js +169 -0
  375. package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
  376. package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
  377. package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
  378. package/lib/test/ChangeCompression.tests.js +145 -0
  379. package/lib/test/ChangeCompression.tests.js.map +1 -0
  380. package/lib/test/Checkout.tests.d.ts +2 -3
  381. package/lib/test/Checkout.tests.d.ts.map +1 -1
  382. package/lib/test/Checkout.tests.js +126 -69
  383. package/lib/test/Checkout.tests.js.map +1 -1
  384. package/lib/test/Common.tests.js +60 -2
  385. package/lib/test/Common.tests.js.map +1 -1
  386. package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
  387. package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
  388. package/lib/test/EagerCheckout.tests.js +20 -0
  389. package/lib/test/EagerCheckout.tests.js.map +1 -0
  390. package/lib/test/Edit.tests.js +22 -14
  391. package/lib/test/Edit.tests.js.map +1 -1
  392. package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
  393. package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
  394. package/lib/test/EditLog.perf.tests.js +30 -0
  395. package/lib/test/EditLog.perf.tests.js.map +1 -0
  396. package/lib/test/EditLog.tests.js +10 -6
  397. package/lib/test/EditLog.tests.js.map +1 -1
  398. package/lib/test/EditUtilities.tests.d.ts +6 -0
  399. package/lib/test/EditUtilities.tests.d.ts.map +1 -0
  400. package/lib/test/EditUtilities.tests.js +503 -0
  401. package/lib/test/EditUtilities.tests.js.map +1 -0
  402. package/lib/test/Forest.perf.tests.d.ts +6 -0
  403. package/lib/test/Forest.perf.tests.d.ts.map +1 -0
  404. package/lib/test/Forest.perf.tests.js +133 -0
  405. package/lib/test/Forest.perf.tests.js.map +1 -0
  406. package/lib/test/Forest.tests.js +54 -27
  407. package/lib/test/Forest.tests.js.map +1 -1
  408. package/lib/test/GenericTransaction.tests.js +12 -3
  409. package/lib/test/GenericTransaction.tests.js.map +1 -1
  410. package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
  411. package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
  412. package/lib/test/HistoryEditFactory.tests.js +90 -0
  413. package/lib/test/HistoryEditFactory.tests.js.map +1 -0
  414. package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
  415. package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
  416. package/lib/test/IdCompressor.perf.tests.js +304 -0
  417. package/lib/test/IdCompressor.perf.tests.js.map +1 -0
  418. package/lib/test/IdCompressor.tests.d.ts +6 -0
  419. package/lib/test/IdCompressor.tests.d.ts.map +1 -0
  420. package/lib/test/IdCompressor.tests.js +1075 -0
  421. package/lib/test/IdCompressor.tests.js.map +1 -0
  422. package/lib/test/IdConversion.tests.d.ts +6 -0
  423. package/lib/test/IdConversion.tests.d.ts.map +1 -0
  424. package/lib/test/IdConversion.tests.js +36 -0
  425. package/lib/test/IdConversion.tests.js.map +1 -0
  426. package/lib/test/LazyCheckout.tests.d.ts +6 -0
  427. package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
  428. package/lib/test/LazyCheckout.tests.js +22 -0
  429. package/lib/test/LazyCheckout.tests.js.map +1 -0
  430. package/lib/test/LogViewer.tests.js +269 -187
  431. package/lib/test/LogViewer.tests.js.map +1 -1
  432. package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
  433. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
  434. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
  435. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
  436. package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
  437. package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
  438. package/lib/test/NumericUuid.perf.tests.js +68 -0
  439. package/lib/test/NumericUuid.perf.tests.js.map +1 -0
  440. package/lib/test/NumericUuid.tests.d.ts +6 -0
  441. package/lib/test/NumericUuid.tests.d.ts.map +1 -0
  442. package/lib/test/NumericUuid.tests.js +191 -0
  443. package/lib/test/NumericUuid.tests.js.map +1 -0
  444. package/lib/test/RevisionView.tests.d.ts +6 -0
  445. package/lib/test/RevisionView.tests.d.ts.map +1 -0
  446. package/lib/test/RevisionView.tests.js +133 -0
  447. package/lib/test/RevisionView.tests.js.map +1 -0
  448. package/lib/test/SharedTree.perf.tests.d.ts +6 -0
  449. package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
  450. package/lib/test/SharedTree.perf.tests.js +39 -0
  451. package/lib/test/SharedTree.perf.tests.js.map +1 -0
  452. package/lib/test/SharedTree.tests.js +15 -3
  453. package/lib/test/SharedTree.tests.js.map +1 -1
  454. package/lib/test/StringInterner.tests.d.ts +6 -0
  455. package/lib/test/StringInterner.tests.d.ts.map +1 -0
  456. package/lib/test/StringInterner.tests.js +71 -0
  457. package/lib/test/StringInterner.tests.js.map +1 -0
  458. package/lib/test/Summary.tests.d.ts +8 -0
  459. package/lib/test/Summary.tests.d.ts.map +1 -0
  460. package/lib/test/Summary.tests.js +407 -0
  461. package/lib/test/Summary.tests.js.map +1 -0
  462. package/lib/test/Transaction.tests.js +76 -330
  463. package/lib/test/Transaction.tests.js.map +1 -1
  464. package/lib/test/TransactionInternal.tests.d.ts +6 -0
  465. package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
  466. package/lib/test/TransactionInternal.tests.js +568 -0
  467. package/lib/test/TransactionInternal.tests.js.map +1 -0
  468. package/lib/test/TreeCompression.tests.d.ts +6 -0
  469. package/lib/test/TreeCompression.tests.d.ts.map +1 -0
  470. package/lib/test/TreeCompression.tests.js +292 -0
  471. package/lib/test/TreeCompression.tests.js.map +1 -0
  472. package/lib/test/TreeView.tests.d.ts +6 -0
  473. package/lib/test/TreeView.tests.d.ts.map +1 -0
  474. package/lib/test/TreeView.tests.js +147 -0
  475. package/lib/test/TreeView.tests.js.map +1 -0
  476. package/lib/test/UndoRedoHandler.tests.js +2 -2
  477. package/lib/test/UndoRedoHandler.tests.js.map +1 -1
  478. package/lib/test/Virtualization.tests.js +147 -62
  479. package/lib/test/Virtualization.tests.js.map +1 -1
  480. package/lib/test/fuzz/Generators.d.ts +19 -0
  481. package/lib/test/fuzz/Generators.d.ts.map +1 -0
  482. package/lib/test/fuzz/Generators.js +420 -0
  483. package/lib/test/fuzz/Generators.js.map +1 -0
  484. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
  485. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
  486. package/lib/test/fuzz/SharedTreeFuzzTests.js +200 -0
  487. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
  488. package/lib/test/fuzz/Types.d.ts +133 -0
  489. package/lib/test/fuzz/Types.d.ts.map +1 -0
  490. package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
  491. package/lib/test/fuzz/Types.js.map +1 -0
  492. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
  493. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
  494. package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
  495. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
  496. package/lib/test/utilities/MockTransaction.d.ts +26 -7
  497. package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
  498. package/lib/test/utilities/MockTransaction.js +40 -11
  499. package/lib/test/utilities/MockTransaction.js.map +1 -1
  500. package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
  501. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
  502. package/lib/test/utilities/PendingLocalStateTests.js +105 -0
  503. package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
  504. package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
  505. package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
  506. package/lib/test/utilities/SharedTreeTests.js +696 -439
  507. package/lib/test/utilities/SharedTreeTests.js.map +1 -1
  508. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
  509. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
  510. package/lib/test/utilities/SharedTreeVersioningTests.js +345 -0
  511. package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
  512. package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
  513. package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
  514. package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
  515. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
  516. package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
  517. package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
  518. package/lib/test/utilities/SummarySizeTests.js +158 -0
  519. package/lib/test/utilities/SummarySizeTests.js.map +1 -0
  520. package/lib/test/utilities/TestCommon.d.ts +9 -0
  521. package/lib/test/utilities/TestCommon.d.ts.map +1 -0
  522. package/lib/test/utilities/TestCommon.js +13 -0
  523. package/lib/test/utilities/TestCommon.js.map +1 -0
  524. package/lib/test/utilities/TestNode.d.ts +140 -0
  525. package/lib/test/utilities/TestNode.d.ts.map +1 -0
  526. package/lib/test/utilities/TestNode.js +292 -0
  527. package/lib/test/utilities/TestNode.js.map +1 -0
  528. package/lib/test/utilities/TestUtilities.d.ts +84 -70
  529. package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
  530. package/lib/test/utilities/TestUtilities.js +218 -143
  531. package/lib/test/utilities/TestUtilities.js.map +1 -1
  532. package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
  533. package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
  534. package/lib/test/utilities/UndoRedoTests.js +138 -149
  535. package/lib/test/utilities/UndoRedoTests.js.map +1 -1
  536. package/package.json +19 -14
  537. package/src/ChangeCompression.ts +159 -0
  538. package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -120
  539. package/src/Checkout.ts +81 -52
  540. package/src/Common.ts +317 -117
  541. package/src/EagerCheckout.ts +38 -0
  542. package/src/EditLog.ts +153 -100
  543. package/src/EditUtilities.ts +559 -0
  544. package/src/EventTypes.ts +74 -0
  545. package/src/Forest.ts +81 -73
  546. package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
  547. package/src/IdConversion.ts +125 -0
  548. package/src/Identifiers.ts +101 -1
  549. package/src/InitialTree.ts +5 -4
  550. package/src/LazyCheckout.ts +51 -0
  551. package/src/LogViewer.ts +242 -166
  552. package/src/MergeHealth.ts +447 -0
  553. package/src/NodeIdUtilities.ts +141 -0
  554. package/src/PayloadUtilities.ts +124 -0
  555. package/src/ReconciliationPath.ts +18 -13
  556. package/src/RevisionValueCache.ts +14 -5
  557. package/src/RevisionView.ts +252 -0
  558. package/src/SerializationUtilities.ts +130 -0
  559. package/src/SharedTree.ts +1448 -0
  560. package/src/SharedTreeEncoder.ts +493 -0
  561. package/src/StringInterner.ts +72 -0
  562. package/src/Summary.ts +48 -0
  563. package/src/SummaryBackCompatibility.ts +47 -57
  564. package/src/SummaryTestUtilities.ts +54 -0
  565. package/src/Transaction.ts +94 -0
  566. package/src/TransactionInternal.ts +1088 -0
  567. package/src/TreeCompressor.ts +222 -0
  568. package/src/TreeNodeHandle.ts +19 -32
  569. package/src/TreeView.ts +321 -0
  570. package/src/TreeViewUtilities.ts +77 -0
  571. package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
  572. package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
  573. package/src/id-compressor/IdCompressor.md +3 -0
  574. package/src/id-compressor/IdCompressor.ts +1848 -0
  575. package/src/id-compressor/IdRange.ts +33 -0
  576. package/src/id-compressor/NumericUuid.ts +414 -0
  577. package/src/id-compressor/index.ts +13 -0
  578. package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
  579. package/src/id-compressor/persisted-types/README.md +3 -0
  580. package/src/id-compressor/persisted-types/index.ts +6 -0
  581. package/src/index.ts +119 -59
  582. package/src/persisted-types/0.0.2.ts +442 -0
  583. package/src/persisted-types/0.1.1.ts +476 -0
  584. package/src/persisted-types/README.md +22 -0
  585. package/src/persisted-types/index.ts +9 -0
  586. package/.mocharc.js +0 -41
  587. package/api/tree.api.md +0 -729
  588. package/dist/BasicCheckout.d.ts +0 -23
  589. package/dist/BasicCheckout.d.ts.map +0 -1
  590. package/dist/BasicCheckout.js.map +0 -1
  591. package/dist/Snapshot.d.ts +0 -198
  592. package/dist/Snapshot.d.ts.map +0 -1
  593. package/dist/Snapshot.js +0 -267
  594. package/dist/Snapshot.js.map +0 -1
  595. package/dist/SnapshotUtilities.d.ts +0 -29
  596. package/dist/SnapshotUtilities.d.ts.map +0 -1
  597. package/dist/SnapshotUtilities.js +0 -73
  598. package/dist/SnapshotUtilities.js.map +0 -1
  599. package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
  600. package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
  601. package/dist/anchored-edits/AnchorResolution.js +0 -162
  602. package/dist/anchored-edits/AnchorResolution.js.map +0 -1
  603. package/dist/anchored-edits/Factory.d.ts +0 -56
  604. package/dist/anchored-edits/Factory.d.ts.map +0 -1
  605. package/dist/anchored-edits/Factory.js +0 -79
  606. package/dist/anchored-edits/Factory.js.map +0 -1
  607. package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
  608. package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
  609. package/dist/anchored-edits/PersistedTypes.js +0 -131
  610. package/dist/anchored-edits/PersistedTypes.js.map +0 -1
  611. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  612. package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  613. package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
  614. package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  615. package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  616. package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  617. package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
  618. package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
  619. package/dist/anchored-edits/index.d.ts +0 -10
  620. package/dist/anchored-edits/index.d.ts.map +0 -1
  621. package/dist/anchored-edits/index.js +0 -34
  622. package/dist/anchored-edits/index.js.map +0 -1
  623. package/dist/default-edits/EditUtilities.d.ts +0 -57
  624. package/dist/default-edits/EditUtilities.d.ts.map +0 -1
  625. package/dist/default-edits/EditUtilities.js +0 -192
  626. package/dist/default-edits/EditUtilities.js.map +0 -1
  627. package/dist/default-edits/Factory.d.ts +0 -56
  628. package/dist/default-edits/Factory.d.ts.map +0 -1
  629. package/dist/default-edits/Factory.js +0 -79
  630. package/dist/default-edits/Factory.js.map +0 -1
  631. package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
  632. package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
  633. package/dist/default-edits/HistoryEditFactory.js +0 -187
  634. package/dist/default-edits/HistoryEditFactory.js.map +0 -1
  635. package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
  636. package/dist/default-edits/PersistedTypes.js.map +0 -1
  637. package/dist/default-edits/SharedTree.d.ts +0 -111
  638. package/dist/default-edits/SharedTree.d.ts.map +0 -1
  639. package/dist/default-edits/SharedTree.js +0 -124
  640. package/dist/default-edits/SharedTree.js.map +0 -1
  641. package/dist/default-edits/Summary.d.ts +0 -15
  642. package/dist/default-edits/Summary.d.ts.map +0 -1
  643. package/dist/default-edits/Summary.js +0 -35
  644. package/dist/default-edits/Summary.js.map +0 -1
  645. package/dist/default-edits/Transaction.d.ts +0 -41
  646. package/dist/default-edits/Transaction.d.ts.map +0 -1
  647. package/dist/default-edits/Transaction.js +0 -225
  648. package/dist/default-edits/Transaction.js.map +0 -1
  649. package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
  650. package/dist/default-edits/UndoRedoHandler.js.map +0 -1
  651. package/dist/default-edits/index.d.ts +0 -13
  652. package/dist/default-edits/index.d.ts.map +0 -1
  653. package/dist/default-edits/index.js +0 -41
  654. package/dist/default-edits/index.js.map +0 -1
  655. package/dist/generic/GenericEditUtilities.d.ts +0 -26
  656. package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
  657. package/dist/generic/GenericEditUtilities.js +0 -45
  658. package/dist/generic/GenericEditUtilities.js.map +0 -1
  659. package/dist/generic/GenericSharedTree.d.ts +0 -221
  660. package/dist/generic/GenericSharedTree.d.ts.map +0 -1
  661. package/dist/generic/GenericSharedTree.js +0 -447
  662. package/dist/generic/GenericSharedTree.js.map +0 -1
  663. package/dist/generic/GenericTransaction.d.ts +0 -87
  664. package/dist/generic/GenericTransaction.d.ts.map +0 -1
  665. package/dist/generic/GenericTransaction.js +0 -144
  666. package/dist/generic/GenericTransaction.js.map +0 -1
  667. package/dist/generic/PersistedTypes.d.ts +0 -194
  668. package/dist/generic/PersistedTypes.d.ts.map +0 -1
  669. package/dist/generic/PersistedTypes.js +0 -42
  670. package/dist/generic/PersistedTypes.js.map +0 -1
  671. package/dist/generic/Summary.d.ts +0 -63
  672. package/dist/generic/Summary.d.ts.map +0 -1
  673. package/dist/generic/Summary.js +0 -64
  674. package/dist/generic/Summary.js.map +0 -1
  675. package/dist/generic/index.d.ts +0 -10
  676. package/dist/generic/index.d.ts.map +0 -1
  677. package/dist/generic/index.js +0 -26
  678. package/dist/generic/index.js.map +0 -1
  679. package/lib/BasicCheckout.d.ts +0 -23
  680. package/lib/BasicCheckout.d.ts.map +0 -1
  681. package/lib/BasicCheckout.js.map +0 -1
  682. package/lib/Snapshot.d.ts +0 -198
  683. package/lib/Snapshot.d.ts.map +0 -1
  684. package/lib/Snapshot.js +0 -263
  685. package/lib/Snapshot.js.map +0 -1
  686. package/lib/SnapshotUtilities.d.ts +0 -29
  687. package/lib/SnapshotUtilities.d.ts.map +0 -1
  688. package/lib/SnapshotUtilities.js +0 -67
  689. package/lib/SnapshotUtilities.js.map +0 -1
  690. package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
  691. package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
  692. package/lib/anchored-edits/AnchorResolution.js +0 -152
  693. package/lib/anchored-edits/AnchorResolution.js.map +0 -1
  694. package/lib/anchored-edits/Factory.d.ts +0 -56
  695. package/lib/anchored-edits/Factory.d.ts.map +0 -1
  696. package/lib/anchored-edits/Factory.js +0 -74
  697. package/lib/anchored-edits/Factory.js.map +0 -1
  698. package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
  699. package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
  700. package/lib/anchored-edits/PersistedTypes.js +0 -128
  701. package/lib/anchored-edits/PersistedTypes.js.map +0 -1
  702. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
  703. package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
  704. package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
  705. package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
  706. package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
  707. package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
  708. package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
  709. package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
  710. package/lib/anchored-edits/index.d.ts +0 -10
  711. package/lib/anchored-edits/index.d.ts.map +0 -1
  712. package/lib/anchored-edits/index.js +0 -11
  713. package/lib/anchored-edits/index.js.map +0 -1
  714. package/lib/default-edits/EditUtilities.d.ts +0 -57
  715. package/lib/default-edits/EditUtilities.d.ts.map +0 -1
  716. package/lib/default-edits/EditUtilities.js +0 -181
  717. package/lib/default-edits/EditUtilities.js.map +0 -1
  718. package/lib/default-edits/Factory.d.ts +0 -56
  719. package/lib/default-edits/Factory.d.ts.map +0 -1
  720. package/lib/default-edits/Factory.js +0 -74
  721. package/lib/default-edits/Factory.js.map +0 -1
  722. package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
  723. package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
  724. package/lib/default-edits/HistoryEditFactory.js.map +0 -1
  725. package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
  726. package/lib/default-edits/PersistedTypes.js.map +0 -1
  727. package/lib/default-edits/SharedTree.d.ts +0 -111
  728. package/lib/default-edits/SharedTree.d.ts.map +0 -1
  729. package/lib/default-edits/SharedTree.js +0 -100
  730. package/lib/default-edits/SharedTree.js.map +0 -1
  731. package/lib/default-edits/Summary.d.ts +0 -15
  732. package/lib/default-edits/Summary.d.ts.map +0 -1
  733. package/lib/default-edits/Summary.js +0 -31
  734. package/lib/default-edits/Summary.js.map +0 -1
  735. package/lib/default-edits/Transaction.d.ts +0 -41
  736. package/lib/default-edits/Transaction.d.ts.map +0 -1
  737. package/lib/default-edits/Transaction.js +0 -221
  738. package/lib/default-edits/Transaction.js.map +0 -1
  739. package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
  740. package/lib/default-edits/UndoRedoHandler.js.map +0 -1
  741. package/lib/default-edits/index.d.ts +0 -13
  742. package/lib/default-edits/index.d.ts.map +0 -1
  743. package/lib/default-edits/index.js +0 -14
  744. package/lib/default-edits/index.js.map +0 -1
  745. package/lib/generic/GenericEditUtilities.d.ts +0 -26
  746. package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
  747. package/lib/generic/GenericEditUtilities.js +0 -38
  748. package/lib/generic/GenericEditUtilities.js.map +0 -1
  749. package/lib/generic/GenericSharedTree.d.ts +0 -221
  750. package/lib/generic/GenericSharedTree.d.ts.map +0 -1
  751. package/lib/generic/GenericSharedTree.js +0 -443
  752. package/lib/generic/GenericSharedTree.js.map +0 -1
  753. package/lib/generic/GenericTransaction.d.ts +0 -87
  754. package/lib/generic/GenericTransaction.d.ts.map +0 -1
  755. package/lib/generic/GenericTransaction.js +0 -140
  756. package/lib/generic/GenericTransaction.js.map +0 -1
  757. package/lib/generic/PersistedTypes.d.ts +0 -194
  758. package/lib/generic/PersistedTypes.d.ts.map +0 -1
  759. package/lib/generic/PersistedTypes.js +0 -39
  760. package/lib/generic/PersistedTypes.js.map +0 -1
  761. package/lib/generic/Summary.d.ts +0 -63
  762. package/lib/generic/Summary.d.ts.map +0 -1
  763. package/lib/generic/Summary.js +0 -58
  764. package/lib/generic/Summary.js.map +0 -1
  765. package/lib/generic/index.d.ts +0 -10
  766. package/lib/generic/index.d.ts.map +0 -1
  767. package/lib/generic/index.js +0 -11
  768. package/lib/generic/index.js.map +0 -1
  769. package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
  770. package/lib/test/Anchors.glassBox.tests.js +0 -410
  771. package/lib/test/Anchors.glassBox.tests.js.map +0 -1
  772. package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
  773. package/lib/test/BasicCheckout.tests.js +0 -8
  774. package/lib/test/BasicCheckout.tests.js.map +0 -1
  775. package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
  776. package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
  777. package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
  778. package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
  779. package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
  780. package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
  781. package/lib/test/Snapshot.tests.d.ts.map +0 -1
  782. package/lib/test/Snapshot.tests.js +0 -96
  783. package/lib/test/Snapshot.tests.js.map +0 -1
  784. package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
  785. package/lib/test/SnapshotUtilities.tests.js +0 -168
  786. package/lib/test/SnapshotUtilities.tests.js.map +0 -1
  787. package/lib/test/undoRedoStackManager.d.ts +0 -26
  788. package/lib/test/undoRedoStackManager.d.ts.map +0 -1
  789. package/lib/test/undoRedoStackManager.js +0 -176
  790. package/lib/test/undoRedoStackManager.js.map +0 -1
  791. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
  792. package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
  793. package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
  794. package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
  795. package/src/BasicCheckout.ts +0 -34
  796. package/src/Snapshot.ts +0 -363
  797. package/src/SnapshotUtilities.ts +0 -88
  798. package/src/anchored-edits/AnchorResolution.ts +0 -442
  799. package/src/anchored-edits/Factory.ts +0 -94
  800. package/src/anchored-edits/PersistedTypes.ts +0 -310
  801. package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
  802. package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
  803. package/src/anchored-edits/index.ts +0 -21
  804. package/src/default-edits/EditUtilities.ts +0 -220
  805. package/src/default-edits/Factory.ts +0 -94
  806. package/src/default-edits/SharedTree.ts +0 -174
  807. package/src/default-edits/Summary.ts +0 -44
  808. package/src/default-edits/Transaction.ts +0 -262
  809. package/src/default-edits/index.ts +0 -29
  810. package/src/generic/GenericEditUtilities.ts +0 -46
  811. package/src/generic/GenericSharedTree.ts +0 -593
  812. package/src/generic/GenericTransaction.ts +0 -194
  813. package/src/generic/PersistedTypes.ts +0 -221
  814. package/src/generic/Summary.ts +0 -113
  815. package/src/generic/index.ts +0 -41
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ensureSessionUuid = exports.incrementUuid = exports.numericUuidEquals = exports.createSessionId = exports.isStableId = exports.assertIsStableId = exports.numericUuidFromStableId = exports.stableIdFromNumericUuid = exports.getPositiveDelta = void 0;
8
+ /* eslint-disable no-bitwise */
9
+ const uuid_1 = require("uuid");
10
+ const Common_1 = require("../Common");
11
+ const bitsInNumericUuidInteger = 52; // Not tunable. Do not change.
12
+ const nibblesInNumericUuidInteger = bitsInNumericUuidInteger / 4;
13
+ const stringEntryLength = 22;
14
+ const maxNumericUuidInteger = 2 ** bitsInNumericUuidInteger - 1;
15
+ const fiftyThirdBit = 2 ** 52;
16
+ /**
17
+ * Calculates the numeric delta between a and b (i.e. a - b).
18
+ * @param a an uuid
19
+ * @param b an other uuid
20
+ * @param maxDelta the maximum integer delta (inclusive) to tolerate.
21
+ * @returns undefined if the delta is negative or greater than `maxDelta`
22
+ */
23
+ function getPositiveDelta(a, b, maxDelta) {
24
+ const [stringEntryA, lowNumberA] = a;
25
+ const [stringEntryB, lowNumberB] = b;
26
+ if (stringEntryA === stringEntryB) {
27
+ const difference = lowNumberA - lowNumberB;
28
+ if (difference >= 0 && difference <= maxDelta) {
29
+ return difference;
30
+ }
31
+ return undefined;
32
+ }
33
+ const highNumberA = Number.parseInt(ChunkMath.Upper.parse(stringEntryA), 16);
34
+ const highNumberB = Number.parseInt(ChunkMath.Upper.parse(stringEntryB), 16);
35
+ let subtractHigh = highNumberA - highNumberB;
36
+ if (Math.abs(subtractHigh) > 1) {
37
+ // If the high bits differ by more than 1, then there is no chance that any lower bits could compensate
38
+ return undefined;
39
+ }
40
+ let midNumberA = ChunkMath.getNumericValue(ChunkMath.Variant.parse(stringEntryA));
41
+ const midNumberB = ChunkMath.getNumericValue(ChunkMath.Variant.parse(stringEntryB));
42
+ let subtractLow = lowNumberA - lowNumberB;
43
+ if (subtractLow < 0) {
44
+ midNumberA -= 1;
45
+ subtractLow += fiftyThirdBit;
46
+ }
47
+ let subtractMid = midNumberA - midNumberB;
48
+ if (subtractMid < 0) {
49
+ subtractHigh -= 1;
50
+ subtractMid += ChunkMath.twentyThirdBit;
51
+ }
52
+ if (subtractHigh !== 0) {
53
+ // a < b, no positive delta, or
54
+ // a > b by much more than MAX_SAFE_INTEGER
55
+ return undefined;
56
+ }
57
+ if (subtractMid > 1) {
58
+ return undefined;
59
+ }
60
+ else {
61
+ const trueDelta = fiftyThirdBit * subtractMid + subtractLow;
62
+ return trueDelta > maxDelta ? undefined : trueDelta;
63
+ }
64
+ }
65
+ exports.getPositiveDelta = getPositiveDelta;
66
+ // Pre-allocated array of strings of zeros.
67
+ // Used to pad hex strings up to 52 bits
68
+ const zeros = [];
69
+ for (let i = 0; i < nibblesInNumericUuidInteger; i++) {
70
+ zeros.push('0'.repeat(i));
71
+ }
72
+ function padToLengthWithZeros(str, count) {
73
+ return str.length === count ? str : zeros[count - str.length] + str;
74
+ }
75
+ /**
76
+ * @param offset an optional offset to increment the returned StableId
77
+ * @returns the string representation of a `NumericUuid`.
78
+ */
79
+ function stableIdFromNumericUuid(uuid, offset = 0) {
80
+ const lowerAdd = uuid[1] + offset;
81
+ // Common fast-path
82
+ if (lowerAdd <= maxNumericUuidInteger) {
83
+ const lowerString = padToLengthWithZeros(lowerAdd.toString(16), nibblesInNumericUuidInteger);
84
+ return `${uuid[0] + lowerString.slice(0, 1)}-${lowerString.slice(1)}`;
85
+ }
86
+ return stableIdFromNumericUuid(incrementUuid(uuid, offset));
87
+ }
88
+ exports.stableIdFromNumericUuid = stableIdFromNumericUuid;
89
+ /**
90
+ * @param stableId a minimal uuid string
91
+ * @returns a numeric representation of `stableId`.
92
+ */
93
+ function numericUuidFromStableId(stableId) {
94
+ const uuid = new Array(2);
95
+ uuid[0] = stableId.slice(0, stringEntryLength);
96
+ uuid[1] = Number.parseInt(ChunkMath.Lower.parse(stableId), 16);
97
+ return uuid;
98
+ }
99
+ exports.numericUuidFromStableId = numericUuidFromStableId;
100
+ /**
101
+ * Asserts that the supplied uuid is a stable ID.
102
+ */
103
+ function assertIsStableId(uuid) {
104
+ Common_1.assert(isStableId(uuid), `${uuid} is not a StableId.`);
105
+ return uuid;
106
+ }
107
+ exports.assertIsStableId = assertIsStableId;
108
+ const charCode0 = '0'.charCodeAt(0);
109
+ const charCode9 = '9'.charCodeAt(0);
110
+ const charCodea = 'a'.charCodeAt(0);
111
+ const charCodef = 'f'.charCodeAt(0);
112
+ const charCodeA = 'A'.charCodeAt(0);
113
+ const charCodeF = 'F'.charCodeAt(0);
114
+ /**
115
+ * Returns whether the supplied string is a v4 variant 2 uuid.
116
+ */
117
+ function isStableId(str) {
118
+ if (str.length !== 36) {
119
+ return false;
120
+ }
121
+ for (let i = 0; i < str.length; i++) {
122
+ switch (i) {
123
+ case 8:
124
+ case 13:
125
+ case 18:
126
+ case 23: {
127
+ if (str.charAt(i) !== '-') {
128
+ return false;
129
+ }
130
+ break;
131
+ }
132
+ case 14: {
133
+ if (str.charAt(i) !== '4') {
134
+ return false;
135
+ }
136
+ break;
137
+ }
138
+ case 19: {
139
+ const c = str.charAt(i);
140
+ if (c !== '8' && c !== '9' && c !== 'a' && c !== 'b') {
141
+ return false;
142
+ }
143
+ break;
144
+ }
145
+ default: {
146
+ const code = str.charCodeAt(i);
147
+ const isUuidChar = (code >= charCode0 && code <= charCode9) ||
148
+ (code >= charCodea && code <= charCodef) ||
149
+ (code >= charCodeA && code <= charCodeF);
150
+ if (!isUuidChar) {
151
+ return false;
152
+ }
153
+ break;
154
+ }
155
+ }
156
+ }
157
+ return true;
158
+ }
159
+ exports.isStableId = isStableId;
160
+ /**
161
+ * Creates a session base ID.
162
+ * This method (rather than standard uuid generation methods) should be used to generate session IDs.
163
+ */
164
+ function createSessionId() {
165
+ const uuid = assertIsStableId(uuid_1.v4());
166
+ return ensureSessionUuid(uuid);
167
+ }
168
+ exports.createSessionId = createSessionId;
169
+ /**
170
+ * Compares numeric uuids for equality.
171
+ */
172
+ function numericUuidEquals(a, b) {
173
+ return a[0] === b[0] && a[1] === b[1];
174
+ }
175
+ exports.numericUuidEquals = numericUuidEquals;
176
+ /**
177
+ * The maximum value that can be contained in the upper string region of a numeric UUID (i.e. the string region excluding the version
178
+ * nibble and the variant chunk)
179
+ */
180
+ const maxUpperNumber = 2 ** 48 - 1;
181
+ /**
182
+ * Increments the uuid. `amount` must be a positive integer.
183
+ * @returns the result of incrementing the uuid by `amount`.`
184
+ */
185
+ function incrementUuid(uuid, amount) {
186
+ /*
187
+ * UUIDs incremented beyond the max UUID "ffffffff-ffff-4fff-bfff-ffffffffffff" will cause a failure.
188
+ * Also, some reserved bits of the v4 UUID must be treated as immutable (e.g. the version and
189
+ * variant bits) and thus must not be incremented.
190
+ */
191
+ let newUuid;
192
+ const result = uuid[1] + amount;
193
+ if (result <= maxNumericUuidInteger) {
194
+ // The new number still fits within the number region of a numeric UUID.
195
+ // Incrementing is usually done with small amounts, so this is the dominantly common case.
196
+ newUuid = [uuid[0], result];
197
+ }
198
+ else {
199
+ // The numeric UUID's number region has overflowed. We will need to carry the overflow into the variant chunk (see `VariantChunk`).
200
+ /** The amount left over after filling up the rest of the uuid's number region with the increment amount */
201
+ const remainder = amount - (maxNumericUuidInteger - uuid[1]) - 1;
202
+ const stringEntry = uuid[0];
203
+ const [newVariantChunkString, carried] = ChunkMath.increment(stringEntry);
204
+ if (carried) {
205
+ // The variant chunk itself also overflowed. We'll need to carry the overflow further, into the upper string region of the UUID.
206
+ const upperString = ChunkMath.Upper.parse(stringEntry);
207
+ const upperNumber = Number.parseInt(upperString, 16);
208
+ Common_1.assert(upperNumber <= maxUpperNumber);
209
+ const newUpperNumber = upperNumber + 1;
210
+ if (newUpperNumber > maxUpperNumber) {
211
+ Common_1.fail('Exceeded maximum numeric UUID');
212
+ }
213
+ else {
214
+ // The variant chunk overflowed but the upper string region did not. Splice in the incremented string region.
215
+ const newUpperChunk = padToLengthWithZeros(newUpperNumber.toString(16), 12);
216
+ newUuid = [
217
+ `${ChunkMath.Upper.hyphenate(newUpperChunk)}-4${ChunkMath.Variant.hyphenate(newVariantChunkString)}`,
218
+ remainder,
219
+ ];
220
+ }
221
+ }
222
+ else {
223
+ // The variant chunk did not overflow, so just splice it back in.
224
+ newUuid = [
225
+ `${ChunkMath.Upper.slice(stringEntry)}-4${ChunkMath.Variant.hyphenate(newVariantChunkString)}`,
226
+ remainder,
227
+ ];
228
+ }
229
+ }
230
+ return newUuid;
231
+ }
232
+ exports.incrementUuid = incrementUuid;
233
+ var ChunkMath;
234
+ (function (ChunkMath) {
235
+ /*
236
+ * Recall the UUID diagram from the top of this file which describes the layout of a Numeric UUID. To implement addition, we define
237
+ * another region called the "variant chunk" which overlaps with the "string" region. Note that it is just beneath the required v4 uuid
238
+ * version identifier (the 13th nibble 'V' which is always '4' in a v4 UUID) and just above the "number" region of the layout. It
239
+ * contains inside of it the v4 UUID variant identifier bits as well (see https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.1).
240
+ *
241
+ * UUUUUUUU-UUUU-VUUU-vUUU-UUUUUUUUUUUU - the uuid
242
+ * SSSSSSSS SSSS SSSS SSS - array[0]: string
243
+ * N NNNNNNNNNNNN - array[1]: integer
244
+ * VVV-VVV - the variant chunk
245
+ *
246
+ * By defining the variant chunk in this way it is simple to splice in the v4 UUID version identifier ('V') just above it and any
247
+ * "bit math" required due to the fact that the variant identifier bits ('v') do not fill up an entire nibble is handled within it.
248
+ * The variant chunk is made up of 6 nibbles. Note the "vv" which denotes the two bits used for the v4 UUID variant identifier:
249
+ *
250
+ * AAAA BBBB CCCC vvDD EEEE FFFF
251
+ *
252
+ * Since we'll be needing to "skip" the variant bits ("vv") when doing addition, we define a a few masks which will be used below to
253
+ * separate the variant chunk into pieces before recombining it:
254
+ */
255
+ // AAAA BBBB CCCC vvDD EEEE FFFF
256
+ const upperVariantChunkMask = 0xfff000; // XXXX XXXX XXXX
257
+ const variantBitMask = 0x800; // XX
258
+ const middleVariantChunkMask = 0x300; // XX
259
+ const lowerVariantChunkMask = 0xff; // XXXX XXXX
260
+ /** The maximum numeric value that can be represented by the numerically relevant bits in the variant chunk */
261
+ const maxVariantNumber = 2 ** 22 - 1;
262
+ ChunkMath.twentyThirdBit = 2 ** 22;
263
+ /** the upper chunk, denoted by 'U's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */
264
+ let Upper;
265
+ (function (Upper) {
266
+ function parse(stringEntry) {
267
+ return stringEntry.slice(0, 8) + stringEntry.slice(9, 13);
268
+ }
269
+ Upper.parse = parse;
270
+ function hyphenate(upperChunk) {
271
+ return `${upperChunk.slice(0, 8)}-${upperChunk.slice(8)}`;
272
+ }
273
+ Upper.hyphenate = hyphenate;
274
+ function slice(stringEntry) {
275
+ return stringEntry.slice(0, 13);
276
+ }
277
+ Upper.slice = slice;
278
+ })(Upper = ChunkMath.Upper || (ChunkMath.Upper = {}));
279
+ /** the variant chunk, denoted by 'V's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */
280
+ let Variant;
281
+ (function (Variant) {
282
+ function parse(stringEntry) {
283
+ return stringEntry.slice(15, 18) + stringEntry.slice(19, 22);
284
+ }
285
+ Variant.parse = parse;
286
+ function hyphenate(variantChunk) {
287
+ return `${variantChunk.slice(0, 3)}-${variantChunk.slice(3)}`;
288
+ }
289
+ Variant.hyphenate = hyphenate;
290
+ })(Variant = ChunkMath.Variant || (ChunkMath.Variant = {}));
291
+ /** the lower chunk, denoted by 'L's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */
292
+ let Lower;
293
+ (function (Lower) {
294
+ function parse(stableId) {
295
+ return stableId.slice(stringEntryLength, stringEntryLength + 1) + stableId.slice(stringEntryLength + 2);
296
+ }
297
+ Lower.parse = parse;
298
+ function hyphenate(lowerChunk) {
299
+ return `${lowerChunk.slice(0, 1)}-${lowerChunk.slice(1)}`;
300
+ }
301
+ Lower.hyphenate = hyphenate;
302
+ })(Lower = ChunkMath.Lower || (ChunkMath.Lower = {}));
303
+ /**
304
+ * Returns the number representation of the given bits corresponding to the variant chunk. The value is derived by parsing all bits
305
+ * except for reserved bits (i.e. the variant bits).
306
+ * @param variantChunkBits
307
+ */
308
+ function getNumericValue(variantChunk) {
309
+ const variantChunkBits = Number.parseInt(variantChunk, 16);
310
+ const upperVariantBits = (variantChunkBits & upperVariantChunkMask) >> 2;
311
+ const middleVariantBits = variantChunkBits & middleVariantChunkMask;
312
+ const lowerVariantBits = variantChunkBits & lowerVariantChunkMask;
313
+ return upperVariantBits + middleVariantBits + lowerVariantBits;
314
+ }
315
+ ChunkMath.getNumericValue = getNumericValue;
316
+ /**
317
+ * Given the string portion of a numeric uuid, add one to it.
318
+ * @returns the resulting hex string and whether or not the new value overflowed, i.e. it exceeds `maxVariantNumber`. In this case,
319
+ * the resulting hex string will wrap around to its minimum value '000b00'
320
+ */
321
+ function increment(stringEntry) {
322
+ // To implement addition, the variant identifier bits are extracted from the variant chunk, the chunk is interpreted as a number,
323
+ // that number is incremented by 1, and then the variant identifier bits are returned as we convert the number back into a hex
324
+ // string.
325
+ // This diagram may be helpful for seeing how the nibbles line up before and after the variant identifier bits are extracted. The
326
+ // letters used for each nibble ("AAAA", "BBBB") etc. are arbitrary and are simply there to differentiate the nibbles as they shift.
327
+ // --------------------------------
328
+ // 1. AAAA BBBB CCCC vvDD EEEE FFFF
329
+ // 2. AA AABB BBCC CCDD EEEE FFFF
330
+ // 3. AA AABB BBCC CCDD EEEE FFFF
331
+ // + 1
332
+ // = GG GGHH HHII IIJJ JJKK KKLL
333
+ // 4. GGGG HHHH IIII vvJJ JJKK KKLL
334
+ // 1. The variant chunk is given as a 6 character (6 nibble) hex string, where the fourth nibble contains the variant bits
335
+ // 2. The numerically important bits (i.e. not the variant identifier bits vv which are constant) are extracted into a single number
336
+ const variantChunk = Variant.parse(stringEntry);
337
+ const variantNumber = getNumericValue(variantChunk);
338
+ Common_1.assert(variantNumber <= maxVariantNumber);
339
+ // 3. Add one to the variant number to produce our new variant number.
340
+ const newVariantNumber = variantNumber + 1;
341
+ // 4. The variant identifier bits are added back into the number, which is then turned back into a hex string
342
+ const newUpperVariantBits = (newVariantNumber & (upperVariantChunkMask >> 2)) << 2;
343
+ const newMiddleVariantBits = (newVariantNumber & middleVariantChunkMask) | variantBitMask; // Add the variant bits back in
344
+ const newLowerVariantBits = newVariantNumber & lowerVariantChunkMask;
345
+ const newVariantChunkBits = newUpperVariantBits + newMiddleVariantBits + newLowerVariantBits;
346
+ const newVariantChunk = padToLengthWithZeros(newVariantChunkBits.toString(16), variantChunk.length);
347
+ return [newVariantChunk, newVariantNumber > maxVariantNumber];
348
+ }
349
+ ChunkMath.increment = increment;
350
+ })(ChunkMath || (ChunkMath = {}));
351
+ const maxUpperUuid = 'ffffffff-ffff-4fff-bf';
352
+ const maxNibbleCount = [...maxUpperUuid].filter((n) => n === 'f').length;
353
+ const newNibbles = ['7', 'b', 'd', 'e'];
354
+ function isMaxUpperNibble(index) {
355
+ return maxUpperUuid.charAt(index) === 'f';
356
+ }
357
+ /**
358
+ * Any session uuid with all of its highish bits set is in danger of overflowing after fewer than 2^53 increments.
359
+ * By zeroing one of those bits at random, potential overflow is prevented.
360
+ */
361
+ function ensureSessionUuid(uuid) {
362
+ if (uuid.startsWith(maxUpperUuid)) {
363
+ const targetNibble = Math.floor(Math.random() * maxNibbleCount);
364
+ let actualIndex = 0;
365
+ for (let nibbleIndex = 0; nibbleIndex < targetNibble && !isMaxUpperNibble(actualIndex); actualIndex += 1) {
366
+ if (isMaxUpperNibble(actualIndex)) {
367
+ nibbleIndex++;
368
+ }
369
+ }
370
+ const newNibble = newNibbles[Math.floor(Math.random() * newNibbles.length)]; // Randomly choose a bit to zero
371
+ const newUuid = uuid.slice(0, actualIndex) + newNibble + uuid.slice(actualIndex + 1);
372
+ return newUuid;
373
+ }
374
+ return uuid;
375
+ }
376
+ exports.ensureSessionUuid = ensureSessionUuid;
377
+ //# sourceMappingURL=NumericUuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumericUuid.js","sourceRoot":"","sources":["../../src/id-compressor/NumericUuid.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\nimport { v4 } from 'uuid';\nimport { assert, fail } from '../Common';\nimport { SessionId, StableId } from '../Identifiers';\n\n/**\n * A UUID (128 bit identifier) optimized for use as a 128 bit unsigned integer with fast addition and toString operations.\n * The string entry is the upper 76 bits of the uuid and the integer entry holds the lower 52 bits:\n * UUUUUUUU-UUUU-VUUU-vUUU-UUUUUUUUUUUU - the uuid\n * SSSSSSSS-SSSS-SSSS-SSS - array[0]: string\n * N NNNNNNNNNNNN - array[1]: integer\n * The integer keeps the common case cost of incrementing and computing deltas very low.\n * The string optimizes toString by caching the the majority of the resulting string.\n */\nexport type NumericUuid = readonly [string, number] & {\n\treadonly NumericUuid: '9132ea20-a811-4756-85f8-aa6da5ca90f8';\n};\n\nconst bitsInNumericUuidInteger = 52; // Not tunable. Do not change.\nconst nibblesInNumericUuidInteger = bitsInNumericUuidInteger / 4;\nconst stringEntryLength = 22;\nconst maxNumericUuidInteger = 2 ** bitsInNumericUuidInteger - 1;\nconst fiftyThirdBit = 2 ** 52;\n\n/**\n * Calculates the numeric delta between a and b (i.e. a - b).\n * @param a an uuid\n * @param b an other uuid\n * @param maxDelta the maximum integer delta (inclusive) to tolerate.\n * @returns undefined if the delta is negative or greater than `maxDelta`\n */\nexport function getPositiveDelta(a: NumericUuid, b: NumericUuid, maxDelta: number): number | undefined {\n\tconst [stringEntryA, lowNumberA] = a;\n\tconst [stringEntryB, lowNumberB] = b;\n\n\tif (stringEntryA === stringEntryB) {\n\t\tconst difference = lowNumberA - lowNumberB;\n\t\tif (difference >= 0 && difference <= maxDelta) {\n\t\t\treturn difference;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tconst highNumberA = Number.parseInt(ChunkMath.Upper.parse(stringEntryA), 16);\n\tconst highNumberB = Number.parseInt(ChunkMath.Upper.parse(stringEntryB), 16);\n\n\tlet subtractHigh = highNumberA - highNumberB;\n\tif (Math.abs(subtractHigh) > 1) {\n\t\t// If the high bits differ by more than 1, then there is no chance that any lower bits could compensate\n\t\treturn undefined;\n\t}\n\n\tlet midNumberA = ChunkMath.getNumericValue(ChunkMath.Variant.parse(stringEntryA));\n\tconst midNumberB = ChunkMath.getNumericValue(ChunkMath.Variant.parse(stringEntryB));\n\n\tlet subtractLow = lowNumberA - lowNumberB;\n\tif (subtractLow < 0) {\n\t\tmidNumberA -= 1;\n\t\tsubtractLow += fiftyThirdBit;\n\t}\n\n\tlet subtractMid = midNumberA - midNumberB;\n\tif (subtractMid < 0) {\n\t\tsubtractHigh -= 1;\n\t\tsubtractMid += ChunkMath.twentyThirdBit;\n\t}\n\n\tif (subtractHigh !== 0) {\n\t\t// a < b, no positive delta, or\n\t\t// a > b by much more than MAX_SAFE_INTEGER\n\t\treturn undefined;\n\t}\n\n\tif (subtractMid > 1) {\n\t\treturn undefined;\n\t} else {\n\t\tconst trueDelta = fiftyThirdBit * subtractMid + subtractLow;\n\t\treturn trueDelta > maxDelta ? undefined : trueDelta;\n\t}\n}\n\n// Pre-allocated array of strings of zeros.\n// Used to pad hex strings up to 52 bits\nconst zeros: string[] = [];\nfor (let i = 0; i < nibblesInNumericUuidInteger; i++) {\n\tzeros.push('0'.repeat(i));\n}\n\nfunction padToLengthWithZeros(str: string, count: number): string {\n\treturn str.length === count ? str : zeros[count - str.length] + str;\n}\n\n/**\n * @param offset an optional offset to increment the returned StableId\n * @returns the string representation of a `NumericUuid`.\n */\nexport function stableIdFromNumericUuid(uuid: NumericUuid, offset = 0): StableId {\n\tconst lowerAdd = uuid[1] + offset;\n\t// Common fast-path\n\tif (lowerAdd <= maxNumericUuidInteger) {\n\t\tconst lowerString = padToLengthWithZeros(lowerAdd.toString(16), nibblesInNumericUuidInteger);\n\t\treturn `${uuid[0] + lowerString.slice(0, 1)}-${lowerString.slice(1)}` as StableId;\n\t}\n\treturn stableIdFromNumericUuid(incrementUuid(uuid, offset));\n}\n\n/**\n * @param stableId a minimal uuid string\n * @returns a numeric representation of `stableId`.\n */\nexport function numericUuidFromStableId(stableId: StableId): NumericUuid {\n\tconst uuid: (string | number)[] = new Array(2);\n\tuuid[0] = stableId.slice(0, stringEntryLength);\n\tuuid[1] = Number.parseInt(ChunkMath.Lower.parse(stableId), 16);\n\treturn uuid as readonly (number | string)[] as NumericUuid;\n}\n\n/**\n * Asserts that the supplied uuid is a stable ID.\n */\nexport function assertIsStableId(uuid: string): StableId {\n\tassert(isStableId(uuid), `${uuid} is not a StableId.`);\n\treturn uuid;\n}\n\nconst charCode0 = '0'.charCodeAt(0);\nconst charCode9 = '9'.charCodeAt(0);\nconst charCodea = 'a'.charCodeAt(0);\nconst charCodef = 'f'.charCodeAt(0);\nconst charCodeA = 'A'.charCodeAt(0);\nconst charCodeF = 'F'.charCodeAt(0);\n\n/**\n * Returns whether the supplied string is a v4 variant 2 uuid.\n */\nexport function isStableId(str: string): str is StableId {\n\tif (str.length !== 36) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < str.length; i++) {\n\t\tswitch (i) {\n\t\t\tcase 8:\n\t\t\tcase 13:\n\t\t\tcase 18:\n\t\t\tcase 23: {\n\t\t\t\tif (str.charAt(i) !== '-') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 14: {\n\t\t\t\tif (str.charAt(i) !== '4') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 19: {\n\t\t\t\tconst c = str.charAt(i);\n\t\t\t\tif (c !== '8' && c !== '9' && c !== 'a' && c !== 'b') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tconst code = str.charCodeAt(i);\n\t\t\t\tconst isUuidChar =\n\t\t\t\t\t(code >= charCode0 && code <= charCode9) ||\n\t\t\t\t\t(code >= charCodea && code <= charCodef) ||\n\t\t\t\t\t(code >= charCodeA && code <= charCodeF);\n\n\t\t\t\tif (!isUuidChar) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Creates a session base ID.\n * This method (rather than standard uuid generation methods) should be used to generate session IDs.\n */\nexport function createSessionId(): SessionId {\n\tconst uuid = assertIsStableId(v4());\n\treturn ensureSessionUuid(uuid);\n}\n\n/**\n * Compares numeric uuids for equality.\n */\nexport function numericUuidEquals(a: NumericUuid, b: NumericUuid): boolean {\n\treturn a[0] === b[0] && a[1] === b[1];\n}\n\n/**\n * The maximum value that can be contained in the upper string region of a numeric UUID (i.e. the string region excluding the version\n * nibble and the variant chunk)\n */\nconst maxUpperNumber = 2 ** 48 - 1;\n\n/**\n * Increments the uuid. `amount` must be a positive integer.\n * @returns the result of incrementing the uuid by `amount`.`\n */\nexport function incrementUuid(uuid: NumericUuid, amount: number): NumericUuid {\n\t/*\n\t * UUIDs incremented beyond the max UUID \"ffffffff-ffff-4fff-bfff-ffffffffffff\" will cause a failure.\n\t * Also, some reserved bits of the v4 UUID must be treated as immutable (e.g. the version and\n\t * variant bits) and thus must not be incremented.\n\t */\n\tlet newUuid: [string, number];\n\tconst result = uuid[1] + amount;\n\tif (result <= maxNumericUuidInteger) {\n\t\t// The new number still fits within the number region of a numeric UUID.\n\t\t// Incrementing is usually done with small amounts, so this is the dominantly common case.\n\t\tnewUuid = [uuid[0], result];\n\t} else {\n\t\t// The numeric UUID's number region has overflowed. We will need to carry the overflow into the variant chunk (see `VariantChunk`).\n\t\t/** The amount left over after filling up the rest of the uuid's number region with the increment amount */\n\t\tconst remainder = amount - (maxNumericUuidInteger - uuid[1]) - 1;\n\t\tconst stringEntry = uuid[0];\n\t\tconst [newVariantChunkString, carried] = ChunkMath.increment(stringEntry);\n\n\t\tif (carried) {\n\t\t\t// The variant chunk itself also overflowed. We'll need to carry the overflow further, into the upper string region of the UUID.\n\t\t\tconst upperString = ChunkMath.Upper.parse(stringEntry);\n\t\t\tconst upperNumber = Number.parseInt(upperString, 16);\n\t\t\tassert(upperNumber <= maxUpperNumber);\n\t\t\tconst newUpperNumber = upperNumber + 1;\n\t\t\tif (newUpperNumber > maxUpperNumber) {\n\t\t\t\tfail('Exceeded maximum numeric UUID');\n\t\t\t} else {\n\t\t\t\t// The variant chunk overflowed but the upper string region did not. Splice in the incremented string region.\n\t\t\t\tconst newUpperChunk = padToLengthWithZeros(newUpperNumber.toString(16), 12);\n\t\t\t\tnewUuid = [\n\t\t\t\t\t`${ChunkMath.Upper.hyphenate(newUpperChunk)}-4${ChunkMath.Variant.hyphenate(\n\t\t\t\t\t\tnewVariantChunkString\n\t\t\t\t\t)}`,\n\t\t\t\t\tremainder,\n\t\t\t\t];\n\t\t\t}\n\t\t} else {\n\t\t\t// The variant chunk did not overflow, so just splice it back in.\n\t\t\tnewUuid = [\n\t\t\t\t`${ChunkMath.Upper.slice(stringEntry)}-4${ChunkMath.Variant.hyphenate(newVariantChunkString)}`,\n\t\t\t\tremainder,\n\t\t\t];\n\t\t}\n\t}\n\n\treturn newUuid as readonly [string, number] as NumericUuid;\n}\n\nnamespace ChunkMath {\n\t/*\n\t * Recall the UUID diagram from the top of this file which describes the layout of a Numeric UUID. To implement addition, we define\n\t * another region called the \"variant chunk\" which overlaps with the \"string\" region. Note that it is just beneath the required v4 uuid\n\t * version identifier (the 13th nibble 'V' which is always '4' in a v4 UUID) and just above the \"number\" region of the layout. It\n\t * contains inside of it the v4 UUID variant identifier bits as well (see https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.1).\n\t *\n\t * UUUUUUUU-UUUU-VUUU-vUUU-UUUUUUUUUUUU - the uuid\n\t * SSSSSSSS SSSS SSSS SSS - array[0]: string\n\t * N NNNNNNNNNNNN - array[1]: integer\n\t * VVV-VVV - the variant chunk\n\t *\n\t * By defining the variant chunk in this way it is simple to splice in the v4 UUID version identifier ('V') just above it and any\n\t * \"bit math\" required due to the fact that the variant identifier bits ('v') do not fill up an entire nibble is handled within it.\n\t * The variant chunk is made up of 6 nibbles. Note the \"vv\" which denotes the two bits used for the v4 UUID variant identifier:\n\t *\n\t * AAAA BBBB CCCC vvDD EEEE FFFF\n\t *\n\t * Since we'll be needing to \"skip\" the variant bits (\"vv\") when doing addition, we define a a few masks which will be used below to\n\t * separate the variant chunk into pieces before recombining it:\n\t */\n\n\t// AAAA BBBB CCCC vvDD EEEE FFFF\n\tconst upperVariantChunkMask = 0xfff000; // XXXX XXXX XXXX\n\tconst variantBitMask = 0x800; // XX\n\tconst middleVariantChunkMask = 0x300; // XX\n\tconst lowerVariantChunkMask = 0xff; // XXXX XXXX\n\n\t/** The maximum numeric value that can be represented by the numerically relevant bits in the variant chunk */\n\tconst maxVariantNumber = 2 ** 22 - 1;\n\n\texport const twentyThirdBit = 2 ** 22;\n\n\t/** the upper chunk, denoted by 'U's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */\n\texport namespace Upper {\n\t\texport function parse(stringEntry: string): string {\n\t\t\treturn stringEntry.slice(0, 8) + stringEntry.slice(9, 13);\n\t\t}\n\n\t\texport function hyphenate(upperChunk: string): string {\n\t\t\treturn `${upperChunk.slice(0, 8)}-${upperChunk.slice(8)}`;\n\t\t}\n\n\t\texport function slice(stringEntry: string): string {\n\t\t\treturn stringEntry.slice(0, 13);\n\t\t}\n\t}\n\n\t/** the variant chunk, denoted by 'V's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */\n\texport namespace Variant {\n\t\texport function parse(stringEntry: string): string {\n\t\t\treturn stringEntry.slice(15, 18) + stringEntry.slice(19, 22);\n\t\t}\n\n\t\texport function hyphenate(variantChunk: string): string {\n\t\t\treturn `${variantChunk.slice(0, 3)}-${variantChunk.slice(3)}`;\n\t\t}\n\t}\n\n\t/** the lower chunk, denoted by 'L's in UUUUUUUU-UUUU-VVVV-vVVL-LLLLLLLLLLLL */\n\texport namespace Lower {\n\t\texport function parse(stableId: StableId): string {\n\t\t\treturn stableId.slice(stringEntryLength, stringEntryLength + 1) + stableId.slice(stringEntryLength + 2);\n\t\t}\n\n\t\texport function hyphenate(lowerChunk: string): string {\n\t\t\treturn `${lowerChunk.slice(0, 1)}-${lowerChunk.slice(1)}`;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the number representation of the given bits corresponding to the variant chunk. The value is derived by parsing all bits\n\t * except for reserved bits (i.e. the variant bits).\n\t * @param variantChunkBits\n\t */\n\texport function getNumericValue(variantChunk: string): number {\n\t\tconst variantChunkBits = Number.parseInt(variantChunk, 16);\n\t\tconst upperVariantBits = (variantChunkBits & upperVariantChunkMask) >> 2;\n\t\tconst middleVariantBits = variantChunkBits & middleVariantChunkMask;\n\t\tconst lowerVariantBits = variantChunkBits & lowerVariantChunkMask;\n\t\treturn upperVariantBits + middleVariantBits + lowerVariantBits;\n\t}\n\n\t/**\n\t * Given the string portion of a numeric uuid, add one to it.\n\t * @returns the resulting hex string and whether or not the new value overflowed, i.e. it exceeds `maxVariantNumber`. In this case,\n\t * the resulting hex string will wrap around to its minimum value '000b00'\n\t */\n\texport function increment(stringEntry: string): [newVariantChunk: string, overflowed: boolean] {\n\t\t// To implement addition, the variant identifier bits are extracted from the variant chunk, the chunk is interpreted as a number,\n\t\t// that number is incremented by 1, and then the variant identifier bits are returned as we convert the number back into a hex\n\t\t// string.\n\n\t\t// This diagram may be helpful for seeing how the nibbles line up before and after the variant identifier bits are extracted. The\n\t\t// letters used for each nibble (\"AAAA\", \"BBBB\") etc. are arbitrary and are simply there to differentiate the nibbles as they shift.\n\t\t// --------------------------------\n\t\t// 1. AAAA BBBB CCCC vvDD EEEE FFFF\n\t\t// 2. AA AABB BBCC CCDD EEEE FFFF\n\t\t// 3. AA AABB BBCC CCDD EEEE FFFF\n\t\t// + 1\n\t\t// = GG GGHH HHII IIJJ JJKK KKLL\n\t\t// 4. GGGG HHHH IIII vvJJ JJKK KKLL\n\n\t\t// 1. The variant chunk is given as a 6 character (6 nibble) hex string, where the fourth nibble contains the variant bits\n\t\t// 2. The numerically important bits (i.e. not the variant identifier bits vv which are constant) are extracted into a single number\n\t\tconst variantChunk = Variant.parse(stringEntry);\n\t\tconst variantNumber = getNumericValue(variantChunk);\n\t\tassert(variantNumber <= maxVariantNumber);\n\t\t// 3. Add one to the variant number to produce our new variant number.\n\t\tconst newVariantNumber = variantNumber + 1;\n\t\t// 4. The variant identifier bits are added back into the number, which is then turned back into a hex string\n\t\tconst newUpperVariantBits = (newVariantNumber & (upperVariantChunkMask >> 2)) << 2;\n\t\tconst newMiddleVariantBits = (newVariantNumber & middleVariantChunkMask) | variantBitMask; // Add the variant bits back in\n\t\tconst newLowerVariantBits = newVariantNumber & lowerVariantChunkMask;\n\t\tconst newVariantChunkBits = newUpperVariantBits + newMiddleVariantBits + newLowerVariantBits;\n\t\tconst newVariantChunk = padToLengthWithZeros(newVariantChunkBits.toString(16), variantChunk.length);\n\t\treturn [newVariantChunk, newVariantNumber > maxVariantNumber];\n\t}\n}\n\nconst maxUpperUuid = 'ffffffff-ffff-4fff-bf';\nconst maxNibbleCount = [...maxUpperUuid].filter((n) => n === 'f').length;\nconst newNibbles = ['7', 'b', 'd', 'e'];\nfunction isMaxUpperNibble(index: number): boolean {\n\treturn maxUpperUuid.charAt(index) === 'f';\n}\n\n/**\n * Any session uuid with all of its highish bits set is in danger of overflowing after fewer than 2^53 increments.\n * By zeroing one of those bits at random, potential overflow is prevented.\n */\nexport function ensureSessionUuid(uuid: StableId): SessionId {\n\tif (uuid.startsWith(maxUpperUuid)) {\n\t\tconst targetNibble = Math.floor(Math.random() * maxNibbleCount);\n\t\tlet actualIndex = 0;\n\t\tfor (let nibbleIndex = 0; nibbleIndex < targetNibble && !isMaxUpperNibble(actualIndex); actualIndex += 1) {\n\t\t\tif (isMaxUpperNibble(actualIndex)) {\n\t\t\t\tnibbleIndex++;\n\t\t\t}\n\t\t}\n\n\t\tconst newNibble = newNibbles[Math.floor(Math.random() * newNibbles.length)]; // Randomly choose a bit to zero\n\t\tconst newUuid = uuid.slice(0, actualIndex) + newNibble + uuid.slice(actualIndex + 1);\n\t\treturn newUuid as SessionId;\n\t}\n\n\treturn uuid as SessionId;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Exports for `id-compressor`
7
+ */
8
+ export * from './IdCompressor';
9
+ export * from './IdRange';
10
+ export * from './persisted-types';
11
+ export { createSessionId } from './NumericUuid';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/id-compressor/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.createSessionId = void 0;
18
+ /**
19
+ * Exports for `id-compressor`
20
+ */
21
+ __exportStar(require("./IdCompressor"), exports);
22
+ __exportStar(require("./IdRange"), exports);
23
+ __exportStar(require("./persisted-types"), exports);
24
+ var NumericUuid_1 = require("./NumericUuid");
25
+ Object.defineProperty(exports, "createSessionId", { enumerable: true, get: function () { return NumericUuid_1.createSessionId; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/id-compressor/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;AAEH;;GAEG;AAEH,iDAA+B;AAC/B,4CAA0B;AAC1B,oDAAkC;AAClC,6CAAgD;AAAvC,8GAAA,eAAe,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Exports for `id-compressor`\n */\n\nexport * from './IdCompressor';\nexport * from './IdRange';\nexport * from './persisted-types';\nexport { createSessionId } from './NumericUuid';\n"]}
@@ -0,0 +1,156 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { Serializable } from '@fluidframework/datastore-definitions';
6
+ import type { FinalCompressedId, LocalCompressedId, OpSpaceCompressedId, SessionId } from '../../Identifiers';
7
+ /**
8
+ * Extensible attribution info associated with a session.
9
+ */
10
+ export declare type AttributionInfo = Serializable;
11
+ /**
12
+ * A serialized ID allocation session for an `IdCompressor`.
13
+ */
14
+ export declare type SerializedSessionData = readonly [
15
+ /**
16
+ * The ID of the session.
17
+ */
18
+ sessionId: SessionId,
19
+ /**
20
+ * The attribution info provided for the session
21
+ */
22
+ attributionInfo?: AttributionInfo
23
+ ];
24
+ export declare type SerializedClusterOverrides = readonly [
25
+ /** The overridden final ID, represented as an index into the cluster's ID range */
26
+ overriddenFinalIndex: number,
27
+ /** The override string */
28
+ override: string,
29
+ /** The first ID that was finalized and associated with this override, set only if different than the `overriddenFinalIndex` */
30
+ overriddenId?: FinalCompressedId
31
+ ][];
32
+ /**
33
+ * A serialized final ID cluster.
34
+ */
35
+ export declare type SerializedCluster = readonly [
36
+ /**
37
+ * Index into the serialized sessions array. Can be converted into a baseUuid via its order in `clusters`.
38
+ * If negative, then this cluster was created by the local session.
39
+ */
40
+ sessionIndex: number,
41
+ /**
42
+ * The capacity of the cluster.
43
+ */
44
+ capacity: number,
45
+ /**
46
+ * The number of IDs in the cluster. Omitted if count === capacity.
47
+ * --OR--
48
+ * The overrides in this cluster. Omitted if no overrides exist in the cluster.
49
+ */
50
+ countOrOverrides?: number | SerializedClusterOverrides,
51
+ /**
52
+ * Overrides in this cluster. Omitted if no overrides exist in the cluster.
53
+ */
54
+ overrides?: SerializedClusterOverrides
55
+ ];
56
+ export declare type SerializedLocalOverrides = readonly [LocalCompressedId, string][];
57
+ export interface SerializedLocalState {
58
+ /**
59
+ * The total number of local IDs created by this session
60
+ */
61
+ localIdCount: number;
62
+ /**
63
+ * Overrides generated by this session. Omitted if no local overrides exist in the session.
64
+ */
65
+ overrides?: SerializedLocalOverrides;
66
+ /**
67
+ * Boolean to track whether attribution has been sent with an ID range yet.
68
+ */
69
+ sentAttributionInfo: boolean;
70
+ /**
71
+ * The most recent local ID in a range returned by `takeNextCreationRange`.
72
+ */
73
+ lastTakenLocalId: LocalCompressedId | undefined;
74
+ }
75
+ /**
76
+ * The minimal required contents of a serialized IdCompressor.
77
+ */
78
+ export interface VersionedSerializedIdCompressor {
79
+ readonly _versionedSerializedIdCompressor: '8c73c57c-1cf4-4278-8915-6444cb4f6af5';
80
+ readonly version: string;
81
+ }
82
+ /**
83
+ * The serialized contents of an IdCompressor, suitable for persistence in a summary.
84
+ */
85
+ export interface SerializedIdCompressor extends VersionedSerializedIdCompressor {
86
+ /** The cluster capacity of this compressor */
87
+ readonly clusterCapacity: number;
88
+ /** The number of reserved IDs in this compressor */
89
+ readonly reservedIdCount: number;
90
+ /** All sessions except the local session. */
91
+ readonly sessions: readonly SerializedSessionData[];
92
+ /** All clusters in the compressor in the order they were created. */
93
+ readonly clusters: readonly SerializedCluster[];
94
+ }
95
+ /**
96
+ * The serialized contents of an IdCompressor, suitable for persistence in a summary.
97
+ */
98
+ export interface SerializedIdCompressorWithNoSession extends SerializedIdCompressor {
99
+ readonly _noLocalState: '3aa2e1e8-cc28-4ea7-bc1a-a11dc3f26dfb';
100
+ }
101
+ /**
102
+ * The serialized contents of an IdCompressor, suitable for persistence in a summary.
103
+ */
104
+ export interface SerializedIdCompressorWithOngoingSession extends SerializedIdCompressor {
105
+ readonly _hasLocalState: '1281acae-6d14-47e7-bc92-71c8ee0819cb';
106
+ /** The session ID of the local session, by index into `sessions`. */
107
+ readonly localSessionIndex: number;
108
+ /** This is only present if the local session made any IDs. */
109
+ readonly localState?: SerializedLocalState;
110
+ }
111
+ /**
112
+ * Data describing a range of session-local IDs (from a remote or local session).
113
+ *
114
+ * A range is composed of local IDs that were generated. Some of these may have overrides.
115
+ *
116
+ * @example
117
+ * Suppose an IdCompressor generated a sequence of local IDs as follows:
118
+ * ```
119
+ * compressor.generateLocalId()
120
+ * compressor.generateLocalId('0093cf29-9454-4034-8940-33b1077b41c3')
121
+ * compressor.generateLocalId()
122
+ * compressor.generateLocalId('0ed545f8-e97e-4dc1-acf9-c4a783258bdf')
123
+ * compressor.generateLocalId()
124
+ * compressor.generateLocalId()
125
+ * compressor.takeNextCreationRange()
126
+ * ```
127
+ * This would result in the following range:
128
+ * ```
129
+ * {
130
+ * first: localId1,
131
+ * last: localId6,
132
+ * overrides: [[localId2, '0093cf29-9454-4034-8940-33b1077b41c3'], [localId4, '0ed545f8-e97e-4dc1-acf9-c4a783258bdf']]
133
+ * }
134
+ * ```
135
+ */
136
+ export interface IdCreationRange {
137
+ readonly sessionId: SessionId;
138
+ readonly ids?: IdCreationRange.Ids;
139
+ readonly attributionInfo?: AttributionInfo;
140
+ }
141
+ export declare type UnackedLocalId = LocalCompressedId & OpSpaceCompressedId;
142
+ export declare namespace IdCreationRange {
143
+ type Ids = {
144
+ readonly first: UnackedLocalId;
145
+ readonly last: UnackedLocalId;
146
+ } | ({
147
+ readonly first?: UnackedLocalId;
148
+ readonly last?: UnackedLocalId;
149
+ } & HasOverrides);
150
+ interface HasOverrides {
151
+ readonly overrides: Overrides;
152
+ }
153
+ type Override = readonly [id: UnackedLocalId, override: string];
154
+ type Overrides = readonly [Override, ...Override[]];
155
+ }
156
+ //# sourceMappingURL=0.0.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0.0.1.d.ts","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/0.0.1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=0.0.1.js.map