@fluidframework/tree 2.115.0 → 2.116.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 (325) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +5 -3
  3. package/api-report/tree.alpha.api.md +4 -2
  4. package/api-report/tree.beta.api.md +1 -1
  5. package/api-report/tree.legacy.beta.api.md +1 -1
  6. package/dist/codec/codec.d.ts +6 -6
  7. package/dist/codec/codec.d.ts.map +1 -1
  8. package/dist/codec/codec.js +3 -3
  9. package/dist/codec/codec.js.map +1 -1
  10. package/dist/codec/versioned/codec.d.ts +3 -3
  11. package/dist/codec/versioned/codec.d.ts.map +1 -1
  12. package/dist/codec/versioned/codec.js.map +1 -1
  13. package/dist/core/forest/editableForest.d.ts +2 -0
  14. package/dist/core/forest/editableForest.d.ts.map +1 -1
  15. package/dist/core/forest/editableForest.js.map +1 -1
  16. package/dist/core/index.d.ts +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +2 -2
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/tree/index.d.ts +1 -1
  21. package/dist/core/tree/index.d.ts.map +1 -1
  22. package/dist/core/tree/index.js +2 -2
  23. package/dist/core/tree/index.js.map +1 -1
  24. package/dist/core/tree/visitorUtils.d.ts +24 -3
  25. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  26. package/dist/core/tree/visitorUtils.js +24 -6
  27. package/dist/core/tree/visitorUtils.js.map +1 -1
  28. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +30 -6
  29. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/chunkedForest.js +146 -54
  31. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  32. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts +2 -1
  33. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -1
  34. package/dist/feature-libraries/comparison-forest/comparisonForest.js +87 -70
  35. package/dist/feature-libraries/comparison-forest/comparisonForest.js.map +1 -1
  36. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  37. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +5 -0
  38. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  39. package/dist/feature-libraries/forest-summary/forestSummarizer.js +127 -107
  40. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  41. package/dist/feature-libraries/forest-summary/summaryTypes.d.ts +2 -2
  42. package/dist/feature-libraries/forest-summary/summaryTypes.d.ts.map +1 -1
  43. package/dist/feature-libraries/forest-summary/summaryTypes.js.map +1 -1
  44. package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  45. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  46. package/dist/feature-libraries/modular-schema/invert.js +1 -1
  47. package/dist/feature-libraries/modular-schema/invert.js.map +1 -1
  48. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  49. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +2 -11
  50. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  51. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts +11 -16
  52. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -1
  53. package/dist/feature-libraries/modular-schema/modularChangeUtils.js +10 -3
  54. package/dist/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -1
  55. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  56. package/dist/feature-libraries/object-forest/objectForest.js +34 -13
  57. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  58. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  59. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  60. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  61. package/dist/feature-libraries/sequence-field/rebase.js +1 -1
  62. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  63. package/dist/feature-libraries/sequence-field/utils.js +1 -1
  64. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  65. package/dist/packageVersion.d.ts +1 -1
  66. package/dist/packageVersion.js +1 -1
  67. package/dist/packageVersion.js.map +1 -1
  68. package/dist/shared-tree/independentView.d.ts.map +1 -1
  69. package/dist/shared-tree/independentView.js +2 -4
  70. package/dist/shared-tree/independentView.js.map +1 -1
  71. package/dist/shared-tree/sharedTree.d.ts +30 -5
  72. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  73. package/dist/shared-tree/sharedTree.js +8 -8
  74. package/dist/shared-tree/sharedTree.js.map +1 -1
  75. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  76. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  77. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  78. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +25 -1
  79. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  80. package/dist/shared-tree/sharedTreeChangeEnricher.js +24 -0
  81. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  82. package/dist/shared-tree/treeCheckout.d.ts +21 -10
  83. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  84. package/dist/shared-tree/treeCheckout.js +48 -16
  85. package/dist/shared-tree/treeCheckout.js.map +1 -1
  86. package/dist/shared-tree-core/branchCommitEnricher.d.ts +2 -1
  87. package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  88. package/dist/shared-tree-core/branchCommitEnricher.js +3 -2
  89. package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
  90. package/dist/shared-tree-core/changeEnricher.d.ts +3 -2
  91. package/dist/shared-tree-core/changeEnricher.d.ts.map +1 -1
  92. package/dist/shared-tree-core/changeEnricher.js.map +1 -1
  93. package/dist/shared-tree-core/defaultResubmitMachine.d.ts +9 -1
  94. package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  95. package/dist/shared-tree-core/defaultResubmitMachine.js +7 -2
  96. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  97. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  98. package/dist/shared-tree-core/editManager.js +2 -2
  99. package/dist/shared-tree-core/editManager.js.map +1 -1
  100. package/dist/shared-tree-core/editManagerCodecs.d.ts +2 -2
  101. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  102. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  103. package/dist/shared-tree-core/editManagerSummarizer.d.ts +2 -2
  104. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  105. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  106. package/dist/shared-tree-core/messageCodecs.d.ts +2 -2
  107. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  108. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  109. package/dist/shared-tree-core/sharedTreeCore.d.ts +11 -2
  110. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  111. package/dist/shared-tree-core/sharedTreeCore.js +11 -8
  112. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  113. package/dist/shared-tree-core/summaryTypes.d.ts +2 -2
  114. package/dist/shared-tree-core/summaryTypes.d.ts.map +1 -1
  115. package/dist/shared-tree-core/summaryTypes.js.map +1 -1
  116. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +1 -1
  117. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  118. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  119. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  120. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  121. package/dist/simple-tree/api/treeChangeEvents.d.ts +5 -1
  122. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  123. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  124. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  125. package/dist/simple-tree/node-kinds/array/arrayNode.js +10 -0
  126. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  127. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  128. package/dist/simple-tree/node-kinds/map/mapNode.js +19 -2
  129. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  130. package/dist/tableSchema.d.ts +1 -1
  131. package/dist/tableSchema.js +1 -1
  132. package/dist/tableSchema.js.map +1 -1
  133. package/dist/treeFactory.d.ts.map +1 -1
  134. package/dist/treeFactory.js +1 -1
  135. package/dist/treeFactory.js.map +1 -1
  136. package/dist/util/breakable.d.ts +14 -2
  137. package/dist/util/breakable.d.ts.map +1 -1
  138. package/dist/util/breakable.js +9 -1
  139. package/dist/util/breakable.js.map +1 -1
  140. package/dist/util/compressedIds.d.ts +2 -2
  141. package/dist/util/compressedIds.d.ts.map +1 -1
  142. package/dist/util/compressedIds.js +1 -6
  143. package/dist/util/compressedIds.js.map +1 -1
  144. package/lib/codec/codec.d.ts +6 -6
  145. package/lib/codec/codec.d.ts.map +1 -1
  146. package/lib/codec/codec.js +3 -3
  147. package/lib/codec/codec.js.map +1 -1
  148. package/lib/codec/versioned/codec.d.ts +3 -3
  149. package/lib/codec/versioned/codec.d.ts.map +1 -1
  150. package/lib/codec/versioned/codec.js.map +1 -1
  151. package/lib/core/forest/editableForest.d.ts +2 -0
  152. package/lib/core/forest/editableForest.d.ts.map +1 -1
  153. package/lib/core/forest/editableForest.js.map +1 -1
  154. package/lib/core/index.d.ts +1 -1
  155. package/lib/core/index.d.ts.map +1 -1
  156. package/lib/core/index.js +1 -1
  157. package/lib/core/index.js.map +1 -1
  158. package/lib/core/tree/index.d.ts +1 -1
  159. package/lib/core/tree/index.d.ts.map +1 -1
  160. package/lib/core/tree/index.js +1 -1
  161. package/lib/core/tree/index.js.map +1 -1
  162. package/lib/core/tree/visitorUtils.d.ts +24 -3
  163. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  164. package/lib/core/tree/visitorUtils.js +22 -4
  165. package/lib/core/tree/visitorUtils.js.map +1 -1
  166. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +30 -6
  167. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  168. package/lib/feature-libraries/chunked-forest/chunkedForest.js +146 -56
  169. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  170. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts +2 -1
  171. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -1
  172. package/lib/feature-libraries/comparison-forest/comparisonForest.js +88 -70
  173. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -1
  174. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  175. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +5 -0
  176. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  177. package/lib/feature-libraries/forest-summary/forestSummarizer.js +129 -108
  178. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  179. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts +2 -2
  180. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts.map +1 -1
  181. package/lib/feature-libraries/forest-summary/summaryTypes.js.map +1 -1
  182. package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  183. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  184. package/lib/feature-libraries/modular-schema/invert.js +2 -2
  185. package/lib/feature-libraries/modular-schema/invert.js.map +1 -1
  186. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  187. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +2 -11
  188. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  189. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +11 -16
  190. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -1
  191. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +10 -3
  192. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -1
  193. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  194. package/lib/feature-libraries/object-forest/objectForest.js +35 -14
  195. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  196. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  197. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  198. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  199. package/lib/feature-libraries/sequence-field/rebase.js +2 -2
  200. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  201. package/lib/feature-libraries/sequence-field/utils.js +1 -1
  202. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  203. package/lib/packageVersion.d.ts +1 -1
  204. package/lib/packageVersion.js +1 -1
  205. package/lib/packageVersion.js.map +1 -1
  206. package/lib/shared-tree/independentView.d.ts.map +1 -1
  207. package/lib/shared-tree/independentView.js +3 -5
  208. package/lib/shared-tree/independentView.js.map +1 -1
  209. package/lib/shared-tree/sharedTree.d.ts +30 -5
  210. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  211. package/lib/shared-tree/sharedTree.js +8 -8
  212. package/lib/shared-tree/sharedTree.js.map +1 -1
  213. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  214. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  215. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  216. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +25 -1
  217. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  218. package/lib/shared-tree/sharedTreeChangeEnricher.js +24 -0
  219. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  220. package/lib/shared-tree/treeCheckout.d.ts +21 -10
  221. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  222. package/lib/shared-tree/treeCheckout.js +48 -16
  223. package/lib/shared-tree/treeCheckout.js.map +1 -1
  224. package/lib/shared-tree-core/branchCommitEnricher.d.ts +2 -1
  225. package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  226. package/lib/shared-tree-core/branchCommitEnricher.js +3 -2
  227. package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
  228. package/lib/shared-tree-core/changeEnricher.d.ts +3 -2
  229. package/lib/shared-tree-core/changeEnricher.d.ts.map +1 -1
  230. package/lib/shared-tree-core/changeEnricher.js.map +1 -1
  231. package/lib/shared-tree-core/defaultResubmitMachine.d.ts +9 -1
  232. package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  233. package/lib/shared-tree-core/defaultResubmitMachine.js +7 -2
  234. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  235. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  236. package/lib/shared-tree-core/editManager.js +2 -2
  237. package/lib/shared-tree-core/editManager.js.map +1 -1
  238. package/lib/shared-tree-core/editManagerCodecs.d.ts +2 -2
  239. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  240. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  241. package/lib/shared-tree-core/editManagerSummarizer.d.ts +2 -2
  242. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  243. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  244. package/lib/shared-tree-core/messageCodecs.d.ts +2 -2
  245. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  246. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  247. package/lib/shared-tree-core/sharedTreeCore.d.ts +11 -2
  248. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  249. package/lib/shared-tree-core/sharedTreeCore.js +11 -8
  250. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  251. package/lib/shared-tree-core/summaryTypes.d.ts +2 -2
  252. package/lib/shared-tree-core/summaryTypes.d.ts.map +1 -1
  253. package/lib/shared-tree-core/summaryTypes.js.map +1 -1
  254. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +1 -1
  255. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  256. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  257. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  258. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  259. package/lib/simple-tree/api/treeChangeEvents.d.ts +5 -1
  260. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  261. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  262. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  263. package/lib/simple-tree/node-kinds/array/arrayNode.js +10 -0
  264. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  265. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  266. package/lib/simple-tree/node-kinds/map/mapNode.js +19 -2
  267. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  268. package/lib/tableSchema.d.ts +1 -1
  269. package/lib/tableSchema.js +1 -1
  270. package/lib/tableSchema.js.map +1 -1
  271. package/lib/treeFactory.d.ts.map +1 -1
  272. package/lib/treeFactory.js +1 -1
  273. package/lib/treeFactory.js.map +1 -1
  274. package/lib/util/breakable.d.ts +14 -2
  275. package/lib/util/breakable.d.ts.map +1 -1
  276. package/lib/util/breakable.js +9 -1
  277. package/lib/util/breakable.js.map +1 -1
  278. package/lib/util/compressedIds.d.ts +2 -2
  279. package/lib/util/compressedIds.d.ts.map +1 -1
  280. package/lib/util/compressedIds.js +1 -6
  281. package/lib/util/compressedIds.js.map +1 -1
  282. package/package.json +27 -27
  283. package/src/codec/codec.ts +7 -7
  284. package/src/codec/versioned/codec.ts +5 -5
  285. package/src/core/forest/editableForest.ts +2 -0
  286. package/src/core/index.ts +1 -1
  287. package/src/core/tree/index.ts +1 -1
  288. package/src/core/tree/visitorUtils.ts +37 -12
  289. package/src/feature-libraries/chunked-forest/chunkedForest.ts +214 -59
  290. package/src/feature-libraries/comparison-forest/comparisonForest.ts +6 -1
  291. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +2 -2
  292. package/src/feature-libraries/forest-summary/forestSummarizer.ts +10 -0
  293. package/src/feature-libraries/forest-summary/summaryTypes.ts +2 -2
  294. package/src/feature-libraries/indexing/anchorTreeIndex.ts +1 -1
  295. package/src/feature-libraries/modular-schema/invert.ts +2 -2
  296. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2 -23
  297. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +12 -21
  298. package/src/feature-libraries/object-forest/objectForest.ts +48 -14
  299. package/src/feature-libraries/schema-index/schemaSummarizer.ts +3 -3
  300. package/src/feature-libraries/sequence-field/rebase.ts +2 -2
  301. package/src/feature-libraries/sequence-field/utils.ts +1 -1
  302. package/src/packageVersion.ts +1 -1
  303. package/src/shared-tree/independentView.ts +5 -12
  304. package/src/shared-tree/sharedTree.ts +41 -10
  305. package/src/shared-tree/sharedTreeChangeCodecs.ts +2 -2
  306. package/src/shared-tree/sharedTreeChangeEnricher.ts +25 -1
  307. package/src/shared-tree/treeCheckout.ts +45 -16
  308. package/src/shared-tree-core/branchCommitEnricher.ts +6 -2
  309. package/src/shared-tree-core/changeEnricher.ts +7 -2
  310. package/src/shared-tree-core/defaultResubmitMachine.ts +5 -0
  311. package/src/shared-tree-core/editManager.ts +2 -4
  312. package/src/shared-tree-core/editManagerCodecs.ts +2 -2
  313. package/src/shared-tree-core/editManagerSummarizer.ts +3 -3
  314. package/src/shared-tree-core/messageCodecs.ts +2 -2
  315. package/src/shared-tree-core/sharedTreeCore.ts +29 -11
  316. package/src/shared-tree-core/summaryTypes.ts +2 -2
  317. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +1 -1
  318. package/src/simple-tree/api/storedSchema.ts +2 -2
  319. package/src/simple-tree/api/treeChangeEvents.ts +5 -1
  320. package/src/simple-tree/node-kinds/array/arrayNode.ts +15 -0
  321. package/src/simple-tree/node-kinds/map/mapNode.ts +23 -2
  322. package/src/tableSchema.ts +1 -1
  323. package/src/treeFactory.ts +0 -1
  324. package/src/util/breakable.ts +9 -1
  325. package/src/util/compressedIds.ts +7 -13
