@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
@@ -8,7 +8,7 @@ import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
8
8
 
9
9
  import {
10
10
  type CodecTree,
11
- type ICodecOptions,
11
+ type CodecWriteOptions,
12
12
  type IJsonCodec,
13
13
  makeVersionedValidatedCodec,
14
14
  } from "../../../codec/index.js";
@@ -19,6 +19,7 @@ import {
19
19
  type TreeChunk,
20
20
  } from "../../../core/index.js";
21
21
  import {
22
+ brand,
22
23
  brandedNumberType,
23
24
  type Brand,
24
25
  type JsonCompatibleReadOnly,
@@ -31,7 +32,7 @@ import {
31
32
 
32
33
  import { decode } from "./chunkDecoding.js";
33
34
  import type { FieldBatch } from "./fieldBatch.js";
34
- import { EncodedFieldBatch, validVersions, type FieldBatchFormatVersion } from "./format.js";
35
+ import { EncodedFieldBatch, validVersions, FieldBatchFormatVersion } from "./format.js";
35
36
  import { schemaCompressedEncode } from "./schemaBasedEncode.js";
36
37
  import { uncompressedEncode } from "./uncompressedEncode.js";
37
38
  import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
@@ -123,17 +124,19 @@ export type FieldBatchCodec = IJsonCodec<
123
124
  * @privateRemarks
124
125
  * TODO: makeFieldBatchCodec (and makeVersionDispatchingCodec transitively) should bake in this versionToFormat logic and the resulting codec can then support use with FluidClientVersion directly.
125
126
  */
126
- export function fluidVersionToFieldBatchCodecWriteVersion(
127
- minVersionForCollab: MinimumVersionForCollab,
128
- ): number {
129
- // There is currently on only 1 version.
130
- return 1;
127
+ /**
128
+ * Convert a MinimumVersionForCollab to write version for {@link FieldBatchCodec}.
129
+ * @param clientVersion - The MinimumVersionForCollab to convert.
130
+ */
131
+ function clientVersionToFieldBatchVersion(
132
+ clientVersion: MinimumVersionForCollab,
133
+ ): FieldBatchFormatVersion {
134
+ // Currently, field batch codec only writes in version 1.
135
+ return brand(FieldBatchFormatVersion.v1);
131
136
  }
132
137
 
133
- export function makeFieldBatchCodec(
134
- options: ICodecOptions,
135
- writeVersion: number,
136
- ): FieldBatchCodec {
138
+ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec {
139
+ const writeVersion = clientVersionToFieldBatchVersion(options.minVersionForCollab);
137
140
  // Note: it's important that the decode function is schema-agnostic for this strategy/layering to work, since
138
141
  // the schema that an op was encoded in doesn't necessarily match the current schema for the document (e.g. if
139
142
  // decode is being run on a client that just submitted a schema change, but the op is from another client who has
@@ -198,6 +201,8 @@ export function makeFieldBatchCodec(
198
201
  });
199
202
  }
200
203
 
201
- export function getCodecTreeForFieldBatchFormat(version: FieldBatchFormatVersion): CodecTree {
202
- return { name: "FieldBatch", version };
204
+ export function getCodecTreeForFieldBatchFormat(
205
+ clientVersion: MinimumVersionForCollab,
206
+ ): CodecTree {
207
+ return { name: "FieldBatch", version: clientVersionToFieldBatchVersion(clientVersion) };
203
208
  }
@@ -33,8 +33,8 @@ import {
33
33
  type EncodedFieldBatch,
34
34
  type EncodedNestedArrayShape,
35
35
  type EncodedValueShape,
36
+ FieldBatchFormatVersion,
36
37
  SpecialField,
37
- version,
38
38
  } from "./format.js";
39
39
  import type { IncrementalEncoder } from "./codecs.js";
40
40
 
@@ -57,7 +57,7 @@ export function compressedEncode(
57
57
  anyFieldEncoder.encodeField(cursor, context, buffer);
58
58
  batchBuffer.push(buffer);
59
59
  }
60
- return updateShapesAndIdentifiersEncoding(version, batchBuffer);
60
+ return updateShapesAndIdentifiersEncoding(FieldBatchFormatVersion.v1, batchBuffer);
61
61
  }
62
62
 
63
63
  export type BufferFormat = BufferFormatGeneric<EncodedChunkShape>;
@@ -15,12 +15,20 @@ import {
15
15
  } from "./formatGeneric.js";
16
16
  import type { Brand } from "../../../util/index.js";
17
17
 
18
- export const version = 1;
19
- export type FieldBatchFormatVersion = Brand<1, "FieldBatchFormatVersion">;
18
+ /**
19
+ * The format version for the field batch.
20
+ */
21
+ export const FieldBatchFormatVersion = {
22
+ v1: 1,
23
+ } as const;
24
+ export type FieldBatchFormatVersion = Brand<
25
+ (typeof FieldBatchFormatVersion)[keyof typeof FieldBatchFormatVersion],
26
+ "FieldBatchFormatVersion"
27
+ >;
20
28
 
21
29
  // Compatible versions used for format/version validation.
22
30
  // TODO: A proper version update policy will need to be documented.
23
- export const validVersions = new Set([version]);
31
+ export const validVersions = new Set([FieldBatchFormatVersion.v1]);
24
32
 
25
33
  /**
26
34
  * Top level length is implied from length of data array.
@@ -209,5 +217,8 @@ export type EncodedNodeShape = Static<typeof EncodedNodeShape>;
209
217
  export type EncodedAnyShape = Static<typeof EncodedAnyShape>;
210
218
  export type EncodedIncrementalChunkShape = Static<typeof EncodedIncrementalChunkShape>;
211
219
 
212
- export const EncodedFieldBatch = EncodedFieldBatchGeneric(version, EncodedChunkShape);
220
+ export const EncodedFieldBatch = EncodedFieldBatchGeneric(
221
+ FieldBatchFormatVersion.v1,
222
+ EncodedChunkShape,
223
+ );
213
224
  export type EncodedFieldBatch = Static<typeof EncodedFieldBatch>;
@@ -3,13 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { EncodedFieldBatch, type FieldBatchFormatVersion } from "./format.js";
6
+ export {
7
+ EncodedFieldBatch,
8
+ type FieldBatchFormatVersion,
9
+ } from "./format.js";
7
10
  export type { FieldBatch } from "./fieldBatch.js";
8
11
  export {
9
12
  type FieldBatchCodec,
10
13
  makeFieldBatchCodec,
11
14
  type FieldBatchEncodingContext,
12
- fluidVersionToFieldBatchCodecWriteVersion,
13
15
  type IncrementalEncoderDecoder,
14
16
  type IncrementalEncoder,
15
17
  type IncrementalDecoder,
@@ -12,10 +12,10 @@ import type { FluidSerializableReadOnly } from "../../valueUtilities.js";
12
12
 
13
13
  import type { FieldBatch } from "./fieldBatch.js";
14
14
  import {
15
+ FieldBatchFormatVersion,
15
16
  type EncodedFieldBatch,
16
17
  type EncodedNestedArrayShape,
17
18
  type EncodedNodeShape,
18
- version,
19
19
  } from "./format.js";
20
20
  import type { ShapeIndex } from "./formatGeneric.js";
21
21
 
@@ -30,7 +30,7 @@ import type { ShapeIndex } from "./formatGeneric.js";
30
30
  export function uncompressedEncode(batch: FieldBatch): EncodedFieldBatch {
31
31
  const rootFields = batch.map(encodeSequence);
32
32
  return {
33
- version,
33
+ version: FieldBatchFormatVersion.v1,
34
34
  identifiers: [],
35
35
  // A single shape used to encode all fields.
36
36
  shapes: [{ c: anyNodeShape }, { a: anyArray }],
@@ -23,7 +23,6 @@ export {
23
23
  type FieldBatchCodec,
24
24
  makeFieldBatchCodec,
25
25
  type FieldBatchEncodingContext,
26
- fluidVersionToFieldBatchCodecWriteVersion,
27
26
  type IncrementalEncoderDecoder,
28
27
  type ChunkReferenceId,
29
28
  type IncrementalEncodingPolicy,
@@ -107,8 +107,7 @@ export const required = new FieldKindWithEditor(
107
107
  // Which direction is allowed is a subjective policy choice.
108
108
  (other.kind === sequence.identifier ||
109
109
  other.kind === requiredIdentifier ||
110
- other.kind === optional.identifier ||
111
- other.kind === nodeKey.identifier) &&
110
+ other.kind === optional.identifier) &&
112
111
  allowsTreeSchemaIdentifierSuperset(types, other.types),
113
112
  new Set(),
114
113
  );
@@ -129,28 +128,6 @@ export const sequence = new FieldKindWithEditor(
129
128
  new Set([]),
130
129
  );
131
130
 
132
- const nodeKeyIdentifier = "NodeKey";
133
-
134
- /**
135
- * Exactly one identifier.
136
- *
137
- * TODO: this is almost the same as identifier, but apparently unused.
138
- * Confirm if this is truly unused since before the document format was stabilized, and remove if possible.
139
- * @deprecated Superseded by {@link identifier}.
140
- */
141
- export const nodeKey = new FieldKindWithEditor(
142
- nodeKeyIdentifier,
143
- Multiplicity.Single,
144
- noChangeHandler,
145
- (types, other) =>
146
- (other.kind === sequence.identifier ||
147
- other.kind === requiredIdentifier ||
148
- other.kind === optional.identifier ||
149
- other.kind === nodeKeyIdentifier) &&
150
- allowsTreeSchemaIdentifierSuperset(types, other.types),
151
- new Set(),
152
- );
153
-
154
131
  const identifierFieldIdentifier = "Identifier";
155
132
 
156
133
  /**
@@ -214,7 +191,6 @@ export const fieldKindConfigurations: ReadonlyMap<
214
191
  [
215
192
  brand(1),
216
193
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
217
- [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
218
194
  [required.identifier, { kind: required, formatVersion: 1 }],
219
195
  [optional.identifier, { kind: optional, formatVersion: 1 }],
220
196
  [sequence.identifier, { kind: sequence, formatVersion: 1 }],
@@ -225,7 +201,6 @@ export const fieldKindConfigurations: ReadonlyMap<
225
201
  [
226
202
  brand(2),
227
203
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
228
- [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
229
204
  [required.identifier, { kind: required, formatVersion: 2 }],
230
205
  [optional.identifier, { kind: optional, formatVersion: 2 }],
231
206
  [sequence.identifier, { kind: sequence, formatVersion: 1 }],
@@ -236,7 +211,6 @@ export const fieldKindConfigurations: ReadonlyMap<
236
211
  [
237
212
  brand(3),
238
213
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
239
- [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
240
214
  [required.identifier, { kind: required, formatVersion: 2 }],
241
215
  [optional.identifier, { kind: optional, formatVersion: 2 }],
242
216
  [sequence.identifier, { kind: sequence, formatVersion: 2 }],
@@ -247,7 +221,6 @@ export const fieldKindConfigurations: ReadonlyMap<
247
221
  [
248
222
  brand(4),
249
223
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
250
- [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
251
224
  [required.identifier, { kind: required, formatVersion: 2 }],
252
225
  [optional.identifier, { kind: optional, formatVersion: 2 }],
253
226
  [sequence.identifier, { kind: sequence, formatVersion: 3 }],
@@ -284,7 +257,7 @@ export function getCodecTreeForModularChangeFormat(
284
257
  * code which uses this should be audited for compatibility considerations.
285
258
  */
286
259
  export const fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor> = new Map(
287
- [required, optional, sequence, nodeKey, identifier, forbidden].map((s) => [s.identifier, s]),
260
+ [required, optional, sequence, identifier, forbidden].map((s) => [s.identifier, s]),
288
261
  );
289
262
 
290
263
  // Create named Aliases for nicer intellisense.
@@ -4,18 +4,19 @@
4
4
  */
5
5
 
6
6
  import { assert, oob } from "@fluidframework/core-utils/internal";
7
+ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
7
8
 
8
9
  import {
9
10
  type CodecTree,
10
- type ICodecOptions,
11
+ type CodecWriteOptions,
11
12
  type IJsonCodec,
12
13
  makeVersionedValidatedCodec,
13
14
  } from "../../codec/index.js";
14
15
  import type { FieldKey, ITreeCursorSynchronous } from "../../core/index.js";
15
16
  import type { FieldBatchCodec, FieldBatchEncodingContext } from "../chunked-forest/index.js";
16
17
 
17
- import { Format } from "./format.js";
18
- import type { Brand } from "../../util/index.js";
18
+ import { Format, ForestFormatVersion } from "./format.js";
19
+ import { brand } from "../../util/index.js";
19
20
 
20
21
  /**
21
22
  * Uses field cursors
@@ -23,15 +24,28 @@ import type { Brand } from "../../util/index.js";
23
24
  export type FieldSet = ReadonlyMap<FieldKey, ITreeCursorSynchronous>;
24
25
  export type ForestCodec = IJsonCodec<FieldSet, Format, Format, FieldBatchEncodingContext>;
25
26
 
27
+ /**
28
+ * Convert a MinimumVersionForCollab to a ForestFormatVersion.
29
+ * @param clientVersion - The MinimumVersionForCollab to convert.
30
+ * @returns The ForestFormatVersion that corresponds to the provided MinimumVersionForCollab.
31
+ */
32
+ function clientVersionToForestSummaryVersion(
33
+ clientVersion: MinimumVersionForCollab,
34
+ ): ForestFormatVersion {
35
+ // Currently, forest summary codec only writes in version 1.
36
+ return brand(ForestFormatVersion.v1);
37
+ }
38
+
26
39
  export function makeForestSummarizerCodec(
27
- options: ICodecOptions,
40
+ options: CodecWriteOptions,
28
41
  fieldBatchCodec: FieldBatchCodec,
29
42
  ): ForestCodec {
30
43
  const inner = fieldBatchCodec;
31
44
  // TODO: AB#41865
32
45
  // This needs to be updated to support multiple versions.
33
46
  // The second version will be used to enable incremental summarization.
34
- return makeVersionedValidatedCodec(options, new Set([1]), Format, {
47
+ const writeVersion = clientVersionToForestSummaryVersion(options.minVersionForCollab);
48
+ return makeVersionedValidatedCodec(options, new Set([ForestFormatVersion.v1]), Format, {
35
49
  encode: (data: FieldSet, context: FieldBatchEncodingContext): Format => {
36
50
  const keys: FieldKey[] = [];
37
51
  const fields: ITreeCursorSynchronous[] = [];
@@ -39,7 +53,7 @@ export function makeForestSummarizerCodec(
39
53
  keys.push(key);
40
54
  fields.push(value);
41
55
  }
42
- return { keys, fields: inner.encode(fields, context), version: 1 };
56
+ return { keys, fields: inner.encode(fields, context), version: writeVersion };
43
57
  },
44
58
  decode: (data: Format, context: FieldBatchEncodingContext): FieldSet => {
45
59
  const out: Map<FieldKey, ITreeCursorSynchronous> = new Map();
@@ -53,7 +67,8 @@ export function makeForestSummarizerCodec(
53
67
  });
54
68
  }
55
69
 
56
- export type ForestFormatVersion = Brand<1, "ForestFormatVersion">;
57
- export function getCodecTreeForForestFormat(version: ForestFormatVersion): CodecTree {
58
- return { name: "Forest", version };
70
+ export function getCodecTreeForForestFormat(
71
+ clientVersion: MinimumVersionForCollab,
72
+ ): CodecTree {
73
+ return { name: "Forest", version: clientVersionToForestSummaryVersion(clientVersion) };
59
74
  }
@@ -33,7 +33,7 @@ import type {
33
33
  SummaryElementStringifier,
34
34
  } from "../../shared-tree-core/index.js";
35
35
  import { idAllocatorFromMaxId, type JsonCompatible } from "../../util/index.js";
36
- // eslint-disable-next-line import/no-internal-modules
36
+ // eslint-disable-next-line import-x/no-internal-modules
37
37
  import { chunkFieldSingle, defaultChunkPolicy } from "../chunked-forest/chunkTree.js";
38
38
  import {
39
39
  defaultIncrementalEncodingPolicy,
@@ -7,12 +7,22 @@ import { type Static, Type } from "@sinclair/typebox";
7
7
 
8
8
  import { Versioned } from "../../codec/index.js";
9
9
  import { schemaFormatV1 } from "../../core/index.js";
10
+ import type { Brand } from "../../util/index.js";
10
11
 
11
- export const version = 1.0;
12
+ /**
13
+ * The format version for the forest.
14
+ */
15
+ export const ForestFormatVersion = {
16
+ v1: 1,
17
+ } as const;
18
+ export type ForestFormatVersion = Brand<
19
+ (typeof ForestFormatVersion)[keyof typeof ForestFormatVersion],
20
+ "ForestFormatVersion"
21
+ >;
12
22
 
13
23
  export const Format = Type.Object(
14
24
  {
15
- version: Type.Literal(version),
25
+ version: Type.Literal(ForestFormatVersion.v1),
16
26
  keys: Type.Array(schemaFormatV1.FieldKeySchema),
17
27
  fields: Versioned,
18
28
  },
@@ -4,4 +4,5 @@
4
4
  */
5
5
 
6
6
  export { forestSummaryKey, ForestSummarizer } from "./forestSummarizer.js";
7
- export { getCodecTreeForForestFormat, type ForestFormatVersion } from "./codec.js";
7
+ export { getCodecTreeForForestFormat } from "./codec.js";
8
+ export { ForestFormatVersion } from "./format.js";
@@ -33,6 +33,7 @@ export {
33
33
  makeSchemaCodec,
34
34
  makeSchemaCodecs,
35
35
  getCodecTreeForSchemaFormat,
36
+ clientVersionToSchemaVersion,
36
37
  } from "./schema-index/index.js";
37
38
  export {
38
39
  stackTreeNodeCursor,
@@ -107,7 +108,6 @@ export {
107
108
  getCodecTreeForFieldBatchFormat,
108
109
  makeTreeChunker,
109
110
  makeFieldBatchCodec,
110
- fluidVersionToFieldBatchCodecWriteVersion,
111
111
  type FieldBatchEncodingContext,
112
112
  emptyChunk,
113
113
  combineChunks,
@@ -203,7 +203,6 @@ export {
203
203
  makeSchemaChangeCodecs,
204
204
  EncodedSchemaChange,
205
205
  getCodecTreeForSchemaChangeFormat,
206
- type SchemaChangeFormatVersion,
207
206
  } from "./schema-edits/index.js";
208
207
 
209
208
  export { makeMitigatedChangeFamily } from "./mitigatedChangeFamily.js";
@@ -6,7 +6,6 @@
6
6
  export {
7
7
  makeSchemaChangeCodecs,
8
8
  getCodecTreeForSchemaChangeFormat,
9
- type SchemaChangeFormatVersion,
10
9
  } from "./schemaChangeCodecs.js";
11
10
  export type { SchemaChange } from "./schemaChangeTypes.js";
12
11
  export { EncodedSchemaChange } from "./schemaChangeFormat.js";
@@ -4,11 +4,12 @@
4
4
  */
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
+ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
7
8
 
8
9
  import {
9
10
  type CodecTree,
11
+ type CodecWriteOptions,
10
12
  type ICodecFamily,
11
- type ICodecOptions,
12
13
  type IJsonCodec,
13
14
  makeCodecFamily,
14
15
  makeVersionDispatchingCodec,
@@ -18,32 +19,31 @@ import { getCodecTreeForSchemaFormat, makeSchemaCodec } from "../schema-index/in
18
19
 
19
20
  import { EncodedSchemaChange } from "./schemaChangeFormat.js";
20
21
  import type { SchemaChange } from "./schemaChangeTypes.js";
21
- import { SchemaVersion } from "../../core/index.js";
22
- import type { Brand } from "../../util/index.js";
22
+ import { SchemaFormatVersion } from "../../core/index.js";
23
+ import { brand } from "../../util/index.js";
23
24
 
24
25
  /**
25
26
  * Create a family of schema change codecs.
26
27
  * @param options - Specifies common codec options, including which `validator` to use.
27
28
  * @returns The composed codec family.
28
29
  */
29
- export function makeSchemaChangeCodecs(options: ICodecOptions): ICodecFamily<SchemaChange> {
30
+ export function makeSchemaChangeCodecs(
31
+ options: CodecWriteOptions,
32
+ ): ICodecFamily<SchemaChange> {
30
33
  return makeCodecFamily([
31
- [SchemaVersion.v1, makeSchemaChangeCodecV1(options, SchemaVersion.v1)],
32
- [SchemaVersion.v2, makeSchemaChangeCodecV1(options, SchemaVersion.v2)],
34
+ [SchemaFormatVersion.v1, makeSchemaChangeCodecV1(options, brand(SchemaFormatVersion.v1))],
35
+ [SchemaFormatVersion.v2, makeSchemaChangeCodecV1(options, brand(SchemaFormatVersion.v2))],
33
36
  ]);
34
37
  }
35
38
 
36
- export type SchemaChangeFormatVersion = Brand<
37
- SchemaVersion.v1 | SchemaVersion.v2,
38
- "SchemaChangeFormatVersion"
39
- >;
40
39
  export function getCodecTreeForSchemaChangeFormat(
41
- version: SchemaChangeFormatVersion,
40
+ version: SchemaFormatVersion,
41
+ clientVersion: MinimumVersionForCollab,
42
42
  ): CodecTree {
43
43
  return {
44
44
  name: "SchemaChange",
45
45
  version,
46
- children: [getCodecTreeForSchemaFormat(version)],
46
+ children: [getCodecTreeForSchemaFormat(clientVersion)],
47
47
  };
48
48
  }
49
49
 
@@ -54,8 +54,8 @@ export function getCodecTreeForSchemaChangeFormat(
54
54
  * @returns The composed codec.
55
55
  */
56
56
  export function makeSchemaChangeCodec(
57
- options: ICodecOptions,
58
- writeVersion: SchemaVersion,
57
+ options: CodecWriteOptions,
58
+ writeVersion: SchemaFormatVersion,
59
59
  ): IJsonCodec<SchemaChange> {
60
60
  const family = makeSchemaChangeCodecs(options);
61
61
  return makeVersionDispatchingCodec(family, { ...options, writeVersion });
@@ -68,8 +68,8 @@ export function makeSchemaChangeCodec(
68
68
  * @returns The composed schema change codec.
69
69
  */
70
70
  function makeSchemaChangeCodecV1(
71
- options: ICodecOptions,
72
- schemaWriteVersion: SchemaVersion,
71
+ options: CodecWriteOptions,
72
+ schemaWriteVersion: SchemaFormatVersion,
73
73
  ): IJsonCodec<SchemaChange, EncodedSchemaChange> {
74
74
  const schemaCodec = makeSchemaCodec(options, schemaWriteVersion);
75
75
  const schemaChangeCodec: IJsonCodec<SchemaChange, EncodedSchemaChange> = {
@@ -7,6 +7,8 @@ import { fail, unreachableCase } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import {
9
9
  type CodecTree,
10
+ type CodecWriteOptions,
11
+ FluidClientVersion,
10
12
  type ICodecFamily,
11
13
  type ICodecOptions,
12
14
  type IJsonCodec,
@@ -15,7 +17,7 @@ import {
15
17
  makeVersionedValidatedCodec,
16
18
  } from "../../codec/index.js";
17
19
  import {
18
- SchemaVersion,
20
+ SchemaFormatVersion,
19
21
  type TreeNodeSchemaIdentifier,
20
22
  type TreeNodeStoredSchema,
21
23
  type TreeStoredSchema,
@@ -31,35 +33,42 @@ import { Format as FormatV2 } from "./formatV2.js";
31
33
  import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
32
34
 
33
35
  /**
34
- * Convert a MinimumVersionForCollab to a SchemaVersion.
36
+ * Convert a MinimumVersionForCollab to a SchemaFormatVersion.
35
37
  * @param clientVersion - The MinimumVersionForCollab to convert.
36
- * @returns The SchemaVersion that corresponds to the provided MinimumVersionForCollab.
38
+ * @returns The SchemaFormatVersion that corresponds to the provided MinimumVersionForCollab.
37
39
  */
38
40
  export function clientVersionToSchemaVersion(
39
41
  clientVersion: MinimumVersionForCollab,
40
- ): SchemaVersion {
41
- // Only one version of the schema codec is currently supported.
42
- return SchemaVersion.v1;
42
+ ): SchemaFormatVersion {
43
+ return clientVersion < FluidClientVersion.v2_43
44
+ ? brand(SchemaFormatVersion.v1)
45
+ : brand(SchemaFormatVersion.v2);
43
46
  }
44
47
 
45
- export function getCodecTreeForSchemaFormat(version: SchemaVersion): CodecTree {
46
- return { name: "Schema", version };
48
+ export function getCodecTreeForSchemaFormat(
49
+ clientVersion: MinimumVersionForCollab,
50
+ ): CodecTree {
51
+ return { name: "Schema", version: clientVersionToSchemaVersion(clientVersion) };
47
52
  }
48
53
 
49
54
  /**
50
55
  * Create a schema codec.
51
- * @param options - Specifies common codec options, including which `validator` to use.
52
- * @param writeVersion - The schema write version.
56
+ * @param options - Specifies common codec options, including `minVersionForCollab` and which `validator` to use.
57
+ * @param writeVersionOverride - The schema version to write. If not provided, the version will be derived from `minVersionForCollab`.
53
58
  * @returns The composed codec.
54
59
  *
55
60
  * @privateRemarks We should consider using the Shared Tree format version instead as it may be more valuable for application authors than the schema version.
56
61
  */
57
62
  export function makeSchemaCodec(
58
- options: ICodecOptions,
59
- writeVersion: SchemaVersion,
63
+ options: CodecWriteOptions,
64
+ writeVersionOverride?: SchemaFormatVersion,
60
65
  ): IJsonCodec<TreeStoredSchema> {
61
66
  const family = makeSchemaCodecs(options);
62
- return makeVersionDispatchingCodec(family, { ...options, writeVersion });
67
+ return makeVersionDispatchingCodec(family, {
68
+ ...options,
69
+ writeVersion:
70
+ writeVersionOverride ?? clientVersionToSchemaVersion(options.minVersionForCollab),
71
+ });
63
72
  }
64
73
 
65
74
  /**
@@ -69,8 +78,8 @@ export function makeSchemaCodec(
69
78
  */
70
79
  export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStoredSchema> {
71
80
  return makeCodecFamily([
72
- [SchemaVersion.v1, makeSchemaCodecV1(options)],
73
- [SchemaVersion.v2, makeSchemaCodecV2(options)],
81
+ [SchemaFormatVersion.v1, makeSchemaCodecV1(options)],
82
+ [SchemaFormatVersion.v2, makeSchemaCodecV2(options)],
74
83
  ]);
75
84
  }
76
85
 
@@ -80,11 +89,14 @@ export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStore
80
89
  * @param version - The schema write version.
81
90
  * @returns The encoded schema.
82
91
  */
83
- export function encodeRepo(repo: TreeStoredSchema, version: SchemaVersion): JsonCompatible {
92
+ export function encodeRepo(
93
+ repo: TreeStoredSchema,
94
+ version: SchemaFormatVersion,
95
+ ): JsonCompatible {
84
96
  switch (version) {
85
- case SchemaVersion.v1:
97
+ case SchemaFormatVersion.v1:
86
98
  return encodeRepoV1(repo) as JsonCompatible;
87
- case SchemaVersion.v2:
99
+ case SchemaFormatVersion.v2:
88
100
  return encodeRepoV2(repo) as JsonCompatible;
89
101
  default:
90
102
  unreachableCase(version);
@@ -95,7 +107,7 @@ function encodeRepoV1(repo: TreeStoredSchema): FormatV1 {
95
107
  const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV1());
96
108
  const rootFieldSchema = encodeFieldSchemaV1(repo.rootFieldSchema);
97
109
  return {
98
- version: SchemaVersion.v1,
110
+ version: SchemaFormatVersion.v1,
99
111
  nodes: nodeSchema,
100
112
  root: rootFieldSchema,
101
113
  };
@@ -105,7 +117,7 @@ function encodeRepoV2(repo: TreeStoredSchema): FormatV2 {
105
117
  const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV2());
106
118
  const rootFieldSchema = encodeFieldSchemaV2(repo.rootFieldSchema);
107
119
  return {
108
- version: SchemaVersion.v2,
120
+ version: SchemaFormatVersion.v2,
109
121
  nodes: nodeSchema,
110
122
  root: rootFieldSchema,
111
123
  };
@@ -169,7 +181,7 @@ function decodeV2(f: FormatV2): TreeStoredSchema {
169
181
  * @returns The codec.
170
182
  */
171
183
  function makeSchemaCodecV1(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV1> {
172
- return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v1]), FormatV1, {
184
+ return makeVersionedValidatedCodec(options, new Set([SchemaFormatVersion.v1]), FormatV1, {
173
185
  encode: (data: TreeStoredSchema) => encodeRepoV1(data),
174
186
  decode: (data: FormatV1) => decodeV1(data),
175
187
  });
@@ -181,7 +193,7 @@ function makeSchemaCodecV1(options: ICodecOptions): IJsonCodec<TreeStoredSchema,
181
193
  * @returns The codec.
182
194
  */
183
195
  function makeSchemaCodecV2(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV2> {
184
- return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v2]), FormatV2, {
196
+ return makeVersionedValidatedCodec(options, new Set([SchemaFormatVersion.v2]), FormatV2, {
185
197
  encode: (data: TreeStoredSchema) => encodeRepoV2(data),
186
198
  decode: (data: FormatV2) => decodeV2(data),
187
199
  });
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
7
7
 
8
- import { SchemaVersion, schemaFormatV1 } from "../../core/index.js";
8
+ import { SchemaFormatVersion, schemaFormatV1 } from "../../core/index.js";
9
9
 
10
10
  const noAdditionalProps: ObjectOptions = { additionalProperties: false };
11
11
 
@@ -21,7 +21,7 @@ const noAdditionalProps: ObjectOptions = { additionalProperties: false };
21
21
  */
22
22
  export const Format = Type.Object(
23
23
  {
24
- version: Type.Literal(SchemaVersion.v1),
24
+ version: Type.Literal(SchemaFormatVersion.v1),
25
25
  nodes: Type.Record(Type.String(), schemaFormatV1.TreeNodeSchemaDataFormat),
26
26
  root: schemaFormatV1.FieldSchemaFormat,
27
27
  },
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
7
7
 
8
- import { SchemaVersion, schemaFormatV2 } from "../../core/index.js";
8
+ import { SchemaFormatVersion, schemaFormatV2 } from "../../core/index.js";
9
9
 
10
10
  const noAdditionalProps: ObjectOptions = { additionalProperties: false };
11
11
 
@@ -21,7 +21,7 @@ const noAdditionalProps: ObjectOptions = { additionalProperties: false };
21
21
  */
22
22
  export const Format = Type.Object(
23
23
  {
24
- version: Type.Literal(SchemaVersion.v2),
24
+ version: Type.Literal(SchemaFormatVersion.v2),
25
25
  nodes: Type.Record(Type.String(), schemaFormatV2.TreeNodeSchemaDataFormat),
26
26
  root: schemaFormatV2.FieldSchemaFormat,
27
27
  },
@@ -17,6 +17,7 @@ import { SummaryTreeBuilder } from "@fluidframework/runtime-utils/internal";
17
17
  import type { IJsonCodec } from "../../codec/index.js";
18
18
  import {
19
19
  type MutableTreeStoredSchema,
20
+ type SchemaFormatVersion,
20
21
  type TreeStoredSchema,
21
22
  schemaDataIsEmpty,
22
23
  } from "../../core/index.js";
@@ -108,7 +109,7 @@ export class SchemaSummarizer implements Summarizable {
108
109
  */
109
110
  export function encodeTreeSchema(
110
111
  schema: TreeStoredSchema,
111
- writeVersion: number,
112
+ writeVersion: SchemaFormatVersion,
112
113
  ): JsonCompatible {
113
114
  return encodeRepo(schema, writeVersion);
114
115
  }