@fluidframework/tree 2.116.0-416006 → 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 (327) 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.d.ts.map +1 -1
  67. package/dist/packageVersion.js +1 -1
  68. package/dist/packageVersion.js.map +1 -1
  69. package/dist/shared-tree/independentView.d.ts.map +1 -1
  70. package/dist/shared-tree/independentView.js +2 -4
  71. package/dist/shared-tree/independentView.js.map +1 -1
  72. package/dist/shared-tree/sharedTree.d.ts +30 -5
  73. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  74. package/dist/shared-tree/sharedTree.js +8 -8
  75. package/dist/shared-tree/sharedTree.js.map +1 -1
  76. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  77. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  78. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  79. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +25 -1
  80. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  81. package/dist/shared-tree/sharedTreeChangeEnricher.js +24 -0
  82. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  83. package/dist/shared-tree/treeCheckout.d.ts +21 -10
  84. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  85. package/dist/shared-tree/treeCheckout.js +48 -16
  86. package/dist/shared-tree/treeCheckout.js.map +1 -1
  87. package/dist/shared-tree-core/branchCommitEnricher.d.ts +2 -1
  88. package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  89. package/dist/shared-tree-core/branchCommitEnricher.js +3 -2
  90. package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
  91. package/dist/shared-tree-core/changeEnricher.d.ts +3 -2
  92. package/dist/shared-tree-core/changeEnricher.d.ts.map +1 -1
  93. package/dist/shared-tree-core/changeEnricher.js.map +1 -1
  94. package/dist/shared-tree-core/defaultResubmitMachine.d.ts +9 -1
  95. package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  96. package/dist/shared-tree-core/defaultResubmitMachine.js +7 -2
  97. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  98. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  99. package/dist/shared-tree-core/editManager.js +2 -2
  100. package/dist/shared-tree-core/editManager.js.map +1 -1
  101. package/dist/shared-tree-core/editManagerCodecs.d.ts +2 -2
  102. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  103. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  104. package/dist/shared-tree-core/editManagerSummarizer.d.ts +2 -2
  105. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  106. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  107. package/dist/shared-tree-core/messageCodecs.d.ts +2 -2
  108. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  109. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  110. package/dist/shared-tree-core/sharedTreeCore.d.ts +11 -2
  111. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  112. package/dist/shared-tree-core/sharedTreeCore.js +11 -8
  113. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  114. package/dist/shared-tree-core/summaryTypes.d.ts +2 -2
  115. package/dist/shared-tree-core/summaryTypes.d.ts.map +1 -1
  116. package/dist/shared-tree-core/summaryTypes.js.map +1 -1
  117. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +1 -1
  118. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  119. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  120. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  121. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  122. package/dist/simple-tree/api/treeChangeEvents.d.ts +5 -1
  123. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  124. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  125. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  126. package/dist/simple-tree/node-kinds/array/arrayNode.js +10 -0
  127. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  128. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  129. package/dist/simple-tree/node-kinds/map/mapNode.js +19 -2
  130. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  131. package/dist/tableSchema.d.ts +1 -1
  132. package/dist/tableSchema.js +1 -1
  133. package/dist/tableSchema.js.map +1 -1
  134. package/dist/treeFactory.d.ts.map +1 -1
  135. package/dist/treeFactory.js +1 -1
  136. package/dist/treeFactory.js.map +1 -1
  137. package/dist/util/breakable.d.ts +14 -2
  138. package/dist/util/breakable.d.ts.map +1 -1
  139. package/dist/util/breakable.js +9 -1
  140. package/dist/util/breakable.js.map +1 -1
  141. package/dist/util/compressedIds.d.ts +2 -2
  142. package/dist/util/compressedIds.d.ts.map +1 -1
  143. package/dist/util/compressedIds.js +1 -6
  144. package/dist/util/compressedIds.js.map +1 -1
  145. package/lib/codec/codec.d.ts +6 -6
  146. package/lib/codec/codec.d.ts.map +1 -1
  147. package/lib/codec/codec.js +3 -3
  148. package/lib/codec/codec.js.map +1 -1
  149. package/lib/codec/versioned/codec.d.ts +3 -3
  150. package/lib/codec/versioned/codec.d.ts.map +1 -1
  151. package/lib/codec/versioned/codec.js.map +1 -1
  152. package/lib/core/forest/editableForest.d.ts +2 -0
  153. package/lib/core/forest/editableForest.d.ts.map +1 -1
  154. package/lib/core/forest/editableForest.js.map +1 -1
  155. package/lib/core/index.d.ts +1 -1
  156. package/lib/core/index.d.ts.map +1 -1
  157. package/lib/core/index.js +1 -1
  158. package/lib/core/index.js.map +1 -1
  159. package/lib/core/tree/index.d.ts +1 -1
  160. package/lib/core/tree/index.d.ts.map +1 -1
  161. package/lib/core/tree/index.js +1 -1
  162. package/lib/core/tree/index.js.map +1 -1
  163. package/lib/core/tree/visitorUtils.d.ts +24 -3
  164. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  165. package/lib/core/tree/visitorUtils.js +22 -4
  166. package/lib/core/tree/visitorUtils.js.map +1 -1
  167. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +30 -6
  168. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  169. package/lib/feature-libraries/chunked-forest/chunkedForest.js +146 -56
  170. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  171. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts +2 -1
  172. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -1
  173. package/lib/feature-libraries/comparison-forest/comparisonForest.js +88 -70
  174. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -1
  175. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  176. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +5 -0
  177. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  178. package/lib/feature-libraries/forest-summary/forestSummarizer.js +129 -108
  179. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  180. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts +2 -2
  181. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts.map +1 -1
  182. package/lib/feature-libraries/forest-summary/summaryTypes.js.map +1 -1
  183. package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  184. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  185. package/lib/feature-libraries/modular-schema/invert.js +2 -2
  186. package/lib/feature-libraries/modular-schema/invert.js.map +1 -1
  187. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  188. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +2 -11
  189. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  190. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +11 -16
  191. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -1
  192. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +10 -3
  193. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -1
  194. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  195. package/lib/feature-libraries/object-forest/objectForest.js +35 -14
  196. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  197. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  198. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  199. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  200. package/lib/feature-libraries/sequence-field/rebase.js +2 -2
  201. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  202. package/lib/feature-libraries/sequence-field/utils.js +1 -1
  203. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  204. package/lib/packageVersion.d.ts +1 -1
  205. package/lib/packageVersion.d.ts.map +1 -1
  206. package/lib/packageVersion.js +1 -1
  207. package/lib/packageVersion.js.map +1 -1
  208. package/lib/shared-tree/independentView.d.ts.map +1 -1
  209. package/lib/shared-tree/independentView.js +3 -5
  210. package/lib/shared-tree/independentView.js.map +1 -1
  211. package/lib/shared-tree/sharedTree.d.ts +30 -5
  212. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  213. package/lib/shared-tree/sharedTree.js +8 -8
  214. package/lib/shared-tree/sharedTree.js.map +1 -1
  215. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  216. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  217. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  218. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +25 -1
  219. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  220. package/lib/shared-tree/sharedTreeChangeEnricher.js +24 -0
  221. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  222. package/lib/shared-tree/treeCheckout.d.ts +21 -10
  223. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  224. package/lib/shared-tree/treeCheckout.js +48 -16
  225. package/lib/shared-tree/treeCheckout.js.map +1 -1
  226. package/lib/shared-tree-core/branchCommitEnricher.d.ts +2 -1
  227. package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  228. package/lib/shared-tree-core/branchCommitEnricher.js +3 -2
  229. package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
  230. package/lib/shared-tree-core/changeEnricher.d.ts +3 -2
  231. package/lib/shared-tree-core/changeEnricher.d.ts.map +1 -1
  232. package/lib/shared-tree-core/changeEnricher.js.map +1 -1
  233. package/lib/shared-tree-core/defaultResubmitMachine.d.ts +9 -1
  234. package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  235. package/lib/shared-tree-core/defaultResubmitMachine.js +7 -2
  236. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  237. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  238. package/lib/shared-tree-core/editManager.js +2 -2
  239. package/lib/shared-tree-core/editManager.js.map +1 -1
  240. package/lib/shared-tree-core/editManagerCodecs.d.ts +2 -2
  241. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  242. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  243. package/lib/shared-tree-core/editManagerSummarizer.d.ts +2 -2
  244. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  245. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  246. package/lib/shared-tree-core/messageCodecs.d.ts +2 -2
  247. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  248. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  249. package/lib/shared-tree-core/sharedTreeCore.d.ts +11 -2
  250. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  251. package/lib/shared-tree-core/sharedTreeCore.js +11 -8
  252. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  253. package/lib/shared-tree-core/summaryTypes.d.ts +2 -2
  254. package/lib/shared-tree-core/summaryTypes.d.ts.map +1 -1
  255. package/lib/shared-tree-core/summaryTypes.js.map +1 -1
  256. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +1 -1
  257. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  258. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  259. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  260. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  261. package/lib/simple-tree/api/treeChangeEvents.d.ts +5 -1
  262. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  263. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  264. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  265. package/lib/simple-tree/node-kinds/array/arrayNode.js +10 -0
  266. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  267. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  268. package/lib/simple-tree/node-kinds/map/mapNode.js +19 -2
  269. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  270. package/lib/tableSchema.d.ts +1 -1
  271. package/lib/tableSchema.js +1 -1
  272. package/lib/tableSchema.js.map +1 -1
  273. package/lib/treeFactory.d.ts.map +1 -1
  274. package/lib/treeFactory.js +1 -1
  275. package/lib/treeFactory.js.map +1 -1
  276. package/lib/util/breakable.d.ts +14 -2
  277. package/lib/util/breakable.d.ts.map +1 -1
  278. package/lib/util/breakable.js +9 -1
  279. package/lib/util/breakable.js.map +1 -1
  280. package/lib/util/compressedIds.d.ts +2 -2
  281. package/lib/util/compressedIds.d.ts.map +1 -1
  282. package/lib/util/compressedIds.js +1 -6
  283. package/lib/util/compressedIds.js.map +1 -1
  284. package/package.json +27 -27
  285. package/src/codec/codec.ts +7 -7
  286. package/src/codec/versioned/codec.ts +5 -5
  287. package/src/core/forest/editableForest.ts +2 -0
  288. package/src/core/index.ts +1 -1
  289. package/src/core/tree/index.ts +1 -1
  290. package/src/core/tree/visitorUtils.ts +37 -12
  291. package/src/feature-libraries/chunked-forest/chunkedForest.ts +214 -59
  292. package/src/feature-libraries/comparison-forest/comparisonForest.ts +6 -1
  293. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +2 -2
  294. package/src/feature-libraries/forest-summary/forestSummarizer.ts +10 -0
  295. package/src/feature-libraries/forest-summary/summaryTypes.ts +2 -2
  296. package/src/feature-libraries/indexing/anchorTreeIndex.ts +1 -1
  297. package/src/feature-libraries/modular-schema/invert.ts +2 -2
  298. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2 -23
  299. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +12 -21
  300. package/src/feature-libraries/object-forest/objectForest.ts +48 -14
  301. package/src/feature-libraries/schema-index/schemaSummarizer.ts +3 -3
  302. package/src/feature-libraries/sequence-field/rebase.ts +2 -2
  303. package/src/feature-libraries/sequence-field/utils.ts +1 -1
  304. package/src/packageVersion.ts +1 -1
  305. package/src/shared-tree/independentView.ts +5 -12
  306. package/src/shared-tree/sharedTree.ts +41 -10
  307. package/src/shared-tree/sharedTreeChangeCodecs.ts +2 -2
  308. package/src/shared-tree/sharedTreeChangeEnricher.ts +25 -1
  309. package/src/shared-tree/treeCheckout.ts +45 -16
  310. package/src/shared-tree-core/branchCommitEnricher.ts +6 -2
  311. package/src/shared-tree-core/changeEnricher.ts +7 -2
  312. package/src/shared-tree-core/defaultResubmitMachine.ts +5 -0
  313. package/src/shared-tree-core/editManager.ts +2 -4
  314. package/src/shared-tree-core/editManagerCodecs.ts +2 -2
  315. package/src/shared-tree-core/editManagerSummarizer.ts +3 -3
  316. package/src/shared-tree-core/messageCodecs.ts +2 -2
  317. package/src/shared-tree-core/sharedTreeCore.ts +29 -11
  318. package/src/shared-tree-core/summaryTypes.ts +2 -2
  319. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +1 -1
  320. package/src/simple-tree/api/storedSchema.ts +2 -2
  321. package/src/simple-tree/api/treeChangeEvents.ts +5 -1
  322. package/src/simple-tree/node-kinds/array/arrayNode.ts +15 -0
  323. package/src/simple-tree/node-kinds/map/mapNode.ts +23 -2
  324. package/src/tableSchema.ts +1 -1
  325. package/src/treeFactory.ts +0 -1
  326. package/src/util/breakable.ts +9 -1
  327. 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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"}