@@ -1 +1 @@
1
- {"version":3,"file":"sharedTreeChangeEnricher.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTreeChangeEnricher.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 { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport {\n\ttype DeltaDetachedNodeId,\n\ttype DetachedFieldIndex,\n\ttype IEditableForest,\n\ttype IForestSubscription,\n\ttype ReadOnlyDetachedFieldIndex,\n\ttype TaggedChange,\n\ttype TreeStoredSchemaRepository,\n\ttagChange,\n\tvisitDelta,\n} from \"../core/index.js\";\nimport {\n\ttype TreeChunk,\n\tchunkTree,\n\tdefaultChunkPolicy,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers as updateDataChangeRefreshers,\n} from \"../feature-libraries/index.js\";\nimport { disposeSymbol } from \"../util/index.js\";\n\nimport { updateRefreshers } from \"./sharedTreeChangeFamily.js\";\nimport type { SharedTreeChange } from \"./sharedTreeChangeTypes.js\";\n\ninterface BorrowedState {\n\treadonly forest: IForestSubscription;\n\treadonly removedRoots: ReadOnlyDetachedFieldIndex;\n}\n\ninterface OwnedState {\n\treadonly forest: IEditableForest;\n\treadonly removedRoots: DetachedFieldIndex;\n}\n\nexport class SharedTreeChangeEnricher {\n\t/**\n\t * Queue of changes to be applied before querying for detached roots.\n\t */\n\tprivate readonly changeQueue: (() => TaggedChange<SharedTreeChange>)[] = [];\n\tprotected readonly borrowed: BorrowedState;\n\tprotected owned?: OwnedState;\n\n\t/**\n\t * @param borrowedForest - The state based on which to enrich changes.\n\t * Not owned by the constructed instance.\n\t * @param schema - The schema that corresponds to the forest.\n\t * @param borrowedRemovedRoots - The set of removed roots based on which to enrich changes.\n\t * Not owned by the constructed instance.\n\t * @param idCompressor - The id compressor to use when chunking trees.\n\t * @param onEnrichCommit - Optional callback invoked whenever a commit is enriched.\n\t * @param onRefresherAdded - Optional callback invoked whenever a refresher is added during enrichment.\n\t * @param onForkState - Optional callback invoked whenever the enricher forks its state.\n\t * @param onApplyChange - Optional callback invoked whenever a change is applied to the owned state.\n\t */\n\tpublic constructor(\n\t\tborrowedForest: IForestSubscription,\n\t\tborrowedRemovedRoots: ReadOnlyDetachedFieldIndex,\n\t\tprivate readonly schema: TreeStoredSchemaRepository,\n\t\tprivate readonly idCompressor?: IIdCompressor,\n\t\tprivate readonly onEnrichCommit?: () => void,\n\t\tprivate readonly onRefresherAdded?: () => void,\n\t\tprivate readonly onForkState?: () => void,\n\t\tprivate readonly onApplyChange?: () => void,\n\t) {\n\t\tthis.borrowed = {\n\t\t\tforest: borrowedForest,\n\t\t\tremovedRoots: borrowedRemovedRoots,\n\t\t};\n\t}\n\n\tpublic enrich(change: SharedTreeChange): SharedTreeChange {\n\t\tthis.onEnrichCommit?.();\n\t\treturn updateRefreshers(\n\t\t\tchange,\n\t\t\t(id) => this.getDetachedRoot(id),\n\t\t\trelevantRemovedRoots,\n\t\t\tupdateDataChangeRefreshers,\n\t\t);\n\t}\n\n\tprivate getDetachedRoot(id: DeltaDetachedNodeId): TreeChunk | undefined {\n\t\tthis.purgeChangeQueue();\n\t\tconst state = this.owned ?? this.borrowed;\n\t\tconst root = state.removedRoots.tryGetEntry(id);\n\t\tif (root !== undefined) {\n\t\t\tconst cursor = state.forest.getCursorAboveDetachedFields();\n\t\t\tconst parentField = state.removedRoots.toFieldKey(root);\n\t\t\tcursor.enterField(parentField);\n\t\t\tcursor.enterNode(0);\n\t\t\tthis.onRefresherAdded?.();\n\t\t\treturn chunkTree(cursor, {\n\t\t\t\tpolicy: defaultChunkPolicy,\n\t\t\t\tidCompressor: this.idCompressor,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic enqueueChange(\n\t\tchange: TaggedChange<SharedTreeChange> | (() => TaggedChange<SharedTreeChange>),\n\t): void {\n\t\tthis.changeQueue.push(typeof change === \"function\" ? change : () => change);\n\t}\n\n\tprivate purgeChangeQueue(): void {\n\t\tif (this.changeQueue.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.owned === undefined) {\n\t\t\tthis.onForkState?.();\n\t\t\tthis.owned = {\n\t\t\t\tforest: this.borrowed.forest.clone(this.schema),\n\t\t\t\tremovedRoots: this.borrowed.removedRoots.clone(),\n\t\t\t};\n\t\t}\n\t\tfor (const getChange of this.changeQueue) {\n\t\t\tconst { change, revision } = getChange();\n\t\t\tthis.onApplyChange?.();\n\t\t\tfor (const dataOrSchemaChange of change.changes) {\n\t\t\t\tconst type = dataOrSchemaChange.type;\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"data\": {\n\t\t\t\t\t\tconst delta = intoDelta(tagChange(dataOrSchemaChange.innerChange, revision));\n\t\t\t\t\t\tconst visitor = this.owned.forest.acquireVisitor();\n\t\t\t\t\t\tvisitDelta(delta, visitor, this.owned.removedRoots, revision);\n\t\t\t\t\t\tvisitor.free();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"schema\": {\n\t\t\t\t\t\t// This enricher doesn't need to maintain schema information.\n\t\t\t\t\t\t// Note that the refreshers being generated through `updateChangeEnrichments` will be encoded using\n\t\t\t\t\t\t// the schema that was used in the input context of the data changeset these refreshers are on.\n\t\t\t\t\t\t// See the encoding logic in SharedTreeCore for details.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tunreachableCase(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.changeQueue.length = 0;\n\t}\n\n\tpublic [disposeSymbol](): void {\n\t\t// TODO: in the future, forest and/or its AnchorSet may require disposal.\n\t}\n}\n"]}
1
+ {"version":3,"file":"sharedTreeChangeEnricher.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTreeChangeEnricher.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 { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport {\n\ttype DeltaDetachedNodeId,\n\ttype DetachedFieldIndex,\n\ttype IEditableForest,\n\ttype IForestSubscription,\n\ttype ReadOnlyDetachedFieldIndex,\n\ttype TaggedChange,\n\ttype TreeStoredSchemaRepository,\n\ttagChange,\n\tvisitDelta,\n} from \"../core/index.js\";\nimport {\n\ttype TreeChunk,\n\tchunkTree,\n\tdefaultChunkPolicy,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers as updateDataChangeRefreshers,\n} from \"../feature-libraries/index.js\";\nimport { disposeSymbol } from \"../util/index.js\";\n\nimport { updateRefreshers } from \"./sharedTreeChangeFamily.js\";\nimport type { SharedTreeChange } from \"./sharedTreeChangeTypes.js\";\n\ninterface BorrowedState {\n\treadonly forest: IForestSubscription;\n\treadonly removedRoots: ReadOnlyDetachedFieldIndex;\n}\n\ninterface OwnedState {\n\treadonly forest: IEditableForest;\n\treadonly removedRoots: DetachedFieldIndex;\n}\n\n/**\n * A helper for enriching `SharedTreeChange`s.\n * It lazily forks the borrowed state (which it does not mutate) and lazily applies {@link enqueueChange|changes} to the forked state when {@link enrich|commit enrichment} requires access to detached root data.\n */\nexport class SharedTreeChangeEnricher {\n\t/**\n\t * Queue of changes to be applied before querying for detached roots.\n\t */\n\tprivate readonly changeQueue: (() => TaggedChange<SharedTreeChange>)[] = [];\n\tprotected readonly borrowed: BorrowedState;\n\tprotected owned?: OwnedState;\n\n\t/**\n\t * @param borrowedForest - The state based on which to enrich changes.\n\t * Not owned by the constructed instance.\n\t * @param schema - The schema that corresponds to the forest.\n\t * @param borrowedRemovedRoots - The set of removed roots based on which to enrich changes.\n\t * Not owned by the constructed instance.\n\t * @param idCompressor - The id compressor to use when chunking trees.\n\t * @param onEnrichCommit - Optional callback invoked whenever a commit is enriched.\n\t * @param onRefresherAdded - Optional callback invoked whenever a refresher is added during enrichment.\n\t * @param onForkState - Optional callback invoked whenever the enricher forks its state.\n\t * @param onApplyChange - Optional callback invoked whenever a change is applied to the owned state.\n\t */\n\tpublic constructor(\n\t\tborrowedForest: IForestSubscription,\n\t\tborrowedRemovedRoots: ReadOnlyDetachedFieldIndex,\n\t\tprivate readonly schema: TreeStoredSchemaRepository,\n\t\tprivate readonly idCompressor?: IIdCompressor,\n\t\tprivate readonly onEnrichCommit?: () => void,\n\t\tprivate readonly onRefresherAdded?: () => void,\n\t\tprivate readonly onForkState?: () => void,\n\t\tprivate readonly onApplyChange?: () => void,\n\t) {\n\t\tthis.borrowed = {\n\t\t\tforest: borrowedForest,\n\t\t\tremovedRoots: borrowedRemovedRoots,\n\t\t};\n\t}\n\n\t/**\n\t * Enriches a change.\n\t * @param change - The change to enrich (not mutated)\n\t * @returns An enriched copy of the given `change`.\n\t * @remarks\n\t * Invoking this method will flush {@link enqueueChange|queued} changes if the enrichment process requires reading detached roots from the forest.\n\t */\n\tpublic enrich(change: SharedTreeChange): SharedTreeChange {\n\t\tthis.onEnrichCommit?.();\n\t\treturn updateRefreshers(\n\t\t\tchange,\n\t\t\t(id) => this.getDetachedRoot(id),\n\t\t\trelevantRemovedRoots,\n\t\t\tupdateDataChangeRefreshers,\n\t\t);\n\t}\n\n\tprivate getDetachedRoot(id: DeltaDetachedNodeId): TreeChunk | undefined {\n\t\tthis.purgeChangeQueue();\n\t\tconst state = this.owned ?? this.borrowed;\n\t\tconst root = state.removedRoots.tryGetEntry(id);\n\t\tif (root !== undefined) {\n\t\t\tconst cursor = state.forest.getCursorAboveDetachedFields();\n\t\t\tconst parentField = state.removedRoots.toFieldKey(root);\n\t\t\tcursor.enterField(parentField);\n\t\t\tcursor.enterNode(0);\n\t\t\tthis.onRefresherAdded?.();\n\t\t\treturn chunkTree(cursor, {\n\t\t\t\tpolicy: defaultChunkPolicy,\n\t\t\t\tidCompressor: this.idCompressor,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Enqueues a change to be applied before reading detached root data during the next {@link enrich|enrichment}.\n\t * @param change - The change to apply or a function that returns the change to apply.\n\t * If a function is provided, it will be invoked during a future call to {@link enrich} (if at all).\n\t */\n\tpublic enqueueChange(\n\t\tchange: TaggedChange<SharedTreeChange> | (() => TaggedChange<SharedTreeChange>),\n\t): void {\n\t\tthis.changeQueue.push(typeof change === \"function\" ? change : () => change);\n\t}\n\n\t/**\n\t * Flushes all {@link enqueueChange|queued} changes by applying the data changes to a forked forest and detached field index.\n\t * @remarks\n\t * This validates that the data changes are valid.\n\t */\n\tpublic purgeChangeQueue(): void {\n\t\tif (this.changeQueue.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.owned === undefined) {\n\t\t\tthis.onForkState?.();\n\t\t\tthis.owned = {\n\t\t\t\tforest: this.borrowed.forest.clone(this.schema),\n\t\t\t\tremovedRoots: this.borrowed.removedRoots.clone(),\n\t\t\t};\n\t\t}\n\t\tfor (const getChange of this.changeQueue) {\n\t\t\tconst { change, revision } = getChange();\n\t\t\tthis.onApplyChange?.();\n\t\t\tfor (const dataOrSchemaChange of change.changes) {\n\t\t\t\tconst type = dataOrSchemaChange.type;\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"data\": {\n\t\t\t\t\t\tconst delta = intoDelta(tagChange(dataOrSchemaChange.innerChange, revision));\n\t\t\t\t\t\tconst visitor = this.owned.forest.acquireVisitor();\n\t\t\t\t\t\tvisitDelta(delta, visitor, this.owned.removedRoots, revision);\n\t\t\t\t\t\tvisitor.free();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"schema\": {\n\t\t\t\t\t\t// This enricher doesn't need to maintain schema information.\n\t\t\t\t\t\t// Note that the refreshers being generated through `updateChangeEnrichments` will be encoded using\n\t\t\t\t\t\t// the schema that was used in the input context of the data changeset these refreshers are on.\n\t\t\t\t\t\t// See the encoding logic in SharedTreeCore for details.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tunreachableCase(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.changeQueue.length = 0;\n\t}\n\n\t/**\n\t * Dispose of this object and its resources.\n\t */\n\tpublic [disposeSymbol](): void {\n\t\t// TODO: in the future, forest and/or its AnchorSet may require disposal.\n\t}\n}\n"]}
@@ -4,7 +4,6 @@
4
4
  */
5
5
  import type { Listenable } from "@fluidframework/core-interfaces/internal";
6
6
  import type { IIdCompressor } from "@fluidframework/id-compressor";
7
- import { type TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
7
  import { type CodecWriteOptions } from "../codec/index.js";
9
8
  import { type Anchor, type AnchorLocator, type AnchorNode, type AnchorSetRootEvents, type ChangeFamily, type DetachedFieldIndex, type IEditableForest, type IForestSubscription, type JsonableTree, type RevisionTag, type RevisionTagCodec, type TreeStoredSchema, TreeStoredSchemaRepository, type TreeStoredSchemaSubscription, type RevertibleAlphaFactory, type GraphCommit, type ChangeMetadata, type ReadOnlyDetachedFieldIndex, type TaggedChange } from "../core/index.js";
10
9
  import { type FieldBatchCodec, type TreeCompressionStrategy } from "../feature-libraries/index.js";
@@ -141,8 +140,6 @@ export declare function createTreeCheckout(idCompressor: IIdCompressor, mintRevi
141
140
  fieldBatchCodec?: FieldBatchCodec;
142
141
  removedRoots?: DetachedFieldIndex;
143
142
  chunkCompressionStrategy?: TreeCompressionStrategy;
144
- logger?: TelemetryLoggerExt;
145
- breaker?: Breakable;
146
143
  codecOptions?: Partial<CodecWriteOptions>;
147
144
  }): TreeCheckout;
