@fluidframework/tree 2.103.0 → 2.111.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 (530) hide show
  1. package/.vscode/settings.json +1 -0
  2. package/CHANGELOG.md +109 -0
  3. package/api-report/tree.alpha.api.md +60 -34
  4. package/api-report/tree.beta.api.md +49 -3
  5. package/api-report/tree.legacy.beta.api.md +49 -3
  6. package/dist/codec/versioned/format.js +2 -24
  7. package/dist/codec/versioned/format.js.map +1 -1
  8. package/dist/core/change-family/changeFamily.d.ts +3 -10
  9. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  10. package/dist/core/change-family/changeFamily.js.map +1 -1
  11. package/dist/core/rebase/types.d.ts +2 -2
  12. package/dist/core/rebase/types.js +2 -24
  13. package/dist/core/rebase/types.js.map +1 -1
  14. package/dist/core/schema-stored/formatV1.js +2 -24
  15. package/dist/core/schema-stored/formatV1.js.map +1 -1
  16. package/dist/core/schema-stored/formatV2.js +2 -24
  17. package/dist/core/schema-stored/formatV2.js.map +1 -1
  18. package/dist/core/schema-stored/index.js +3 -25
  19. package/dist/core/schema-stored/index.js.map +1 -1
  20. package/dist/core/schema-stored/storedSchemaRepository.d.ts +2 -2
  21. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  22. package/dist/core/tree/anchorSet.js +4 -8
  23. package/dist/core/tree/anchorSet.js.map +1 -1
  24. package/dist/core/tree/detachedFieldIndexFormatCommon.js +2 -24
  25. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  26. package/dist/core/tree/detachedFieldIndexFormatV2.js +2 -24
  27. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  28. package/dist/core/tree/persistedTreeTextFormat.js +2 -24
  29. package/dist/core/tree/persistedTreeTextFormat.js.map +1 -1
  30. package/dist/entrypoints/alpha.d.ts +1 -1
  31. package/dist/entrypoints/alpha.d.ts.map +1 -1
  32. package/dist/entrypoints/alpha.js.map +1 -1
  33. package/dist/entrypoints/beta.d.ts +1 -1
  34. package/dist/entrypoints/beta.d.ts.map +1 -1
  35. package/dist/entrypoints/beta.js.map +1 -1
  36. package/dist/entrypoints/internal.js +2 -15
  37. package/dist/entrypoints/internal.js.map +1 -1
  38. package/dist/entrypoints/legacy.d.ts +1 -1
  39. package/dist/entrypoints/legacy.d.ts.map +1 -1
  40. package/dist/entrypoints/legacy.js.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/chunkedForest.js +7 -11
  42. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +19 -14
  44. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +13 -32
  46. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +85 -28
  48. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/codec/codecs.js +83 -9
  50. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +4 -2
  52. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +11 -0
  54. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js +2 -24
  56. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js +2 -24
  58. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js +2 -24
  60. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js +2 -24
  62. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  66. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js +3 -15
  70. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  72. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  74. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  75. package/dist/feature-libraries/flex-tree/lazyEntity.js +9 -19
  76. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  77. package/dist/feature-libraries/flex-tree/lazyNode.js +3 -13
  78. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  79. package/dist/feature-libraries/forest-summary/codec.d.ts +3 -3
  80. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  81. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  82. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -2
  83. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  84. package/dist/feature-libraries/forest-summary/forestSummarizer.js +4 -6
  85. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  86. package/dist/feature-libraries/forest-summary/formatCommon.js +2 -24
  87. package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  88. package/dist/feature-libraries/index.d.ts +1 -1
  89. package/dist/feature-libraries/index.d.ts.map +1 -1
  90. package/dist/feature-libraries/index.js +4 -25
  91. package/dist/feature-libraries/index.js.map +1 -1
  92. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js +2 -24
  93. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  94. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  95. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +9 -9
  96. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  97. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  98. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +10 -30
  99. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  100. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -24
  101. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  102. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +2 -24
  103. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  104. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -5
  105. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  106. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  107. package/dist/feature-libraries/object-forest/objectForest.js +11 -55
  108. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  109. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js +2 -24
  110. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -1
  111. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +2 -24
  112. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -1
  113. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +2 -24
  114. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  115. package/dist/feature-libraries/schema-index/formatV1.js +2 -24
  116. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  117. package/dist/feature-libraries/schema-index/formatV2.js +2 -24
  118. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  119. package/dist/feature-libraries/sequence-field/formatV1.js +2 -24
  120. package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
  121. package/dist/feature-libraries/sequence-field/formatV2.js +2 -24
  122. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  123. package/dist/feature-libraries/sequence-field/formatV3.js +2 -24
  124. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
  125. package/dist/index.d.ts +2 -2
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +4 -25
  128. package/dist/index.js.map +1 -1
  129. package/dist/packageVersion.d.ts +1 -1
  130. package/dist/packageVersion.js +1 -1
  131. package/dist/packageVersion.js.map +1 -1
  132. package/dist/shared-tree/independentView.d.ts.map +1 -1
  133. package/dist/shared-tree/independentView.js +4 -7
  134. package/dist/shared-tree/independentView.js.map +1 -1
  135. package/dist/shared-tree/index.d.ts +1 -1
  136. package/dist/shared-tree/index.d.ts.map +1 -1
  137. package/dist/shared-tree/index.js.map +1 -1
  138. package/dist/shared-tree/schematizingTreeView.d.ts +6 -5
  139. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  140. package/dist/shared-tree/schematizingTreeView.js +7 -41
  141. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  142. package/dist/shared-tree/sharedTree.d.ts +5 -1
  143. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  144. package/dist/shared-tree/sharedTree.js +13 -49
  145. package/dist/shared-tree/sharedTree.js.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeFormat.js +2 -24
  147. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  148. package/dist/shared-tree/transactionPostProcessor.d.ts +28 -0
  149. package/dist/shared-tree/transactionPostProcessor.d.ts.map +1 -0
  150. package/dist/shared-tree/transactionPostProcessor.js +28 -0
  151. package/dist/shared-tree/transactionPostProcessor.js.map +1 -0
  152. package/dist/shared-tree/treeAlpha.js +3 -3
  153. package/dist/shared-tree/treeAlpha.js.map +1 -1
  154. package/dist/shared-tree/treeCheckout.d.ts +28 -15
  155. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  156. package/dist/shared-tree/treeCheckout.js +124 -145
  157. package/dist/shared-tree/treeCheckout.js.map +1 -1
  158. package/dist/shared-tree/unhydratedTreeContext.d.ts +5 -5
  159. package/dist/shared-tree/unhydratedTreeContext.d.ts.map +1 -1
  160. package/dist/shared-tree/unhydratedTreeContext.js.map +1 -1
  161. package/dist/shared-tree-core/branch.js +13 -17
  162. package/dist/shared-tree-core/branch.js.map +1 -1
  163. package/dist/shared-tree-core/editManagerCodecs.d.ts +3 -2
  164. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  165. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  166. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +3 -9
  167. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  168. package/dist/shared-tree-core/editManagerCodecsCommons.js +2 -4
  169. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  170. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +3 -3
  171. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  172. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  173. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +3 -3
  174. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  175. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  176. package/dist/shared-tree-core/editManagerFormatCommons.js +2 -24
  177. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  178. package/dist/shared-tree-core/editManagerFormatV1toV4.js +2 -24
  179. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  180. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js +2 -24
  181. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
  182. package/dist/shared-tree-core/editManagerSummarizer.d.ts +5 -9
  183. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  184. package/dist/shared-tree-core/editManagerSummarizer.js +5 -10
  185. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  186. package/dist/shared-tree-core/index.d.ts +1 -1
  187. package/dist/shared-tree-core/index.d.ts.map +1 -1
  188. package/dist/shared-tree-core/index.js +3 -2
  189. package/dist/shared-tree-core/index.js.map +1 -1
  190. package/dist/shared-tree-core/messageCodecVSharedBranches.js +2 -24
  191. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  192. package/dist/shared-tree-core/messageFormatV1ToV4.js +2 -24
  193. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  194. package/dist/shared-tree-core/messageFormatVSharedBranches.js +2 -24
  195. package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  196. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  197. package/dist/shared-tree-core/sharedTreeCore.js +9 -44
  198. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  199. package/dist/shared-tree-core/transaction.d.ts +84 -9
  200. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  201. package/dist/shared-tree-core/transaction.js +94 -37
  202. package/dist/shared-tree-core/transaction.js.map +1 -1
  203. package/dist/simple-tree/api/index.d.ts +1 -1
  204. package/dist/simple-tree/api/index.d.ts.map +1 -1
  205. package/dist/simple-tree/api/index.js.map +1 -1
  206. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  207. package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
  208. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  209. package/dist/simple-tree/api/schemaFactory.d.ts +1 -1
  210. package/dist/simple-tree/api/schemaFactory.js +2 -2
  211. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  212. package/dist/simple-tree/api/simpleSchemaCodec.js +2 -24
  213. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  214. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +2 -2
  215. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +4 -26
  216. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  217. package/dist/simple-tree/api/transactionTypes.d.ts +91 -28
  218. package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
  219. package/dist/simple-tree/api/transactionTypes.js.map +1 -1
  220. package/dist/simple-tree/api/tree.d.ts +96 -22
  221. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  222. package/dist/simple-tree/api/tree.js.map +1 -1
  223. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
  224. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  225. package/dist/simple-tree/core/treeNodeKernel.js +83 -93
  226. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  227. package/dist/simple-tree/core/treeNodeSchema.d.ts +7 -7
  228. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  229. package/dist/simple-tree/core/unhydratedFlexTree.js +6 -10
  230. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  231. package/dist/simple-tree/index.d.ts +1 -1
  232. package/dist/simple-tree/index.d.ts.map +1 -1
  233. package/dist/simple-tree/index.js.map +1 -1
  234. package/dist/simple-tree/leafNodeSchema.js +2 -12
  235. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  236. package/dist/simple-tree/node-kinds/array/arrayNode.js +2 -6
  237. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  238. package/dist/simple-tree/simpleSchemaFormatV1.js +2 -24
  239. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  240. package/dist/tableSchema.d.ts +50 -4
  241. package/dist/tableSchema.d.ts.map +1 -1
  242. package/dist/tableSchema.js +202 -106
  243. package/dist/tableSchema.js.map +1 -1
  244. package/dist/text/index.d.ts +1 -0
  245. package/dist/text/index.d.ts.map +1 -1
  246. package/dist/text/index.js +3 -1
  247. package/dist/text/index.js.map +1 -1
  248. package/dist/text/textDomainFormatted.d.ts +69 -758
  249. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  250. package/dist/text/textDomainFormatted.js +275 -322
  251. package/dist/text/textDomainFormatted.js.map +1 -1
  252. package/dist/text/textDomainFormattedDefault.d.ts +273 -0
  253. package/dist/text/textDomainFormattedDefault.d.ts.map +1 -0
  254. package/dist/text/textDomainFormattedDefault.js +94 -0
  255. package/dist/text/textDomainFormattedDefault.js.map +1 -0
  256. package/dist/util/arrayUtilities.d.ts +20 -0
  257. package/dist/util/arrayUtilities.d.ts.map +1 -1
  258. package/dist/util/arrayUtilities.js +24 -1
  259. package/dist/util/arrayUtilities.js.map +1 -1
  260. package/dist/util/compressedIds.d.ts +118 -0
  261. package/dist/util/compressedIds.d.ts.map +1 -0
  262. package/dist/util/compressedIds.js +133 -0
  263. package/dist/util/compressedIds.js.map +1 -0
  264. package/dist/util/index.d.ts +2 -1
  265. package/dist/util/index.d.ts.map +1 -1
  266. package/dist/util/index.js +11 -2
  267. package/dist/util/index.js.map +1 -1
  268. package/dist/util/rangeMap.d.ts +13 -0
  269. package/dist/util/rangeMap.d.ts.map +1 -1
  270. package/dist/util/rangeMap.js +69 -8
  271. package/dist/util/rangeMap.js.map +1 -1
  272. package/dist/util/typeboxBrand.js +2 -24
  273. package/dist/util/typeboxBrand.js.map +1 -1
  274. package/dist/util/utils.js +2 -24
  275. package/dist/util/utils.js.map +1 -1
  276. package/eslint.config.mts +0 -30
  277. package/lib/core/change-family/changeFamily.d.ts +3 -10
  278. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  279. package/lib/core/change-family/changeFamily.js.map +1 -1
  280. package/lib/core/rebase/types.d.ts +2 -2
  281. package/lib/core/rebase/types.js.map +1 -1
  282. package/lib/core/schema-stored/storedSchemaRepository.d.ts +2 -2
  283. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  284. package/lib/core/tree/anchorSet.js +1 -5
  285. package/lib/core/tree/anchorSet.js.map +1 -1
  286. package/lib/entrypoints/alpha.d.ts +1 -1
  287. package/lib/entrypoints/alpha.d.ts.map +1 -1
  288. package/lib/entrypoints/alpha.js.map +1 -1
  289. package/lib/entrypoints/beta.d.ts +1 -1
  290. package/lib/entrypoints/beta.d.ts.map +1 -1
  291. package/lib/entrypoints/beta.js.map +1 -1
  292. package/lib/entrypoints/legacy.d.ts +1 -1
  293. package/lib/entrypoints/legacy.d.ts.map +1 -1
  294. package/lib/entrypoints/legacy.js.map +1 -1
  295. package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -5
  296. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  297. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +19 -14
  298. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  299. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +14 -33
  300. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  301. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +85 -28
  302. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  303. package/lib/feature-libraries/chunked-forest/codec/codecs.js +82 -9
  304. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  305. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +4 -2
  306. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  307. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +12 -1
  308. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  309. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  310. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  311. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  312. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  313. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts +1 -1
  314. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -1
  315. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js +3 -15
  316. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
  317. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  318. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  319. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  320. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  321. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -11
  322. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  323. package/lib/feature-libraries/flex-tree/lazyNode.js +1 -11
  324. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  325. package/lib/feature-libraries/forest-summary/codec.d.ts +3 -3
  326. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  327. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  328. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -2
  329. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  330. package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -6
  331. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  332. package/lib/feature-libraries/index.d.ts +1 -1
  333. package/lib/feature-libraries/index.d.ts.map +1 -1
  334. package/lib/feature-libraries/index.js +1 -1
  335. package/lib/feature-libraries/index.js.map +1 -1
  336. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  337. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +10 -10
  338. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  339. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  340. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +10 -30
  341. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  342. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -5
  343. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  344. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  345. package/lib/feature-libraries/object-forest/objectForest.js +1 -45
  346. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  347. package/lib/index.d.ts +2 -2
  348. package/lib/index.d.ts.map +1 -1
  349. package/lib/index.js +1 -1
  350. package/lib/index.js.map +1 -1
  351. package/lib/packageVersion.d.ts +1 -1
  352. package/lib/packageVersion.js +1 -1
  353. package/lib/packageVersion.js.map +1 -1
  354. package/lib/shared-tree/independentView.d.ts.map +1 -1
  355. package/lib/shared-tree/independentView.js +5 -8
  356. package/lib/shared-tree/independentView.js.map +1 -1
  357. package/lib/shared-tree/index.d.ts +1 -1
  358. package/lib/shared-tree/index.d.ts.map +1 -1
  359. package/lib/shared-tree/index.js.map +1 -1
  360. package/lib/shared-tree/schematizingTreeView.d.ts +6 -5
  361. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  362. package/lib/shared-tree/schematizingTreeView.js +4 -38
  363. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  364. package/lib/shared-tree/sharedTree.d.ts +5 -1
  365. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  366. package/lib/shared-tree/sharedTree.js +9 -45
  367. package/lib/shared-tree/sharedTree.js.map +1 -1
  368. package/lib/shared-tree/transactionPostProcessor.d.ts +28 -0
  369. package/lib/shared-tree/transactionPostProcessor.d.ts.map +1 -0
  370. package/lib/shared-tree/transactionPostProcessor.js +23 -0
  371. package/lib/shared-tree/transactionPostProcessor.js.map +1 -0
  372. package/lib/shared-tree/treeAlpha.js +3 -3
  373. package/lib/shared-tree/treeAlpha.js.map +1 -1
  374. package/lib/shared-tree/treeCheckout.d.ts +28 -15
  375. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  376. package/lib/shared-tree/treeCheckout.js +80 -101
  377. package/lib/shared-tree/treeCheckout.js.map +1 -1
  378. package/lib/shared-tree/unhydratedTreeContext.d.ts +5 -5
  379. package/lib/shared-tree/unhydratedTreeContext.d.ts.map +1 -1
  380. package/lib/shared-tree/unhydratedTreeContext.js.map +1 -1
  381. package/lib/shared-tree-core/branch.js +1 -5
  382. package/lib/shared-tree-core/branch.js.map +1 -1
  383. package/lib/shared-tree-core/editManagerCodecs.d.ts +3 -2
  384. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  385. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  386. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +3 -9
  387. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  388. package/lib/shared-tree-core/editManagerCodecsCommons.js +3 -5
  389. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  390. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +3 -3
  391. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  392. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  393. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +3 -3
  394. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  395. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  396. package/lib/shared-tree-core/editManagerSummarizer.d.ts +5 -9
  397. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  398. package/lib/shared-tree-core/editManagerSummarizer.js +5 -10
  399. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  400. package/lib/shared-tree-core/index.d.ts +1 -1
  401. package/lib/shared-tree-core/index.d.ts.map +1 -1
  402. package/lib/shared-tree-core/index.js +1 -1
  403. package/lib/shared-tree-core/index.js.map +1 -1
  404. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  405. package/lib/shared-tree-core/sharedTreeCore.js +4 -39
  406. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  407. package/lib/shared-tree-core/transaction.d.ts +84 -9
  408. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  409. package/lib/shared-tree-core/transaction.js +74 -17
  410. package/lib/shared-tree-core/transaction.js.map +1 -1
  411. package/lib/simple-tree/api/index.d.ts +1 -1
  412. package/lib/simple-tree/api/index.d.ts.map +1 -1
  413. package/lib/simple-tree/api/index.js.map +1 -1
  414. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  415. package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
  416. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  417. package/lib/simple-tree/api/schemaFactory.d.ts +1 -1
  418. package/lib/simple-tree/api/schemaFactory.js +2 -2
  419. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  420. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +2 -2
  421. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +2 -2
  422. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  423. package/lib/simple-tree/api/transactionTypes.d.ts +91 -28
  424. package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
  425. package/lib/simple-tree/api/transactionTypes.js.map +1 -1
  426. package/lib/simple-tree/api/tree.d.ts +96 -22
  427. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  428. package/lib/simple-tree/api/tree.js.map +1 -1
  429. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
  430. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  431. package/lib/simple-tree/core/treeNodeKernel.js +1 -11
  432. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  433. package/lib/simple-tree/core/treeNodeSchema.d.ts +7 -7
  434. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  435. package/lib/simple-tree/core/unhydratedFlexTree.js +1 -5
  436. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  437. package/lib/simple-tree/index.d.ts +1 -1
  438. package/lib/simple-tree/index.d.ts.map +1 -1
  439. package/lib/simple-tree/index.js.map +1 -1
  440. package/lib/simple-tree/leafNodeSchema.js +1 -11
  441. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  442. package/lib/simple-tree/node-kinds/array/arrayNode.js +1 -5
  443. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  444. package/lib/tableSchema.d.ts +50 -4
  445. package/lib/tableSchema.d.ts.map +1 -1
  446. package/lib/tableSchema.js +171 -75
  447. package/lib/tableSchema.js.map +1 -1
  448. package/lib/text/index.d.ts +1 -0
  449. package/lib/text/index.d.ts.map +1 -1
  450. package/lib/text/index.js +1 -0
  451. package/lib/text/index.js.map +1 -1
  452. package/lib/text/textDomainFormatted.d.ts +69 -758
  453. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  454. package/lib/text/textDomainFormatted.js +277 -324
  455. package/lib/text/textDomainFormatted.js.map +1 -1
  456. package/lib/text/textDomainFormattedDefault.d.ts +273 -0
  457. package/lib/text/textDomainFormattedDefault.d.ts.map +1 -0
  458. package/lib/text/textDomainFormattedDefault.js +91 -0
  459. package/lib/text/textDomainFormattedDefault.js.map +1 -0
  460. package/lib/util/arrayUtilities.d.ts +20 -0
  461. package/lib/util/arrayUtilities.d.ts.map +1 -1
  462. package/lib/util/arrayUtilities.js +22 -0
  463. package/lib/util/arrayUtilities.js.map +1 -1
  464. package/lib/util/compressedIds.d.ts +118 -0
  465. package/lib/util/compressedIds.d.ts.map +1 -0
  466. package/lib/util/compressedIds.js +124 -0
  467. package/lib/util/compressedIds.js.map +1 -0
  468. package/lib/util/index.d.ts +2 -1
  469. package/lib/util/index.d.ts.map +1 -1
  470. package/lib/util/index.js +2 -1
  471. package/lib/util/index.js.map +1 -1
  472. package/lib/util/rangeMap.d.ts +13 -0
  473. package/lib/util/rangeMap.d.ts.map +1 -1
  474. package/lib/util/rangeMap.js +69 -8
  475. package/lib/util/rangeMap.js.map +1 -1
  476. package/package.json +25 -24
  477. package/src/core/change-family/changeFamily.ts +3 -12
  478. package/src/core/rebase/types.ts +2 -2
  479. package/src/core/schema-stored/storedSchemaRepository.ts +2 -2
  480. package/src/entrypoints/alpha.ts +12 -8
  481. package/src/entrypoints/beta.ts +8 -0
  482. package/src/entrypoints/legacy.ts +8 -0
  483. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +35 -64
  484. package/src/feature-libraries/chunked-forest/codec/codecs.ts +138 -42
  485. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +32 -4
  486. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -0
  487. package/src/feature-libraries/chunked-forest/codec/nodeEncoder.ts +7 -19
  488. package/src/feature-libraries/chunked-forest/index.ts +3 -0
  489. package/src/feature-libraries/forest-summary/codec.ts +5 -3
  490. package/src/feature-libraries/forest-summary/forestSummarizer.ts +4 -5
  491. package/src/feature-libraries/index.ts +3 -0
  492. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +13 -9
  493. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -47
  494. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +0 -5
  495. package/src/index.ts +13 -8
  496. package/src/packageVersion.ts +1 -1
  497. package/src/shared-tree/independentView.ts +5 -10
  498. package/src/shared-tree/index.ts +1 -0
  499. package/src/shared-tree/schematizingTreeView.ts +29 -25
  500. package/src/shared-tree/sharedTree.ts +18 -10
  501. package/src/shared-tree/transactionPostProcessor.ts +40 -0
  502. package/src/shared-tree/treeAlpha.ts +3 -3
  503. package/src/shared-tree/treeCheckout.ts +120 -95
  504. package/src/shared-tree/unhydratedTreeContext.ts +18 -15
  505. package/src/shared-tree-core/editManagerCodecs.ts +3 -2
  506. package/src/shared-tree-core/editManagerCodecsCommons.ts +10 -14
  507. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +3 -2
  508. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +3 -2
  509. package/src/shared-tree-core/editManagerSummarizer.ts +5 -9
  510. package/src/shared-tree-core/index.ts +8 -5
  511. package/src/shared-tree-core/sharedTreeCore.ts +3 -2
  512. package/src/shared-tree-core/transaction.ts +148 -18
  513. package/src/simple-tree/api/index.ts +13 -9
  514. package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
  515. package/src/simple-tree/api/schemaFactory.ts +2 -2
  516. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +2 -2
  517. package/src/simple-tree/api/transactionTypes.ts +111 -39
  518. package/src/simple-tree/api/tree.ts +152 -47
  519. package/src/simple-tree/api/treeBeta.ts +2 -0
  520. package/src/simple-tree/core/treeNodeSchema.ts +7 -7
  521. package/src/simple-tree/index.ts +12 -8
  522. package/src/tableSchema.ts +306 -80
  523. package/src/text/index.ts +1 -0
  524. package/src/text/textDomainFormatted.ts +520 -415
  525. package/src/text/textDomainFormattedDefault.ts +150 -0
  526. package/src/util/arrayUtilities.ts +35 -0
  527. package/src/util/compressedIds.ts +216 -0
  528. package/src/util/index.ts +17 -0
  529. package/src/util/rangeMap.ts +108 -9
  530. package/tsconfig.json +5 -0
