@fluidframework/tree 2.4.0-294316 → 2.4.0-297027

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 (606) hide show
  1. package/api-report/tree.alpha.api.md +58 -28
  2. package/api-report/tree.beta.api.md +38 -27
  3. package/api-report/tree.legacy.alpha.api.md +38 -27
  4. package/api-report/tree.legacy.public.api.md +38 -27
  5. package/api-report/tree.public.api.md +38 -27
  6. package/dist/alpha.d.ts +6 -0
  7. package/dist/beta.d.ts +3 -0
  8. package/dist/core/schema-stored/schema.d.ts +7 -0
  9. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  10. package/dist/core/schema-stored/schema.js +9 -0
  11. package/dist/core/schema-stored/schema.js.map +1 -1
  12. package/dist/core/tree/anchorSet.d.ts +1 -2
  13. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  14. package/dist/core/tree/anchorSet.js +2 -2
  15. package/dist/core/tree/anchorSet.js.map +1 -1
  16. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  17. package/dist/core/tree/detachedFieldIndex.js +13 -2
  18. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  19. package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  20. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  21. package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
  22. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  23. package/dist/feature-libraries/editableTreeBinder.js +1 -539
  24. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  25. package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
  26. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  27. package/dist/feature-libraries/flex-tree/context.js +3 -3
  28. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  29. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  30. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  31. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  32. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  33. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  34. package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
  35. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  36. package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  37. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  38. package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
  39. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  40. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  41. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  42. package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
  43. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  45. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  46. package/dist/feature-libraries/index.d.ts +4 -7
  47. package/dist/feature-libraries/index.d.ts.map +1 -1
  48. package/dist/feature-libraries/index.js +5 -31
  49. package/dist/feature-libraries/index.js.map +1 -1
  50. package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  51. package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  52. package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  53. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
  54. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  55. package/dist/feature-libraries/typed-schema/flexList.js +1 -13
  56. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  57. package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
  58. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  59. package/dist/feature-libraries/typed-schema/index.js +1 -19
  60. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  61. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  62. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  63. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
  64. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  65. package/dist/index.d.ts +3 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/internalTypes.d.ts +1 -1
  70. package/dist/internalTypes.d.ts.map +1 -1
  71. package/dist/internalTypes.js.map +1 -1
  72. package/dist/legacy.d.ts +3 -0
  73. package/dist/packageVersion.d.ts +1 -1
  74. package/dist/packageVersion.js +1 -1
  75. package/dist/packageVersion.js.map +1 -1
  76. package/dist/public.d.ts +3 -0
  77. package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  78. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  79. package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
  80. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  81. package/dist/shared-tree/index.d.ts +3 -3
  82. package/dist/shared-tree/index.d.ts.map +1 -1
  83. package/dist/shared-tree/index.js +2 -3
  84. package/dist/shared-tree/index.js.map +1 -1
  85. package/dist/shared-tree/schematizeTree.d.ts +1 -40
  86. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  87. package/dist/shared-tree/schematizeTree.js +2 -11
  88. package/dist/shared-tree/schematizeTree.js.map +1 -1
  89. package/dist/shared-tree/schematizingTreeView.d.ts +8 -7
  90. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  91. package/dist/shared-tree/schematizingTreeView.js +16 -8
  92. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  93. package/dist/shared-tree/sharedTree.d.ts +19 -2
  94. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  95. package/dist/shared-tree/sharedTree.js +10 -2
  96. package/dist/shared-tree/sharedTree.js.map +1 -1
  97. package/dist/shared-tree/treeCheckout.d.ts +71 -41
  98. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  99. package/dist/shared-tree/treeCheckout.js +116 -84
  100. package/dist/shared-tree/treeCheckout.js.map +1 -1
  101. package/dist/shared-tree-core/branch.d.ts +8 -11
  102. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  103. package/dist/shared-tree-core/branch.js +12 -15
  104. package/dist/shared-tree-core/branch.js.map +1 -1
  105. package/dist/simple-tree/api/create.d.ts +1 -1
  106. package/dist/simple-tree/api/create.d.ts.map +1 -1
  107. package/dist/simple-tree/api/create.js +11 -13
  108. package/dist/simple-tree/api/create.js.map +1 -1
  109. package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
  110. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  111. package/dist/simple-tree/api/getJsonSchema.js +1 -1
  112. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  113. package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
  114. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  115. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  116. package/dist/simple-tree/api/index.d.ts +2 -1
  117. package/dist/simple-tree/api/index.d.ts.map +1 -1
  118. package/dist/simple-tree/api/index.js +3 -1
  119. package/dist/simple-tree/api/index.js.map +1 -1
  120. package/dist/simple-tree/api/schemaFactory.d.ts +6 -6
  121. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  122. package/dist/simple-tree/api/schemaFactory.js +15 -2
  123. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  124. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  125. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  126. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  127. package/dist/simple-tree/api/simpleSchema.d.ts +14 -10
  128. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
  129. package/dist/simple-tree/api/simpleSchema.js.map +1 -1
  130. package/dist/simple-tree/api/tree.d.ts +12 -6
  131. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  132. package/dist/simple-tree/api/tree.js +4 -4
  133. package/dist/simple-tree/api/tree.js.map +1 -1
  134. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  135. package/dist/simple-tree/api/treeNodeApi.js +8 -6
  136. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  137. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  138. package/dist/simple-tree/api/verboseTree.js +6 -10
  139. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  140. package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
  141. package/dist/simple-tree/api/view.d.ts.map +1 -0
  142. package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  143. package/dist/simple-tree/api/view.js.map +1 -0
  144. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  145. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  146. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  147. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  148. package/dist/simple-tree/arrayNode.d.ts +147 -14
  149. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  150. package/dist/simple-tree/arrayNode.js +32 -20
  151. package/dist/simple-tree/arrayNode.js.map +1 -1
  152. package/dist/simple-tree/core/context.d.ts +55 -0
  153. package/dist/simple-tree/core/context.d.ts.map +1 -0
  154. package/dist/simple-tree/core/context.js +60 -0
  155. package/dist/simple-tree/core/context.js.map +1 -0
  156. package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
  157. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  158. package/dist/simple-tree/core/getOrCreateNode.js +36 -0
  159. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
  160. package/dist/simple-tree/core/index.d.ts +7 -3
  161. package/dist/simple-tree/core/index.d.ts.map +1 -1
  162. package/dist/simple-tree/core/index.js +16 -7
  163. package/dist/simple-tree/core/index.js.map +1 -1
  164. package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
  165. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  166. package/dist/simple-tree/core/schemaCaching.js +16 -45
  167. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  168. package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
  169. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  170. package/dist/simple-tree/core/treeNodeKernel.js +94 -58
  171. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  172. package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
  173. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  174. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  175. package/dist/simple-tree/core/types.d.ts +0 -5
  176. package/dist/simple-tree/core/types.d.ts.map +1 -1
  177. package/dist/simple-tree/core/types.js.map +1 -1
  178. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  179. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  180. package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
  181. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  182. package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  183. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
  184. package/dist/simple-tree/core/walkSchema.js +34 -0
  185. package/dist/simple-tree/core/walkSchema.js.map +1 -0
  186. package/dist/simple-tree/createContext.d.ts +11 -0
  187. package/dist/simple-tree/createContext.d.ts.map +1 -0
  188. package/dist/simple-tree/createContext.js +25 -0
  189. package/dist/simple-tree/createContext.js.map +1 -0
  190. package/dist/simple-tree/index.d.ts +3 -4
  191. package/dist/simple-tree/index.d.ts.map +1 -1
  192. package/dist/simple-tree/index.js +7 -7
  193. package/dist/simple-tree/index.js.map +1 -1
  194. package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
  195. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  196. package/dist/simple-tree/leafNodeSchema.js +1 -2
  197. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  198. package/dist/simple-tree/mapNode.d.ts +4 -4
  199. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  200. package/dist/simple-tree/mapNode.js +9 -5
  201. package/dist/simple-tree/mapNode.js.map +1 -1
  202. package/dist/simple-tree/objectNode.d.ts +8 -8
  203. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  204. package/dist/simple-tree/objectNode.js +33 -14
  205. package/dist/simple-tree/objectNode.js.map +1 -1
  206. package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
  207. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  208. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  209. package/dist/simple-tree/proxies.d.ts +1 -2
  210. package/dist/simple-tree/proxies.d.ts.map +1 -1
  211. package/dist/simple-tree/proxies.js +6 -22
  212. package/dist/simple-tree/proxies.js.map +1 -1
  213. package/dist/simple-tree/schemaTypes.d.ts +2 -2
  214. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  215. package/dist/simple-tree/schemaTypes.js.map +1 -1
  216. package/dist/simple-tree/toFlexSchema.d.ts +6 -36
  217. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  218. package/dist/simple-tree/toFlexSchema.js +58 -142
  219. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  220. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  221. package/dist/simple-tree/toMapTree.js +2 -2
  222. package/dist/simple-tree/toMapTree.js.map +1 -1
  223. package/dist/simple-tree/treeNodeValid.d.ts +13 -5
  224. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  225. package/dist/simple-tree/treeNodeValid.js +19 -10
  226. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  227. package/dist/simple-tree/typesUnsafe.d.ts +4 -4
  228. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  229. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  230. package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
  231. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
  232. package/dist/simple-tree/walkFieldSchema.js +17 -0
  233. package/dist/simple-tree/walkFieldSchema.js.map +1 -0
  234. package/dist/util/index.d.ts +1 -1
  235. package/dist/util/index.d.ts.map +1 -1
  236. package/dist/util/index.js.map +1 -1
  237. package/dist/util/typeUtils.d.ts +14 -45
  238. package/dist/util/typeUtils.d.ts.map +1 -1
  239. package/dist/util/typeUtils.js.map +1 -1
  240. package/lib/alpha.d.ts +6 -0
  241. package/lib/beta.d.ts +3 -0
  242. package/lib/core/schema-stored/schema.d.ts +7 -0
  243. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  244. package/lib/core/schema-stored/schema.js +9 -0
  245. package/lib/core/schema-stored/schema.js.map +1 -1
  246. package/lib/core/tree/anchorSet.d.ts +1 -2
  247. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  248. package/lib/core/tree/anchorSet.js +2 -2
  249. package/lib/core/tree/anchorSet.js.map +1 -1
  250. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  251. package/lib/core/tree/detachedFieldIndex.js +13 -2
  252. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  253. package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  254. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  255. package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
  256. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  257. package/lib/feature-libraries/editableTreeBinder.js +1 -532
  258. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  259. package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
  260. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  261. package/lib/feature-libraries/flex-tree/context.js +3 -3
  262. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  263. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  264. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  265. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  266. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  267. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  268. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
  269. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  270. package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  271. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  272. package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
  273. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  274. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  275. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  276. package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
  277. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  278. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  279. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  280. package/lib/feature-libraries/index.d.ts +4 -7
  281. package/lib/feature-libraries/index.d.ts.map +1 -1
  282. package/lib/feature-libraries/index.js +4 -6
  283. package/lib/feature-libraries/index.js.map +1 -1
  284. package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  285. package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  286. package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  287. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
  288. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  289. package/lib/feature-libraries/typed-schema/flexList.js +0 -11
  290. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  291. package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
  292. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  293. package/lib/feature-libraries/typed-schema/index.js +0 -3
  294. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  295. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  296. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  297. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
  298. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  299. package/lib/index.d.ts +3 -3
  300. package/lib/index.d.ts.map +1 -1
  301. package/lib/index.js +1 -1
  302. package/lib/index.js.map +1 -1
  303. package/lib/internalTypes.d.ts +1 -1
  304. package/lib/internalTypes.d.ts.map +1 -1
  305. package/lib/internalTypes.js.map +1 -1
  306. package/lib/legacy.d.ts +3 -0
  307. package/lib/packageVersion.d.ts +1 -1
  308. package/lib/packageVersion.js +1 -1
  309. package/lib/packageVersion.js.map +1 -1
  310. package/lib/public.d.ts +3 -0
  311. package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  312. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  313. package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
  314. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  315. package/lib/shared-tree/index.d.ts +3 -3
  316. package/lib/shared-tree/index.d.ts.map +1 -1
  317. package/lib/shared-tree/index.js +1 -2
  318. package/lib/shared-tree/index.js.map +1 -1
  319. package/lib/shared-tree/schematizeTree.d.ts +1 -40
  320. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  321. package/lib/shared-tree/schematizeTree.js +1 -9
  322. package/lib/shared-tree/schematizeTree.js.map +1 -1
  323. package/lib/shared-tree/schematizingTreeView.d.ts +8 -7
  324. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  325. package/lib/shared-tree/schematizingTreeView.js +19 -11
  326. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  327. package/lib/shared-tree/sharedTree.d.ts +19 -2
  328. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  329. package/lib/shared-tree/sharedTree.js +10 -3
  330. package/lib/shared-tree/sharedTree.js.map +1 -1
  331. package/lib/shared-tree/treeCheckout.d.ts +71 -41
  332. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  333. package/lib/shared-tree/treeCheckout.js +118 -86
  334. package/lib/shared-tree/treeCheckout.js.map +1 -1
  335. package/lib/shared-tree-core/branch.d.ts +8 -11
  336. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  337. package/lib/shared-tree-core/branch.js +12 -15
  338. package/lib/shared-tree-core/branch.js.map +1 -1
  339. package/lib/simple-tree/api/create.d.ts +1 -1
  340. package/lib/simple-tree/api/create.d.ts.map +1 -1
  341. package/lib/simple-tree/api/create.js +14 -16
  342. package/lib/simple-tree/api/create.js.map +1 -1
  343. package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
  344. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  345. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  346. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  347. package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
  348. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  349. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  350. package/lib/simple-tree/api/index.d.ts +2 -1
  351. package/lib/simple-tree/api/index.d.ts.map +1 -1
  352. package/lib/simple-tree/api/index.js +1 -0
  353. package/lib/simple-tree/api/index.js.map +1 -1
  354. package/lib/simple-tree/api/schemaFactory.d.ts +6 -6
  355. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  356. package/lib/simple-tree/api/schemaFactory.js +15 -2
  357. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  358. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  359. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  360. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  361. package/lib/simple-tree/api/simpleSchema.d.ts +14 -10
  362. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
  363. package/lib/simple-tree/api/simpleSchema.js.map +1 -1
  364. package/lib/simple-tree/api/tree.d.ts +12 -6
  365. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  366. package/lib/simple-tree/api/tree.js +4 -4
  367. package/lib/simple-tree/api/tree.js.map +1 -1
  368. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  369. package/lib/simple-tree/api/treeNodeApi.js +10 -8
  370. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  371. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  372. package/lib/simple-tree/api/verboseTree.js +6 -10
  373. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  374. package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
  375. package/lib/simple-tree/api/view.d.ts.map +1 -0
  376. package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  377. package/lib/simple-tree/api/view.js.map +1 -0
  378. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  379. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  380. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  381. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  382. package/lib/simple-tree/arrayNode.d.ts +147 -14
  383. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  384. package/lib/simple-tree/arrayNode.js +37 -25
  385. package/lib/simple-tree/arrayNode.js.map +1 -1
  386. package/lib/simple-tree/core/context.d.ts +55 -0
  387. package/lib/simple-tree/core/context.d.ts.map +1 -0
  388. package/lib/simple-tree/core/context.js +55 -0
  389. package/lib/simple-tree/core/context.js.map +1 -0
  390. package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
  391. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  392. package/lib/simple-tree/core/getOrCreateNode.js +32 -0
  393. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
  394. package/lib/simple-tree/core/index.d.ts +7 -3
  395. package/lib/simple-tree/core/index.d.ts.map +1 -1
  396. package/lib/simple-tree/core/index.js +6 -2
  397. package/lib/simple-tree/core/index.js.map +1 -1
  398. package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
  399. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  400. package/lib/simple-tree/core/schemaCaching.js +13 -39
  401. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  402. package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
  403. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  404. package/lib/simple-tree/core/treeNodeKernel.js +89 -54
  405. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  406. package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
  407. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  408. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  409. package/lib/simple-tree/core/types.d.ts +0 -5
  410. package/lib/simple-tree/core/types.d.ts.map +1 -1
  411. package/lib/simple-tree/core/types.js.map +1 -1
  412. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  413. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  414. package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
  415. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  416. package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  417. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
  418. package/lib/simple-tree/core/walkSchema.js +29 -0
  419. package/lib/simple-tree/core/walkSchema.js.map +1 -0
  420. package/lib/simple-tree/createContext.d.ts +11 -0
  421. package/lib/simple-tree/createContext.d.ts.map +1 -0
  422. package/lib/simple-tree/createContext.js +21 -0
  423. package/lib/simple-tree/createContext.js.map +1 -0
  424. package/lib/simple-tree/index.d.ts +3 -4
  425. package/lib/simple-tree/index.d.ts.map +1 -1
  426. package/lib/simple-tree/index.js +3 -4
  427. package/lib/simple-tree/index.js.map +1 -1
  428. package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
  429. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  430. package/lib/simple-tree/leafNodeSchema.js +3 -4
  431. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  432. package/lib/simple-tree/mapNode.d.ts +4 -4
  433. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  434. package/lib/simple-tree/mapNode.js +12 -8
  435. package/lib/simple-tree/mapNode.js.map +1 -1
  436. package/lib/simple-tree/objectNode.d.ts +8 -8
  437. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  438. package/lib/simple-tree/objectNode.js +36 -17
  439. package/lib/simple-tree/objectNode.js.map +1 -1
  440. package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
  441. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  442. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  443. package/lib/simple-tree/proxies.d.ts +1 -2
  444. package/lib/simple-tree/proxies.d.ts.map +1 -1
  445. package/lib/simple-tree/proxies.js +7 -22
  446. package/lib/simple-tree/proxies.js.map +1 -1
  447. package/lib/simple-tree/schemaTypes.d.ts +2 -2
  448. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  449. package/lib/simple-tree/schemaTypes.js.map +1 -1
  450. package/lib/simple-tree/toFlexSchema.d.ts +6 -36
  451. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  452. package/lib/simple-tree/toFlexSchema.js +61 -142
  453. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  454. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  455. package/lib/simple-tree/toMapTree.js +4 -4
  456. package/lib/simple-tree/toMapTree.js.map +1 -1
  457. package/lib/simple-tree/treeNodeValid.d.ts +13 -5
  458. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  459. package/lib/simple-tree/treeNodeValid.js +21 -12
  460. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  461. package/lib/simple-tree/typesUnsafe.d.ts +4 -4
  462. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  463. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  464. package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
  465. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
  466. package/lib/simple-tree/walkFieldSchema.js +13 -0
  467. package/lib/simple-tree/walkFieldSchema.js.map +1 -0
  468. package/lib/util/index.d.ts +1 -1
  469. package/lib/util/index.d.ts.map +1 -1
  470. package/lib/util/index.js.map +1 -1
  471. package/lib/util/typeUtils.d.ts +14 -45
  472. package/lib/util/typeUtils.d.ts.map +1 -1
  473. package/lib/util/typeUtils.js.map +1 -1
  474. package/package.json +29 -20
  475. package/src/core/schema-stored/schema.ts +17 -0
  476. package/src/core/tree/anchorSet.ts +3 -4
  477. package/src/core/tree/detachedFieldIndex.ts +14 -3
  478. package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
  479. package/src/feature-libraries/editableTreeBinder.ts +2 -915
  480. package/src/feature-libraries/flex-tree/context.ts +7 -20
  481. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
  482. package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
  483. package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
  484. package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
  485. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  486. package/src/feature-libraries/index.ts +3 -71
  487. package/src/feature-libraries/typed-schema/flexList.ts +3 -84
  488. package/src/feature-libraries/typed-schema/index.ts +1 -33
  489. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
  490. package/src/index.ts +6 -0
  491. package/src/internalTypes.ts +0 -1
  492. package/src/packageVersion.ts +1 -1
  493. package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
  494. package/src/shared-tree/index.ts +4 -8
  495. package/src/shared-tree/schematizeTree.ts +2 -56
  496. package/src/shared-tree/schematizingTreeView.ts +34 -15
  497. package/src/shared-tree/sharedTree.ts +36 -8
  498. package/src/shared-tree/treeCheckout.ts +225 -128
  499. package/src/shared-tree-core/branch.ts +15 -26
  500. package/src/simple-tree/api/create.ts +18 -20
  501. package/src/simple-tree/api/getJsonSchema.ts +3 -3
  502. package/src/simple-tree/api/getSimpleSchema.ts +2 -2
  503. package/src/simple-tree/api/index.ts +2 -0
  504. package/src/simple-tree/api/schemaFactory.ts +41 -12
  505. package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
  506. package/src/simple-tree/api/simpleSchema.ts +15 -10
  507. package/src/simple-tree/api/tree.ts +15 -9
  508. package/src/simple-tree/api/treeNodeApi.ts +12 -10
  509. package/src/simple-tree/api/verboseTree.ts +6 -12
  510. package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
  511. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +11 -2
  512. package/src/simple-tree/arrayNode.ts +202 -53
  513. package/src/simple-tree/core/context.ts +78 -0
  514. package/src/simple-tree/core/getOrCreateNode.ts +38 -0
  515. package/src/simple-tree/core/index.ts +11 -7
  516. package/src/simple-tree/core/schemaCaching.ts +13 -50
  517. package/src/simple-tree/core/treeNodeKernel.ts +117 -78
  518. package/src/simple-tree/core/treeNodeSchema.ts +35 -1
  519. package/src/simple-tree/core/types.ts +0 -5
  520. package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
  521. package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
  522. package/src/simple-tree/createContext.ts +24 -0
  523. package/src/simple-tree/index.ts +5 -2
  524. package/src/simple-tree/leafNodeSchema.ts +3 -9
  525. package/src/simple-tree/mapNode.ts +20 -17
  526. package/src/simple-tree/objectNode.ts +63 -38
  527. package/src/simple-tree/objectNodeTypes.ts +8 -5
  528. package/src/simple-tree/proxies.ts +8 -26
  529. package/src/simple-tree/schemaTypes.ts +2 -2
  530. package/src/simple-tree/toFlexSchema.ts +71 -204
  531. package/src/simple-tree/toMapTree.ts +5 -5
  532. package/src/simple-tree/treeNodeValid.ts +28 -22
  533. package/src/simple-tree/typesUnsafe.ts +4 -4
  534. package/src/simple-tree/walkFieldSchema.ts +19 -0
  535. package/src/util/index.ts +1 -5
  536. package/src/util/typeUtils.ts +14 -56
  537. package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
  538. package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
  539. package/dist/feature-libraries/fieldGenerator.js +0 -13
  540. package/dist/feature-libraries/fieldGenerator.js.map +0 -1
  541. package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
  542. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  543. package/dist/feature-libraries/flex-map-tree/index.js +0 -14
  544. package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
  545. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  546. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  547. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  548. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
  549. package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  550. package/dist/feature-libraries/storedToViewSchema.js +0 -67
  551. package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
  552. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  553. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  554. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
  555. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  556. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  557. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  558. package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
  559. package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  560. package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
  561. package/dist/feature-libraries/typed-schema/view.js.map +0 -1
  562. package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  563. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  564. package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
  565. package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
  566. package/dist/simple-tree/walkSchema.d.ts.map +0 -1
  567. package/dist/simple-tree/walkSchema.js +0 -49
  568. package/dist/simple-tree/walkSchema.js.map +0 -1
  569. package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
  570. package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
  571. package/lib/feature-libraries/fieldGenerator.js +0 -12
  572. package/lib/feature-libraries/fieldGenerator.js.map +0 -1
  573. package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
  574. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  575. package/lib/feature-libraries/flex-map-tree/index.js +0 -6
  576. package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
  577. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  578. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  579. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  580. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
  581. package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  582. package/lib/feature-libraries/storedToViewSchema.js +0 -62
  583. package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
  584. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  585. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  586. package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
  587. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  588. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  589. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  590. package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
  591. package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  592. package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
  593. package/lib/feature-libraries/typed-schema/view.js.map +0 -1
  594. package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  595. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  596. package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
  597. package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
  598. package/lib/simple-tree/walkSchema.d.ts.map +0 -1
  599. package/lib/simple-tree/walkSchema.js +0 -43
  600. package/lib/simple-tree/walkSchema.js.map +0 -1
  601. package/src/feature-libraries/fieldGenerator.ts +0 -47
  602. package/src/feature-libraries/flex-map-tree/index.ts +0 -14
  603. package/src/feature-libraries/storedToViewSchema.ts +0 -100
  604. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
  605. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
  606. package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