148
145
  /**
@@ -184,11 +181,27 @@ export declare class TreeCheckout implements ITreeCheckout {
184
181
  private readonly revisionTagCodec;
185
182
  private readonly idCompressor;
186
183
  private readonly _removedRoots;
187
- /** Optional logger for telemetry. */
188
- private readonly logger?;
189
- readonly breaker: Breakable;
190
184
  readonly disposeForksAfterTransaction: boolean;
191
185
  disposed: boolean;
186
+ /**
187
+ * Logger for telemetry events related to this checkout.
188
+ * @remarks
189
+ * This logger is provided by the {@link Breakable} passed to the constructor, and may be `undefined` if no logger was provided.
190
+ * See the explanation on {@link Breakable.logger} for why this pattern makes sense.
191
+ */
192
+ private get logger();
193
+ /**
194
+ * The breaker for this checkout.
195
+ * @remarks
196
+ * As the forest is part of the mutable state of the checkout,
197
+ * we want to be broken if it is broken, so we use the forest's breaker as our own.
198
+ *
199
+ * This does mean that if something goes wrong in the checkout, we break the forest,
200
+ * which is not strictly necessary, but may be desirable as if something is wrong with the checkout,
201
+ * while the forest might be internally consistent, it likely doesn't contain the correct content
202
+ * (since the checkout is keeping it up to date properly anymore).
203
+ */
204
+ get breaker(): Breakable;
192
205
  private editLock;