@@ -8,7 +8,7 @@ import type { IFluidHandle, Listenable } from "@fluidframework/core-interfaces/i
8
8
  import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
9
9
  import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
10
10
  import { isStableId } from "@fluidframework/id-compressor/internal";
11
- import { UsageError, type TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
11
+ import { type TelemetryLoggerExt, UsageError } from "@fluidframework/telemetry-utils/internal";
12
12
 
13
13
  import {
14
14
  FluidClientVersion,
@@ -57,6 +57,7 @@ import {
57
57
  makeAnonChange,
58
58
  type TaggedChange,
59
59
  deltaFieldMapHasVisibleChanges,
60
+ findCommonAncestor,
60
61
  } from "../core/index.js";
61
62
  import {
62
63
  type FieldBatchCodec,
@@ -74,8 +75,8 @@ import {
74
75
  SquashingTransactionStack,
75
76
  SharedTreeBranch,
76
77
  TransactionResult as InternalTransactionResult,
77
- onForkTransitive,
78
78
  type SharedTreeBranchChange,
79
+ type SquashingTransactionOptions,
79
80
  type Transactor,
80
81
  } from "../shared-tree-core/index.js";
81
82
  import {
@@ -87,13 +88,12 @@ import {
87
88
  type ViewableTree,
88
89
  type TreeBranch,
89
90
  type TreeBranchAlpha,
90
- type TreeChangeEvents,
91
91
  type VerboseTree,
92
- type VoidTransactionCallbackStatus,
93
- type TransactionCallbackStatus,
94
- type TransactionResult,
95
- type TransactionResultExt,
96
- type RunTransactionParams,
92
+ type VoidTransactionCallbackStatusAlpha,
93
+ type TransactionCallbackStatusAlpha,
94
+ type TransactionVoidResult,
95
+ type TransactionValueResult,
96
+ type RunTransactionParamsAlpha,
97
97
  type TransactionConstraintAlpha,
98
98
  type TreeViewAlpha,
99
99
  getInnerNode,
@@ -118,6 +118,7 @@ import { SharedTreeChangeEnricher } from "./sharedTreeChangeEnricher.js";
118
118
  import { SharedTreeChangeFamily, hasSchemaChange } from "./sharedTreeChangeFamily.js";
119
119
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
120
120
  import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
121
+ import { extractTransactionChangeProcessor } from "./transactionPostProcessor.js";
121
122
 
122
123
  /**
123
124
  * Yields all defined (non-`undefined`) labels from a {@link LabelTree}, depth-first.
@@ -206,6 +207,11 @@ export interface CheckoutEvents {
206
207
  dispose(): void;
207
208
  }
208
209
 
210
+ /**
211
+ * A collection of functions for managing transactions on a {@link ITreeCheckout}.
212
+ */
213
+ export type TreeTransactor = Transactor<SquashingTransactionOptions<SharedTreeChange>>;
214
+
209
215
  /**
210
216
  * Provides a means for interacting with a SharedTree.
211
217
  * This includes reading data from the tree and running transactions to mutate the tree.
@@ -252,13 +258,13 @@ export interface ITreeCheckout
252
258
  /**
253
259
  * A collection of functions for managing transactions.
254
260
  */
255
- readonly transaction: Transactor;
261
+ readonly transaction: TreeTransactor;
256
262
 
257
263
  fork(): ITreeCheckout;
258
264
 
259
265
  /**
260
- * Replaces all schema with the provided schema.
261
- * Can over-write preexisting schema, and removes unmentioned schema.
266
+ * Replaces all schemas with the provided schema.
267
+ * Can overwrite preexisting schemas, and removes unmentioned schemas.
262
268
  *
263
269
  * @param newSchema - The new schema to replace the existing schema.
264
270
  * @param allowNonSupersetSchema - Whether to allow non-superset schemas.
@@ -308,7 +314,6 @@ export function createTreeCheckout(
308
314
  chunkCompressionStrategy?: TreeCompressionStrategy;
309
315
  logger?: TelemetryLoggerExt;
310
316
  breaker?: Breakable;
311
- disposeForksAfterTransaction?: boolean;
312
317
  codecOptions?: Partial<CodecWriteOptions>;
313
318
  },
314
319
  ): TreeCheckout {
@@ -355,7 +360,6 @@ export function createTreeCheckout(
355
360
  args?.removedRoots,
356
361
  args?.logger,
357
362
  breaker,
358
- args?.disposeForksAfterTransaction,
359
363
  );
360
364
  }
361
365
 
@@ -393,7 +397,7 @@ function getCheckout(context: TreeBranch): TreeCheckout {
393
397
  * @param constraintsOnRevert - If true, use {@link ISharedTreeEditor.addNodeExistsConstraintOnRevert}.
394
398
  * @param constraints - The constraints to add to the transaction.
395
399
  *
396
- * @see {@link RunTransactionParams.preconditions}.
400
+ * @see {@link RunTransactionParamsAlpha.preconditions}.
397
401
  */
398
402
  export function addConstraintsToTransaction(
399
403
  checkout: ITreeCheckout,
@@ -486,9 +490,9 @@ export class TreeCheckout implements ITreeCheckout {
486
490
  private readonly views = new Set<TreeView<ImplicitFieldSchema>>();
487
491
 
488
492
  /**
489
- * Set of revertibles maintained for automatic disposal
493
+ * Revertibles maintained for automatic disposal
490
494
  */
491
- private readonly revertibles = new Set<RevertibleAlpha>();
495
+ private readonly revertibles = new Map<RevisionTag, RevertibleAlpha>();
492
496
 
493
497
  /**
494
498
  * Each branch's head commit corresponds to a revertible commit.
@@ -527,7 +531,6 @@ export class TreeCheckout implements ITreeCheckout {
527
531
  /** Optional logger for telemetry. */
528
532
  private readonly logger?: TelemetryLoggerExt,
529
533
  public readonly breaker: Breakable = new Breakable("TreeCheckout"),
530
- public readonly disposeForksAfterTransaction = true,
531
534
  ) {
532
535
  this.#transaction = this.createTransactionStack(branch);
533
536
  this.editLock = new EditLock(this.#transaction.activeBranchEditor);
@@ -659,9 +662,6 @@ export class TreeCheckout implements ITreeCheckout {
659
662
  branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
660
663
  ): SquashingTransactionStack<SharedTreeEditBuilder, SharedTreeChange> {
661
664
  return new SquashingTransactionStack(branch, this.mintRevisionTag, () => {
662
- const disposeForks = this.disposeForksAfterTransaction
663
- ? trackForksForDisposal(this)
664
- : undefined;
665
665
  // When each transaction is started, make a restorable checkpoint of the current state of removed roots
666
666
  const restoreRemovedRoots = this._removedRoots.createCheckpoint();
667
667
  return (result, viewUpdate: SharedTreeChange | undefined) => {
@@ -688,7 +688,6 @@ export class TreeCheckout implements ITreeCheckout {
688
688
  unreachableCase(result);
689
689
  }
690
690
  }
691
- disposeForks?.();
692
691
  };
693
692
  });
694
693
  }
@@ -754,7 +753,7 @@ export class TreeCheckout implements ITreeCheckout {
754
753
  revision,
755
754
  this.#transaction.activeBranch.fork(commit),
756
755
  );
757
- this.revertibles.add(revertible);
756
+ this.revertibles.set(revision, revertible);
758
757
  return revertible;
759
758
  };
760
759
 
@@ -788,19 +787,53 @@ export class TreeCheckout implements ITreeCheckout {
788
787
  labels: buildLabelsSet(this.labelTreeNode),
789
788
  };
790
789
 
791
- this.#events.emit("changed", metadata, getRevertible);
790
+ this.emitChangedLocked(() => {
791
+ this.#events.emit("changed", metadata, getRevertible);
792
+ });
792
793
  withinEventContext = false;
793
794
  }
795
+ } else if (event.type === "remove") {
796
+ // Commits that are rolled back should no longer be revertible
797
+ for (const commit of event.removedCommits) {
798
+ this.revertibles.get(commit.revision)?.dispose();
799
+ }
794
800
  } else if (this.isRemoteChangeEvent(event)) {
795
801
  // TODO: figure out how to plumb through commit kind info for remote changes
796
- this.#events.emit("changed", {
797
- isLocal: false,
798
- kind: CommitKind.Default,
799
- labels: new Set<unknown>(),
802
+ this.emitChangedLocked(() => {
803
+ this.#events.emit("changed", {
804
+ isLocal: false,
805
+ kind: CommitKind.Default,
806
+ labels: new Set<unknown>(),
807
+ });
800
808
  });
801
809
  }
802
810
  };
803
811
 
812
+ /**
813
+ * Hold the `editLock` for the duration of `emit`, so that re-entrant edits, transactions,
814
+ * branch operations, etc. attempted from inside a `changed` listener throw the canonical
815
+ * "forbidden during a change event" {@link UsageError} via {@link EditLock.checkUnlocked}.
816
+ *
817
+ * @remarks
818
+ * Shared by both the local and remote `changed` emission paths in {@link TreeCheckout.onAfterBranchChange}.
819
+ * The `try`/`finally` ensures the lock is released even if a listener throws.
820
+ */
821
+ private emitChangedLocked(emit: () => void): void {
822
+ this.editLock.lock();
823
+ try {
824
+ emit();
825
+ } finally {
826
+ // TODO: any event that throws potentially leaves the code which triggered that event,
827
+ // and thus this checkout (and likely more) in a broken state.
828
+ // Unlocking this editLock prevents future use of this broken state from giving a confusing error in this case,
829
+ // however, a better approach would probably be to put something (this checkout and/or the editLock)
830
+ // into a broken state (using a properly scoped `Breakable`),
831
+ // likely by moving emitChangedLocked into EditLock, and having EditLock get a Breakable,
832
+ // and having the new emitChangedLocked use `Breakable.use`.
833
+ this.editLock.unlock();
834
+ }
835
+ }
836
+
804
837
  private readonly onAfterChange = (event: SharedTreeBranchChange<SharedTreeChange>): void => {
805
838
  this.editLock.lock();
806
839
  this.#events.emit("beforeBatch", event);
@@ -864,72 +897,86 @@ export class TreeCheckout implements ITreeCheckout {
864
897
  }
865
898
 
866
899
  public runTransaction<TSuccessValue, TFailureValue>(
867
- transaction: () => TransactionCallbackStatus<TSuccessValue, TFailureValue>,
868
- params?: RunTransactionParams,
869
- ): TransactionResultExt<TSuccessValue, TFailureValue>;
900
+ transaction: () => TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>,
901
+ params?: RunTransactionParamsAlpha,
902
+ ): TransactionValueResult<TSuccessValue, TFailureValue>;
870
903
  public runTransaction(
871
- transaction: () => VoidTransactionCallbackStatus | void,
872
- params?: RunTransactionParams,
873
- ): TransactionResult;
904
+ transaction: () => VoidTransactionCallbackStatusAlpha | void,
905
+ params?: RunTransactionParamsAlpha,
906
+ ): TransactionVoidResult;
874
907
  @breakingMethod
