@fluid-experimental/tree 2.0.0-rc.1.0.4 → 2.0.0-rc.2.0.0

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 (572) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +1 -1
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/.vscode/settings.json +1 -1
  4. package/CHANGELOG.md +4 -0
  5. package/api-report/experimental-tree.api.md +4 -15
  6. package/dist/ChangeCompression.d.ts +5 -5
  7. package/dist/ChangeCompression.d.ts.map +1 -1
  8. package/dist/ChangeCompression.js +24 -24
  9. package/dist/ChangeCompression.js.map +1 -1
  10. package/dist/ChangeTypes.d.ts +3 -3
  11. package/dist/ChangeTypes.d.ts.map +1 -1
  12. package/dist/ChangeTypes.js +9 -9
  13. package/dist/ChangeTypes.js.map +1 -1
  14. package/dist/Checkout.d.ts +7 -7
  15. package/dist/Checkout.d.ts.map +1 -1
  16. package/dist/Checkout.js +27 -27
  17. package/dist/Checkout.js.map +1 -1
  18. package/dist/Common.d.ts +2 -2
  19. package/dist/Common.d.ts.map +1 -1
  20. package/dist/Common.js.map +1 -1
  21. package/dist/EagerCheckout.d.ts +3 -3
  22. package/dist/EagerCheckout.d.ts.map +1 -1
  23. package/dist/EagerCheckout.js +2 -2
  24. package/dist/EagerCheckout.js.map +1 -1
  25. package/dist/EditLog.d.ts +4 -6
  26. package/dist/EditLog.d.ts.map +1 -1
  27. package/dist/EditLog.js +9 -9
  28. package/dist/EditLog.js.map +1 -1
  29. package/dist/EditUtilities.d.ts +6 -6
  30. package/dist/EditUtilities.d.ts.map +1 -1
  31. package/dist/EditUtilities.js +28 -28
  32. package/dist/EditUtilities.js.map +1 -1
  33. package/dist/Forest.d.ts +2 -2
  34. package/dist/Forest.d.ts.map +1 -1
  35. package/dist/Forest.js +13 -13
  36. package/dist/Forest.js.map +1 -1
  37. package/dist/HistoryEditFactory.d.ts +3 -3
  38. package/dist/HistoryEditFactory.d.ts.map +1 -1
  39. package/dist/HistoryEditFactory.js +36 -36
  40. package/dist/HistoryEditFactory.js.map +1 -1
  41. package/dist/IdConversion.d.ts +3 -3
  42. package/dist/IdConversion.d.ts.map +1 -1
  43. package/dist/IdConversion.js +23 -23
  44. package/dist/IdConversion.js.map +1 -1
  45. package/dist/InitialTree.d.ts +1 -1
  46. package/dist/InitialTree.d.ts.map +1 -1
  47. package/dist/InitialTree.js +2 -2
  48. package/dist/InitialTree.js.map +1 -1
  49. package/dist/LazyCheckout.d.ts +5 -5
  50. package/dist/LazyCheckout.d.ts.map +1 -1
  51. package/dist/LazyCheckout.js +2 -2
  52. package/dist/LazyCheckout.js.map +1 -1
  53. package/dist/LogViewer.d.ts +7 -7
  54. package/dist/LogViewer.d.ts.map +1 -1
  55. package/dist/LogViewer.js +25 -25
  56. package/dist/LogViewer.js.map +1 -1
  57. package/dist/MergeHealth.d.ts +1 -1
  58. package/dist/MergeHealth.d.ts.map +1 -1
  59. package/dist/MergeHealth.js +32 -32
  60. package/dist/MergeHealth.js.map +1 -1
  61. package/dist/NodeIdUtilities.d.ts +3 -3
  62. package/dist/NodeIdUtilities.d.ts.map +1 -1
  63. package/dist/NodeIdUtilities.js +4 -4
  64. package/dist/NodeIdUtilities.js.map +1 -1
  65. package/dist/PayloadUtilities.d.ts +1 -1
  66. package/dist/PayloadUtilities.d.ts.map +1 -1
  67. package/dist/PayloadUtilities.js.map +1 -1
  68. package/dist/ReconciliationPath.d.ts +3 -3
  69. package/dist/ReconciliationPath.d.ts.map +1 -1
  70. package/dist/ReconciliationPath.js.map +1 -1
  71. package/dist/RevisionValueCache.js +5 -5
  72. package/dist/RevisionValueCache.js.map +1 -1
  73. package/dist/RevisionView.d.ts +5 -5
  74. package/dist/RevisionView.d.ts.map +1 -1
  75. package/dist/RevisionView.js +11 -11
  76. package/dist/RevisionView.js.map +1 -1
  77. package/dist/SerializationUtilities.d.ts +4 -4
  78. package/dist/SerializationUtilities.d.ts.map +1 -1
  79. package/dist/SerializationUtilities.js +5 -5
  80. package/dist/SerializationUtilities.js.map +1 -1
  81. package/dist/SharedTree.d.ts +15 -18
  82. package/dist/SharedTree.d.ts.map +1 -1
  83. package/dist/SharedTree.js +154 -166
  84. package/dist/SharedTree.js.map +1 -1
  85. package/dist/SharedTreeEncoder.d.ts +8 -8
  86. package/dist/SharedTreeEncoder.d.ts.map +1 -1
  87. package/dist/SharedTreeEncoder.js +67 -67
  88. package/dist/SharedTreeEncoder.js.map +1 -1
  89. package/dist/StringInterner.d.ts +1 -1
  90. package/dist/StringInterner.d.ts.map +1 -1
  91. package/dist/StringInterner.js +2 -2
  92. package/dist/StringInterner.js.map +1 -1
  93. package/dist/Summary.d.ts +4 -4
  94. package/dist/Summary.d.ts.map +1 -1
  95. package/dist/Summary.js +2 -2
  96. package/dist/Summary.js.map +1 -1
  97. package/dist/SummaryBackCompatibility.d.ts +3 -3
  98. package/dist/SummaryBackCompatibility.d.ts.map +1 -1
  99. package/dist/SummaryBackCompatibility.js +13 -13
  100. package/dist/SummaryBackCompatibility.js.map +1 -1
  101. package/dist/SummaryTestUtilities.d.ts +2 -2
  102. package/dist/SummaryTestUtilities.d.ts.map +1 -1
  103. package/dist/SummaryTestUtilities.js.map +1 -1
  104. package/dist/Transaction.d.ts +4 -4
  105. package/dist/Transaction.d.ts.map +1 -1
  106. package/dist/Transaction.js +10 -10
  107. package/dist/Transaction.js.map +1 -1
  108. package/dist/TransactionInternal.d.ts +7 -7
  109. package/dist/TransactionInternal.d.ts.map +1 -1
  110. package/dist/TransactionInternal.js +87 -87
  111. package/dist/TransactionInternal.js.map +1 -1
  112. package/dist/TreeCompressor.d.ts +4 -4
  113. package/dist/TreeCompressor.d.ts.map +1 -1
  114. package/dist/TreeCompressor.js +6 -6
  115. package/dist/TreeCompressor.js.map +1 -1
  116. package/dist/TreeNodeHandle.d.ts +3 -3
  117. package/dist/TreeNodeHandle.d.ts.map +1 -1
  118. package/dist/TreeNodeHandle.js +5 -5
  119. package/dist/TreeNodeHandle.js.map +1 -1
  120. package/dist/TreeView.d.ts +3 -3
  121. package/dist/TreeView.d.ts.map +1 -1
  122. package/dist/TreeView.js +10 -10
  123. package/dist/TreeView.js.map +1 -1
  124. package/dist/TreeViewUtilities.d.ts +2 -2
  125. package/dist/TreeViewUtilities.d.ts.map +1 -1
  126. package/dist/TreeViewUtilities.js +3 -3
  127. package/dist/TreeViewUtilities.js.map +1 -1
  128. package/dist/UndoRedoHandler.d.ts +2 -2
  129. package/dist/UndoRedoHandler.d.ts.map +1 -1
  130. package/dist/UndoRedoHandler.js +5 -5
  131. package/dist/UndoRedoHandler.js.map +1 -1
  132. package/dist/UuidUtilities.d.ts +1 -1
  133. package/dist/UuidUtilities.d.ts.map +1 -1
  134. package/dist/UuidUtilities.js +3 -3
  135. package/dist/UuidUtilities.js.map +1 -1
  136. package/dist/id-compressor/AppendOnlySortedMap.js +4 -4
  137. package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -1
  138. package/dist/id-compressor/IdCompressor.d.ts +2 -2
  139. package/dist/id-compressor/IdCompressor.d.ts.map +1 -1
  140. package/dist/id-compressor/IdCompressor.js +78 -78
  141. package/dist/id-compressor/IdCompressor.js.map +1 -1
  142. package/dist/id-compressor/IdRange.d.ts +1 -1
  143. package/dist/id-compressor/IdRange.d.ts.map +1 -1
  144. package/dist/id-compressor/IdRange.js.map +1 -1
  145. package/dist/id-compressor/NumericUuid.d.ts +1 -1
  146. package/dist/id-compressor/NumericUuid.d.ts.map +1 -1
  147. package/dist/id-compressor/NumericUuid.js +6 -6
  148. package/dist/id-compressor/NumericUuid.js.map +1 -1
  149. package/dist/id-compressor/SessionIdNormalizer.d.ts +2 -2
  150. package/dist/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
  151. package/dist/id-compressor/SessionIdNormalizer.js +14 -14
  152. package/dist/id-compressor/SessionIdNormalizer.js.map +1 -1
  153. package/dist/id-compressor/index.d.ts +4 -4
  154. package/dist/id-compressor/index.d.ts.map +1 -1
  155. package/dist/id-compressor/index.js +11 -11
  156. package/dist/id-compressor/index.js.map +1 -1
  157. package/dist/id-compressor/persisted-types/0.0.1.d.ts +1 -1
  158. package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -1
  159. package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -1
  160. package/dist/id-compressor/persisted-types/index.d.ts +1 -1
  161. package/dist/id-compressor/persisted-types/index.d.ts.map +1 -1
  162. package/dist/id-compressor/persisted-types/index.js.map +1 -1
  163. package/dist/index.d.ts +29 -29
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +73 -73
  166. package/dist/index.js.map +1 -1
  167. package/dist/migration-shim/migrationDeltaHandler.d.ts +1 -1
  168. package/dist/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
  169. package/dist/migration-shim/migrationDeltaHandler.js +5 -8
  170. package/dist/migration-shim/migrationDeltaHandler.js.map +1 -1
  171. package/dist/migration-shim/migrationShim.d.ts +1 -1
  172. package/dist/migration-shim/migrationShim.d.ts.map +1 -1
  173. package/dist/migration-shim/migrationShim.js +1 -1
  174. package/dist/migration-shim/migrationShim.js.map +1 -1
  175. package/dist/migration-shim/migrationShimFactory.d.ts +1 -1
  176. package/dist/migration-shim/migrationShimFactory.d.ts.map +1 -1
  177. package/dist/migration-shim/migrationShimFactory.js.map +1 -1
  178. package/dist/migration-shim/sharedTreeDeltaHandler.d.ts +1 -1
  179. package/dist/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
  180. package/dist/migration-shim/sharedTreeDeltaHandler.js +2 -5
  181. package/dist/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
  182. package/dist/migration-shim/types.d.ts +1 -1
  183. package/dist/migration-shim/types.d.ts.map +1 -1
  184. package/dist/migration-shim/types.js.map +1 -1
  185. package/dist/package.json +3 -0
  186. package/dist/persisted-types/0.0.2.d.ts +1 -1
  187. package/dist/persisted-types/0.0.2.d.ts.map +1 -1
  188. package/dist/persisted-types/0.0.2.js.map +1 -1
  189. package/dist/persisted-types/0.1.1.d.ts +4 -4
  190. package/dist/persisted-types/0.1.1.d.ts.map +1 -1
  191. package/dist/persisted-types/0.1.1.js +13 -13
  192. package/dist/persisted-types/0.1.1.js.map +1 -1
  193. package/dist/persisted-types/index.d.ts +2 -2
  194. package/dist/persisted-types/index.d.ts.map +1 -1
  195. package/dist/persisted-types/index.js +13 -13
  196. package/dist/persisted-types/index.js.map +1 -1
  197. package/dist/tree-alpha.d.ts +5 -8
  198. package/dist/tree-beta.d.ts +5 -1
  199. package/dist/tree-public.d.ts +5 -1
  200. package/dist/tree-untrimmed.d.ts +5 -8
  201. package/dist/tsdoc-metadata.json +1 -1
  202. package/lib/ChangeCompression.d.ts +5 -5
  203. package/lib/ChangeCompression.d.ts.map +1 -1
  204. package/lib/ChangeCompression.js +3 -3
  205. package/lib/ChangeCompression.js.map +1 -1
  206. package/lib/ChangeTypes.d.ts +3 -3
  207. package/lib/ChangeTypes.d.ts.map +1 -1
  208. package/lib/ChangeTypes.js +3 -3
  209. package/lib/ChangeTypes.js.map +1 -1
  210. package/lib/Checkout.d.ts +7 -7
  211. package/lib/Checkout.d.ts.map +1 -1
  212. package/lib/Checkout.js +6 -6
  213. package/lib/Checkout.js.map +1 -1
  214. package/lib/Common.d.ts +2 -2
  215. package/lib/Common.d.ts.map +1 -1
  216. package/lib/Common.js.map +1 -1
  217. package/lib/EagerCheckout.d.ts +3 -3
  218. package/lib/EagerCheckout.d.ts.map +1 -1
  219. package/lib/EagerCheckout.js +1 -1
  220. package/lib/EagerCheckout.js.map +1 -1
  221. package/lib/EditLog.d.ts +4 -6
  222. package/lib/EditLog.d.ts.map +1 -1
  223. package/lib/EditLog.js +1 -1
  224. package/lib/EditLog.js.map +1 -1
  225. package/lib/EditUtilities.d.ts +6 -6
  226. package/lib/EditUtilities.d.ts.map +1 -1
  227. package/lib/EditUtilities.js +7 -7
  228. package/lib/EditUtilities.js.map +1 -1
  229. package/lib/Forest.d.ts +2 -2
  230. package/lib/Forest.d.ts.map +1 -1
  231. package/lib/Forest.js +2 -2
  232. package/lib/Forest.js.map +1 -1
  233. package/lib/HistoryEditFactory.d.ts +3 -3
  234. package/lib/HistoryEditFactory.d.ts.map +1 -1
  235. package/lib/HistoryEditFactory.js +7 -7
  236. package/lib/HistoryEditFactory.js.map +1 -1
  237. package/lib/IdConversion.d.ts +3 -3
  238. package/lib/IdConversion.d.ts.map +1 -1
  239. package/lib/IdConversion.js +4 -4
  240. package/lib/IdConversion.js.map +1 -1
  241. package/lib/InitialTree.d.ts +1 -1
  242. package/lib/InitialTree.d.ts.map +1 -1
  243. package/lib/InitialTree.js +1 -1
  244. package/lib/InitialTree.js.map +1 -1
  245. package/lib/LazyCheckout.d.ts +5 -5
  246. package/lib/LazyCheckout.d.ts.map +1 -1
  247. package/lib/LazyCheckout.js +1 -1
  248. package/lib/LazyCheckout.js.map +1 -1
  249. package/lib/LogViewer.d.ts +7 -7
  250. package/lib/LogViewer.d.ts.map +1 -1
  251. package/lib/LogViewer.js +4 -4
  252. package/lib/LogViewer.js.map +1 -1
  253. package/lib/MergeHealth.d.ts +1 -1
  254. package/lib/MergeHealth.d.ts.map +1 -1
  255. package/lib/MergeHealth.js +5 -5
  256. package/lib/MergeHealth.js.map +1 -1
  257. package/lib/NodeIdUtilities.d.ts +3 -3
  258. package/lib/NodeIdUtilities.d.ts.map +1 -1
  259. package/lib/NodeIdUtilities.js +2 -2
  260. package/lib/NodeIdUtilities.js.map +1 -1
  261. package/lib/PayloadUtilities.d.ts +1 -1
  262. package/lib/PayloadUtilities.d.ts.map +1 -1
  263. package/lib/PayloadUtilities.js.map +1 -1
  264. package/lib/ReconciliationPath.d.ts +3 -3
  265. package/lib/ReconciliationPath.d.ts.map +1 -1
  266. package/lib/ReconciliationPath.js.map +1 -1
  267. package/lib/RevisionValueCache.js +1 -1
  268. package/lib/RevisionValueCache.js.map +1 -1
  269. package/lib/RevisionView.d.ts +5 -5
  270. package/lib/RevisionView.d.ts.map +1 -1
  271. package/lib/RevisionView.js +3 -3
  272. package/lib/RevisionView.js.map +1 -1
  273. package/lib/SerializationUtilities.d.ts +4 -4
  274. package/lib/SerializationUtilities.d.ts.map +1 -1
  275. package/lib/SerializationUtilities.js +1 -1
  276. package/lib/SerializationUtilities.js.map +1 -1
  277. package/lib/SharedTree.d.ts +15 -18
  278. package/lib/SharedTree.d.ts.map +1 -1
  279. package/lib/SharedTree.js +28 -40
  280. package/lib/SharedTree.js.map +1 -1
  281. package/lib/SharedTreeEncoder.d.ts +8 -8
  282. package/lib/SharedTreeEncoder.d.ts.map +1 -1
  283. package/lib/SharedTreeEncoder.js +12 -12
  284. package/lib/SharedTreeEncoder.js.map +1 -1
  285. package/lib/StringInterner.d.ts +1 -1
  286. package/lib/StringInterner.d.ts.map +1 -1
  287. package/lib/StringInterner.js +1 -1
  288. package/lib/StringInterner.js.map +1 -1
  289. package/lib/Summary.d.ts +4 -4
  290. package/lib/Summary.d.ts.map +1 -1
  291. package/lib/Summary.js +1 -1
  292. package/lib/Summary.js.map +1 -1
  293. package/lib/SummaryBackCompatibility.d.ts +3 -3
  294. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  295. package/lib/SummaryBackCompatibility.js +3 -3
  296. package/lib/SummaryBackCompatibility.js.map +1 -1
  297. package/lib/SummaryTestUtilities.d.ts +2 -2
  298. package/lib/SummaryTestUtilities.d.ts.map +1 -1
  299. package/lib/SummaryTestUtilities.js.map +1 -1
  300. package/lib/Transaction.d.ts +4 -4
  301. package/lib/Transaction.d.ts.map +1 -1
  302. package/lib/Transaction.js +5 -5
  303. package/lib/Transaction.js.map +1 -1
  304. package/lib/TransactionInternal.d.ts +7 -7
  305. package/lib/TransactionInternal.d.ts.map +1 -1
  306. package/lib/TransactionInternal.js +5 -5
  307. package/lib/TransactionInternal.js.map +1 -1
  308. package/lib/TreeCompressor.d.ts +4 -4
  309. package/lib/TreeCompressor.d.ts.map +1 -1
  310. package/lib/TreeCompressor.js +2 -2
  311. package/lib/TreeCompressor.js.map +1 -1
  312. package/lib/TreeNodeHandle.d.ts +3 -3
  313. package/lib/TreeNodeHandle.d.ts.map +1 -1
  314. package/lib/TreeNodeHandle.js +1 -1
  315. package/lib/TreeNodeHandle.js.map +1 -1
  316. package/lib/TreeView.d.ts +3 -3
  317. package/lib/TreeView.d.ts.map +1 -1
  318. package/lib/TreeView.js +3 -3
  319. package/lib/TreeView.js.map +1 -1
  320. package/lib/TreeViewUtilities.d.ts +2 -2
  321. package/lib/TreeViewUtilities.d.ts.map +1 -1
  322. package/lib/TreeViewUtilities.js +1 -1
  323. package/lib/TreeViewUtilities.js.map +1 -1
  324. package/lib/UndoRedoHandler.d.ts +2 -2
  325. package/lib/UndoRedoHandler.d.ts.map +1 -1
  326. package/lib/UndoRedoHandler.js +2 -2
  327. package/lib/UndoRedoHandler.js.map +1 -1
  328. package/lib/UuidUtilities.d.ts +1 -1
  329. package/lib/UuidUtilities.d.ts.map +1 -1
  330. package/lib/UuidUtilities.js +1 -1
  331. package/lib/UuidUtilities.js.map +1 -1
  332. package/lib/id-compressor/AppendOnlySortedMap.js +1 -1
  333. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -1
  334. package/lib/id-compressor/IdCompressor.d.ts +2 -2
  335. package/lib/id-compressor/IdCompressor.d.ts.map +1 -1
  336. package/lib/id-compressor/IdCompressor.js +6 -6
  337. package/lib/id-compressor/IdCompressor.js.map +1 -1
  338. package/lib/id-compressor/IdRange.d.ts +1 -1
  339. package/lib/id-compressor/IdRange.d.ts.map +1 -1
  340. package/lib/id-compressor/IdRange.js.map +1 -1
  341. package/lib/id-compressor/NumericUuid.d.ts +1 -1
  342. package/lib/id-compressor/NumericUuid.d.ts.map +1 -1
  343. package/lib/id-compressor/NumericUuid.js +2 -2
  344. package/lib/id-compressor/NumericUuid.js.map +1 -1
  345. package/lib/id-compressor/SessionIdNormalizer.d.ts +2 -2
  346. package/lib/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
  347. package/lib/id-compressor/SessionIdNormalizer.js +2 -2
  348. package/lib/id-compressor/SessionIdNormalizer.js.map +1 -1
  349. package/lib/id-compressor/index.d.ts +4 -4
  350. package/lib/id-compressor/index.d.ts.map +1 -1
  351. package/lib/id-compressor/index.js +3 -3
  352. package/lib/id-compressor/index.js.map +1 -1
  353. package/lib/id-compressor/persisted-types/0.0.1.d.ts +1 -1
  354. package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -1
  355. package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -1
  356. package/lib/id-compressor/persisted-types/index.d.ts +1 -1
  357. package/lib/id-compressor/persisted-types/index.d.ts.map +1 -1
  358. package/lib/id-compressor/persisted-types/index.js.map +1 -1
  359. package/lib/index.d.ts +29 -29
  360. package/lib/index.d.ts.map +1 -1
  361. package/lib/index.js +22 -22
  362. package/lib/index.js.map +1 -1
  363. package/lib/migration-shim/migrationDeltaHandler.d.ts +1 -1
  364. package/lib/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
  365. package/lib/migration-shim/migrationDeltaHandler.js +5 -8
  366. package/lib/migration-shim/migrationDeltaHandler.js.map +1 -1
  367. package/lib/migration-shim/migrationShim.d.ts +1 -1
  368. package/lib/migration-shim/migrationShim.d.ts.map +1 -1
  369. package/lib/migration-shim/migrationShim.js +1 -1
  370. package/lib/migration-shim/migrationShim.js.map +1 -1
  371. package/lib/migration-shim/migrationShimFactory.d.ts +1 -1
  372. package/lib/migration-shim/migrationShimFactory.d.ts.map +1 -1
  373. package/lib/migration-shim/migrationShimFactory.js.map +1 -1
  374. package/lib/migration-shim/sharedTreeDeltaHandler.d.ts +1 -1
  375. package/lib/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
  376. package/lib/migration-shim/sharedTreeDeltaHandler.js +2 -5
  377. package/lib/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
  378. package/lib/migration-shim/types.d.ts +1 -1
  379. package/lib/migration-shim/types.d.ts.map +1 -1
  380. package/lib/migration-shim/types.js.map +1 -1
  381. package/lib/persisted-types/0.0.2.d.ts +1 -1
  382. package/lib/persisted-types/0.0.2.d.ts.map +1 -1
  383. package/lib/persisted-types/0.0.2.js.map +1 -1
  384. package/lib/persisted-types/0.1.1.d.ts +4 -4
  385. package/lib/persisted-types/0.1.1.d.ts.map +1 -1
  386. package/lib/persisted-types/0.1.1.js +2 -2
  387. package/lib/persisted-types/0.1.1.js.map +1 -1
  388. package/lib/persisted-types/index.d.ts +2 -2
  389. package/lib/persisted-types/index.d.ts.map +1 -1
  390. package/lib/persisted-types/index.js +2 -2
  391. package/lib/persisted-types/index.js.map +1 -1
  392. package/lib/test/AppendOnlySortedMap.perf.tests.js +2 -2
  393. package/lib/test/AppendOnlySortedMap.perf.tests.js.map +1 -1
  394. package/lib/test/AppendOnlySortedMap.tests.js +2 -2
  395. package/lib/test/AppendOnlySortedMap.tests.js.map +1 -1
  396. package/lib/test/ChangeCompression.tests.js +9 -9
  397. package/lib/test/ChangeCompression.tests.js.map +1 -1
  398. package/lib/test/Checkout.tests.d.ts +1 -1
  399. package/lib/test/Checkout.tests.d.ts.map +1 -1
  400. package/lib/test/Checkout.tests.js +2 -2
  401. package/lib/test/Checkout.tests.js.map +1 -1
  402. package/lib/test/Common.tests.js +1 -1
  403. package/lib/test/Common.tests.js.map +1 -1
  404. package/lib/test/EagerCheckout.tests.js +4 -4
  405. package/lib/test/EagerCheckout.tests.js.map +1 -1
  406. package/lib/test/Edit.tests.js +2 -2
  407. package/lib/test/Edit.tests.js.map +1 -1
  408. package/lib/test/EditLog.perf.tests.js +4 -4
  409. package/lib/test/EditLog.perf.tests.js.map +1 -1
  410. package/lib/test/EditLog.tests.js +3 -3
  411. package/lib/test/EditLog.tests.js.map +1 -1
  412. package/lib/test/EditUtilities.tests.js +6 -6
  413. package/lib/test/EditUtilities.tests.js.map +1 -1
  414. package/lib/test/Forest.perf.tests.js +4 -4
  415. package/lib/test/Forest.perf.tests.js.map +1 -1
  416. package/lib/test/Forest.tests.js +2 -2
  417. package/lib/test/Forest.tests.js.map +1 -1
  418. package/lib/test/GenericTransaction.tests.js +3 -3
  419. package/lib/test/GenericTransaction.tests.js.map +1 -1
  420. package/lib/test/HistoryEditFactory.tests.js +4 -4
  421. package/lib/test/HistoryEditFactory.tests.js.map +1 -1
  422. package/lib/test/IdCompressor.perf.tests.js +4 -4
  423. package/lib/test/IdCompressor.perf.tests.js.map +1 -1
  424. package/lib/test/IdCompressor.tests.js +7 -7
  425. package/lib/test/IdCompressor.tests.js.map +1 -1
  426. package/lib/test/IdConversion.tests.js +3 -3
  427. package/lib/test/IdConversion.tests.js.map +1 -1
  428. package/lib/test/LazyCheckout.tests.js +4 -4
  429. package/lib/test/LazyCheckout.tests.js.map +1 -1
  430. package/lib/test/LogViewer.tests.js +12 -12
  431. package/lib/test/LogViewer.tests.js.map +1 -1
  432. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +6 -6
  433. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -1
  434. package/lib/test/NumericUuid.perf.tests.js +3 -3
  435. package/lib/test/NumericUuid.perf.tests.js.map +1 -1
  436. package/lib/test/NumericUuid.tests.js +4 -4
  437. package/lib/test/NumericUuid.tests.js.map +1 -1
  438. package/lib/test/RevisionValueCache.tests.js +2 -2
  439. package/lib/test/RevisionValueCache.tests.js.map +1 -1
  440. package/lib/test/RevisionView.tests.js +6 -6
  441. package/lib/test/RevisionView.tests.js.map +1 -1
  442. package/lib/test/SessionIdNormalizer.tests.js +3 -3
  443. package/lib/test/SessionIdNormalizer.tests.js.map +1 -1
  444. package/lib/test/SharedTree.fuzz.tests.js +1 -1
  445. package/lib/test/SharedTree.fuzz.tests.js.map +1 -1
  446. package/lib/test/SharedTree.perf.tests.js +2 -2
  447. package/lib/test/SharedTree.perf.tests.js.map +1 -1
  448. package/lib/test/SharedTree.tests.js +7 -7
  449. package/lib/test/SharedTree.tests.js.map +1 -1
  450. package/lib/test/StringInterner.tests.js +1 -1
  451. package/lib/test/StringInterner.tests.js.map +1 -1
  452. package/lib/test/Summary.tests.d.ts +2 -2
  453. package/lib/test/Summary.tests.d.ts.map +1 -1
  454. package/lib/test/Summary.tests.js +14 -14
  455. package/lib/test/Summary.tests.js.map +1 -1
  456. package/lib/test/Transaction.tests.js +5 -5
  457. package/lib/test/Transaction.tests.js.map +1 -1
  458. package/lib/test/TransactionInternal.tests.js +7 -7
  459. package/lib/test/TransactionInternal.tests.js.map +1 -1
  460. package/lib/test/TreeCompression.tests.js +8 -8
  461. package/lib/test/TreeCompression.tests.js.map +1 -1
  462. package/lib/test/TreeView.tests.js +3 -3
  463. package/lib/test/TreeView.tests.js.map +1 -1
  464. package/lib/test/UndoRedoHandler.tests.js +2 -2
  465. package/lib/test/UndoRedoHandler.tests.js.map +1 -1
  466. package/lib/test/fuzz/Generators.d.ts +1 -1
  467. package/lib/test/fuzz/Generators.d.ts.map +1 -1
  468. package/lib/test/fuzz/Generators.js +4 -4
  469. package/lib/test/fuzz/Generators.js.map +1 -1
  470. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +1 -1
  471. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -1
  472. package/lib/test/fuzz/SharedTreeFuzzTests.js +5 -5
  473. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -1
  474. package/lib/test/fuzz/Types.d.ts +6 -6
  475. package/lib/test/fuzz/Types.d.ts.map +1 -1
  476. package/lib/test/fuzz/Types.js.map +1 -1
  477. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +6 -6
  478. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -1
  479. package/lib/test/utilities/IdCompressorTestUtilities.js +6 -6
  480. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -1
  481. package/lib/test/utilities/MockTransaction.d.ts +4 -4
  482. package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
  483. package/lib/test/utilities/MockTransaction.js +3 -3
  484. package/lib/test/utilities/MockTransaction.js.map +1 -1
  485. package/lib/test/utilities/PendingLocalStateTests.d.ts +1 -1
  486. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -1
  487. package/lib/test/utilities/PendingLocalStateTests.js +5 -5
  488. package/lib/test/utilities/PendingLocalStateTests.js.map +1 -1
  489. package/lib/test/utilities/SharedTreeTests.d.ts +2 -2
  490. package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
  491. package/lib/test/utilities/SharedTreeTests.js +22 -22
  492. package/lib/test/utilities/SharedTreeTests.js.map +1 -1
  493. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +1 -1
  494. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -1
  495. package/lib/test/utilities/SharedTreeVersioningTests.js +10 -10
  496. package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -1
  497. package/lib/test/utilities/SummaryLoadPerfTests.js +6 -6
  498. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -1
  499. package/lib/test/utilities/SummarySizeTests.d.ts +1 -1
  500. package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -1
  501. package/lib/test/utilities/SummarySizeTests.js +5 -5
  502. package/lib/test/utilities/SummarySizeTests.js.map +1 -1
  503. package/lib/test/utilities/TestNode.d.ts +6 -6
  504. package/lib/test/utilities/TestNode.d.ts.map +1 -1
  505. package/lib/test/utilities/TestNode.js +5 -5
  506. package/lib/test/utilities/TestNode.js.map +1 -1
  507. package/lib/test/utilities/TestUtilities.d.ts +12 -12
  508. package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
  509. package/lib/test/utilities/TestUtilities.js +18 -19
  510. package/lib/test/utilities/TestUtilities.js.map +1 -1
  511. package/lib/test/utilities/UndoRedoTests.d.ts +2 -2
  512. package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
  513. package/lib/test/utilities/UndoRedoTests.js +7 -7
  514. package/lib/test/utilities/UndoRedoTests.js.map +1 -1
  515. package/package.json +57 -31
  516. package/src/ChangeCompression.ts +7 -7
  517. package/src/ChangeTypes.ts +5 -5
  518. package/src/Checkout.ts +13 -13
  519. package/src/Common.ts +2 -2
  520. package/src/EagerCheckout.ts +3 -3
  521. package/src/EditLog.ts +6 -7
  522. package/src/EditUtilities.ts +10 -10
  523. package/src/Forest.ts +4 -4
  524. package/src/HistoryEditFactory.ts +11 -11
  525. package/src/IdConversion.ts +4 -4
  526. package/src/InitialTree.ts +3 -3
  527. package/src/LazyCheckout.ts +5 -5
  528. package/src/LogViewer.ts +8 -8
  529. package/src/MergeHealth.ts +6 -6
  530. package/src/NodeIdUtilities.ts +4 -4
  531. package/src/PayloadUtilities.ts +1 -1
  532. package/src/ReconciliationPath.ts +3 -3
  533. package/src/RevisionValueCache.ts +1 -1
  534. package/src/RevisionView.ts +7 -7
  535. package/src/SerializationUtilities.ts +5 -5
  536. package/src/SharedTree.ts +34 -54
  537. package/src/SharedTreeEncoder.ts +15 -15
  538. package/src/StringInterner.ts +2 -2
  539. package/src/Summary.ts +5 -5
  540. package/src/SummaryBackCompatibility.ts +10 -5
  541. package/src/SummaryTestUtilities.ts +3 -3
  542. package/src/Transaction.ts +8 -8
  543. package/src/TransactionInternal.ts +8 -8
  544. package/src/TreeCompressor.ts +6 -6
  545. package/src/TreeNodeHandle.ts +4 -4
  546. package/src/TreeView.ts +4 -4
  547. package/src/TreeViewUtilities.ts +3 -3
  548. package/src/UndoRedoHandler.ts +4 -4
  549. package/src/UuidUtilities.ts +2 -2
  550. package/src/id-compressor/AppendOnlySortedMap.ts +1 -1
  551. package/src/id-compressor/IdCompressor.ts +8 -8
  552. package/src/id-compressor/IdRange.ts +1 -1
  553. package/src/id-compressor/NumericUuid.ts +3 -3
  554. package/src/id-compressor/SessionIdNormalizer.ts +4 -4
  555. package/src/id-compressor/index.ts +4 -4
  556. package/src/id-compressor/persisted-types/0.0.1.ts +1 -1
  557. package/src/id-compressor/persisted-types/index.ts +1 -1
  558. package/src/index.ts +29 -29
  559. package/src/migration-shim/migrationDeltaHandler.ts +9 -10
  560. package/src/migration-shim/migrationShim.ts +7 -5
  561. package/src/migration-shim/migrationShimFactory.ts +4 -1
  562. package/src/migration-shim/sharedTreeDeltaHandler.ts +7 -6
  563. package/src/migration-shim/types.ts +1 -1
  564. package/src/persisted-types/0.0.2.ts +1 -1
  565. package/src/persisted-types/0.1.1.ts +4 -4
  566. package/src/persisted-types/index.ts +2 -2
  567. package/tsconfig.esnext.json +1 -2
  568. package/tsconfig.json +3 -0
  569. package/lib/test/Attach.tests.d.ts +0 -6
  570. package/lib/test/Attach.tests.d.ts.map +0 -1
  571. package/lib/test/Attach.tests.js +0 -52
  572. package/lib/test/Attach.tests.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../src/TreeView.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from '@fluidframework/core-utils';\nimport { copyPropertyIfDefined, fail } from './Common';\nimport { NodeId, TraitLabel } from './Identifiers';\nimport { Delta, Forest, isParentedForestNode } from './Forest';\nimport { NodeData, Side } from './persisted-types';\n\n/**\n * Specifies the location of a trait (a labeled sequence of nodes) within the tree.\n * @alpha\n */\nexport interface TraitLocation {\n\treadonly parent: NodeId;\n\treadonly label: TraitLabel;\n}\n\n/**\n * An immutable view of a distributed tree node.\n * @alpha\n */\nexport interface TreeViewNode extends NodeData<NodeId> {\n\t/** The IDs of the children under this node */\n\treadonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;\n\t/** The parent and trait under which this node resides. Undefined iff this is the root node of the tree (i.e. {@link initialTree}). */\n\treadonly parentage?: TraitLocation;\n}\n\n/**\n * Index of a place within a trait.\n * 0 = before all nodes,\n * 1 = after first node,\n * etc.\n * @alpha\n */\nexport type PlaceIndex = number & { readonly PlaceIndex: unique symbol };\n\n/**\n * Index of a node within a trait.\n * 0 = first node,\n * 1 = second node,\n * etc.\n * @alpha\n */\nexport type TraitNodeIndex = number & { readonly TraitNodeIndex: unique symbol };\n\n/**\n * A place within a particular `TreeView` that is anchored relative to a specific node in the tree, or relative to the outside of the trait.\n * Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.\n * @alpha\n */\nexport interface TreeViewPlace {\n\treadonly sibling?: NodeId;\n\treadonly side: Side;\n\treadonly trait: TraitLocation;\n}\n\n/**\n * Specifies the range of nodes from `start` to `end` within a trait within a particular `TreeView`.\n * Valid iff start and end are valid and are within the same trait.\n * @alpha\n */\nexport interface TreeViewRange {\n\treadonly start: TreeViewPlace;\n\treadonly end: TreeViewPlace;\n}\n\n/**\n * Contains some redundant information. Use only in computations between edits. Do not store.\n * @internal\n */\nexport interface NodeInTrait {\n\treadonly trait: TraitLocation;\n\treadonly index: TraitNodeIndex;\n}\n\n/**\n * A view of a distributed tree.\n * @alpha\n */\nexport abstract class TreeView {\n\tpublic readonly root: NodeId;\n\tprotected readonly forest: Forest;\n\tprivate readonly rootNode: TreeViewNode;\n\n\t/**\n\t * A cache of node's index within their parent trait.\n\t * Used to avoid redundant linear scans of traits.\n\t * Not shared across views; initialized to empty each time a TreeView is created.\n\t */\n\tprivate traitIndicesCache?: Map<NodeId, TraitNodeIndex>;\n\n\tprotected constructor(root: NodeId, forest: Forest) {\n\t\tthis.root = root;\n\t\tthis.forest = forest;\n\t\tthis.rootNode = this.getViewNode(root);\n\t}\n\n\t/** @returns the number of nodes in this view */\n\tpublic get size(): number {\n\t\treturn this.forest.size;\n\t}\n\n\t/** @returns true iff a node with the given id exists in this view */\n\tpublic hasNode(id: NodeId): boolean {\n\t\treturn this.forest.has(id);\n\t}\n\n\t/**\n\t * @returns the index just after place (which specifies a location between items).\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic findIndexWithinTrait(place: TreeViewPlace): PlaceIndex {\n\t\tif (place.sibling === undefined) {\n\t\t\treturn this.getIndexOfSide(place.side, place.trait);\n\t\t}\n\t\treturn getIndex(place.side, this.getIndexInTrait(place.sibling));\n\t}\n\n\t/** @returns the node associated with the given id in this view. Fails if the node does not exist in this view. */\n\tpublic getViewNode(id: NodeId): TreeViewNode {\n\t\treturn this.tryGetViewNode(id) ?? fail('NodeId not found');\n\t}\n\n\t/** @returns the node associated with the given id in this view, or undefined if the node does not exist in this view */\n\tpublic tryGetViewNode(id: NodeId): TreeViewNode | undefined {\n\t\tconst forestNode = this.forest.tryGet(id);\n\t\tif (forestNode !== undefined && isParentedForestNode(forestNode)) {\n\t\t\tconst viewNode: TreeViewNode = {\n\t\t\t\tdefinition: forestNode.definition,\n\t\t\t\tidentifier: forestNode.identifier,\n\t\t\t\ttraits: forestNode.traits,\n\t\t\t\tparentage: {\n\t\t\t\t\tlabel: forestNode.traitParent,\n\t\t\t\t\tparent: forestNode.parentId,\n\t\t\t\t},\n\t\t\t};\n\t\t\tcopyPropertyIfDefined(forestNode, viewNode, 'payload');\n\t\t\treturn viewNode;\n\t\t}\n\n\t\treturn forestNode;\n\t}\n\n\t/**\n\t * @returns the label of the trait under which a node with the given id resides. Fails if the node does not exist in this view or if\n\t * it is the root node.\n\t */\n\tpublic getTraitLabel(id: NodeId): TraitLabel {\n\t\treturn this.forest.getParent(id).traitParent;\n\t}\n\n\t/**\n\t * @returns the label of the trait under which a node with the given id resides, or undefined if the node is not present in this\n\t * view or if it is the root node\n\t */\n\tpublic tryGetTraitLabel(id: NodeId): TraitLabel | undefined {\n\t\treturn this.forest.tryGetParent(id)?.traitParent;\n\t}\n\n\t/**\n\t * @returns the parent of the node with the given id. Fails if the node does not exist in this view or if it is the root node.\n\t */\n\tpublic getParentViewNode(id: NodeId): TreeViewNode {\n\t\tconst parentInfo = this.forest.getParent(id);\n\t\treturn this.getViewNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @returns the parent of the node with the given id. Returns undefined if the node does not exist in this view or if it is the root\n\t * node.\n\t */\n\tpublic tryGetParentViewNode(id: NodeId): TreeViewNode | undefined {\n\t\tconst parentInfo = this.forest.tryGetParent(id);\n\t\tif (parentInfo === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getViewNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @returns the trait location of the node with the given id. Fails if the node does not exist in this view or of it is the root\n\t * node\n\t */\n\tpublic getTraitLocation(id: NodeId): TraitLocation {\n\t\tconst parentData = this.forest.getParent(id);\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @returns the trait location of the node with the given id, or undefined if the node does not exist in this view or if it is the root\n\t * node\n\t */\n\tpublic tryGetTraitLocation(id: NodeId): TraitLocation | undefined {\n\t\tconst parentData = this.forest.tryGetParent(id);\n\t\tif (parentData === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @returns the index within the trait under which the node with the given id resides. The node must exist in this view and must have a\n\t * parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic getIndexInTrait(id: NodeId): TraitNodeIndex {\n\t\tconst index = this.tryGetIndexInTrait(id);\n\t\treturn index ?? fail('ID does not exist in the forest.');\n\t}\n\n\t/**\n\t * @returns the index within the trait under which the node with the given id resides, or undefined if the node does not exist in this\n\t * view or does not have a parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic tryGetIndexInTrait(id: NodeId): TraitNodeIndex | undefined {\n\t\tconst cachedIndex = this.traitIndicesCache?.get(id);\n\t\tif (cachedIndex !== undefined) {\n\t\t\treturn cachedIndex;\n\t\t}\n\n\t\tconst parentData = this.forest.tryGetParent(id);\n\t\tif (parentData === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst parent = this.forest.tryGet(parentData.parentId);\n\t\tif (parent === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst trait = parent.traits.get(parentData.traitParent) ?? fail('inconsistent forest: trait parent not found');\n\t\tlet foundIndex: TraitNodeIndex | undefined;\n\t\tif (trait.length === 0) {\n\t\t\treturn foundIndex;\n\t\t}\n\n\t\tthis.traitIndicesCache ??= new Map();\n\t\tfor (let i = 0; i < trait.length; i++) {\n\t\t\tconst nodeInTrait = trait[i];\n\t\t\tconst index = i as TraitNodeIndex;\n\t\t\tthis.traitIndicesCache.set(nodeInTrait, index);\n\t\t\tif (nodeInTrait === id) {\n\t\t\t\tfoundIndex = index;\n\t\t\t}\n\t\t}\n\n\t\treturn foundIndex;\n\t}\n\n\t/**\n\t * @returns the trait at the given location. If no such trait exists, returns an empty trait.\n\t */\n\tpublic getTrait(traitLocation: TraitLocation): readonly NodeId[] {\n\t\treturn this.getViewNode(traitLocation.parent).traits.get(traitLocation.label) ?? [];\n\t}\n\n\t/** Asserts that the view's internal state is consistent. Useful for testing/validation. */\n\tpublic assertConsistent(): void {\n\t\tthis.forest.assertConsistent();\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<TreeViewNode> {\n\t\treturn this.iterateNodeDescendants(this.rootNode);\n\t}\n\n\t/** @returns true iff the given view is equal to this view */\n\tpublic abstract equals(view: TreeView): boolean;\n\n\t/**\n\t * @returns true iff the given view's forest of nodes is equivalent to this view's forest of nodes\n\t * @param strict - if true, the views' forests must be the same object, otherwise they must merely be equivalent\n\t */\n\tpublic hasEqualForest(view: TreeView, strict = false): boolean {\n\t\tif (this.root === view.root) {\n\t\t\t// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.\n\t\t\treturn strict ? this.forest === view.forest : this.forest.equals(view.forest);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate *iterateNodeDescendants(node: TreeViewNode): IterableIterator<TreeViewNode> {\n\t\tyield node;\n\t\tfor (const label of [...node.traits.keys()].sort()) {\n\t\t\tconst trait = node.traits.get(label);\n\t\t\tfor (const childId of trait ?? fail('Expected trait with label')) {\n\t\t\t\tconst child = this.getViewNode(childId);\n\t\t\t\tyield* this.iterateNodeDescendants(child);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getIndexOfSide(side: Side, traitLocation: TraitLocation): PlaceIndex {\n\t\treturn side === Side.After ? (0 as PlaceIndex) : (this.getTrait(traitLocation).length as PlaceIndex);\n\t}\n\n\t/**\n\t * Calculate the difference between two `TreeView`s\n\t * @param view - the other view to compare to this one\n\t * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `view`.\n\t * The views must share a root.\n\t */\n\tpublic delta(view: TreeView): Delta<NodeId> {\n\t\tassert(this.root === view.root, 0x63d /* Delta can only be calculated between views that share a root */);\n\t\treturn this.forest.delta(view.forest);\n\t}\n}\n\nfunction getIndex(side: Side, index: TraitNodeIndex): PlaceIndex {\n\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\treturn (side + index) as PlaceIndex;\n}\n"]}
1
+ {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../src/TreeView.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from '@fluidframework/core-utils';\nimport { copyPropertyIfDefined, fail } from './Common.js';\nimport { NodeId, TraitLabel } from './Identifiers.js';\nimport { Delta, Forest, isParentedForestNode } from './Forest.js';\nimport { NodeData, Side } from './persisted-types/index.js';\n\n/**\n * Specifies the location of a trait (a labeled sequence of nodes) within the tree.\n * @alpha\n */\nexport interface TraitLocation {\n\treadonly parent: NodeId;\n\treadonly label: TraitLabel;\n}\n\n/**\n * An immutable view of a distributed tree node.\n * @alpha\n */\nexport interface TreeViewNode extends NodeData<NodeId> {\n\t/** The IDs of the children under this node */\n\treadonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;\n\t/** The parent and trait under which this node resides. Undefined iff this is the root node of the tree (i.e. {@link initialTree}). */\n\treadonly parentage?: TraitLocation;\n}\n\n/**\n * Index of a place within a trait.\n * 0 = before all nodes,\n * 1 = after first node,\n * etc.\n * @alpha\n */\nexport type PlaceIndex = number & { readonly PlaceIndex: unique symbol };\n\n/**\n * Index of a node within a trait.\n * 0 = first node,\n * 1 = second node,\n * etc.\n * @alpha\n */\nexport type TraitNodeIndex = number & { readonly TraitNodeIndex: unique symbol };\n\n/**\n * A place within a particular `TreeView` that is anchored relative to a specific node in the tree, or relative to the outside of the trait.\n * Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.\n * @alpha\n */\nexport interface TreeViewPlace {\n\treadonly sibling?: NodeId;\n\treadonly side: Side;\n\treadonly trait: TraitLocation;\n}\n\n/**\n * Specifies the range of nodes from `start` to `end` within a trait within a particular `TreeView`.\n * Valid iff start and end are valid and are within the same trait.\n * @alpha\n */\nexport interface TreeViewRange {\n\treadonly start: TreeViewPlace;\n\treadonly end: TreeViewPlace;\n}\n\n/**\n * Contains some redundant information. Use only in computations between edits. Do not store.\n * @internal\n */\nexport interface NodeInTrait {\n\treadonly trait: TraitLocation;\n\treadonly index: TraitNodeIndex;\n}\n\n/**\n * A view of a distributed tree.\n * @alpha\n */\nexport abstract class TreeView {\n\tpublic readonly root: NodeId;\n\tprotected readonly forest: Forest;\n\tprivate readonly rootNode: TreeViewNode;\n\n\t/**\n\t * A cache of node's index within their parent trait.\n\t * Used to avoid redundant linear scans of traits.\n\t * Not shared across views; initialized to empty each time a TreeView is created.\n\t */\n\tprivate traitIndicesCache?: Map<NodeId, TraitNodeIndex>;\n\n\tprotected constructor(root: NodeId, forest: Forest) {\n\t\tthis.root = root;\n\t\tthis.forest = forest;\n\t\tthis.rootNode = this.getViewNode(root);\n\t}\n\n\t/** @returns the number of nodes in this view */\n\tpublic get size(): number {\n\t\treturn this.forest.size;\n\t}\n\n\t/** @returns true iff a node with the given id exists in this view */\n\tpublic hasNode(id: NodeId): boolean {\n\t\treturn this.forest.has(id);\n\t}\n\n\t/**\n\t * @returns the index just after place (which specifies a location between items).\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic findIndexWithinTrait(place: TreeViewPlace): PlaceIndex {\n\t\tif (place.sibling === undefined) {\n\t\t\treturn this.getIndexOfSide(place.side, place.trait);\n\t\t}\n\t\treturn getIndex(place.side, this.getIndexInTrait(place.sibling));\n\t}\n\n\t/** @returns the node associated with the given id in this view. Fails if the node does not exist in this view. */\n\tpublic getViewNode(id: NodeId): TreeViewNode {\n\t\treturn this.tryGetViewNode(id) ?? fail('NodeId not found');\n\t}\n\n\t/** @returns the node associated with the given id in this view, or undefined if the node does not exist in this view */\n\tpublic tryGetViewNode(id: NodeId): TreeViewNode | undefined {\n\t\tconst forestNode = this.forest.tryGet(id);\n\t\tif (forestNode !== undefined && isParentedForestNode(forestNode)) {\n\t\t\tconst viewNode: TreeViewNode = {\n\t\t\t\tdefinition: forestNode.definition,\n\t\t\t\tidentifier: forestNode.identifier,\n\t\t\t\ttraits: forestNode.traits,\n\t\t\t\tparentage: {\n\t\t\t\t\tlabel: forestNode.traitParent,\n\t\t\t\t\tparent: forestNode.parentId,\n\t\t\t\t},\n\t\t\t};\n\t\t\tcopyPropertyIfDefined(forestNode, viewNode, 'payload');\n\t\t\treturn viewNode;\n\t\t}\n\n\t\treturn forestNode;\n\t}\n\n\t/**\n\t * @returns the label of the trait under which a node with the given id resides. Fails if the node does not exist in this view or if\n\t * it is the root node.\n\t */\n\tpublic getTraitLabel(id: NodeId): TraitLabel {\n\t\treturn this.forest.getParent(id).traitParent;\n\t}\n\n\t/**\n\t * @returns the label of the trait under which a node with the given id resides, or undefined if the node is not present in this\n\t * view or if it is the root node\n\t */\n\tpublic tryGetTraitLabel(id: NodeId): TraitLabel | undefined {\n\t\treturn this.forest.tryGetParent(id)?.traitParent;\n\t}\n\n\t/**\n\t * @returns the parent of the node with the given id. Fails if the node does not exist in this view or if it is the root node.\n\t */\n\tpublic getParentViewNode(id: NodeId): TreeViewNode {\n\t\tconst parentInfo = this.forest.getParent(id);\n\t\treturn this.getViewNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @returns the parent of the node with the given id. Returns undefined if the node does not exist in this view or if it is the root\n\t * node.\n\t */\n\tpublic tryGetParentViewNode(id: NodeId): TreeViewNode | undefined {\n\t\tconst parentInfo = this.forest.tryGetParent(id);\n\t\tif (parentInfo === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getViewNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @returns the trait location of the node with the given id. Fails if the node does not exist in this view or of it is the root\n\t * node\n\t */\n\tpublic getTraitLocation(id: NodeId): TraitLocation {\n\t\tconst parentData = this.forest.getParent(id);\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @returns the trait location of the node with the given id, or undefined if the node does not exist in this view or if it is the root\n\t * node\n\t */\n\tpublic tryGetTraitLocation(id: NodeId): TraitLocation | undefined {\n\t\tconst parentData = this.forest.tryGetParent(id);\n\t\tif (parentData === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @returns the index within the trait under which the node with the given id resides. The node must exist in this view and must have a\n\t * parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic getIndexInTrait(id: NodeId): TraitNodeIndex {\n\t\tconst index = this.tryGetIndexInTrait(id);\n\t\treturn index ?? fail('ID does not exist in the forest.');\n\t}\n\n\t/**\n\t * @returns the index within the trait under which the node with the given id resides, or undefined if the node does not exist in this\n\t * view or does not have a parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic tryGetIndexInTrait(id: NodeId): TraitNodeIndex | undefined {\n\t\tconst cachedIndex = this.traitIndicesCache?.get(id);\n\t\tif (cachedIndex !== undefined) {\n\t\t\treturn cachedIndex;\n\t\t}\n\n\t\tconst parentData = this.forest.tryGetParent(id);\n\t\tif (parentData === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst parent = this.forest.tryGet(parentData.parentId);\n\t\tif (parent === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst trait = parent.traits.get(parentData.traitParent) ?? fail('inconsistent forest: trait parent not found');\n\t\tlet foundIndex: TraitNodeIndex | undefined;\n\t\tif (trait.length === 0) {\n\t\t\treturn foundIndex;\n\t\t}\n\n\t\tthis.traitIndicesCache ??= new Map();\n\t\tfor (let i = 0; i < trait.length; i++) {\n\t\t\tconst nodeInTrait = trait[i];\n\t\t\tconst index = i as TraitNodeIndex;\n\t\t\tthis.traitIndicesCache.set(nodeInTrait, index);\n\t\t\tif (nodeInTrait === id) {\n\t\t\t\tfoundIndex = index;\n\t\t\t}\n\t\t}\n\n\t\treturn foundIndex;\n\t}\n\n\t/**\n\t * @returns the trait at the given location. If no such trait exists, returns an empty trait.\n\t */\n\tpublic getTrait(traitLocation: TraitLocation): readonly NodeId[] {\n\t\treturn this.getViewNode(traitLocation.parent).traits.get(traitLocation.label) ?? [];\n\t}\n\n\t/** Asserts that the view's internal state is consistent. Useful for testing/validation. */\n\tpublic assertConsistent(): void {\n\t\tthis.forest.assertConsistent();\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<TreeViewNode> {\n\t\treturn this.iterateNodeDescendants(this.rootNode);\n\t}\n\n\t/** @returns true iff the given view is equal to this view */\n\tpublic abstract equals(view: TreeView): boolean;\n\n\t/**\n\t * @returns true iff the given view's forest of nodes is equivalent to this view's forest of nodes\n\t * @param strict - if true, the views' forests must be the same object, otherwise they must merely be equivalent\n\t */\n\tpublic hasEqualForest(view: TreeView, strict = false): boolean {\n\t\tif (this.root === view.root) {\n\t\t\t// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.\n\t\t\treturn strict ? this.forest === view.forest : this.forest.equals(view.forest);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate *iterateNodeDescendants(node: TreeViewNode): IterableIterator<TreeViewNode> {\n\t\tyield node;\n\t\tfor (const label of [...node.traits.keys()].sort()) {\n\t\t\tconst trait = node.traits.get(label);\n\t\t\tfor (const childId of trait ?? fail('Expected trait with label')) {\n\t\t\t\tconst child = this.getViewNode(childId);\n\t\t\t\tyield* this.iterateNodeDescendants(child);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getIndexOfSide(side: Side, traitLocation: TraitLocation): PlaceIndex {\n\t\treturn side === Side.After ? (0 as PlaceIndex) : (this.getTrait(traitLocation).length as PlaceIndex);\n\t}\n\n\t/**\n\t * Calculate the difference between two `TreeView`s\n\t * @param view - the other view to compare to this one\n\t * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `view`.\n\t * The views must share a root.\n\t */\n\tpublic delta(view: TreeView): Delta<NodeId> {\n\t\tassert(this.root === view.root, 0x63d /* Delta can only be calculated between views that share a root */);\n\t\treturn this.forest.delta(view.forest);\n\t}\n}\n\nfunction getIndex(side: Side, index: TraitNodeIndex): PlaceIndex {\n\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\treturn (side + index) as PlaceIndex;\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { StablePlace, StableRange } from './ChangeTypes';
6
- import { TraitLocation, TreeView, TreeViewPlace, TreeViewRange } from './TreeView';
5
+ import { StablePlace, StableRange } from './ChangeTypes.js';
6
+ import { TraitLocation, TreeView, TreeViewPlace, TreeViewRange } from './TreeView.js';
7
7
  /**
8
8
  * Express the given {@link (StableRange:interface)} as a {@link TreeViewRange}
9
9
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewUtilities.d.ts","sourceRoot":"","sources":["../src/TreeViewUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAOtF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,aAAa,CAc5F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAQzF"}
1
+ {"version":3,"file":"TreeViewUtilities.d.ts","sourceRoot":"","sources":["../src/TreeViewUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAOtF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,aAAa,CAc5F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAQzF"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.getTraitLocationOfRange = exports.placeFromStablePlace = exports.rangeFromStableRange = void 0;
8
- const Common_1 = require("./Common");
8
+ const Common_js_1 = require("./Common.js");
9
9
  /**
10
10
  * Express the given {@link (StableRange:interface)} as a {@link TreeViewRange}
11
11
  * @internal
@@ -26,7 +26,7 @@ exports.rangeFromStableRange = rangeFromStableRange;
26
26
  function placeFromStablePlace(view, stablePlace) {
27
27
  const { side } = stablePlace;
28
28
  if (stablePlace.referenceSibling === undefined) {
29
- (0, Common_1.assertWithMessage)(stablePlace.referenceTrait !== undefined);
29
+ (0, Common_js_1.assertWithMessage)(stablePlace.referenceTrait !== undefined);
30
30
  return {
31
31
  trait: stablePlace.referenceTrait,
32
32
  side,
@@ -50,7 +50,7 @@ function getTraitLocationOfRange(view, range) {
50
50
  if (referenceTrait) {
51
51
  return referenceTrait;
52
52
  }
53
- const sibling = range.start.referenceSibling ?? range.end.referenceSibling ?? (0, Common_1.fail)('malformed range does not indicate trait');
53
+ const sibling = range.start.referenceSibling ?? range.end.referenceSibling ?? (0, Common_js_1.fail)('malformed range does not indicate trait');
54
54
  return view.getTraitLocation(sibling);
55
55
  }
56
56
  exports.getTraitLocationOfRange = getTraitLocationOfRange;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewUtilities.js","sourceRoot":"","sources":["../src/TreeViewUtilities.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,qCAAmD;AAGnD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAc,EAAE,KAAkB;IACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,qDAAqD;IACrD,OAAO;QACN,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;QACtD,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;KAClD,CAAC;AACH,CAAC;AAPD,oDAOC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAc,EAAE,WAAwB;IAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IAC7B,IAAI,WAAW,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC/C,IAAA,0BAAiB,EAAC,WAAW,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC;QAC5D,OAAO;YACN,KAAK,EAAE,WAAW,CAAC,cAAc;YACjC,IAAI;SACJ,CAAC;KACF;IACD,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,gBAAgB,CAAC;QAC1D,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,gBAAgB;KACrC,CAAC;AACH,CAAC;AAdD,oDAcC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,IAAc,EAAE,KAAkB;IACzE,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;IAC9E,IAAI,cAAc,EAAE;QACnB,OAAO,cAAc,CAAC;KACtB;IACD,MAAM,OAAO,GACZ,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAA,aAAI,EAAC,yCAAyC,CAAC,CAAC;IAC/G,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AARD,0DAQC;AAED,SAAS,WAAW,CAAC,KAAkB,EAAE,WAAwB,EAAE,KAAoB;IACtF,MAAM,eAAe,GAAG,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACpF,OAAO;QACN,KAAK;QACL,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,OAAO,EAAE,eAAe,CAAC,gBAAgB;KACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,IAAK,WASJ;AATD,WAAK,WAAW;IACf;;OAEG;IACH,+CAAS,CAAA;IACT;;OAEG;IACH,2CAAO,CAAA;AACR,CAAC,EATI,WAAW,KAAX,WAAW,QASf","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StablePlace, StableRange } from './ChangeTypes';\nimport { assertWithMessage, fail } from './Common';\nimport { TraitLocation, TreeView, TreeViewPlace, TreeViewRange } from './TreeView';\n\n/**\n * Express the given {@link (StableRange:interface)} as a {@link TreeViewRange}\n * @internal\n */\nexport function rangeFromStableRange(view: TreeView, range: StableRange): TreeViewRange {\n\tconst location = getTraitLocationOfRange(view, range);\n\t// This can be optimized for better constant factors.\n\treturn {\n\t\tstart: sideOfRange(range, SideOfRange.Start, location),\n\t\tend: sideOfRange(range, SideOfRange.End, location),\n\t};\n}\n\n/**\n * Express the given {@link (StablePlace:interface)} as a {@link TreeViewPlace}\n * @internal\n */\nexport function placeFromStablePlace(view: TreeView, stablePlace: StablePlace): TreeViewPlace {\n\tconst { side } = stablePlace;\n\tif (stablePlace.referenceSibling === undefined) {\n\t\tassertWithMessage(stablePlace.referenceTrait !== undefined);\n\t\treturn {\n\t\t\ttrait: stablePlace.referenceTrait,\n\t\t\tside,\n\t\t};\n\t}\n\treturn {\n\t\ttrait: view.getTraitLocation(stablePlace.referenceSibling),\n\t\tside: stablePlace.side,\n\t\tsibling: stablePlace.referenceSibling,\n\t};\n}\n\n/**\n * Return the trait under which the given range resides\n * @param view - the {@link TreeView} within which to retrieve the trait location\n * @param range - must be well formed and valid\n * @internal\n */\nexport function getTraitLocationOfRange(view: TreeView, range: StableRange): TraitLocation {\n\tconst referenceTrait = range.start.referenceTrait ?? range.end.referenceTrait;\n\tif (referenceTrait) {\n\t\treturn referenceTrait;\n\t}\n\tconst sibling =\n\t\trange.start.referenceSibling ?? range.end.referenceSibling ?? fail('malformed range does not indicate trait');\n\treturn view.getTraitLocation(sibling);\n}\n\nfunction sideOfRange(range: StableRange, sideOfRange: SideOfRange, trait: TraitLocation): TreeViewPlace {\n\tconst siblingRelative = sideOfRange === SideOfRange.Start ? range.start : range.end;\n\treturn {\n\t\ttrait,\n\t\tside: siblingRelative.side,\n\t\tsibling: siblingRelative.referenceSibling,\n\t};\n}\n\n/**\n * Denotes either the start or end of a range\n */\nenum SideOfRange {\n\t/**\n\t * The start of the range\n\t */\n\tStart = 0,\n\t/**\n\t * The end of the range\n\t */\n\tEnd = 1,\n}\n"]}
1
+ {"version":3,"file":"TreeViewUtilities.js","sourceRoot":"","sources":["../src/TreeViewUtilities.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,2CAAsD;AAGtD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAc,EAAE,KAAkB;IACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,qDAAqD;IACrD,OAAO;QACN,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;QACtD,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;KAClD,CAAC;AACH,CAAC;AAPD,oDAOC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAc,EAAE,WAAwB;IAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IAC7B,IAAI,WAAW,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC/C,IAAA,6BAAiB,EAAC,WAAW,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC;QAC5D,OAAO;YACN,KAAK,EAAE,WAAW,CAAC,cAAc;YACjC,IAAI;SACJ,CAAC;KACF;IACD,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,gBAAgB,CAAC;QAC1D,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,gBAAgB;KACrC,CAAC;AACH,CAAC;AAdD,oDAcC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,IAAc,EAAE,KAAkB;IACzE,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;IAC9E,IAAI,cAAc,EAAE;QACnB,OAAO,cAAc,CAAC;KACtB;IACD,MAAM,OAAO,GACZ,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAA,gBAAI,EAAC,yCAAyC,CAAC,CAAC;IAC/G,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AARD,0DAQC;AAED,SAAS,WAAW,CAAC,KAAkB,EAAE,WAAwB,EAAE,KAAoB;IACtF,MAAM,eAAe,GAAG,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACpF,OAAO;QACN,KAAK;QACL,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,OAAO,EAAE,eAAe,CAAC,gBAAgB;KACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,IAAK,WASJ;AATD,WAAK,WAAW;IACf;;OAEG;IACH,+CAAS,CAAA;IACT;;OAEG;IACH,2CAAO,CAAA;AACR,CAAC,EATI,WAAW,KAAX,WAAW,QASf","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StablePlace, StableRange } from './ChangeTypes.js';\nimport { assertWithMessage, fail } from './Common.js';\nimport { TraitLocation, TreeView, TreeViewPlace, TreeViewRange } from './TreeView.js';\n\n/**\n * Express the given {@link (StableRange:interface)} as a {@link TreeViewRange}\n * @internal\n */\nexport function rangeFromStableRange(view: TreeView, range: StableRange): TreeViewRange {\n\tconst location = getTraitLocationOfRange(view, range);\n\t// This can be optimized for better constant factors.\n\treturn {\n\t\tstart: sideOfRange(range, SideOfRange.Start, location),\n\t\tend: sideOfRange(range, SideOfRange.End, location),\n\t};\n}\n\n/**\n * Express the given {@link (StablePlace:interface)} as a {@link TreeViewPlace}\n * @internal\n */\nexport function placeFromStablePlace(view: TreeView, stablePlace: StablePlace): TreeViewPlace {\n\tconst { side } = stablePlace;\n\tif (stablePlace.referenceSibling === undefined) {\n\t\tassertWithMessage(stablePlace.referenceTrait !== undefined);\n\t\treturn {\n\t\t\ttrait: stablePlace.referenceTrait,\n\t\t\tside,\n\t\t};\n\t}\n\treturn {\n\t\ttrait: view.getTraitLocation(stablePlace.referenceSibling),\n\t\tside: stablePlace.side,\n\t\tsibling: stablePlace.referenceSibling,\n\t};\n}\n\n/**\n * Return the trait under which the given range resides\n * @param view - the {@link TreeView} within which to retrieve the trait location\n * @param range - must be well formed and valid\n * @internal\n */\nexport function getTraitLocationOfRange(view: TreeView, range: StableRange): TraitLocation {\n\tconst referenceTrait = range.start.referenceTrait ?? range.end.referenceTrait;\n\tif (referenceTrait) {\n\t\treturn referenceTrait;\n\t}\n\tconst sibling =\n\t\trange.start.referenceSibling ?? range.end.referenceSibling ?? fail('malformed range does not indicate trait');\n\treturn view.getTraitLocation(sibling);\n}\n\nfunction sideOfRange(range: StableRange, sideOfRange: SideOfRange, trait: TraitLocation): TreeViewPlace {\n\tconst siblingRelative = sideOfRange === SideOfRange.Start ? range.start : range.end;\n\treturn {\n\t\ttrait,\n\t\tside: siblingRelative.side,\n\t\tsibling: siblingRelative.referenceSibling,\n\t};\n}\n\n/**\n * Denotes either the start or end of a range\n */\nenum SideOfRange {\n\t/**\n\t * The start of the range\n\t */\n\tStart = 0,\n\t/**\n\t * The end of the range\n\t */\n\tEnd = 1,\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { EditId } from './Identifiers';
6
- import { SharedTree } from './SharedTree';
5
+ import { EditId } from './Identifiers.js';
6
+ import { SharedTree } from './SharedTree.js';
7
7
  export interface IRevertible {
8
8
  revert(): any;
9
9
  discard(): any;
@@ -1 +1 @@
1
- {"version":3,"file":"UndoRedoHandler.d.ts","sourceRoot":"","sources":["../src/UndoRedoHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAA+B,UAAU,EAAE,MAAM,cAAc,CAAC;AAKvE,MAAM,WAAW,WAAW;IAC3B,MAAM,QAAG;IACT,OAAO,QAAG;CACV;AAED,MAAM,WAAW,aAAa;IAC7B,sBAAsB,CAAC,UAAU,EAAE,WAAW,OAAE;CAChD;AAED;;;GAGG;AACH,qBAAa,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,aAAa;IAEjD,UAAU,CAAC,IAAI,EAAE,UAAU;IAG3B,UAAU,CAAC,IAAI,EAAE,UAAU;IAIlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAc/B;CACF;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU;IAG3B,MAAM;IAIN,OAAO;CAGd"}
1
+ {"version":3,"file":"UndoRedoHandler.d.ts","sourceRoot":"","sources":["../src/UndoRedoHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAA+B,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK1E,MAAM,WAAW,WAAW;IAC3B,MAAM,QAAG;IACT,OAAO,QAAG;CACV;AAED,MAAM,WAAW,aAAa;IAC7B,sBAAsB,CAAC,UAAU,EAAE,WAAW,OAAE;CAChD;AAED;;;GAGG;AACH,qBAAa,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,aAAa;IAEjD,UAAU,CAAC,IAAI,EAAE,UAAU;IAG3B,UAAU,CAAC,IAAI,EAAE,UAAU;IAIlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAc/B;CACF;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU;IAG3B,MAAM;IAIN,OAAO;CAGd"}
@@ -5,8 +5,8 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.SharedTreeRevertible = exports.SharedTreeUndoRedoHandler = void 0;
8
- const Common_1 = require("./Common");
9
- const EventTypes_1 = require("./EventTypes");
8
+ const Common_js_1 = require("./Common.js");
9
+ const EventTypes_js_1 = require("./EventTypes.js");
10
10
  /**
11
11
  * A shared tree undo redo handler that will add revertible local tree changes to the provided
12
12
  * undo redo stack manager
@@ -17,15 +17,15 @@ class SharedTreeUndoRedoHandler {
17
17
  this.treeDeltaHandler = (eventArguments) => {
18
18
  const { editId, local, tree } = eventArguments;
19
19
  if (local) {
20
- this.stackManager.pushToCurrentOperation(new SharedTreeRevertible(editId, (0, Common_1.assertNotUndefined)(tree, 'An edit committed event for a revertible edit should include the target SharedTree in its arguments.')));
20
+ this.stackManager.pushToCurrentOperation(new SharedTreeRevertible(editId, (0, Common_js_1.assertNotUndefined)(tree, 'An edit committed event for a revertible edit should include the target SharedTree in its arguments.')));
21
21
  }
22
22
  };
23
23
  }
24
24
  attachTree(tree) {
25
- tree.on(EventTypes_1.SharedTreeEvent.EditCommitted, this.treeDeltaHandler);
25
+ tree.on(EventTypes_js_1.SharedTreeEvent.EditCommitted, this.treeDeltaHandler);
26
26
  }
27
27
  detachTree(tree) {
28
- tree.off(EventTypes_1.SharedTreeEvent.EditCommitted, this.treeDeltaHandler);
28
+ tree.off(EventTypes_js_1.SharedTreeEvent.EditCommitted, this.treeDeltaHandler);
29
29
  }
30
30
  }
31
31
  exports.SharedTreeUndoRedoHandler = SharedTreeUndoRedoHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"UndoRedoHandler.js","sourceRoot":"","sources":["../src/UndoRedoHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAA8C;AAC9C,6CAA+C;AAgB/C;;;GAGG;AACH,MAAa,yBAAyB;IACrC,YAA6B,YAA2B;QAA3B,iBAAY,GAAZ,YAAY,CAAe;QASvC,qBAAgB,GAAG,CAAC,cAA2C,EAAE,EAAE;YACnF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;YAE/C,IAAI,KAAK,EAAE;gBACV,IAAI,CAAC,YAAY,CAAC,sBAAsB,CACvC,IAAI,oBAAoB,CACvB,MAAM,EACN,IAAA,2BAAkB,EACjB,IAAI,EACJ,sGAAsG,CACtG,CACD,CACD,CAAC;aACF;QACF,CAAC,CAAC;IAvByD,CAAC;IAErD,UAAU,CAAC,IAAgB;QACjC,IAAI,CAAC,EAAE,CAAC,4BAAe,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IACM,UAAU,CAAC,IAAgB;QACjC,IAAI,CAAC,GAAG,CAAC,4BAAe,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;CAiBD;AAzBD,8DAyBC;AAED;;GAEG;AACH,MAAa,oBAAoB;IAChC,YACkB,MAAc,EACd,IAAgB;QADhB,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAY;IAC/B,CAAC;IAEG,MAAM;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEM,OAAO;QACb,OAAO;IACR,CAAC;CACD;AAbD,oDAaC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assertNotUndefined } from './Common';\nimport { SharedTreeEvent } from './EventTypes';\nimport { EditId } from './Identifiers';\nimport { EditCommittedEventArguments, SharedTree } from './SharedTree';\n\n// TODO: We temporarily duplicate these contracts from 'framework/undo-redo' to unblock development\n// while we decide on the correct layering for undo.\n\nexport interface IRevertible {\n\trevert();\n\tdiscard();\n}\n\nexport interface IUndoConsumer {\n\tpushToCurrentOperation(revertible: IRevertible);\n}\n\n/**\n * A shared tree undo redo handler that will add revertible local tree changes to the provided\n * undo redo stack manager\n */\nexport class SharedTreeUndoRedoHandler {\n\tconstructor(private readonly stackManager: IUndoConsumer) {}\n\n\tpublic attachTree(tree: SharedTree) {\n\t\ttree.on(SharedTreeEvent.EditCommitted, this.treeDeltaHandler);\n\t}\n\tpublic detachTree(tree: SharedTree) {\n\t\ttree.off(SharedTreeEvent.EditCommitted, this.treeDeltaHandler);\n\t}\n\n\tprivate readonly treeDeltaHandler = (eventArguments: EditCommittedEventArguments) => {\n\t\tconst { editId, local, tree } = eventArguments;\n\n\t\tif (local) {\n\t\t\tthis.stackManager.pushToCurrentOperation(\n\t\t\t\tnew SharedTreeRevertible(\n\t\t\t\t\teditId,\n\t\t\t\t\tassertNotUndefined(\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\t'An edit committed event for a revertible edit should include the target SharedTree in its arguments.'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * Tracks a change on a shared tree and allows reverting it\n */\nexport class SharedTreeRevertible implements IRevertible {\n\tconstructor(\n\t\tprivate readonly editId: EditId,\n\t\tprivate readonly tree: SharedTree\n\t) {}\n\n\tpublic revert() {\n\t\tthis.tree.revert(this.editId);\n\t}\n\n\tpublic discard() {\n\t\treturn;\n\t}\n}\n"]}
1
+ {"version":3,"file":"UndoRedoHandler.js","sourceRoot":"","sources":["../src/UndoRedoHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAAiD;AACjD,mDAAkD;AAgBlD;;;GAGG;AACH,MAAa,yBAAyB;IACrC,YAA6B,YAA2B;QAA3B,iBAAY,GAAZ,YAAY,CAAe;QASvC,qBAAgB,GAAG,CAAC,cAA2C,EAAE,EAAE;YACnF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;YAE/C,IAAI,KAAK,EAAE;gBACV,IAAI,CAAC,YAAY,CAAC,sBAAsB,CACvC,IAAI,oBAAoB,CACvB,MAAM,EACN,IAAA,8BAAkB,EACjB,IAAI,EACJ,sGAAsG,CACtG,CACD,CACD,CAAC;aACF;QACF,CAAC,CAAC;IAvByD,CAAC;IAErD,UAAU,CAAC,IAAgB;QACjC,IAAI,CAAC,EAAE,CAAC,+BAAe,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IACM,UAAU,CAAC,IAAgB;QACjC,IAAI,CAAC,GAAG,CAAC,+BAAe,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;CAiBD;AAzBD,8DAyBC;AAED;;GAEG;AACH,MAAa,oBAAoB;IAChC,YACkB,MAAc,EACd,IAAgB;QADhB,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAY;IAC/B,CAAC;IAEG,MAAM;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEM,OAAO;QACb,OAAO;IACR,CAAC;CACD;AAbD,oDAaC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assertNotUndefined } from './Common.js';\nimport { SharedTreeEvent } from './EventTypes.js';\nimport { EditId } from './Identifiers.js';\nimport { EditCommittedEventArguments, SharedTree } from './SharedTree.js';\n\n// TODO: We temporarily duplicate these contracts from 'framework/undo-redo' to unblock development\n// while we decide on the correct layering for undo.\n\nexport interface IRevertible {\n\trevert();\n\tdiscard();\n}\n\nexport interface IUndoConsumer {\n\tpushToCurrentOperation(revertible: IRevertible);\n}\n\n/**\n * A shared tree undo redo handler that will add revertible local tree changes to the provided\n * undo redo stack manager\n */\nexport class SharedTreeUndoRedoHandler {\n\tconstructor(private readonly stackManager: IUndoConsumer) {}\n\n\tpublic attachTree(tree: SharedTree) {\n\t\ttree.on(SharedTreeEvent.EditCommitted, this.treeDeltaHandler);\n\t}\n\tpublic detachTree(tree: SharedTree) {\n\t\ttree.off(SharedTreeEvent.EditCommitted, this.treeDeltaHandler);\n\t}\n\n\tprivate readonly treeDeltaHandler = (eventArguments: EditCommittedEventArguments) => {\n\t\tconst { editId, local, tree } = eventArguments;\n\n\t\tif (local) {\n\t\t\tthis.stackManager.pushToCurrentOperation(\n\t\t\t\tnew SharedTreeRevertible(\n\t\t\t\t\teditId,\n\t\t\t\t\tassertNotUndefined(\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\t'An edit committed event for a revertible edit should include the target SharedTree in its arguments.'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * Tracks a change on a shared tree and allows reverting it\n */\nexport class SharedTreeRevertible implements IRevertible {\n\tconstructor(\n\t\tprivate readonly editId: EditId,\n\t\tprivate readonly tree: SharedTree\n\t) {}\n\n\tpublic revert() {\n\t\tthis.tree.revert(this.editId);\n\t}\n\n\tpublic discard() {\n\t\treturn;\n\t}\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { StableId, UuidString } from './Identifiers';
5
+ import { StableId, UuidString } from './Identifiers.js';
6
6
  /** The null (lowest/all-zeros) UUID */
7
7
  export declare const nilUuid: UuidString;
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"UuidUtilities.d.ts","sourceRoot":"","sources":["../src/UuidUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmBrD,uCAAuC;AACvC,eAAO,MAAM,OAAO,YAA0B,CAAC;AAE/C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAGjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAqB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAG3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAuCvD"}
1
+ {"version":3,"file":"UuidUtilities.d.ts","sourceRoot":"","sources":["../src/UuidUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAmBxD,uCAAuC;AACvC,eAAO,MAAM,OAAO,YAA0B,CAAC;AAE/C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAGjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAqB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAG3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAuCvD"}
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.isStableId = exports.assertIsStableId = exports.generateStableId = exports.isUuidString = exports.assertIsUuidString = exports.nilUuid = void 0;
8
8
  const uuid_1 = require("uuid");
9
- const Common_1 = require("./Common");
9
+ const Common_js_1 = require("./Common.js");
10
10
  const hexadecimalCharCodes = Array.from('09afAF').map((c) => c.charCodeAt(0));
11
11
  function isHexadecimalCharacter(charCode) {
12
12
  return ((charCode >= hexadecimalCharCodes[0] && charCode <= hexadecimalCharCodes[1]) ||
@@ -19,7 +19,7 @@ exports.nilUuid = assertIsUuidString(uuid_1.NIL);
19
19
  * Asserts that the given string is a UUID
20
20
  */
21
21
  function assertIsUuidString(uuidString) {
22
- (0, Common_1.assertWithMessage)(isUuidString(uuidString), `${uuidString} is not an UuidString`);
22
+ (0, Common_js_1.assertWithMessage)(isUuidString(uuidString), `${uuidString} is not an UuidString`);
23
23
  return uuidString;
24
24
  }
25
25
  exports.assertIsUuidString = assertIsUuidString;
@@ -59,7 +59,7 @@ exports.generateStableId = generateStableId;
59
59
  * Asserts that the given string is a stable ID.
60
60
  */
61
61
  function assertIsStableId(stableId) {
62
- (0, Common_1.assertWithMessage)(isStableId(stableId), `${stableId} is not a StableId.`);
62
+ (0, Common_js_1.assertWithMessage)(isStableId(stableId), `${stableId} is not a StableId.`);
63
63
  return stableId;
64
64
  }
65
65
  exports.assertIsStableId = assertIsStableId;
@@ -1 +1 @@
1
- {"version":3,"file":"UuidUtilities.js","sourceRoot":"","sources":["../src/UuidUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { v4, NIL } from 'uuid';\nimport { assertWithMessage } from './Common';\nimport { StableId, UuidString } from './Identifiers';\n\nconst hexadecimalCharCodes = Array.from('09afAF').map((c) => c.charCodeAt(0)) as [\n\tzero: number,\n\tnine: number,\n\ta: number,\n\tf: number,\n\tA: number,\n\tF: number,\n];\n\nfunction isHexadecimalCharacter(charCode: number): boolean {\n\treturn (\n\t\t(charCode >= hexadecimalCharCodes[0] && charCode <= hexadecimalCharCodes[1]) ||\n\t\t(charCode >= hexadecimalCharCodes[2] && charCode <= hexadecimalCharCodes[3]) ||\n\t\t(charCode >= hexadecimalCharCodes[4] && charCode <= hexadecimalCharCodes[5])\n\t);\n}\n\n/** The null (lowest/all-zeros) UUID */\nexport const nilUuid = assertIsUuidString(NIL);\n\n/**\n * Asserts that the given string is a UUID\n */\nexport function assertIsUuidString(uuidString: string): UuidString {\n\tassertWithMessage(isUuidString(uuidString), `${uuidString} is not an UuidString`);\n\treturn uuidString;\n}\n\n/**\n * Returns true iff the given string is a valid UUID-like string of hexadecimal characters\n * 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n */\nexport function isUuidString(str: string): str is UuidString {\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\n\t\t\tdefault:\n\t\t\t\tif (!isHexadecimalCharacter(str.charCodeAt(i))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Generate a random stable ID\n */\nexport function generateStableId(): StableId {\n\treturn assertIsStableId(v4());\n}\n\n/**\n * Asserts that the given string is a stable ID.\n */\nexport function assertIsStableId(stableId: string): StableId {\n\tassertWithMessage(isStableId(stableId), `${stableId} is not a StableId.`);\n\treturn stableId;\n}\n\n/**\n * Returns true iff the given string is a valid Version 4, variant 2 UUID\n * 'xxxxxxxx-xxxx-4xxx-vxxx-xxxxxxxxxxxx'\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\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\n\t\t\tcase 19: {\n\t\t\t\tconst char = str.charAt(i);\n\t\t\t\tif (char !== '8' && char !== '9' && char !== 'a' && char !== '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\tif (!isHexadecimalCharacter(str.charCodeAt(i))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn true;\n}\n"]}
1
+ {"version":3,"file":"UuidUtilities.js","sourceRoot":"","sources":["../src/UuidUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { v4, NIL } from 'uuid';\nimport { assertWithMessage } from './Common.js';\nimport { StableId, UuidString } from './Identifiers.js';\n\nconst hexadecimalCharCodes = Array.from('09afAF').map((c) => c.charCodeAt(0)) as [\n\tzero: number,\n\tnine: number,\n\ta: number,\n\tf: number,\n\tA: number,\n\tF: number,\n];\n\nfunction isHexadecimalCharacter(charCode: number): boolean {\n\treturn (\n\t\t(charCode >= hexadecimalCharCodes[0] && charCode <= hexadecimalCharCodes[1]) ||\n\t\t(charCode >= hexadecimalCharCodes[2] && charCode <= hexadecimalCharCodes[3]) ||\n\t\t(charCode >= hexadecimalCharCodes[4] && charCode <= hexadecimalCharCodes[5])\n\t);\n}\n\n/** The null (lowest/all-zeros) UUID */\nexport const nilUuid = assertIsUuidString(NIL);\n\n/**\n * Asserts that the given string is a UUID\n */\nexport function assertIsUuidString(uuidString: string): UuidString {\n\tassertWithMessage(isUuidString(uuidString), `${uuidString} is not an UuidString`);\n\treturn uuidString;\n}\n\n/**\n * Returns true iff the given string is a valid UUID-like string of hexadecimal characters\n * 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n */\nexport function isUuidString(str: string): str is UuidString {\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\n\t\t\tdefault:\n\t\t\t\tif (!isHexadecimalCharacter(str.charCodeAt(i))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Generate a random stable ID\n */\nexport function generateStableId(): StableId {\n\treturn assertIsStableId(v4());\n}\n\n/**\n * Asserts that the given string is a stable ID.\n */\nexport function assertIsStableId(stableId: string): StableId {\n\tassertWithMessage(isStableId(stableId), `${stableId} is not a StableId.`);\n\treturn stableId;\n}\n\n/**\n * Returns true iff the given string is a valid Version 4, variant 2 UUID\n * 'xxxxxxxx-xxxx-4xxx-vxxx-xxxxxxxxxxxx'\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\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\n\t\t\tcase 19: {\n\t\t\t\tconst char = str.charAt(i);\n\t\t\t\tif (char !== '8' && char !== '9' && char !== 'a' && char !== '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\tif (!isHexadecimalCharacter(str.charCodeAt(i))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn true;\n}\n"]}
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.AppendOnlyDoublySortedMap = exports.AppendOnlySortedMap = void 0;
8
8
  /* eslint-disable no-bitwise */
9
9
  const core_utils_1 = require("@fluidframework/core-utils");
10
- const Common_1 = require("../Common");
10
+ const Common_js_1 = require("../Common.js");
11
11
  /**
12
12
  * A map in which entries are always added in key-sorted order.
13
13
  * Supports appending and searching.
@@ -129,7 +129,7 @@ class AppendOnlySortedMap {
129
129
  const { elements } = this;
130
130
  const { length } = elements;
131
131
  if (length !== 0 && this.comparator(key, this.maxKey()) <= 0) {
132
- (0, Common_1.fail)('Inserted key must be > all others in the map.');
132
+ (0, Common_js_1.fail)('Inserted key must be > all others in the map.');
133
133
  }
134
134
  elements.push(key);
135
135
  elements.push(value);
@@ -284,7 +284,7 @@ class AppendOnlySortedMap {
284
284
  return keyIndex;
285
285
  }
286
286
  else {
287
- (0, Common_1.fail)('Invalid comparator.');
287
+ (0, Common_js_1.fail)('Invalid comparator.');
288
288
  }
289
289
  mid = (low + high) >> 1;
290
290
  }
@@ -312,7 +312,7 @@ class AppendOnlyDoublySortedMap extends AppendOnlySortedMap {
312
312
  append(key, value) {
313
313
  if (this.elements.length !== 0 &&
314
314
  this.valueComparator(this.extractSearchValue(value), this.extractSearchValue(this.maxValue())) <= 0) {
315
- (0, Common_1.fail)('Inserted value must be > all others in the map.');
315
+ (0, Common_js_1.fail)('Inserted value must be > all others in the map.');
316
316
  }
317
317
  super.append(key, value);
318
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AppendOnlySortedMap.js","sourceRoot":"","sources":["../../src/id-compressor/AppendOnlySortedMap.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+BAA+B;AAE/B,2DAAoD;AACpD,sCAAiC;AAEjC;;;GAGG;AACH,MAAa,mBAAmB;IAG/B;;OAEG;IACH,YAAsC,UAAkC;QAAlC,eAAU,GAAV,UAAU,CAAwB;QALrD,aAAQ,GAAc,EAAE,CAAC;IAK+B,CAAC;IAE5E;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAkB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,MAAM;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAkB,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,QAAQ;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAkB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,QAAQ;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAkB,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,KAAK;QACX,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,MAAM,KAAK,CAAC,EAAE;YACjB,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAM,EAAE,QAAQ,CAAC,CAAC,CAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,IAAI;QACV,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,MAAM,KAAK,CAAC,EAAE;YACjB,OAAO,SAAS,CAAC;SACjB;QACD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM,EAAE,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa;QAC9B,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAM,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,CAAC,OAAO;QACd,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC,CAAC;SAC/C;IACF,CAAC;IAED;;OAEG;IACI,CAAC,IAAI;QACX,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,QAAQ,CAAC,CAAC,CAAM,CAAC;SACvB;IACF,CAAC;IAED;;OAEG;IACI,CAAC,MAAM;QACb,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC;SAC3B;IACF,CAAC;IAED;;OAEG;IACI,CAAC,eAAe;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC,CAAC;SAC/C;IACF,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAM,EAAE,KAAQ;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAO,CAAC,IAAI,CAAC,EAAE;YAClE,IAAA,aAAI,EAAC,+CAA+C,CAAC,CAAC;SACtD;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,GAAM;QAChB,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAM,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,GAAM;QAC/B,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,GAAM;QAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAgC,EAAE,aAAsC;QACrF,IAAI,KAAK,KAAK,IAAI,EAAE;YACnB,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnD,OAAO,KAAK,CAAC;SACb;QAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAM,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAM,CAAC;YACxC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC;YAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACb;YACD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;gBAC1C,OAAO,KAAK,CAAC;aACb;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACI,WAAW;QACjB,IAAI,IAAuC,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,SAAS,EAAE;gBACvB,IAAA,mBAAM,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACrF;YACD,IAAI,GAAG,EAAE,CAAC;SACV;IACF,CAAC;IAED;;;;;OAKG;IACI,CAAC,QAAQ,CAAC,IAAO,EAAE,EAAK;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,YAAY,KAAK,SAAS,EAAE;YAC/B,OAAO;SACP;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,UAAU,KAAK,SAAS,EAAE;YAC7B,OAAO;SACP;QAED,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;YACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAM,CAAC,CAAC;SACzD;IACF,CAAC;IAES,oBAAoB,CAC7B,MAAS,EACT,UAAmD;QAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnE,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,OAAO,SAAS,CAAC;SACjB;QAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAM,CAAC,CAAC;IACzE,CAAC;IAEO,wBAAwB,CAC/B,MAAS,EACT,UAAmD;QAEnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO,SAAS,CAAC;SACjB;QACD,IAAI,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,QAAQ,GAAG,CAAC,EAAE;YACjB,QAAQ,IAAI,mBAAmB,CAAC,UAAU,CAAC;YAC3C,IAAI,QAAQ,GAAG,CAAC,EAAE;gBACjB,OAAO,QAAQ,GAAG,CAAC,CAAC;aACpB;YACD,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAES,qBAAqB,CAC9B,MAAS,EACT,UAAmD;QAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,OAAO,SAAS,CAAC;SACjB;QAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAM,CAAC,CAAC;IACzE,CAAC;IAEO,yBAAyB,CAChC,MAAS,EACT,UAAmD;QAEnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,IAAI,MAAM,KAAK,CAAC,EAAE;YACjB,OAAO,SAAS,CAAC;SACjB;QACD,IAAI,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,QAAQ,GAAG,CAAC,EAAE;YACjB,QAAQ,IAAI,mBAAmB,CAAC,UAAU,CAAC;YAC3C,IAAI,QAAQ,GAAG,MAAM,EAAE;gBACtB,OAAO,QAAQ,CAAC;aAChB;YACD,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAOD;;;;OAIG;IACI,MAAM,CAAC,UAAU,CACvB,QAA4B,EAC5B,MAAS,EACT,UAAmD;QAEnD,wEAAwE;QACxE,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;QACpB,OAAO,GAAG,GAAG,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAM,EAAE,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAM,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,EAAE;gBACV,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;aACd;iBAAM,IAAI,CAAC,GAAG,CAAC,EAAE;gBACjB,IAAI,GAAG,GAAG,CAAC;aACX;iBAAM,IAAI,CAAC,KAAK,CAAC,EAAE;gBACnB,OAAO,QAAQ,CAAC;aAChB;iBAAM;gBACN,IAAA,aAAI,EAAC,qBAAqB,CAAC,CAAC;aAC5B;YACD,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC;IACnD,CAAC;;AArUF,kDAsUC;AAnCA;;GAEG;AACoB,8BAAU,GAAG,CAAC,CAAC,AAAL,CAAM;AAkCxC;;;GAGG;AACH,MAAa,yBAAmC,SAAQ,mBAAyB;IAChF,YACC,aAAqC,EACpB,kBAAmC,EACnC,eAAgD;QAEjE,KAAK,CAAC,aAAa,CAAC,CAAC;QAHJ,uBAAkB,GAAlB,kBAAkB,CAAiB;QACnC,oBAAe,GAAf,eAAe,CAAiC;QAejD,kBAAa,GAAG,CAAC,MAAS,EAAE,CAAI,EAAE,KAAQ,EAAU,EAAE;YACtE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC;IAdF,CAAC;IAEM,MAAM,CAAC,GAAM,EAAE,KAAQ;QAC7B,IACC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAO,CAAC,CAAC,IAAI,CAAC,EACvG;YACD,IAAA,aAAI,EAAC,iDAAiD,CAAC,CAAC;SACxD;QACD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAMD;;;OAGG;IACI,UAAU,CAAC,KAAQ;QACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACI,yBAAyB,CAAC,WAAc;QAC9C,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACI,0BAA0B,CAAC,WAAc;QAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,WAAW;QACjB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,IAAuC,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,SAAS,EAAE;gBACvB,IAAA,mBAAM,EACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAC1F,KAAK,CAAC,mCAAmC,CACzC,CAAC;aACF;YACD,IAAI,GAAG,EAAE,CAAC;SACV;IACF,CAAC;CACD;AApED,8DAoEC","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 { assert } from '@fluidframework/core-utils';\nimport { fail } from '../Common';\n\n/**\n * A map in which entries are always added in key-sorted order.\n * Supports appending and searching.\n */\nexport class AppendOnlySortedMap<K, V> {\n\tprotected readonly elements: (K | V)[] = [];\n\n\t/**\n\t * @param comparator - a comparator for keys\n\t */\n\tpublic constructor(protected readonly comparator: (a: K, b: K) => number) {}\n\n\t/**\n\t * @returns the number of entries in this map\n\t */\n\tpublic get size(): number {\n\t\treturn this.elements.length / 2;\n\t}\n\n\t/**\n\t * @returns the min key in the map.\n\t */\n\tpublic minKey(): K | undefined {\n\t\treturn this.elements[0] as K | undefined;\n\t}\n\n\t/**\n\t * @returns the max key in the map.\n\t */\n\tpublic maxKey(): K | undefined {\n\t\treturn this.elements[this.elements.length - 2] as K | undefined;\n\t}\n\n\t/**\n\t * @returns the min value in the map.\n\t */\n\tpublic minValue(): V | undefined {\n\t\treturn this.elements[1] as V | undefined;\n\t}\n\n\t/**\n\t * @returns the min value in the map.\n\t */\n\tpublic maxValue(): V | undefined {\n\t\treturn this.elements[this.elements.length - 1] as V | undefined;\n\t}\n\n\t/**\n\t * @returns the min key in the map.\n\t */\n\tpublic first(): [K, V] | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn [elements[0] as K, elements[1] as V];\n\t}\n\n\t/**\n\t * @returns the max key in the map.\n\t */\n\tpublic last(): [K, V] | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst lastKeyIndex = length - 2;\n\t\treturn [elements[lastKeyIndex] as K, elements[lastKeyIndex + 1] as V];\n\t}\n\n\t/**\n\t * Returns the element at the insertion index.\n\t */\n\tpublic getAtIndex(index: number): [K, V] | undefined {\n\t\tconst realIndex = index * 2;\n\t\tconst { elements } = this;\n\t\tif (realIndex < 0 || realIndex > elements.length - 1) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn [elements[realIndex] as K, elements[realIndex + 1] as V];\n\t}\n\n\t/**\n\t * @returns an iterable of the entries in the map.\n\t */\n\tpublic *entries(): IterableIterator<readonly [K, V]> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield [elements[i] as K, elements[i + 1] as V];\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the keys in the map.\n\t */\n\tpublic *keys(): IterableIterator<K> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield elements[i] as K;\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the values in the map.\n\t */\n\tpublic *values(): IterableIterator<V> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield elements[i + 1] as V;\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the entries in the map, reversed.\n\t */\n\tpublic *entriesReversed(): IterableIterator<readonly [K, V]> {\n\t\tconst { elements } = this;\n\t\tfor (let i = elements.length - 2; i >= 0; i -= 2) {\n\t\t\tyield [elements[i] as K, elements[i + 1] as V];\n\t\t}\n\t}\n\n\t/**\n\t * Adds a new key/value pair to the map. `key` must be \\> to all keys in the map.\n\t * @param key - the key to add.\n\t * @param value - the value to add.\n\t */\n\tpublic append(key: K, value: V): void {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length !== 0 && this.comparator(key, this.maxKey() as K) <= 0) {\n\t\t\tfail('Inserted key must be > all others in the map.');\n\t\t}\n\t\telements.push(key);\n\t\telements.push(value);\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the value associated with `key` if such an entry exists, and undefined otherwise.\n\t */\n\tpublic get(key: K): V | undefined {\n\t\tconst index = AppendOnlySortedMap.keyIndexOf(this.elements, key, this.comparator);\n\t\tif (index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.elements[index + 1] as V;\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the entry associated with `key` if such an entry exists, the entry associated with the next lower key if such an entry\n\t * exists, and undefined otherwise.\n\t */\n\tpublic getPairOrNextLower(key: K): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextLowerBy(key, this.comparator);\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the entry associated with `key` if such an entry exists, the entry associated with the next higher key if such an entry\n\t * exists, and undefined otherwise.\n\t */\n\tpublic getPairOrNextHigher(key: K): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextHigherBy(key, this.comparator);\n\t}\n\n\t/**\n\t * Compares two `AppendOnlySortedMap`s.\n\t */\n\tpublic equals(other: AppendOnlySortedMap<K, V>, compareValues: (a: V, b: V) => boolean): boolean {\n\t\tif (other === this) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.elements.length !== other.elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = this.elements.length - 2; i >= 0; i -= 2) {\n\t\t\tconst keyThis = this.elements[i] as K;\n\t\t\tconst valueThis = this.elements[i + 1] as V;\n\t\t\tconst keyOther = other.elements[i] as K;\n\t\t\tconst valueOther = other.elements[i + 1] as V;\n\t\t\tif (this.comparator(keyThis, keyOther) !== 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!compareValues(valueThis, valueOther)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Test-only expensive assertions to check the internal validity of the data structure.\n\t */\n\tpublic assertValid(): void {\n\t\tlet prev: readonly [K, unknown] | undefined;\n\t\tfor (const kv of this.entries()) {\n\t\t\tif (prev !== undefined) {\n\t\t\t\tassert(this.comparator(kv[0], prev[0]) > 0, 0x63e /* Keys in map must be sorted. */);\n\t\t\t}\n\t\t\tprev = kv;\n\t\t}\n\t}\n\n\t/**\n\t * Queries a range of entries.\n\t * @param from - the key to start the range query at, inclusive.\n\t * @param to - the key to end the range query at, inclusive.\n\t * @returns the range of entries.\n\t */\n\tpublic *getRange(from: K, to: K): IterableIterator<readonly [K, V]> {\n\t\tconst keyIndexFrom = this.getKeyIndexOfOrNextHigher(from, this.comparator);\n\t\tif (keyIndexFrom === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keyIndexTo = this.getKeyIndexOfOrNextLower(to, this.comparator);\n\t\tif (keyIndexTo === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = keyIndexFrom; i <= keyIndexTo; i += 2) {\n\t\t\tyield [this.elements[i] as K, this.elements[i + 1] as V];\n\t\t}\n\t}\n\n\tprotected getPairOrNextLowerBy<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): readonly [K, V] | undefined {\n\t\tconst keyIndex = this.getKeyIndexOfOrNextLower(search, comparator);\n\t\tif (keyIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn [this.elements[keyIndex] as K, this.elements[keyIndex + 1] as V];\n\t}\n\n\tprivate getKeyIndexOfOrNextLower<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number | undefined {\n\t\tconst { elements } = this;\n\t\tif (elements.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet keyIndex = AppendOnlySortedMap.keyIndexOf(elements, search, comparator);\n\t\tif (keyIndex < 0) {\n\t\t\tkeyIndex ^= AppendOnlySortedMap.failureXor;\n\t\t\tif (keyIndex > 0) {\n\t\t\t\treturn keyIndex - 2;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\treturn keyIndex;\n\t}\n\n\tprotected getPairOrNextHigherBy<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): readonly [K, V] | undefined {\n\t\tconst keyIndex = this.getKeyIndexOfOrNextHigher(search, comparator);\n\t\tif (keyIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn [this.elements[keyIndex] as K, this.elements[keyIndex + 1] as V];\n\t}\n\n\tprivate getKeyIndexOfOrNextHigher<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet keyIndex = AppendOnlySortedMap.keyIndexOf(elements, search, comparator);\n\t\tif (keyIndex < 0) {\n\t\t\tkeyIndex ^= AppendOnlySortedMap.failureXor;\n\t\t\tif (keyIndex < length) {\n\t\t\t\treturn keyIndex;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\treturn keyIndex;\n\t}\n\n\t/**\n\t * The value xor'd with the result index when a search fails.\n\t */\n\tpublic static readonly failureXor = -1;\n\n\t/**\n\t * Performs a binary search on the sorted array.\n\t * @returns the index of the key for `search`, or (if not present) the index it would have been inserted into xor'd\n\t * with `failureXor`. Note that negating is not an adequate solution as that could result in -0.\n\t */\n\tpublic static keyIndexOf<T, K, V>(\n\t\telements: readonly (K | V)[],\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number {\n\t\t// Low, high, and mid are addresses of [K,V] pairs and *not* key indices\n\t\tlet low = 0;\n\t\tlet high = elements.length / 2;\n\t\tlet mid = high >> 1;\n\t\twhile (low < high) {\n\t\t\tconst keyIndex = mid * 2;\n\t\t\tconst c = comparator(search, elements[keyIndex] as K, elements[keyIndex + 1] as V);\n\t\t\tif (c > 0) {\n\t\t\t\tlow = mid + 1;\n\t\t\t} else if (c < 0) {\n\t\t\t\thigh = mid;\n\t\t\t} else if (c === 0) {\n\t\t\t\treturn keyIndex;\n\t\t\t} else {\n\t\t\t\tfail('Invalid comparator.');\n\t\t\t}\n\t\t\tmid = (low + high) >> 1;\n\t\t}\n\t\treturn (mid * 2) ^ AppendOnlySortedMap.failureXor;\n\t}\n}\n\n/**\n * A map in which entries are always added in both key-sorted and value-sorted order.\n * Supports appending and searching.\n */\nexport class AppendOnlyDoublySortedMap<K, V, S> extends AppendOnlySortedMap<K, V> {\n\tpublic constructor(\n\t\tkeyComparator: (a: K, b: K) => number,\n\t\tprivate readonly extractSearchValue: (value: V) => S,\n\t\tprivate readonly valueComparator: (search: S, value: S) => number\n\t) {\n\t\tsuper(keyComparator);\n\t}\n\n\tpublic append(key: K, value: V): void {\n\t\tif (\n\t\t\tthis.elements.length !== 0 &&\n\t\t\tthis.valueComparator(this.extractSearchValue(value), this.extractSearchValue(this.maxValue() as V)) <= 0\n\t\t) {\n\t\t\tfail('Inserted value must be > all others in the map.');\n\t\t}\n\t\tsuper.append(key, value);\n\t}\n\n\tprivate readonly compareValues = (search: S, _: K, value: V): number => {\n\t\treturn this.valueComparator(search, this.extractSearchValue(value));\n\t};\n\n\t/**\n\t * @param value - the value to lookup.\n\t * @returns the key associated with `value` if such an entry exists, and undefined otherwise.\n\t */\n\tpublic getByValue(value: S): K | undefined {\n\t\tconst index = AppendOnlySortedMap.keyIndexOf(this.elements, value, this.compareValues);\n\t\treturn this.elements[index]?.[0];\n\t}\n\n\t/**\n\t * @param searchValue - the search value to lookup.\n\t * @returns the entry who's value, when run through the extractor provided to the constructor, matches\n\t * `searchValue`. If no such entry exists, this method returns the next lower entry as determined by the value\n\t * comparator provided to the constructor. If no such entry exists, this method returns undefined.\n\t */\n\tpublic getPairOrNextLowerByValue(searchValue: S): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextLowerBy(searchValue, this.compareValues);\n\t}\n\n\t/**\n\t * @param searchValue - the search value to lookup.\n\t * @returns the entry who's value, when run through the extractor provided to the constructor, matches `searchValue`. If no such entry\n\t * exists, this method returns the next higher entry as determined by the value comparator provided to the constructor. If no such entry\n\t * exists, this method returns undefined.\n\t */\n\tpublic getPairOrNextHigherByValue(searchValue: S): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextHigherBy(searchValue, this.compareValues);\n\t}\n\n\t/**\n\t * Test-only expensive assertions to check the internal validity of the data structure.\n\t */\n\tpublic assertValid(): void {\n\t\tsuper.assertValid();\n\t\tlet prev: readonly [unknown, V] | undefined;\n\t\tfor (const kv of this.entries()) {\n\t\t\tif (prev !== undefined) {\n\t\t\t\tassert(\n\t\t\t\t\tthis.valueComparator(this.extractSearchValue(kv[1]), this.extractSearchValue(prev[1])) > 0,\n\t\t\t\t\t0x63f /* Values in map must be sorted. */\n\t\t\t\t);\n\t\t\t}\n\t\t\tprev = kv;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"AppendOnlySortedMap.js","sourceRoot":"","sources":["../../src/id-compressor/AppendOnlySortedMap.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 { assert } from '@fluidframework/core-utils';\nimport { fail } from '../Common.js';\n\n/**\n * A map in which entries are always added in key-sorted order.\n * Supports appending and searching.\n */\nexport class AppendOnlySortedMap<K, V> {\n\tprotected readonly elements: (K | V)[] = [];\n\n\t/**\n\t * @param comparator - a comparator for keys\n\t */\n\tpublic constructor(protected readonly comparator: (a: K, b: K) => number) {}\n\n\t/**\n\t * @returns the number of entries in this map\n\t */\n\tpublic get size(): number {\n\t\treturn this.elements.length / 2;\n\t}\n\n\t/**\n\t * @returns the min key in the map.\n\t */\n\tpublic minKey(): K | undefined {\n\t\treturn this.elements[0] as K | undefined;\n\t}\n\n\t/**\n\t * @returns the max key in the map.\n\t */\n\tpublic maxKey(): K | undefined {\n\t\treturn this.elements[this.elements.length - 2] as K | undefined;\n\t}\n\n\t/**\n\t * @returns the min value in the map.\n\t */\n\tpublic minValue(): V | undefined {\n\t\treturn this.elements[1] as V | undefined;\n\t}\n\n\t/**\n\t * @returns the min value in the map.\n\t */\n\tpublic maxValue(): V | undefined {\n\t\treturn this.elements[this.elements.length - 1] as V | undefined;\n\t}\n\n\t/**\n\t * @returns the min key in the map.\n\t */\n\tpublic first(): [K, V] | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn [elements[0] as K, elements[1] as V];\n\t}\n\n\t/**\n\t * @returns the max key in the map.\n\t */\n\tpublic last(): [K, V] | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst lastKeyIndex = length - 2;\n\t\treturn [elements[lastKeyIndex] as K, elements[lastKeyIndex + 1] as V];\n\t}\n\n\t/**\n\t * Returns the element at the insertion index.\n\t */\n\tpublic getAtIndex(index: number): [K, V] | undefined {\n\t\tconst realIndex = index * 2;\n\t\tconst { elements } = this;\n\t\tif (realIndex < 0 || realIndex > elements.length - 1) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn [elements[realIndex] as K, elements[realIndex + 1] as V];\n\t}\n\n\t/**\n\t * @returns an iterable of the entries in the map.\n\t */\n\tpublic *entries(): IterableIterator<readonly [K, V]> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield [elements[i] as K, elements[i + 1] as V];\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the keys in the map.\n\t */\n\tpublic *keys(): IterableIterator<K> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield elements[i] as K;\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the values in the map.\n\t */\n\tpublic *values(): IterableIterator<V> {\n\t\tconst { elements } = this;\n\t\tfor (let i = 0; i < elements.length; i += 2) {\n\t\t\tyield elements[i + 1] as V;\n\t\t}\n\t}\n\n\t/**\n\t * @returns an iterable of the entries in the map, reversed.\n\t */\n\tpublic *entriesReversed(): IterableIterator<readonly [K, V]> {\n\t\tconst { elements } = this;\n\t\tfor (let i = elements.length - 2; i >= 0; i -= 2) {\n\t\t\tyield [elements[i] as K, elements[i + 1] as V];\n\t\t}\n\t}\n\n\t/**\n\t * Adds a new key/value pair to the map. `key` must be \\> to all keys in the map.\n\t * @param key - the key to add.\n\t * @param value - the value to add.\n\t */\n\tpublic append(key: K, value: V): void {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length !== 0 && this.comparator(key, this.maxKey() as K) <= 0) {\n\t\t\tfail('Inserted key must be > all others in the map.');\n\t\t}\n\t\telements.push(key);\n\t\telements.push(value);\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the value associated with `key` if such an entry exists, and undefined otherwise.\n\t */\n\tpublic get(key: K): V | undefined {\n\t\tconst index = AppendOnlySortedMap.keyIndexOf(this.elements, key, this.comparator);\n\t\tif (index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.elements[index + 1] as V;\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the entry associated with `key` if such an entry exists, the entry associated with the next lower key if such an entry\n\t * exists, and undefined otherwise.\n\t */\n\tpublic getPairOrNextLower(key: K): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextLowerBy(key, this.comparator);\n\t}\n\n\t/**\n\t * @param key - the key to lookup.\n\t * @returns the entry associated with `key` if such an entry exists, the entry associated with the next higher key if such an entry\n\t * exists, and undefined otherwise.\n\t */\n\tpublic getPairOrNextHigher(key: K): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextHigherBy(key, this.comparator);\n\t}\n\n\t/**\n\t * Compares two `AppendOnlySortedMap`s.\n\t */\n\tpublic equals(other: AppendOnlySortedMap<K, V>, compareValues: (a: V, b: V) => boolean): boolean {\n\t\tif (other === this) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.elements.length !== other.elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = this.elements.length - 2; i >= 0; i -= 2) {\n\t\t\tconst keyThis = this.elements[i] as K;\n\t\t\tconst valueThis = this.elements[i + 1] as V;\n\t\t\tconst keyOther = other.elements[i] as K;\n\t\t\tconst valueOther = other.elements[i + 1] as V;\n\t\t\tif (this.comparator(keyThis, keyOther) !== 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!compareValues(valueThis, valueOther)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Test-only expensive assertions to check the internal validity of the data structure.\n\t */\n\tpublic assertValid(): void {\n\t\tlet prev: readonly [K, unknown] | undefined;\n\t\tfor (const kv of this.entries()) {\n\t\t\tif (prev !== undefined) {\n\t\t\t\tassert(this.comparator(kv[0], prev[0]) > 0, 0x63e /* Keys in map must be sorted. */);\n\t\t\t}\n\t\t\tprev = kv;\n\t\t}\n\t}\n\n\t/**\n\t * Queries a range of entries.\n\t * @param from - the key to start the range query at, inclusive.\n\t * @param to - the key to end the range query at, inclusive.\n\t * @returns the range of entries.\n\t */\n\tpublic *getRange(from: K, to: K): IterableIterator<readonly [K, V]> {\n\t\tconst keyIndexFrom = this.getKeyIndexOfOrNextHigher(from, this.comparator);\n\t\tif (keyIndexFrom === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keyIndexTo = this.getKeyIndexOfOrNextLower(to, this.comparator);\n\t\tif (keyIndexTo === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = keyIndexFrom; i <= keyIndexTo; i += 2) {\n\t\t\tyield [this.elements[i] as K, this.elements[i + 1] as V];\n\t\t}\n\t}\n\n\tprotected getPairOrNextLowerBy<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): readonly [K, V] | undefined {\n\t\tconst keyIndex = this.getKeyIndexOfOrNextLower(search, comparator);\n\t\tif (keyIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn [this.elements[keyIndex] as K, this.elements[keyIndex + 1] as V];\n\t}\n\n\tprivate getKeyIndexOfOrNextLower<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number | undefined {\n\t\tconst { elements } = this;\n\t\tif (elements.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet keyIndex = AppendOnlySortedMap.keyIndexOf(elements, search, comparator);\n\t\tif (keyIndex < 0) {\n\t\t\tkeyIndex ^= AppendOnlySortedMap.failureXor;\n\t\t\tif (keyIndex > 0) {\n\t\t\t\treturn keyIndex - 2;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\treturn keyIndex;\n\t}\n\n\tprotected getPairOrNextHigherBy<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): readonly [K, V] | undefined {\n\t\tconst keyIndex = this.getKeyIndexOfOrNextHigher(search, comparator);\n\t\tif (keyIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn [this.elements[keyIndex] as K, this.elements[keyIndex + 1] as V];\n\t}\n\n\tprivate getKeyIndexOfOrNextHigher<T>(\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number | undefined {\n\t\tconst { elements } = this;\n\t\tconst { length } = elements;\n\t\tif (length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet keyIndex = AppendOnlySortedMap.keyIndexOf(elements, search, comparator);\n\t\tif (keyIndex < 0) {\n\t\t\tkeyIndex ^= AppendOnlySortedMap.failureXor;\n\t\t\tif (keyIndex < length) {\n\t\t\t\treturn keyIndex;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\treturn keyIndex;\n\t}\n\n\t/**\n\t * The value xor'd with the result index when a search fails.\n\t */\n\tpublic static readonly failureXor = -1;\n\n\t/**\n\t * Performs a binary search on the sorted array.\n\t * @returns the index of the key for `search`, or (if not present) the index it would have been inserted into xor'd\n\t * with `failureXor`. Note that negating is not an adequate solution as that could result in -0.\n\t */\n\tpublic static keyIndexOf<T, K, V>(\n\t\telements: readonly (K | V)[],\n\t\tsearch: T,\n\t\tcomparator: (search: T, key: K, value: V) => number\n\t): number {\n\t\t// Low, high, and mid are addresses of [K,V] pairs and *not* key indices\n\t\tlet low = 0;\n\t\tlet high = elements.length / 2;\n\t\tlet mid = high >> 1;\n\t\twhile (low < high) {\n\t\t\tconst keyIndex = mid * 2;\n\t\t\tconst c = comparator(search, elements[keyIndex] as K, elements[keyIndex + 1] as V);\n\t\t\tif (c > 0) {\n\t\t\t\tlow = mid + 1;\n\t\t\t} else if (c < 0) {\n\t\t\t\thigh = mid;\n\t\t\t} else if (c === 0) {\n\t\t\t\treturn keyIndex;\n\t\t\t} else {\n\t\t\t\tfail('Invalid comparator.');\n\t\t\t}\n\t\t\tmid = (low + high) >> 1;\n\t\t}\n\t\treturn (mid * 2) ^ AppendOnlySortedMap.failureXor;\n\t}\n}\n\n/**\n * A map in which entries are always added in both key-sorted and value-sorted order.\n * Supports appending and searching.\n */\nexport class AppendOnlyDoublySortedMap<K, V, S> extends AppendOnlySortedMap<K, V> {\n\tpublic constructor(\n\t\tkeyComparator: (a: K, b: K) => number,\n\t\tprivate readonly extractSearchValue: (value: V) => S,\n\t\tprivate readonly valueComparator: (search: S, value: S) => number\n\t) {\n\t\tsuper(keyComparator);\n\t}\n\n\tpublic append(key: K, value: V): void {\n\t\tif (\n\t\t\tthis.elements.length !== 0 &&\n\t\t\tthis.valueComparator(this.extractSearchValue(value), this.extractSearchValue(this.maxValue() as V)) <= 0\n\t\t) {\n\t\t\tfail('Inserted value must be > all others in the map.');\n\t\t}\n\t\tsuper.append(key, value);\n\t}\n\n\tprivate readonly compareValues = (search: S, _: K, value: V): number => {\n\t\treturn this.valueComparator(search, this.extractSearchValue(value));\n\t};\n\n\t/**\n\t * @param value - the value to lookup.\n\t * @returns the key associated with `value` if such an entry exists, and undefined otherwise.\n\t */\n\tpublic getByValue(value: S): K | undefined {\n\t\tconst index = AppendOnlySortedMap.keyIndexOf(this.elements, value, this.compareValues);\n\t\treturn this.elements[index]?.[0];\n\t}\n\n\t/**\n\t * @param searchValue - the search value to lookup.\n\t * @returns the entry who's value, when run through the extractor provided to the constructor, matches\n\t * `searchValue`. If no such entry exists, this method returns the next lower entry as determined by the value\n\t * comparator provided to the constructor. If no such entry exists, this method returns undefined.\n\t */\n\tpublic getPairOrNextLowerByValue(searchValue: S): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextLowerBy(searchValue, this.compareValues);\n\t}\n\n\t/**\n\t * @param searchValue - the search value to lookup.\n\t * @returns the entry who's value, when run through the extractor provided to the constructor, matches `searchValue`. If no such entry\n\t * exists, this method returns the next higher entry as determined by the value comparator provided to the constructor. If no such entry\n\t * exists, this method returns undefined.\n\t */\n\tpublic getPairOrNextHigherByValue(searchValue: S): readonly [K, V] | undefined {\n\t\treturn this.getPairOrNextHigherBy(searchValue, this.compareValues);\n\t}\n\n\t/**\n\t * Test-only expensive assertions to check the internal validity of the data structure.\n\t */\n\tpublic assertValid(): void {\n\t\tsuper.assertValid();\n\t\tlet prev: readonly [unknown, V] | undefined;\n\t\tfor (const kv of this.entries()) {\n\t\t\tif (prev !== undefined) {\n\t\t\t\tassert(\n\t\t\t\t\tthis.valueComparator(this.extractSearchValue(kv[1]), this.extractSearchValue(prev[1])) > 0,\n\t\t\t\t\t0x63f /* Values in map must be sorted. */\n\t\t\t\t);\n\t\t\t}\n\t\t\tprev = kv;\n\t\t}\n\t}\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
6
- import { LocalCompressedId, FinalCompressedId, SessionSpaceCompressedId, StableId, OpSpaceCompressedId, SessionId, CompressedId, AttributionId } from '../Identifiers';
7
- import type { IdCreationRange, SerializedIdCompressorWithNoSession, SerializedIdCompressorWithOngoingSession, VersionedSerializedIdCompressor } from './persisted-types';
6
+ import { LocalCompressedId, FinalCompressedId, SessionSpaceCompressedId, StableId, OpSpaceCompressedId, SessionId, CompressedId, AttributionId } from '../Identifiers.js';
7
+ import type { IdCreationRange, SerializedIdCompressorWithNoSession, SerializedIdCompressorWithOngoingSession, VersionedSerializedIdCompressor } from './persisted-types/index.js';
8
8
  /**
9
9
  * Roughly equates to a minimum of 1M sessions before we start allocating 64 bit IDs.
10
10
  * This value must *NOT* change without careful consideration to compatibility.
@@ -1 +1 @@
1
- {"version":3,"file":"IdCompressor.d.ts","sourceRoot":"","sources":["../../src/id-compressor/IdCompressor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAcvE,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,QAAQ,EACR,mBAAmB,EACnB,SAAS,EACT,YAAY,EAEZ,aAAa,EACb,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EACX,eAAe,EAIf,mCAAmC,EACnC,wCAAwC,EAIxC,+BAA+B,EAC/B,MAAM,mBAAmB,CAAC;AA+E3B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAQ1C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,0CAA0C,CAAC;AAErF;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,EAAE,IAAI,iBAAiB,CAEnE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,EAAE,IAAI,iBAAiB,CAEnE;AA8CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,qBAAa,YAAY;aAyHP,cAAc,EAAE,SAAS;aACzB,eAAe,EAAE,MAAM;IAzHxC;;OAEG;IACH,OAAc,cAAc,SAAW;IAEvC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAA0B;IAEpD;;OAEG;IACH,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED;;;OAGG;IACH,IAAW,eAAe,CAAC,KAAK,EAAE,MAAM,EAIvC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAE1D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IAEvC;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAA6C;IAE3E;;OAEG;IACH,OAAO,CAAC,YAAY,CAAK;IAEzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgC;IAExD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoF;IAEnH;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,mBAAmB,CAAwC;IAEnE;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAG5C;IAEF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C;;;;;;;;;;OAUG;gBAEc,cAAc,EAAE,SAAS,EACzB,eAAe,EAAE,MAAM,EACvC,aAAa,CAAC,EAAE,aAAa,EAC7B,MAAM,CAAC,EAAE,oBAAoB;IAyB9B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,GAAG,iBAAiB;IAUjF;;OAEG;IACI,yBAAyB,IAAI,gBAAgB,CAAC,wBAAwB,CAAC;IAI9E;;OAEG;IACI,WAAW,CAAC,EAAE,EAAE,wBAAwB,GAAG,aAAa;IAiB/D;;;;;OAKG;IACI,qBAAqB,IAAI,eAAe;IAsD/C;;;OAGG;IACI,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA6S1D,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAInC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAuDpC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAahC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;;;;;OAMG;IACI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,wBAAwB;IAkDxE;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,wBAAwB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,MAAM;IAItF;;;;OAIG;IACI,aAAa,CAAC,EAAE,EAAE,wBAAwB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS;IAmCrG;;;;OAIG;IACI,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB;IAIjE;;;;OAIG;IACI,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAIhF;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkD1B;;;;OAIG;IACI,kBAAkB,CAAC,EAAE,EAAE,wBAAwB,GAAG,mBAAmB;IA6C5E;;;;;;;;OAQG;IACI,uBAAuB,CAAC,EAAE,EAAE,mBAAmB,EAAE,eAAe,EAAE,SAAS,GAAG,wBAAwB;IAE7G;;;;OAIG;IACI,uBAAuB,CAAC,EAAE,EAAE,iBAAiB,GAAG,wBAAwB;IAoC/E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACI,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,GAAG,OAAO;IAmHvE,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA4B/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAuC9B;;;OAGG;IACI,SAAS,CACf,WAAW,EAAE,OAAO,GAClB,wCAAwC,GAAG,mCAAmC;IAEjF;;;OAGG;IACI,SAAS,CAAC,WAAW,EAAE,IAAI,GAAG,wCAAwC;IAE7E;;;OAGG;IACI,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,mCAAmC;IA4GzE;;OAEG;WACW,WAAW,CAAC,UAAU,EAAE,wCAAwC,GAAG,YAAY;IAE7F;;;;;OAKG;WACW,WAAW,CACxB,UAAU,EAAE,mCAAmC,EAC/C,YAAY,EAAE,SAAS,EACvB,aAAa,CAAC,EAAE,aAAa,GAC3B,YAAY;IAqLf;;;;OAIG;WACW,uBAAuB,CACpC,oBAAoB,EAAE,+BAA+B,EACrD,UAAU,EAAE,KAAK,GACf,mCAAmC;IAEtC;;;;OAIG;WACW,uBAAuB,CACpC,oBAAoB,EAAE,+BAA+B,EACrD,UAAU,EAAE,IAAI,GACd,wCAAwC;CAe3C;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,mCAAmC,GAAG,wCAAwC,GACxF,UAAU,IAAI,wCAAwC,CAExD"}
1
+ {"version":3,"file":"IdCompressor.d.ts","sourceRoot":"","sources":["../../src/id-compressor/IdCompressor.ts"],"names":[],"mappings":"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"}