@@ -7,7 +7,6 @@ import type { IFluidHandle } from "@fluidframework/core-interfaces";
7
7
  import { assert } from "@fluidframework/core-utils/internal";
8
8
 
9
9
  import type { ITreeCursorSynchronous, SchemaAndPolicy } from "../../core/index.js";
10
- import { fail } from "../../util/index.js";
11
10
  import type {
12
11
  TreeLeafValue,
13
12
  ImplicitFieldSchema,
@@ -16,19 +15,20 @@ import type {
16
15
  FieldSchema,
17
16
  FieldKind,
18
17
  } from "../schemaTypes.js";
19
- import type { Unhydrated } from "../core/index.js";
18
+ import {
19
+ getOrCreateNodeFromInnerNode,
20
+ UnhydratedFlexTreeNode,
21
+ type Unhydrated,
22
+ } from "../core/index.js";
20
23
  import {
21
24
  cursorForMapTreeNode,
22
25
  defaultSchemaPolicy,
23
26
  FieldKinds,
24
- intoStoredSchema,
25
27
  mapTreeFromCursor,
26
- UnhydratedContext,
27
28
  type NodeKeyManager,
28
29
  } from "../../feature-libraries/index.js";
29
- import { getOrCreateNodeFromFlexTreeNode } from "../proxies.js";
30
- import { getOrCreateMapTreeNode, isFieldInSchema } from "../../feature-libraries/index.js";
31
- import { toFlexSchema } from "../toFlexSchema.js";
30
+ import { isFieldInSchema } from "../../feature-libraries/index.js";
31
+ import { toStoredSchema } from "../toFlexSchema.js";
32
32
  import { inSchemaOrThrow, mapTreeFromNodeData, type InsertableContent } from "../toMapTree.js";
33
33
  import {
34
34
  applySchemaToParserOptions,
@@ -37,6 +37,7 @@ import {
37
37
  type VerboseTree,
38
38
  type VerboseTreeNode,
39
39
  } from "./verboseTree.js";
40
+ import { getUnhydratedContext } from "../createContext.js";
40
41
 
41
42
  /**
42
43
  * Construct tree content that is compatible with the field defined by the provided `schema`.
@@ -78,11 +79,11 @@ export function cursorFromInsertable<TSchema extends ImplicitFieldSchema>(
78
79
  ):
79
80
  | ITreeCursorSynchronous
80
81
  | (TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never) {
81
- const flexSchema = toFlexSchema(schema);
82
+ const storedSchema = toStoredSchema(schema);
82
83
  const schemaValidationPolicy: SchemaAndPolicy = {
83
84
  policy: defaultSchemaPolicy,
84
85
  // TODO: optimize: This isn't the most efficient operation since its not cached, and has to convert all the schema.
85
- schema: intoStoredSchema(flexSchema),
86
+ schema: storedSchema,
86
87
  };
87
88
 
88
89
  const mapTree = mapTreeFromNodeData(
@@ -93,7 +94,7 @@ export function cursorFromInsertable<TSchema extends ImplicitFieldSchema>(
93
94
  );
94
95
  if (mapTree === undefined) {
95
96
  assert(
96
- flexSchema.rootFieldSchema.kind === FieldKinds.optional,
97
+ storedSchema.rootFieldSchema.kind === FieldKinds.optional.identifier,
97
98
  0xa10 /* missing non-optional field */,
98
99
  );
99
100
  return undefined as TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never;
@@ -149,17 +150,17 @@ export function createFromCursor<TSchema extends ImplicitFieldSchema>(
149
150
  cursor: ITreeCursorSynchronous | undefined,
150
151
  ): Unhydrated<TreeFieldFromImplicitField<TSchema>> {
151
152
  const mapTrees = cursor === undefined ? [] : [mapTreeFromCursor(cursor)];
152
- const flexSchema = toFlexSchema(schema);
153
+ const context = getUnhydratedContext(schema);
154
+ const flexSchema = context.flexContext.schema;
153
155
 
154
156
  const schemaValidationPolicy: SchemaAndPolicy = {
155
157
  policy: defaultSchemaPolicy,
156
- // TODO: optimize: This isn't the most efficient operation since its not cached, and has to convert all the schema.
157
- schema: intoStoredSchema(flexSchema),
158
+ schema: context.flexContext.schema,
158
159
  };
159
160
 
160
161
  const maybeError = isFieldInSchema(
161
162
  mapTrees,
162
- flexSchema.rootFieldSchema.stored,
163
+ flexSchema.rootFieldSchema,
163
164
  schemaValidationPolicy,
164
165
  );
165
166
  inSchemaOrThrow(maybeError);
@@ -171,14 +172,11 @@ export function createFromCursor<TSchema extends ImplicitFieldSchema>(
171
172
  // Length asserted above, so this is safe. This assert is done instead of checking for undefined after indexing to ensure a length greater than 1 also errors.
172
173
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
174
  const mapTree = mapTrees[0]!;
174
- const rootSchema = flexSchema.nodeSchema.get(mapTree.type) ?? fail("missing schema");
175
- const mapTreeNode = getOrCreateMapTreeNode(
176
- new UnhydratedContext(flexSchema),
177
- rootSchema,
175
+ const mapTreeNode = UnhydratedFlexTreeNode.getOrCreate(
176
+ getUnhydratedContext(schema),
178
177
  mapTree,
179
178
  );
180
179
 
181
- // TODO: ensure this works for InnerNodes to create unhydrated nodes
182
- const result = getOrCreateNodeFromFlexTreeNode(mapTreeNode);
180
+ const result = getOrCreateNodeFromInnerNode(mapTreeNode);
183
181
  return result as Unhydrated<TreeFieldFromImplicitField<TSchema>>;
184
182
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { JsonTreeSchema } from "./jsonSchema.js";
7
- import type { ImplicitAllowedTypes } from "../schemaTypes.js";
7
+ import type { ImplicitFieldSchema } from "../schemaTypes.js";
8
8
  import { toJsonSchema } from "./simpleSchemaToJsonSchema.js";
9
9
  import { getSimpleSchema } from "./getSimpleSchema.js";
10
10
  import { getOrCreate } from "../../util/index.js";
@@ -53,7 +53,7 @@ const jsonSchemaCache = new WeakMap<TreeNodeSchema, JsonTreeSchema>();
53
53
  * "required": ["foo"],
54
54
  * },
55
55
  * },
56
- * "anyOf": [ { "$ref": "#/$defs/com.myapp.MyObject" } ],
56
+ * "$ref": "#/$defs/com.myapp.MyObject",
57
57
  * }
58
58
  * ```
59
59
  *
@@ -62,7 +62,7 @@ const jsonSchemaCache = new WeakMap<TreeNodeSchema, JsonTreeSchema>();
62
62
  *
63
63
  * @alpha
64
64
  */
65
- export function getJsonSchema(schema: ImplicitAllowedTypes): JsonTreeSchema {
65
+ export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema {
66
66
  return getOrCreate(jsonSchemaCache, schema, () => {
67
67
  const simpleSchema = getSimpleSchema(schema);
68
68
  return toJsonSchema(simpleSchema);
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { getOrCreate } from "../../util/index.js";
7
7
  import type { TreeNodeSchema } from "../core/index.js";
8
- import type { ImplicitAllowedTypes } from "../schemaTypes.js";
8
+ import type { ImplicitFieldSchema } from "../schemaTypes.js";
9
9
  import type { SimpleTreeSchema } from "./simpleSchema.js";
10
10
  import { toSimpleTreeSchema } from "./viewSchemaToSimpleSchema.js";
11
11
 
@@ -64,6 +64,6 @@ const simpleSchemaCache = new WeakMap<TreeNodeSchema, SimpleTreeSchema>();
64
64
  * @privateRemarks In the future, we may wish to move this to a more discoverable API location.
65
65
  * For now, while still an experimental API, it is surfaced as a free function.
66
66
  */
67
- export function getSimpleSchema(schema: ImplicitAllowedTypes): SimpleTreeSchema {
67
+ export function getSimpleSchema(schema: ImplicitFieldSchema): SimpleTreeSchema {
68
68
  return getOrCreate(simpleSchemaCache, schema, () => toSimpleTreeSchema(schema));
69
69
  }
@@ -6,6 +6,7 @@
6
6
  export {
7
7
  type ITree,
8
8
  type TreeView,
9
+ type ViewableTree,
9
10
  type TreeViewEvents,
10
11
  TreeViewConfiguration,
11
12
  type ITreeViewConfiguration,
@@ -44,6 +45,7 @@ export {
44
45
  } from "./jsonSchema.js";
45
46
  export { getJsonSchema } from "./getJsonSchema.js";
46
47
  export { getSimpleSchema } from "./getSimpleSchema.js";
48
+ export { ViewSchema } from "./view.js";
47
49
 
48
50
  export { TreeBeta, type NodeChangedData, type TreeChangeEventsBeta } from "./treeApiBeta.js";
49
51
 
@@ -18,7 +18,7 @@ import {
18
18
  isLazy,
19
19
  } from "../../feature-libraries/index.js";
20
20
  import {
21
- type RestrictiveReadonlyRecord,
21
+ type RestrictiveStringRecord,
22
22
  getOrCreate,
23
23
  isReadonlyArray,
24
24
  } from "../../util/index.js";
@@ -48,6 +48,8 @@ import type {
48
48
  WithType,
49
49
  TreeNodeSchema,
50
50
  TreeNodeSchemaClass,
51
+ TreeNodeSchemaNonClass,
52
+ TreeNodeSchemaBoth,
51
53
  } from "../core/index.js";
52
54
  import { type TreeArrayNode, arraySchema } from "../arrayNode.js";
53
55
  import {
@@ -291,7 +293,7 @@ export class SchemaFactory<
291
293
  */
292
294
  public object<
293
295
  const Name extends TName,
294
- const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
296
+ const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
295
297
  >(
296
298
  name: Name,
297
299
  fields: T,
@@ -331,7 +333,7 @@ export class SchemaFactory<
331
333
  */
332
334
  public map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(
333
335
  allowedTypes: T,
334
- ): TreeNodeSchema<
336
+ ): TreeNodeSchemaNonClass<
335
337
  ScopedSchemaName<TScope, `Map<${string}>`>,
336
338
  NodeKind.Map,
337
339
  TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>,
@@ -362,6 +364,12 @@ export class SchemaFactory<
362
364
  T
363
365
  >;
364
366
 
367
+ /**
368
+ * @privateRemarks
369
+ * This should return `TreeNodeSchemaBoth`, however TypeScript gives an error if one of the overloads implicitly up-casts the return type of the implementation.
370
+ * This seems like a TypeScript bug getting variance backwards for overload return types since it's erroring when the relation between the overload
371
+ * and the implementation is type safe, and forcing an unsafe typing instead.
372
+ */
365
373
  public map<const T extends ImplicitAllowedTypes>(
366
374
  nameOrAllowedTypes: TName | ((T & TreeNodeSchema) | readonly TreeNodeSchema[]),
367
375
  allowedTypes?: T,
@@ -379,7 +387,7 @@ export class SchemaFactory<
379
387
  false,
380
388
  true,
381
389
  ) as TreeNodeSchema,
382
- ) as TreeNodeSchemaClass<
390
+ ) as TreeNodeSchemaBoth<
383
391
  string,
384
392
  NodeKind.Map,
385
393
  TreeMapNode<T>,
@@ -388,7 +396,16 @@ export class SchemaFactory<
388
396
  T
389
397
  >;
390
398
  }
391
- return this.namedMap(nameOrAllowedTypes as TName, allowedTypes, true, true);
399
+ // To actually have type safety, assign to the type this method should return before implicitly upcasting when returning.
400
+ const out: TreeNodeSchemaBoth<
401
+ string,
402
+ NodeKind.Map,
403
+ TreeMapNode<T>,
404
+ MapNodeInsertableData<T>,
405
+ true,
406
+ T
407
+ > = this.namedMap(nameOrAllowedTypes as TName, allowedTypes, true, true);
408
+ return out;
392
409
  }
393
410
 
394
411
  /**
@@ -405,7 +422,7 @@ export class SchemaFactory<
405
422
  allowedTypes: T,
406
423
  customizable: boolean,
407
424
  implicitlyConstructable: ImplicitlyConstructable,
408
- ): TreeNodeSchemaClass<
425
+ ): TreeNodeSchemaBoth<
409
426
  ScopedSchemaName<TScope, Name>,
410
427
  NodeKind.Map,
411
428
  TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>,
@@ -457,7 +474,7 @@ export class SchemaFactory<
457
474
  */
458
475
  public array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(
459
476
  allowedTypes: T,
460
- ): TreeNodeSchema<
477
+ ): TreeNodeSchemaNonClass<
461
478
  ScopedSchemaName<TScope, `Array<${string}>`>,
462
479
  NodeKind.Array,
463
480
  TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>,
@@ -490,6 +507,10 @@ export class SchemaFactory<
490
507
  T
491
508
  >;
492
509
 
510
+ /**
511
+ * @privateRemarks
512
+ * This should return TreeNodeSchemaBoth: see note on "map" implementation for details.
513
+ */
493
514
  public array<const T extends ImplicitAllowedTypes>(
494
515
  nameOrAllowedTypes: TName | ((T & TreeNodeSchema) | readonly TreeNodeSchema[]),
495
516
  allowedTypes?: T,
@@ -515,7 +536,15 @@ export class SchemaFactory<
515
536
  T
516
537
  >;
517
538
  }
518
- return this.namedArray(nameOrAllowedTypes as TName, allowedTypes, true, true);
539
+ const out: TreeNodeSchemaBoth<
540
+ ScopedSchemaName<TScope, string>,
541
+ NodeKind.Array,
542
+ TreeArrayNode<T>,
543
+ Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
544
+ true,
545
+ T
546
+ > = this.namedArray(nameOrAllowedTypes as TName, allowedTypes, true, true);
547
+ return out;
519
548
  }
520
549
 
521
550
  /**
@@ -536,7 +565,7 @@ export class SchemaFactory<
536
565
  allowedTypes: T,
537
566
  customizable: boolean,
538
567
  implicitlyConstructable: ImplicitlyConstructable,
539
- ): TreeNodeSchemaClass<
568
+ ): TreeNodeSchemaBoth<
540
569
  ScopedSchemaName<TScope, Name>,
541
570
  NodeKind.Array,
542
571
  TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, string>, NodeKind.Array>,
@@ -662,12 +691,12 @@ export class SchemaFactory<
662
691
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
663
692
  public objectRecursive<
664
693
  const Name extends TName,
665
- const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>,
694
+ const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>,
666
695
  >(name: Name, t: T) {
667
696
  type TScopedName = ScopedSchemaName<TScope, Name>;
668
697
  return this.object(
669
698
  name,
670
- t as T & RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
699
+ t as T & RestrictiveStringRecord<ImplicitFieldSchema>,
671
700
  ) as unknown as TreeNodeSchemaClass<
672
701
  TScopedName,
673
702
  NodeKind.Object,
@@ -760,7 +789,7 @@ export class SchemaFactory<
760
789
  >;
761
790
  },
762
791
  // Ideally this would be included, but doing so breaks recursive types.
763
- // | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>,
792
+ // | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>,
764
793
  false,
765
794
  T
766
795
  >;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { Unenforced } from "../../feature-libraries/index.js";
7
- import type { RestrictiveReadonlyRecord } from "../../util/index.js";
7
+ import type { RestrictiveStringRecord } from "../../util/index.js";
8
8
  import type { InsertableObjectFromSchemaRecord } from "../objectNode.js";
9
9
 
10
10
  import {
@@ -131,10 +131,7 @@ export type ValidateRecursiveSchema<
131
131
  // TInsertable: What can be passed to the constructor. This should be enough to catch most issues with incorrect schema.
132
132
  // These match whats defined in the recursive methods on `SchemaFactory` except they do not use `Unenforced`.
133
133
  {
134
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<
135
- string,
136
- ImplicitFieldSchema
137
- >
134
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema>
138
135
  ? InsertableObjectFromSchemaRecord<T["info"]>
139
136
  : unknown;
140
137
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes
@@ -148,7 +145,7 @@ export type ValidateRecursiveSchema<
148
145
  false,
149
146
  // Info: What's passed to the method to create the schema. Constraining these here should be about as effective as if the actual constraints existed on the actual method itself.
150
147
  {
151
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
148
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
152
149
  [NodeKind.Array]: ImplicitAllowedTypes;
153
150
  [NodeKind.Map]: ImplicitAllowedTypes;
154
151
  }[T["kind"]]
@@ -99,7 +99,7 @@ export type SimpleNodeSchema =
99
99
  */
100
100
  export interface SimpleFieldSchema {
101
101
  /**
102
- * The kind of object field.
102
+ * The kind of tree field.
103
103
  */
104
104
  readonly kind: FieldKind;
105
105
 
@@ -120,24 +120,29 @@ export interface SimpleFieldSchema {
120
120
  /**
121
121
  * A simplified representation of a schema for a tree.
122
122
  *
123
- * @remarks Contains the complete set of schema {@link SimpleTreeSchema.definitions} required to resolve references
124
- * by schema identifier.
123
+ * @remarks Contains the complete set of schema {@link SimpleTreeSchema.definitions} required to resolve references,
124
+ * which are represented inline with identifiers.
125
125
  *
126
126
  * @sealed
127
127
  */
128
- export interface SimpleTreeSchema {
128
+ export interface SimpleTreeSchema extends SimpleFieldSchema {
129
129
  /**
130
- * The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.allowedTypes}.
131
- *
132
- * @remarks the keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
130
+ * The kind of tree field representing the root of the tree.
133
131
  */
134
- readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;
132
+ readonly kind: FieldKind;
135
133
 
136
134
  /**
137
- * The types allowed under the root of the tree.
135
+ * The types allowed under the tree root.
138
136
  *
139
137
  * @remarks Refers to the types by identifier.
140
- * {@link SimpleTreeSchema.definitions} can be used to resolve these identifiers to their associated schema definition.
138
+ * Can be resolved via {@link SimpleTreeSchema.definitions}.
141
139
  */
142
140
  readonly allowedTypes: ReadonlySet<string>;
141
+
142
+ /**
143
+ * The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.allowedTypes}.
144
+ *
145
+ * @remarks the keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
146
+ */
147
+ readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;
143
148
  }
@@ -16,21 +16,19 @@ import {
16
16
  FieldKind,
17
17
  } from "../schemaTypes.js";
18
18
  import { NodeKind, type TreeNodeSchema } from "../core/index.js";
19
- import { toFlexSchema } from "../toFlexSchema.js";
19
+ import { toStoredSchema } from "../toFlexSchema.js";
20
20
  import { LeafNodeSchema } from "../leafNodeSchema.js";
21
21
  import { assert } from "@fluidframework/core-utils/internal";
22
22
  import { isObjectNodeSchema, type ObjectNodeSchema } from "../objectNodeTypes.js";
23
23
  import { markSchemaMostDerived } from "./schemaFactory.js";
24
24
  import { fail, getOrCreate } from "../../util/index.js";
25
25
  import type { MakeNominal } from "../../util/index.js";
26
- import { walkFieldSchema } from "../walkSchema.js";
26
+ import { walkFieldSchema } from "../walkFieldSchema.js";
27
27
  /**
28
- * Channel for a Fluid Tree DDS.
29
- * @remarks
30
- * Allows storing and collaboratively editing schema-aware hierarchial data.
31
- * @sealed @public
28
+ * A tree from which a {@link TreeView} can be created.
29
+ * @system @sealed @public
32
30
  */
33
- export interface ITree extends IFluidLoadable {
31
+ export interface ViewableTree {
34
32
  /**
35
33
  * Returns a {@link TreeView} using the provided schema.
36
34
  * If the stored schema is compatible with the view schema specified by `config`,
@@ -68,6 +66,14 @@ export interface ITree extends IFluidLoadable {
68
66
  ): TreeView<TRoot>;
69
67
  }
70
68
 
69
+ /**
70
+ * Channel for a Fluid Tree DDS.
71
+ * @remarks
72
+ * Allows storing and collaboratively editing schema-aware hierarchial data.
73
+ * @sealed @public
74
+ */
75
+ export interface ITree extends ViewableTree, IFluidLoadable {}
76
+
71
77
  /**
72
78
  * Options when constructing a tree view.
73
79
  * @public
@@ -181,7 +187,7 @@ export interface ITreeViewConfiguration<
181
187
  }
182
188
 
183
189
  /**
184
- * Configuration for {@link ITree.viewWith}.
190
+ * Configuration for {@link ViewableTree.viewWith}.
185
191
  * @sealed @public
186
192
  */
187
193
  export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema>
@@ -236,7 +242,7 @@ export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = Implici
236
242
  }
237
243
 
238
244
  // Eagerly perform this conversion to surface errors sooner.
239
- toFlexSchema(config.schema);
245
+ toStoredSchema(config.schema);
240
246
  }
241
247
  }
242
248
 
@@ -11,13 +11,9 @@ import {
11
11
  type TreeStatus,
12
12
  isLazy,
13
13
  isTreeValue,
14
- FlexObjectNodeSchema,
15
- isMapTreeNode,
16
14
  FieldKinds,
17
15
  } from "../../feature-libraries/index.js";
18
16
  import { fail, extractFromOpaque, isReadonlyArray } from "../../util/index.js";
19
-
20
- import { getOrCreateNodeFromFlexTreeNode } from "../proxies.js";
21
17
  import { getOrCreateInnerNode } from "../proxyBinding.js";
22
18
  import {
23
19
  type TreeLeafValue,
@@ -44,6 +40,9 @@ import {
44
40
  type TreeNode,
45
41
  type TreeChangeEvents,
46
42
  tryGetTreeNodeSchema,
43
+ getOrCreateNodeFromInnerNode,
44
+ UnhydratedFlexTreeNode,
45
+ typeSchemaSymbol,
47
46
  } from "../core/index.js";
48
47
  import { isObjectNodeSchema } from "../objectNodeTypes.js";
49
48
 
@@ -141,7 +140,7 @@ export const treeNodeApi: TreeNodeApi = {
141
140
  return undefined;
142
141
  }
143
142
 
144
- const output = getOrCreateNodeFromFlexTreeNode(editNode);
143
+ const output = getOrCreateNodeFromInnerNode(editNode);
145
144
  assert(
146
145
  !isTreeValue(output),
147
146
  0x87f /* Parent can't be a leaf, so it should be a node not a value */,
@@ -231,17 +230,20 @@ export const treeNodeApi: TreeNodeApi = {
231
230
  return tryGetSchema(node) ?? fail("Not a tree node");
232
231
  },
233
232
  shortId(node: TreeNode): number | string | undefined {
233
+ const schema = node[typeSchemaSymbol];
234
+ if (!isObjectNodeSchema(schema)) {
235
+ return undefined;
236
+ }
237
+
234
238
  const flexNode = getOrCreateInnerNode(node);
235
- const flexSchema = flexNode.flexSchema;
236
- const identifierFieldKeys =
237
- flexSchema instanceof FlexObjectNodeSchema ? flexSchema.identifierFieldKeys : [];
239
+ const identifierFieldKeys = schema.identifierFieldKeys;
238
240
 
239
241
  switch (identifierFieldKeys.length) {
240
242
  case 0:
241
243
  return undefined;
242
244
  case 1: {
243
245
  const identifier = flexNode.tryGetField(identifierFieldKeys[0] ?? oob())?.boxedAt(0);
244
- if (isMapTreeNode(flexNode)) {
246
+ if (flexNode instanceof UnhydratedFlexTreeNode) {
245
247
  if (identifier === undefined) {
246
248
  throw new UsageError(
247
249
  "Tree.shortId cannot access default identifiers on unhydrated nodes",
@@ -303,7 +305,7 @@ function getStoredKey(node: TreeNode): string | number {
303
305
  // Note: the flex domain strictly works with "stored keys", and knows nothing about the developer-facing
304
306
  // "property keys".
305
307
  const parentField = getOrCreateInnerNode(node).parentField;
306
- if (parentField.parent.schema.kind === FieldKinds.sequence.identifier) {
308
+ if (parentField.parent.schema === FieldKinds.sequence.identifier) {
307
309
  // The parent of `node` is an array node
308
310
  assert(
309
311
  parentField.parent.key === EmptyKey,
@@ -25,7 +25,7 @@ import type {
25
25
  ImplicitFieldSchema,
26
26
  ImplicitAllowedTypes,
27
27
  } from "../schemaTypes.js";
28
- import { getSimpleNodeSchema, NodeKind, type TreeNodeSchema } from "../core/index.js";
28
+ import { NodeKind, type TreeNodeSchema } from "../core/index.js";
29
29
  import {
30
30
  isTreeValue,
31
31
  stackTreeFieldCursor,
@@ -39,9 +39,9 @@ import {
39
39
  numberSchema,
40
40
  stringSchema,
41
41
  } from "../leafNodeSchema.js";
42
- import { toFlexSchema } from "../toFlexSchema.js";
43
42
  import { isObjectNodeSchema } from "../objectNodeTypes.js";
44
- import { walkFieldSchema } from "../walkSchema.js";
43
+ import { walkFieldSchema } from "../walkFieldSchema.js";
44
+ import { getUnhydratedContext } from "../createContext.js";
45
45
 
46
46
  /**
47
47
  * Verbose encoding of a {@link TreeNode} or {@link TreeValue}.
@@ -174,9 +174,7 @@ export function applySchemaToParserOptions<TCustom>(
174
174
  ...options,
175
175
  };
176
176
 
177
- // TODO: should provide a way to look up schema by name efficiently without converting to flex tree schema and back.
178
- // Maybe cache identifier->schema map on simple tree schema lazily.
179
- const flexSchema = toFlexSchema(schema);
177
+ const context = getUnhydratedContext(schema);
180
178
 
181
179
  return {
182
180
  valueConverter: config.valueConverter,
@@ -185,9 +183,7 @@ export function applySchemaToParserOptions<TCustom>(
185
183
  : {
186
184
  encode: (type, key: FieldKey): string => {
187
185
  // translate stored key into property key.
188
- const flexNodeSchema =
189
- flexSchema.nodeSchema.get(brand(type)) ?? fail("missing schema");
190
- const simpleNodeSchema = getSimpleNodeSchema(flexNodeSchema);
186
+ const simpleNodeSchema = context.schema.get(brand(type)) ?? fail("missing schema");
191
187
  if (isObjectNodeSchema(simpleNodeSchema)) {
192
188
  const propertyKey = simpleNodeSchema.storedKeyToPropertyKey.get(key);
193
189
  if (propertyKey !== undefined) {
@@ -208,9 +204,7 @@ export function applySchemaToParserOptions<TCustom>(
208
204
  return key;
209
205
  },
210
206
  parse: (type, inputKey): FieldKey => {
211
- const flexNodeSchema =
212
- flexSchema.nodeSchema.get(brand(type)) ?? fail("missing schema");
213
- const simpleNodeSchema = getSimpleNodeSchema(flexNodeSchema);
207
+ const simpleNodeSchema = context.schema.get(brand(type)) ?? fail("missing schema");
214
208
  if (isObjectNodeSchema(simpleNodeSchema)) {
215
209
  const info =
216
210
  simpleNodeSchema.flexKeyMap.get(inputKey) ?? fail("missing field info");
@@ -12,24 +12,24 @@ import {
12
12
  type TreeNodeStoredSchema,
13
13
  type TreeStoredSchema,
14
14
  } from "../../core/index.js";
15
- import { type Named, fail } from "../../util/index.js";
15
+ import { fail } from "../../util/index.js";
16
16
  import {
17
17
  type FullSchemaPolicy,
18
18
  allowsRepoSuperset,
19
19
  isNeverTree,
20
- } from "../modular-schema/index.js";
20
+ } from "../../feature-libraries/index.js";
21
21
 
22
22
  /**
23
23
  * A collection of View information for schema, including policy.
24
24
  */
25
25
  export class ViewSchema {
26
26
  /**
27
- * @param storedSchema - Cached conversion of view schema into a stored schema.
27
+ * @param schema - Cached conversion of view schema in the stored schema format.
28
28
  */
29
29
  public constructor(
30
30
  public readonly policy: FullSchemaPolicy,
31
31
  public readonly adapters: Adapters,
32
- public readonly storedSchema: TreeStoredSchema,
32
+ public readonly schema: TreeStoredSchema,
33
33
  ) {}
34
34
 
35
35
  /**
@@ -50,7 +50,7 @@ export class ViewSchema {
50
50
  // TODO: support adapters
51
51
  // const adapted = this.adaptRepo(stored);
52
52
 
53
- const read = allowsRepoSuperset(this.policy, stored, this.storedSchema)
53
+ const read = allowsRepoSuperset(this.policy, stored, this.schema)
54
54
  ? Compatibility.Compatible
55
55
  : // TODO: support adapters
56
56
  // : allowsRepoSuperset(this.policy, adapted.adaptedForViewSchema, this.storedSchema)
@@ -58,7 +58,7 @@ export class ViewSchema {
58
58
  Compatibility.Incompatible;
59
59
  // TODO: Extract subset of adapters that are valid to use on stored
60
60
  // TODO: separate adapters from schema updates
61
- const write = allowsRepoSuperset(this.policy, this.storedSchema, stored)
61
+ const write = allowsRepoSuperset(this.policy, this.schema, stored)
62
62
  ? Compatibility.Compatible
63
63
  : // TODO: support adapters
64
64
  // : allowsRepoSuperset(this.policy, this.storedSchema, adapted.adaptedForViewSchema)
@@ -74,7 +74,7 @@ export class ViewSchema {
74
74
  let writeAllowingStoredSchemaUpdates =
75
75
  // TODO: This should consider just the updates needed
76
76
  // (ex: when view covers a subset of stored after stored has a update to that subset).
77
- allowsRepoSuperset(this.policy, stored, this.storedSchema)
77
+ allowsRepoSuperset(this.policy, stored, this.schema)
78
78
  ? Compatibility.Compatible
79
79
  : // TODO: this assumes adapters can translate in both directions. In general this will not be true.
80
80
  // TODO: this also assumes that schema updates to the adapted repo would translate to
@@ -98,18 +98,12 @@ export class ViewSchema {
98
98
  */
99
99
  public adaptRepo(stored: TreeStoredSchema): AdaptedViewSchema {
100
100
  // Sanity check on adapters:
101
- // it's probably a bug it they use the never types,
101
+ // it's probably a bug if they use the never types,
102
102
  // since there never is a reason to have a never type as an adapter input,
103
103
  // and its impossible for an adapter to be correctly implemented if its output type is never
104
104
  // (unless its input is also never).
105
105
  for (const adapter of this.adapters?.tree ?? []) {
106
- if (
107
- isNeverTree(
108
- this.policy,
109
- this.storedSchema,
110
- this.storedSchema.nodeSchema.get(adapter.output),
111
- )
112
- ) {
106
+ if (isNeverTree(this.policy, this.schema, this.schema.nodeSchema.get(adapter.output))) {
113
107
  fail("tree adapter for stored adapter.output should not be never");
114
108
  }
115
109
  }
@@ -151,10 +145,3 @@ export class ViewSchema {
151
145
  return original;
152
146
  }
153
147
  }
154
-
155
- /**
156
- * Record where a schema came from for error reporting purposes.
157
- */
158
- export interface Sourced {
159
- readonly builder: Named<string>;
160
- }