@fluidframework/tree 2.42.0 → 2.43.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 (542) hide show
  1. package/CHANGELOG.md +189 -0
  2. package/api-report/tree.alpha.api.md +72 -25
  3. package/api-report/tree.beta.api.md +34 -0
  4. package/api-report/tree.legacy.alpha.api.md +1 -0
  5. package/api-report/tree.legacy.public.api.md +1 -0
  6. package/api-report/tree.public.api.md +1 -0
  7. package/dist/alpha.d.ts +12 -6
  8. package/dist/beta.d.ts +6 -1
  9. package/dist/core/index.d.ts +1 -1
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +5 -2
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/schema-stored/formatV2.d.ts +80 -0
  14. package/dist/core/schema-stored/formatV2.d.ts.map +1 -0
  15. package/dist/core/schema-stored/formatV2.js +55 -0
  16. package/dist/core/schema-stored/formatV2.js.map +1 -0
  17. package/dist/core/schema-stored/index.d.ts +3 -1
  18. package/dist/core/schema-stored/index.d.ts.map +1 -1
  19. package/dist/core/schema-stored/index.js +5 -2
  20. package/dist/core/schema-stored/index.js.map +1 -1
  21. package/dist/core/schema-stored/schema.d.ts +49 -17
  22. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  23. package/dist/core/schema-stored/schema.js +65 -22
  24. package/dist/core/schema-stored/schema.js.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  26. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +13 -9
  28. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  30. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +6 -6
  32. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  34. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  36. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  37. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  38. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  39. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  40. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  41. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +24 -25
  42. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  43. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/index.d.ts +0 -1
  45. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  46. package/dist/feature-libraries/flex-tree/index.js +1 -7
  47. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  48. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  49. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyEntity.js +3 -0
  51. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -2
  53. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyField.js +2 -5
  55. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  56. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
  57. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  58. package/dist/feature-libraries/flex-tree/lazyNode.js +15 -7
  59. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  60. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
  61. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  62. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -5
  63. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  64. package/dist/feature-libraries/index.d.ts +2 -2
  65. package/dist/feature-libraries/index.d.ts.map +1 -1
  66. package/dist/feature-libraries/index.js +1 -2
  67. package/dist/feature-libraries/index.js.map +1 -1
  68. package/dist/feature-libraries/mapTreeCursor.d.ts +16 -2
  69. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  70. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  71. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  72. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  73. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  74. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  75. package/dist/feature-libraries/object-forest/objectForest.js +2 -0
  76. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  77. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  78. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  79. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  80. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  81. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  82. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  83. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  84. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  85. package/dist/feature-libraries/schema-index/codec.js +59 -9
  86. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  87. package/dist/feature-libraries/schema-index/formatV1.d.ts +1 -1
  88. package/dist/feature-libraries/schema-index/formatV2.d.ts +42 -0
  89. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  90. package/dist/feature-libraries/schema-index/formatV2.js +26 -0
  91. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -0
  92. package/dist/feature-libraries/schema-index/index.d.ts +2 -1
  93. package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
  94. package/dist/feature-libraries/schema-index/index.js +4 -2
  95. package/dist/feature-libraries/schema-index/index.js.map +1 -1
  96. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  97. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  98. package/dist/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  99. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  100. package/dist/index.d.ts +2 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/packageVersion.d.ts +1 -1
  104. package/dist/packageVersion.js +1 -1
  105. package/dist/packageVersion.js.map +1 -1
  106. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  107. package/dist/shared-tree/schematizeTree.js +1 -0
  108. package/dist/shared-tree/schematizeTree.js.map +1 -1
  109. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  110. package/dist/shared-tree/schematizingTreeView.js +3 -3
  111. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  112. package/dist/shared-tree/sharedTree.d.ts +5 -1
  113. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  114. package/dist/shared-tree/sharedTree.js +34 -5
  115. package/dist/shared-tree/sharedTree.js.map +1 -1
  116. package/dist/shared-tree/treeAlpha.d.ts +39 -1
  117. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  118. package/dist/shared-tree/treeAlpha.js +117 -11
  119. package/dist/shared-tree/treeAlpha.js.map +1 -1
  120. package/dist/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  121. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  122. package/dist/shared-tree-core/editManagerSummarizer.js +2 -5
  123. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  124. package/dist/shared-tree-core/sharedTreeCore.d.ts +18 -7
  125. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  126. package/dist/shared-tree-core/sharedTreeCore.js +15 -2
  127. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  128. package/dist/simple-tree/api/configuration.d.ts +15 -3
  129. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  130. package/dist/simple-tree/api/configuration.js +40 -22
  131. package/dist/simple-tree/api/configuration.js.map +1 -1
  132. package/dist/simple-tree/api/index.d.ts +1 -1
  133. package/dist/simple-tree/api/index.d.ts.map +1 -1
  134. package/dist/simple-tree/api/index.js +4 -4
  135. package/dist/simple-tree/api/index.js.map +1 -1
  136. package/dist/simple-tree/api/schemaCompatibilityTester.js +1 -1
  137. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  138. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  139. package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
  140. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  141. package/dist/simple-tree/api/schemaFactory.d.ts +15 -11
  142. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  143. package/dist/simple-tree/api/schemaFactory.js +4 -0
  144. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  145. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  146. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  147. package/dist/simple-tree/api/schemaFactoryAlpha.js +31 -4
  148. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  149. package/dist/simple-tree/api/storedSchema.js +2 -2
  150. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  151. package/dist/simple-tree/api/treeChangeEvents.d.ts +8 -3
  152. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  153. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  154. package/dist/simple-tree/api/treeNodeApi.d.ts +3 -0
  155. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  156. package/dist/simple-tree/api/treeNodeApi.js +1 -1
  157. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  158. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  159. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  160. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  161. package/dist/simple-tree/core/context.d.ts +3 -3
  162. package/dist/simple-tree/core/context.d.ts.map +1 -1
  163. package/dist/simple-tree/core/context.js.map +1 -1
  164. package/dist/simple-tree/core/getOrCreateNode.d.ts +9 -0
  165. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  166. package/dist/simple-tree/core/getOrCreateNode.js +12 -1
  167. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  168. package/dist/simple-tree/core/index.d.ts +2 -2
  169. package/dist/simple-tree/core/index.d.ts.map +1 -1
  170. package/dist/simple-tree/core/index.js +3 -1
  171. package/dist/simple-tree/core/index.js.map +1 -1
  172. package/dist/simple-tree/core/treeNodeKernel.js +2 -2
  173. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  174. package/dist/simple-tree/core/treeNodeSchema.d.ts +68 -1
  175. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  176. package/dist/simple-tree/core/treeNodeSchema.js +24 -1
  177. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  178. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +5 -9
  179. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  180. package/dist/simple-tree/core/unhydratedFlexTree.js +12 -31
  181. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  182. package/dist/simple-tree/core/walkSchema.d.ts +3 -3
  183. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  184. package/dist/simple-tree/core/walkSchema.js +9 -5
  185. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  186. package/dist/simple-tree/createContext.js +1 -1
  187. package/dist/simple-tree/createContext.js.map +1 -1
  188. package/dist/simple-tree/getTreeNodeForField.d.ts +1 -1
  189. package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
  190. package/dist/simple-tree/getTreeNodeForField.js +3 -3
  191. package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
  192. package/dist/simple-tree/index.d.ts +6 -6
  193. package/dist/simple-tree/index.d.ts.map +1 -1
  194. package/dist/simple-tree/index.js +8 -5
  195. package/dist/simple-tree/index.js.map +1 -1
  196. package/dist/simple-tree/leafNodeSchema.d.ts +4 -1
  197. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  198. package/dist/simple-tree/leafNodeSchema.js +1 -0
  199. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  200. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  201. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  202. package/dist/simple-tree/node-kinds/array/arrayNode.js +21 -16
  203. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  204. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  205. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  206. package/dist/simple-tree/node-kinds/map/mapNode.js +11 -5
  207. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  208. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
  209. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  210. package/dist/simple-tree/node-kinds/object/objectNode.js +12 -7
  211. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  212. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  213. package/dist/simple-tree/prepareForInsertion.js +5 -1
  214. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  215. package/dist/simple-tree/schemaTypes.d.ts +63 -30
  216. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  217. package/dist/simple-tree/schemaTypes.js +73 -40
  218. package/dist/simple-tree/schemaTypes.js.map +1 -1
  219. package/dist/simple-tree/simpleSchema.d.ts +22 -4
  220. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  221. package/dist/simple-tree/simpleSchema.js.map +1 -1
  222. package/dist/simple-tree/toStoredSchema.d.ts +4 -0
  223. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  224. package/dist/simple-tree/toStoredSchema.js +15 -4
  225. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  226. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  227. package/dist/simple-tree/treeNodeValid.js +1 -2
  228. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  229. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -1
  230. package/dist/simple-tree/walkFieldSchema.js +1 -1
  231. package/dist/simple-tree/walkFieldSchema.js.map +1 -1
  232. package/dist/tableSchema.d.ts +1 -1
  233. package/dist/util/typeUtils.d.ts +2 -2
  234. package/dist/util/typeUtils.js.map +1 -1
  235. package/dist/util/utils.d.ts +2 -0
  236. package/dist/util/utils.d.ts.map +1 -1
  237. package/dist/util/utils.js.map +1 -1
  238. package/lib/alpha.d.ts +12 -6
  239. package/lib/beta.d.ts +6 -1
  240. package/lib/core/index.d.ts +1 -1
  241. package/lib/core/index.d.ts.map +1 -1
  242. package/lib/core/index.js +1 -1
  243. package/lib/core/index.js.map +1 -1
  244. package/lib/core/schema-stored/formatV2.d.ts +80 -0
  245. package/lib/core/schema-stored/formatV2.d.ts.map +1 -0
  246. package/lib/core/schema-stored/formatV2.js +52 -0
  247. package/lib/core/schema-stored/formatV2.js.map +1 -0
  248. package/lib/core/schema-stored/index.d.ts +3 -1
  249. package/lib/core/schema-stored/index.d.ts.map +1 -1
  250. package/lib/core/schema-stored/index.js +3 -1
  251. package/lib/core/schema-stored/index.js.map +1 -1
  252. package/lib/core/schema-stored/schema.d.ts +49 -17
  253. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  254. package/lib/core/schema-stored/schema.js +63 -21
  255. package/lib/core/schema-stored/schema.js.map +1 -1
  256. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  257. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  258. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +11 -7
  259. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  260. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  261. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  262. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +7 -7
  263. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  264. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  265. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  266. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  267. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  268. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  269. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  270. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  271. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  272. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +24 -25
  273. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  274. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  275. package/lib/feature-libraries/flex-tree/index.d.ts +0 -1
  276. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  277. package/lib/feature-libraries/flex-tree/index.js +0 -1
  278. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  279. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  280. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  281. package/lib/feature-libraries/flex-tree/lazyEntity.js +3 -0
  282. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  283. package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -2
  284. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  285. package/lib/feature-libraries/flex-tree/lazyField.js +3 -6
  286. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  287. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
  288. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  289. package/lib/feature-libraries/flex-tree/lazyNode.js +15 -7
  290. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  291. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
  292. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  293. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -5
  294. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  295. package/lib/feature-libraries/index.d.ts +2 -2
  296. package/lib/feature-libraries/index.d.ts.map +1 -1
  297. package/lib/feature-libraries/index.js +1 -1
  298. package/lib/feature-libraries/index.js.map +1 -1
  299. package/lib/feature-libraries/mapTreeCursor.d.ts +16 -2
  300. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  301. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  302. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  303. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  304. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  305. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  306. package/lib/feature-libraries/object-forest/objectForest.js +2 -0
  307. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  308. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  309. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  310. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  311. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  312. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  313. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  314. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  315. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  316. package/lib/feature-libraries/schema-index/codec.js +60 -10
  317. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  318. package/lib/feature-libraries/schema-index/formatV1.d.ts +1 -1
  319. package/lib/feature-libraries/schema-index/formatV2.d.ts +42 -0
  320. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  321. package/lib/feature-libraries/schema-index/formatV2.js +23 -0
  322. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -0
  323. package/lib/feature-libraries/schema-index/index.d.ts +2 -1
  324. package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
  325. package/lib/feature-libraries/schema-index/index.js +2 -1
  326. package/lib/feature-libraries/schema-index/index.js.map +1 -1
  327. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  328. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  329. package/lib/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  330. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  331. package/lib/index.d.ts +2 -2
  332. package/lib/index.d.ts.map +1 -1
  333. package/lib/index.js.map +1 -1
  334. package/lib/packageVersion.d.ts +1 -1
  335. package/lib/packageVersion.js +1 -1
  336. package/lib/packageVersion.js.map +1 -1
  337. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  338. package/lib/shared-tree/schematizeTree.js +1 -0
  339. package/lib/shared-tree/schematizeTree.js.map +1 -1
  340. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  341. package/lib/shared-tree/schematizingTreeView.js +4 -4
  342. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  343. package/lib/shared-tree/sharedTree.d.ts +5 -1
  344. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  345. package/lib/shared-tree/sharedTree.js +34 -5
  346. package/lib/shared-tree/sharedTree.js.map +1 -1
  347. package/lib/shared-tree/treeAlpha.d.ts +39 -1
  348. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  349. package/lib/shared-tree/treeAlpha.js +111 -5
  350. package/lib/shared-tree/treeAlpha.js.map +1 -1
  351. package/lib/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  352. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  353. package/lib/shared-tree-core/editManagerSummarizer.js +2 -5
  354. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  355. package/lib/shared-tree-core/sharedTreeCore.d.ts +18 -7
  356. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  357. package/lib/shared-tree-core/sharedTreeCore.js +15 -2
  358. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  359. package/lib/simple-tree/api/configuration.d.ts +15 -3
  360. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  361. package/lib/simple-tree/api/configuration.js +42 -24
  362. package/lib/simple-tree/api/configuration.js.map +1 -1
  363. package/lib/simple-tree/api/index.d.ts +1 -1
  364. package/lib/simple-tree/api/index.d.ts.map +1 -1
  365. package/lib/simple-tree/api/index.js +1 -1
  366. package/lib/simple-tree/api/index.js.map +1 -1
  367. package/lib/simple-tree/api/schemaCompatibilityTester.js +1 -1
  368. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  369. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  370. package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
  371. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  372. package/lib/simple-tree/api/schemaFactory.d.ts +15 -11
  373. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  374. package/lib/simple-tree/api/schemaFactory.js +4 -0
  375. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  376. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  377. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  378. package/lib/simple-tree/api/schemaFactoryAlpha.js +31 -4
  379. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  380. package/lib/simple-tree/api/storedSchema.js +2 -2
  381. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  382. package/lib/simple-tree/api/treeChangeEvents.d.ts +8 -3
  383. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  384. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  385. package/lib/simple-tree/api/treeNodeApi.d.ts +3 -0
  386. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  387. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  388. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  389. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  390. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  391. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  392. package/lib/simple-tree/core/context.d.ts +3 -3
  393. package/lib/simple-tree/core/context.d.ts.map +1 -1
  394. package/lib/simple-tree/core/context.js.map +1 -1
  395. package/lib/simple-tree/core/getOrCreateNode.d.ts +9 -0
  396. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  397. package/lib/simple-tree/core/getOrCreateNode.js +10 -0
  398. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  399. package/lib/simple-tree/core/index.d.ts +2 -2
  400. package/lib/simple-tree/core/index.d.ts.map +1 -1
  401. package/lib/simple-tree/core/index.js +2 -2
  402. package/lib/simple-tree/core/index.js.map +1 -1
  403. package/lib/simple-tree/core/treeNodeKernel.js +2 -2
  404. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  405. package/lib/simple-tree/core/treeNodeSchema.d.ts +68 -1
  406. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  407. package/lib/simple-tree/core/treeNodeSchema.js +21 -0
  408. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  409. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +5 -9
  410. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  411. package/lib/simple-tree/core/unhydratedFlexTree.js +15 -34
  412. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  413. package/lib/simple-tree/core/walkSchema.d.ts +3 -3
  414. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  415. package/lib/simple-tree/core/walkSchema.js +9 -5
  416. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  417. package/lib/simple-tree/createContext.js +1 -1
  418. package/lib/simple-tree/createContext.js.map +1 -1
  419. package/lib/simple-tree/getTreeNodeForField.d.ts +1 -1
  420. package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
  421. package/lib/simple-tree/getTreeNodeForField.js +1 -1
  422. package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
  423. package/lib/simple-tree/index.d.ts +6 -6
  424. package/lib/simple-tree/index.d.ts.map +1 -1
  425. package/lib/simple-tree/index.js +4 -4
  426. package/lib/simple-tree/index.js.map +1 -1
  427. package/lib/simple-tree/leafNodeSchema.d.ts +4 -1
  428. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  429. package/lib/simple-tree/leafNodeSchema.js +2 -1
  430. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  431. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  432. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  433. package/lib/simple-tree/node-kinds/array/arrayNode.js +13 -8
  434. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  435. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  436. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  437. package/lib/simple-tree/node-kinds/map/mapNode.js +14 -8
  438. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  439. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
  440. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  441. package/lib/simple-tree/node-kinds/object/objectNode.js +14 -9
  442. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  443. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  444. package/lib/simple-tree/prepareForInsertion.js +5 -1
  445. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  446. package/lib/simple-tree/schemaTypes.d.ts +63 -30
  447. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  448. package/lib/simple-tree/schemaTypes.js +70 -36
  449. package/lib/simple-tree/schemaTypes.js.map +1 -1
  450. package/lib/simple-tree/simpleSchema.d.ts +22 -4
  451. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  452. package/lib/simple-tree/simpleSchema.js.map +1 -1
  453. package/lib/simple-tree/toStoredSchema.d.ts +4 -0
  454. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  455. package/lib/simple-tree/toStoredSchema.js +15 -4
  456. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  457. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  458. package/lib/simple-tree/treeNodeValid.js +1 -2
  459. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  460. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -1
  461. package/lib/simple-tree/walkFieldSchema.js +1 -1
  462. package/lib/simple-tree/walkFieldSchema.js.map +1 -1
  463. package/lib/tableSchema.d.ts +1 -1
  464. package/lib/util/typeUtils.d.ts +2 -2
  465. package/lib/util/typeUtils.js.map +1 -1
  466. package/lib/util/utils.d.ts +2 -0
  467. package/lib/util/utils.d.ts.map +1 -1
  468. package/lib/util/utils.js.map +1 -1
  469. package/package.json +23 -23
  470. package/src/core/index.ts +3 -1
  471. package/src/core/schema-stored/formatV2.ts +78 -0
  472. package/src/core/schema-stored/index.ts +4 -1
  473. package/src/core/schema-stored/schema.ts +123 -33
  474. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +16 -11
  475. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -7
  476. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +4 -4
  477. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +9 -16
  478. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +33 -30
  479. package/src/feature-libraries/flex-tree/index.ts +0 -8
  480. package/src/feature-libraries/flex-tree/lazyEntity.ts +5 -1
  481. package/src/feature-libraries/flex-tree/lazyField.ts +5 -8
  482. package/src/feature-libraries/flex-tree/lazyNode.ts +17 -8
  483. package/src/feature-libraries/forest-summary/forestSummarizer.ts +9 -16
  484. package/src/feature-libraries/index.ts +1 -1
  485. package/src/feature-libraries/mapTreeCursor.ts +17 -8
  486. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +2 -0
  487. package/src/feature-libraries/object-forest/objectForest.ts +3 -0
  488. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +11 -6
  489. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +3 -3
  490. package/src/feature-libraries/schema-index/codec.ts +73 -14
  491. package/src/feature-libraries/schema-index/formatV2.ts +30 -0
  492. package/src/feature-libraries/schema-index/index.ts +2 -1
  493. package/src/feature-libraries/schema-index/schemaSummarizer.ts +11 -18
  494. package/src/index.ts +6 -0
  495. package/src/packageVersion.ts +1 -1
  496. package/src/shared-tree/schematizeTree.ts +1 -0
  497. package/src/shared-tree/schematizingTreeView.ts +8 -5
  498. package/src/shared-tree/sharedTree.ts +42 -12
  499. package/src/shared-tree/treeAlpha.ts +196 -6
  500. package/src/shared-tree-core/editManagerSummarizer.ts +9 -16
  501. package/src/shared-tree-core/sharedTreeCore.ts +33 -24
  502. package/src/simple-tree/api/configuration.ts +59 -27
  503. package/src/simple-tree/api/index.ts +3 -3
  504. package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
  505. package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
  506. package/src/simple-tree/api/schemaFactory.ts +16 -11
  507. package/src/simple-tree/api/schemaFactoryAlpha.ts +53 -8
  508. package/src/simple-tree/api/storedSchema.ts +4 -4
  509. package/src/simple-tree/api/treeChangeEvents.ts +8 -3
  510. package/src/simple-tree/api/treeNodeApi.ts +5 -2
  511. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +5 -0
  512. package/src/simple-tree/core/context.ts +3 -3
  513. package/src/simple-tree/core/getOrCreateNode.ts +14 -0
  514. package/src/simple-tree/core/index.ts +7 -1
  515. package/src/simple-tree/core/treeNodeKernel.ts +2 -2
  516. package/src/simple-tree/core/treeNodeSchema.ts +113 -1
  517. package/src/simple-tree/core/unhydratedFlexTree.ts +22 -44
  518. package/src/simple-tree/core/walkSchema.ts +16 -7
  519. package/src/simple-tree/createContext.ts +1 -1
  520. package/src/simple-tree/getTreeNodeForField.ts +3 -1
  521. package/src/simple-tree/index.ts +12 -5
  522. package/src/simple-tree/leafNodeSchema.ts +9 -1
  523. package/src/simple-tree/node-kinds/array/arrayNode.ts +20 -9
  524. package/src/simple-tree/node-kinds/map/mapNode.ts +21 -6
  525. package/src/simple-tree/node-kinds/object/objectNode.ts +29 -12
  526. package/src/simple-tree/prepareForInsertion.ts +5 -1
  527. package/src/simple-tree/schemaTypes.ts +151 -71
  528. package/src/simple-tree/simpleSchema.ts +27 -5
  529. package/src/simple-tree/toStoredSchema.ts +17 -4
  530. package/src/simple-tree/treeNodeValid.ts +1 -1
  531. package/src/simple-tree/walkFieldSchema.ts +5 -1
  532. package/src/util/typeUtils.ts +2 -2
  533. package/src/util/utils.ts +2 -0
  534. package/dist/feature-libraries/flex-tree/navigation.d.ts +0 -46
  535. package/dist/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  536. package/dist/feature-libraries/flex-tree/navigation.js +0 -104
  537. package/dist/feature-libraries/flex-tree/navigation.js.map +0 -1
  538. package/lib/feature-libraries/flex-tree/navigation.d.ts +0 -46
  539. package/lib/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  540. package/lib/feature-libraries/flex-tree/navigation.js +0 -97
  541. package/lib/feature-libraries/flex-tree/navigation.js.map +0 -1
  542. package/src/feature-libraries/flex-tree/navigation.ts +0 -121
@@ -275,7 +275,7 @@ export class SchemaCompatibilityTester {
275
275
  }
276
276
  }
277
277
 
278
- return { kind: original.kind, types };
278
+ return { kind: original.kind, types, persistedMetadata: undefined };
279
279
  }
280
280
  return original;
281
281
  }
@@ -32,7 +32,7 @@ import type { UnionToTuple } from "../../util/index.js";
32
32
  * This is commonly used in unions when the only information needed is which kind of node the value is.
33
33
  * Enums are a common example of this pattern.
34
34
  * @see {@link adaptEnum}
35
- * @alpha
35
+ * @beta
36
36
  */
37
37
  // Return type is intentionally derived.
38
38
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
@@ -107,7 +107,7 @@ export function singletonSchema<TScope extends string, TName extends string | nu
107
107
  * @privateRemarks
108
108
  * Maybe provide `SchemaFactory.nested` to ease creating nested scopes?
109
109
  * @see {@link enumFromStrings} for a similar function that works on arrays of strings instead of an enum.
110
- * @alpha
110
+ * @beta
111
111
  */
112
112
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
113
113
  export function adaptEnum<
@@ -186,7 +186,7 @@ export function adaptEnum<
186
186
  * class Parent extends schemaFactory.object("Parent", { mode: Mode.schema }) {}