875
908
  public runTransaction<TSuccessValue, TFailureValue>(
876
909
  transaction: () =>
877
- | TransactionCallbackStatus<TSuccessValue, TFailureValue>
878
- | VoidTransactionCallbackStatus
910
+ | TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>
911
+ | VoidTransactionCallbackStatusAlpha
879
912
  | void,
880
- params?: RunTransactionParams,
881
- ): TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult {
913
+ params?: RunTransactionParamsAlpha,
914
+ ): TransactionValueResult<TSuccessValue, TFailureValue> | TransactionVoidResult {
882
915
  this.mountTransaction(params, false);
883
916
  const transactionCallbackStatus = transaction();
884
917
  return this.unmountTransaction(transactionCallbackStatus, params);
885
918
  }
886
919
 
887
920
  public runTransactionAsync<TSuccessValue, TFailureValue>(
888
- transaction: () => Promise<TransactionCallbackStatus<TSuccessValue, TFailureValue>>,
889
- params?: RunTransactionParams,
890
- ): Promise<TransactionResultExt<TSuccessValue, TFailureValue>>;
921
+ transaction: () => Promise<TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>>,
922
+ params?: RunTransactionParamsAlpha,
923
+ ): Promise<TransactionValueResult<TSuccessValue, TFailureValue>>;
891
924
  public runTransactionAsync(
892
- transaction: () => Promise<VoidTransactionCallbackStatus | void>,
893
- params?: RunTransactionParams,
894
- ): Promise<TransactionResult>;
925
+ transaction: () => Promise<VoidTransactionCallbackStatusAlpha | void>,
926
+ params?: RunTransactionParamsAlpha,
927
+ ): Promise<TransactionVoidResult>;
895
928
  @breakingMethod
