@fluid-experimental/tree 2.0.0-rc.2.0.1 → 2.0.0-rc.3.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 (571) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-report/experimental-tree.api.md +2 -2
  3. package/dist/ChangeCompression.d.ts +2 -2
  4. package/dist/ChangeCompression.d.ts.map +1 -1
  5. package/dist/ChangeCompression.js +1 -1
  6. package/dist/ChangeCompression.js.map +1 -1
  7. package/dist/ChangeTypes.d.ts +1 -1
  8. package/dist/ChangeTypes.d.ts.map +1 -1
  9. package/dist/ChangeTypes.js +4 -4
  10. package/dist/ChangeTypes.js.map +1 -1
  11. package/dist/Checkout.d.ts +3 -3
  12. package/dist/Checkout.d.ts.map +1 -1
  13. package/dist/Checkout.js +17 -17
  14. package/dist/Checkout.js.map +1 -1
  15. package/dist/EditLog.d.ts +1 -1
  16. package/dist/EditLog.d.ts.map +1 -1
  17. package/dist/EditLog.js +9 -9
  18. package/dist/EditLog.js.map +1 -1
  19. package/dist/EditUtilities.d.ts +3 -3
  20. package/dist/EditUtilities.d.ts.map +1 -1
  21. package/dist/EditUtilities.js +6 -6
  22. package/dist/EditUtilities.js.map +1 -1
  23. package/dist/Forest.d.ts.map +1 -1
  24. package/dist/Forest.js +23 -23
  25. package/dist/Forest.js.map +1 -1
  26. package/dist/HistoryEditFactory.d.ts +1 -1
  27. package/dist/HistoryEditFactory.d.ts.map +1 -1
  28. package/dist/HistoryEditFactory.js +7 -7
  29. package/dist/HistoryEditFactory.js.map +1 -1
  30. package/dist/IdConversion.d.ts.map +1 -1
  31. package/dist/IdConversion.js.map +1 -1
  32. package/dist/LogViewer.d.ts +2 -2
  33. package/dist/LogViewer.d.ts.map +1 -1
  34. package/dist/LogViewer.js +7 -7
  35. package/dist/LogViewer.js.map +1 -1
  36. package/dist/MergeHealth.d.ts.map +1 -1
  37. package/dist/MergeHealth.js +1 -1
  38. package/dist/MergeHealth.js.map +1 -1
  39. package/dist/NodeIdUtilities.d.ts +1 -1
  40. package/dist/NodeIdUtilities.d.ts.map +1 -1
  41. package/dist/NodeIdUtilities.js +1 -1
  42. package/dist/NodeIdUtilities.js.map +1 -1
  43. package/dist/PayloadUtilities.d.ts.map +1 -1
  44. package/dist/PayloadUtilities.js +2 -2
  45. package/dist/PayloadUtilities.js.map +1 -1
  46. package/dist/ReconciliationPath.d.ts +1 -1
  47. package/dist/ReconciliationPath.d.ts.map +1 -1
  48. package/dist/ReconciliationPath.js.map +1 -1
  49. package/dist/RevisionValueCache.d.ts.map +1 -1
  50. package/dist/RevisionValueCache.js +2 -2
  51. package/dist/RevisionValueCache.js.map +1 -1
  52. package/dist/RevisionView.d.ts +2 -2
  53. package/dist/RevisionView.d.ts.map +1 -1
  54. package/dist/RevisionView.js.map +1 -1
  55. package/dist/SerializationUtilities.d.ts +1 -1
  56. package/dist/SerializationUtilities.d.ts.map +1 -1
  57. package/dist/SerializationUtilities.js.map +1 -1
  58. package/dist/SharedTree.d.ts +8 -7
  59. package/dist/SharedTree.d.ts.map +1 -1
  60. package/dist/SharedTree.js +78 -78
  61. package/dist/SharedTree.js.map +1 -1
  62. package/dist/SharedTreeEncoder.d.ts +1 -1
  63. package/dist/SharedTreeEncoder.d.ts.map +1 -1
  64. package/dist/SharedTreeEncoder.js +31 -31
  65. package/dist/SharedTreeEncoder.js.map +1 -1
  66. package/dist/Summary.d.ts +2 -2
  67. package/dist/Summary.d.ts.map +1 -1
  68. package/dist/Summary.js +2 -2
  69. package/dist/Summary.js.map +1 -1
  70. package/dist/SummaryBackCompatibility.d.ts.map +1 -1
  71. package/dist/SummaryBackCompatibility.js.map +1 -1
  72. package/dist/SummaryTestUtilities.d.ts +1 -1
  73. package/dist/SummaryTestUtilities.d.ts.map +1 -1
  74. package/dist/SummaryTestUtilities.js.map +1 -1
  75. package/dist/Transaction.d.ts +3 -3
  76. package/dist/Transaction.d.ts.map +1 -1
  77. package/dist/Transaction.js +3 -3
  78. package/dist/Transaction.js.map +1 -1
  79. package/dist/TransactionInternal.d.ts +3 -3
  80. package/dist/TransactionInternal.d.ts.map +1 -1
  81. package/dist/TransactionInternal.js +6 -6
  82. package/dist/TransactionInternal.js.map +1 -1
  83. package/dist/TreeCompressor.d.ts +5 -1
  84. package/dist/TreeCompressor.d.ts.map +1 -1
  85. package/dist/TreeCompressor.js +5 -5
  86. package/dist/TreeCompressor.js.map +1 -1
  87. package/dist/TreeNodeHandle.d.ts +1 -1
  88. package/dist/TreeNodeHandle.d.ts.map +1 -1
  89. package/dist/TreeNodeHandle.js.map +1 -1
  90. package/dist/TreeView.d.ts +1 -1
  91. package/dist/TreeView.d.ts.map +1 -1
  92. package/dist/TreeView.js +2 -3
  93. package/dist/TreeView.js.map +1 -1
  94. package/dist/UuidUtilities.d.ts.map +1 -1
  95. package/dist/UuidUtilities.js.map +1 -1
  96. package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -1
  97. package/dist/id-compressor/AppendOnlySortedMap.js +3 -3
  98. package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -1
  99. package/dist/id-compressor/IdCompressor.d.ts +1 -1
  100. package/dist/id-compressor/IdCompressor.d.ts.map +1 -1
  101. package/dist/id-compressor/IdCompressor.js +25 -26
  102. package/dist/id-compressor/IdCompressor.js.map +1 -1
  103. package/dist/id-compressor/IdRange.d.ts.map +1 -1
  104. package/dist/id-compressor/IdRange.js +2 -2
  105. package/dist/id-compressor/IdRange.js.map +1 -1
  106. package/dist/id-compressor/NumericUuid.d.ts.map +1 -1
  107. package/dist/id-compressor/NumericUuid.js +2 -1
  108. package/dist/id-compressor/NumericUuid.js.map +1 -1
  109. package/dist/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
  110. package/dist/id-compressor/SessionIdNormalizer.js +8 -9
  111. package/dist/id-compressor/SessionIdNormalizer.js.map +1 -1
  112. package/dist/migration-shim/migrationDeltaHandler.d.ts +1 -1
  113. package/dist/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
  114. package/dist/migration-shim/migrationDeltaHandler.js +11 -11
  115. package/dist/migration-shim/migrationDeltaHandler.js.map +1 -1
  116. package/dist/migration-shim/migrationShim.d.ts +8 -4
  117. package/dist/migration-shim/migrationShim.d.ts.map +1 -1
  118. package/dist/migration-shim/migrationShim.js +13 -13
  119. package/dist/migration-shim/migrationShim.js.map +1 -1
  120. package/dist/migration-shim/migrationShimFactory.d.ts +2 -2
  121. package/dist/migration-shim/migrationShimFactory.d.ts.map +1 -1
  122. package/dist/migration-shim/migrationShimFactory.js +2 -2
  123. package/dist/migration-shim/migrationShimFactory.js.map +1 -1
  124. package/dist/migration-shim/packageVersion.d.ts +0 -2
  125. package/dist/migration-shim/packageVersion.d.ts.map +1 -1
  126. package/dist/migration-shim/packageVersion.js +0 -2
  127. package/dist/migration-shim/packageVersion.js.map +1 -1
  128. package/dist/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
  129. package/dist/migration-shim/sharedTreeDeltaHandler.js +8 -8
  130. package/dist/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
  131. package/dist/migration-shim/sharedTreeShim.d.ts +2 -2
  132. package/dist/migration-shim/sharedTreeShim.d.ts.map +1 -1
  133. package/dist/migration-shim/sharedTreeShim.js +8 -4
  134. package/dist/migration-shim/sharedTreeShim.js.map +1 -1
  135. package/dist/migration-shim/sharedTreeShimFactory.d.ts +1 -1
  136. package/dist/migration-shim/sharedTreeShimFactory.d.ts.map +1 -1
  137. package/dist/migration-shim/sharedTreeShimFactory.js +2 -2
  138. package/dist/migration-shim/sharedTreeShimFactory.js.map +1 -1
  139. package/dist/migration-shim/shimChannelServices.d.ts +1 -1
  140. package/dist/migration-shim/shimChannelServices.d.ts.map +1 -1
  141. package/dist/migration-shim/shimChannelServices.js.map +1 -1
  142. package/dist/migration-shim/shimDeltaConnection.d.ts +1 -1
  143. package/dist/migration-shim/shimDeltaConnection.d.ts.map +1 -1
  144. package/dist/migration-shim/shimDeltaConnection.js +2 -2
  145. package/dist/migration-shim/shimDeltaConnection.js.map +1 -1
  146. package/dist/migration-shim/shimHandle.d.ts.map +1 -1
  147. package/dist/migration-shim/shimHandle.js.map +1 -1
  148. package/dist/migration-shim/types.d.ts +1 -1
  149. package/dist/migration-shim/types.d.ts.map +1 -1
  150. package/dist/migration-shim/types.js.map +1 -1
  151. package/dist/migration-shim/utils.d.ts +1 -1
  152. package/dist/migration-shim/utils.d.ts.map +1 -1
  153. package/dist/migration-shim/utils.js.map +1 -1
  154. package/dist/persisted-types/0.0.2.d.ts +1 -1
  155. package/dist/persisted-types/0.0.2.d.ts.map +1 -1
  156. package/dist/persisted-types/0.0.2.js.map +1 -1
  157. package/dist/persisted-types/0.1.1.d.ts +1 -1
  158. package/dist/persisted-types/0.1.1.d.ts.map +1 -1
  159. package/dist/persisted-types/0.1.1.js +3 -3
  160. package/dist/persisted-types/0.1.1.js.map +1 -1
  161. package/lib/ChangeCompression.d.ts +2 -2
  162. package/lib/ChangeCompression.d.ts.map +1 -1
  163. package/lib/ChangeCompression.js +1 -1
  164. package/lib/ChangeCompression.js.map +1 -1
  165. package/lib/ChangeTypes.d.ts +1 -1
  166. package/lib/ChangeTypes.d.ts.map +1 -1
  167. package/lib/ChangeTypes.js +2 -2
  168. package/lib/ChangeTypes.js.map +1 -1
  169. package/lib/Checkout.d.ts +3 -3
  170. package/lib/Checkout.d.ts.map +1 -1
  171. package/lib/Checkout.js +4 -4
  172. package/lib/Checkout.js.map +1 -1
  173. package/lib/EditLog.d.ts +1 -1
  174. package/lib/EditLog.d.ts.map +1 -1
  175. package/lib/EditLog.js +2 -2
  176. package/lib/EditLog.js.map +1 -1
  177. package/lib/EditUtilities.d.ts +3 -3
  178. package/lib/EditUtilities.d.ts.map +1 -1
  179. package/lib/EditUtilities.js +5 -5
  180. package/lib/EditUtilities.js.map +1 -1
  181. package/lib/Forest.d.ts.map +1 -1
  182. package/lib/Forest.js +2 -2
  183. package/lib/Forest.js.map +1 -1
  184. package/lib/HistoryEditFactory.d.ts +1 -1
  185. package/lib/HistoryEditFactory.d.ts.map +1 -1
  186. package/lib/HistoryEditFactory.js +5 -5
  187. package/lib/HistoryEditFactory.js.map +1 -1
  188. package/lib/IdConversion.d.ts.map +1 -1
  189. package/lib/IdConversion.js.map +1 -1
  190. package/lib/LogViewer.d.ts +2 -2
  191. package/lib/LogViewer.d.ts.map +1 -1
  192. package/lib/LogViewer.js +3 -3
  193. package/lib/LogViewer.js.map +1 -1
  194. package/lib/MergeHealth.d.ts.map +1 -1
  195. package/lib/MergeHealth.js +1 -1
  196. package/lib/MergeHealth.js.map +1 -1
  197. package/lib/NodeIdUtilities.d.ts +1 -1
  198. package/lib/NodeIdUtilities.d.ts.map +1 -1
  199. package/lib/NodeIdUtilities.js +1 -1
  200. package/lib/NodeIdUtilities.js.map +1 -1
  201. package/lib/PayloadUtilities.d.ts.map +1 -1
  202. package/lib/PayloadUtilities.js +1 -1
  203. package/lib/PayloadUtilities.js.map +1 -1
  204. package/lib/ReconciliationPath.d.ts +1 -1
  205. package/lib/ReconciliationPath.d.ts.map +1 -1
  206. package/lib/ReconciliationPath.js.map +1 -1
  207. package/lib/RevisionValueCache.d.ts.map +1 -1
  208. package/lib/RevisionValueCache.js +2 -2
  209. package/lib/RevisionValueCache.js.map +1 -1
  210. package/lib/RevisionView.d.ts +2 -2
  211. package/lib/RevisionView.d.ts.map +1 -1
  212. package/lib/RevisionView.js.map +1 -1
  213. package/lib/SerializationUtilities.d.ts +1 -1
  214. package/lib/SerializationUtilities.d.ts.map +1 -1
  215. package/lib/SerializationUtilities.js.map +1 -1
  216. package/lib/SharedTree.d.ts +8 -7
  217. package/lib/SharedTree.d.ts.map +1 -1
  218. package/lib/SharedTree.js +13 -13
  219. package/lib/SharedTree.js.map +1 -1
  220. package/lib/SharedTreeEncoder.d.ts +1 -1
  221. package/lib/SharedTreeEncoder.d.ts.map +1 -1
  222. package/lib/SharedTreeEncoder.js +5 -5
  223. package/lib/SharedTreeEncoder.js.map +1 -1
  224. package/lib/Summary.d.ts +2 -2
  225. package/lib/Summary.d.ts.map +1 -1
  226. package/lib/Summary.js +1 -1
  227. package/lib/Summary.js.map +1 -1
  228. package/lib/SummaryBackCompatibility.d.ts.map +1 -1
  229. package/lib/SummaryBackCompatibility.js.map +1 -1
  230. package/lib/SummaryTestUtilities.d.ts +1 -1
  231. package/lib/SummaryTestUtilities.d.ts.map +1 -1
  232. package/lib/SummaryTestUtilities.js.map +1 -1
  233. package/lib/Transaction.d.ts +3 -3
  234. package/lib/Transaction.d.ts.map +1 -1
  235. package/lib/Transaction.js +3 -3
  236. package/lib/Transaction.js.map +1 -1
  237. package/lib/TransactionInternal.d.ts +3 -3
  238. package/lib/TransactionInternal.d.ts.map +1 -1
  239. package/lib/TransactionInternal.js +3 -3
  240. package/lib/TransactionInternal.js.map +1 -1
  241. package/lib/TreeCompressor.d.ts +5 -1
  242. package/lib/TreeCompressor.d.ts.map +1 -1
  243. package/lib/TreeCompressor.js +2 -2
  244. package/lib/TreeCompressor.js.map +1 -1
  245. package/lib/TreeNodeHandle.d.ts +1 -1
  246. package/lib/TreeNodeHandle.d.ts.map +1 -1
  247. package/lib/TreeNodeHandle.js.map +1 -1
  248. package/lib/TreeView.d.ts +1 -1
  249. package/lib/TreeView.d.ts.map +1 -1
  250. package/lib/TreeView.js +1 -2
  251. package/lib/TreeView.js.map +1 -1
  252. package/lib/UuidUtilities.d.ts.map +1 -1
  253. package/lib/UuidUtilities.js +1 -1
  254. package/lib/UuidUtilities.js.map +1 -1
  255. package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -1
  256. package/lib/id-compressor/AppendOnlySortedMap.js +1 -1
  257. package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -1
  258. package/lib/id-compressor/IdCompressor.d.ts +1 -1
  259. package/lib/id-compressor/IdCompressor.d.ts.map +1 -1
  260. package/lib/id-compressor/IdCompressor.js +4 -5
  261. package/lib/id-compressor/IdCompressor.js.map +1 -1
  262. package/lib/id-compressor/IdRange.d.ts.map +1 -1
  263. package/lib/id-compressor/IdRange.js +1 -1
  264. package/lib/id-compressor/IdRange.js.map +1 -1
  265. package/lib/id-compressor/NumericUuid.d.ts.map +1 -1
  266. package/lib/id-compressor/NumericUuid.js +2 -1
  267. package/lib/id-compressor/NumericUuid.js.map +1 -1
  268. package/lib/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
  269. package/lib/id-compressor/SessionIdNormalizer.js +1 -2
  270. package/lib/id-compressor/SessionIdNormalizer.js.map +1 -1
  271. package/lib/migration-shim/migrationDeltaHandler.d.ts +1 -1
  272. package/lib/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
  273. package/lib/migration-shim/migrationDeltaHandler.js +1 -1
  274. package/lib/migration-shim/migrationDeltaHandler.js.map +1 -1
  275. package/lib/migration-shim/migrationShim.d.ts +8 -4
  276. package/lib/migration-shim/migrationShim.d.ts.map +1 -1
  277. package/lib/migration-shim/migrationShim.js +3 -3
  278. package/lib/migration-shim/migrationShim.js.map +1 -1
  279. package/lib/migration-shim/migrationShimFactory.d.ts +2 -2
  280. package/lib/migration-shim/migrationShimFactory.d.ts.map +1 -1
  281. package/lib/migration-shim/migrationShimFactory.js +1 -1
  282. package/lib/migration-shim/migrationShimFactory.js.map +1 -1
  283. package/lib/migration-shim/packageVersion.d.ts +0 -2
  284. package/lib/migration-shim/packageVersion.d.ts.map +1 -1
  285. package/lib/migration-shim/packageVersion.js +0 -2
  286. package/lib/migration-shim/packageVersion.js.map +1 -1
  287. package/lib/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
  288. package/lib/migration-shim/sharedTreeDeltaHandler.js +1 -1
  289. package/lib/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
  290. package/lib/migration-shim/sharedTreeShim.d.ts +2 -2
  291. package/lib/migration-shim/sharedTreeShim.d.ts.map +1 -1
  292. package/lib/migration-shim/sharedTreeShim.js +6 -2
  293. package/lib/migration-shim/sharedTreeShim.js.map +1 -1
  294. package/lib/migration-shim/sharedTreeShimFactory.d.ts +1 -1
  295. package/lib/migration-shim/sharedTreeShimFactory.d.ts.map +1 -1
  296. package/lib/migration-shim/sharedTreeShimFactory.js +1 -1
  297. package/lib/migration-shim/sharedTreeShimFactory.js.map +1 -1
  298. package/lib/migration-shim/shimChannelServices.d.ts +1 -1
  299. package/lib/migration-shim/shimChannelServices.d.ts.map +1 -1
  300. package/lib/migration-shim/shimChannelServices.js.map +1 -1
  301. package/lib/migration-shim/shimDeltaConnection.d.ts +1 -1
  302. package/lib/migration-shim/shimDeltaConnection.d.ts.map +1 -1
  303. package/lib/migration-shim/shimDeltaConnection.js +1 -1
  304. package/lib/migration-shim/shimDeltaConnection.js.map +1 -1
  305. package/lib/migration-shim/shimHandle.d.ts.map +1 -1
  306. package/lib/migration-shim/shimHandle.js.map +1 -1
  307. package/lib/migration-shim/types.d.ts +1 -1
  308. package/lib/migration-shim/types.d.ts.map +1 -1
  309. package/lib/migration-shim/types.js.map +1 -1
  310. package/lib/migration-shim/utils.d.ts +1 -1
  311. package/lib/migration-shim/utils.d.ts.map +1 -1
  312. package/lib/migration-shim/utils.js.map +1 -1
  313. package/lib/persisted-types/0.0.2.d.ts +1 -1
  314. package/lib/persisted-types/0.0.2.d.ts.map +1 -1
  315. package/lib/persisted-types/0.0.2.js.map +1 -1
  316. package/lib/persisted-types/0.1.1.d.ts +1 -1
  317. package/lib/persisted-types/0.1.1.d.ts.map +1 -1
  318. package/lib/persisted-types/0.1.1.js +1 -1
  319. package/lib/persisted-types/0.1.1.js.map +1 -1
  320. package/package.json +33 -32
  321. package/src/ChangeCompression.ts +8 -8
  322. package/src/ChangeTypes.ts +5 -4
  323. package/src/Checkout.ts +9 -7
  324. package/src/EditLog.ts +4 -3
  325. package/src/EditUtilities.ts +9 -8
  326. package/src/Forest.ts +3 -2
  327. package/src/HistoryEditFactory.ts +12 -11
  328. package/src/IdConversion.ts +2 -2
  329. package/src/LogViewer.ts +5 -4
  330. package/src/MergeHealth.ts +2 -1
  331. package/src/NodeIdUtilities.ts +2 -2
  332. package/src/PayloadUtilities.ts +2 -1
  333. package/src/ReconciliationPath.ts +1 -1
  334. package/src/RevisionValueCache.ts +3 -2
  335. package/src/RevisionView.ts +3 -3
  336. package/src/SerializationUtilities.ts +1 -1
  337. package/src/SharedTree.ts +46 -49
  338. package/src/SharedTreeEncoder.ts +30 -29
  339. package/src/Summary.ts +5 -3
  340. package/src/SummaryBackCompatibility.ts +1 -0
  341. package/src/SummaryTestUtilities.ts +2 -1
  342. package/src/Transaction.ts +7 -6
  343. package/src/TransactionInternal.ts +17 -16
  344. package/src/TreeCompressor.ts +6 -4
  345. package/src/TreeNodeHandle.ts +2 -2
  346. package/src/TreeView.ts +3 -3
  347. package/src/UuidUtilities.ts +2 -1
  348. package/src/id-compressor/AppendOnlySortedMap.ts +2 -1
  349. package/src/id-compressor/IdCompressor.ts +18 -17
  350. package/src/id-compressor/IdRange.ts +2 -1
  351. package/src/id-compressor/NumericUuid.ts +1 -1
  352. package/src/id-compressor/SessionIdNormalizer.ts +3 -3
  353. package/src/migration-shim/migrationDeltaHandler.ts +3 -2
  354. package/src/migration-shim/migrationShim.ts +14 -10
  355. package/src/migration-shim/migrationShimFactory.ts +6 -4
  356. package/src/migration-shim/packageVersion.ts +0 -2
  357. package/src/migration-shim/sharedTreeDeltaHandler.ts +3 -2
  358. package/src/migration-shim/sharedTreeShim.ts +7 -5
  359. package/src/migration-shim/sharedTreeShimFactory.ts +3 -3
  360. package/src/migration-shim/shimChannelServices.ts +1 -1
  361. package/src/migration-shim/shimDeltaConnection.ts +3 -2
  362. package/src/migration-shim/shimHandle.ts +1 -0
  363. package/src/migration-shim/types.ts +3 -1
  364. package/src/migration-shim/utils.ts +2 -1
  365. package/src/persisted-types/0.0.2.ts +2 -2
  366. package/src/persisted-types/0.1.1.ts +10 -8
  367. package/dist/tree-alpha.d.ts +0 -2901
  368. package/dist/tree-beta.d.ts +0 -348
  369. package/dist/tree-public.d.ts +0 -348
  370. package/dist/tree-untrimmed.d.ts +0 -3820
  371. package/lib/test/AppendOnlySortedMap.perf.tests.d.ts +0 -6
  372. package/lib/test/AppendOnlySortedMap.perf.tests.d.ts.map +0 -1
  373. package/lib/test/AppendOnlySortedMap.perf.tests.js +0 -49
  374. package/lib/test/AppendOnlySortedMap.perf.tests.js.map +0 -1
  375. package/lib/test/AppendOnlySortedMap.tests.d.ts +0 -6
  376. package/lib/test/AppendOnlySortedMap.tests.d.ts.map +0 -1
  377. package/lib/test/AppendOnlySortedMap.tests.js +0 -213
  378. package/lib/test/AppendOnlySortedMap.tests.js.map +0 -1
  379. package/lib/test/ChangeCompression.tests.d.ts +0 -6
  380. package/lib/test/ChangeCompression.tests.d.ts.map +0 -1
  381. package/lib/test/ChangeCompression.tests.js +0 -154
  382. package/lib/test/ChangeCompression.tests.js.map +0 -1
  383. package/lib/test/Checkout.tests.d.ts +0 -10
  384. package/lib/test/Checkout.tests.d.ts.map +0 -1
  385. package/lib/test/Checkout.tests.js +0 -460
  386. package/lib/test/Checkout.tests.js.map +0 -1
  387. package/lib/test/Common.tests.d.ts +0 -6
  388. package/lib/test/Common.tests.d.ts.map +0 -1
  389. package/lib/test/Common.tests.js +0 -102
  390. package/lib/test/Common.tests.js.map +0 -1
  391. package/lib/test/EagerCheckout.tests.d.ts +0 -6
  392. package/lib/test/EagerCheckout.tests.d.ts.map +0 -1
  393. package/lib/test/EagerCheckout.tests.js +0 -20
  394. package/lib/test/EagerCheckout.tests.js.map +0 -1
  395. package/lib/test/Edit.tests.d.ts +0 -6
  396. package/lib/test/Edit.tests.d.ts.map +0 -1
  397. package/lib/test/Edit.tests.js +0 -60
  398. package/lib/test/Edit.tests.js.map +0 -1
  399. package/lib/test/EditLog.perf.tests.d.ts +0 -6
  400. package/lib/test/EditLog.perf.tests.d.ts.map +0 -1
  401. package/lib/test/EditLog.perf.tests.js +0 -41
  402. package/lib/test/EditLog.perf.tests.js.map +0 -1
  403. package/lib/test/EditLog.tests.d.ts +0 -6
  404. package/lib/test/EditLog.tests.d.ts.map +0 -1
  405. package/lib/test/EditLog.tests.js +0 -355
  406. package/lib/test/EditLog.tests.js.map +0 -1
  407. package/lib/test/EditUtilities.tests.d.ts +0 -6
  408. package/lib/test/EditUtilities.tests.d.ts.map +0 -1
  409. package/lib/test/EditUtilities.tests.js +0 -512
  410. package/lib/test/EditUtilities.tests.js.map +0 -1
  411. package/lib/test/Forest.perf.tests.d.ts +0 -6
  412. package/lib/test/Forest.perf.tests.d.ts.map +0 -1
  413. package/lib/test/Forest.perf.tests.js +0 -135
  414. package/lib/test/Forest.perf.tests.js.map +0 -1
  415. package/lib/test/Forest.tests.d.ts +0 -6
  416. package/lib/test/Forest.tests.d.ts.map +0 -1
  417. package/lib/test/Forest.tests.js +0 -213
  418. package/lib/test/Forest.tests.js.map +0 -1
  419. package/lib/test/GenericTransaction.tests.d.ts +0 -6
  420. package/lib/test/GenericTransaction.tests.d.ts.map +0 -1
  421. package/lib/test/GenericTransaction.tests.js +0 -31
  422. package/lib/test/GenericTransaction.tests.js.map +0 -1
  423. package/lib/test/HistoryEditFactory.tests.d.ts +0 -6
  424. package/lib/test/HistoryEditFactory.tests.d.ts.map +0 -1
  425. package/lib/test/HistoryEditFactory.tests.js +0 -170
  426. package/lib/test/HistoryEditFactory.tests.js.map +0 -1
  427. package/lib/test/IdCompressor.perf.tests.d.ts +0 -6
  428. package/lib/test/IdCompressor.perf.tests.d.ts.map +0 -1
  429. package/lib/test/IdCompressor.perf.tests.js +0 -290
  430. package/lib/test/IdCompressor.perf.tests.js.map +0 -1
  431. package/lib/test/IdCompressor.tests.d.ts +0 -6
  432. package/lib/test/IdCompressor.tests.d.ts.map +0 -1
  433. package/lib/test/IdCompressor.tests.js +0 -1542
  434. package/lib/test/IdCompressor.tests.js.map +0 -1
  435. package/lib/test/IdConversion.tests.d.ts +0 -6
  436. package/lib/test/IdConversion.tests.d.ts.map +0 -1
  437. package/lib/test/IdConversion.tests.js +0 -36
  438. package/lib/test/IdConversion.tests.js.map +0 -1
  439. package/lib/test/LazyCheckout.tests.d.ts +0 -6
  440. package/lib/test/LazyCheckout.tests.d.ts.map +0 -1
  441. package/lib/test/LazyCheckout.tests.js +0 -22
  442. package/lib/test/LazyCheckout.tests.js.map +0 -1
  443. package/lib/test/LogViewer.tests.d.ts +0 -6
  444. package/lib/test/LogViewer.tests.d.ts.map +0 -1
  445. package/lib/test/LogViewer.tests.js +0 -588
  446. package/lib/test/LogViewer.tests.js.map +0 -1
  447. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts +0 -6
  448. package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +0 -1
  449. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +0 -351
  450. package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +0 -1
  451. package/lib/test/NumericUuid.perf.tests.d.ts +0 -6
  452. package/lib/test/NumericUuid.perf.tests.d.ts.map +0 -1
  453. package/lib/test/NumericUuid.perf.tests.js +0 -68
  454. package/lib/test/NumericUuid.perf.tests.js.map +0 -1
  455. package/lib/test/NumericUuid.tests.d.ts +0 -6
  456. package/lib/test/NumericUuid.tests.d.ts.map +0 -1
  457. package/lib/test/NumericUuid.tests.js +0 -192
  458. package/lib/test/NumericUuid.tests.js.map +0 -1
  459. package/lib/test/RevisionValueCache.tests.d.ts +0 -6
  460. package/lib/test/RevisionValueCache.tests.d.ts.map +0 -1
  461. package/lib/test/RevisionValueCache.tests.js +0 -106
  462. package/lib/test/RevisionValueCache.tests.js.map +0 -1
  463. package/lib/test/RevisionView.tests.d.ts +0 -6
  464. package/lib/test/RevisionView.tests.d.ts.map +0 -1
  465. package/lib/test/RevisionView.tests.js +0 -131
  466. package/lib/test/RevisionView.tests.js.map +0 -1
  467. package/lib/test/SessionIdNormalizer.tests.d.ts +0 -6
  468. package/lib/test/SessionIdNormalizer.tests.d.ts.map +0 -1
  469. package/lib/test/SessionIdNormalizer.tests.js +0 -377
  470. package/lib/test/SessionIdNormalizer.tests.js.map +0 -1
  471. package/lib/test/SharedTree.fuzz.tests.d.ts +0 -6
  472. package/lib/test/SharedTree.fuzz.tests.d.ts.map +0 -1
  473. package/lib/test/SharedTree.fuzz.tests.js +0 -9
  474. package/lib/test/SharedTree.fuzz.tests.js.map +0 -1
  475. package/lib/test/SharedTree.perf.tests.d.ts +0 -6
  476. package/lib/test/SharedTree.perf.tests.d.ts.map +0 -1
  477. package/lib/test/SharedTree.perf.tests.js +0 -39
  478. package/lib/test/SharedTree.perf.tests.js.map +0 -1
  479. package/lib/test/SharedTree.tests.d.ts +0 -6
  480. package/lib/test/SharedTree.tests.d.ts.map +0 -1
  481. package/lib/test/SharedTree.tests.js +0 -22
  482. package/lib/test/SharedTree.tests.js.map +0 -1
  483. package/lib/test/StringInterner.tests.d.ts +0 -6
  484. package/lib/test/StringInterner.tests.d.ts.map +0 -1
  485. package/lib/test/StringInterner.tests.js +0 -73
  486. package/lib/test/StringInterner.tests.js.map +0 -1
  487. package/lib/test/Summary.tests.d.ts +0 -7
  488. package/lib/test/Summary.tests.d.ts.map +0 -1
  489. package/lib/test/Summary.tests.js +0 -386
  490. package/lib/test/Summary.tests.js.map +0 -1
  491. package/lib/test/Transaction.tests.d.ts +0 -6
  492. package/lib/test/Transaction.tests.d.ts.map +0 -1
  493. package/lib/test/Transaction.tests.js +0 -124
  494. package/lib/test/Transaction.tests.js.map +0 -1
  495. package/lib/test/TransactionInternal.tests.d.ts +0 -6
  496. package/lib/test/TransactionInternal.tests.d.ts.map +0 -1
  497. package/lib/test/TransactionInternal.tests.js +0 -576
  498. package/lib/test/TransactionInternal.tests.js.map +0 -1
  499. package/lib/test/TreeCompression.tests.d.ts +0 -6
  500. package/lib/test/TreeCompression.tests.d.ts.map +0 -1
  501. package/lib/test/TreeCompression.tests.js +0 -291
  502. package/lib/test/TreeCompression.tests.js.map +0 -1
  503. package/lib/test/TreeView.tests.d.ts +0 -6
  504. package/lib/test/TreeView.tests.d.ts.map +0 -1
  505. package/lib/test/TreeView.tests.js +0 -178
  506. package/lib/test/TreeView.tests.js.map +0 -1
  507. package/lib/test/UndoRedoHandler.tests.d.ts +0 -6
  508. package/lib/test/UndoRedoHandler.tests.d.ts.map +0 -1
  509. package/lib/test/UndoRedoHandler.tests.js +0 -37
  510. package/lib/test/UndoRedoHandler.tests.js.map +0 -1
  511. package/lib/test/fuzz/Generators.d.ts +0 -8
  512. package/lib/test/fuzz/Generators.d.ts.map +0 -1
  513. package/lib/test/fuzz/Generators.js +0 -345
  514. package/lib/test/fuzz/Generators.js.map +0 -1
  515. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +0 -23
  516. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +0 -1
  517. package/lib/test/fuzz/SharedTreeFuzzTests.js +0 -241
  518. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +0 -1
  519. package/lib/test/fuzz/Types.d.ts +0 -136
  520. package/lib/test/fuzz/Types.d.ts.map +0 -1
  521. package/lib/test/fuzz/Types.js +0 -6
  522. package/lib/test/fuzz/Types.js.map +0 -1
  523. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +0 -246
  524. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +0 -1
  525. package/lib/test/utilities/IdCompressorTestUtilities.js +0 -608
  526. package/lib/test/utilities/IdCompressorTestUtilities.js.map +0 -1
  527. package/lib/test/utilities/MockTransaction.d.ts +0 -35
  528. package/lib/test/utilities/MockTransaction.d.ts.map +0 -1
  529. package/lib/test/utilities/MockTransaction.js +0 -51
  530. package/lib/test/utilities/MockTransaction.js.map +0 -1
  531. package/lib/test/utilities/PendingLocalStateTests.d.ts +0 -12
  532. package/lib/test/utilities/PendingLocalStateTests.d.ts.map +0 -1
  533. package/lib/test/utilities/PendingLocalStateTests.js +0 -223
  534. package/lib/test/utilities/PendingLocalStateTests.js.map +0 -1
  535. package/lib/test/utilities/SharedTreeTests.d.ts +0 -12
  536. package/lib/test/utilities/SharedTreeTests.d.ts.map +0 -1
  537. package/lib/test/utilities/SharedTreeTests.js +0 -949
  538. package/lib/test/utilities/SharedTreeTests.js.map +0 -1
  539. package/lib/test/utilities/SharedTreeVersioningTests.d.ts +0 -11
  540. package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +0 -1
  541. package/lib/test/utilities/SharedTreeVersioningTests.js +0 -439
  542. package/lib/test/utilities/SharedTreeVersioningTests.js.map +0 -1
  543. package/lib/test/utilities/SummaryLoadPerfTests.d.ts +0 -10
  544. package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +0 -1
  545. package/lib/test/utilities/SummaryLoadPerfTests.js +0 -105
  546. package/lib/test/utilities/SummaryLoadPerfTests.js.map +0 -1
  547. package/lib/test/utilities/SummarySizeTests.d.ts +0 -11
  548. package/lib/test/utilities/SummarySizeTests.d.ts.map +0 -1
  549. package/lib/test/utilities/SummarySizeTests.js +0 -160
  550. package/lib/test/utilities/SummarySizeTests.js.map +0 -1
  551. package/lib/test/utilities/TestCommon.d.ts +0 -13
  552. package/lib/test/utilities/TestCommon.d.ts.map +0 -1
  553. package/lib/test/utilities/TestCommon.js +0 -19
  554. package/lib/test/utilities/TestCommon.js.map +0 -1
  555. package/lib/test/utilities/TestNode.d.ts +0 -140
  556. package/lib/test/utilities/TestNode.d.ts.map +0 -1
  557. package/lib/test/utilities/TestNode.js +0 -282
  558. package/lib/test/utilities/TestNode.js.map +0 -1
  559. package/lib/test/utilities/TestSerializer.d.ts +0 -24
  560. package/lib/test/utilities/TestSerializer.d.ts.map +0 -1
  561. package/lib/test/utilities/TestSerializer.js +0 -40
  562. package/lib/test/utilities/TestSerializer.js.map +0 -1
  563. package/lib/test/utilities/TestUtilities.d.ts +0 -212
  564. package/lib/test/utilities/TestUtilities.d.ts.map +0 -1
  565. package/lib/test/utilities/TestUtilities.js +0 -413
  566. package/lib/test/utilities/TestUtilities.js.map +0 -1
  567. package/lib/test/utilities/UndoRedoTests.d.ts +0 -32
  568. package/lib/test/utilities/UndoRedoTests.d.ts.map +0 -1
  569. package/lib/test/utilities/UndoRedoTests.js +0 -317
  570. package/lib/test/utilities/UndoRedoTests.js.map +0 -1
  571. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"RevisionView.tests.js","sourceRoot":"","sources":["../../src/test/RevisionView.tests.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 { expect } from 'chai';\nimport { TraitLabel } from '../Identifiers.js';\nimport { getChangeNodeFromViewNode } from '../SerializationUtilities.js';\nimport { ChangeNode } from '../persisted-types/index.js';\nimport { convertTreeNodesToViewNodes, RevisionView } from '../RevisionView.js';\nimport { StablePlace, StableRange } from '../ChangeTypes.js';\nimport { detachRange, insertIntoTrait } from '../EditUtilities.js';\nimport { expectDefined } from './utilities/TestCommon.js';\nimport { LeafNode, TestNode } from './utilities/TestNode.js';\nimport { refreshTestTree } from './utilities/TestUtilities.js';\n\ndescribe('RevisionView', () => {\n\tconst testTree = refreshTestTree();\n\n\tdescribe('creation from a ChangeNode', () => {\n\t\tit('ignores empty traits', () => {\n\t\t\tconst leaf = testTree.buildLeaf(testTree.generateNodeId());\n\t\t\tconst node: ChangeNode = {\n\t\t\t\ttraits: {\n\t\t\t\t\ttrait: [leaf],\n\t\t\t\t\temptyTrait: [],\n\t\t\t\t},\n\t\t\t\tdefinition: testTree.definition,\n\t\t\t\tidentifier: testTree.identifier,\n\t\t\t};\n\n\t\t\tconst view = RevisionView.fromTree(node);\n\t\t\tconst changeNode = getChangeNodeFromViewNode(view, testTree.identifier);\n\t\t\texpect(changeNode.traits.trait[0].identifier).to.equal(leaf.identifier);\n\t\t\texpect(changeNode.traits.emptyTrait).to.equal(undefined);\n\t\t});\n\t});\n\n\tit('correctly converts tree nodes', () => {\n\t\tconst viewNodes = expectDefined(\n\t\t\tconvertTreeNodesToViewNodes<TestNode>(testTree, (node) => ({\n\t\t\t\tdefinition: node.definition,\n\t\t\t\tidentifier: node.identifier,\n\t\t\t}))\n\t\t);\n\t\tlet createdRoot = false;\n\t\tlet createdLeft = false;\n\t\tlet createdRight = false;\n\t\tfor (let viewNode = viewNodes.pop(); viewNode !== undefined; viewNode = viewNodes.pop()) {\n\t\t\tswitch (viewNode.identifier) {\n\t\t\t\tcase testTree.identifier:\n\t\t\t\t\texpect(createdRoot).to.be.false;\n\t\t\t\t\texpect(viewNode.definition).to.equal(testTree.definition);\n\t\t\t\t\texpect(viewNode.traits.size).to.equal(2);\n\t\t\t\t\texpect(viewNode.traits.get(testTree.left.traitLabel)).to.deep.equal([testTree.left.identifier]);\n\t\t\t\t\texpect(viewNode.traits.get(testTree.right.traitLabel)).to.deep.equal([testTree.right.identifier]);\n\t\t\t\t\tcreatedRoot = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase testTree.left.identifier:\n\t\t\t\t\texpect(createdLeft).to.be.false;\n\t\t\t\t\texpect(viewNode.definition).to.equal(testTree.left.definition);\n\t\t\t\t\texpect(viewNode.traits.size).to.equal(0);\n\t\t\t\t\tcreatedLeft = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase testTree.right.identifier:\n\t\t\t\t\texpect(createdRight).to.be.false;\n\t\t\t\t\texpect(viewNode.definition).to.equal(testTree.right.definition);\n\t\t\t\t\texpect(viewNode.traits.size).to.equal(0);\n\t\t\t\t\tcreatedRight = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\texpect.fail('Unexpected view node ID');\n\t\t\t}\n\t\t}\n\t});\n\n\tit('correctly handles tree node conversion failure', () => {\n\t\tlet nodesConverted = 0;\n\t\tconst viewNodes = convertTreeNodesToViewNodes<TestNode>(testTree, (node) => {\n\t\t\tif (nodesConverted++ >= 2) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tdefinition: node.definition,\n\t\t\t\tidentifier: node.identifier,\n\t\t\t};\n\t\t});\n\n\t\texpect(viewNodes).to.be.undefined;\n\t});\n});\n\ndescribe('TransactionView', () => {\n\tconst testTree = refreshTestTree();\n\tconst traitLabel = 'trait' as TraitLabel;\n\n\tfunction getTree(): {\n\t\tparent: ChangeNode;\n\t\tchildA: LeafNode<ChangeNode>;\n\t\tchildB: LeafNode<ChangeNode>;\n\t} {\n\t\tconst childA = testTree.buildLeaf(testTree.generateNodeId());\n\t\tconst childB = testTree.buildLeaf(testTree.generateNodeId());\n\t\tconst parent: ChangeNode = {\n\t\t\ttraits: {\n\t\t\t\t[traitLabel]: [childA, childB],\n\t\t\t},\n\t\t\tdefinition: testTree.definition,\n\t\t\tidentifier: testTree.identifier,\n\t\t};\n\t\treturn { parent, childA, childB };\n\t}\n\n\tit('can detach a single node in a trait', () => {\n\t\tconst { parent, childA, childB } = getTree();\n\t\tconst startingView = RevisionView.fromTree(parent).openForTransaction();\n\t\tconst { view } = detachRange(startingView, StableRange.only(childA));\n\t\texpect(view.size).to.equal(3);\n\t\texpect(view.hasNode(childA.identifier)).to.be.true;\n\t\texpect(view.tryGetParentViewNode(childA.identifier)).to.be.undefined;\n\t\texpect(view.tryGetParentViewNode(childB.identifier)?.identifier).to.equal(parent.identifier);\n\t\texpect(view.getIndexInTrait(childB.identifier)).to.equal(0);\n\t});\n\n\tit('can detach an entire trait', () => {\n\t\tconst { parent, childA, childB } = getTree();\n\t\tconst startingView = RevisionView.fromTree(parent).openForTransaction();\n\t\tconst { view, detached } = detachRange(\n\t\t\tstartingView,\n\t\t\tStableRange.all({ parent: parent.identifier, label: traitLabel })\n\t\t);\n\t\texpect(detached).deep.equals([childA.identifier, childB.identifier]);\n\t\texpect(view.size).to.equal(3);\n\t\texpect(view.hasNode(childA.identifier)).to.be.true;\n\t\texpect(view.hasNode(childB.identifier)).to.be.true;\n\t\texpect(view.tryGetParentViewNode(childA.identifier)).to.be.undefined;\n\t\texpect(view.tryGetParentViewNode(childB.identifier)).to.be.undefined;\n\t});\n\n\tit('can insert a node', () => {\n\t\tconst { parent, childA, childB } = getTree();\n\t\tconst startingView = RevisionView.fromTree(parent).openForTransaction();\n\t\tconst newNode = testTree.buildLeaf(testTree.generateNodeId());\n\t\tlet view = startingView.addNodes([{ ...newNode, traits: new Map() }]);\n\t\texpect(view.size).to.equal(4);\n\t\texpect(view.hasNode(newNode.identifier)).to.be.true;\n\t\texpect(view.tryGetParentViewNode(newNode.identifier)).to.be.undefined;\n\t\tview = insertIntoTrait(\n\t\t\tview,\n\t\t\t[newNode.identifier],\n\t\t\tStablePlace.atStartOf({ parent: parent.identifier, label: traitLabel })\n\t\t);\n\t\texpect(view.tryGetParentViewNode(newNode.identifier)?.identifier).to.equal(parent.identifier);\n\t\texpect(view.getIndexInTrait(newNode.identifier)).to.equal(0);\n\t\texpect(view.getIndexInTrait(childA.identifier)).to.equal(1);\n\t\texpect(view.getIndexInTrait(childB.identifier)).to.equal(2);\n\t});\n});\n"]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- export {};
