@fluidframework/tree 2.102.0 → 2.103.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 (367) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/codec/versioned/format.d.ts +5 -4
  3. package/dist/codec/versioned/format.d.ts.map +1 -1
  4. package/dist/codec/versioned/format.js +26 -3
  5. package/dist/codec/versioned/format.js.map +1 -1
  6. package/dist/core/rebase/types.d.ts +4 -3
  7. package/dist/core/rebase/types.d.ts.map +1 -1
  8. package/dist/core/rebase/types.js +27 -4
  9. package/dist/core/rebase/types.js.map +1 -1
  10. package/dist/core/schema-stored/formatV1.d.ts +16 -15
  11. package/dist/core/schema-stored/formatV1.d.ts.map +1 -1
  12. package/dist/core/schema-stored/formatV1.js +31 -8
  13. package/dist/core/schema-stored/formatV1.js.map +1 -1
  14. package/dist/core/schema-stored/formatV2.d.ts +29 -28
  15. package/dist/core/schema-stored/formatV2.d.ts.map +1 -1
  16. package/dist/core/schema-stored/formatV2.js +33 -10
  17. package/dist/core/schema-stored/formatV2.js.map +1 -1
  18. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +11 -10
  19. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  20. package/dist/core/tree/detachedFieldIndexFormatCommon.js +33 -10
  21. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  22. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +7 -6
  23. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  24. package/dist/core/tree/detachedFieldIndexFormatV2.js +25 -2
  25. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  26. package/dist/core/tree/persistedTreeTextFormat.d.ts +19 -18
  27. package/dist/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  28. package/dist/core/tree/persistedTreeTextFormat.js +33 -10
  29. package/dist/core/tree/persistedTreeTextFormat.js.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/chunkTree.js +1 -1
  32. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +13 -12
  34. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js +36 -13
  36. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  37. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.d.ts +36 -35
  38. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.d.ts.map +1 -1
  39. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js +41 -18
  40. package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.d.ts +26 -25
  42. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.d.ts.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js +27 -4
  44. package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.d.ts +24 -23
  46. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.d.ts.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js +30 -7
  48. package/dist/feature-libraries/chunked-forest/codec/format/formatVText.js.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +66 -14
  50. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/uniformChunk.js +101 -36
  52. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  53. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  54. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +36 -14
  55. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  56. package/dist/feature-libraries/forest-summary/formatCommon.d.ts +6 -5
  57. package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  58. package/dist/feature-libraries/forest-summary/formatCommon.js +26 -3
  59. package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  60. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +4 -3
  61. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  62. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js +26 -3
  63. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  64. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +45 -44
  65. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  66. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +48 -25
  67. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  68. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +23 -22
  69. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  70. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +29 -6
  71. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  72. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +9 -8
  73. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  74. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js +31 -8
  75. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -1
  76. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +14 -13
  77. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  78. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +34 -11
  79. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -1
  80. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +5 -4
  81. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  82. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +25 -2
  83. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  84. package/dist/feature-libraries/schema-index/formatV1.d.ts +15 -14
  85. package/dist/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  86. package/dist/feature-libraries/schema-index/formatV1.js +27 -4
  87. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  88. package/dist/feature-libraries/schema-index/formatV2.d.ts +20 -19
  89. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  90. package/dist/feature-libraries/schema-index/formatV2.js +27 -4
  91. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  92. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  93. package/dist/feature-libraries/sequence-field/compose.js +1 -3
  94. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  95. package/dist/feature-libraries/sequence-field/formatV1.d.ts +283 -282
  96. package/dist/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
  97. package/dist/feature-libraries/sequence-field/formatV1.js +63 -40
  98. package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
  99. package/dist/feature-libraries/sequence-field/formatV2.d.ts +180 -179
  100. package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  101. package/dist/feature-libraries/sequence-field/formatV2.js +55 -32
  102. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  103. package/dist/feature-libraries/sequence-field/formatV3.d.ts +126 -125
  104. package/dist/feature-libraries/sequence-field/formatV3.d.ts.map +1 -1
  105. package/dist/feature-libraries/sequence-field/formatV3.js +27 -4
  106. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
  107. package/dist/packageVersion.d.ts +1 -1
  108. package/dist/packageVersion.js +1 -1
  109. package/dist/packageVersion.js.map +1 -1
  110. package/dist/shared-tree/sharedTree.d.ts +2 -2
  111. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  112. package/dist/shared-tree/sharedTree.js.map +1 -1
  113. package/dist/shared-tree/sharedTreeChangeFormat.d.ts +8 -7
  114. package/dist/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  115. package/dist/shared-tree/sharedTreeChangeFormat.js +28 -5
  116. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  117. package/dist/shared-tree/treeCheckout.d.ts +3 -3
  118. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  119. package/dist/shared-tree/treeCheckout.js.map +1 -1
  120. package/dist/shared-tree-core/editManager.d.ts +2 -2
  121. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  122. package/dist/shared-tree-core/editManager.js.map +1 -1
  123. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +35 -34
  124. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  125. package/dist/shared-tree-core/editManagerFormatCommons.js +39 -16
  126. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  127. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +15 -15
  128. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  129. package/dist/shared-tree-core/editManagerFormatV1toV4.js +33 -10
  130. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  131. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts +40 -40
  132. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
  133. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js +27 -4
  134. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
  135. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  136. package/dist/shared-tree-core/messageCodecVSharedBranches.js +25 -2
  137. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  138. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +5 -5
  139. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  140. package/dist/shared-tree-core/messageFormatV1ToV4.js +31 -8
  141. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  142. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts +7 -7
  143. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  144. package/dist/shared-tree-core/messageFormatVSharedBranches.js +29 -6
  145. package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  146. package/dist/simple-tree/core/treeNodeKernel.d.ts +5 -0
  147. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  148. package/dist/simple-tree/core/treeNodeKernel.js +37 -13
  149. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  150. package/dist/simple-tree/simpleSchemaFormatV1.d.ts +121 -120
  151. package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -1
  152. package/dist/simple-tree/simpleSchemaFormatV1.js +54 -31
  153. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  154. package/dist/util/typeboxBrand.d.ts +1 -1
  155. package/dist/util/typeboxBrand.d.ts.map +1 -1
  156. package/dist/util/typeboxBrand.js +26 -3
  157. package/dist/util/typeboxBrand.js.map +1 -1
  158. package/dist/util/utils.d.ts +2 -2
  159. package/dist/util/utils.d.ts.map +1 -1
  160. package/dist/util/utils.js +25 -2
  161. package/dist/util/utils.js.map +1 -1
  162. package/eslint.config.mts +44 -0
  163. package/lib/codec/versioned/format.d.ts +5 -4
  164. package/lib/codec/versioned/format.d.ts.map +1 -1
  165. package/lib/codec/versioned/format.js +1 -1
  166. package/lib/codec/versioned/format.js.map +1 -1
  167. package/lib/core/rebase/types.d.ts +4 -3
  168. package/lib/core/rebase/types.d.ts.map +1 -1
  169. package/lib/core/rebase/types.js +1 -1
  170. package/lib/core/rebase/types.js.map +1 -1
  171. package/lib/core/schema-stored/formatV1.d.ts +16 -15
  172. package/lib/core/schema-stored/formatV1.d.ts.map +1 -1
  173. package/lib/core/schema-stored/formatV1.js +1 -1
  174. package/lib/core/schema-stored/formatV1.js.map +1 -1
  175. package/lib/core/schema-stored/formatV2.d.ts +29 -28
  176. package/lib/core/schema-stored/formatV2.d.ts.map +1 -1
  177. package/lib/core/schema-stored/formatV2.js +1 -1
  178. package/lib/core/schema-stored/formatV2.js.map +1 -1
  179. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +11 -10
  180. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  181. package/lib/core/tree/detachedFieldIndexFormatCommon.js +1 -1
  182. package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  183. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +7 -6
  184. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  185. package/lib/core/tree/detachedFieldIndexFormatV2.js +1 -1
  186. package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  187. package/lib/core/tree/persistedTreeTextFormat.d.ts +19 -18
  188. package/lib/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  189. package/lib/core/tree/persistedTreeTextFormat.js +1 -1
  190. package/lib/core/tree/persistedTreeTextFormat.js.map +1 -1
  191. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  192. package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -1
  193. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  194. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +13 -12
  195. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  196. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.js +1 -1
  197. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  198. package/lib/feature-libraries/chunked-forest/codec/format/formatV1.d.ts +36 -35
  199. package/lib/feature-libraries/chunked-forest/codec/format/formatV1.d.ts.map +1 -1
  200. package/lib/feature-libraries/chunked-forest/codec/format/formatV1.js +1 -1
  201. package/lib/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -1
  202. package/lib/feature-libraries/chunked-forest/codec/format/formatV2.d.ts +26 -25
  203. package/lib/feature-libraries/chunked-forest/codec/format/formatV2.d.ts.map +1 -1
  204. package/lib/feature-libraries/chunked-forest/codec/format/formatV2.js +1 -1
  205. package/lib/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -1
  206. package/lib/feature-libraries/chunked-forest/codec/format/formatVText.d.ts +24 -23
  207. package/lib/feature-libraries/chunked-forest/codec/format/formatVText.d.ts.map +1 -1
  208. package/lib/feature-libraries/chunked-forest/codec/format/formatVText.js +1 -1
  209. package/lib/feature-libraries/chunked-forest/codec/format/formatVText.js.map +1 -1
  210. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +66 -14
  211. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  212. package/lib/feature-libraries/chunked-forest/uniformChunk.js +101 -36
  213. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  214. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  215. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +36 -14
  216. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  217. package/lib/feature-libraries/forest-summary/formatCommon.d.ts +6 -5
  218. package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  219. package/lib/feature-libraries/forest-summary/formatCommon.js +1 -1
  220. package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  221. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +4 -3
  222. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  223. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js +1 -1
  224. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  225. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +45 -44
  226. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  227. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js +1 -1
  228. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  229. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +23 -22
  230. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  231. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +1 -1
  232. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  233. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +9 -8
  234. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  235. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.js +1 -1
  236. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -1
  237. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +14 -13
  238. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  239. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +1 -1
  240. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -1
  241. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +5 -4
  242. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  243. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +1 -1
  244. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  245. package/lib/feature-libraries/schema-index/formatV1.d.ts +15 -14
  246. package/lib/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  247. package/lib/feature-libraries/schema-index/formatV1.js +1 -1
  248. package/lib/feature-libraries/schema-index/formatV1.js.map +1 -1
  249. package/lib/feature-libraries/schema-index/formatV2.d.ts +20 -19
  250. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  251. package/lib/feature-libraries/schema-index/formatV2.js +1 -1
  252. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
  253. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  254. package/lib/feature-libraries/sequence-field/compose.js +1 -3
  255. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  256. package/lib/feature-libraries/sequence-field/formatV1.d.ts +283 -282
  257. package/lib/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
  258. package/lib/feature-libraries/sequence-field/formatV1.js +1 -1
  259. package/lib/feature-libraries/sequence-field/formatV1.js.map +1 -1
  260. package/lib/feature-libraries/sequence-field/formatV2.d.ts +180 -179
  261. package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  262. package/lib/feature-libraries/sequence-field/formatV2.js +1 -1
  263. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  264. package/lib/feature-libraries/sequence-field/formatV3.d.ts +126 -125
  265. package/lib/feature-libraries/sequence-field/formatV3.d.ts.map +1 -1
  266. package/lib/feature-libraries/sequence-field/formatV3.js +1 -1
  267. package/lib/feature-libraries/sequence-field/formatV3.js.map +1 -1
  268. package/lib/packageVersion.d.ts +1 -1
  269. package/lib/packageVersion.js +1 -1
  270. package/lib/packageVersion.js.map +1 -1
  271. package/lib/shared-tree/sharedTree.d.ts +2 -2
  272. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  273. package/lib/shared-tree/sharedTree.js +1 -1
  274. package/lib/shared-tree/sharedTree.js.map +1 -1
  275. package/lib/shared-tree/sharedTreeChangeFormat.d.ts +8 -7
  276. package/lib/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  277. package/lib/shared-tree/sharedTreeChangeFormat.js +1 -1
  278. package/lib/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  279. package/lib/shared-tree/treeCheckout.d.ts +3 -3
  280. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  281. package/lib/shared-tree/treeCheckout.js +1 -1
  282. package/lib/shared-tree/treeCheckout.js.map +1 -1
  283. package/lib/shared-tree-core/editManager.d.ts +2 -2
  284. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  285. package/lib/shared-tree-core/editManager.js.map +1 -1
  286. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +35 -34
  287. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  288. package/lib/shared-tree-core/editManagerFormatCommons.js +1 -1
  289. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  290. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +15 -15
  291. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  292. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -1
  293. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  294. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts +40 -40
  295. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
  296. package/lib/shared-tree-core/editManagerFormatVSharedBranches.js +1 -1
  297. package/lib/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
  298. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  299. package/lib/shared-tree-core/messageCodecVSharedBranches.js +1 -1
  300. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  301. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +5 -5
  302. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  303. package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -1
  304. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  305. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts +7 -7
  306. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  307. package/lib/shared-tree-core/messageFormatVSharedBranches.js +1 -1
  308. package/lib/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  309. package/lib/simple-tree/core/treeNodeKernel.d.ts +5 -0
  310. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  311. package/lib/simple-tree/core/treeNodeKernel.js +35 -12
  312. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  313. package/lib/simple-tree/simpleSchemaFormatV1.d.ts +121 -120
  314. package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -1
  315. package/lib/simple-tree/simpleSchemaFormatV1.js +1 -1
  316. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  317. package/lib/util/typeboxBrand.d.ts +1 -1
  318. package/lib/util/typeboxBrand.d.ts.map +1 -1
  319. package/lib/util/typeboxBrand.js +1 -1
  320. package/lib/util/typeboxBrand.js.map +1 -1
  321. package/lib/util/utils.d.ts +2 -2
  322. package/lib/util/utils.d.ts.map +1 -1
  323. package/lib/util/utils.js +1 -1
  324. package/lib/util/utils.js.map +1 -1
  325. package/package.json +21 -21
  326. package/src/codec/versioned/format.ts +2 -1
  327. package/src/core/rebase/types.ts +1 -1
  328. package/src/core/schema-stored/formatV1.ts +2 -1
  329. package/src/core/schema-stored/formatV2.ts +2 -1
  330. package/src/core/tree/detachedFieldIndexFormatCommon.ts +2 -1
  331. package/src/core/tree/detachedFieldIndexFormatV2.ts +2 -1
  332. package/src/core/tree/persistedTreeTextFormat.ts +2 -1
  333. package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -2
  334. package/src/feature-libraries/chunked-forest/codec/format/formatGeneric.ts +2 -1
  335. package/src/feature-libraries/chunked-forest/codec/format/formatV1.ts +2 -1
  336. package/src/feature-libraries/chunked-forest/codec/format/formatV2.ts +2 -1
  337. package/src/feature-libraries/chunked-forest/codec/format/formatVText.ts +2 -1
  338. package/src/feature-libraries/chunked-forest/uniformChunk.ts +131 -44
  339. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +36 -14
  340. package/src/feature-libraries/forest-summary/formatCommon.ts +2 -1
  341. package/src/feature-libraries/modular-schema/genericFieldKindFormat.ts +2 -1
  342. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +2 -1
  343. package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +2 -1
  344. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV1.ts +2 -1
  345. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV2.ts +2 -1
  346. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +2 -1
  347. package/src/feature-libraries/schema-index/formatV1.ts +2 -1
  348. package/src/feature-libraries/schema-index/formatV2.ts +2 -1
  349. package/src/feature-libraries/sequence-field/compose.ts +1 -4
  350. package/src/feature-libraries/sequence-field/formatV1.ts +2 -1
  351. package/src/feature-libraries/sequence-field/formatV2.ts +2 -1
  352. package/src/feature-libraries/sequence-field/formatV3.ts +2 -1
  353. package/src/packageVersion.ts +1 -1
  354. package/src/shared-tree/sharedTree.ts +2 -5
  355. package/src/shared-tree/sharedTreeChangeFormat.ts +2 -1
  356. package/src/shared-tree/treeCheckout.ts +3 -6
  357. package/src/shared-tree-core/editManager.ts +2 -2
  358. package/src/shared-tree-core/editManagerFormatCommons.ts +2 -1
  359. package/src/shared-tree-core/editManagerFormatV1toV4.ts +2 -1
  360. package/src/shared-tree-core/editManagerFormatVSharedBranches.ts +2 -1
  361. package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -1
  362. package/src/shared-tree-core/messageFormatV1ToV4.ts +2 -1
  363. package/src/shared-tree-core/messageFormatVSharedBranches.ts +2 -1
  364. package/src/simple-tree/core/treeNodeKernel.ts +39 -15
  365. package/src/simple-tree/simpleSchemaFormatV1.ts +2 -1
  366. package/src/util/typeboxBrand.ts +2 -1
  367. package/src/util/utils.ts +2 -1