896
929
  public async runTransactionAsync<TSuccessValue, TFailureValue>(
897
930
  transaction: () => Promise<
898
- | TransactionCallbackStatus<TSuccessValue, TFailureValue>
899
- | VoidTransactionCallbackStatus
931
+ | TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>
932
+ | VoidTransactionCallbackStatusAlpha
900
933
  | void
901
934
  >,
902
- params: RunTransactionParams | undefined,
903
- ): Promise<TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult> {
935
+ params: RunTransactionParamsAlpha | undefined,
936
+ ): Promise<TransactionValueResult<TSuccessValue, TFailureValue> | TransactionVoidResult> {
904
937
  this.mountTransaction(params, true);
905
938
  const transactionCallbackStatus = await transaction();
906
939
  return this.unmountTransaction(transactionCallbackStatus, params);
907
940
  }
908
941
 
909
- private mountTransaction(params: RunTransactionParams | undefined, isAsync: boolean): void {
942
+ private mountTransaction(
943
+ params: RunTransactionParamsAlpha | undefined,
944
+ isAsync: boolean,
945
+ ): void {
910
946
  this.checkNotDisposed();
947
+ // Starting a transaction is an edit, so it is forbidden from within a change-event
948
+ // callback (where the edit lock is held), the same as direct edits. For the async
949
+ // entry point this throw is captured as a rejected promise by the `async` wrapper.
950
+ //
951
+ // Note: because runTransaction/runTransactionAsync are `@breakingMethod`, this throw also
952
+ // puts the checkout into a broken state (unlike a direct edit, which throws recoverably).
953
+ // That is the same pre-existing broken-state limitation tracked by the TODO in
954
+ // `emitChangedLocked`, not something specific to transactions.
955
+ this.editLock.checkUnlocked("Running a transaction");
911
956
  if (isAsync && this.transaction.size > 0) {
912
957
  throw new UsageError(
913
958
  "An asynchronous transaction cannot be started while another transaction is already in progress.",
914
959
  );
915
960
  }
916
961
  this.pushLabelFrame(params?.label);
917
- this.transaction.start();
962
+ this.transaction.start({
963
+ postProcessor: extractTransactionChangeProcessor(params?.postProcessor),
964
+ });
918
965
 
919
966
  addConstraintsToTransaction(this, false, params?.preconditions);
920
967
  }
921
968
 
922
969
  private unmountTransaction<TSuccessValue, TFailureValue>(
923
970
  transactionCallbackStatus:
924
- | TransactionCallbackStatus<TSuccessValue, TFailureValue>
925
- | VoidTransactionCallbackStatus
971
+ | TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>
972
+ | VoidTransactionCallbackStatusAlpha
926
973
  | void,
927
- params: RunTransactionParams | undefined,
928
- ): TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult {
974
+ params: RunTransactionParamsAlpha | undefined,
975
+ ): TransactionValueResult<TSuccessValue, TFailureValue> | TransactionVoidResult {
929
976
  this.checkNotDisposed();
930
977
  const rollback = transactionCallbackStatus?.rollback;
931
978
  const value = (
932
- transactionCallbackStatus as TransactionCallbackStatus<TSuccessValue, TFailureValue>
979
+ transactionCallbackStatus as TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue>
933
980
  )?.value;
934
981
 
935
982
  if (rollback === true) {
@@ -1097,7 +1144,7 @@ export class TreeCheckout implements ITreeCheckout {
1097
1144
  "Unable to dispose a revertible that has already been disposed.",
1098
1145
  );
1099
1146
  }
1100
- checkout.disposeRevertible(revertible, revision);
1147
+ checkout.disposeRevertible(revision);
1101
1148
  onRevertibleDisposed?.(revertible);
1102
1149
  },
1103
1150
  };
