@fluidframework/tree 2.70.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 (684) hide show
  1. package/CHANGELOG.md +84 -40
  2. package/api-report/tree.alpha.api.md +52 -22
  3. package/api-report/tree.beta.api.md +45 -0
  4. package/api-report/tree.legacy.beta.api.md +45 -0
  5. package/dist/alpha.d.ts +12 -7
  6. package/dist/api.js +1 -1
  7. package/dist/api.js.map +1 -1
  8. package/dist/beta.d.ts +8 -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/codec/discriminatedUnions.d.ts +1 -1
  14. package/dist/codec/discriminatedUnions.js +1 -1
  15. package/dist/codec/discriminatedUnions.js.map +1 -1
  16. package/dist/core/index.d.ts +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +2 -2
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/schema-stored/index.d.ts +1 -1
  21. package/dist/core/schema-stored/index.d.ts.map +1 -1
  22. package/dist/core/schema-stored/index.js +2 -2
  23. package/dist/core/schema-stored/index.js.map +1 -1
  24. package/dist/core/schema-stored/schema.d.ts +6 -6
  25. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  26. package/dist/core/schema-stored/schema.js +6 -7
  27. package/dist/core/schema-stored/schema.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  29. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  30. package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  32. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  33. package/dist/core/tree/detachedFieldIndexCodecV1.js +3 -2
  34. package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  35. package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  36. package/dist/core/tree/detachedFieldIndexCodecV2.js +3 -1
  37. package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  38. package/dist/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  39. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  40. package/dist/core/tree/detachedFieldIndexCodecs.js +29 -8
  41. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  42. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  43. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  44. package/dist/core/tree/detachedFieldIndexFormatCommon.js +8 -1
  45. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  46. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  47. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  48. package/dist/core/tree/detachedFieldIndexFormatV1.js +3 -3
  49. package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  50. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  51. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  52. package/dist/core/tree/detachedFieldIndexFormatV2.js +3 -3
  53. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  54. package/dist/core/tree/index.d.ts +2 -1
  55. package/dist/core/tree/index.d.ts.map +1 -1
  56. package/dist/core/tree/index.js.map +1 -1
  57. package/dist/external-utilities/typeboxValidator.js +1 -1
  58. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  60. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -8
  62. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  66. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/format.js +9 -4
  68. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  70. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/index.js +1 -2
  72. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  74. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +1 -1
  75. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  76. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  77. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  78. package/dist/feature-libraries/chunked-forest/index.js +1 -2
  79. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  80. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  81. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  82. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +3 -21
  83. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  84. package/dist/feature-libraries/forest-summary/codec.d.ts +4 -5
  85. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  86. package/dist/feature-libraries/forest-summary/codec.js +15 -4
  87. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  88. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  89. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  90. package/dist/feature-libraries/forest-summary/format.d.ts +8 -1
  91. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  92. package/dist/feature-libraries/forest-summary/format.js +8 -3
  93. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  94. package/dist/feature-libraries/forest-summary/index.d.ts +2 -1
  95. package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
  96. package/dist/feature-libraries/forest-summary/index.js +3 -1
  97. package/dist/feature-libraries/forest-summary/index.js.map +1 -1
  98. package/dist/feature-libraries/index.d.ts +3 -3
  99. package/dist/feature-libraries/index.d.ts.map +1 -1
  100. package/dist/feature-libraries/index.js +2 -2
  101. package/dist/feature-libraries/index.js.map +1 -1
  102. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  103. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  104. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  105. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  106. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  107. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +5 -4
  108. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  109. package/dist/feature-libraries/schema-index/codec.d.ts +10 -10
  110. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  111. package/dist/feature-libraries/schema-index/codec.js +22 -18
  112. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  113. package/dist/feature-libraries/schema-index/formatV1.d.ts +2 -2
  114. package/dist/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  115. package/dist/feature-libraries/schema-index/formatV1.js +1 -1
  116. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  117. package/dist/feature-libraries/schema-index/formatV2.d.ts +1 -2
  118. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  119. package/dist/feature-libraries/schema-index/formatV2.js +1 -1
  120. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  121. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  122. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  123. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  124. package/dist/index.d.ts +2 -2
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +6 -2
  127. package/dist/index.js.map +1 -1
  128. package/dist/legacy.d.ts +8 -0
  129. package/dist/packageVersion.d.ts +1 -1
  130. package/dist/packageVersion.js +1 -1
  131. package/dist/packageVersion.js.map +1 -1
  132. package/dist/shared-tree/independentView.d.ts +75 -6
  133. package/dist/shared-tree/independentView.d.ts.map +1 -1
  134. package/dist/shared-tree/independentView.js +116 -43
  135. package/dist/shared-tree/independentView.js.map +1 -1
  136. package/dist/shared-tree/index.d.ts +2 -1
  137. package/dist/shared-tree/index.d.ts.map +1 -1
  138. package/dist/shared-tree/index.js +6 -1
  139. package/dist/shared-tree/index.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +12 -16
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +105 -130
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  145. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeCodecs.js +12 -11
  147. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  148. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  149. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  150. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  151. package/dist/shared-tree/treeAlpha.d.ts +1 -1
  152. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  153. package/dist/shared-tree/treeAlpha.js +4 -2
  154. package/dist/shared-tree/treeAlpha.js.map +1 -1
  155. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  156. package/dist/shared-tree/treeCheckout.js +1 -3
  157. package/dist/shared-tree/treeCheckout.js.map +1 -1
  158. package/dist/shared-tree-core/editManagerCodecs.d.ts +19 -6
  159. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  160. package/dist/shared-tree-core/editManagerCodecs.js +35 -17
  161. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  162. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  163. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  164. package/dist/shared-tree-core/editManagerFormatCommons.js +43 -1
  165. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  166. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  167. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  168. package/dist/shared-tree-core/editManagerFormatV1toV4.js +4 -4
  169. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  170. package/dist/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  171. package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  172. package/dist/shared-tree-core/editManagerFormatV5.js +1 -1
  173. package/dist/shared-tree-core/editManagerFormatV5.js.map +1 -1
  174. package/dist/shared-tree-core/index.d.ts +5 -3
  175. package/dist/shared-tree-core/index.d.ts.map +1 -1
  176. package/dist/shared-tree-core/index.js +11 -3
  177. package/dist/shared-tree-core/index.js.map +1 -1
  178. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  179. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  180. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  181. package/dist/shared-tree-core/messageCodecV5.d.ts +2 -1
  182. package/dist/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  183. package/dist/shared-tree-core/messageCodecV5.js.map +1 -1
  184. package/dist/shared-tree-core/messageCodecs.d.ts +19 -6
  185. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  186. package/dist/shared-tree-core/messageCodecs.js +38 -21
  187. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  188. package/dist/shared-tree-core/messageFormat.d.ts +50 -0
  189. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -0
  190. package/dist/shared-tree-core/messageFormat.js +51 -0
  191. package/dist/shared-tree-core/messageFormat.js.map +1 -0
  192. package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -8
  193. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  194. package/dist/shared-tree-core/sharedTreeCore.js +3 -3
  195. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  196. package/dist/simple-tree/api/discrepancies.d.ts +2 -2
  197. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  198. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  199. package/dist/simple-tree/api/incrementalAllowedTypes.js +1 -1
  200. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  201. package/dist/simple-tree/api/index.d.ts +3 -2
  202. package/dist/simple-tree/api/index.d.ts.map +1 -1
  203. package/dist/simple-tree/api/index.js +4 -1
  204. package/dist/simple-tree/api/index.js.map +1 -1
  205. package/dist/simple-tree/api/schemaFactory.d.ts +2 -2
  206. package/dist/simple-tree/api/schemaFactory.js +2 -2
  207. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  208. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  209. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  210. package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -52
  211. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  212. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  213. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  214. package/dist/simple-tree/api/schemaFactoryBeta.js +61 -7
  215. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  216. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  217. package/dist/simple-tree/api/schemaFactoryRecursive.js +1 -0
  218. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  219. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  220. package/dist/simple-tree/api/schemaFromSimple.js +15 -8
  221. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  222. package/dist/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  223. package/dist/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  224. package/dist/simple-tree/api/simpleSchemaCodec.js +292 -0
  225. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  226. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  227. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
  228. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  229. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  230. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  231. package/dist/simple-tree/api/storedSchema.js +8 -6
  232. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  233. package/dist/simple-tree/api/tree.d.ts +2 -2
  234. package/dist/simple-tree/api/tree.js.map +1 -1
  235. package/dist/simple-tree/api/typesUnsafe.d.ts +6 -6
  236. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  237. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
  238. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +71 -7
  240. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  241. package/dist/simple-tree/core/allowedTypes.d.ts +12 -7
  242. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  243. package/dist/simple-tree/core/allowedTypes.js +18 -5
  244. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  245. package/dist/simple-tree/core/treeNode.js +1 -1
  246. package/dist/simple-tree/core/treeNode.js.map +1 -1
  247. package/dist/simple-tree/fieldSchema.d.ts +2 -1
  248. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  249. package/dist/simple-tree/fieldSchema.js +10 -0
  250. package/dist/simple-tree/fieldSchema.js.map +1 -1
  251. package/dist/simple-tree/index.d.ts +3 -2
  252. package/dist/simple-tree/index.d.ts.map +1 -1
  253. package/dist/simple-tree/index.js +4 -0
  254. package/dist/simple-tree/index.js.map +1 -1
  255. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  256. package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -1
  257. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  258. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  259. package/dist/simple-tree/node-kinds/map/mapNode.js +7 -1
  260. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  261. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
  262. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  263. package/dist/simple-tree/node-kinds/object/objectNode.js +21 -8
  264. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  265. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  266. package/dist/simple-tree/node-kinds/record/recordNode.js +8 -2
  267. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  268. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
  269. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  270. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  271. package/dist/simple-tree/simpleSchema.d.ts +30 -6
  272. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  273. package/dist/simple-tree/simpleSchema.js.map +1 -1
  274. package/dist/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  275. package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  276. package/dist/simple-tree/simpleSchemaFormatV1.js +115 -0
  277. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  278. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  279. package/dist/simple-tree/toStoredSchema.js +6 -3
  280. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  281. package/dist/tableSchema.d.ts.map +1 -1
  282. package/dist/tableSchema.js +1 -1
  283. package/dist/tableSchema.js.map +1 -1
  284. package/dist/treeFactory.d.ts +3 -1
  285. package/dist/treeFactory.d.ts.map +1 -1
  286. package/dist/treeFactory.js +26 -2
  287. package/dist/treeFactory.js.map +1 -1
  288. package/dist/util/brand.d.ts +31 -2
  289. package/dist/util/brand.d.ts.map +1 -1
  290. package/dist/util/brand.js +28 -2
  291. package/dist/util/brand.js.map +1 -1
  292. package/dist/util/brandedMap.d.ts +3 -1
  293. package/dist/util/brandedMap.d.ts.map +1 -1
  294. package/dist/util/brandedMap.js.map +1 -1
  295. package/dist/util/index.d.ts +1 -1
  296. package/dist/util/index.d.ts.map +1 -1
  297. package/dist/util/index.js +3 -2
  298. package/dist/util/index.js.map +1 -1
  299. package/dist/util/referenceCounting.d.ts.map +1 -1
  300. package/dist/util/referenceCounting.js +1 -0
  301. package/dist/util/referenceCounting.js.map +1 -1
  302. package/lib/alpha.d.ts +12 -7
  303. package/lib/api.js +2 -2
  304. package/lib/api.js.map +1 -1
  305. package/lib/beta.d.ts +8 -0
  306. package/lib/codec/codec.d.ts +16 -1
  307. package/lib/codec/codec.d.ts.map +1 -1
  308. package/lib/codec/codec.js +16 -3
  309. package/lib/codec/codec.js.map +1 -1
  310. package/lib/codec/discriminatedUnions.d.ts +1 -1
  311. package/lib/codec/discriminatedUnions.js +1 -1
  312. package/lib/codec/discriminatedUnions.js.map +1 -1
  313. package/lib/core/index.d.ts +1 -1
  314. package/lib/core/index.d.ts.map +1 -1
  315. package/lib/core/index.js +1 -1
  316. package/lib/core/index.js.map +1 -1
  317. package/lib/core/schema-stored/index.d.ts +1 -1
  318. package/lib/core/schema-stored/index.d.ts.map +1 -1
  319. package/lib/core/schema-stored/index.js +1 -1
  320. package/lib/core/schema-stored/index.js.map +1 -1
  321. package/lib/core/schema-stored/schema.d.ts +6 -6
  322. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  323. package/lib/core/schema-stored/schema.js +6 -7
  324. package/lib/core/schema-stored/schema.js.map +1 -1
  325. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  326. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  327. package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  328. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  329. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  330. package/lib/core/tree/detachedFieldIndexCodecV1.js +3 -2
  331. package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  332. package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  333. package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -2
  334. package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  335. package/lib/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  336. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  337. package/lib/core/tree/detachedFieldIndexCodecs.js +29 -8
  338. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  339. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  340. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  341. package/lib/core/tree/detachedFieldIndexFormatCommon.js +7 -0
  342. package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  343. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  344. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  345. package/lib/core/tree/detachedFieldIndexFormatV1.js +3 -3
  346. package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  347. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  348. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  349. package/lib/core/tree/detachedFieldIndexFormatV2.js +3 -3
  350. package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  351. package/lib/core/tree/index.d.ts +2 -1
  352. package/lib/core/tree/index.d.ts.map +1 -1
  353. package/lib/core/tree/index.js +1 -1
  354. package/lib/core/tree/index.js.map +1 -1
  355. package/lib/external-utilities/typeboxValidator.js +1 -1
  356. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  357. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  358. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  359. package/lib/feature-libraries/chunked-forest/codec/codecs.js +13 -8
  360. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  361. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
  362. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  363. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  364. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  365. package/lib/feature-libraries/chunked-forest/codec/format.js +8 -3
  366. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  367. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  368. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  369. package/lib/feature-libraries/chunked-forest/codec/index.js +2 -2
  370. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  371. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  372. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
  373. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  374. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  375. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  376. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  377. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  378. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  379. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  380. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +2 -20
  381. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  382. package/lib/feature-libraries/forest-summary/codec.d.ts +4 -5
  383. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  384. package/lib/feature-libraries/forest-summary/codec.js +16 -5
  385. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  386. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  387. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  388. package/lib/feature-libraries/forest-summary/format.d.ts +8 -1
  389. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  390. package/lib/feature-libraries/forest-summary/format.js +7 -2
  391. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  392. package/lib/feature-libraries/forest-summary/index.d.ts +2 -1
  393. package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
  394. package/lib/feature-libraries/forest-summary/index.js +1 -0
  395. package/lib/feature-libraries/forest-summary/index.js.map +1 -1
  396. package/lib/feature-libraries/index.d.ts +3 -3
  397. package/lib/feature-libraries/index.d.ts.map +1 -1
  398. package/lib/feature-libraries/index.js +2 -2
  399. package/lib/feature-libraries/index.js.map +1 -1
  400. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  401. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  402. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  403. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  404. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  405. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +6 -5
  406. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  407. package/lib/feature-libraries/schema-index/codec.d.ts +10 -10
  408. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  409. package/lib/feature-libraries/schema-index/codec.js +24 -20
  410. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  411. package/lib/feature-libraries/schema-index/formatV1.d.ts +2 -2
  412. package/lib/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  413. package/lib/feature-libraries/schema-index/formatV1.js +2 -2
  414. package/lib/feature-libraries/schema-index/formatV1.js.map +1 -1
  415. package/lib/feature-libraries/schema-index/formatV2.d.ts +1 -2
  416. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  417. package/lib/feature-libraries/schema-index/formatV2.js +2 -2
  418. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
  419. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  420. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  421. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  422. package/lib/index.d.ts +2 -2
  423. package/lib/index.d.ts.map +1 -1
  424. package/lib/index.js +2 -2
  425. package/lib/index.js.map +1 -1
  426. package/lib/legacy.d.ts +8 -0
  427. package/lib/packageVersion.d.ts +1 -1
  428. package/lib/packageVersion.js +1 -1
  429. package/lib/packageVersion.js.map +1 -1
  430. package/lib/shared-tree/independentView.d.ts +75 -6
  431. package/lib/shared-tree/independentView.d.ts.map +1 -1
  432. package/lib/shared-tree/independentView.js +111 -39
  433. package/lib/shared-tree/independentView.js.map +1 -1
  434. package/lib/shared-tree/index.d.ts +2 -1
  435. package/lib/shared-tree/index.d.ts.map +1 -1
  436. package/lib/shared-tree/index.js +2 -1
  437. package/lib/shared-tree/index.js.map +1 -1
  438. package/lib/shared-tree/sharedTree.d.ts +12 -16
  439. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  440. package/lib/shared-tree/sharedTree.js +108 -133
  441. package/lib/shared-tree/sharedTree.js.map +1 -1
  442. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  443. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  444. package/lib/shared-tree/sharedTreeChangeCodecs.js +7 -6
  445. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  446. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  447. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  448. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  449. package/lib/shared-tree/treeAlpha.d.ts +1 -1
  450. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  451. package/lib/shared-tree/treeAlpha.js +5 -3
  452. package/lib/shared-tree/treeAlpha.js.map +1 -1
  453. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  454. package/lib/shared-tree/treeCheckout.js +1 -3
  455. package/lib/shared-tree/treeCheckout.js.map +1 -1
  456. package/lib/shared-tree-core/editManagerCodecs.d.ts +19 -6
  457. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  458. package/lib/shared-tree-core/editManagerCodecs.js +32 -16
  459. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  460. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  461. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  462. package/lib/shared-tree-core/editManagerFormatCommons.js +42 -0
  463. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  464. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  465. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  466. package/lib/shared-tree-core/editManagerFormatV1toV4.js +5 -5
  467. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  468. package/lib/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  469. package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  470. package/lib/shared-tree-core/editManagerFormatV5.js +2 -2
  471. package/lib/shared-tree-core/editManagerFormatV5.js.map +1 -1
  472. package/lib/shared-tree-core/index.d.ts +5 -3
  473. package/lib/shared-tree-core/index.d.ts.map +1 -1
  474. package/lib/shared-tree-core/index.js +4 -2
  475. package/lib/shared-tree-core/index.js.map +1 -1
  476. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  477. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  478. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  479. package/lib/shared-tree-core/messageCodecV5.d.ts +2 -1
  480. package/lib/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  481. package/lib/shared-tree-core/messageCodecV5.js.map +1 -1
  482. package/lib/shared-tree-core/messageCodecs.d.ts +19 -6
  483. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  484. package/lib/shared-tree-core/messageCodecs.js +35 -20
  485. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  486. package/lib/shared-tree-core/messageFormat.d.ts +50 -0
  487. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -0
  488. package/lib/shared-tree-core/messageFormat.js +48 -0
  489. package/lib/shared-tree-core/messageFormat.js.map +1 -0
  490. package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -8
  491. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  492. package/lib/shared-tree-core/sharedTreeCore.js +3 -3
  493. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  494. package/lib/simple-tree/api/discrepancies.d.ts +2 -2
  495. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  496. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  497. package/lib/simple-tree/api/incrementalAllowedTypes.js +1 -1
  498. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  499. package/lib/simple-tree/api/index.d.ts +3 -2
  500. package/lib/simple-tree/api/index.d.ts.map +1 -1
  501. package/lib/simple-tree/api/index.js +1 -0
  502. package/lib/simple-tree/api/index.js.map +1 -1
  503. package/lib/simple-tree/api/schemaFactory.d.ts +2 -2
  504. package/lib/simple-tree/api/schemaFactory.js +2 -2
  505. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  506. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  507. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  508. package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -52
  509. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  510. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  511. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  512. package/lib/simple-tree/api/schemaFactoryBeta.js +58 -4
  513. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  514. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  515. package/lib/simple-tree/api/schemaFactoryRecursive.js +1 -0
  516. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  517. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  518. package/lib/simple-tree/api/schemaFromSimple.js +15 -8
  519. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  520. package/lib/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  521. package/lib/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  522. package/lib/simple-tree/api/simpleSchemaCodec.js +264 -0
  523. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  524. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  525. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
  526. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  527. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  528. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  529. package/lib/simple-tree/api/storedSchema.js +5 -3
  530. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  531. package/lib/simple-tree/api/tree.d.ts +2 -2
  532. package/lib/simple-tree/api/tree.js.map +1 -1
  533. package/lib/simple-tree/api/typesUnsafe.d.ts +6 -6
  534. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  535. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
  536. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  537. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +69 -7
  538. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  539. package/lib/simple-tree/core/allowedTypes.d.ts +12 -7
  540. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  541. package/lib/simple-tree/core/allowedTypes.js +19 -6
  542. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  543. package/lib/simple-tree/core/treeNode.js +1 -1
  544. package/lib/simple-tree/core/treeNode.js.map +1 -1
  545. package/lib/simple-tree/fieldSchema.d.ts +2 -1
  546. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  547. package/lib/simple-tree/fieldSchema.js +10 -0
  548. package/lib/simple-tree/fieldSchema.js.map +1 -1
  549. package/lib/simple-tree/index.d.ts +3 -2
  550. package/lib/simple-tree/index.d.ts.map +1 -1
  551. package/lib/simple-tree/index.js +1 -0
  552. package/lib/simple-tree/index.js.map +1 -1
  553. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  554. package/lib/simple-tree/node-kinds/array/arrayNode.js +9 -3
  555. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  556. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  557. package/lib/simple-tree/node-kinds/map/mapNode.js +9 -3
  558. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  559. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
  560. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  561. package/lib/simple-tree/node-kinds/object/objectNode.js +22 -9
  562. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  563. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  564. package/lib/simple-tree/node-kinds/record/recordNode.js +10 -4
  565. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  566. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
  567. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  568. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  569. package/lib/simple-tree/simpleSchema.d.ts +30 -6
  570. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  571. package/lib/simple-tree/simpleSchema.js.map +1 -1
  572. package/lib/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  573. package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  574. package/lib/simple-tree/simpleSchemaFormatV1.js +112 -0
  575. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  576. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  577. package/lib/simple-tree/toStoredSchema.js +6 -3
  578. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  579. package/lib/tableSchema.d.ts.map +1 -1
  580. package/lib/tableSchema.js +1 -1
  581. package/lib/tableSchema.js.map +1 -1
  582. package/lib/treeFactory.d.ts +3 -1
  583. package/lib/treeFactory.d.ts.map +1 -1
  584. package/lib/treeFactory.js +23 -1
  585. package/lib/treeFactory.js.map +1 -1
  586. package/lib/util/brand.d.ts +31 -2
  587. package/lib/util/brand.d.ts.map +1 -1
  588. package/lib/util/brand.js +26 -1
  589. package/lib/util/brand.js.map +1 -1
  590. package/lib/util/brandedMap.d.ts +3 -1
  591. package/lib/util/brandedMap.d.ts.map +1 -1
  592. package/lib/util/brandedMap.js.map +1 -1
  593. package/lib/util/index.d.ts +1 -1
  594. package/lib/util/index.d.ts.map +1 -1
  595. package/lib/util/index.js +1 -1
  596. package/lib/util/index.js.map +1 -1
  597. package/lib/util/referenceCounting.d.ts.map +1 -1
  598. package/lib/util/referenceCounting.js +1 -0
  599. package/lib/util/referenceCounting.js.map +1 -1
  600. package/package.json +26 -26
  601. package/src/api.ts +2 -2
  602. package/src/codec/codec.ts +17 -3
  603. package/src/codec/discriminatedUnions.ts +1 -1
  604. package/src/core/index.ts +1 -2
  605. package/src/core/schema-stored/index.ts +1 -2
  606. package/src/core/schema-stored/schema.ts +10 -7
  607. package/src/core/tree/detachedFieldIndexCodecCommon.ts +2 -1
  608. package/src/core/tree/detachedFieldIndexCodecV1.ts +4 -2
  609. package/src/core/tree/detachedFieldIndexCodecV2.ts +4 -6
  610. package/src/core/tree/detachedFieldIndexCodecs.ts +33 -11
  611. package/src/core/tree/detachedFieldIndexFormatCommon.ts +17 -2
  612. package/src/core/tree/detachedFieldIndexFormatV1.ts +6 -4
  613. package/src/core/tree/detachedFieldIndexFormatV2.ts +6 -4
  614. package/src/core/tree/index.ts +2 -4
  615. package/src/external-utilities/typeboxValidator.ts +1 -1
  616. package/src/feature-libraries/chunked-forest/codec/codecs.ts +18 -13
  617. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +2 -2
  618. package/src/feature-libraries/chunked-forest/codec/format.ts +15 -4
  619. package/src/feature-libraries/chunked-forest/codec/index.ts +4 -2
  620. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -2
  621. package/src/feature-libraries/chunked-forest/index.ts +0 -1
  622. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -29
  623. package/src/feature-libraries/forest-summary/codec.ts +24 -9
  624. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -1
  625. package/src/feature-libraries/forest-summary/format.ts +12 -2
  626. package/src/feature-libraries/forest-summary/index.ts +2 -1
  627. package/src/feature-libraries/index.ts +1 -2
  628. package/src/feature-libraries/schema-edits/index.ts +0 -1
  629. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +16 -16
  630. package/src/feature-libraries/schema-index/codec.ts +34 -22
  631. package/src/feature-libraries/schema-index/formatV1.ts +2 -2
  632. package/src/feature-libraries/schema-index/formatV2.ts +2 -2
  633. package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -1
  634. package/src/index.ts +6 -1
  635. package/src/packageVersion.ts +1 -1
  636. package/src/shared-tree/independentView.ts +161 -75
  637. package/src/shared-tree/index.ts +4 -0
  638. package/src/shared-tree/sharedTree.ts +137 -175
  639. package/src/shared-tree/sharedTreeChangeCodecs.ts +15 -9
  640. package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
  641. package/src/shared-tree/treeAlpha.ts +6 -5
  642. package/src/shared-tree/treeCheckout.ts +1 -3
  643. package/src/shared-tree-core/editManagerCodecs.ts +56 -19
  644. package/src/shared-tree-core/editManagerFormatCommons.ts +47 -0
  645. package/src/shared-tree-core/editManagerFormatV1toV4.ts +10 -5
  646. package/src/shared-tree-core/editManagerFormatV5.ts +3 -3
  647. package/src/shared-tree-core/index.ts +11 -5
  648. package/src/shared-tree-core/messageCodecV1ToV4.ts +6 -1
  649. package/src/shared-tree-core/messageCodecV5.ts +2 -1
  650. package/src/shared-tree-core/messageCodecs.ts +60 -26
  651. package/src/shared-tree-core/messageFormat.ts +56 -0
  652. package/src/shared-tree-core/sharedTreeCore.ts +11 -13
  653. package/src/simple-tree/api/discrepancies.ts +2 -2
  654. package/src/simple-tree/api/incrementalAllowedTypes.ts +1 -1
  655. package/src/simple-tree/api/index.ts +6 -2
  656. package/src/simple-tree/api/schemaFactory.ts +2 -2
  657. package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -168
  658. package/src/simple-tree/api/schemaFactoryBeta.ts +180 -14
  659. package/src/simple-tree/api/schemaFactoryRecursive.ts +2 -0
  660. package/src/simple-tree/api/schemaFromSimple.ts +23 -17
  661. package/src/simple-tree/api/simpleSchemaCodec.ts +360 -0
  662. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +8 -2
  663. package/src/simple-tree/api/storedSchema.ts +8 -5
  664. package/src/simple-tree/api/tree.ts +2 -2
  665. package/src/simple-tree/api/typesUnsafe.ts +6 -6
  666. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +76 -7
  667. package/src/simple-tree/core/allowedTypes.ts +29 -16
  668. package/src/simple-tree/core/treeNode.ts +2 -2
  669. package/src/simple-tree/fieldSchema.ts +14 -1
  670. package/src/simple-tree/index.ts +6 -1
  671. package/src/simple-tree/node-kinds/array/arrayNode.ts +11 -2
  672. package/src/simple-tree/node-kinds/map/mapNode.ts +11 -2
  673. package/src/simple-tree/node-kinds/object/objectNode.ts +57 -21
  674. package/src/simple-tree/node-kinds/record/recordNode.ts +12 -3
  675. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +16 -0
  676. package/src/simple-tree/simpleSchema.ts +32 -6
  677. package/src/simple-tree/simpleSchemaFormatV1.ts +179 -0
  678. package/src/simple-tree/toStoredSchema.ts +12 -3
  679. package/src/tableSchema.ts +5 -2
  680. package/src/treeFactory.ts +33 -1
  681. package/src/util/brand.ts +40 -2
  682. package/src/util/brandedMap.ts +3 -1
  683. package/src/util/index.ts +1 -0
  684. package/src/util/referenceCounting.ts +1 -0