@@ -4,7 +4,8 @@
4
4
  */
5
5
 
6
6
  import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
7
- import { type TAnySchema, Type } from "@sinclair/typebox";
7
+ import * as Type from "@sinclair/typebox";
8
+ import type { TAnySchema } from "@sinclair/typebox";
8
9
 
9
10
  import type { CodecAndSchema, IJsonCodec, Versioned } from "../codec/index.js";
10
11
  import type {
@@ -4,7 +4,8 @@
4
4
  */
5
5
 
6
6
  import type { SessionId } from "@fluidframework/id-compressor";
7
- import { type TSchema, Type } from "@sinclair/typebox";
7
+ import * as Type from "@sinclair/typebox";
8
+ import type { TSchema } from "@sinclair/typebox";
8
9
 
9
10
  import { type EncodedRevisionTag, RevisionTagSchema, SessionIdSchema } from "../core/index.js";
10
11
  import type { JsonCompatibleReadOnly } from "../util/index.js";
@@ -4,7 +4,8 @@
4
4
  */
5
5
 
6
6
  import type { SessionId } from "@fluidframework/id-compressor";
7
- import { type TSchema, Type } from "@sinclair/typebox";
7
+ import * as Type from "@sinclair/typebox";
8
+ import type { TSchema } from "@sinclair/typebox";
8
9
 
9
10
  import { type EncodedRevisionTag, RevisionTagSchema, SessionIdSchema } from "../core/index.js";
10
11
  import type { JsonCompatibleReadOnly } from "../util/index.js";
@@ -332,34 +332,53 @@ export function withBufferedTreeEvents(callback: () => void): void {
332
332
  callback();
333
333
  } else {
334
334
  bufferTreeEvents = true;
335
+ const toFlush: KernelEventBuffer[] = [];
335
336
  try {
336
337
  callback();
337
338
  } finally {
338
339
  bufferTreeEvents = false;
339
- flushEventsEmitter.emit("flush");
340
+ // Snapshot-and-clear before flushing to safely handle reentrant `withBufferedTreeEvents`
341
+ // calls made by listeners that fire during `buffer.flush()` below:
342
+ // - Iterating an array means a reentrant call's `clear()` cannot truncate our loop
343
+ // and cause buffers later in `activeBuffers` to be skipped (and their events dropped).
344
+ // - Clearing up front means the reentrant call starts from an empty set, so its own
345
+ // finally block only flushes what it buffered - not a re-flush of our remaining buffers.
346
+ toFlush.push(...activeBuffers);
347
+ activeBuffers.clear();
348
+ }
349
+
350
+ // Don't flush/emit events in the case of an error
351
+ for (const buffer of toFlush) {
352
+ buffer.flush();
340
353
  }
341
354
  }
342
355
  }
343
356
 
344
357
  /**
345
- * Event emitter to notify subscribers when tree events buffered due to {@link withBufferedTreeEvents} should be flushed.
358
+ * Set of {@link KernelEventBuffer}s that have accumulated buffered events during the current
359
+ * {@link withBufferedTreeEvents} window and therefore need to be flushed when it ends.
360
+ *
361
+ * @remarks
362
+ * The set should be empty whenever no buffering window is in progress.
346
363
  */
347
- const flushEventsEmitter = createEmitter<{
348
- flush: () => void;
349
- }>();
364
+ const activeBuffers: Set<KernelEventBuffer> = new Set();
365
+
366
+ /**
367
+ * Test-only accessor for the current size of {@link activeBuffers}.
368
+ * @remarks Only exported for testing purposes. Not intended for any other use.
369
+ */
370
+ export function TEST_activeBufferCount(): number {
371
+ return activeBuffers.size;
372
+ }
350
373
 
351
374
  /**
352
375
  * Event emitter for {@link TreeNodeKernel}, which optionally buffers events based on {@link bufferTreeEvents}.
353
- * @remarks Listens to {@link flushEventsEmitter} to know when to flush any buffered events.
376
+ * @remarks When buffering is active, this adds itself to {@link activeBuffers} so that
377
+ * {@link withBufferedTreeEvents} can flush it at the end of the buffering window.
354
378
  */
355
379
  class KernelEventBuffer implements Listenable<KernelEvents> {
356
380
  #disposed: boolean = false;
357
381
 
358
- /**
359
- * Listen to {@link flushEventsEmitter} to know when to flush buffered events.
360
- */
361
- readonly #disposeOnFlushListener = flushEventsEmitter.on("flush", this.flush.bind(this));
362
-
363
382
  readonly #events = createEmitter<KernelEvents>();
364
383
 
365
384
  #eventSource: Listenable<KernelEvents> & HasListeners<KernelEvents>;
@@ -501,6 +520,7 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
501
520
  fieldMarks: ReadonlyMap<FieldKey, readonly DeltaMark[]>,
502
521
  ): void {
503
522
  if (bufferTreeEvents) {
523
+ activeBuffers.add(this);
504
524
  for (const fieldKey of changedFields) {
505
525
  this.#childrenChangedBuffer.add(fieldKey);
506
526
  }
@@ -528,6 +548,7 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
528
548
 
529
549
  #handleSubtreeChangedAfterBatch(): void {
530
550
  if (bufferTreeEvents) {
551
+ activeBuffers.add(this);
531
552
  this.#subTreeChangedBuffer = true;
532
553
  } else {
533
554
  this.#events.emit("subtreeChangedAfterBatch");
@@ -565,12 +586,15 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
565
586
  return;
566
587
  }
567
588
 
568
- assert(
569
- this.#childrenChangedBuffer.size === 0 && !this.#subTreeChangedBuffer,
570
- 0xc52 /* Buffered kernel events should have been flushed before disposing. */,
589
+ debugAssert(
590
+ () =>
591
+ (this.#childrenChangedBuffer.size === 0 && !this.#subTreeChangedBuffer) ||
592
+ "Buffered kernel events should have been flushed before disposing.",
593
+ );
594
+ debugAssert(
595
+ () => !activeBuffers.has(this) || "Disposed buffer should not be in activeBuffers.",
571
596
  );
572
597
 
573
- this.#disposeOnFlushListener();
574
598
  for (const off of this.#disposeSourceListeners.values()) {
575
599
  off();
576
600
  }
@@ -11,7 +11,8 @@
11
11
  * It may not include some details which impact maintenance of application enforced invariants (like persisted metadata or logic in view schema).
12
12
  */
13
13
 
14
- import { Type, type ObjectOptions, type Static } from "@sinclair/typebox";
14
+ import * as Type from "@sinclair/typebox";
15
+ import type { ObjectOptions, Static } from "@sinclair/typebox";
15
16
 
16
17
  const noAdditionalProps: ObjectOptions = { additionalProperties: false };
17
18
 
@@ -3,7 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { type NumberOptions, type TUnsafe, Type } from "@sinclair/typebox";
6
+ import * as Type from "@sinclair/typebox";
7
+ import type { NumberOptions, TUnsafe } from "@sinclair/typebox";
7
8
 
8
9
  /**
9
10
  * Create a TypeBox string schema for a branded string type.
package/src/util/utils.ts CHANGED
@@ -4,7 +4,8 @@
4
4
  */
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
- import { Type, type TUnsafe } from "@sinclair/typebox";
7
+ import * as Type from "@sinclair/typebox";
8
+ import type { TUnsafe } from "@sinclair/typebox";
8
9
 
9
10
  /**
10
11
  * Subset of Map interface.