193
206
  /**
194
207
  * Root of the mutable label tree tracking transaction nesting.
@@ -229,9 +242,7 @@ export declare class TreeCheckout implements ITreeCheckout {
229
242
  events: Listenable<CheckoutEvents>;
230
243
  constructor(branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange, SharedTreeChangeProcessingContext>,
231
244
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
232
- isSharedBranch: boolean, changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange, SharedTreeChangeProcessingContext>, storedSchema: TreeStoredSchemaRepository, forest: IEditableForest, mintRevisionTag: () => RevisionTag, revisionTagCodec: RevisionTagCodec, idCompressor: IIdCompressor, _removedRoots?: DetachedFieldIndex,
233
- /** Optional logger for telemetry. */
234
- logger?: TelemetryLoggerExt | undefined, breaker?: Breakable, disposeForksAfterTransaction?: boolean);
245
+ isSharedBranch: boolean, changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange, SharedTreeChangeProcessingContext>, storedSchema: TreeStoredSchemaRepository, forest: IEditableForest, mintRevisionTag: () => RevisionTag, revisionTagCodec: RevisionTagCodec, idCompressor: IIdCompressor, _removedRoots?: DetachedFieldIndex, disposeForksAfterTransaction?: boolean);
235
246
  /**
236
247
  * Pushes a new label node for a transaction nesting level.
237
248
  *
@@ -375,7 +386,7 @@ export declare class TreeCheckout implements ITreeCheckout {
375
386
  forks: number;
376
387
  applied: number;
377
388
  };
378
- enrich(context: GraphCommit<SharedTreeChange>, changes: readonly TaggedChange<SharedTreeChange>[]): SharedTreeChange[];
389
+ enrich(context: GraphCommit<SharedTreeChange>, changes: readonly TaggedChange<SharedTreeChange>[], forceValidation: boolean): SharedTreeChange[];
379
390
  get mainBranch(): SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange, SharedTreeChangeProcessingContext>;
380
391
  }
381
392
  //# sourceMappingURL=treeCheckout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
@@ -69,9 +69,8 @@ function buildLabelsSet(labelTreeNode) {
69
69
  * and functionality required to implement {@link ITreeCheckout}.
70
70
  */