@@ -14,9 +14,11 @@ import {
14
14
  RevisionTagSchema,
15
15
  } from "../rebase/index.js";
16
16
 
17
- import { type FormatV1, version1 } from "./detachedFieldIndexFormatV1.js";
17
+ import type { FormatV1 } from "./detachedFieldIndexFormatV1.js";
18
18
  import type { DetachedFieldSummaryData, Major } from "./detachedFieldIndexTypes.js";
19
19
  import { makeDetachedFieldIndexCodecFromMajorCodec } from "./detachedFieldIndexCodecCommon.js";
20
+ import { DetachedFieldIndexFormatVersion } from "./detachedFieldIndexFormatCommon.js";
21
+ import { brand } from "../../util/index.js";
20
22
 
21
23
  class MajorCodec implements IJsonCodec<Major, EncodedRevisionTag> {
22
24
  public constructor(
@@ -74,7 +76,7 @@ export function makeDetachedNodeToFieldCodecV1(
74
76
  return makeDetachedFieldIndexCodecFromMajorCodec(
75
77
  options,
76
78
  majorCodec,
77
- version1,
79
+ brand(DetachedFieldIndexFormatVersion.v1),
78
80
  RevisionTagSchema,
79
81
  );
80
82
  }
@@ -9,14 +9,12 @@ import type { IIdCompressor, StableId } from "@fluidframework/id-compressor";
9
9
  import type { ICodecOptions, IJsonCodec } from "../../codec/index.js";
10
10
  import type { EncodedRevisionTag, RevisionTagCodec, RevisionTag } from "../rebase/index.js";
11
11
 
12
- import {
13
- type FormatV2,
14
- StableOrFinalRevisionTag,
15
- version2,
16
- } from "./detachedFieldIndexFormatV2.js";
12
+ import { type FormatV2, StableOrFinalRevisionTag } from "./detachedFieldIndexFormatV2.js";
17
13
  import type { DetachedFieldSummaryData, Major } from "./detachedFieldIndexTypes.js";
18
14
  import { makeDetachedFieldIndexCodecFromMajorCodec } from "./detachedFieldIndexCodecCommon.js";
19
15
  import { isStableId } from "@fluidframework/id-compressor/internal";
16
+ import { DetachedFieldIndexFormatVersion } from "./detachedFieldIndexFormatCommon.js";
17
+ import { brand } from "../../util/index.js";
20
18
 
21
19
  class MajorCodec implements IJsonCodec<Major> {
22
20
  public constructor(
@@ -66,7 +64,7 @@ export function makeDetachedNodeToFieldCodecV2(
66
64
  return makeDetachedFieldIndexCodecFromMajorCodec(
67
65
  options,
68
66
  majorCodec,
69
- version2,
67
+ brand(DetachedFieldIndexFormatVersion.v2),
70
68
  StableOrFinalRevisionTag,
71
69
  );
72
70
  }
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { IIdCompressor } from "@fluidframework/id-compressor";
7
+ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
7
8
 
8
9
  import {
9
10
  type CodecTree,
@@ -16,12 +17,24 @@ import {
16
17
  } from "../../codec/index.js";
17
18
  import type { RevisionTagCodec } from "../rebase/index.js";
18
19
 
19
- import { version1 } from "./detachedFieldIndexFormatV1.js";
20
- import { version2 } from "./detachedFieldIndexFormatV2.js";
21
20
  import { makeDetachedNodeToFieldCodecV1 } from "./detachedFieldIndexCodecV1.js";
22
21
  import { makeDetachedNodeToFieldCodecV2 } from "./detachedFieldIndexCodecV2.js";
23
22
  import type { DetachedFieldSummaryData } from "./detachedFieldIndexTypes.js";
24
- import type { Brand } from "../../util/index.js";
23
+ import { DetachedFieldIndexFormatVersion } from "./detachedFieldIndexFormatCommon.js";
24
+ import { brand } from "../../util/index.js";
25
+
26
+ /**
27
+ * Convert a MinimumVersionForCollab to a version for detached field codecs.
28
+ * @param clientVersion - The MinimumVersionForCollab to convert.
29
+ * @returns The detached field codec version that corresponds to the provided MinimumVersionForCollab.
30
+ */
31
+ function clientVersionToDetachedFieldVersion(
32
+ clientVersion: MinimumVersionForCollab,
33
+ ): DetachedFieldIndexFormatVersion {
34
+ return clientVersion < FluidClientVersion.v2_52
35
+ ? brand(DetachedFieldIndexFormatVersion.v1)
36
+ : brand(DetachedFieldIndexFormatVersion.v2);
37
+ }
25
38
 
26
39
  export function makeDetachedFieldIndexCodec(
27
40
  revisionTagCodec: RevisionTagCodec,
@@ -29,9 +42,10 @@ export function makeDetachedFieldIndexCodec(
29
42
  idCompressor: IIdCompressor,
30
43
  ): IJsonCodec<DetachedFieldSummaryData> {
31
44
  const family = makeDetachedFieldIndexCodecFamily(revisionTagCodec, options, idCompressor);
32
- const writeVersion =
33
- options.minVersionForCollab < FluidClientVersion.v2_52 ? version1 : version2;
34
- return makeVersionDispatchingCodec(family, { ...options, writeVersion });
45
+ return makeVersionDispatchingCodec(family, {
46
+ ...options,
47
+ writeVersion: clientVersionToDetachedFieldVersion(options.minVersionForCollab),
48
+ });
35
49
  }
36
50
 
37
51
  export function makeDetachedFieldIndexCodecFamily(
@@ -40,14 +54,22 @@ export function makeDetachedFieldIndexCodecFamily(
40
54
  idCompressor: IIdCompressor,
41
55
  ): ICodecFamily<DetachedFieldSummaryData> {
42
56
  return makeCodecFamily([
43
- [version1, makeDetachedNodeToFieldCodecV1(revisionTagCodec, options, idCompressor)],
44
- [version2, makeDetachedNodeToFieldCodecV2(revisionTagCodec, options, idCompressor)],
57
+ [
58
+ DetachedFieldIndexFormatVersion.v1,
59
+ makeDetachedNodeToFieldCodecV1(revisionTagCodec, options, idCompressor),
60
+ ],
61
+ [
62
+ DetachedFieldIndexFormatVersion.v2,
63
+ makeDetachedNodeToFieldCodecV2(revisionTagCodec, options, idCompressor),
64
+ ],
45
65
  ]);
46
66
  }
47
67
 
48
- export type DetachedFieldIndexFormatVersion = Brand<1 | 2, "DetachedFieldIndexFormatVersion">;
49
68
  export function getCodecTreeForDetachedFieldIndexFormat(
50
- version: DetachedFieldIndexFormatVersion,
69
+ clientVersion: MinimumVersionForCollab,
51
70
  ): CodecTree {
52
- return { name: "DetachedFieldIndex", version };
71
+ return {
72
+ name: "DetachedFieldIndex",
73
+ version: clientVersionToDetachedFieldVersion(clientVersion),
74
+ };
53
75
  }
@@ -5,10 +5,22 @@
5
5
 
6
6
  import { type Static, type TSchema, Type } from "@sinclair/typebox";
7
7
 
8
- import { brandedNumberType } from "../../util/index.js";
8
+ import { brandedNumberType, type Brand } from "../../util/index.js";
9
9
 
10
10
  import type { ForestRootId } from "./detachedFieldIndexTypes.js";
11
11
 
12
+ /**
13
+ * The format version for the detached field index.
14
+ */
15
+ export const DetachedFieldIndexFormatVersion = {
16
+ v1: 1,
17
+ v2: 2,
18
+ } as const;
19
+ export type DetachedFieldIndexFormatVersion = Brand<
20
+ (typeof DetachedFieldIndexFormatVersion)[keyof typeof DetachedFieldIndexFormatVersion],
21
+ "DetachedFieldIndexFormatVersion"
22
+ >;
23
+
12
24
  /**
13
25
  * The ID of a detached node. Is not globally unique on.
14
26
  * A `RevisionTag` + `DetachId` pair is globally unique and eventually consistent across clients.
@@ -54,7 +66,10 @@ export const EncodedRootsForRevision = <Schema extends TSchema>(tRevisionTag: Sc
54
66
  ]);
55
67
  export type EncodedRootsForRevision = Static<ReturnType<typeof EncodedRootsForRevision>>;
56
68
 
57
- export const Format = <TVersion extends number, TRevisionTagSchema extends TSchema>(
69
+ export const Format = <
70
+ TVersion extends DetachedFieldIndexFormatVersion,
71
+ TRevisionTagSchema extends TSchema,
72
+ >(
58
73
  tVersion: TVersion,
59
74
  tRevisionTag: TRevisionTagSchema,
60
75
  // Return type is intentionally derived.
@@ -5,11 +5,13 @@
5
5
 
6
6
  import type { Static } from "@sinclair/typebox";
7
7
 
8
- import { Format } from "./detachedFieldIndexFormatCommon.js";
8
+ import { DetachedFieldIndexFormatVersion, Format } from "./detachedFieldIndexFormatCommon.js";
9
9
  import { RevisionTagSchema } from "../rebase/index.js";
10
+ import { brand } from "../../util/index.js";
10
11
 
11
- export const version1 = 1.0;
12
-
13
- export const FormatV1 = Format(version1, RevisionTagSchema);
12
+ export const FormatV1 = Format(
13
+ brand<DetachedFieldIndexFormatVersion>(DetachedFieldIndexFormatVersion.v1),
14
+ RevisionTagSchema,
15
+ );
14
16
 
15
17
  export type FormatV1 = Static<typeof FormatV1>;
@@ -5,13 +5,15 @@
5
5
 
6
6
  import { Type, type Static } from "@sinclair/typebox";
7
7
 
8
- import { Format } from "./detachedFieldIndexFormatCommon.js";
8
+ import { DetachedFieldIndexFormatVersion, Format } from "./detachedFieldIndexFormatCommon.js";
9
9
  import { RevisionTagSchema, StableIdSchema } from "../rebase/index.js";
10
-
11
- export const version2 = 2.0;
10
+ import { brand } from "../../util/index.js";
12
11
 
13
12
  export const StableOrFinalRevisionTag = Type.Union([RevisionTagSchema, StableIdSchema]);
14
13
 
15
- export const FormatV2 = Format(version2, StableOrFinalRevisionTag);
14
+ export const FormatV2 = Format(
15
+ brand<DetachedFieldIndexFormatVersion>(DetachedFieldIndexFormatVersion.v2),
16
+ StableOrFinalRevisionTag,
17
+ );
16
18
 
17
19
  export type FormatV2 = Static<typeof FormatV2>;
@@ -119,9 +119,7 @@ export {
119
119
 
120
120
  export { DetachedFieldIndex } from "./detachedFieldIndex.js";
121
121
 
122
- export {
123
- type DetachedFieldIndexFormatVersion,
124
- getCodecTreeForDetachedFieldIndexFormat,
125
- } from "./detachedFieldIndexCodecs.js";
122
+ export { getCodecTreeForDetachedFieldIndexFormat } from "./detachedFieldIndexCodecs.js";
123
+ export { type DetachedFieldIndexFormatVersion } from "./detachedFieldIndexFormatCommon.js";
126
124
 
127
125
  export { type ForestRootId } from "./detachedFieldIndexTypes.js";
@@ -5,7 +5,7 @@
5
5
 
6
6
  import type { Static, TSchema } from "@sinclair/typebox";
7
7
  // This export is documented as supported in typebox's documentation.
8
- // eslint-disable-next-line import/no-internal-modules
8
+ // eslint-disable-next-line import-x/no-internal-modules
9
9
  import { TypeCompiler } from "@sinclair/typebox/compiler";
10
10
 
11
11
  import { toFormatValidator, type JsonValidator } from "../codec/index.js";
@@ -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";