@@ -1145,7 +1192,7 @@ export class TreeCheckout implements ITreeCheckout {
1145
1192
  return this.forest.anchors.locate(anchor);
1146
1193
  }
1147
1194
 
1148
- public get transaction(): Transactor {
1195
+ public get transaction(): TreeTransactor {
1149
1196
  return this.#transaction;
1150
1197
  }
1151
1198
  /**
@@ -1170,7 +1217,6 @@ export class TreeCheckout implements ITreeCheckout {
1170
1217
  throw new UsageError("A view cannot be forked while it has a pending transaction.");
1171
1218
  }
1172
1219
 
1173
- this.editLock.checkUnlocked("Branching");
1174
1220
  const branch = this.#transaction.activeBranch.fork();
1175
1221
  const storedSchema = this.storedSchema.clone();
1176
1222
  const forkBreaker = new Breakable("TreeCheckout");
@@ -1187,7 +1233,6 @@ export class TreeCheckout implements ITreeCheckout {
1187
1233
  this._removedRoots.clone(),
1188
1234
  this.logger,
1189
1235
  forkBreaker,
1190
- this.disposeForksAfterTransaction,
1191
1236
  );
1192
1237
  this.#events.emit("fork", checkout);
1193
1238
  return checkout;
@@ -1250,6 +1295,19 @@ export class TreeCheckout implements ITreeCheckout {
1250
1295
  getCheckout(branch).rebase(this);
1251
1296
  }
1252
1297
 
1298
+ public isMissingEditsFrom(branch: TreeBranch): boolean {
1299
+ const branchCheckout = getCheckout(branch);
1300
+ const targetPath: GraphCommit<unknown>[] = [];
1301
+ const ancestor = findCommonAncestor(this.mainBranch.getHead(), [
1302
+ branchCheckout.mainBranch.getHead(),
1303
+ targetPath,
1304
+ ]);
1305
+ if (ancestor === undefined) {
1306
+ throw new UsageError("Branches do not share a common ancestor.");
1307
+ }
1308
+ return targetPath.length > 0;
1309
+ }
1310
+
1253
1311
  public merge(branch: TreeBranch): void;
1254
1312
  public merge(branch: TreeBranch, disposeMerged: boolean): void;
1255
1313
  public merge(branch: TreeBranch, disposeMerged = true): void {
@@ -1339,15 +1397,15 @@ export class TreeCheckout implements ITreeCheckout {
1339
1397
  }
1340
1398
 
1341
1399
  private purgeRevertibles(): void {
1342
- for (const revertible of this.revertibles) {
1400
+ for (const revertible of this.revertibles.values()) {
1343
1401
  revertible.dispose();
1344
1402
  }
1345
1403
  }
1346
1404
 
1347
- private disposeRevertible(revertible: RevertibleAlpha, revision: RevisionTag): void {
1405
+ private disposeRevertible(revision: RevisionTag): void {
1348
1406
  this.revertibleCommitBranches.get(revision)?.dispose();
1349
1407
  this.revertibleCommitBranches.delete(revision);
1350
- this.revertibles.delete(revertible);
1408
+ this.revertibles.delete(revision);
1351
1409
  }
1352
1410
 
1353
1411
  private revertRevertible(
@@ -1681,12 +1739,7 @@ class EditLock {
1681
1739
  */
1682
1740
  public checkUnlocked<T extends string>(action: T extends Capitalize<T> ? T : never): void {
1683
1741
  if (this.locked) {
1684
- // These type assertions ensure that the event name strings used here match the actual event names
1685
- const nodeChanged: keyof TreeChangeEvents = "nodeChanged";
1686
- const treeChanged: keyof TreeChangeEvents = "treeChanged";
1687
- throw new UsageError(
1688
- `${action} is forbidden during a ${nodeChanged} or ${treeChanged} event`,
1689
- );
1742
+ throw new UsageError(`${action} is forbidden during a change event callback`);
1690
1743
  }
1691
1744
  }
1692
1745
 
@@ -1700,34 +1753,6 @@ class EditLock {
1700
1753
  }
1701
1754
  }