187
187
  * ```
188
188
  * @see {@link adaptEnum} for a similar function that works on enums instead of arrays of strings.
189
- * @alpha
189
+ * @beta
190
190
  */
191
191
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
192
192
  export function enumFromStrings<
@@ -56,13 +56,14 @@ import {
56
56
  createFieldSchema,
57
57
  type DefaultProvider,
58
58
  getDefaultProvider,
59
- type NodeSchemaOptions,
60
59
  markSchemaMostDerived,
61
60
  type FieldSchemaAlpha,
62
61
  type ImplicitAnnotatedAllowedTypes,
63
62
  type UnannotateImplicitAllowedTypes,
64
63
  type UnannotateSchemaRecord,
64
+ type NodeSchemaOptionsAlpha,
65
65
  normalizeAllowedTypes,
66
+ type FieldPropsAlpha,
66
67
  } from "../schemaTypes.js";
67
68
 
68
69
  import { createFieldSchemaUnsafe } from "./schemaFactoryRecursive.js";
@@ -101,7 +102,7 @@ export function schemaFromValue(value: TreeValue): TreeNodeSchema {
101
102
  * @alpha
102
103
  */
103
104
  export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown>
104
- extends NodeSchemaOptions<TCustomMetadata> {
105
+ extends NodeSchemaOptionsAlpha<TCustomMetadata> {
105
106
  /**
106
107
  * Allow nodes typed with this object node schema to contain optional fields that are not present in the schema declaration.
107
108
  * Such nodes can come into existence either via import APIs (see remarks) or by way of collaboration with another client
@@ -147,8 +148,12 @@ export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown>
147
148
  allowUnknownOptionalFields?: boolean;
148
149
  }
149
150
 
151
+ /**
152
+ * Default options for Object node schema creation.
153
+ * @remarks Omits parameters that are not relevant for common use cases.
154
+ */
150
155
  export const defaultSchemaFactoryObjectOptions: Required<
151
- Omit<SchemaFactoryObjectOptions, "metadata">
156
+ Omit<SchemaFactoryObjectOptions, "metadata" | "persistedMetadata">
152
157
  > = {
153
158
  allowUnknownOptionalFields: false,
154
159
  };
@@ -307,7 +312,7 @@ const defaultOptionalProvider: DefaultProvider = getDefaultProvider(() => []);
307
312
 
308
313
  function optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
309
314
  t: T,
310
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
315
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
311
316
  ): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
312
317
 
313
318
  function optional<
@@ -315,7 +320,7 @@ function optional<
315
320
  const TCustomMetadata = unknown,
316
321
  >(
317
322
  t: T,
318
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
323
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
319
324
  ): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
320
325
 
321
326
  function optional<
@@ -323,7 +328,7 @@ function optional<
323
328
  const TCustomMetadata = unknown,
324
329
  >(
325
330
  t: T,
326
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
331
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
327
332
  ): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
328
333
  return createFieldSchema(FieldKind.Optional, t, {
329
334
  defaultProvider: defaultOptionalProvider,
@@ -333,7 +338,7 @@ function optional<
333
338
 
334
339
  function required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
335
340
  t: T,
336
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
341
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
337
342
  ): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
338
343
 
339
344
  function required<
@@ -341,7 +346,7 @@ function required<
341
346
  const TCustomMetadata = unknown,
342
347
  >(
343
348
  t: T,
344
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
349
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
345
350
  ): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
346
351
 
347
352
  function required<
@@ -349,7 +354,7 @@ function required<
349
354
  const TCustomMetadata = unknown,
350
355
  >(
351
356
  t: T,
352
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
357
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
353
358
  ): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
354
359
  return createFieldSchema(FieldKind.Required, t, props);
355
360
  }
@@ -377,7 +382,7 @@ export const schemaStaticsBase = {
377
382
  const TCustomMetadata = unknown,
378
383
  >(
379
384
  t: T,
380
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
385
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
381
386
  ): FieldSchemaAlphaUnsafe<FieldKind.Optional, T, TCustomMetadata> => {
382
387
  return createFieldSchemaUnsafe(FieldKind.Optional, t, {
383
388
  defaultProvider: defaultOptionalProvider,
@@ -390,7 +395,7 @@ export const schemaStaticsBase = {
390
395
  const TCustomMetadata = unknown,
391
396
  >(
392
397
  t: T,
393
- props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">,
398
+ props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
394
399
  ): FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata> => {
395
400
  return createFieldSchemaUnsafe(FieldKind.Required, t, props);
396
401
  },
@@ -23,7 +23,7 @@ import type {
23
23
  ImplicitAnnotatedAllowedTypes,
24
24
  ImplicitAnnotatedFieldSchema,
25
25
  ImplicitFieldSchema,
26
- NodeSchemaOptions,
26
+ NodeSchemaOptionsAlpha,
27
27
  } from "../schemaTypes.js";
28
28
  import type { RestrictiveStringRecord } from "../../util/index.js";
29
29
  import type { NodeKind, TreeNodeSchemaClass } from "../core/index.js";
@@ -88,6 +88,7 @@ export class SchemaFactoryAlpha<
88
88
  options?.allowUnknownOptionalFields ??
89
89
  defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,
90
90
  options?.metadata,
91
+ options?.persistedMetadata,
91
92
  );
92
93
  }
93
94
 
@@ -148,7 +149,7 @@ export class SchemaFactoryAlpha<
148
149
  }
149
150
 
150
151
  /**
151
- * {@inheritDoc SchemaStatics.optional}
152
+ * {@inheritDoc SchemaStatics.leaves}
152
153
  */
153
154
  public static override readonly leaves = schemaStatics.leaves;
154
155
 
@@ -167,11 +168,41 @@ export class SchemaFactoryAlpha<
167
168
  */
168
169
  public static override readonly optionalRecursive = schemaStatics.optionalRecursive;
169
170
 
171
+ /**
172
+ * {@inheritDoc SchemaStatics.requiredRecursive}
173
+ */
174
+ public static override readonly requiredRecursive = schemaStatics.requiredRecursive;
175
+
170
176
  /**
171
177
  * Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.
172
178
  */
173
179
  public static readonly identifier = schemaStatics.identifier;
174
180
 
181
+ /**
182
+ * {@inheritDoc SchemaStatics.leaves}
183
+ */
184
+ public override readonly leaves = schemaStatics.leaves;
185
+
186
+ /**
187
+ * {@inheritDoc SchemaStatics.optional}
188
+ */
189
+ public override readonly optional = schemaStatics.optional;
190
+
191
+ /**
192
+ * {@inheritDoc SchemaStatics.required}
193
+ */
194
+ public override readonly required = schemaStatics.required;
195
+
196
+ /**
197
+ * {@inheritDoc SchemaStatics.optionalRecursive}
198
+ */
199
+ public override readonly optionalRecursive = schemaStatics.optionalRecursive;
200
+
201
+ /**
202
+ * {@inheritDoc SchemaStatics.requiredRecursive}
203
+ */
204
+ public override readonly requiredRecursive = schemaStatics.requiredRecursive;
205
+
175
206
  /**
176
207
  * Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.
177
208
  *
@@ -193,9 +224,16 @@ export class SchemaFactoryAlpha<
193
224
  >(
194
225
  name: Name,
195
226
  allowedTypes: T,
196
- options?: NodeSchemaOptions<TCustomMetadata>,
227
+ options?: NodeSchemaOptionsAlpha<TCustomMetadata>,
197
228
  ): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {
198
- return mapSchema(this.scoped2(name), allowedTypes, true, true, options?.metadata);
229
+ return mapSchema(
230
+ this.scoped2(name),
231
+ allowedTypes,
232
+ true,
233
+ true,
234
+ options?.metadata,
235
+ options?.persistedMetadata,
236
+ );
199
237
  }
200
238
 
201
239
  /**
@@ -206,7 +244,7 @@ export class SchemaFactoryAlpha<
206
244
  Name extends TName,
207
245
  const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
208
246
  const TCustomMetadata = unknown,
209
- >(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>) {
247
+ >(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {
210
248
  return this.mapAlpha(
211
249
  name,
212
250
  allowedTypes as T & ImplicitAllowedTypes,
@@ -237,9 +275,16 @@ export class SchemaFactoryAlpha<
237
275
  >(
238
276
  name: Name,
239
277
  allowedTypes: T,
240
- options?: NodeSchemaOptions<TCustomMetadata>,
278
+ options?: NodeSchemaOptionsAlpha<TCustomMetadata>,
241
279
  ): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {
242
- return arraySchema(this.scoped2(name), allowedTypes, true, true, options?.metadata);
280
+ return arraySchema(
281
+ this.scoped2(name),
282
+ allowedTypes,
283
+ true,
284
+ true,
285
+ options?.metadata,
286
+ options?.persistedMetadata,
287
+ );
243
288
  }
244
289
 
245
290
  /**
@@ -250,7 +295,7 @@ export class SchemaFactoryAlpha<
250
295
  const Name extends TName,
251
296
  const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
252
297
  const TCustomMetadata = unknown,
253
- >(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>) {
298
+ >(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {
254
299
  return this.arrayAlpha(
255
300
  name,
256
301
  allowedTypes as T & ImplicitAllowedTypes,
@@ -12,7 +12,7 @@ import {
12
12
  } from "../../feature-libraries/index.js";
13
13
  import {
14
14
  clientVersionToSchemaVersion,
15
- type Format,
15
+ type FormatV1,
16
16
  // eslint-disable-next-line import/no-internal-modules
17
17
  } from "../../feature-libraries/schema-index/index.js";
18
18
  import type { JsonCompatible } from "../../util/index.js";
@@ -58,8 +58,8 @@ export function extractPersistedSchema(
58
58
  oldestCompatibleClient: FluidClientVersion,
59
59
  ): JsonCompatible {
60
60
  const stored = simpleToStoredSchema(schema);
61
- const writeVersion = clientVersionToSchemaVersion(oldestCompatibleClient);
62
- return encodeTreeSchema(stored, writeVersion);
61
+ const schemaWriteVersion = clientVersionToSchemaVersion(oldestCompatibleClient);
62
+ return encodeTreeSchema(stored, schemaWriteVersion);
63
63
  }
64
64
 
65
65
  /**
@@ -100,7 +100,7 @@ export function comparePersistedSchema(
100
100
  // Any version can be passed down to makeSchemaCodec here.
101
101
  // We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.
102
102
  const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
103
- const stored = schemaCodec.decode(persisted as Format);
103
+ const stored = schemaCodec.decode(persisted as FormatV1);
104
104
  const viewSchema = new SchemaCompatibilityTester(
105
105
  defaultSchemaPolicy,
106
106
  {},
@@ -26,7 +26,10 @@
26
26
  */
27
27
  export interface TreeChangeEvents {
28
28
  /**
29
- * Emitted by a node after a batch of changes has been applied to the tree, if any of the changes affected the node.
29
+ * Emitted by a node if any changes affected the node.
30
+ *
31
+ * This event is emitted after all the changes in a batch have been applied to the whole tree.
32
+ * This means that a handler for this event will be able to read the updated state of the tree.
30
33
  *
31
34
  * - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).
32
35
  *
@@ -65,8 +68,10 @@ export interface TreeChangeEvents {
65
68
  nodeChanged(unstable?: unknown): void;
66
69
 
67
70
  /**
68
- * Emitted by a node after a batch of changes has been applied to the tree, when something changed anywhere in the
69
- * subtree rooted at it.
71
+ * Emitted by a node if something changed anywhere in the subtree rooted at it.
72
+ *
73
+ * This event is emitted after all the changes in a batch have been applied to the whole tree.
74
+ * This means that a handler for this event will be able to read the updated state of the tree.
70
75
  *
71
76
  * @remarks
72
77
  * This event is not emitted when the node itself is moved to a different location in the tree or removed from the tree.
@@ -39,7 +39,7 @@ import {
39
39
  } from "../core/index.js";
40
40
  import type { TreeChangeEvents } from "./treeChangeEvents.js";
41
41
  import { isObjectNodeSchema } from "../node-kinds/index.js";
42
- import { getTreeNodeForField } from "../getTreeNodeForField.js";
42
+ import { tryGetTreeNodeForField } from "../getTreeNodeForField.js";
43
43
 
44
44
  /**
45
45
  * Provides various functions for analyzing {@link TreeNode}s.
@@ -83,6 +83,9 @@ export interface TreeNodeApi {
83
83
  * Return the node under which this node resides in the tree (or undefined if this is a root node of the tree).
84
84
  *
85
85
  * @throws A {@link @fluidframework/telemetry-utils#UsageError} if the node has been {@link TreeStatus.Deleted | deleted}.
86
+ *
87
+ * @see {@link (TreeAlpha:interface).child}
88
+ * @see {@link (TreeAlpha:interface).children}
86
89
  */
87
90
  parent(node: TreeNode): TreeNode | undefined;
88
91
 
@@ -316,7 +319,7 @@ export function getIdentifierFromNode(
316
319
  const key = identifierFieldKeys[0] ?? oob();
317
320
  const identifierField = flexNode.tryGetField(key);
318
321
  assert(identifierField !== undefined, 0xbb5 /* missing identifier field */);
319
- const identifierValue = getTreeNodeForField(identifierField);
322
+ const identifierValue = tryGetTreeNodeForField(identifierField);
320
323
  assert(typeof identifierValue === "string", 0xbb6 /* identifier not a string */);
321
324
 
322
325
  const context = flexNode.context;
@@ -63,6 +63,7 @@ export function toSimpleTreeSchema(
63
63
  allowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,
64
64
  kind: normalizedSchema.kind,
65
65
  metadata: normalizedSchema.metadata,
66
+ persistedMetadata: normalizedSchema.persistedMetadata,
66
67
  } satisfies SimpleFieldSchema)
67
68
  : normalizedSchema,
68
69
  definitions,
@@ -94,6 +95,7 @@ function copySimpleLeafSchema(schema: SimpleLeafNodeSchema): SimpleLeafNodeSchem
94
95
  kind: NodeKind.Leaf,
95
96
  leafKind: schema.leafKind,
96
97
  metadata: schema.metadata,
98
+ persistedMetadata: schema.persistedMetadata,
97
99
  };
98
100
  }
99
101
 
@@ -104,6 +106,7 @@ function copySimpleMapOrArraySchema(
104
106
  kind: schema.kind,
105
107
  allowedTypesIdentifiers: schema.allowedTypesIdentifiers,
106
108
  metadata: schema.metadata,
109
+ persistedMetadata: schema.persistedMetadata,
107
110
  };
108
111
  }
109
112
 
@@ -115,6 +118,7 @@ function copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNod
115
118
  kind: field.kind,
116
119
  allowedTypesIdentifiers: field.allowedTypesIdentifiers,
117
120
  metadata: field.metadata,
121
+ persistedMetadata: field.persistedMetadata,
118
122
  storedKey: field.storedKey,
119
123
  });
120
124
  }
@@ -123,5 +127,6 @@ function copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNod
123
127
  kind: NodeKind.Object,
124
128
  fields,
125
129
  metadata: schema.metadata,
130
+ persistedMetadata: schema.persistedMetadata,
126
131
  };
127
132
  }
@@ -10,7 +10,7 @@ import type {
10
10
  } from "../../feature-libraries/index.js";
11
11
  import { brand } from "../../util/index.js";
12
12
 
13
- import type { TreeNodeSchema } from "./treeNodeSchema.js";
13
+ import type { NormalizedAnnotatedAllowedTypes, TreeNodeSchema } from "./treeNodeSchema.js";
14
14
  import { walkAllowedTypes } from "./walkSchema.js";
15
15
 
16
16
  /**
@@ -52,7 +52,7 @@ export class Context {
52
52
  * Since this walks the schema, it must not be invoked during schema declaration or schema forward references could fail to be resolved.
53
53
  */
54
54
  public constructor(
55
- rootSchema: Iterable<TreeNodeSchema>,
55
+ rootSchema: NormalizedAnnotatedAllowedTypes,
56
56
  public readonly flexContext: FlexTreeContext,
57
57
  ) {
58
58
  const schema: Map<TreeNodeSchemaIdentifier, TreeNodeSchema> = new Map();
@@ -71,7 +71,7 @@ export class Context {
71
71
  */
72
72
  export class HydratedContext extends Context {
73
73
  public constructor(
74
- rootSchema: Iterable<TreeNodeSchema>,
74
+ rootSchema: NormalizedAnnotatedAllowedTypes,
75
75
  public override readonly flexContext: FlexTreeHydratedContext,
76
76
  ) {
77
77
  super(rootSchema, flexContext);
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  import type { TreeValue } from "../../core/index.js";
7
+ import { isFlexTreeNode, type FlexTreeUnknownUnboxed } from "../../feature-libraries/index.js";
8
+ import type { TreeLeafValue } from "../schemaTypes.js";
7
9
 
8
10
  import type { TreeNode } from "./treeNode.js";
9
11
  import {
@@ -34,3 +36,15 @@ export function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | Tr
34
36
 
35
37
  return createTreeNodeFromInner(flexNode);
36
38
  }
39
+
40
+ /**
41
+ * Returns the TreeNode or TreeValue for the provided {@link FlexTreeUnknownUnboxed}.
42
+ * This will allocate a new one if needed, and otherwise return one from cache.
43
+ * @remarks
44
+ * This supports both hydrated and unhydrated nodes.
45
+ */
46
+ export function getOrCreateNodeFromInnerUnboxedNode(
47
+ flexTree: FlexTreeUnknownUnboxed,
48
+ ): TreeNode | TreeLeafValue {
49
+ return isFlexTreeNode(flexTree) ? getOrCreateNodeFromInnerNode(flexTree) : flexTree;
50
+ }
@@ -31,10 +31,16 @@ export {
31
31
  type TreeNodeSchemaNonClass,
32
32
  type TreeNodeSchemaCore,
33
33
  type TreeNodeSchemaBoth,
34
+ type AnnotatedAllowedType,
35
+ type NormalizedAnnotatedAllowedTypes,
36
+ isAnnotatedAllowedTypes,
34
37
  } from "./treeNodeSchema.js";
35
38
  export { walkAllowedTypes, type SchemaVisitor } from "./walkSchema.js";
36
39
  export { Context, HydratedContext, SimpleContextSlot } from "./context.js";
37
- export { getOrCreateNodeFromInnerNode } from "./getOrCreateNode.js";
40
+ export {
41
+ getOrCreateNodeFromInnerNode,
42
+ getOrCreateNodeFromInnerUnboxedNode,
43
+ } from "./getOrCreateNode.js";
38
44
  export {
39
45
  UnhydratedFlexTreeNode,
40
46
  UnhydratedSequenceField,
@@ -372,7 +372,7 @@ export function splitInnerNodeType(
372
372
  ): asserts innerNode is UnhydratedFlexTreeNode | HydratedFlexTreeNode {
373
373
  assert(
374
374
  innerNode instanceof UnhydratedFlexTreeNode || innerNode.isHydrated(),
375
- "Invalid inner node type",
375
+ 0xbc8 /* Invalid inner node type */,
376
376
  );
377
377
  }
378
378
 
@@ -401,7 +401,7 @@ export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
401
401
  */
402
402
  export function getSimpleNodeSchemaFromInnerNode(innerNode: InnerNode): TreeNodeSchema {
403
403
  const context: Context = getSimpleContextFromInnerNode(innerNode);
404
- return context.schema.get(innerNode.schema) ?? fail(0xb3f /* missing schema from context */);
404
+ return context.schema.get(innerNode.type) ?? fail(0xb3f /* missing schema from context */);
405
405
  }
406
406
 
407
407
  /**
@@ -3,7 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { TreeLeafValue } from "../schemaTypes.js";
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
+ import type { LazyItem } from "../flexList.js";
8
+ import type {
9
+ AllowedTypeMetadata,
10
+ AllowedTypesMetadata,
11
+ AnnotatedAllowedTypes,
12
+ ImplicitAnnotatedAllowedTypes,
13
+ TreeLeafValue,
14
+ } from "../schemaTypes.js";
7
15
  import type { SimpleNodeSchemaBase } from "../simpleSchema.js";
8
16
 
9
17
  import type { TreeNode } from "./treeNode.js";
@@ -62,6 +70,48 @@ export type TreeNodeSchema<
62
70
  TCustomMetadata
63
71
  >;
64
72
 
73
+ /**
74
+ * Stores annotations for an individual allowed type.
75
+ * @alpha
76
+ */
77
+ export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
78
+ /**
79
+ * Annotations for the allowed type.
80
+ */
81
+ readonly metadata: AllowedTypeMetadata;
82
+ /**
83
+ * The allowed type the annotations apply to in a particular schema.
84
+ */
85
+ readonly type: T;
86
+ }
87
+
88
+ /**
89
+ * Stores annotations for a set of evaluated annotated allowed types.
90
+ * @alpha
91
+ */
92
+ export interface NormalizedAnnotatedAllowedTypes {
93
+ /**
94
+ * Annotations that apply to a set of allowed types.
95
+ */
96
+ readonly metadata: AllowedTypesMetadata;
97
+ /**
98
+ * All the evaluated allowed types that the annotations apply to. The types themselves are also individually annotated.
99
+ */
100
+ readonly types: readonly AnnotatedAllowedType<TreeNodeSchema>[];
101
+ }
102
+
103
+ /**
104
+ * Checks if the input is an {@link AnnotatedAllowedTypes}.
105
+ */
106
+ export function isAnnotatedAllowedTypes(
107
+ allowedTypes: ImplicitAnnotatedAllowedTypes,
108
+ ): allowedTypes is AnnotatedAllowedTypes {
109
+ return (
110
+ // Class based schema, and lazy schema references report type "function": filtering them out with typeof makes narrowing based on members mostly safe
111
+ typeof allowedTypes === "object" && "metadata" in allowedTypes && "types" in allowedTypes
112
+ );
113
+ }
114
+
65
115
  /**
66
116
  * Schema which is not a class.
67
117
  * @remarks
@@ -231,8 +281,13 @@ export type TreeNodeSchemaBoth<
231
281
 
232
282
  /**
233
283
  * Data common to all tree node schema.
284
+ *
234
285
  * @remarks
235
286
  * Implementation detail of {@link TreeNodeSchema} which should be accessed instead of referring to this type directly.
287
+ *
288
+ * @privateRemarks
289
+ * All implementations must implement {@link TreeNodeSchemaCorePrivate} as well.
290
+ *
236
291
  * @sealed @public
237
292
  */
238
293
  export interface TreeNodeSchemaCore<
@@ -316,6 +371,63 @@ export interface TreeNodeSchemaCore<
316
371
  createFromInsertable(data: TInsertable): Unhydrated<TreeNode | TreeLeafValue>;
317
372
  }
318
373
 
374
+ /**
375
+ * {@link TreeNodeSchemaCore} extended with some non-exported APIs.
376
+ */
377
+ export interface TreeNodeSchemaCorePrivate<
378
+ Name extends string = string,
379
+ Kind extends NodeKind = NodeKind,
380
+ TInsertable = never,
381
+ ImplicitlyConstructable extends boolean = boolean,
382
+ Info = unknown,
383
+ TCustomMetadata = unknown,
384
+ > extends TreeNodeSchemaCore<
385
+ Name,
386
+ Kind,
387
+ ImplicitlyConstructable,
388
+ Info,
389
+ TInsertable,
390
+ TCustomMetadata
391
+ > {
392
+ /**
393
+ * All possible annotated allowed types that a field under a node with this schema could have.
394
+ * @remarks
395
+ * In this case "field" includes anything that is a field in the internal (flex-tree) abstraction layer.
396
+ * This includes the content field for arrays, and all the fields for map nodes.
397
+ * If this node does not have fields (and thus is a leaf), the array will be empty.
398
+ *
399
+ * This set cannot be used before the schema in it have been defined:
400
+ * more specifically, when using lazy schema references (for example to make foreword references to schema which have not yet been defined),
401
+ * users must wait until after the schema are defined to access this array.
402
+ *
403
+ * @privateRemarks
404
+ * If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
405
+ * @system
406
+ */
407
+ readonly childAnnotatedAllowedTypes: readonly NormalizedAnnotatedAllowedTypes[];
408
+ }
409
+
410
+ /**
411
+ * Downcasts a {@link TreeNodeSchemaCore} to {@link TreeNodeSchemaCorePrivate} if it is one.
412
+ *
413
+ * @remarks
414
+ * This function should only be used internally. The result should not be exposed publicly
415
+ * in any exported types or API return values.
416
+ */
417
+ export function asTreeNodeSchemaCorePrivate(
418
+ schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
419
+ ): TreeNodeSchemaCorePrivate {
420
+ assert(
421
+ "childAnnotatedAllowedTypes" in schema,
422
+ 0xbc9 /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
423
+ );
424
+ assert(
425
+ Array.isArray((schema as TreeNodeSchemaCorePrivate).childAnnotatedAllowedTypes),
426
+ 0xbca /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
427
+ );
428
+ return schema as TreeNodeSchemaCorePrivate;
429
+ }
430
+
319
431
  /**
320
432
  * Kind of tree node.
321
433
  * @remarks