@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
@@ -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
  }
package/src/index.ts CHANGED
@@ -73,6 +73,8 @@ export {
73
73
  type ObservationResults,
74
74
  type TreeIdentifierUtils,
75
75
  independentView,
76
+ createIndependentTreeBeta,
77
+ createIndependentTreeAlpha,
76
78
  ForestTypeOptimized,
77
79
  ForestTypeExpensiveDebug,
78
80
  ForestTypeReference,
@@ -93,6 +95,7 @@ export {
93
95
  type TreeViewEvents,
94
96
  SchemaFactory,
95
97
  SchemaFactoryBeta,
98
+ type SchemaStaticsBeta,
96
99
  SchemaFactoryAlpha,
97
100
  type ObjectSchemaOptionsAlpha,
98
101
  type ObjectSchemaOptions,
@@ -179,7 +182,6 @@ export {
179
182
  type AllowedTypeMetadata,
180
183
  type AllowedTypesMetadata,
181
184
  type UnannotateAllowedTypesList,
182
- type SchemaStaticsAlpha,
183
185
  type AnnotateAllowedTypesList,
184
186
  type AllowedTypesFull,
185
187
  type AllowedTypesFullFromMixed,
@@ -280,6 +282,9 @@ export {
280
282
  type TreeParsingOptions,
281
283
  type SchemaFactory_base,
282
284
  type NumberKeys,
285
+ type SimpleAllowedTypeAttributes,
286
+ encodeSimpleSchema,
287
+ decodeSimpleSchema,
283
288
  } from "./simple-tree/index.js";
284
289
  export {
285
290
  SharedTree,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.70.0";
9
+ export const pkgVersion = "2.72.0";
@@ -10,13 +10,15 @@ import {
10
10
  createIdCompressor,
11
11
  } from "@fluidframework/id-compressor/internal";
12
12
 
13
- import type { ICodecOptions } from "../codec/index.js";
14
13
  import {
15
- type ITreeCursorSynchronous,
14
+ FluidClientVersion,
15
+ type CodecWriteOptions,
16
+ type ICodecOptions,
17
+ } from "../codec/index.js";
18
+ import {
16
19
  type RevisionTag,
17
20
  RevisionTagCodec,
18
- SchemaVersion,
19
- type TreeStoredSchema,
21
+ SchemaFormatVersion,
20
22
  TreeStoredSchemaRepository,
21
23
  } from "../core/index.js";
22
24
  import {
@@ -28,17 +30,30 @@ import {
28
30
  TreeCompressionStrategy,
29
31
  defaultIncrementalEncodingPolicy,
30
32
  } from "../feature-libraries/index.js";
31
- // eslint-disable-next-line import/no-internal-modules
33
+ // eslint-disable-next-line import-x/no-internal-modules
32
34
  import type { Format } from "../feature-libraries/schema-index/formatV1.js";
33
35
  import type {
34
36
  TreeViewConfiguration,
35
37
  ImplicitFieldSchema,
36
38
  TreeViewAlpha,
39
+ ITreeAlpha,
40
+ ViewableTree,
41
+ TreeView,
42
+ ReadSchema,
43
+ VerboseTree,
44
+ SimpleTreeSchema,
37
45
  } from "../simple-tree/index.js";
38
- import { type JsonCompatibleReadOnly, type JsonCompatible, Breakable } from "../util/index.js";
46
+ import {
47
+ type JsonCompatibleReadOnly,
48
+ type JsonCompatible,
49
+ Breakable,
50
+ oneFromIterable,
51
+ brand,
52
+ } from "../util/index.js";
39
53
  import {
40
54
  buildConfiguredForest,
41
55
  defaultSharedTreeOptions,
56
+ exportSimpleSchema,
42
57
  type ForestOptions,
43
58
  } from "./sharedTree.js";
44
59
  import { createTreeCheckout } from "./treeCheckout.js";
@@ -59,30 +74,9 @@ export function independentView<const TSchema extends ImplicitFieldSchema>(
59
74
  config: TreeViewConfiguration<TSchema>,
60
75
  options: ForestOptions & { idCompressor?: IIdCompressor | undefined },
61
76
  ): TreeViewAlpha<TSchema> {
62
- const breaker = new Breakable("independentView");
63
- const idCompressor: IIdCompressor = options.idCompressor ?? createIdCompressor();
64
- const mintRevisionTag = (): RevisionTag => idCompressor.generateCompressedId();
65
- const revisionTagCodec = new RevisionTagCodec(idCompressor);
66
- const schema = new TreeStoredSchemaRepository();
67
- const forest = buildConfiguredForest(
68
- breaker,
69
- options.forest ?? defaultSharedTreeOptions.forest,
70
- schema,
71
- idCompressor,
72
- defaultIncrementalEncodingPolicy,
73
- );
74
- const checkout = createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, {
75
- forest,
76
- schema,
77
- breaker,
78
- });
79
- const out: TreeViewAlpha<TSchema> = new SchematizingSimpleTreeView<TSchema>(
80
- checkout,
81
- config,
82
- createNodeIdentifierManager(idCompressor),
83
- );
84
- return out;
77
+ return createIndependentTreeAlpha(options).viewWith(config) as TreeViewAlpha<TSchema>;
85
78
  }
79
+
86
80
  /**
87
81
  * Create an initialized {@link TreeView} that is not tied to any {@link ITree} instance.
88
82
  *
@@ -99,52 +93,101 @@ export function independentInitializedView<const TSchema extends ImplicitFieldSc
99
93
  options: ForestOptions & ICodecOptions,
100
94
  content: ViewContent,
101
95
  ): TreeViewAlpha<TSchema> {
102
- const idCompressor: IIdCompressor = content.idCompressor;
103
- const fieldBatchCodec = makeFieldBatchCodec(options, 1);
104
- const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
105
-
106
- const schema = schemaCodec.decode(content.schema as Format);
107
- const context: FieldBatchEncodingContext = {
108
- encodeType: TreeCompressionStrategy.Compressed,
109
- idCompressor,
110
- originatorId: idCompressor.localSessionId, // Is this right? If so, why is is needed?
111
- schema: { schema, policy: defaultSchemaPolicy },
112
- };
113
-
114
- const fieldCursors = fieldBatchCodec.decode(content.tree as JsonCompatibleReadOnly, context);
115
- assert(fieldCursors.length === 1, 0xa5b /* must have exactly 1 field in batch */);
116
-
117
- return independentInitializedViewInternal(
96
+ return createIndependentTreeAlpha({ ...options, content }).viewWith(
118
97
  config,
119
- options,
120
- schema,
121
- // Checked above.
122
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
123
- fieldCursors[0]!,
124
- idCompressor,
125
- );
98
+ ) as TreeViewAlpha<TSchema>;
99
+ }
100
+
101
+ /**
102
+ * Create a {@link ViewableTree} that is not tied to any Fluid runtimes or services.
103
+ *
104
+ * @remarks
105
+ * Such a tree can never experience collaboration or be persisted to to a Fluid Container.
106
+ *
107
+ * This can be useful for testing, as well as use-cases like working on local files instead of documents stored in some Fluid service.
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const tree = createIndependentTreeBeta();
112
+ *
113
+ * const stagedConfig = new TreeViewConfiguration({
114
+ * schema: SchemaFactoryAlpha.types([
115
+ * SchemaFactory.number,
116
+ * SchemaFactoryAlpha.staged(SchemaFactory.string),
117
+ * ]),
118
+ * });
119
+ * const afterConfig = new TreeViewConfigurationAlpha({
120
+ * schema: [SchemaFactory.number, SchemaFactory.string],
121
+ * });
122
+ *
123
+ * // Initialize tree
124
+ * {
125
+ * const view = tree.viewWith(stagedConfig);
126
+ * view.initialize(1);
127
+ * view.dispose();
128
+ * }
129
+ *
130
+ * // Do schema upgrade
131
+ * {
132
+ * const view = tree.viewWith(afterConfig);
133
+ * view.upgradeSchema();
134
+ * view.root = "A";
135
+ * view.dispose();
136
+ * }
137
+ *
138
+ * // Can still view tree with staged schema
139
+ * {
140
+ * const view = tree.viewWith(stagedConfig);
141
+ * assert.equal(view.root, "A");
142
+ * view.dispose();
143
+ * }
144
+ * ```
145
+ * @privateRemarks
146
+ * Before stabilizing this as public, consider if we can instead just expose a better way to create regular Fluid service based SharedTrees for tests.
147
+ * Something like https://github.com/microsoft/FluidFramework/pull/25422 might be a better long term stable/public solution.
148
+ * @beta
149
+ */
150
+ export function createIndependentTreeBeta<const TSchema extends ImplicitFieldSchema>(
151
+ options?: ForestOptions,
152
+ ): ViewableTree {
153
+ return createIndependentTreeAlpha<TSchema>(options);
126
154
  }
127
155
 
128
156
  /**
129
- * {@link independentInitializedView} but using internal types instead of persisted data formats.
157
+ * Alpha extensions to {@link createIndependentTreeBeta}.
158
+ *
159
+ * @param options - Configuration options for the independent tree.
160
+ * This can be used to create an uninitialized tree, or `content` can be provided to create an initialized tree.
161
+ * If content is provided, the idCompressor is a required part of it: otherwise it is optional and provided at the top level.
162
+ *
163
+ * @privateRemarks
164
+ * TODO: Support more of {@link ITreeAlpha}, including branching APIs to allow for merges.
165
+ * TODO: Better unify this logic with SharedTreeKernel and SharedTreeCore.
166
+ *
167
+ * Before further stabilizing: consider better ways to handle initialized vs uninitialized trees.
168
+ * Perhaps it would be better to not allow initialize here at all, but expose the ability to load compressed tree content and stored schema via ITree or TreeView?
169
+ * If keeping the option here, maybe a separate function of overload would be better? Or maybe flatten ViewContent inline to deduplicate the idCompressor options?
170
+ * @alpha
130
171
  */
131
- export function independentInitializedViewInternal<const TSchema extends ImplicitFieldSchema>(
132
- config: TreeViewConfiguration<TSchema>,
133
- options: ForestOptions & ICodecOptions,
134
- schema: TreeStoredSchema,
135
- rootFieldCursor: ITreeCursorSynchronous,
136
- idCompressor: IIdCompressor,
137
- ): SchematizingSimpleTreeView<TSchema> {
138
- const breaker = new Breakable("independentInitializedView");
139
- const revisionTagCodec = new RevisionTagCodec(idCompressor);
172
+ export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSchema>(
173
+ options?: ForestOptions &
174
+ (
175
+ | ({ idCompressor?: IIdCompressor | undefined } & { content?: undefined })
176
+ | (ICodecOptions & { content: ViewContent } & { idCompressor?: undefined })
177
+ ),
178
+ ): ViewableTree & Pick<ITreeAlpha, "exportVerbose" | "exportSimpleSchema"> {
179
+ const breaker = new Breakable("independentView");
180
+ const idCompressor: IIdCompressor =
181
+ options?.idCompressor ?? options?.content?.idCompressor ?? createIdCompressor();
140
182
  const mintRevisionTag = (): RevisionTag => idCompressor.generateCompressedId();
183
+ const revisionTagCodec = new RevisionTagCodec(idCompressor);
141
184
 
142
185
  // To ensure the forest is in schema when constructed, start it with an empty schema and set the schema repository content later.
143
186
  const schemaRepository = new TreeStoredSchemaRepository();
144
187
 
145
188
  const forest = buildConfiguredForest(
146
189
  breaker,
147
- options.forest ?? defaultSharedTreeOptions.forest,
190
+ options?.forest ?? defaultSharedTreeOptions.forest,
148
191
  schemaRepository,
149
192
  idCompressor,
150
193
  defaultIncrementalEncodingPolicy,
@@ -156,18 +199,61 @@ export function independentInitializedViewInternal<const TSchema extends Implici
156
199
  breaker,
157
200
  });
158
201
 
159
- initialize(
160
- checkout,
161
- schema,
162
- initializerFromChunk(checkout, () =>
163
- combineChunks(checkout.forest.chunkField(rootFieldCursor)),
164
- ),
165
- );
166
- return new SchematizingSimpleTreeView<TSchema>(
167
- checkout,
168
- config,
169
- createNodeIdentifierManager(idCompressor),
170
- );
202
+ if (options?.content !== undefined) {
203
+ // Any version can be passed down to `makeSchemaCodec` and `makeFieldBatchCodec` here.
204
+ // We only use the decode part, which always dispatches to the correct codec based on the version in the data, not `minVersionForCollab`.
205
+ const writeOptions: CodecWriteOptions = {
206
+ ...options,
207
+ minVersionForCollab: FluidClientVersion.v2_0,
208
+ };
209
+ const schemaCodec = makeSchemaCodec(writeOptions, brand(SchemaFormatVersion.v1));
210
+ const fieldBatchCodec = makeFieldBatchCodec(writeOptions);
211
+ const newSchema = schemaCodec.decode(options.content.schema as Format);
212
+
213
+ const context: FieldBatchEncodingContext = {
214
+ encodeType: TreeCompressionStrategy.Compressed,
215
+ idCompressor,
216
+ originatorId: idCompressor.localSessionId, // Is this right? If so, why is is needed?
217
+ schema: { schema: newSchema, policy: defaultSchemaPolicy },
218
+ };
219
+ const fieldCursors = fieldBatchCodec.decode(
220
+ options.content.tree as JsonCompatibleReadOnly,
221
+ context,
222
+ );
223
+ assert(fieldCursors.length === 1, 0xa5b /* must have exactly 1 field in batch */);
224
+
225
+ const fieldCursor = oneFromIterable(fieldCursors);
226
+ assert(fieldCursor !== undefined, 0xc94 /* expected exactly one field in batch */);
227
+
228
+ initialize(
229
+ checkout,
230
+ newSchema,
231
+ initializerFromChunk(checkout, () =>
232
+ combineChunks(checkout.forest.chunkField(fieldCursor)),
233
+ ),
234
+ );
235
+ }
236
+
237
+ return {
238
+ viewWith<TRoot extends ImplicitFieldSchema>(
239
+ config: TreeViewConfiguration<TRoot>,
240
+ ): TreeView<TRoot> {
241
+ const out: TreeViewAlpha<TSchema> = new SchematizingSimpleTreeView<TSchema>(
242
+ checkout,
243
+ config as TreeViewConfiguration as TreeViewConfiguration<ReadSchema<TSchema>>,
244
+ createNodeIdentifierManager(idCompressor),
245
+ );
246
+ return out as unknown as TreeView<TRoot>;
247
+ },
248
+
249
+ exportVerbose(): VerboseTree | undefined {
250
+ return checkout.exportVerbose();
251
+ },
252
+
253
+ exportSimpleSchema(): SimpleTreeSchema {
254
+ return exportSimpleSchema(checkout.storedSchema);
255
+ },
256
+ };
171
257
  }
172
258
 
173
259
  /**
@@ -39,6 +39,8 @@ export {
39
39
 
40
40
  export { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
41
41
 
42
+ export { initialize, initializerFromChunk } from "./schematizeTree.js";
43
+
42
44
  export type {
43
45
  ISharedTreeEditor,
44
46
  ISchemaEditor,
@@ -58,6 +60,8 @@ export {
58
60
  independentInitializedView,
59
61
  type ViewContent,
60
62
  independentView,
63
+ createIndependentTreeBeta,
64
+ createIndependentTreeAlpha,
61
65
  } from "./independentView.js";
62
66
 
63
67
  export type { SharedTreeChange } from "./sharedTreeChangeTypes.js";