1702
1755
 
1703
- /**
1704
- * Keeps track of all new forks created until the returned function is invoked, which will dispose all of those for.
1705
- * The returned function may only be called once.
1706
- *
1707
- * @param checkout - The tree checkout for which you want to monitor forks for disposal.
1708
- * @returns a function which can be called to dispose all of the tracked forks.
1709
- */
1710
- function trackForksForDisposal(checkout: TreeCheckout): () => void {
1711
- const forks = new Set<TreeCheckout>();
1712
- const onDisposeUnSubscribes: (() => void)[] = [];
1713
- const onForkUnSubscribe = onForkTransitive(checkout, (fork) => {
1714
- forks.add(fork);
1715
- onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
1716
- });
1717
- let disposed = false;
1718
- return () => {
1719
- assert(!disposed, 0xaa9 /* Forks may only be disposed once */);
1720
- for (const fork of forks) {
1721
- fork.dispose();
1722
- }
1723
- for (const unsubscribe of onDisposeUnSubscribes) {
1724
- unsubscribe();
1725
- }
1726
- onForkUnSubscribe();
1727
- disposed = true;
1728
- };
1729
- }
1730
-
1731
1756
  function verboseFromCursor(
1732
1757
  reader: ITreeCursor,
1733
1758
  schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
@@ -8,9 +8,9 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
  import type {
9
9
  TreeContextAlpha,
10
10
  TreeBranchAlpha,
11
- RunTransactionParams,
12
- TransactionResult,
13
- TransactionResultExt,
11
+ RunTransactionParamsAlpha,
12
+ TransactionVoidResult,
13
+ TransactionValueResult,
14
14
  WithValue,
15
15
  } from "../simple-tree/index.js";
16
16
 
@@ -30,13 +30,16 @@ export class UnhydratedTreeContext implements TreeContextAlpha {
30
30
 
31
31
  public runTransaction<TValue>(
32
32
  t: () => WithValue<TValue>,
33
- params?: RunTransactionParams,
34
- ): TransactionResultExt<TValue, TValue>;
35
- public runTransaction(t: () => void, _params?: RunTransactionParams): TransactionResult;
33
+ params?: RunTransactionParamsAlpha,
34
+ ): TransactionValueResult<TValue, TValue>;
35
+ public runTransaction(
36
+ t: () => void,
37
+ _params?: RunTransactionParamsAlpha,
38
+ ): TransactionVoidResult;
36
39
  public runTransaction(
37
40
  t: () => WithValue<unknown> | void,
38
- params?: RunTransactionParams,
39
- ): TransactionResultExt<unknown, unknown> | TransactionResult {
41
+ params?: RunTransactionParamsAlpha,
42
+ ): TransactionValueResult<unknown, unknown> | TransactionVoidResult {
40
43
  for (const constraint of params?.preconditions ?? []) {
41
44
  assertValidConstraint(constraint, false);
42
45
  }
@@ -50,16 +53,16 @@ export class UnhydratedTreeContext implements TreeContextAlpha {
50
53
 
51
54
  public runTransactionAsync<TValue>(
52
55
  t: () => Promise<WithValue<TValue>>,
53
- params?: RunTransactionParams,
54
- ): Promise<TransactionResultExt<TValue, TValue>>;
56
+ params?: RunTransactionParamsAlpha,
57
+ ): Promise<TransactionValueResult<TValue, TValue>>;
55
58
  public runTransactionAsync(
56
59
  t: () => Promise<void>,
57
- params?: RunTransactionParams,
58
- ): Promise<TransactionResult>;
60
+ params?: RunTransactionParamsAlpha,
61
+ ): Promise<TransactionVoidResult>;
59
62
  public async runTransactionAsync(
60
63
  t: () => Promise<WithValue<unknown> | void>,
61
- params?: RunTransactionParams,
62
- ): Promise<TransactionResultExt<unknown, unknown> | TransactionResult> {
64
+ params?: RunTransactionParamsAlpha,
65
+ ): Promise<TransactionValueResult<unknown, unknown> | TransactionVoidResult> {
63
66
  if (this.transactionCount > 0) {
64
67
  throw new UsageError(
65
68
  "An asynchronous transaction cannot be started while another transaction is already in progress.",
@@ -78,7 +81,7 @@ export class UnhydratedTreeContext implements TreeContextAlpha {
78
81
 
79
82
  private static wrapTransactionResult<TValue>(
80
83
  value: WithValue<TValue> | void,
81
- ): TransactionResultExt<TValue, TValue> | TransactionResult {
84
+ ): TransactionValueResult<TValue, TValue> | TransactionVoidResult {
82
85
  if (value?.value !== undefined) {
83
86
  return { success: true, value: value.value };
84
87
  }
@@ -24,6 +24,7 @@ import type {
24
24
  RevisionTag,
25
25
  SchemaAndPolicy,
26
26
  } from "../core/index.js";
27
+ import type { IdentifierHealingConfig } from "../util/index.js";
27
28
 
28
29
  import type { SummaryData } from "./editManager.js";
29
30
  import { makeV1toV4andV6CodecWithVersion } from "./editManagerCodecsV1toV4.js";
@@ -37,8 +38,8 @@ export interface EditManagerEncodingContext {
37
38
  idCompressor: IIdCompressor;
38
39
  readonly schema?: SchemaAndPolicy;
39
40
  readonly isSummary: boolean;
40
- readonly healUnresolvableIdentifiersOnDecode?: boolean;
41
- readonly sharedObjectId?: string;
41
+ /** See {@link IdentifierHealingConfig}. */
42
+ readonly healing?: IdentifierHealingConfig;
42
43
  }
43
44
 
44
45
  /**
@@ -13,7 +13,12 @@ import type {
13
13
  RevisionTag,
14
14
  SchemaAndPolicy,
15
15
  } from "../core/index.js";
16
- import { mapIterable, type JsonCompatibleReadOnly, type Mutable } from "../util/index.js";
16
+ import {
17
+ mapIterable,
18
+ type IdentifierHealingConfig,
19
+ type JsonCompatibleReadOnly,
20
+ type Mutable,
21
+ } from "../util/index.js";
17
22
 
18
23
  import { decodeBranchId, encodeBranchId } from "./branchIdCodec.js";
19
24
  import type { SharedBranchSummaryData } from "./editManager.js";
@@ -34,14 +39,8 @@ export interface EditManagerEncodingContext {
34
39
  * but it is carried explicitly so downstream codecs can read it.
35
40
  */
36
41
  readonly isSummary: boolean;
37
- /**
38
- * See {@link ChangeEncodingContext.healUnresolvableIdentifiersOnDecode}.
39
- */
40
- readonly healUnresolvableIdentifiersOnDecode?: boolean;
41
- /**
42
- * See {@link ChangeEncodingContext.sharedObjectId}.
43
- */
44
- readonly sharedObjectId?: string;
42
+ /** See {@link IdentifierHealingConfig}. */
43
+ readonly healing?: IdentifierHealingConfig;
45
44
  }
46
45
 
47
46
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
@@ -207,8 +206,7 @@ export function decodeSharedBranch<TChangeset>(
207
206
  idCompressor: context.idCompressor,
208
207
  revision: undefined,
209
208
  isSummary: context.isSummary,
210
- healUnresolvableIdentifiersOnDecode: context.healUnresolvableIdentifiersOnDecode,
211
- sharedObjectId: context.sharedObjectId,
209
+ healing: context.healing,
212
210
  }),
213
211
  ),
214
212
  peerLocalBranches: new Map(
@@ -232,9 +230,7 @@ export function decodeSharedBranch<TChangeset>(
232
230
  idCompressor: context.idCompressor,
233
231
  revision: undefined,
234
232
  isSummary: context.isSummary,
235
- healUnresolvableIdentifiersOnDecode:
236
- context.healUnresolvableIdentifiersOnDecode,
237
- sharedObjectId: context.sharedObjectId,
233
+ healing: context.healing,
238
234
  },
239
235
  ),
240
236
  ),
@@ -13,6 +13,7 @@ import type {
13
13
  SchemaAndPolicy,
14
14
  } from "../core/index.js";
15
15
  import {
16
+ type IdentifierHealingConfig,
16
17
  type JsonCompatibleReadOnly,
17
18
  type JsonCompatibleReadOnlyObject,
18
19
  JsonCompatibleReadOnlySchema,
@@ -26,8 +27,8 @@ export interface EditManagerEncodingContext {
26
27
  idCompressor: IIdCompressor;
27
28
  readonly schema?: SchemaAndPolicy;
28
29
  readonly isSummary: boolean;
29
- readonly healUnresolvableIdentifiersOnDecode?: boolean;
30
- readonly sharedObjectId?: string;
30
+ /** See {@link IdentifierHealingConfig}. */
31
+ readonly healing?: IdentifierHealingConfig;
31
32
  }
32
33
 
33
34
  /**
@@ -14,6 +14,7 @@ import type {
14
14
  SchemaAndPolicy,
15
15
  } from "../core/index.js";
16
16
  import {
17
+ type IdentifierHealingConfig,
17
18
  type JsonCompatibleReadOnly,
18
19
  type JsonCompatibleReadOnlyObject,
19
20
  JsonCompatibleReadOnlySchema,
@@ -30,8 +31,8 @@ export interface EditManagerEncodingContext {
30
31
  idCompressor: IIdCompressor;
31
32
  readonly schema?: SchemaAndPolicy;
32
33
  readonly isSummary: boolean;
33
- readonly healUnresolvableIdentifiersOnDecode?: boolean;
34
- readonly sharedObjectId?: string;
34
+ /** See {@link IdentifierHealingConfig}. */
35
+ readonly healing?: IdentifierHealingConfig;
35
36
  }
36
37
 
37
38
  export function makeSharedBranchesCodecWithVersion<TChangeset>(
@@ -16,7 +16,7 @@ import type { SummaryTreeBuilder } from "@fluidframework/runtime-utils/internal"
16
16
 
17
17
  import type { IJsonCodec } from "../codec/index.js";
18
18
  import type { ChangeFamily, ChangeFamilyEditor, SchemaAndPolicy } from "../core/index.js";
19
- import type { JsonCompatibleReadOnly } from "../util/index.js";
19
+ import type { IdentifierHealingConfig, JsonCompatibleReadOnly } from "../util/index.js";
20
20
 
21
21
  import type { EditManager, SummaryData } from "./editManager.js";
22
22
  import type { EditManagerEncodingContext } from "./editManagerCodecs.js";
@@ -85,10 +85,8 @@ export class EditManagerSummarizer<TChangeset>
85
85
  private readonly idCompressor: IIdCompressor,
86
86
  minVersionForCollab: MinimumVersionForCollab,
87
87
  private readonly schemaAndPolicy?: SchemaAndPolicy,
88
- /** See {@link EditManagerEncodingContext.healUnresolvableIdentifiersOnDecode}. */
89
- private readonly healUnresolvableIdentifiersOnDecode?: boolean,
90
- /** See {@link EditManagerEncodingContext.sharedObjectId}. */
91
- private readonly sharedObjectId?: string,
88
+ /** See {@link IdentifierHealingConfig}. */
89
+ private readonly healing?: IdentifierHealingConfig,
92
90
  ) {
93
91
  super(
94
92
  EditManagerSummarizer.key,
@@ -111,8 +109,7 @@ export class EditManagerSummarizer<TChangeset>
111
109
  idCompressor: this.idCompressor,
112
110
  schema: this.schemaAndPolicy,
113
111
  isSummary: true,
114
- healUnresolvableIdentifiersOnDecode: this.healUnresolvableIdentifiersOnDecode,
115
- sharedObjectId: this.sharedObjectId,
112
+ healing: this.healing,
116
113
  };
117
114
  const jsonCompatible = this.codec.encode(this.editManager.getSummaryData(), context);
118
115
  const dataString = stringify(jsonCompatible);
@@ -137,8 +134,7 @@ export class EditManagerSummarizer<TChangeset>
137
134
  const data = this.codec.decode(summary, {
138
135
  idCompressor: this.idCompressor,
139
136
  isSummary: true,
140
- healUnresolvableIdentifiersOnDecode: this.healUnresolvableIdentifiersOnDecode,
141
- sharedObjectId: this.sharedObjectId,
137
+ healing: this.healing,
142
138
  });
143
139
  this.editManager.loadSummaryData(data);
144
140
  }