71
71
  function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, args) {
72
- const breaker = args?.breaker ?? new index_js_6.Breakable("TreeCheckout", args?.logger);
73
72
  const schema = args?.schema ?? new index_js_2.TreeStoredSchemaRepository();
74
- const forest = args?.forest ?? (0, index_js_3.buildForest)(breaker, schema);
73
+ const forest = args?.forest ?? (0, index_js_3.buildForest)(new index_js_6.Breakable("TreeCheckout"), schema);
75
74
  const defaultCodecOptions = {
76
75
  jsonValidator: index_js_1.FormatValidatorNoOp,
77
76
  minVersionForCollab: index_js_1.FluidClientVersion.v2_0,
@@ -86,7 +85,7 @@ function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, arg
86
85
  change: changeFamily.rebaser.compose([]),
87
86
  revision: "root",
88
87
  }, changeFamily, () => idCompressor.generateCompressedId());
89
- return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, breaker);
88
+ return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots);
90
89
  }
91
90
  exports.createTreeCheckout = createTreeCheckout;
92
91
  /**
@@ -176,14 +175,36 @@ let TreeCheckout = (() => {
176
175
  let _applyChange_decorators;
177
176
  let _runTransaction_decorators;
178
177
  let _runTransactionAsync_decorators;
178
+ let _withCombinedVisitor_decorators;
179
179
  let _viewWith_decorators;
180
180
  let _fork_decorators;
181
181
  return _a = class TreeCheckout {
182
+ /**
183
+ * Logger for telemetry events related to this checkout.
184
+ * @remarks
185
+ * This logger is provided by the {@link Breakable} passed to the constructor, and may be `undefined` if no logger was provided.
186
+ * See the explanation on {@link Breakable.logger} for why this pattern makes sense.
187
+ */
188
+ get logger() {
189
+ return this.breaker.logger;
190
+ }
191
+ /**
192
+ * The breaker for this checkout.
193
+ * @remarks
194
+ * As the forest is part of the mutable state of the checkout,
195
+ * we want to be broken if it is broken, so we use the forest's breaker as our own.
196
+ *
197
+ * This does mean that if something goes wrong in the checkout, we break the forest,
198
+ * which is not strictly necessary, but may be desirable as if something is wrong with the checkout,
199
+ * while the forest might be internally consistent, it likely doesn't contain the correct content
200
+ * (since the checkout is keeping it up to date properly anymore).
201
+ */
202
+ get breaker() {
203
+ return this.forest.breaker;
204
+ }
182
205
  constructor(branch,
183
206
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
184
- isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, _removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair"),
185
- /** Optional logger for telemetry. */
186
- logger, breaker = new index_js_6.Breakable("TreeCheckout", logger), disposeForksAfterTransaction = true) {
207
+ isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, _removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair"), disposeForksAfterTransaction = true) {
187
208
  this.isSharedBranch = (tslib_1.__runInitializers(this, _instanceExtraInitializers), isSharedBranch);
188
209
  this.changeFamily = changeFamily;
189
210
  this.storedSchema = storedSchema;
@@ -192,8 +213,6 @@ let TreeCheckout = (() => {
192
213
  this.revisionTagCodec = revisionTagCodec;
193
214
  this.idCompressor = idCompressor;
194
215
  this._removedRoots = _removedRoots;
195
- this.logger = logger;
196
- this.breaker = breaker;
197
216
  this.disposeForksAfterTransaction = disposeForksAfterTransaction;
198
217
  this.disposed = false;
199
218
  this.views = new Set();
@@ -674,7 +693,7 @@ let TreeCheckout = (() => {
674
693
  if (usageError !== undefined) {
675
694
  throw new internal_2.UsageError(usageError);
676
695
  }
677
- (0, internal_1.assert)(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
696
+ (0, internal_1.fail)(0x911 /* Invalid operation on a disposed TreeCheckout */);
678
697
  }
679
698
  }
680
699
  /**
@@ -767,7 +786,7 @@ let TreeCheckout = (() => {
767
786
  const storedSchema = this.storedSchema.clone();
768
787
  const forkBreaker = new index_js_6.Breakable("TreeCheckout", this.logger);
769
788
  const forest = this.forest.clone(storedSchema, forkBreaker);
770
- const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone(), this.logger, forkBreaker);
789
+ const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone());
771
790
  tslib_1.__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
772
791
  return checkout;
773
792
  }
@@ -849,7 +868,7 @@ let TreeCheckout = (() => {
849
868
  this.editLock.checkUnlocked("Disposing a view");
850
869
  this[index_js_6.disposeSymbol]();
851
870
  }
852
- [(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), _exportVerbose_decorators = [index_js_6.throwIfBroken], _applySerializedChange_decorators = [index_js_6.throwIfBroken], _applyChange_decorators = [index_js_6.throwIfBroken], _runTransaction_decorators = [index_js_6.breakingMethod], _runTransactionAsync_decorators = [index_js_6.breakingMethod], _viewWith_decorators = [index_js_6.throwIfBroken], _fork_decorators = [index_js_6.throwIfBroken], index_js_6.disposeSymbol)]() {
871
+ [(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), _exportVerbose_decorators = [index_js_6.throwIfBroken], _applySerializedChange_decorators = [index_js_6.throwIfBroken], _applyChange_decorators = [index_js_6.throwIfBroken], _runTransaction_decorators = [index_js_6.breakingMethod], _runTransactionAsync_decorators = [index_js_6.breakingMethod], _withCombinedVisitor_decorators = [index_js_6.breakingMethod], _viewWith_decorators = [index_js_6.throwIfBroken], _fork_decorators = [index_js_6.throwIfBroken], index_js_6.disposeSymbol)]() {
853
872
  this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
854
873
  this.disposed = true;
855
874
  tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.dispose();
@@ -1007,7 +1026,7 @@ let TreeCheckout = (() => {
1007
1026
  getEnrichmentStats() {
1008
1027
  return { ...this.enrichmentStats };
1009
1028
  }
1010
- enrich(context, changes) {
1029
+ enrich(context, changes, forceValidation) {
1011
1030
  if (!(0, index_js_6.hasSome)(changes)) {
1012
1031
  return [];
1013
1032
  }
@@ -1023,13 +1042,25 @@ let TreeCheckout = (() => {
1023
1042
  return (0, index_js_2.makeAnonChange)(diff);
1024
1043
  });
1025
1044
  }
1026
- const enriched = [];
1045
+ const enrichedChanges = [];
1027
1046
  for (const change of changes) {
1028
- enriched.push(enricher.enrich(change.change));
1029
- enricher.enqueueChange(change);
1047
+ const enrichedChange = enricher.enrich(change.change);
1048
+ enrichedChanges.push(enrichedChange);
1049
+ // We could either apply the original or the enriched change: either should allow subsequent changes to be enriched correctly.
1050
+ // We choose to apply the enriched change in order to more closely replicate what a peer will experience (assuming no concurrent changes).
1051
+ // This makes it more likely that we'll detect a bug in the enrichment logic.
1052
+ // Note that enqueueing the change does not guarantee that it will be applied unless `forceValidation` is enabled.
1053
+ enricher.enqueueChange((0, index_js_2.tagChange)(enrichedChange, change.revision));
1054
+ }
1055
+ if (forceValidation) {
1056
+ // Ensure that all changes can be applied successfully.
1057
+ // This is useful for catching bugs in the enrichment logic and in the rebasing logic that may have been involved in producing the changes.
1058
+ // Note that we cannot guarantee that the enriched change will be applied successfully even in the absence of concurrent changes,
1059
+ // because the checkout state we are applying this enriched change to was derived from the state of the checkout, which may be different from that of a peer.
1060
+ enricher.purgeChangeQueue();
1030
1061
  }
1031
1062
  enricher[index_js_6.disposeSymbol]();
1032
- return enriched;
1063
+ return enrichedChanges;
1033
1064
  }
1034
1065
  get mainBranch() {
1035
1066
  return tslib_1.__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch;
@@ -1042,6 +1073,7 @@ let TreeCheckout = (() => {
1042
1073
  tslib_1.__esDecorate(_a, null, _applyChange_decorators, { kind: "method", name: "applyChange", static: false, private: false, access: { has: obj => "applyChange" in obj, get: obj => obj.applyChange }, metadata: _metadata }, null, _instanceExtraInitializers);
1043
1074
  tslib_1.__esDecorate(_a, null, _runTransaction_decorators, { kind: "method", name: "runTransaction", static: false, private: false, access: { has: obj => "runTransaction" in obj, get: obj => obj.runTransaction }, metadata: _metadata }, null, _instanceExtraInitializers);
1044
1075
  tslib_1.__esDecorate(_a, null, _runTransactionAsync_decorators, { kind: "method", name: "runTransactionAsync", static: false, private: false, access: { has: obj => "runTransactionAsync" in obj, get: obj => obj.runTransactionAsync }, metadata: _metadata }, null, _instanceExtraInitializers);
1076
+ tslib_1.__esDecorate(_a, null, _withCombinedVisitor_decorators, { kind: "method", name: "withCombinedVisitor", static: false, private: false, access: { has: obj => "withCombinedVisitor" in obj, get: obj => obj.withCombinedVisitor }, metadata: _metadata }, null, _instanceExtraInitializers);
1045
1077
  tslib_1.__esDecorate(_a, null, _viewWith_decorators, { kind: "method", name: "viewWith", static: false, private: false, access: { has: obj => "viewWith" in obj, get: obj => obj.viewWith }, metadata: _metadata }, null, _instanceExtraInitializers);
1046
1078
  tslib_1.__esDecorate(_a, null, _fork_decorators, { kind: "method", name: "fork", static: false, private: false, access: { has: obj => "fork" in obj, get: obj => obj.fork }, metadata: _metadata }, null, _instanceExtraInitializers);
1047
1079
  if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });