@fluidframework/tree 2.71.0 → 2.72.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 (603) hide show
  1. package/CHANGELOG.md +26 -40
  2. package/api-report/tree.alpha.api.md +27 -18
  3. package/api-report/tree.beta.api.md +42 -0
  4. package/api-report/tree.legacy.beta.api.md +42 -0
  5. package/dist/alpha.d.ts +9 -7
  6. package/dist/api.js +1 -1
  7. package/dist/api.js.map +1 -1
  8. package/dist/beta.d.ts +7 -0
  9. package/dist/codec/codec.d.ts +16 -1
  10. package/dist/codec/codec.d.ts.map +1 -1
  11. package/dist/codec/codec.js +16 -3
  12. package/dist/codec/codec.js.map +1 -1
  13. package/dist/core/index.d.ts +1 -1
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/core/index.js +2 -2
  16. package/dist/core/index.js.map +1 -1
  17. package/dist/core/schema-stored/index.d.ts +1 -1
  18. package/dist/core/schema-stored/index.d.ts.map +1 -1
  19. package/dist/core/schema-stored/index.js +2 -2
  20. package/dist/core/schema-stored/index.js.map +1 -1
  21. package/dist/core/schema-stored/schema.d.ts +6 -6
  22. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  23. package/dist/core/schema-stored/schema.js +6 -7
  24. package/dist/core/schema-stored/schema.js.map +1 -1
  25. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  26. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  27. package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  29. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  30. package/dist/core/tree/detachedFieldIndexCodecV1.js +3 -2
  31. package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  32. package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  33. package/dist/core/tree/detachedFieldIndexCodecV2.js +3 -1
  34. package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  35. package/dist/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  36. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  37. package/dist/core/tree/detachedFieldIndexCodecs.js +29 -8
  38. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  39. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  40. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  41. package/dist/core/tree/detachedFieldIndexFormatCommon.js +8 -1
  42. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  43. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  44. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  45. package/dist/core/tree/detachedFieldIndexFormatV1.js +3 -3
  46. package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  47. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  48. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  49. package/dist/core/tree/detachedFieldIndexFormatV2.js +3 -3
  50. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  51. package/dist/core/tree/index.d.ts +2 -1
  52. package/dist/core/tree/index.d.ts.map +1 -1
  53. package/dist/core/tree/index.js.map +1 -1
  54. package/dist/external-utilities/typeboxValidator.js +1 -1
  55. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  56. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  57. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -8
  59. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  60. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  62. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  63. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/format.js +9 -4
  65. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  66. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  67. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/index.js +1 -2
  69. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  70. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +1 -1
  72. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  74. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  75. package/dist/feature-libraries/chunked-forest/index.js +1 -2
  76. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  77. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  78. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  79. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +3 -21
  80. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  81. package/dist/feature-libraries/forest-summary/codec.d.ts +4 -5
  82. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  83. package/dist/feature-libraries/forest-summary/codec.js +15 -4
  84. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  85. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  86. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  87. package/dist/feature-libraries/forest-summary/format.d.ts +8 -1
  88. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  89. package/dist/feature-libraries/forest-summary/format.js +8 -3
  90. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  91. package/dist/feature-libraries/forest-summary/index.d.ts +2 -1
  92. package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
  93. package/dist/feature-libraries/forest-summary/index.js +3 -1
  94. package/dist/feature-libraries/forest-summary/index.js.map +1 -1
  95. package/dist/feature-libraries/index.d.ts +3 -3
  96. package/dist/feature-libraries/index.d.ts.map +1 -1
  97. package/dist/feature-libraries/index.js +2 -2
  98. package/dist/feature-libraries/index.js.map +1 -1
  99. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  100. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  101. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  102. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  103. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  104. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +5 -4
  105. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  106. package/dist/feature-libraries/schema-index/codec.d.ts +10 -10
  107. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  108. package/dist/feature-libraries/schema-index/codec.js +22 -18
  109. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  110. package/dist/feature-libraries/schema-index/formatV1.d.ts +2 -2
  111. package/dist/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  112. package/dist/feature-libraries/schema-index/formatV1.js +1 -1
  113. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  114. package/dist/feature-libraries/schema-index/formatV2.d.ts +1 -2
  115. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  116. package/dist/feature-libraries/schema-index/formatV2.js +1 -1
  117. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  118. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  119. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  120. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  121. package/dist/index.d.ts +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +3 -1
  124. package/dist/index.js.map +1 -1
  125. package/dist/legacy.d.ts +7 -0
  126. package/dist/packageVersion.d.ts +1 -1
  127. package/dist/packageVersion.js +1 -1
  128. package/dist/packageVersion.js.map +1 -1
  129. package/dist/shared-tree/independentView.d.ts +1 -1
  130. package/dist/shared-tree/independentView.d.ts.map +1 -1
  131. package/dist/shared-tree/independentView.js +22 -15
  132. package/dist/shared-tree/independentView.js.map +1 -1
  133. package/dist/shared-tree/sharedTree.d.ts +12 -16
  134. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  135. package/dist/shared-tree/sharedTree.js +87 -127
  136. package/dist/shared-tree/sharedTree.js.map +1 -1
  137. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  138. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  139. package/dist/shared-tree/sharedTreeChangeCodecs.js +12 -11
  140. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  141. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  142. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  143. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  144. package/dist/shared-tree/treeAlpha.d.ts +1 -1
  145. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  146. package/dist/shared-tree/treeAlpha.js +4 -2
  147. package/dist/shared-tree/treeAlpha.js.map +1 -1
  148. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  149. package/dist/shared-tree/treeCheckout.js +1 -3
  150. package/dist/shared-tree/treeCheckout.js.map +1 -1
  151. package/dist/shared-tree-core/editManagerCodecs.d.ts +19 -6
  152. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  153. package/dist/shared-tree-core/editManagerCodecs.js +35 -17
  154. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  155. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  156. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  157. package/dist/shared-tree-core/editManagerFormatCommons.js +43 -1
  158. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  159. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  160. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  161. package/dist/shared-tree-core/editManagerFormatV1toV4.js +4 -4
  162. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  163. package/dist/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  164. package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  165. package/dist/shared-tree-core/editManagerFormatV5.js +1 -1
  166. package/dist/shared-tree-core/editManagerFormatV5.js.map +1 -1
  167. package/dist/shared-tree-core/index.d.ts +5 -3
  168. package/dist/shared-tree-core/index.d.ts.map +1 -1
  169. package/dist/shared-tree-core/index.js +11 -3
  170. package/dist/shared-tree-core/index.js.map +1 -1
  171. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  172. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  173. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  174. package/dist/shared-tree-core/messageCodecV5.d.ts +2 -1
  175. package/dist/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  176. package/dist/shared-tree-core/messageCodecV5.js.map +1 -1
  177. package/dist/shared-tree-core/messageCodecs.d.ts +19 -6
  178. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  179. package/dist/shared-tree-core/messageCodecs.js +38 -21
  180. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  181. package/dist/shared-tree-core/messageFormat.d.ts +50 -0
  182. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -0
  183. package/dist/shared-tree-core/messageFormat.js +51 -0
  184. package/dist/shared-tree-core/messageFormat.js.map +1 -0
  185. package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -8
  186. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  187. package/dist/shared-tree-core/sharedTreeCore.js +3 -3
  188. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  189. package/dist/simple-tree/api/discrepancies.d.ts +2 -2
  190. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  191. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  192. package/dist/simple-tree/api/incrementalAllowedTypes.js +1 -1
  193. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  194. package/dist/simple-tree/api/index.d.ts +3 -2
  195. package/dist/simple-tree/api/index.d.ts.map +1 -1
  196. package/dist/simple-tree/api/index.js +4 -1
  197. package/dist/simple-tree/api/index.js.map +1 -1
  198. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  199. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  200. package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -52
  201. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  202. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  203. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  204. package/dist/simple-tree/api/schemaFactoryBeta.js +61 -7
  205. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  206. package/dist/simple-tree/api/schemaFromSimple.js +6 -3
  207. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  208. package/dist/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  209. package/dist/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  210. package/dist/simple-tree/api/simpleSchemaCodec.js +292 -0
  211. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  212. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  213. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  214. package/dist/simple-tree/api/storedSchema.js +8 -6
  215. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  216. package/dist/simple-tree/api/tree.d.ts +2 -2
  217. package/dist/simple-tree/api/tree.js.map +1 -1
  218. package/dist/simple-tree/api/typesUnsafe.d.ts +6 -6
  219. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  220. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +18 -3
  221. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  222. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +78 -35
  223. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  224. package/dist/simple-tree/core/allowedTypes.d.ts +3 -3
  225. package/dist/simple-tree/core/allowedTypes.js +1 -1
  226. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  227. package/dist/simple-tree/core/treeNode.js +1 -1
  228. package/dist/simple-tree/core/treeNode.js.map +1 -1
  229. package/dist/simple-tree/index.d.ts +2 -1
  230. package/dist/simple-tree/index.d.ts.map +1 -1
  231. package/dist/simple-tree/index.js +4 -0
  232. package/dist/simple-tree/index.js.map +1 -1
  233. package/dist/simple-tree/node-kinds/array/arrayNode.js +1 -1
  234. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  235. package/dist/simple-tree/node-kinds/map/mapNode.js +1 -1
  236. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  237. package/dist/simple-tree/node-kinds/object/objectNode.js +2 -2
  238. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  239. package/dist/simple-tree/node-kinds/record/recordNode.js +2 -2
  240. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  241. package/dist/simple-tree/simpleSchema.d.ts +11 -3
  242. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  243. package/dist/simple-tree/simpleSchema.js.map +1 -1
  244. package/dist/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  245. package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  246. package/dist/simple-tree/simpleSchemaFormatV1.js +115 -0
  247. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  248. package/dist/tableSchema.d.ts.map +1 -1
  249. package/dist/tableSchema.js +1 -1
  250. package/dist/tableSchema.js.map +1 -1
  251. package/dist/treeFactory.d.ts +3 -1
  252. package/dist/treeFactory.d.ts.map +1 -1
  253. package/dist/treeFactory.js +26 -2
  254. package/dist/treeFactory.js.map +1 -1
  255. package/dist/util/brand.d.ts +31 -2
  256. package/dist/util/brand.d.ts.map +1 -1
  257. package/dist/util/brand.js +28 -2
  258. package/dist/util/brand.js.map +1 -1
  259. package/dist/util/brandedMap.d.ts +3 -1
  260. package/dist/util/brandedMap.d.ts.map +1 -1
  261. package/dist/util/brandedMap.js.map +1 -1
  262. package/dist/util/index.d.ts +1 -1
  263. package/dist/util/index.d.ts.map +1 -1
  264. package/dist/util/index.js +3 -2
  265. package/dist/util/index.js.map +1 -1
  266. package/lib/alpha.d.ts +9 -7
  267. package/lib/api.js +2 -2
  268. package/lib/api.js.map +1 -1
  269. package/lib/beta.d.ts +7 -0
  270. package/lib/codec/codec.d.ts +16 -1
  271. package/lib/codec/codec.d.ts.map +1 -1
  272. package/lib/codec/codec.js +16 -3
  273. package/lib/codec/codec.js.map +1 -1
  274. package/lib/core/index.d.ts +1 -1
  275. package/lib/core/index.d.ts.map +1 -1
  276. package/lib/core/index.js +1 -1
  277. package/lib/core/index.js.map +1 -1
  278. package/lib/core/schema-stored/index.d.ts +1 -1
  279. package/lib/core/schema-stored/index.d.ts.map +1 -1
  280. package/lib/core/schema-stored/index.js +1 -1
  281. package/lib/core/schema-stored/index.js.map +1 -1
  282. package/lib/core/schema-stored/schema.d.ts +6 -6
  283. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  284. package/lib/core/schema-stored/schema.js +6 -7
  285. package/lib/core/schema-stored/schema.js.map +1 -1
  286. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  287. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  288. package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  289. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  290. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  291. package/lib/core/tree/detachedFieldIndexCodecV1.js +3 -2
  292. package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  293. package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  294. package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -2
  295. package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  296. package/lib/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  297. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  298. package/lib/core/tree/detachedFieldIndexCodecs.js +29 -8
  299. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  300. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  301. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  302. package/lib/core/tree/detachedFieldIndexFormatCommon.js +7 -0
  303. package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  304. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  305. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  306. package/lib/core/tree/detachedFieldIndexFormatV1.js +3 -3
  307. package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  308. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  309. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  310. package/lib/core/tree/detachedFieldIndexFormatV2.js +3 -3
  311. package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  312. package/lib/core/tree/index.d.ts +2 -1
  313. package/lib/core/tree/index.d.ts.map +1 -1
  314. package/lib/core/tree/index.js +1 -1
  315. package/lib/core/tree/index.js.map +1 -1
  316. package/lib/external-utilities/typeboxValidator.js +1 -1
  317. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  318. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  319. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  320. package/lib/feature-libraries/chunked-forest/codec/codecs.js +13 -8
  321. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  322. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
  323. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  324. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  325. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  326. package/lib/feature-libraries/chunked-forest/codec/format.js +8 -3
  327. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  328. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  329. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  330. package/lib/feature-libraries/chunked-forest/codec/index.js +2 -2
  331. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  332. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  333. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
  334. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  335. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  336. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  337. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  338. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  339. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  340. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  341. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +2 -20
  342. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  343. package/lib/feature-libraries/forest-summary/codec.d.ts +4 -5
  344. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  345. package/lib/feature-libraries/forest-summary/codec.js +16 -5
  346. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  347. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  348. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  349. package/lib/feature-libraries/forest-summary/format.d.ts +8 -1
  350. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  351. package/lib/feature-libraries/forest-summary/format.js +7 -2
  352. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  353. package/lib/feature-libraries/forest-summary/index.d.ts +2 -1
  354. package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
  355. package/lib/feature-libraries/forest-summary/index.js +1 -0
  356. package/lib/feature-libraries/forest-summary/index.js.map +1 -1
  357. package/lib/feature-libraries/index.d.ts +3 -3
  358. package/lib/feature-libraries/index.d.ts.map +1 -1
  359. package/lib/feature-libraries/index.js +2 -2
  360. package/lib/feature-libraries/index.js.map +1 -1
  361. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  362. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  363. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  364. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  365. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  366. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +6 -5
  367. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  368. package/lib/feature-libraries/schema-index/codec.d.ts +10 -10
  369. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  370. package/lib/feature-libraries/schema-index/codec.js +24 -20
  371. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  372. package/lib/feature-libraries/schema-index/formatV1.d.ts +2 -2
  373. package/lib/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  374. package/lib/feature-libraries/schema-index/formatV1.js +2 -2
  375. package/lib/feature-libraries/schema-index/formatV1.js.map +1 -1
  376. package/lib/feature-libraries/schema-index/formatV2.d.ts +1 -2
  377. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  378. package/lib/feature-libraries/schema-index/formatV2.js +2 -2
  379. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
  380. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  381. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  382. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  383. package/lib/index.d.ts +1 -1
  384. package/lib/index.d.ts.map +1 -1
  385. package/lib/index.js +1 -1
  386. package/lib/index.js.map +1 -1
  387. package/lib/legacy.d.ts +7 -0
  388. package/lib/packageVersion.d.ts +1 -1
  389. package/lib/packageVersion.js +1 -1
  390. package/lib/packageVersion.js.map +1 -1
  391. package/lib/shared-tree/independentView.d.ts +1 -1
  392. package/lib/shared-tree/independentView.d.ts.map +1 -1
  393. package/lib/shared-tree/independentView.js +11 -4
  394. package/lib/shared-tree/independentView.js.map +1 -1
  395. package/lib/shared-tree/sharedTree.d.ts +12 -16
  396. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  397. package/lib/shared-tree/sharedTree.js +90 -130
  398. package/lib/shared-tree/sharedTree.js.map +1 -1
  399. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  400. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  401. package/lib/shared-tree/sharedTreeChangeCodecs.js +7 -6
  402. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  403. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  404. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  405. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  406. package/lib/shared-tree/treeAlpha.d.ts +1 -1
  407. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  408. package/lib/shared-tree/treeAlpha.js +5 -3
  409. package/lib/shared-tree/treeAlpha.js.map +1 -1
  410. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  411. package/lib/shared-tree/treeCheckout.js +1 -3
  412. package/lib/shared-tree/treeCheckout.js.map +1 -1
  413. package/lib/shared-tree-core/editManagerCodecs.d.ts +19 -6
  414. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  415. package/lib/shared-tree-core/editManagerCodecs.js +32 -16
  416. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  417. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  418. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  419. package/lib/shared-tree-core/editManagerFormatCommons.js +42 -0
  420. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  421. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  422. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  423. package/lib/shared-tree-core/editManagerFormatV1toV4.js +5 -5
  424. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  425. package/lib/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  426. package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  427. package/lib/shared-tree-core/editManagerFormatV5.js +2 -2
  428. package/lib/shared-tree-core/editManagerFormatV5.js.map +1 -1
  429. package/lib/shared-tree-core/index.d.ts +5 -3
  430. package/lib/shared-tree-core/index.d.ts.map +1 -1
  431. package/lib/shared-tree-core/index.js +4 -2
  432. package/lib/shared-tree-core/index.js.map +1 -1
  433. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  434. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  435. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  436. package/lib/shared-tree-core/messageCodecV5.d.ts +2 -1
  437. package/lib/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  438. package/lib/shared-tree-core/messageCodecV5.js.map +1 -1
  439. package/lib/shared-tree-core/messageCodecs.d.ts +19 -6
  440. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  441. package/lib/shared-tree-core/messageCodecs.js +35 -20
  442. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  443. package/lib/shared-tree-core/messageFormat.d.ts +50 -0
  444. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -0
  445. package/lib/shared-tree-core/messageFormat.js +48 -0
  446. package/lib/shared-tree-core/messageFormat.js.map +1 -0
  447. package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -8
  448. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  449. package/lib/shared-tree-core/sharedTreeCore.js +3 -3
  450. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  451. package/lib/simple-tree/api/discrepancies.d.ts +2 -2
  452. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  453. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  454. package/lib/simple-tree/api/incrementalAllowedTypes.js +1 -1
  455. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  456. package/lib/simple-tree/api/index.d.ts +3 -2
  457. package/lib/simple-tree/api/index.d.ts.map +1 -1
  458. package/lib/simple-tree/api/index.js +1 -0
  459. package/lib/simple-tree/api/index.js.map +1 -1
  460. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  461. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  462. package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -52
  463. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  464. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  465. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  466. package/lib/simple-tree/api/schemaFactoryBeta.js +58 -4
  467. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  468. package/lib/simple-tree/api/schemaFromSimple.js +6 -3
  469. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  470. package/lib/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  471. package/lib/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  472. package/lib/simple-tree/api/simpleSchemaCodec.js +264 -0
  473. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  474. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  475. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  476. package/lib/simple-tree/api/storedSchema.js +5 -3
  477. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  478. package/lib/simple-tree/api/tree.d.ts +2 -2
  479. package/lib/simple-tree/api/tree.js.map +1 -1
  480. package/lib/simple-tree/api/typesUnsafe.d.ts +6 -6
  481. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  482. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +18 -3
  483. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  484. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +75 -34
  485. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  486. package/lib/simple-tree/core/allowedTypes.d.ts +3 -3
  487. package/lib/simple-tree/core/allowedTypes.js +1 -1
  488. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  489. package/lib/simple-tree/core/treeNode.js +1 -1
  490. package/lib/simple-tree/core/treeNode.js.map +1 -1
  491. package/lib/simple-tree/index.d.ts +2 -1
  492. package/lib/simple-tree/index.d.ts.map +1 -1
  493. package/lib/simple-tree/index.js +1 -0
  494. package/lib/simple-tree/index.js.map +1 -1
  495. package/lib/simple-tree/node-kinds/array/arrayNode.js +2 -2
  496. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  497. package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
  498. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  499. package/lib/simple-tree/node-kinds/object/objectNode.js +3 -3
  500. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  501. package/lib/simple-tree/node-kinds/record/recordNode.js +3 -3
  502. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  503. package/lib/simple-tree/simpleSchema.d.ts +11 -3
  504. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  505. package/lib/simple-tree/simpleSchema.js.map +1 -1
  506. package/lib/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  507. package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  508. package/lib/simple-tree/simpleSchemaFormatV1.js +112 -0
  509. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  510. package/lib/tableSchema.d.ts.map +1 -1
  511. package/lib/tableSchema.js +1 -1
  512. package/lib/tableSchema.js.map +1 -1
  513. package/lib/treeFactory.d.ts +3 -1
  514. package/lib/treeFactory.d.ts.map +1 -1
  515. package/lib/treeFactory.js +23 -1
  516. package/lib/treeFactory.js.map +1 -1
  517. package/lib/util/brand.d.ts +31 -2
  518. package/lib/util/brand.d.ts.map +1 -1
  519. package/lib/util/brand.js +26 -1
  520. package/lib/util/brand.js.map +1 -1
  521. package/lib/util/brandedMap.d.ts +3 -1
  522. package/lib/util/brandedMap.d.ts.map +1 -1
  523. package/lib/util/brandedMap.js.map +1 -1
  524. package/lib/util/index.d.ts +1 -1
  525. package/lib/util/index.d.ts.map +1 -1
  526. package/lib/util/index.js +1 -1
  527. package/lib/util/index.js.map +1 -1
  528. package/package.json +24 -24
  529. package/src/api.ts +2 -2
  530. package/src/codec/codec.ts +17 -3
  531. package/src/core/index.ts +1 -2
  532. package/src/core/schema-stored/index.ts +1 -2
  533. package/src/core/schema-stored/schema.ts +10 -7
  534. package/src/core/tree/detachedFieldIndexCodecCommon.ts +2 -1
  535. package/src/core/tree/detachedFieldIndexCodecV1.ts +4 -2
  536. package/src/core/tree/detachedFieldIndexCodecV2.ts +4 -6
  537. package/src/core/tree/detachedFieldIndexCodecs.ts +33 -11
  538. package/src/core/tree/detachedFieldIndexFormatCommon.ts +17 -2
  539. package/src/core/tree/detachedFieldIndexFormatV1.ts +6 -4
  540. package/src/core/tree/detachedFieldIndexFormatV2.ts +6 -4
  541. package/src/core/tree/index.ts +2 -4
  542. package/src/external-utilities/typeboxValidator.ts +1 -1
  543. package/src/feature-libraries/chunked-forest/codec/codecs.ts +18 -13
  544. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +2 -2
  545. package/src/feature-libraries/chunked-forest/codec/format.ts +15 -4
  546. package/src/feature-libraries/chunked-forest/codec/index.ts +4 -2
  547. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -2
  548. package/src/feature-libraries/chunked-forest/index.ts +0 -1
  549. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -29
  550. package/src/feature-libraries/forest-summary/codec.ts +24 -9
  551. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -1
  552. package/src/feature-libraries/forest-summary/format.ts +12 -2
  553. package/src/feature-libraries/forest-summary/index.ts +2 -1
  554. package/src/feature-libraries/index.ts +1 -2
  555. package/src/feature-libraries/schema-edits/index.ts +0 -1
  556. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +16 -16
  557. package/src/feature-libraries/schema-index/codec.ts +34 -22
  558. package/src/feature-libraries/schema-index/formatV1.ts +2 -2
  559. package/src/feature-libraries/schema-index/formatV2.ts +2 -2
  560. package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -1
  561. package/src/index.ts +3 -1
  562. package/src/packageVersion.ts +1 -1
  563. package/src/shared-tree/independentView.ts +16 -5
  564. package/src/shared-tree/sharedTree.ts +112 -172
  565. package/src/shared-tree/sharedTreeChangeCodecs.ts +15 -9
  566. package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
  567. package/src/shared-tree/treeAlpha.ts +6 -5
  568. package/src/shared-tree/treeCheckout.ts +1 -3
  569. package/src/shared-tree-core/editManagerCodecs.ts +56 -19
  570. package/src/shared-tree-core/editManagerFormatCommons.ts +47 -0
  571. package/src/shared-tree-core/editManagerFormatV1toV4.ts +10 -5
  572. package/src/shared-tree-core/editManagerFormatV5.ts +3 -3
  573. package/src/shared-tree-core/index.ts +11 -5
  574. package/src/shared-tree-core/messageCodecV1ToV4.ts +6 -1
  575. package/src/shared-tree-core/messageCodecV5.ts +2 -1
  576. package/src/shared-tree-core/messageCodecs.ts +60 -26
  577. package/src/shared-tree-core/messageFormat.ts +56 -0
  578. package/src/shared-tree-core/sharedTreeCore.ts +11 -13
  579. package/src/simple-tree/api/discrepancies.ts +2 -2
  580. package/src/simple-tree/api/incrementalAllowedTypes.ts +1 -1
  581. package/src/simple-tree/api/index.ts +6 -2
  582. package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -168
  583. package/src/simple-tree/api/schemaFactoryBeta.ts +180 -14
  584. package/src/simple-tree/api/schemaFromSimple.ts +6 -3
  585. package/src/simple-tree/api/simpleSchemaCodec.ts +360 -0
  586. package/src/simple-tree/api/storedSchema.ts +8 -5
  587. package/src/simple-tree/api/tree.ts +2 -2
  588. package/src/simple-tree/api/typesUnsafe.ts +6 -6
  589. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +80 -47
  590. package/src/simple-tree/core/allowedTypes.ts +3 -3
  591. package/src/simple-tree/core/treeNode.ts +2 -2
  592. package/src/simple-tree/index.ts +5 -1
  593. package/src/simple-tree/node-kinds/array/arrayNode.ts +2 -2
  594. package/src/simple-tree/node-kinds/map/mapNode.ts +2 -2
  595. package/src/simple-tree/node-kinds/object/objectNode.ts +3 -3
  596. package/src/simple-tree/node-kinds/record/recordNode.ts +3 -3
  597. package/src/simple-tree/simpleSchema.ts +12 -3
  598. package/src/simple-tree/simpleSchemaFormatV1.ts +179 -0
  599. package/src/tableSchema.ts +5 -2
  600. package/src/treeFactory.ts +33 -1
  601. package/src/util/brand.ts +40 -2
  602. package/src/util/brandedMap.ts +3 -1
  603. package/src/util/index.ts +1 -0
package/src/index.ts CHANGED
@@ -95,6 +95,7 @@ export {
95
95
  type TreeViewEvents,
96
96
  SchemaFactory,
97
97
  SchemaFactoryBeta,
98
+ type SchemaStaticsBeta,
98
99
  SchemaFactoryAlpha,
99
100
  type ObjectSchemaOptionsAlpha,
100
101
  type ObjectSchemaOptions,
@@ -181,7 +182,6 @@ export {
181
182
  type AllowedTypeMetadata,
182
183
  type AllowedTypesMetadata,
183
184
  type UnannotateAllowedTypesList,
184
- type SchemaStaticsAlpha,
185
185
  type AnnotateAllowedTypesList,
186
186
  type AllowedTypesFull,
187
187
  type AllowedTypesFullFromMixed,
@@ -283,6 +283,8 @@ export {
283
283
  type SchemaFactory_base,
284
284
  type NumberKeys,
285
285
  type SimpleAllowedTypeAttributes,
286
+ encodeSimpleSchema,
287
+ decodeSimpleSchema,
286
288
  } from "./simple-tree/index.js";
287
289
  export {
288
290
  SharedTree,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.71.0";
9
+ export const pkgVersion = "2.72.0";
@@ -10,11 +10,15 @@ import {
10
10
  createIdCompressor,
11
11
  } from "@fluidframework/id-compressor/internal";
12
12
 
13
- import type { ICodecOptions } from "../codec/index.js";
13
+ import {
14
+ FluidClientVersion,
15
+ type CodecWriteOptions,
16
+ type ICodecOptions,
17
+ } from "../codec/index.js";
14
18
  import {
15
19
  type RevisionTag,
16
20
  RevisionTagCodec,
17
- SchemaVersion,
21
+ SchemaFormatVersion,
18
22
  TreeStoredSchemaRepository,
19
23
  } from "../core/index.js";
20
24
  import {
@@ -26,7 +30,7 @@ import {
26
30
  TreeCompressionStrategy,
27
31
  defaultIncrementalEncodingPolicy,
28
32
  } from "../feature-libraries/index.js";
29
- // eslint-disable-next-line import/no-internal-modules
33
+ // eslint-disable-next-line import-x/no-internal-modules
30
34
  import type { Format } from "../feature-libraries/schema-index/formatV1.js";
31
35
  import type {
32
36
  TreeViewConfiguration,
@@ -44,6 +48,7 @@ import {
44
48
  type JsonCompatible,
45
49
  Breakable,
46
50
  oneFromIterable,
51
+ brand,
47
52
  } from "../util/index.js";
48
53
  import {
49
54
  buildConfiguredForest,
@@ -195,8 +200,14 @@ export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSc
195
200
  });
196
201
 
197
202
  if (options?.content !== undefined) {
198
- const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
199
- const fieldBatchCodec = makeFieldBatchCodec(options, 1);
203
+ // Any version can be passed down to `makeSchemaCodec` and `makeFieldBatchCodec` here.
204
+ // We only use the decode part, which always dispatches to the correct codec based on the version in the data, not `minVersionForCollab`.
205
+ const writeOptions: CodecWriteOptions = {
206
+ ...options,
207
+ minVersionForCollab: FluidClientVersion.v2_0,
208
+ };
209
+ const schemaCodec = makeSchemaCodec(writeOptions, brand(SchemaFormatVersion.v1));
210
+ const fieldBatchCodec = makeFieldBatchCodec(writeOptions);
200
211
  const newSchema = schemaCodec.decode(options.content.schema as Format);
201
212
 
202
213
  const context: FieldBatchEncodingContext = {
@@ -4,9 +4,10 @@
4
4
  */
5
5
 
6
6
  import type { ErasedType, IFluidLoadable } from "@fluidframework/core-interfaces/internal";
7
- import { assert, fail, unreachableCase } from "@fluidframework/core-utils/internal";
7
+ import { assert, fail } from "@fluidframework/core-utils/internal";
8
8
  import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
9
9
  import type { IIdCompressor, StableId } from "@fluidframework/id-compressor";
10
+ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
10
11
  import type {
11
12
  IChannelView,
12
13
  IFluidSerializer,
@@ -26,7 +27,6 @@ import {
26
27
  type ICodecOptions,
27
28
  } from "../codec/index.js";
28
29
  import {
29
- type DetachedFieldIndexFormatVersion,
30
30
  type FieldKey,
31
31
  type GraphCommit,
32
32
  type IEditableForest,
@@ -35,8 +35,6 @@ import {
35
35
  MapNodeStoredSchema,
36
36
  ObjectNodeStoredSchema,
37
37
  RevisionTagCodec,
38
- type SchemaFormatVersion,
39
- SchemaVersion,
40
38
  type TreeFieldStoredSchema,
41
39
  type TreeNodeStoredSchema,
42
40
  type TreeStoredSchema,
@@ -66,21 +64,21 @@ import {
66
64
  makeSchemaCodec,
67
65
  makeTreeChunker,
68
66
  type IncrementalEncodingPolicy,
69
- type FieldBatchFormatVersion,
70
- type ForestFormatVersion,
71
67
  type TreeCompressionStrategyPrivate,
72
68
  } from "../feature-libraries/index.js";
73
- // eslint-disable-next-line import/no-internal-modules
69
+ // eslint-disable-next-line import-x/no-internal-modules
74
70
  import type { FormatV1 } from "../feature-libraries/schema-index/index.js";
75
71
  import {
76
72
  type BranchId,
73
+ clientVersionToEditManagerFormatVersion,
74
+ clientVersionToMessageFormatVersion,
77
75
  type ClonableSchemaAndPolicy,
78
- type EditManagerFormatVersion,
79
- type ExplicitCoreCodecVersions,
80
76
  getCodecTreeForEditManagerFormatWithChange,
81
77
  getCodecTreeForMessageFormatWithChange,
82
- type MessageFormatVersion,
78
+ type SharedTreCoreOptionsInternal,
79
+ MessageFormatVersion,
83
80
  SharedTreeCore,
81
+ EditManagerFormatVersion,
84
82
  } from "../shared-tree-core/index.js";
85
83
  import {
86
84
  type ITree,
@@ -172,98 +170,6 @@ export interface ITreePrivate extends ITreeInternal {
172
170
  readonly kernel: SharedTreeKernel;
173
171
  }
174
172
 
175
- /**
176
- * Has an entry for each codec which writes an explicit version into its data.
177
- *
178
- * This is used to map the single API entrypoint controlling the format {@link SharedTreeOptions.formatVersion}
179
- * to a list of write versions that for each codec that should be used for that format.
180
- *
181
- * Note that all explicitly versioned codecs should be using the format version from the data to read encoded data.
182
- *
183
- * TODO: Plumb these write versions into forest, schema, detached field index codec creation.
184
- */
185
- interface ExplicitCodecVersions extends ExplicitCoreCodecVersions {
186
- forest: ForestFormatVersion;
187
- schema: SchemaFormatVersion;
188
- detachedFieldIndex: DetachedFieldIndexFormatVersion;
189
- fieldBatch: FieldBatchFormatVersion;
190
- }
191
-
192
- const formatVersionToTopLevelCodecVersions = new Map<number, ExplicitCodecVersions>([
193
- [
194
- 1,
195
- {
196
- forest: brand(1),
197
- schema: brand(1),
198
- detachedFieldIndex: brand(1),
199
- editManager: brand(1),
200
- message: brand(1),
201
- fieldBatch: brand(1),
202
- },
203
- ],
204
- [
205
- 2,
206
- {
207
- forest: brand(1),
208
- schema: brand(1),
209
- detachedFieldIndex: brand(1),
210
- editManager: brand(2),
211
- message: brand(2),
212
- fieldBatch: brand(1),
213
- },
214
- ],
215
- [
216
- 3,
217
- {
218
- forest: brand(1),
219
- schema: brand(1),
220
- detachedFieldIndex: brand(1),
221
- editManager: brand(3),
222
- message: brand(3),
223
- fieldBatch: brand(1),
224
- },
225
- ],
226
- [
227
- 4,
228
- {
229
- forest: brand(1),
230
- schema: brand(1),
231
- detachedFieldIndex: brand(1),
232
- editManager: brand(4),
233
- message: brand(4),
234
- fieldBatch: brand(1),
235
- },
236
- ],
237
- [
238
- 5,
239
- {
240
- forest: brand(1),
241
- schema: brand(2),
242
- detachedFieldIndex: brand(1),
243
- editManager: brand(4),
244
- message: brand(4),
245
- fieldBatch: brand(1),
246
- },
247
- ],
248
- [
249
- 100, // SharedTreeFormatVersion.vSharedBranches
250
- {
251
- forest: brand(1),
252
- schema: brand(2),
253
- detachedFieldIndex: brand(1),
254
- editManager: brand(5),
255
- message: brand(5),
256
- fieldBatch: brand(1),
257
- },
258
- ],
259
- ]);
260
-
261
- function getCodecVersions(formatVersion: number): ExplicitCodecVersions {
262
- const versions = formatVersionToTopLevelCodecVersions.get(formatVersion);
263
- assert(versions !== undefined, 0x90e /* Unknown format version */);
264
- return versions;
265
- }
266
-
267
173
  /**
268
174
  * The type SharedTree's kernel's view must implement so what when its merged with the underling SharedObject's API it fully implements the required tree API surface ({@link ITreePrivate }).
269
175
  */
@@ -306,8 +212,13 @@ export class SharedTreeKernel
306
212
  idCompressor: IIdCompressor,
307
213
  optionsParam: SharedTreeOptionsInternal,
308
214
  ) {
309
- const options = { ...defaultSharedTreeOptions, ...optionsParam };
310
- const codecVersions = getCodecVersions(options.formatVersion);
215
+ const options: Required<SharedTreeOptionsInternal> = {
216
+ ...defaultSharedTreeOptions,
217
+ ...optionsParam,
218
+ };
219
+ if (options.minVersionForCollab < FluidClientVersion.v2_0) {
220
+ throw new UsageError("SharedTree requires minVersionForCollab of at least 2.0.0");
221
+ }
311
222
  const schema = new TreeStoredSchemaRepository();
312
223
  const forest = buildConfiguredForest(
313
224
  breaker,
@@ -323,7 +234,7 @@ export class SharedTreeKernel
323
234
  idCompressor,
324
235
  options,
325
236
  );
326
- const schemaCodec = makeSchemaCodec(options, codecVersions.schema);
237
+ const schemaCodec = makeSchemaCodec(options);
327
238
  const schemaSummarizer = new SchemaSummarizer(
328
239
  schema,
329
240
  {
@@ -331,7 +242,7 @@ export class SharedTreeKernel
331
242
  },
332
243
  schemaCodec,
333
244
  );
334
- const fieldBatchCodec = makeFieldBatchCodec(options, codecVersions.fieldBatch);
245
+ const fieldBatchCodec = makeFieldBatchCodec(options);
335
246
 
336
247
  const encoderContext = {
337
248
  schema: {
@@ -392,7 +303,6 @@ export class SharedTreeKernel
392
303
  [schemaSummarizer, forestSummarizer, removedRootsSummarizer],
393
304
  changeFamily,
394
305
  options,
395
- codecVersions,
396
306
  changeFormatVersionForEditManager,
397
307
  changeFormatVersionForMessage,
398
308
  idCompressor,
@@ -621,7 +531,12 @@ export function persistedToSimpleSchema(
621
531
  persisted: JsonCompatible,
622
532
  options: ICodecOptions,
623
533
  ): SimpleTreeSchema {
624
- const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
534
+ // Any version can be passed down to makeSchemaCodec here.
535
+ // We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.
536
+ const schemaCodec = makeSchemaCodec({
537
+ ...options,
538
+ minVersionForCollab: FluidClientVersion.v2_0,
539
+ });
625
540
  const stored = schemaCodec.decode(persisted as FormatV1);
626
541
  return exportSimpleSchema(stored);
627
542
  }
@@ -716,11 +631,26 @@ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
716
631
  * This is because the format for SharedTree changes are not explicitly versioned.
717
632
  */
718
633
  export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([
719
- [brand<EditManagerFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],
720
- [brand<EditManagerFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],
721
- [brand<EditManagerFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],
722
- [brand<EditManagerFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],
723
- [brand<EditManagerFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],
634
+ [
635
+ brand<EditManagerFormatVersion>(EditManagerFormatVersion.v1),
636
+ brand<SharedTreeChangeFormatVersion>(1),
637
+ ],
638
+ [
639
+ brand<EditManagerFormatVersion>(EditManagerFormatVersion.v2),
640
+ brand<SharedTreeChangeFormatVersion>(2),
641
+ ],
642
+ [
643
+ brand<EditManagerFormatVersion>(EditManagerFormatVersion.v3),
644
+ brand<SharedTreeChangeFormatVersion>(3),
645
+ ],
646
+ [
647
+ brand<EditManagerFormatVersion>(EditManagerFormatVersion.v4),
648
+ brand<SharedTreeChangeFormatVersion>(4),
649
+ ],
650
+ [
651
+ brand<EditManagerFormatVersion>(EditManagerFormatVersion.v5),
652
+ brand<SharedTreeChangeFormatVersion>(4),
653
+ ],
724
654
  ]);
725
655
 
726
656
  /**
@@ -730,58 +660,61 @@ export const changeFormatVersionForEditManager = DependentFormatVersion.fromPair
730
660
  * This is because the format for SharedTree changes are not explicitly versioned.
731
661
  */
732
662
  export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([
733
- [brand<MessageFormatVersion>(undefined), brand<SharedTreeChangeFormatVersion>(1)],
734
- [brand<MessageFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],
735
- [brand<MessageFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],
736
- [brand<MessageFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],
737
- [brand<MessageFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],
738
- [brand<MessageFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],
663
+ [
664
+ brand<MessageFormatVersion>(MessageFormatVersion.undefined),
665
+ brand<SharedTreeChangeFormatVersion>(1),
666
+ ],
667
+ [
668
+ brand<MessageFormatVersion>(MessageFormatVersion.v1),
669
+ brand<SharedTreeChangeFormatVersion>(1),
670
+ ],
671
+ [
672
+ brand<MessageFormatVersion>(MessageFormatVersion.v2),
673
+ brand<SharedTreeChangeFormatVersion>(2),
674
+ ],
675
+ [
676
+ brand<MessageFormatVersion>(MessageFormatVersion.v3),
677
+ brand<SharedTreeChangeFormatVersion>(3),
678
+ ],
679
+ [
680
+ brand<MessageFormatVersion>(MessageFormatVersion.v4),
681
+ brand<SharedTreeChangeFormatVersion>(4),
682
+ ],
683
+ [
684
+ brand<MessageFormatVersion>(MessageFormatVersion.v5),
685
+ brand<SharedTreeChangeFormatVersion>(4),
686
+ ],
739
687
  ]);
740
688
 
741
- function getCodecTreeForEditManagerFormat(version: EditManagerFormatVersion): CodecTree {
742
- const change = changeFormatVersionForEditManager.lookup(version);
743
- const changeCodecTree = getCodecTreeForChangeFormat(change);
744
- return getCodecTreeForEditManagerFormatWithChange(version, changeCodecTree);
689
+ function getCodecTreeForEditManagerFormat(clientVersion: MinimumVersionForCollab): CodecTree {
690
+ const change = changeFormatVersionForEditManager.lookup(
691
+ clientVersionToEditManagerFormatVersion(clientVersion),
692
+ );
693
+ const changeCodecTree = getCodecTreeForChangeFormat(change, clientVersion);
694
+ return getCodecTreeForEditManagerFormatWithChange(clientVersion, changeCodecTree);
745
695
  }
746
696
 
747
- function getCodecTreeForMessageFormat(version: MessageFormatVersion): CodecTree {
748
- const change = changeFormatVersionForMessage.lookup(version);
749
- const changeCodecTree = getCodecTreeForChangeFormat(change);
750
- return getCodecTreeForMessageFormatWithChange(version, changeCodecTree);
697
+ function getCodecTreeForMessageFormat(clientVersion: MinimumVersionForCollab): CodecTree {
698
+ const change = changeFormatVersionForMessage.lookup(
699
+ clientVersionToMessageFormatVersion(clientVersion),
700
+ );
701
+ const changeCodecTree = getCodecTreeForChangeFormat(change, clientVersion);
702
+ return getCodecTreeForMessageFormatWithChange(clientVersion, changeCodecTree);
751
703
  }
752
704
 
753
705
  export function getCodecTreeForSharedTreeFormat(
754
- version: SharedTreeFormatVersion[keyof SharedTreeFormatVersion],
706
+ clientVersion: MinimumVersionForCollab,
755
707
  ): CodecTree {
756
708
  const children: CodecTree[] = [];
757
- const childCodecs = getCodecVersions(version);
758
- for (const name of Object.keys(childCodecs) as (keyof ExplicitCodecVersions)[]) {
759
- switch (name) {
760
- case "editManager":
761
- children.push(getCodecTreeForEditManagerFormat(childCodecs.editManager));
762
- break;
763
- case "message":
764
- children.push(getCodecTreeForMessageFormat(childCodecs.message));
765
- break;
766
- case "forest":
767
- children.push(getCodecTreeForForestFormat(childCodecs.forest));
768
- break;
769
- case "schema":
770
- children.push(getCodecTreeForSchemaFormat(childCodecs.schema));
771
- break;
772
- case "detachedFieldIndex":
773
- children.push(getCodecTreeForDetachedFieldIndexFormat(childCodecs.detachedFieldIndex));
774
- break;
775
- case "fieldBatch":
776
- children.push(getCodecTreeForFieldBatchFormat(childCodecs.fieldBatch));
777
- break;
778
- default:
779
- unreachableCase(name);
780
- }
781
- }
709
+ children.push(getCodecTreeForForestFormat(clientVersion));
710
+ children.push(getCodecTreeForSchemaFormat(clientVersion));
711
+ children.push(getCodecTreeForDetachedFieldIndexFormat(clientVersion));
712
+ children.push(getCodecTreeForEditManagerFormat(clientVersion));
713
+ children.push(getCodecTreeForMessageFormat(clientVersion));
714
+ children.push(getCodecTreeForFieldBatchFormat(clientVersion));
782
715
  return {
783
716
  name: "SharedTree",
784
- version,
717
+ version: undefined, // SharedTree does not have a version of its own.
785
718
  children,
786
719
  };
787
720
  }
@@ -796,12 +729,21 @@ export type SharedTreeOptionsBeta = ForestOptions;
796
729
  * Configuration options for SharedTree.
797
730
  * @alpha @input
798
731
  */
799
- export type SharedTreeOptions = Partial<CodecWriteOptions> &
800
- Partial<SharedTreeFormatOptions> &
801
- SharedTreeOptionsBeta;
732
+ export interface SharedTreeOptions
733
+ extends Partial<CodecWriteOptions>,
734
+ Partial<SharedTreeFormatOptions>,
735
+ SharedTreeOptionsBeta {
736
+ /**
737
+ * Experimental feature flag to enable shared branches.
738
+ * This feature is not yet complete and should not be used in production.
739
+ * Defaults to false.
740
+ */
741
+ readonly enableSharedBranches?: boolean;
742
+ }
802
743
 
803
744
  export interface SharedTreeOptionsInternal
804
- extends Omit<SharedTreeOptions, "treeEncodeType">,
745
+ extends Partial<SharedTreCoreOptionsInternal>,
746
+ Partial<ForestOptions>,
805
747
  Partial<SharedTreeFormatOptionsInternal> {
806
748
  disposeForksAfterTransaction?: boolean;
807
749
  /**
@@ -811,6 +753,7 @@ export interface SharedTreeOptionsInternal
811
753
  */
812
754
  shouldEncodeIncrementally?: IncrementalEncodingPolicy;
813
755
  }
756
+
814
757
  /**
815
758
  * Configuration options for SharedTree's internal tree storage.
816
759
  * @beta @input
@@ -832,18 +775,6 @@ export interface SharedTreeFormatOptions {
832
775
  * default: TreeCompressionStrategy.Compressed
833
776
  */
834
777
  treeEncodeType: TreeCompressionStrategy;
835
- /**
836
- * The format version SharedTree should use to persist documents.
837
- *
838
- * This option has compatibility implications for applications using SharedTree.
839
- * Each version documents a required minimum version of \@fluidframework/tree.
840
- * If this minimum version fails to be met, the SharedTree may fail to load.
841
- * To be safe, application authors should verify that they have saturated this version
842
- * of \@fluidframework/tree in their ecosystem before changing the format version.
843
- *
844
- * This option defaults to SharedTreeFormatVersion.v2.
845
- */
846
- formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];
847
778
  }
848
779
 
849
780
  export interface SharedTreeFormatOptionsInternal
@@ -949,9 +880,10 @@ export const defaultSharedTreeOptions: Required<SharedTreeOptionsInternal> = {
949
880
  minVersionForCollab: FluidClientVersion.v2_0,
950
881
  forest: ForestTypeReference,
951
882
  treeEncodeType: TreeCompressionStrategy.Compressed,
952
- formatVersion: SharedTreeFormatVersion.v3,
953
883
  disposeForksAfterTransaction: true,
954
884
  shouldEncodeIncrementally: defaultIncrementalEncodingPolicy,
885
+ editManagerFormatSelector: clientVersionToEditManagerFormatVersion,
886
+ messageFormatSelector: clientVersionToMessageFormatVersion,
955
887
  };
956
888
 
957
889
  /**
@@ -1003,6 +935,8 @@ function exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFie
1003
935
  * Export a {@link SimpleNodeSchema} from a {@link TreeNodeStoredSchema}.
1004
936
  * @privateRemarks
1005
937
  * TODO: Persist node metadata once schema FormatV2 is supported.
938
+ * Note on SimpleNodeSchema construction: In the persisted format `persistedMetadata` is just called `metadata` whereas the `metadata`
939
+ * field on SimpleNodeSchema is not persisted.
1006
940
  */
1007
941
  function exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeSchema {
1008
942
  const arrayTypes = tryStoredSchemaAsArray(schema);
@@ -1019,7 +953,13 @@ function exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeS
1019
953
  for (const [storedKey, field] of schema.objectNodeFields) {
1020
954
  fields.set(storedKey, { ...exportSimpleFieldSchemaStored(field), storedKey });
1021
955
  }
1022
- return { kind: NodeKind.Object, fields, metadata: {}, persistedMetadata: schema.metadata };
956
+ return {
957
+ kind: NodeKind.Object,
958
+ fields,
959
+ allowUnknownOptionalFields: undefined,
960
+ metadata: {},
961
+ persistedMetadata: schema.metadata,
962
+ };
1023
963
  }
1024
964
  if (schema instanceof MapNodeStoredSchema) {
1025
965
  assert(
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
7
8
  import {
8
9
  type CodecTree,
10
+ type CodecWriteOptions,
9
11
  DiscriminatedUnionDispatcher,
10
12
  type FormatVersion,
11
13
  type ICodecFamily,
@@ -14,12 +16,15 @@ import {
14
16
  makeCodecFamily,
15
17
  withSchemaValidation,
16
18
  } from "../codec/index.js";
17
- import type { ChangeEncodingContext, TreeStoredSchema } from "../core/index.js";
19
+ import {
20
+ type ChangeEncodingContext,
21
+ SchemaFormatVersion,
22
+ type TreeStoredSchema,
23
+ } from "../core/index.js";
18
24
  import {
19
25
  type ModularChangeFormatVersion,
20
26
  type ModularChangeset,
21
27
  type SchemaChange,
22
- type SchemaChangeFormatVersion,
23
28
  defaultSchemaPolicy,
24
29
  getCodecTreeForModularChangeFormat,
25
30
  getCodecTreeForSchemaChangeFormat,
@@ -40,7 +45,7 @@ import type { SharedTreeChange, SharedTreeInnerChange } from "./sharedTreeChange
40
45
 
41
46
  export function makeSharedTreeChangeCodecFamily(
42
47
  modularChangeCodecFamily: ICodecFamily<ModularChangeset, ChangeEncodingContext>,
43
- options: ICodecOptions,
48
+ options: CodecWriteOptions,
44
49
  ): ICodecFamily<SharedTreeChange, ChangeEncodingContext> {
45
50
  const schemaChangeCodecs = makeSchemaChangeCodecs(options);
46
51
  const versions: [
@@ -66,7 +71,7 @@ export function makeSharedTreeChangeCodecFamily(
66
71
 
67
72
  interface ChangeFormatDependencies {
68
73
  readonly modularChange: ModularChangeFormatVersion;
69
- readonly schemaChange: SchemaChangeFormatVersion;
74
+ readonly schemaChange: SchemaFormatVersion;
70
75
  }
71
76
 
72
77
  export type SharedTreeChangeFormatVersion = Brand<
@@ -84,14 +89,15 @@ export const dependenciesForChangeFormat: Map<
84
89
  SharedTreeChangeFormatVersion,
85
90
  ChangeFormatDependencies
86
91
  > = new Map([
87
- [brand(1), { modularChange: brand(1), schemaChange: brand(1) }],
88
- [brand(2), { modularChange: brand(2), schemaChange: brand(1) }],
89
- [brand(3), { modularChange: brand(3), schemaChange: brand(1) }],
90
- [brand(4), { modularChange: brand(4), schemaChange: brand(1) }],
92
+ [brand(1), { modularChange: brand(1), schemaChange: brand(SchemaFormatVersion.v1) }],
93
+ [brand(2), { modularChange: brand(2), schemaChange: brand(SchemaFormatVersion.v1) }],
94
+ [brand(3), { modularChange: brand(3), schemaChange: brand(SchemaFormatVersion.v1) }],
95
+ [brand(4), { modularChange: brand(4), schemaChange: brand(SchemaFormatVersion.v1) }],
91
96
  ]);
92
97
 
93
98
  export function getCodecTreeForChangeFormat(
94
99
  version: SharedTreeChangeFormatVersion,
100
+ clientVersion: MinimumVersionForCollab,
95
101
  ): CodecTree {
96
102
  const { modularChange, schemaChange } =
97
103
  dependenciesForChangeFormat.get(version) ?? fail(0xc78 /* Unknown change format */);
@@ -100,7 +106,7 @@ export function getCodecTreeForChangeFormat(
100
106
  version,
101
107
  children: [
102
108
  getCodecTreeForModularChangeFormat(modularChange),
103
- getCodecTreeForSchemaChangeFormat(schemaChange),
109
+ getCodecTreeForSchemaChangeFormat(schemaChange, clientVersion),
104
110
  ],
105
111
  };
106
112
  }
@@ -6,7 +6,7 @@
6
6
  import { assert, fail } from "@fluidframework/core-utils/internal";
7
7
  import type { IIdCompressor } from "@fluidframework/id-compressor";
8
8
 
9
- import type { ICodecFamily, ICodecOptions } from "../codec/index.js";
9
+ import type { CodecWriteOptions, ICodecFamily } from "../codec/index.js";
10
10
  import {
11
11
  type ChangeEncodingContext,
12
12
  type ChangeFamily,
@@ -60,7 +60,7 @@ export class SharedTreeChangeFamily
60
60
  public constructor(
61
61
  revisionTagCodec: RevisionTagCodec,
62
62
  fieldBatchCodec: FieldBatchCodec,
63
- codecOptions: ICodecOptions,
63
+ codecOptions: CodecWriteOptions,
64
64
  chunkCompressionStrategy?: TreeCompressionStrategyPrivate,
65
65
  private readonly idCompressor?: IIdCompressor,
66
66
  ) {
@@ -78,7 +78,6 @@ import {
78
78
  TreeCompressionStrategy,
79
79
  type FieldBatch,
80
80
  type FieldBatchEncodingContext,
81
- fluidVersionToFieldBatchCodecWriteVersion,
82
81
  type LocalNodeIdentifier,
83
82
  type FlexTreeSequenceField,
84
83
  type FlexTreeNode,
@@ -291,7 +290,7 @@ export interface TreeAlpha {
291
290
  * @remarks
292
291
  * This currently does not support input containing
293
292
  * {@link ObjectSchemaOptions.allowUnknownOptionalFields| unknown optional fields} but does support
294
- * {@link SchemaStaticsAlpha.staged | staged} allowed types.
293
+ * {@link SchemaStaticsBeta.staged | staged} allowed types.
295
294
  * Non-empty default values for fields are currently not supported (must be provided in the input).
296
295
  * The content will be validated against the schema and an error will be thrown if out of schema.
297
296
  */
@@ -845,8 +844,10 @@ export const TreeAlpha: TreeAlpha = {
845
844
  options: { idCompressor?: IIdCompressor } & Pick<CodecWriteOptions, "minVersionForCollab">,
846
845
  ): JsonCompatible<IFluidHandle> {
847
846
  const schema = tryGetSchema(node) ?? fail(0xacf /* invalid input */);
848
- const format = fluidVersionToFieldBatchCodecWriteVersion(options.minVersionForCollab);
849
- const codec = makeFieldBatchCodec({ jsonValidator: FormatValidatorNoOp }, format);
847
+ const codec = makeFieldBatchCodec({
848
+ jsonValidator: FormatValidatorNoOp,
849
+ minVersionForCollab: options.minVersionForCollab,
850
+ });
850
851
  const cursor = borrowFieldCursorFromTreeNodeOrValue(node);
851
852
  const batch: FieldBatch = [cursor];
852
853
  // If none provided, create a compressor which will not compress anything.
@@ -873,7 +874,7 @@ export const TreeAlpha: TreeAlpha = {
873
874
  compressedData: JsonCompatible<IFluidHandle>,
874
875
  options: {
875
876
  idCompressor?: IIdCompressor;
876
- } & ICodecOptions,
877
+ } & CodecWriteOptions,
877
878
  ): Unhydrated<TreeFieldFromImplicitField<TSchema>> {
878
879
  const config = new TreeViewConfigurationAlpha({ schema });
879
880
  const content: ViewContent = {
@@ -300,13 +300,11 @@ export function createTreeCheckout(
300
300
  jsonValidator: FormatValidatorNoOp,
301
301
  minVersionForCollab: FluidClientVersion.v2_0,
302
302
  };
303
- const defaultFieldBatchVersion = 1;
304
303
  const changeFamily =
305
304
  args?.changeFamily ??
306
305
  new SharedTreeChangeFamily(
307
306
  revisionTagCodec,
308
- args?.fieldBatchCodec ??
309
- makeFieldBatchCodec(defaultCodecOptions, defaultFieldBatchVersion),
307
+ args?.fieldBatchCodec ?? makeFieldBatchCodec(defaultCodecOptions),
310
308
  defaultCodecOptions,
311
309
  args?.chunkCompressionStrategy,
312
310
  idCompressor,