@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,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
- import { assert, Lazy } from "@fluidframework/core-utils/internal";
7
+ import { Lazy } from "@fluidframework/core-utils/internal";
8
8
 
9
9
  import {
10
10
  type ErasedBaseType,
@@ -25,6 +25,7 @@ import {
25
25
  type TreeNodeSchema,
26
26
  } from "./treeNodeSchema.js";
27
27
  import { schemaAsTreeNodeValid } from "./treeNodeValid.js";
28
+ import type { SimpleAllowedTypeAttributes } from "../simpleSchema.js";
28
29
 
29
30
  /**
30
31
  * Schema for types allowed in some location in a tree (like a field, map entry or array).
@@ -56,7 +57,7 @@ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
56
57
  /**
57
58
  * Stores annotations for an individual allowed type.
58
59
  * @remarks
59
- * Create using APIs on {@link SchemaFactoryAlpha}, like {@link SchemaStaticsAlpha.staged}.
60
+ * Create using APIs on {@link SchemaStaticsBeta}, like {@link SchemaStaticsBeta.staged}.
60
61
  * @privateRemarks
61
62
  * Since this is sealed, users are not supposed to create instances of it directly.
62
63
  * Making it extend ErasedType could enforce that.
@@ -252,6 +253,21 @@ export class AnnotatedAllowedTypesInternal<
252
253
  return this.lazyEvaluate.value.identifiers;
253
254
  }
254
255
 
256
+ /**
257
+ * Get the {@link SimpleAllowedTypeAttributes} version of the allowed types set.
258
+ */
259
+ public static evaluateSimpleAllowedTypes(
260
+ annotatedAllowedTypes: AnnotatedAllowedTypes,
261
+ ): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
262
+ const simpleAllowedTypes = new Map<string, SimpleAllowedTypeAttributes>();
263
+ for (const type of annotatedAllowedTypes.evaluate().types) {
264
+ simpleAllowedTypes.set(type.type.identifier, {
265
+ isStaged: type.metadata.stagedSchemaUpgrade !== undefined,
266
+ });
267
+ }
268
+ return simpleAllowedTypes;
269
+ }
270
+
255
271
  public static override [Symbol.hasInstance]<TThis extends { prototype: object }>(
256
272
  this: TThis,
257
273
  value: unknown,
@@ -332,7 +348,7 @@ export class AnnotatedAllowedTypesInternal<
332
348
  public static create<const T extends readonly AnnotatedAllowedType[]>(
333
349
  types: T,
334
350
  metadata: AllowedTypesMetadata = {},
335
- ): AnnotatedAllowedTypesInternal<T> & AllowedTypesFull<T> {
351
+ ): AnnotatedAllowedTypesInternal<Readonly<T>> & AllowedTypesFull<Readonly<T>> {
336
352
  const result = new AnnotatedAllowedTypesInternal(types, metadata);
337
353
  return result as typeof result & UnannotateAllowedTypesList<T>;
338
354
  }
@@ -340,7 +356,8 @@ export class AnnotatedAllowedTypesInternal<
340
356
  public static createUnannotated<const T extends AllowedTypes>(
341
357
  types: T,
342
358
  metadata: AllowedTypesMetadata = {},
343
- ): AnnotatedAllowedTypesInternal & T {
359
+ ): AnnotatedAllowedTypesInternal & Readonly<T> {
360
+ Object.freeze(types);
344
361
  const annotatedTypes: AnnotatedAllowedType[] = types.map(normalizeToAnnotatedAllowedType);
345
362
  const result = AnnotatedAllowedTypesInternal.create(annotatedTypes, metadata);
346
363
  return result as typeof result & T;
@@ -349,6 +366,7 @@ export class AnnotatedAllowedTypesInternal<
349
366
  public static createMixed<
350
367
  const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
351
368
  >(types: T, metadata: AllowedTypesMetadata = {}): AllowedTypesFullFromMixed<T> {
369
+ Object.freeze(types);
352
370
  const annotatedTypes: AnnotatedAllowedType[] = types.map(normalizeToAnnotatedAllowedType);
353
371
  const result = AnnotatedAllowedTypesInternal.create(annotatedTypes, metadata);
354
372
  return result as AllowedTypesFullFromMixed<T>;
@@ -394,7 +412,7 @@ export interface AllowedTypeMetadata {
394
412
  readonly custom?: unknown;
395
413
 
396
414
  /**
397
- * If defined, indicates that an allowed type is {@link SchemaStaticsAlpha.staged | staged}.
415
+ * If defined, indicates that an allowed type is {@link SchemaStaticsBeta.staged | staged}.
398
416
  */
399
417
  readonly stagedSchemaUpgrade?: SchemaUpgrade;
400
418
  }
@@ -407,7 +425,7 @@ export let createSchemaUpgrade: () => SchemaUpgrade;
407
425
  /**
408
426
  * Unique token used to upgrade schemas and determine if a particular upgrade has been completed.
409
427
  * @remarks
410
- * Create using {@link SchemaStaticsAlpha.staged}.
428
+ * Create using {@link SchemaStaticsBeta.staged}.
411
429
  * @privateRemarks
412
430
  * TODO:#38722 implement runtime schema upgrades.
413
431
  * Until then, the class purely behaves mostly as a placeholder.
@@ -524,14 +542,9 @@ export function normalizeAllowedTypesInternal(
524
542
  // Adding this cache improved the performance of the "large recursive union" test (which mostly just constructs a TreeConfiguration) by ~5 times.
525
543
  // This cache is strictly a performance optimization: it is not required for correctness.
526
544
  return getOrCreate(cachedNormalize, type, () => {
527
- // Due to more specific internal type, the above does not narrow sufficiently, so more narrowing is needed.
528
- // It is possible this will give a false error if a TreeNodeSchema which matches this check is used.
529
- assert(
530
- !("types" in type && "metadata" in type),
531
- 0xc7d /* invalid AnnotatedAllowedTypes */,
532
- );
533
-
534
- const annotatedTypes: AnnotatedAllowedType[] = (isReadonlyArray(type) ? type : [type]).map(
545
+ const inputArray = isReadonlyArray(type) ? type : [type];
546
+ Object.freeze(inputArray);
547
+ const annotatedTypes: AnnotatedAllowedType[] = inputArray.map(
535
548
  normalizeToAnnotatedAllowedType,
536
549
  );
537
550
 
@@ -637,8 +650,8 @@ export type TreeNodeFromImplicitAllowedTypes<
637
650
  * This type exists only to be linked from documentation to provide a single linkable place to document some details of
638
651
  * "Input" types and how they handle schema.
639
652
  *
640
- * When a schema is used to describe data which is an input into an API, the API is [contravariant](https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)) over the schema.
641
- * (See also, [TypeScript Variance Annotations](https://www.typescriptlang.org/docs/handbook/2/generics.html#variance-annotations)).
653
+ * When a schema is used to describe data which is an input into an API, the API is {@link https://en.wikipedia.org/wiki/Type_variance | contravariant}) over the schema.
654
+ * (See also {@link https://www.typescriptlang.org/docs/handbook/2/generics.html#variance-annotations | TypeScript Variance Annotations}).
642
655
  *
643
656
  * Since these schema are expressed using TypeScript types, it is possible for the user of the API to provide non-exact values of these types which has implications that depended on the variance.
644
657
  *
@@ -8,7 +8,7 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import { tryGetTreeNodeSchema } from "./treeNodeKernel.js";
10
10
  import { NodeKind, type TreeNodeSchemaClass } from "./treeNodeSchema.js";
11
- // eslint-disable-next-line import/no-deprecated
11
+ // eslint-disable-next-line import-x/no-deprecated
12
12
  import { type WithType, typeNameSymbol, type typeSchemaSymbol } from "./withType.js";
13
13
  import { markEager } from "./flexList.js";
14
14
 
@@ -80,7 +80,7 @@ export abstract class TreeNode implements WithType {
80
80
  * Subclasses provide more specific strings for this to get strong typing of otherwise type compatible nodes.
81
81
  * @deprecated Use {@link typeSchemaSymbol} instead.
82
82
  */
83
- // eslint-disable-next-line import/no-deprecated
83
+ // eslint-disable-next-line import-x/no-deprecated
84
84
  public abstract get [typeNameSymbol](): string;
85
85
 
86
86
  /**
@@ -31,7 +31,7 @@ import type {
31
31
  } from "./core/index.js";
32
32
  import { normalizeAllowedTypes } from "./core/index.js";
33
33
 
34
- import type { SimpleFieldSchema } from "./simpleSchema.js";
34
+ import type { SimpleAllowedTypeAttributes, SimpleFieldSchema } from "./simpleSchema.js";
35
35
  import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
36
36
  import type { InsertableContent } from "./unhydratedFlexTreeFromInsertable.js";
37
37
 
@@ -412,6 +412,19 @@ export class FieldSchemaAlpha<
412
412
  return this.allowedTypesFull.evaluateIdentifiers();
413
413
  }
414
414
 
415
+ public get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
416
+ const types = this.allowedTypesFull.evaluate().types;
417
+ const info = new Map<string, SimpleAllowedTypeAttributes>();
418
+
419
+ for (const type of types) {
420
+ info.set(type.type.identifier, {
421
+ isStaged: type.metadata.stagedSchemaUpgrade !== undefined,
422
+ });
423
+ }
424
+
425
+ return info;
426
+ }
427
+
415
428
  protected constructor(
416
429
  kind: Kind,
417
430
  types: Types,
@@ -74,6 +74,7 @@ export {
74
74
  type ITreeConfigurationOptions,
75
75
  SchemaFactory,
76
76
  SchemaFactoryBeta,
77
+ type SchemaStaticsBeta,
77
78
  SchemaFactoryAlpha,
78
79
  type ObjectSchemaOptionsAlpha,
79
80
  type ObjectSchemaOptions,
@@ -180,7 +181,6 @@ export {
180
181
  type TreeChangeEvents,
181
182
  type NodeSchemaOptions,
182
183
  type NodeSchemaOptionsAlpha,
183
- type SchemaStaticsAlpha,
184
184
  KeyEncodingOptions,
185
185
  type TreeParsingOptions,
186
186
  incrementalSummaryHint,
@@ -198,6 +198,7 @@ export type {
198
198
  SimpleNodeSchemaBaseAlpha,
199
199
  SimpleObjectFieldSchema,
200
200
  SimpleRecordNodeSchema,
201
+ SimpleAllowedTypeAttributes,
201
202
  } from "./simpleSchema.js";
202
203
  export {
203
204
  type ImplicitFieldSchema,
@@ -279,3 +280,7 @@ export {
279
280
  nullSchema,
280
281
  } from "./leafNodeSchema.js";
281
282
  export type { LeafSchema } from "./leafNodeSchema.js";
283
+ export {
284
+ encodeSimpleSchema,
285
+ decodeSimpleSchema,
286
+ } from "./api/index.js";
@@ -16,7 +16,7 @@ import { FieldKinds, isTreeValue } from "../../../feature-libraries/index.js";
16
16
  import {
17
17
  CompatibilityLevel,
18
18
  type WithType,
19
- // eslint-disable-next-line import/no-deprecated
19
+ // eslint-disable-next-line import-x/no-deprecated
20
20
  typeNameSymbol,
21
21
  NodeKind,
22
22
  type TreeNode,
@@ -47,6 +47,7 @@ import {
47
47
  type TreeNodeSchemaPrivateData,
48
48
  convertAllowedTypes,
49
49
  withBufferedTreeEvents,
50
+ AnnotatedAllowedTypesInternal,
50
51
  } from "../../core/index.js";
51
52
  import {
52
53
  type FactoryContent,
@@ -68,6 +69,7 @@ import type {
68
69
  import { brand, type JsonCompatibleReadOnlyObject } from "../../../util/index.js";
69
70
  import { nullSchema } from "../../leafNodeSchema.js";
70
71
  import { arrayNodeStoredSchema } from "../../toStoredSchema.js";
72
+ import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
71
73
 
72
74
  /**
73
75
  * A covariant base type for {@link (TreeArrayNode:interface)}.
@@ -1168,6 +1170,9 @@ export function arraySchema<
1168
1170
  const lazyAllowedTypesIdentifiers = new Lazy(
1169
1171
  () => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
1170
1172
  );
1173
+ const lazySimpleAllowedTypes = new Lazy(() => {
1174
+ return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
1175
+ });
1171
1176
 
1172
1177
  let privateData: TreeNodeSchemaPrivateData | undefined;
1173
1178
 
@@ -1206,6 +1211,10 @@ export function arraySchema<
1206
1211
  return lazyAllowedTypesIdentifiers.value;
1207
1212
  }
1208
1213
 
1214
+ public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
1215
+ return lazySimpleAllowedTypes.value;
1216
+ }
1217
+
1209
1218
  protected static override constructorCached: MostDerivedData | undefined = undefined;
1210
1219
 
1211
1220
  protected static override oneTimeSetup(): TreeNodeSchemaInitializedData {
@@ -1257,7 +1266,7 @@ export function arraySchema<
1257
1266
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
1258
1267
  persistedMetadata;
1259
1268
 
1260
- // eslint-disable-next-line import/no-deprecated
1269
+ // eslint-disable-next-line import-x/no-deprecated
1261
1270
  public get [typeNameSymbol](): TName {
1262
1271
  return identifier;
1263
1272
  }
@@ -22,7 +22,7 @@ import {
22
22
  type InnerNode,
23
23
  NodeKind,
24
24
  type TreeNodeSchema,
25
- // eslint-disable-next-line import/no-deprecated
25
+ // eslint-disable-next-line import-x/no-deprecated
26
26
  typeNameSymbol,
27
27
  type TreeNode,
28
28
  typeSchemaSymbol,
@@ -43,6 +43,7 @@ import {
43
43
  type FlexContent,
44
44
  type TreeNodeSchemaPrivateData,
45
45
  convertAllowedTypes,
46
+ AnnotatedAllowedTypesInternal,
46
47
  } from "../../core/index.js";
47
48
  import {
48
49
  unhydratedFlexTreeFromInsertable,
@@ -66,6 +67,7 @@ import type {
66
67
  import { recordLikeDataToFlexContent } from "../common.js";
67
68
  import { MapNodeStoredSchema } from "../../../core/index.js";
68
69
  import type { NodeSchemaOptionsAlpha } from "../../api/index.js";
70
+ import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
69
71
 
70
72
  /**
71
73
  * A map of string keys to tree objects.
@@ -275,6 +277,9 @@ export function mapSchema<
275
277
  const lazyAllowedTypesIdentifiers = new Lazy(
276
278
  () => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
277
279
  );
280
+ const lazySimpleAllowedTypes = new Lazy(() => {
281
+ return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
282
+ });
278
283
 
279
284
  let privateData: TreeNodeSchemaPrivateData | undefined;
280
285
  const persistedMetadata = nodeOptions.persistedMetadata;
@@ -303,6 +308,10 @@ export function mapSchema<
303
308
  return lazyAllowedTypesIdentifiers.value;
304
309
  }
305
310
 
311
+ public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
312
+ return lazySimpleAllowedTypes.value;
313
+ }
314
+
306
315
  protected static override constructorCached: MostDerivedData | undefined = undefined;
307
316
 
308
317
  protected static override oneTimeSetup(): TreeNodeSchemaInitializedData {
@@ -325,7 +334,7 @@ export function mapSchema<
325
334
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
326
335
  persistedMetadata;
327
336
 
328
- // eslint-disable-next-line import/no-deprecated
337
+ // eslint-disable-next-line import-x/no-deprecated
329
338
  public get [typeNameSymbol](): TName {
330
339
  return identifier;
331
340
  }
@@ -32,7 +32,7 @@ import {
32
32
  type TreeNodeSchema,
33
33
  NodeKind,
34
34
  type WithType,
35
- // eslint-disable-next-line import/no-deprecated
35
+ // eslint-disable-next-line import-x/no-deprecated
36
36
  typeNameSymbol,
37
37
  typeSchemaSymbol,
38
38
  type InternalTreeNode,
@@ -118,6 +118,23 @@ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFie
118
118
  * No other own `own` or `enumerable` properties are included on object nodes unless the user of the node manually adds custom session only state.
119
119
  * This allows a majority of general purpose JavaScript object processing operations (like `for...in`, `Reflect.ownKeys()` and `Object.entries()`) to enumerate all the children.
120
120
  *
121
+ * Field Assignment and Deletion
122
+ * Assigning to a field updates the tree value as long as it is still valid based on the schema.
123
+ * - For required fields, assigning `undefined` is invalid, and will throw.
124
+ * - For optional fields, assigning `undefined` removes the field's contents, and marks it as empty (non-enumerable and value set to undefined).
125
+ *
126
+ * Example:
127
+ * ```ts
128
+ * const Foo = schemaFactory.object("Foo", {bar: schemaFactory.optional(schemaFactory.number)});
129
+ * const node = new Foo({bar: 1})
130
+ *
131
+ * // This clears the field, is non-enumerable, and value is undefined.
132
+ * delete node.bar;
133
+ *
134
+ * // This is equivalent to the delete example.
135
+ * node.bar = undefined
136
+ * ```
137
+ *
121
138
  * The API for fields is defined by {@link ObjectFromSchemaRecord}.
122
139
  * @public
123
140
  */
@@ -258,7 +275,7 @@ function createProxyHandler(
258
275
  if (propertyKey === typeSchemaSymbol) {
259
276
  return schema;
260
277
  }
261
- // eslint-disable-next-line import/no-deprecated
278
+ // eslint-disable-next-line import-x/no-deprecated
262
279
  if (propertyKey === typeNameSymbol) {
263
280
  return schema.identifier;
264
281
  }
@@ -275,27 +292,17 @@ function createProxyHandler(
275
292
  : false;
276
293
  }
277
294
 
278
- const innerNode = getInnerNode(proxy);
279
-
280
- const innerSchema = innerNode.context.schema.nodeSchema.get(brand(schema.identifier));
281
- assert(
282
- innerSchema instanceof ObjectNodeStoredSchema,
283
- 0xc18 /* Expected ObjectNodeStoredSchema */,
284
- );
285
-
286
- setField(
287
- innerNode.getBoxed(fieldInfo.storedKey),
288
- fieldInfo.schema,
289
- value,
290
- innerSchema.getFieldSchema(fieldInfo.storedKey),
291
- );
295
+ applyFieldChange(schema, { kind: "proxy", node: proxy }, fieldInfo, value);
292
296
  return true;
293
297
  },
294
298
  deleteProperty(target, propertyKey): boolean {
295
- // TODO: supporting delete when it makes sense (custom local fields, and optional field) could be added as a feature in the future.
296
- throw new UsageError(
297
- `Object nodes do not support the delete operator. Optional fields can be assigned to undefined instead.`,
298
- );
299
+ const fieldInfo = schema.flexKeyMap.get(propertyKey);
300
+ if (fieldInfo === undefined) {
301
+ return allowAdditionalProperties ? Reflect.deleteProperty(target, propertyKey) : false;
302
+ }
303
+
304
+ applyFieldChange(schema, { kind: "target", node: target }, fieldInfo, undefined);
305
+ return true;
299
306
  },
300
307
  has: (target, propertyKey) => {
301
308
  return (
@@ -566,7 +573,7 @@ export function objectSchema<
566
573
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
567
574
  nodeOptions.persistedMetadata;
568
575
 
569
- // eslint-disable-next-line import/no-deprecated
576
+ // eslint-disable-next-line import-x/no-deprecated
570
577
  public get [typeNameSymbol](): TName {
571
578
  return identifier;
572
579
  }
@@ -750,3 +757,32 @@ function getFieldProperty(
750
757
  }
751
758
  return undefined;
752
759
  }
760
+
761
+ function applyFieldChange(
762
+ schema: ObjectNodeSchemaPrivate,
763
+ from: { kind: "proxy"; node: TreeNode } | { kind: "target"; node: object },
764
+ fieldInfo: { storedKey: FieldKey; schema: FieldSchema },
765
+ value: InsertableContent | undefined,
766
+ ): void {
767
+ const proxy =
768
+ from.kind === "proxy"
769
+ ? from.node
770
+ : (targetToProxy.get(from.node) ?? fail(0xc95 /* missing proxy */));
771
+ const inner = getInnerNode(proxy);
772
+ const storedSchema = inner.context.schema.nodeSchema.get(brand(schema.identifier));
773
+ assert(
774
+ storedSchema instanceof ObjectNodeStoredSchema,
775
+ 0xc96 /* Expected ObjectNodeStoredSchema */,
776
+ );
777
+
778
+ if (value === undefined && inner.tryGetField(fieldInfo.storedKey) === undefined) {
779
+ return;
780
+ }
781
+
782
+ setField(
783
+ inner.getBoxed(fieldInfo.storedKey),
784
+ fieldInfo.schema,
785
+ value,
786
+ storedSchema.getFieldSchema(fieldInfo.storedKey),
787
+ );
788
+ }
@@ -11,7 +11,7 @@ import { type JsonCompatibleReadOnlyObject, brand } from "../../../util/index.js
11
11
  import {
12
12
  type TreeNodeSchema,
13
13
  NodeKind,
14
- // eslint-disable-next-line import/no-deprecated
14
+ // eslint-disable-next-line import-x/no-deprecated
15
15
  typeNameSymbol,
16
16
  typeSchemaSymbol,
17
17
  type UnhydratedFlexTreeNode,
@@ -32,6 +32,7 @@ import {
32
32
  CompatibilityLevel,
33
33
  type TreeNodeSchemaPrivateData,
34
34
  convertAllowedTypes,
35
+ AnnotatedAllowedTypesInternal,
35
36
  } from "../../core/index.js";
36
37
  import { getTreeNodeSchemaInitializedData } from "../../createContext.js";
37
38
  import { tryGetTreeNodeForField } from "../../getTreeNodeForField.js";
@@ -58,6 +59,7 @@ import { prepareForInsertion } from "../../prepareForInsertion.js";
58
59
  import { recordLikeDataToFlexContent } from "../common.js";
59
60
  import { MapNodeStoredSchema } from "../../../core/index.js";
60
61
  import type { NodeSchemaOptionsAlpha } from "../../api/index.js";
62
+ import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
61
63
 
62
64
  /**
63
65
  * Create a proxy which implements the {@link TreeRecordNode} API.
@@ -78,7 +80,7 @@ function createRecordNodeProxy(
78
80
  case typeSchemaSymbol: {
79
81
  return schema;
80
82
  }
81
- // eslint-disable-next-line import/no-deprecated
83
+ // eslint-disable-next-line import-x/no-deprecated
82
84
  case typeNameSymbol: {
83
85
  return schema.identifier;
84
86
  }
@@ -258,6 +260,9 @@ export function recordSchema<
258
260
  const lazyAllowedTypesIdentifiers = new Lazy(
259
261
  () => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
260
262
  );
263
+ const lazySimpleAllowedTypes = new Lazy(() => {
264
+ return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
265
+ });
261
266
 
262
267
  let privateData: TreeNodeSchemaPrivateData | undefined;
263
268
 
@@ -347,6 +352,10 @@ export function recordSchema<
347
352
  return lazyAllowedTypesIdentifiers.value;
348
353
  }
349
354
 
355
+ public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
356
+ return lazySimpleAllowedTypes.value;
357
+ }
358
+
350
359
  protected static override constructorCached: MostDerivedData | undefined = undefined;
351
360
 
352
361
  public static readonly identifier = identifier;
@@ -361,7 +370,7 @@ export function recordSchema<
361
370
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
362
371
  persistedMetadata;
363
372
 
364
- // eslint-disable-next-line import/no-deprecated
373
+ // eslint-disable-next-line import-x/no-deprecated
365
374
  public get [typeNameSymbol](): TName {
366
375
  return identifier;
367
376
  }
@@ -26,6 +26,22 @@ import type { RestrictiveStringRecord } from "../../../util/index.js";
26
26
  * Therefore code assigning to these fields must explicitly construct nodes using the schema's constructor or create method,
27
27
  * or using some other method like {@link (TreeAlpha:interface).create}.
28
28
  *
29
+ * Field Assignment and Deletion
30
+ *
31
+ * Unlike JavaScript's `Record` type, assigning `undefined` to a key in {@link TreeRecordNode} behaves like a `delete` operation,
32
+ * removing the field's contents.
33
+ *
34
+ * This is to stay consistent with {@link TreeObjectNode} behavior.
35
+ *
36
+ * Example:
37
+ * ```ts
38
+ * const Numbers = schemaFactory.record("Numbers", schemaFactory.number);
39
+ * const record = new Numbers({ a:1, b:2 });
40
+ *
41
+ * // This is equivalent to delete record.a, and removes the entry.
42
+ * record.a = undefined
43
+ * ```
44
+ *
29
45
  * @beta
30
46
  */
31
47
  export interface TreeRecordNode<
@@ -58,6 +58,15 @@ export interface SimpleObjectNodeSchema<out TCustomMetadata = unknown>
58
58
  * especially if/when TreeNodeSchema for objects provide more maps.
59
59
  */
60
60
  readonly fields: ReadonlyMap<string, SimpleObjectFieldSchema>;
61
+
62
+ /**
63
+ * Whether the object node allows unknown optional fields.
64
+ *
65
+ * @see {@link ObjectSchemaOptions.allowUnknownOptionalFields} for the API where this field is set as part of authoring a schema.
66
+ *
67
+ * @remarks Only populated for view schemas, undefined otherwise. Relevant for compatibility checking scenarios.
68
+ */
69
+ readonly allowUnknownOptionalFields: boolean | undefined;
61
70
  }
62
71
 
63
72
  /**
@@ -91,7 +100,7 @@ export interface SimpleArrayNodeSchema<out TCustomMetadata = unknown>
91
100
  * @remarks Refers to the types by identifier.
92
101
  * A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
93
102
  */
94
- readonly allowedTypesIdentifiers: ReadonlySet<string>;
103
+ readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
95
104
  }
96
105
 
97
106
  /**
@@ -108,7 +117,7 @@ export interface SimpleMapNodeSchema<out TCustomMetadata = unknown>
108
117
  * @remarks Refers to the types by identifier.
109
118
  * A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
110
119
  */
111
- readonly allowedTypesIdentifiers: ReadonlySet<string>;
120
+ readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
112
121
  }
113
122
 
114
123
  /**
@@ -125,7 +134,7 @@ export interface SimpleRecordNodeSchema<out TCustomMetadata = unknown>
125
134
  * @remarks Refers to the types by identifier.
126
135
  * A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
127
136
  */
128
- readonly allowedTypesIdentifiers: ReadonlySet<string>;
137
+ readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
129
138
  }
130
139
 
131
140
  /**
@@ -162,6 +171,23 @@ export type SimpleNodeSchema =
162
171
  | SimpleObjectNodeSchema
163
172
  | SimpleRecordNodeSchema;
164
173
 
174
+ /**
175
+ * Information about allowed types under a field.
176
+ *
177
+ * @alpha
178
+ * @sealed
179
+ */
180
+ export interface SimpleAllowedTypeAttributes {
181
+ /**
182
+ * True if this schema is included as a {@link SchemaStaticsBeta.staged | staged} schema upgrade,
183
+ * allowing the view schema be compatible with stored schema with (post upgrade) or without it (pre-upgrade).
184
+ * New documents and schema upgrades will omit any staged schema.
185
+ *
186
+ * Undefined if derived from a stored schema.
187
+ */
188
+ readonly isStaged: boolean | undefined;
189
+ }
190
+
165
191
  /**
166
192
  * A simple, shallow representation of a schema for a field.
167
193
  *
@@ -179,12 +205,12 @@ export interface SimpleFieldSchema {
179
205
  readonly kind: FieldKind;
180
206
 
181
207
  /**
182
- * The types allowed under the field.
208
+ * Information about the allowed types under this field.
183
209
  *
184
210
  * @remarks Refers to the types by identifier.
185
211
  * A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
186
212
  */
187
- readonly allowedTypesIdentifiers: ReadonlySet<string>;
213
+ readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
188
214
 
189
215
  /**
190
216
  * {@inheritDoc FieldSchemaMetadata}
@@ -221,7 +247,7 @@ export interface SimpleTreeSchema {
221
247
  * @remarks
222
248
  * The keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
223
249
  *
224
- * Information about if a schema is {@link SchemaStaticsAlpha.staged | staged} or not is not available as the "Simple Schema" layer of abstraction: they are included unconditionally.
250
+ * Information about if a schema is {@link SchemaStaticsBeta.staged | staged} or not is not available as the "Simple Schema" layer of abstraction: they are included unconditionally.
225
251
  * Options for filtering out staged schemas from view schema are available in {@link extractPersistedSchema}.
226
252
  */
227
253
  readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;