6
- //# sourceMappingURL=SessionIdNormalizer.tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionIdNormalizer.tests.d.ts","sourceRoot":"","sources":["../../src/test/SessionIdNormalizer.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,377 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { strict as assert } from 'assert';
6
- import { benchmark, BenchmarkType } from '@fluid-tools/benchmark';
7
- import { expect } from 'chai';
8
- import { chain, createWeightedGenerator, generatorFromArray, performFuzzActions, take, makeRandom, } from '@fluid-private/stochastic-test-utils';
9
- import { validateAssertionError } from '@fluidframework/test-runtime-utils';
10
- import { fail } from '../Common.js';
11
- import { isFinalId, isLocalId } from '../id-compressor/index.js';
12
- import { SessionIdNormalizer } from '../id-compressor/SessionIdNormalizer.js';
13
- describe('SessionIdNormalizer', () => {
14
- it('fails when adding finals with no corresponding locals', () => {
15
- const normalizer = makeTestNormalizer();
16
- assert.throws(() => normalizer.addFinalIds(final(0), final(1), dummy), (e) => validateAssertionError(e, 'Final IDs must be added to an existing local range.'));
17
- });
18
- it('fails when adding finals out of order', () => {
19
- const normalizer = makeTestNormalizer();
20
- normalizer.addLocalId();
21
- assert.throws(() => normalizer.addFinalIds(final(1), final(0), dummy), (e) => validateAssertionError(e, 'Malformed normalization range.'));
22
- });
23
- it('fails when registering final blocks with no corresponding locals', () => {
24
- const normalizer = makeTestNormalizer();
25
- assert.throws(() => normalizer.registerFinalIdBlock(final(0), 5, dummy), (e) => validateAssertionError(e, 'Final ID block should not be registered before any locals.'));
26
- normalizer.addLocalId();
27
- addFinalIds(normalizer, final(0), final(0));
28
- assert.throws(() => normalizer.registerFinalIdBlock(final(1), 5, dummy), (e) => validateAssertionError(e, 'Final ID block should not be registered without an existing local range.'));
29
- });
30
- it('fails when registering final blocks with an invalid count', () => {
31
- const normalizer = makeTestNormalizer();
32
- normalizer.addLocalId();
33
- assert.throws(() => normalizer.registerFinalIdBlock(final(1), 0, dummy), (e) => validateAssertionError(e, 'Malformed normalization block.'));
34
- assert.throws(() => normalizer.registerFinalIdBlock(final(1), -1, dummy), (e) => validateAssertionError(e, 'Malformed normalization block.'));
35
- });
36
- it('fails when gaps in finals do not align with a local', () => {
37
- /**
38
- * Locals: [-1, -2, X, -4]
39
- * Finals: [ 0, 1, 2, 5]
40
- * Calling `addFinalIds` with first === last === 9 results in the following:
41
- * Locals: [-1, -2, X, -4, X]
42
- * Finals: [ 0, 1, 2, 5, 9]
43
- *
44
- * ^should fail
45
- */
46
- const normalizer = makeTestNormalizer();
47
- normalizer.addLocalId(); // -1
48
- normalizer.addLocalId(); // -2
49
- addFinalIds(normalizer, final(0), final(2));
50
- normalizer.addLocalId(); // -4
51
- addFinalIds(normalizer, final(5), final(5));
52
- assert.throws(() => addFinalIds(normalizer, final(9), final(9)), (e) => validateAssertionError(e, 'Gaps in final space must align to a local.'));
53
- });
54
- it('aligns outstanding locals when a block of finals is registered', () => {
55
- /**
56
- * Locals: [-1, -2, -3, -4]
57
- * Finals: [ 0, X, X, X]
58
- * Calling `registerFinalIdBlock` with first === 3, count === 10 results in the following:
59
- * Locals: [-1, -2, -3, -4]
60
- * Finals: [ 0, 3, 4, 5]
61
- *
62
- */
63
- const normalizer = makeTestNormalizer();
64
- const local1 = normalizer.addLocalId(); // -1
65
- const local2 = normalizer.addLocalId(); // -2
66
- const local3 = normalizer.addLocalId(); // -3
67
- const local4 = normalizer.addLocalId(); // -4
68
- normalizer.addFinalIds(final(0), final(0), dummy);
69
- normalizer.registerFinalIdBlock(final(3), 10, dummy);
70
- const locals = [local1, local2, local3, local4];
71
- for (let i = 1; i < locals.length; i++) {
72
- const expectedFinal = final(i + 2);
73
- const finalObj = normalizer.getFinalId(locals[i]);
74
- if (finalObj === undefined) {
75
- expect.fail();
76
- }
77
- else {
78
- expect(finalObj[0]).to.equal(expectedFinal);
79
- }
80
- }
81
- const local5 = normalizer.addLocalId();
82
- expect(local5).to.equal(-5);
83
- expect(normalizer.getFinalId(local5)).to.be.undefined;
84
- });
85
- it('fails to align a block of finals when there are no outstanding local IDs', () => {
86
- /**
87
- * Locals: [-1, X]
88
- * Finals: [ 0, 1]
89
- * Calling `registerFinalIdBlock` with first === 5, count === 10 should fail.
90
- */
91
- const normalizer = makeTestNormalizer();
92
- normalizer.addLocalId(); // -1
93
- normalizer.addFinalIds(final(0), final(1), dummy);
94
- assert.throws(() => normalizer.registerFinalIdBlock(final(5), 10, dummy), (e) => validateAssertionError(e, 'Final ID block should not be registered without an existing local range.'));
95
- });
96
- it('fails when attempting to normalize a local ID that was never registered', () => {
97
- const normalizer = makeTestNormalizer();
98
- assert.throws(() => normalizer.getFinalId(-1), (e) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.'));
99
- const local = normalizer.addLocalId();
100
- const secondLocal = (local - 1);
101
- assert.throws(() => normalizer.getFinalId(secondLocal), (e) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.'));
102
- addFinalIds(normalizer, final(0), final(5));
103
- assert.throws(() => normalizer.getFinalId(secondLocal), (e) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.'));
104
- });
105
- itWithNormalizer('can normalize IDs with only local forms', (normalizer) => {
106
- const local1 = normalizer.addLocalId();
107
- const local2 = normalizer.addLocalId();
108
- const local3 = normalizer.addLocalId();
109
- const local4 = normalizer.addLocalId();
110
- expect(local1).to.equal(-1);
111
- expect(local2).to.equal(-2);
112
- expect(local3).to.equal(-3);
113
- expect(local4).to.equal(-4);
114
- });
115
- itWithNormalizer('can normalize IDs with trailing finals', (normalizer) => {
116
- normalizer.addLocalId();
117
- addFinalIds(normalizer, final(0), final(1));
118
- addFinalIds(normalizer, final(2), final(3));
119
- addFinalIds(normalizer, final(4), final(10));
120
- });
121
- itWithNormalizer('can normalize IDs with trailing locals', (normalizer) => {
122
- normalizer.addLocalId();
123
- addFinalIds(normalizer, final(0), final(1));
124
- normalizer.addLocalId();
125
- normalizer.addLocalId();
126
- });
127
- itWithNormalizer('can normalize IDs with a gap in final space', (normalizer) => {
128
- normalizer.addLocalId();
129
- normalizer.addLocalId();
130
- normalizer.addLocalId();
131
- addFinalIds(normalizer, final(0), final(1));
132
- addFinalIds(normalizer, final(10), final(11));
133
- });
134
- itWithNormalizer('can normalize IDs with and without corresponding local forms', (normalizer) => {
135
- normalizer.addLocalId(); // -1
136
- normalizer.addLocalId(); // -2
137
- normalizer.addLocalId(); // -3
138
- addFinalIds(normalizer, final(0), final(3));
139
- normalizer.addLocalId(); // -5
140
- normalizer.addLocalId(); // -6
141
- addFinalIds(normalizer, final(4), final(5));
142
- normalizer.addLocalId(); // -7
143
- addFinalIds(normalizer, final(8), final(9));
144
- normalizer.addLocalId(); // -9
145
- addFinalIds(normalizer, final(14), final(15));
146
- normalizer.addLocalId(); // -11
147
- normalizer.addLocalId(); // -12
148
- });
149
- itWithNormalizer('can get the last final ID', (normalizer) => {
150
- normalizer.addLocalId(); // -1
151
- normalizer.addLocalId(); // -2
152
- normalizer.addLocalId(); // -3
153
- normalizer.addLocalId(); // -4
154
- expect(normalizer.getLastFinalId()).to.be.undefined;
155
- addFinalIds(normalizer, final(0), final(1));
156
- expect(normalizer.getLastFinalId()).to.equal(1);
157
- addFinalIds(normalizer, final(2), final(2));
158
- expect(normalizer.getLastFinalId()).to.equal(2);
159
- addFinalIds(normalizer, final(10), final(15));
160
- expect(normalizer.getLastFinalId()).to.equal(15);
161
- });
162
- itWithNormalizer('can normalize IDs after fuzzed inputs', (normalizer) => {
163
- fuzzNormalizer(normalizer, 1000, 42);
164
- });
165
- });
166
- describe('SessionIdNormalizer Perf', () => {
167
- const choiceCount = 1000;
168
- const type = BenchmarkType.Measurement;
169
- let normalizer;
170
- let rand;
171
- let ids;
172
- let finals;
173
- let locals;
174
- let localChoices;
175
- let finalChoices;
176
- const before = () => {
177
- normalizer = new SessionIdNormalizer();
178
- rand = fuzzNormalizer(normalizer, 10000, 3.14);
179
- ids = [...normalizer];
180
- locals = ids.filter((id) => isLocalId(id));
181
- finals = ids.filter((id) => isFinalId(id));
182
- localChoices = [];
183
- finalChoices = [];
184
- for (let i = 0; i < choiceCount; i++) {
185
- localChoices.push(rand.pick(locals));
186
- finalChoices.push(rand.pick(finals));
187
- }
188
- };
189
- let localChoice = 0;
190
- benchmark({
191
- type,
192
- title: `normalize a local ID to a final ID`,
193
- before,
194
- benchmarkFn: () => {
195
- normalizer.getFinalId(localChoices[localChoice++ % localChoices.length]);
196
- },
197
- });
198
- let finalChoice = 0;
199
- benchmark({
200
- type,
201
- title: `normalize a final ID to session space`,
202
- before,
203
- benchmarkFn: () => {
204
- normalizer.getSessionSpaceId(finalChoices[finalChoice++ % finalChoices.length]);
205
- },
206
- });
207
- });
208
- function itWithNormalizer(title, itFn) {
209
- it(title, () => {
210
- const locals = [];
211
- const finals = [];
212
- const normalizer = makeNormalizerProxy(makeTestNormalizer(), locals, finals);
213
- itFn(normalizer);
214
- const allIds = [...normalizer];
215
- let prevLocal;
216
- let prevFinal;
217
- for (let i = 0; i < locals.length && i < finals.length; i++) {
218
- const localExpected = locals[i];
219
- const finalExpected = finals[i];
220
- // local can be undefined in the case of eager final
221
- // final can be undefined in the case of trailing locals with no cluster
222
- // both should never occur
223
- assert((localExpected !== undefined && isLocalId(localExpected)) ||
224
- (finalExpected !== undefined && isFinalId(finalExpected)));
225
- if (prevFinal !== undefined && finalExpected !== undefined) {
226
- assert(finalExpected > prevFinal);
227
- }
228
- if (prevLocal !== undefined && localExpected !== undefined) {
229
- assert(localExpected < prevLocal);
230
- }
231
- prevLocal = localExpected;
232
- prevFinal = finalExpected;
233
- const sessionIdExpected = localExpected ?? finalExpected;
234
- const sessionIdActualAll = allIds[i];
235
- const sessionIdActualNormalized = finalExpected === undefined ? localExpected : normalizer.getSessionSpaceId(finalExpected);
236
- if (finalExpected !== undefined) {
237
- const creationIndex = normalizer.getCreationIndex(finalExpected);
238
- expect(creationIndex).to.equal(i);
239
- }
240
- const idByIndex = normalizer.getIdByCreationIndex(i);
241
- expect(idByIndex).to.equal(localExpected ?? finalExpected);
242
- if (localExpected !== undefined) {
243
- const normalized = normalizer.getFinalId(localExpected);
244
- if (normalized === undefined) {
245
- expect(finalExpected).to.be.undefined;
246
- }
247
- else {
248
- const [opIdActualNormalized] = normalized;
249
- expect(opIdActualNormalized).to.equal(finalExpected);
250
- }
251
- }
252
- expect(sessionIdExpected).to.equal(sessionIdActualAll);
253
- expect(sessionIdActualAll).to.equal(sessionIdActualNormalized);
254
- }
255
- expect(normalizer.getLastFinalId()).to.equal(finals[finals.length - 1]);
256
- const roundtripped = SessionIdNormalizer.deserialize(normalizer.serialize(), () => undefined);
257
- expect(roundtripped.equals(normalizer)).to.be.true;
258
- });
259
- }
260
- function addFinalIds(normalizer, firstFinal, lastFinal) {
261
- normalizer.addFinalIds(firstFinal, lastFinal, dummy);
262
- }
263
- function makeNormalizerProxy(normalizer, locals, finals) {
264
- return new Proxy(normalizer, {
265
- get(target, property) {
266
- if (typeof target[property] === 'function') {
267
- switch (property) {
268
- case 'addLocalId': {
269
- return new Proxy(target[property], {
270
- apply: (func, thisArg, argumentsList) => {
271
- const local = Reflect.apply(func, thisArg, argumentsList);
272
- if (locals.length > 0) {
273
- for (let i = (locals[locals.length - 1] ?? fail()) - 1; i > local; i--) {
274
- locals.push(undefined);
275
- }
276
- }
277
- locals.push(local);
278
- return local;
279
- },
280
- });
281
- }
282
- case 'addFinalIds': {
283
- return new Proxy(target[property], {
284
- apply: (func, thisArg, argumentsList) => {
285
- const firstFinal = argumentsList[0];
286
- const lastFinal = argumentsList[1];
287
- for (let i = firstFinal; i <= lastFinal; i++) {
288
- finals.push(i);
289
- }
290
- return Reflect.apply(func, thisArg, argumentsList);
291
- },
292
- });
293
- }
294
- case 'registerFinalIdBlock': {
295
- return new Proxy(target[property], {
296
- apply: (func, thisArg, argumentsList) => {
297
- const firstFinal = argumentsList[0];
298
- const count = argumentsList[1];
299
- const usedFinals = Math.max(0, Math.min(locals.length - finals.length, count));
300
- for (let i = firstFinal; i < usedFinals; i++) {
301
- finals.push(i);
302
- }
303
- return Reflect.apply(func, thisArg, argumentsList);
304
- },
305
- });
306
- }
307
- // No default
308
- }
309
- }
310
- return Reflect.get(target, property);
311
- },
312
- });
313
- }
314
- const dummy = undefined;
315
- function final(num) {
316
- assert(num >= 0);
317
- return num;
318
- }
319
- function makeTestNormalizer() {
320
- return new SessionIdNormalizer(true);
321
- }
322
- function makeOpGenerator(numOperations) {
323
- function addLocalIdGenerator(state) {
324
- const { locals, finals, random } = state;
325
- state.currentLocal =
326
- locals.length < finals.length && random.bool()
327
- ? -locals.length - (finals.length - locals.length) - 1
328
- : -locals.length - 1;
329
- state.prevWasLocal = true;
330
- return { type: 'addLocalId' };
331
- }
332
- function addFinalIdsGenerator(state) {
333
- const { locals, finals, random } = state;
334
- if (state.prevWasLocal && locals.length > finals.length && random.integer(1, 3) === 3) {
335
- state.currentFinal += random.integer(1, 4);
336
- }
337
- const lastFinal = state.currentFinal + random.integer(0, 10);
338
- const addFinal = {
339
- type: 'addFinalIds',
340
- first: final(state.currentFinal),
341
- last: final(lastFinal),
342
- };
343
- state.currentFinal = lastFinal + 1;
344
- state.prevWasLocal = false;
345
- return addFinal;
346
- }
347
- return chain(generatorFromArray([{ type: 'addLocalId' }]), take(numOperations - 1, createWeightedGenerator([
348
- [addLocalIdGenerator, 8],
349
- [addFinalIdsGenerator, 2],
350
- ])));
351
- }
352
- function fuzzNormalizer(normalizerToFuzz, numOperations, seed) {
353
- const locals = [];
354
- const finals = [];
355
- const normalizer = makeNormalizerProxy(normalizerToFuzz, locals, finals);
356
- const initialState = {
357
- random: makeRandom(seed),
358
- currentLocal: -1,
359
- currentFinal: 0,
360
- prevWasLocal: false,
361
- normalizer,
362
- locals,
363
- finals,
364
- };
365
- performFuzzActions(makeOpGenerator(numOperations), {
366
- addLocalId: (state) => {
367
- state.normalizer.addLocalId();
368
- return state;
369
- },
370
- addFinalIds: (state, { first, last }) => {
371
- state.normalizer.addFinalIds(first, last, dummy);
372
- return state;
373
- },
374
- }, initialState);
375
- return initialState.random;
376
- }
377
- //# sourceMappingURL=SessionIdNormalizer.tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionIdNormalizer.tests.js","sourceRoot":"","sources":["../../src/test/SessionIdNormalizer.tests.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 { strict as assert } from 'assert';\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { expect } from 'chai';\nimport {\n\tBaseFuzzTestState,\n\tchain,\n\tcreateWeightedGenerator,\n\tGenerator,\n\tgeneratorFromArray,\n\tIRandom,\n\tperformFuzzActions,\n\ttake,\n\tmakeRandom,\n} from '@fluid-private/stochastic-test-utils';\nimport { validateAssertionError } from '@fluidframework/test-runtime-utils';\nimport { fail } from '../Common.js';\nimport { isFinalId, isLocalId } from '../id-compressor/index.js';\nimport { SessionIdNormalizer } from '../id-compressor/SessionIdNormalizer.js';\nimport { FinalCompressedId, LocalCompressedId, SessionSpaceCompressedId } from '../Identifiers.js';\n\ndescribe('SessionIdNormalizer', () => {\n\tit('fails when adding finals with no corresponding locals', () => {\n\t\tconst normalizer = makeTestNormalizer();\n\t\tassert.throws(\n\t\t\t() => normalizer.addFinalIds(final(0), final(1), dummy),\n\t\t\t(e: Error) => validateAssertionError(e, 'Final IDs must be added to an existing local range.')\n\t\t);\n\t});\n\n\tit('fails when adding finals out of order', () => {\n\t\tconst normalizer = makeTestNormalizer();\n\t\tnormalizer.addLocalId();\n\t\tassert.throws(\n\t\t\t() => normalizer.addFinalIds(final(1), final(0), dummy),\n\t\t\t(e: Error) => validateAssertionError(e, 'Malformed normalization range.')\n\t\t);\n\t});\n\n\tit('fails when registering final blocks with no corresponding locals', () => {\n\t\tconst normalizer = makeTestNormalizer();\n\t\tassert.throws(\n\t\t\t() => normalizer.registerFinalIdBlock(final(0), 5, dummy),\n\t\t\t(e: Error) => validateAssertionError(e, 'Final ID block should not be registered before any locals.')\n\t\t);\n\t\tnormalizer.addLocalId();\n\t\taddFinalIds(normalizer, final(0), final(0));\n\t\tassert.throws(\n\t\t\t() => normalizer.registerFinalIdBlock(final(1), 5, dummy),\n\t\t\t(e: Error) =>\n\t\t\t\tvalidateAssertionError(e, 'Final ID block should not be registered without an existing local range.')\n\t\t);\n\t});\n\n\tit('fails when registering final blocks with an invalid count', () => {\n\t\tconst normalizer = makeTestNormalizer();\n\t\tnormalizer.addLocalId();\n\t\tassert.throws(\n\t\t\t() => normalizer.registerFinalIdBlock(final(1), 0, dummy),\n\t\t\t(e: Error) => validateAssertionError(e, 'Malformed normalization block.')\n\t\t);\n\t\tassert.throws(\n\t\t\t() => normalizer.registerFinalIdBlock(final(1), -1, dummy),\n\t\t\t(e: Error) => validateAssertionError(e, 'Malformed normalization block.')\n\t\t);\n\t});\n\n\tit('fails when gaps in finals do not align with a local', () => {\n\t\t/**\n\t\t * Locals: [-1, -2, X, -4]\n\t\t * Finals: [ 0, 1, 2, 5]\n\t\t * Calling `addFinalIds` with first === last === 9 results in the following:\n\t\t * Locals: [-1, -2, X, -4, X]\n\t\t * Finals: [ 0, 1, 2, 5, 9]\n\t\t *\n\t\t * ^should fail\n\t\t */\n\t\tconst normalizer = makeTestNormalizer();\n\t\tnormalizer.addLocalId(); // -1\n\t\tnormalizer.addLocalId(); // -2\n\t\taddFinalIds(normalizer, final(0), final(2));\n\t\tnormalizer.addLocalId(); // -4\n\t\taddFinalIds(normalizer, final(5), final(5));\n\t\tassert.throws(\n\t\t\t() => addFinalIds(normalizer, final(9), final(9)),\n\t\t\t(e: Error) => validateAssertionError(e, 'Gaps in final space must align to a local.')\n\t\t);\n\t});\n\n\tit('aligns outstanding locals when a block of finals is registered', () => {\n\t\t/**\n\t\t * Locals: [-1, -2, -3, -4]\n\t\t * Finals: [ 0, X, X, X]\n\t\t * Calling `registerFinalIdBlock` with first === 3, count === 10 results in the following:\n\t\t * Locals: [-1, -2, -3, -4]\n\t\t * Finals: [ 0, 3, 4, 5]\n\t\t *\n\t\t */\n\t\tconst normalizer = makeTestNormalizer();\n\t\tconst local1 = normalizer.addLocalId(); // -1\n\t\tconst local2 = normalizer.addLocalId(); // -2\n\t\tconst local3 = normalizer.addLocalId(); // -3\n\t\tconst local4 = normalizer.addLocalId(); // -4\n\t\tnormalizer.addFinalIds(final(0), final(0), dummy);\n\n\t\tnormalizer.registerFinalIdBlock(final(3), 10, dummy);\n\t\tconst locals = [local1, local2, local3, local4];\n\t\tfor (let i = 1; i < locals.length; i++) {\n\t\t\tconst expectedFinal = final(i + 2);\n\t\t\tconst finalObj = normalizer.getFinalId(locals[i]);\n\t\t\tif (finalObj === undefined) {\n\t\t\t\texpect.fail();\n\t\t\t} else {\n\t\t\t\texpect(finalObj[0]).to.equal(expectedFinal);\n\t\t\t}\n\t\t}\n\n\t\tconst local5 = normalizer.addLocalId();\n\t\texpect(local5).to.equal(-5);\n\t\texpect(normalizer.getFinalId(local5)).to.be.undefined;\n\t});\n\n\tit('fails to align a block of finals when there are no outstanding local IDs', () => {\n\t\t/**\n\t\t * Locals: [-1, X]\n\t\t * Finals: [ 0, 1]\n\t\t * Calling `registerFinalIdBlock` with first === 5, count === 10 should fail.\n\t\t */\n\t\tconst normalizer = makeTestNormalizer();\n\t\tnormalizer.addLocalId(); // -1\n\t\tnormalizer.addFinalIds(final(0), final(1), dummy);\n\n\t\tassert.throws(\n\t\t\t() => normalizer.registerFinalIdBlock(final(5), 10, dummy),\n\t\t\t(e: Error) =>\n\t\t\t\tvalidateAssertionError(e, 'Final ID block should not be registered without an existing local range.')\n\t\t);\n\t});\n\n\tit('fails when attempting to normalize a local ID that was never registered', () => {\n\t\tconst normalizer = makeTestNormalizer();\n\t\tassert.throws(\n\t\t\t() => normalizer.getFinalId(-1 as LocalCompressedId),\n\t\t\t(e: Error) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.')\n\t\t);\n\t\tconst local = normalizer.addLocalId();\n\t\tconst secondLocal = (local - 1) as LocalCompressedId;\n\t\tassert.throws(\n\t\t\t() => normalizer.getFinalId(secondLocal),\n\t\t\t(e: Error) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.')\n\t\t);\n\t\taddFinalIds(normalizer, final(0), final(5));\n\t\tassert.throws(\n\t\t\t() => normalizer.getFinalId(secondLocal),\n\t\t\t(e: Error) => validateAssertionError(e, 'Local ID was never recorded with this normalizer.')\n\t\t);\n\t});\n\n\titWithNormalizer('can normalize IDs with only local forms', (normalizer) => {\n\t\tconst local1 = normalizer.addLocalId();\n\t\tconst local2 = normalizer.addLocalId();\n\t\tconst local3 = normalizer.addLocalId();\n\t\tconst local4 = normalizer.addLocalId();\n\t\texpect(local1).to.equal(-1);\n\t\texpect(local2).to.equal(-2);\n\t\texpect(local3).to.equal(-3);\n\t\texpect(local4).to.equal(-4);\n\t});\n\n\titWithNormalizer('can normalize IDs with trailing finals', (normalizer) => {\n\t\tnormalizer.addLocalId();\n\t\taddFinalIds(normalizer, final(0), final(1));\n\t\taddFinalIds(normalizer, final(2), final(3));\n\t\taddFinalIds(normalizer, final(4), final(10));\n\t});\n\n\titWithNormalizer('can normalize IDs with trailing locals', (normalizer) => {\n\t\tnormalizer.addLocalId();\n\t\taddFinalIds(normalizer, final(0), final(1));\n\t\tnormalizer.addLocalId();\n\t\tnormalizer.addLocalId();\n\t});\n\n\titWithNormalizer('can normalize IDs with a gap in final space', (normalizer) => {\n\t\tnormalizer.addLocalId();\n\t\tnormalizer.addLocalId();\n\t\tnormalizer.addLocalId();\n\t\taddFinalIds(normalizer, final(0), final(1));\n\t\taddFinalIds(normalizer, final(10), final(11));\n\t});\n\n\titWithNormalizer('can normalize IDs with and without corresponding local forms', (normalizer) => {\n\t\tnormalizer.addLocalId(); // -1\n\t\tnormalizer.addLocalId(); // -2\n\t\tnormalizer.addLocalId(); // -3\n\t\taddFinalIds(normalizer, final(0), final(3));\n\t\tnormalizer.addLocalId(); // -5\n\t\tnormalizer.addLocalId(); // -6\n\t\taddFinalIds(normalizer, final(4), final(5));\n\t\tnormalizer.addLocalId(); // -7\n\t\taddFinalIds(normalizer, final(8), final(9));\n\t\tnormalizer.addLocalId(); // -9\n\t\taddFinalIds(normalizer, final(14), final(15));\n\t\tnormalizer.addLocalId(); // -11\n\t\tnormalizer.addLocalId(); // -12\n\t});\n\n\titWithNormalizer('can get the last final ID', (normalizer) => {\n\t\tnormalizer.addLocalId(); // -1\n\t\tnormalizer.addLocalId(); // -2\n\t\tnormalizer.addLocalId(); // -3\n\t\tnormalizer.addLocalId(); // -4\n\t\texpect(normalizer.getLastFinalId()).to.be.undefined;\n\t\taddFinalIds(normalizer, final(0), final(1));\n\t\texpect(normalizer.getLastFinalId()).to.equal(1);\n\t\taddFinalIds(normalizer, final(2), final(2));\n\t\texpect(normalizer.getLastFinalId()).to.equal(2);\n\t\taddFinalIds(normalizer, final(10), final(15));\n\t\texpect(normalizer.getLastFinalId()).to.equal(15);\n\t});\n\n\titWithNormalizer('can normalize IDs after fuzzed inputs', (normalizer) => {\n\t\tfuzzNormalizer(normalizer, 1000, 42);\n\t});\n});\n\ndescribe('SessionIdNormalizer Perf', () => {\n\tconst choiceCount = 1000;\n\tconst type = BenchmarkType.Measurement;\n\tlet normalizer: SessionIdNormalizer<DummyRange>;\n\tlet rand: IRandom;\n\tlet ids: SessionSpaceCompressedId[];\n\tlet finals: FinalCompressedId[];\n\tlet locals: LocalCompressedId[];\n\tlet localChoices: LocalCompressedId[];\n\tlet finalChoices: FinalCompressedId[];\n\tconst before = () => {\n\t\tnormalizer = new SessionIdNormalizer();\n\t\trand = fuzzNormalizer(normalizer, 10000, 3.14);\n\t\tids = [...normalizer];\n\t\tlocals = ids.filter<LocalCompressedId>((id): id is LocalCompressedId => isLocalId(id));\n\t\tfinals = ids.filter((id) => isFinalId(id)) as FinalCompressedId[];\n\t\tlocalChoices = [];\n\t\tfinalChoices = [];\n\t\tfor (let i = 0; i < choiceCount; i++) {\n\t\t\tlocalChoices.push(rand.pick(locals));\n\t\t\tfinalChoices.push(rand.pick(finals));\n\t\t}\n\t};\n\n\tlet localChoice = 0;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a local ID to a final ID`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tnormalizer.getFinalId(localChoices[localChoice++ % localChoices.length]);\n\t\t},\n\t});\n\n\tlet finalChoice = 0;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a final ID to session space`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tnormalizer.getSessionSpaceId(finalChoices[finalChoice++ % finalChoices.length]);\n\t\t},\n\t});\n});\n\nfunction itWithNormalizer(title: string, itFn: (normalizer: SessionIdNormalizer<DummyRange>) => void): void {\n\tit(title, () => {\n\t\tconst locals: (LocalCompressedId | undefined)[] = [];\n\t\tconst finals: (FinalCompressedId | undefined)[] = [];\n\t\tconst normalizer: SessionIdNormalizer<DummyRange> = makeNormalizerProxy(makeTestNormalizer(), locals, finals);\n\n\t\titFn(normalizer);\n\t\tconst allIds = [...normalizer];\n\t\tlet prevLocal: LocalCompressedId | undefined;\n\t\tlet prevFinal: FinalCompressedId | undefined;\n\t\tfor (let i = 0; i < locals.length && i < finals.length; i++) {\n\t\t\tconst localExpected = locals[i];\n\t\t\tconst finalExpected = finals[i];\n\t\t\t// local can be undefined in the case of eager final\n\t\t\t// final can be undefined in the case of trailing locals with no cluster\n\t\t\t// both should never occur\n\t\t\tassert(\n\t\t\t\t(localExpected !== undefined && isLocalId(localExpected)) ||\n\t\t\t\t\t(finalExpected !== undefined && isFinalId(finalExpected))\n\t\t\t);\n\t\t\tif (prevFinal !== undefined && finalExpected !== undefined) {\n\t\t\t\tassert(finalExpected > prevFinal);\n\t\t\t}\n\t\t\tif (prevLocal !== undefined && localExpected !== undefined) {\n\t\t\t\tassert(localExpected < prevLocal);\n\t\t\t}\n\t\t\tprevLocal = localExpected;\n\t\t\tprevFinal = finalExpected;\n\n\t\t\tconst sessionIdExpected = localExpected ?? finalExpected;\n\t\t\tconst sessionIdActualAll = allIds[i];\n\t\t\tconst sessionIdActualNormalized =\n\t\t\t\tfinalExpected === undefined ? localExpected : normalizer.getSessionSpaceId(finalExpected);\n\n\t\t\tif (finalExpected !== undefined) {\n\t\t\t\tconst creationIndex = normalizer.getCreationIndex(finalExpected);\n\t\t\t\texpect(creationIndex).to.equal(i);\n\t\t\t}\n\n\t\t\tconst idByIndex = normalizer.getIdByCreationIndex(i);\n\t\t\texpect(idByIndex).to.equal(localExpected ?? finalExpected);\n\n\t\t\tif (localExpected !== undefined) {\n\t\t\t\tconst normalized = normalizer.getFinalId(localExpected);\n\t\t\t\tif (normalized === undefined) {\n\t\t\t\t\texpect(finalExpected).to.be.undefined;\n\t\t\t\t} else {\n\t\t\t\t\tconst [opIdActualNormalized] = normalized;\n\t\t\t\t\texpect(opIdActualNormalized).to.equal(finalExpected);\n\t\t\t\t}\n\t\t\t}\n\t\t\texpect(sessionIdExpected).to.equal(sessionIdActualAll);\n\t\t\texpect(sessionIdActualAll).to.equal(sessionIdActualNormalized);\n\t\t}\n\t\texpect(normalizer.getLastFinalId()).to.equal(finals[finals.length - 1]);\n\t\tconst roundtripped = SessionIdNormalizer.deserialize(normalizer.serialize(), () => undefined);\n\t\texpect(roundtripped.equals(normalizer)).to.be.true;\n\t});\n}\n\nfunction addFinalIds(\n\tnormalizer: SessionIdNormalizer<DummyRange>,\n\tfirstFinal: FinalCompressedId,\n\tlastFinal: FinalCompressedId\n): void {\n\tnormalizer.addFinalIds(firstFinal, lastFinal, dummy);\n}\n\nfunction makeNormalizerProxy(\n\tnormalizer: SessionIdNormalizer<DummyRange>,\n\tlocals: (LocalCompressedId | undefined)[],\n\tfinals: (FinalCompressedId | undefined)[]\n): SessionIdNormalizer<DummyRange> {\n\treturn new Proxy<SessionIdNormalizer<DummyRange>>(normalizer, {\n\t\tget(target, property: keyof SessionIdNormalizer<DummyRange>) {\n\t\t\tif (typeof target[property] === 'function') {\n\t\t\t\tswitch (property) {\n\t\t\t\t\tcase 'addLocalId': {\n\t\t\t\t\t\treturn new Proxy(target[property], {\n\t\t\t\t\t\t\tapply: (func, thisArg, argumentsList) => {\n\t\t\t\t\t\t\t\tconst local = Reflect.apply(func, thisArg, argumentsList);\n\t\t\t\t\t\t\t\tif (locals.length > 0) {\n\t\t\t\t\t\t\t\t\tfor (let i = (locals[locals.length - 1] ?? fail()) - 1; i > local; i--) {\n\t\t\t\t\t\t\t\t\t\tlocals.push(undefined);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlocals.push(local);\n\t\t\t\t\t\t\t\treturn local;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcase 'addFinalIds': {\n\t\t\t\t\t\treturn new Proxy(target[property], {\n\t\t\t\t\t\t\tapply: (func, thisArg, argumentsList) => {\n\t\t\t\t\t\t\t\tconst firstFinal: FinalCompressedId = argumentsList[0];\n\t\t\t\t\t\t\t\tconst lastFinal: FinalCompressedId = argumentsList[1];\n\t\t\t\t\t\t\t\tfor (let i = firstFinal; i <= lastFinal; i++) {\n\t\t\t\t\t\t\t\t\tfinals.push(i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn Reflect.apply(func, thisArg, argumentsList);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcase 'registerFinalIdBlock': {\n\t\t\t\t\t\treturn new Proxy(target[property], {\n\t\t\t\t\t\t\tapply: (func, thisArg, argumentsList) => {\n\t\t\t\t\t\t\t\tconst firstFinal: FinalCompressedId = argumentsList[0];\n\t\t\t\t\t\t\t\tconst count: FinalCompressedId = argumentsList[1];\n\t\t\t\t\t\t\t\tconst usedFinals = Math.max(0, Math.min(locals.length - finals.length, count));\n\t\t\t\t\t\t\t\tfor (let i = firstFinal; i < usedFinals; i++) {\n\t\t\t\t\t\t\t\t\tfinals.push(i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn Reflect.apply(func, thisArg, argumentsList);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// No default\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Reflect.get(target, property);\n\t\t},\n\t});\n}\n\ntype DummyRange = undefined;\nconst dummy: DummyRange = undefined;\n\nfunction final(num: number): FinalCompressedId {\n\tassert(num >= 0);\n\treturn num as FinalCompressedId;\n}\n\nfunction makeTestNormalizer(): SessionIdNormalizer<DummyRange> {\n\treturn new SessionIdNormalizer<DummyRange>(true);\n}\n\ninterface AddLocalId {\n\ttype: 'addLocalId';\n}\n\ninterface AddFinalIds {\n\ttype: 'addFinalIds';\n\tfirst: FinalCompressedId;\n\tlast: FinalCompressedId;\n}\n\ntype Operation = AddLocalId | AddFinalIds;\n\ninterface FuzzTestState extends BaseFuzzTestState {\n\tnormalizer: SessionIdNormalizer<DummyRange>;\n\tprevWasLocal: boolean;\n\tcurrentLocal: number;\n\tcurrentFinal: number;\n\tlocals: (LocalCompressedId | undefined)[];\n\tfinals: (FinalCompressedId | undefined)[];\n}\n\nfunction makeOpGenerator(numOperations: number): Generator<Operation, FuzzTestState> {\n\tfunction addLocalIdGenerator(state: FuzzTestState): AddLocalId {\n\t\tconst { locals, finals, random } = state;\n\t\tstate.currentLocal =\n\t\t\tlocals.length < finals.length && random.bool()\n\t\t\t\t? -locals.length - (finals.length - locals.length) - 1\n\t\t\t\t: -locals.length - 1;\n\t\tstate.prevWasLocal = true;\n\t\treturn { type: 'addLocalId' };\n\t}\n\n\tfunction addFinalIdsGenerator(state: FuzzTestState): AddFinalIds {\n\t\tconst { locals, finals, random } = state;\n\t\tif (state.prevWasLocal && locals.length > finals.length && random.integer(1, 3) === 3) {\n\t\t\tstate.currentFinal += random.integer(1, 4);\n\t\t}\n\t\tconst lastFinal = state.currentFinal + random.integer(0, 10);\n\t\tconst addFinal: AddFinalIds = {\n\t\t\ttype: 'addFinalIds',\n\t\t\tfirst: final(state.currentFinal),\n\t\t\tlast: final(lastFinal),\n\t\t};\n\t\tstate.currentFinal = lastFinal + 1;\n\t\tstate.prevWasLocal = false;\n\t\treturn addFinal;\n\t}\n\n\treturn chain(\n\t\tgeneratorFromArray([{ type: 'addLocalId' }]),\n\t\ttake(\n\t\t\tnumOperations - 1,\n\t\t\tcreateWeightedGenerator<Operation, FuzzTestState>([\n\t\t\t\t[addLocalIdGenerator, 8],\n\t\t\t\t[addFinalIdsGenerator, 2],\n\t\t\t])\n\t\t)\n\t);\n}\n\nfunction fuzzNormalizer(\n\tnormalizerToFuzz: SessionIdNormalizer<DummyRange>,\n\tnumOperations: number,\n\tseed: number\n): IRandom {\n\tconst locals: (LocalCompressedId | undefined)[] = [];\n\tconst finals: (FinalCompressedId | undefined)[] = [];\n\tconst normalizer: SessionIdNormalizer<DummyRange> = makeNormalizerProxy(normalizerToFuzz, locals, finals);\n\n\tconst initialState: FuzzTestState = {\n\t\trandom: makeRandom(seed),\n\t\tcurrentLocal: -1,\n\t\tcurrentFinal: 0,\n\t\tprevWasLocal: false,\n\t\tnormalizer,\n\t\tlocals,\n\t\tfinals,\n\t};\n\n\tperformFuzzActions(\n\t\tmakeOpGenerator(numOperations),\n\t\t{\n\t\t\taddLocalId: (state) => {\n\t\t\t\tstate.normalizer.addLocalId();\n\t\t\t\treturn state;\n\t\t\t},\n\t\t\taddFinalIds: (state, { first, last }) => {\n\t\t\t\tstate.normalizer.addFinalIds(first, last, dummy);\n\t\t\t\treturn state;\n\t\t\t},\n\t\t},\n\t\tinitialState\n\t);\n\treturn initialState.random;\n}\n"]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- export {};
6
- //# sourceMappingURL=SharedTree.fuzz.tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.fuzz.tests.d.ts","sourceRoot":"","sources":["../../src/test/SharedTree.fuzz.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,9 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { runSharedTreeFuzzTests } from './fuzz/SharedTreeFuzzTests.js';
6
- describe('SharedTree', () => {
7
- runSharedTreeFuzzTests('Fuzz tests with local server');
8
- });
9
- //# sourceMappingURL=SharedTree.fuzz.tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.fuzz.tests.js","sourceRoot":"","sources":["../../src/test/SharedTree.fuzz.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { runSharedTreeFuzzTests } from './fuzz/SharedTreeFuzzTests.js';\n\ndescribe('SharedTree', () => {\n\trunSharedTreeFuzzTests('Fuzz tests with local server');\n});\n"]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- export {};
6
- //# sourceMappingURL=SharedTree.perf.tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.perf.tests.d.ts","sourceRoot":"","sources":["../../src/test/SharedTree.perf.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,39 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { strict as assert } from 'assert';
6
- import { benchmark, BenchmarkType } from '@fluid-tools/benchmark';
7
- import { runSummaryLoadPerfTests } from './utilities/SummaryLoadPerfTests.js';
8
- import { createStableEdits, setUpTestSharedTree } from './utilities/TestUtilities.js';
9
- describe('SharedTree Perf', () => {
10
- let tree;
11
- let containerRuntimeFactory;
12
- for (const count of [1, 1000]) {
13
- benchmark({
14
- type: BenchmarkType.Measurement,
15
- title: `get currentView with ${count} sequenced edit(s)`,
16
- before: () => {
17
- ({ tree, containerRuntimeFactory } = setUpTestSharedTree({ localMode: false }));
18
- const edits = createStableEdits(count, tree);
19
- for (let i = 0; i < count; i++) {
20
- tree.applyEditInternal(edits[i].changes);
21
- }
22
- containerRuntimeFactory.processAllMessages();
23
- const editLog = tree.edits;
24
- assert(editLog.numberOfSequencedEdits === count);
25
- assert(editLog.numberOfLocalEdits === 0);
26
- },
27
- benchmarkFn: () => {
28
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
29
- tree.currentView;
30
- },
31
- after: () => {
32
- tree = undefined;
33
- containerRuntimeFactory = undefined;
34
- },
35
- });
36
- }
37
- runSummaryLoadPerfTests('Summary Load');
38
- });
39
- //# sourceMappingURL=SharedTree.perf.tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.perf.tests.js","sourceRoot":"","sources":["../../src/test/SharedTree.perf.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIlE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEtF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,IAAI,IAA4B,CAAC;IACjC,IAAI,uBAAgE,CAAC;IACrE,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,IAAK,CAAC,EAAE;QAC/B,SAAS,CAAC;YACT,IAAI,EAAE,aAAa,CAAC,WAAW;YAC/B,KAAK,EAAE,wBAAwB,KAAK,oBAAoB;YACxD,MAAM,EAAE,GAAG,EAAE;gBACZ,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAEhF,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACzC;gBAED,uBAAuB,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAgB,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,sBAAsB,KAAK,KAAK,CAAC,CAAC;gBACjD,MAAM,CAAC,OAAO,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,oEAAoE;gBACpE,IAAK,CAAC,WAAW,CAAC;YACnB,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACX,IAAI,GAAG,SAAS,CAAC;gBACjB,uBAAuB,GAAG,SAAS,CAAC;YACrC,CAAC;SACD,CAAC,CAAC;KACH;IAED,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from 'assert';\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { MockContainerRuntimeFactory } from '@fluidframework/test-runtime-utils';\nimport { EditLog } from '../EditLog.js';\nimport { SharedTree } from '../SharedTree.js';\nimport { runSummaryLoadPerfTests } from './utilities/SummaryLoadPerfTests.js';\nimport { createStableEdits, setUpTestSharedTree } from './utilities/TestUtilities.js';\n\ndescribe('SharedTree Perf', () => {\n\tlet tree: SharedTree | undefined;\n\tlet containerRuntimeFactory: MockContainerRuntimeFactory | undefined;\n\tfor (const count of [1, 1_000]) {\n\t\tbenchmark({\n\t\t\ttype: BenchmarkType.Measurement,\n\t\t\ttitle: `get currentView with ${count} sequenced edit(s)`,\n\t\t\tbefore: () => {\n\t\t\t\t({ tree, containerRuntimeFactory } = setUpTestSharedTree({ localMode: false }));\n\n\t\t\t\tconst edits = createStableEdits(count, tree);\n\t\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\t\ttree.applyEditInternal(edits[i].changes);\n\t\t\t\t}\n\n\t\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\t\tconst editLog = tree.edits as EditLog;\n\t\t\t\tassert(editLog.numberOfSequencedEdits === count);\n\t\t\t\tassert(editLog.numberOfLocalEdits === 0);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ttree!.currentView;\n\t\t\t},\n\t\t\tafter: () => {\n\t\t\t\ttree = undefined;\n\t\t\t\tcontainerRuntimeFactory = undefined;\n\t\t\t},\n\t\t});\n\t}\n\n\trunSummaryLoadPerfTests('Summary Load');\n});\n"]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- export {};
6
- //# sourceMappingURL=SharedTree.tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.tests.d.ts","sourceRoot":"","sources":["../../src/test/SharedTree.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,22 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { WriteFormat } from '../persisted-types/index.js';
6
- import { setUpTestSharedTree, setUpLocalServerTestSharedTree } from './utilities/TestUtilities.js';
7
- import { runSharedTreeOperationsTests } from './utilities/SharedTreeTests.js';
8
- import { runSummarySizeTests } from './utilities/SummarySizeTests.js';
9
- import { runPendingLocalStateTests } from './utilities/PendingLocalStateTests.js';
10
- import { runSharedTreeVersioningTests } from './utilities/SharedTreeVersioningTests.js';
11
- import { runSummaryTests } from './Summary.tests.js';
12
- describe('SharedTree', () => {
13
- describe('Operations', () => {
14
- runSharedTreeOperationsTests('using write format 0.0.2', WriteFormat.v0_0_2, setUpTestSharedTree);
15
- runSharedTreeOperationsTests('using write format 0.1.1', WriteFormat.v0_1_1, setUpTestSharedTree);
16
- });
17
- runSummaryTests('Summaries');
18
- runSummarySizeTests('Summary size', setUpLocalServerTestSharedTree);
19
- runPendingLocalStateTests('Stashed ops', setUpLocalServerTestSharedTree);
20
- runSharedTreeVersioningTests('Versioning', setUpTestSharedTree);
21
- });
22
- //# sourceMappingURL=SharedTree.tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedTree.tests.js","sourceRoot":"","sources":["../../src/test/SharedTree.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,4BAA4B,CAAC,0BAA0B,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAClG,4BAA4B,CAAC,0BAA0B,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7B,mBAAmB,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IACpE,yBAAyB,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IACzE,4BAA4B,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { WriteFormat } from '../persisted-types/index.js';\nimport { setUpTestSharedTree, setUpLocalServerTestSharedTree } from './utilities/TestUtilities.js';\nimport { runSharedTreeOperationsTests } from './utilities/SharedTreeTests.js';\nimport { runSummarySizeTests } from './utilities/SummarySizeTests.js';\nimport { runPendingLocalStateTests } from './utilities/PendingLocalStateTests.js';\nimport { runSharedTreeVersioningTests } from './utilities/SharedTreeVersioningTests.js';\nimport { runSummaryTests } from './Summary.tests.js';\n\ndescribe('SharedTree', () => {\n\tdescribe('Operations', () => {\n\t\trunSharedTreeOperationsTests('using write format 0.0.2', WriteFormat.v0_0_2, setUpTestSharedTree);\n\t\trunSharedTreeOperationsTests('using write format 0.1.1', WriteFormat.v0_1_1, setUpTestSharedTree);\n\t});\n\trunSummaryTests('Summaries');\n\trunSummarySizeTests('Summary size', setUpLocalServerTestSharedTree);\n\trunPendingLocalStateTests('Stashed ops', setUpLocalServerTestSharedTree);\n\trunSharedTreeVersioningTests('Versioning', setUpTestSharedTree);\n});\n"]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- export {};
6
- //# sourceMappingURL=StringInterner.tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringInterner.tests.d.ts","sourceRoot":"","sources":["../../src/test/StringInterner.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG"}