@@ -66,9 +66,8 @@ function buildLabelsSet(labelTreeNode) {
66
66
  * and functionality required to implement {@link ITreeCheckout}.
67
67
  */
68
68
  export function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, args) {
69
- const breaker = args?.breaker ?? new Breakable("TreeCheckout", args?.logger);
70
69
  const schema = args?.schema ?? new TreeStoredSchemaRepository();
71
- const forest = args?.forest ?? buildForest(breaker, schema);
70
+ const forest = args?.forest ?? buildForest(new Breakable("TreeCheckout"), schema);
72
71
  const defaultCodecOptions = {
73
72
  jsonValidator: FormatValidatorNoOp,
74
73
  minVersionForCollab: FluidClientVersion.v2_0,
@@ -83,7 +82,7 @@ export function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCod
83
82
  change: changeFamily.rebaser.compose([]),
84
83
  revision: "root",
85
84
  }, changeFamily, () => idCompressor.generateCompressedId());
86
- return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, breaker);
85
+ return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots);
87
86
  }
88
87
  /**
89
88
  * Get the {@link TreeCheckout} associated with a given {@link TreeBranch}.
@@ -170,14 +169,36 @@ let TreeCheckout = (() => {
170
169
  let _applyChange_decorators;
171
170
  let _runTransaction_decorators;
172
171
  let _runTransactionAsync_decorators;
172
+ let _withCombinedVisitor_decorators;
173
173
  let _viewWith_decorators;
174
174
  let _fork_decorators;
175
175
  return _a = class TreeCheckout {
176
+ /**
177
+ * Logger for telemetry events related to this checkout.
178
+ * @remarks
179
+ * This logger is provided by the {@link Breakable} passed to the constructor, and may be `undefined` if no logger was provided.
180
+ * See the explanation on {@link Breakable.logger} for why this pattern makes sense.
181
+ */
182
+ get logger() {
183
+ return this.breaker.logger;
184
+ }
185
+ /**
186
+ * The breaker for this checkout.
187
+ * @remarks
188
+ * As the forest is part of the mutable state of the checkout,
189
+ * we want to be broken if it is broken, so we use the forest's breaker as our own.
190
+ *
191
+ * This does mean that if something goes wrong in the checkout, we break the forest,
192
+ * which is not strictly necessary, but may be desirable as if something is wrong with the checkout,
193
+ * while the forest might be internally consistent, it likely doesn't contain the correct content
194
+ * (since the checkout is keeping it up to date properly anymore).
195
+ */
196
+ get breaker() {
197
+ return this.forest.breaker;
198
+ }
176
199
  constructor(branch,
177
200
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
178
- isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, _removedRoots = makeDetachedFieldIndex("repair"),
179
- /** Optional logger for telemetry. */
180
- logger, breaker = new Breakable("TreeCheckout", logger), disposeForksAfterTransaction = true) {
201
+ isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, _removedRoots = makeDetachedFieldIndex("repair"), disposeForksAfterTransaction = true) {
181
202
  this.isSharedBranch = (__runInitializers(this, _instanceExtraInitializers), isSharedBranch);
182
203
  this.changeFamily = changeFamily;
183
204
  this.storedSchema = storedSchema;
@@ -186,8 +207,6 @@ let TreeCheckout = (() => {
186
207
  this.revisionTagCodec = revisionTagCodec;
187
208
  this.idCompressor = idCompressor;
188
209
  this._removedRoots = _removedRoots;
189
- this.logger = logger;
190
- this.breaker = breaker;
191
210
  this.disposeForksAfterTransaction = disposeForksAfterTransaction;
192
211
  this.disposed = false;
193
212
  this.views = new Set();
@@ -668,7 +687,7 @@ let TreeCheckout = (() => {
668
687
  if (usageError !== undefined) {
669
688
  throw new UsageError(usageError);
670
689
  }
671
- assert(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
690
+ fail(0x911 /* Invalid operation on a disposed TreeCheckout */);
672
691
  }
673
692
  }
674
693
  /**
@@ -761,7 +780,7 @@ let TreeCheckout = (() => {
761
780
  const storedSchema = this.storedSchema.clone();
762
781
  const forkBreaker = new Breakable("TreeCheckout", this.logger);
763
782
  const forest = this.forest.clone(storedSchema, forkBreaker);
764
- const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone(), this.logger, forkBreaker);
783
+ const checkout = new _a(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this._removedRoots.clone());
765
784
  __classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
766
785
  return checkout;
767
786
  }
@@ -843,7 +862,7 @@ let TreeCheckout = (() => {
843
862
  this.editLock.checkUnlocked("Disposing a view");
844
863
  this[disposeSymbol]();
845
864
  }
846
- [(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), _exportVerbose_decorators = [throwIfBroken], _applySerializedChange_decorators = [throwIfBroken], _applyChange_decorators = [throwIfBroken], _runTransaction_decorators = [breakingMethod], _runTransactionAsync_decorators = [breakingMethod], _viewWith_decorators = [throwIfBroken], _fork_decorators = [throwIfBroken], disposeSymbol)]() {
865
+ [(_TreeCheckout_events = new WeakMap(), _TreeCheckout_transaction = new WeakMap(), _TreeCheckout_validatedCommits = new WeakMap(), _exportVerbose_decorators = [throwIfBroken], _applySerializedChange_decorators = [throwIfBroken], _applyChange_decorators = [throwIfBroken], _runTransaction_decorators = [breakingMethod], _runTransactionAsync_decorators = [breakingMethod], _withCombinedVisitor_decorators = [breakingMethod], _viewWith_decorators = [throwIfBroken], _fork_decorators = [throwIfBroken], disposeSymbol)]() {
847
866
  this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
848
867
  this.disposed = true;
849
868
  __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.dispose();
@@ -1001,7 +1020,7 @@ let TreeCheckout = (() => {
1001
1020
  getEnrichmentStats() {
1002
1021
  return { ...this.enrichmentStats };
1003
1022
  }
1004
- enrich(context, changes) {
1023
+ enrich(context, changes, forceValidation) {
1005
1024
  if (!hasSome(changes)) {
1006
1025
  return [];
1007
1026
  }
@@ -1017,13 +1036,25 @@ let TreeCheckout = (() => {
1017
1036
  return makeAnonChange(diff);
1018
1037
  });
1019
1038
  }
1020
- const enriched = [];
1039
+ const enrichedChanges = [];
1021
1040
  for (const change of changes) {
1022
- enriched.push(enricher.enrich(change.change));
1023
- enricher.enqueueChange(change);
1041
+ const enrichedChange = enricher.enrich(change.change);
1042
+ enrichedChanges.push(enrichedChange);
1043
+ // We could either apply the original or the enriched change: either should allow subsequent changes to be enriched correctly.
1044
+ // We choose to apply the enriched change in order to more closely replicate what a peer will experience (assuming no concurrent changes).
1045
+ // This makes it more likely that we'll detect a bug in the enrichment logic.
1046
+ // Note that enqueueing the change does not guarantee that it will be applied unless `forceValidation` is enabled.
1047
+ enricher.enqueueChange(tagChange(enrichedChange, change.revision));
1048
+ }
1049
+ if (forceValidation) {
1050
+ // Ensure that all changes can be applied successfully.
1051
+ // This is useful for catching bugs in the enrichment logic and in the rebasing logic that may have been involved in producing the changes.
1052
+ // Note that we cannot guarantee that the enriched change will be applied successfully even in the absence of concurrent changes,
1053
+ // 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.
1054
+ enricher.purgeChangeQueue();
1024
1055
  }
1025
1056
  enricher[disposeSymbol]();
1026
- return enriched;
1057
+ return enrichedChanges;
1027
1058
  }
1028
1059
  get mainBranch() {
1029
1060
  return __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch;
@@ -1036,6 +1067,7 @@ let TreeCheckout = (() => {
1036
1067
  __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);
1037
1068
  __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);
1038
1069
  __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);
1070
+ __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);
1039
1071
  __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);
1040
1072
  __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);
1041
1073
  if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });