@fluidframework/tree 2.63.0-359461 → 2.63.0-359734

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 (377) hide show
  1. package/.mocharc.cjs +9 -1
  2. package/api-report/tree.alpha.api.md +93 -98
  3. package/api-report/tree.beta.api.md +37 -2
  4. package/api-report/tree.legacy.beta.api.md +37 -2
  5. package/api-report/tree.legacy.public.api.md +9 -2
  6. package/api-report/tree.public.api.md +9 -2
  7. package/dist/alpha.d.ts +11 -13
  8. package/dist/beta.d.ts +5 -0
  9. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  10. package/dist/feature-libraries/treeCursorUtils.js +17 -15
  11. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/jsonDomainSchema.d.ts +5 -5
  16. package/dist/jsonDomainSchema.js +5 -5
  17. package/dist/jsonDomainSchema.js.map +1 -1
  18. package/dist/legacy.d.ts +5 -0
  19. package/dist/packageVersion.d.ts +1 -1
  20. package/dist/packageVersion.js +1 -1
  21. package/dist/packageVersion.js.map +1 -1
  22. package/dist/public.d.ts +1 -0
  23. package/dist/serializableDomainSchema.d.ts +6 -6
  24. package/dist/serializableDomainSchema.js +5 -5
  25. package/dist/serializableDomainSchema.js.map +1 -1
  26. package/dist/shared-tree/schematizingTreeView.js +1 -1
  27. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  28. package/dist/shared-tree/treeAlpha.d.ts +20 -28
  29. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  30. package/dist/shared-tree/treeAlpha.js +4 -29
  31. package/dist/shared-tree/treeAlpha.js.map +1 -1
  32. package/dist/simple-tree/api/conciseTree.d.ts +1 -1
  33. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  34. package/dist/simple-tree/api/configuration.d.ts +0 -3
  35. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  36. package/dist/simple-tree/api/configuration.js +1 -4
  37. package/dist/simple-tree/api/configuration.js.map +1 -1
  38. package/dist/simple-tree/api/customTree.d.ts +7 -7
  39. package/dist/simple-tree/api/customTree.js +5 -5
  40. package/dist/simple-tree/api/customTree.js.map +1 -1
  41. package/dist/simple-tree/api/discrepancies.js +2 -2
  42. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  43. package/dist/simple-tree/api/index.d.ts +2 -2
  44. package/dist/simple-tree/api/index.d.ts.map +1 -1
  45. package/dist/simple-tree/api/index.js +4 -1
  46. package/dist/simple-tree/api/index.js.map +1 -1
  47. package/dist/simple-tree/api/schemaFactory.d.ts +12 -4
  48. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  49. package/dist/simple-tree/api/schemaFactory.js +3 -8
  50. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  51. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +27 -26
  52. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  53. package/dist/simple-tree/api/schemaFactoryAlpha.js +11 -0
  54. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  55. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
  56. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  57. package/dist/simple-tree/api/schemaFactoryBeta.js +14 -0
  58. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  59. package/dist/simple-tree/api/schemaStatics.d.ts +9 -14
  60. package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
  61. package/dist/simple-tree/api/schemaStatics.js +9 -12
  62. package/dist/simple-tree/api/schemaStatics.js.map +1 -1
  63. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  64. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  65. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  66. package/dist/simple-tree/api/tree.d.ts +3 -3
  67. package/dist/simple-tree/api/tree.js.map +1 -1
  68. package/dist/simple-tree/api/treeBeta.d.ts +52 -2
  69. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
  70. package/dist/simple-tree/api/treeBeta.js +36 -1
  71. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  72. package/dist/simple-tree/api/treeNodeApi.js +1 -1
  73. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  74. package/dist/simple-tree/core/allowedTypes.d.ts +120 -62
  75. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  76. package/dist/simple-tree/core/allowedTypes.js +162 -84
  77. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  78. package/dist/simple-tree/core/context.d.ts +2 -2
  79. package/dist/simple-tree/core/context.d.ts.map +1 -1
  80. package/dist/simple-tree/core/context.js.map +1 -1
  81. package/dist/simple-tree/core/index.d.ts +2 -2
  82. package/dist/simple-tree/core/index.d.ts.map +1 -1
  83. package/dist/simple-tree/core/index.js +4 -3
  84. package/dist/simple-tree/core/index.js.map +1 -1
  85. package/dist/simple-tree/core/toStored.d.ts +3 -3
  86. package/dist/simple-tree/core/toStored.d.ts.map +1 -1
  87. package/dist/simple-tree/core/toStored.js +2 -2
  88. package/dist/simple-tree/core/toStored.js.map +1 -1
  89. package/dist/simple-tree/core/treeNode.d.ts +1 -1
  90. package/dist/simple-tree/core/treeNode.js +1 -1
  91. package/dist/simple-tree/core/treeNode.js.map +1 -1
  92. package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -3
  93. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  94. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  95. package/dist/simple-tree/core/treeNodeValid.d.ts +2 -2
  96. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  97. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  98. package/dist/simple-tree/core/walkSchema.d.ts +3 -3
  99. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  100. package/dist/simple-tree/core/walkSchema.js +1 -1
  101. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  102. package/dist/simple-tree/createContext.js +2 -2
  103. package/dist/simple-tree/createContext.js.map +1 -1
  104. package/dist/simple-tree/fieldSchema.d.ts +9 -32
  105. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  106. package/dist/simple-tree/fieldSchema.js +12 -20
  107. package/dist/simple-tree/fieldSchema.js.map +1 -1
  108. package/dist/simple-tree/index.d.ts +4 -4
  109. package/dist/simple-tree/index.d.ts.map +1 -1
  110. package/dist/simple-tree/index.js +6 -2
  111. package/dist/simple-tree/index.js.map +1 -1
  112. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
  113. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  114. package/dist/simple-tree/node-kinds/array/arrayNode.js +5 -6
  115. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  116. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  117. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  118. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  119. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  120. package/dist/simple-tree/node-kinds/common.js +2 -2
  121. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  122. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  123. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  124. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  125. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
  126. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  127. package/dist/simple-tree/node-kinds/map/mapNode.js +3 -3
  128. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  129. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  130. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  131. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  132. package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
  133. package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  134. package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
  135. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
  136. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  137. package/dist/simple-tree/node-kinds/object/objectNode.js +5 -15
  138. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  139. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
  140. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  141. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  142. package/dist/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
  143. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  144. package/dist/simple-tree/node-kinds/record/recordNode.js +3 -3
  145. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  146. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
  147. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  148. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  149. package/dist/simple-tree/prepareForInsertion.d.ts +5 -5
  150. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  151. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  152. package/dist/simple-tree/toStoredSchema.d.ts +8 -8
  153. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  154. package/dist/simple-tree/toStoredSchema.js +5 -5
  155. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  156. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
  157. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  158. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  159. package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
  160. package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -1
  161. package/dist/simple-tree/walkFieldSchema.js +1 -1
  162. package/dist/simple-tree/walkFieldSchema.js.map +1 -1
  163. package/dist/tableSchema.d.ts +19 -19
  164. package/dist/tableSchema.d.ts.map +1 -1
  165. package/dist/tableSchema.js +2 -2
  166. package/dist/tableSchema.js.map +1 -1
  167. package/lib/alpha.d.ts +11 -13
  168. package/lib/beta.d.ts +5 -0
  169. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  170. package/lib/feature-libraries/treeCursorUtils.js +17 -15
  171. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  172. package/lib/index.d.ts +1 -1
  173. package/lib/index.d.ts.map +1 -1
  174. package/lib/index.js.map +1 -1
  175. package/lib/jsonDomainSchema.d.ts +5 -5
  176. package/lib/jsonDomainSchema.js +5 -5
  177. package/lib/jsonDomainSchema.js.map +1 -1
  178. package/lib/legacy.d.ts +5 -0
  179. package/lib/packageVersion.d.ts +1 -1
  180. package/lib/packageVersion.js +1 -1
  181. package/lib/packageVersion.js.map +1 -1
  182. package/lib/public.d.ts +1 -0
  183. package/lib/serializableDomainSchema.d.ts +6 -6
  184. package/lib/serializableDomainSchema.js +5 -5
  185. package/lib/serializableDomainSchema.js.map +1 -1
  186. package/lib/shared-tree/schematizingTreeView.js +1 -1
  187. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  188. package/lib/shared-tree/treeAlpha.d.ts +20 -28
  189. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  190. package/lib/shared-tree/treeAlpha.js +3 -28
  191. package/lib/shared-tree/treeAlpha.js.map +1 -1
  192. package/lib/simple-tree/api/conciseTree.d.ts +1 -1
  193. package/lib/simple-tree/api/conciseTree.js.map +1 -1
  194. package/lib/simple-tree/api/configuration.d.ts +0 -3
  195. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  196. package/lib/simple-tree/api/configuration.js +2 -5
  197. package/lib/simple-tree/api/configuration.js.map +1 -1
  198. package/lib/simple-tree/api/customTree.d.ts +7 -7
  199. package/lib/simple-tree/api/customTree.js +5 -5
  200. package/lib/simple-tree/api/customTree.js.map +1 -1
  201. package/lib/simple-tree/api/discrepancies.js +3 -3
  202. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  203. package/lib/simple-tree/api/index.d.ts +2 -2
  204. package/lib/simple-tree/api/index.d.ts.map +1 -1
  205. package/lib/simple-tree/api/index.js +1 -1
  206. package/lib/simple-tree/api/index.js.map +1 -1
  207. package/lib/simple-tree/api/schemaFactory.d.ts +12 -4
  208. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  209. package/lib/simple-tree/api/schemaFactory.js +3 -8
  210. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  211. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +27 -26
  212. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  213. package/lib/simple-tree/api/schemaFactoryAlpha.js +12 -1
  214. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  215. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
  216. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  217. package/lib/simple-tree/api/schemaFactoryBeta.js +16 -2
  218. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  219. package/lib/simple-tree/api/schemaStatics.d.ts +9 -14
  220. package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
  221. package/lib/simple-tree/api/schemaStatics.js +9 -12
  222. package/lib/simple-tree/api/schemaStatics.js.map +1 -1
  223. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  224. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  225. package/lib/simple-tree/api/storedSchema.js +1 -1
  226. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  227. package/lib/simple-tree/api/tree.d.ts +3 -3
  228. package/lib/simple-tree/api/tree.js.map +1 -1
  229. package/lib/simple-tree/api/treeBeta.d.ts +52 -2
  230. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
  231. package/lib/simple-tree/api/treeBeta.js +33 -1
  232. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  233. package/lib/simple-tree/api/treeNodeApi.js +1 -1
  234. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  235. package/lib/simple-tree/core/allowedTypes.d.ts +120 -62
  236. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  237. package/lib/simple-tree/core/allowedTypes.js +158 -80
  238. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  239. package/lib/simple-tree/core/context.d.ts +2 -2
  240. package/lib/simple-tree/core/context.d.ts.map +1 -1
  241. package/lib/simple-tree/core/context.js.map +1 -1
  242. package/lib/simple-tree/core/index.d.ts +2 -2
  243. package/lib/simple-tree/core/index.d.ts.map +1 -1
  244. package/lib/simple-tree/core/index.js +1 -1
  245. package/lib/simple-tree/core/index.js.map +1 -1
  246. package/lib/simple-tree/core/toStored.d.ts +3 -3
  247. package/lib/simple-tree/core/toStored.d.ts.map +1 -1
  248. package/lib/simple-tree/core/toStored.js +3 -3
  249. package/lib/simple-tree/core/toStored.js.map +1 -1
  250. package/lib/simple-tree/core/treeNode.d.ts +1 -1
  251. package/lib/simple-tree/core/treeNode.js +1 -1
  252. package/lib/simple-tree/core/treeNode.js.map +1 -1
  253. package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -3
  254. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  255. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  256. package/lib/simple-tree/core/treeNodeValid.d.ts +2 -2
  257. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  258. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  259. package/lib/simple-tree/core/walkSchema.d.ts +3 -3
  260. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  261. package/lib/simple-tree/core/walkSchema.js +2 -2
  262. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  263. package/lib/simple-tree/createContext.js +3 -3
  264. package/lib/simple-tree/createContext.js.map +1 -1
  265. package/lib/simple-tree/fieldSchema.d.ts +9 -32
  266. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  267. package/lib/simple-tree/fieldSchema.js +13 -21
  268. package/lib/simple-tree/fieldSchema.js.map +1 -1
  269. package/lib/simple-tree/index.d.ts +4 -4
  270. package/lib/simple-tree/index.d.ts.map +1 -1
  271. package/lib/simple-tree/index.js +2 -2
  272. package/lib/simple-tree/index.js.map +1 -1
  273. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
  274. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  275. package/lib/simple-tree/node-kinds/array/arrayNode.js +6 -7
  276. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  277. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  278. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  279. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  280. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  281. package/lib/simple-tree/node-kinds/common.js +3 -3
  282. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  283. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  284. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  285. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  286. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
  287. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  288. package/lib/simple-tree/node-kinds/map/mapNode.js +4 -4
  289. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  290. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  291. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  292. package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  293. package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
  294. package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  295. package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
  296. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
  297. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  298. package/lib/simple-tree/node-kinds/object/objectNode.js +6 -15
  299. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  300. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
  301. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  302. package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  303. package/lib/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
  304. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  305. package/lib/simple-tree/node-kinds/record/recordNode.js +4 -4
  306. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  307. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
  308. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  309. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  310. package/lib/simple-tree/prepareForInsertion.d.ts +5 -5
  311. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  312. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  313. package/lib/simple-tree/toStoredSchema.d.ts +8 -8
  314. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  315. package/lib/simple-tree/toStoredSchema.js +5 -5
  316. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  317. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
  318. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  319. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
  320. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  321. package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
  322. package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -1
  323. package/lib/simple-tree/walkFieldSchema.js +1 -1
  324. package/lib/simple-tree/walkFieldSchema.js.map +1 -1
  325. package/lib/tableSchema.d.ts +19 -19
  326. package/lib/tableSchema.d.ts.map +1 -1
  327. package/lib/tableSchema.js +2 -2
  328. package/lib/tableSchema.js.map +1 -1
  329. package/package.json +23 -21
  330. package/src/feature-libraries/treeCursorUtils.ts +34 -19
  331. package/src/index.ts +7 -10
  332. package/src/jsonDomainSchema.ts +5 -5
  333. package/src/packageVersion.ts +1 -1
  334. package/src/serializableDomainSchema.ts +6 -6
  335. package/src/shared-tree/schematizingTreeView.ts +1 -1
  336. package/src/shared-tree/treeAlpha.ts +32 -81
  337. package/src/simple-tree/api/conciseTree.ts +1 -1
  338. package/src/simple-tree/api/configuration.ts +3 -7
  339. package/src/simple-tree/api/customTree.ts +7 -7
  340. package/src/simple-tree/api/discrepancies.ts +3 -3
  341. package/src/simple-tree/api/index.ts +10 -2
  342. package/src/simple-tree/api/schemaFactory.ts +18 -73
  343. package/src/simple-tree/api/schemaFactoryAlpha.ts +45 -12
  344. package/src/simple-tree/api/schemaFactoryBeta.ts +76 -1
  345. package/src/simple-tree/api/schemaStatics.ts +16 -61
  346. package/src/simple-tree/api/storedSchema.ts +2 -6
  347. package/src/simple-tree/api/tree.ts +3 -3
  348. package/src/simple-tree/api/treeBeta.ts +136 -3
  349. package/src/simple-tree/api/treeNodeApi.ts +1 -1
  350. package/src/simple-tree/core/allowedTypes.ts +355 -159
  351. package/src/simple-tree/core/context.ts +2 -2
  352. package/src/simple-tree/core/index.ts +10 -8
  353. package/src/simple-tree/core/toStored.ts +7 -5
  354. package/src/simple-tree/core/treeNode.ts +1 -1
  355. package/src/simple-tree/core/treeNodeSchema.ts +3 -6
  356. package/src/simple-tree/core/treeNodeValid.ts +2 -2
  357. package/src/simple-tree/core/walkSchema.ts +9 -5
  358. package/src/simple-tree/createContext.ts +3 -3
  359. package/src/simple-tree/fieldSchema.ts +24 -98
  360. package/src/simple-tree/index.ts +11 -10
  361. package/src/simple-tree/node-kinds/array/arrayNode.ts +9 -14
  362. package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +7 -8
  363. package/src/simple-tree/node-kinds/common.ts +5 -3
  364. package/src/simple-tree/node-kinds/index.ts +0 -2
  365. package/src/simple-tree/node-kinds/map/mapNode.ts +5 -13
  366. package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +7 -8
  367. package/src/simple-tree/node-kinds/object/index.ts +0 -2
  368. package/src/simple-tree/node-kinds/object/objectNode.ts +13 -51
  369. package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +5 -19
  370. package/src/simple-tree/node-kinds/record/recordNode.ts +9 -16
  371. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +7 -11
  372. package/src/simple-tree/prepareForInsertion.ts +5 -5
  373. package/src/simple-tree/toStoredSchema.ts +8 -9
  374. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +2 -6
  375. package/src/simple-tree/unsafeUnknownSchema.ts +2 -3
  376. package/src/simple-tree/walkFieldSchema.ts +1 -1
  377. package/src/tableSchema.ts +24 -37
@@ -5,9 +5,9 @@
5
5
 
6
6
  import { brand } from "../../util/index.js";
7
7
  import {
8
- normalizeAnnotatedAllowedTypes,
8
+ normalizeAndEvaluateAnnotatedAllowedTypes,
9
9
  type AnnotatedAllowedType,
10
- type ImplicitAnnotatedAllowedTypes,
10
+ type ImplicitAllowedTypes,
11
11
  type SchemaUpgrade,
12
12
  } from "./allowedTypes.js";
13
13
  import type { TreeNodeSchemaIdentifier, TreeTypeSet } from "../../core/index.js";
@@ -42,16 +42,18 @@ export function allowedTypeFilter(
42
42
  }
43
43
 
44
44
  /**
45
- * Converts an ImplicitAnnotatedAllowedTypes to a stored schema.
45
+ * Converts an ImplicitAllowedTypes to a stored schema.
46
46
  * @param schema - The schema to convert.
47
47
  * @param options - The options to use for filtering.
48
48
  * @returns The converted stored schema.
49
49
  */
50
50
  export function convertAllowedTypes(
51
- schema: ImplicitAnnotatedAllowedTypes,
51
+ schema: ImplicitAllowedTypes,
52
52
  options: StoredSchemaGenerationOptions,
53
53
  ): TreeTypeSet {
54
- const filtered: TreeNodeSchemaIdentifier[] = normalizeAnnotatedAllowedTypes(schema)
54
+ const filtered: TreeNodeSchemaIdentifier[] = normalizeAndEvaluateAnnotatedAllowedTypes(
55
+ schema,
56
+ )
55
57
  .types.filter((allowedType) => allowedTypeFilter(allowedType, options))
56
58
  .map((a) => brand(a.type.identifier));
57
59
  return new Set(filtered);
@@ -29,7 +29,7 @@ import { markEager } from "./flexList.js";
29
29
  * 2. Explicit construction of {@link Unhydrated} nodes using either {@link TreeNodeSchemaClass} as a constructor or {@link TreeNodeSchemaNonClass|TreeNodeSchemaNonClass.create}.
30
30
  * Either way the {@link TreeNodeSchema} produced must be produced using a {@link SchemaFactory}.
31
31
  * There are also higher level APIs which wrap these, including {@link (TreeBeta:interface).create}, {@link (TreeBeta:interface).clone},
32
- * and import APIs like {@link (TreeAlpha:interface).importConcise}, {@link (TreeAlpha:interface).importVerbose}, and {@link (TreeAlpha:interface).importCompressed}.
32
+ * and import APIs like {@link (TreeBeta:interface).importConcise}, {@link (TreeAlpha:interface).importVerbose}, and {@link (TreeAlpha:interface).importCompressed}.
33
33
  *
34
34
  * 3. Implicit construction: Several APIs which logically require an unhydrated TreeNode also allow passing in a value which could be used to explicitly construct the node instead.
35
35
  * These APIs internally call the constructor with the provided value (typically behaving like {@link (TreeAlpha:interface).create}), so it's really just a special case of the above option.
@@ -10,10 +10,7 @@ import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
10
10
  import type { TreeNode } from "./treeNode.js";
11
11
  import type { InternalTreeNode, Unhydrated } from "./types.js";
12
12
  import type { UnionToIntersection } from "../../util/index.js";
13
- import type {
14
- ImplicitAnnotatedAllowedTypes,
15
- NormalizedAnnotatedAllowedTypes,
16
- } from "./allowedTypes.js";
13
+ import type { ImplicitAllowedTypes, AllowedTypesFullEvaluated } from "./allowedTypes.js";
17
14
  import type { Context } from "./context.js";
18
15
  import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
19
16
  import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
@@ -391,7 +388,7 @@ export interface TreeNodeSchemaPrivateData {
391
388
  * If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
392
389
  * @system
393
390
  */
394
- readonly childAnnotatedAllowedTypes: readonly ImplicitAnnotatedAllowedTypes[];
391
+ readonly childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[];
395
392
 
396
393
  /**
397
394
  * Idempotent initialization function that pre-caches data and can dereference lazy schema references.
@@ -425,7 +422,7 @@ export interface TreeNodeSchemaInitializedData {
425
422
  * If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
426
423
  * @system
427
424
  */
428
- readonly childAnnotatedAllowedTypes: readonly NormalizedAnnotatedAllowedTypes[];
425
+ readonly childAnnotatedAllowedTypes: readonly AllowedTypesFullEvaluated[];
429
426
 
430
427
  /**
431
428
  * A {@link Context} which can be used for unhydrated nodes of this schema.
@@ -25,7 +25,7 @@ import {
25
25
  } from "./treeNodeKernel.js";
26
26
  import type { InternalTreeNode } from "./types.js";
27
27
  import { typeSchemaSymbol } from "./withType.js";
28
- import type { ImplicitAnnotatedAllowedTypes } from "./allowedTypes.js";
28
+ import type { ImplicitAllowedTypes } from "./allowedTypes.js";
29
29
  import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
30
30
 
31
31
  /**
@@ -259,7 +259,7 @@ export function isClassBasedSchema(
259
259
  */
260
260
  export function createTreeNodeSchemaPrivateData(
261
261
  schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
262
- childAnnotatedAllowedTypes: readonly ImplicitAnnotatedAllowedTypes[],
262
+ childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[],
263
263
  toStored: TreeNodeSchemaPrivateData["toStored"],
264
264
  ): TreeNodeSchemaPrivateData {
265
265
  const schemaValid = schemaAsTreeNodeValid(schema);
@@ -4,9 +4,9 @@
4
4
  */
5
5
 
6
6
  import {
7
- normalizeAnnotatedAllowedTypes,
7
+ normalizeAndEvaluateAnnotatedAllowedTypes,
8
8
  type AnnotatedAllowedType,
9
- type NormalizedAnnotatedAllowedTypes,
9
+ type AllowedTypesFullEvaluated,
10
10
  } from "./allowedTypes.js";
11
11
  import { getTreeNodeSchemaPrivateData, type TreeNodeSchema } from "./treeNodeSchema.js";
12
12
 
@@ -32,7 +32,11 @@ export function walkNodeSchema(
32
32
  getTreeNodeSchemaPrivateData(schema).childAnnotatedAllowedTypes;
33
33
 
34
34
  for (const fieldAllowedTypes of annotatedAllowedTypes) {
35
- walkAllowedTypes(normalizeAnnotatedAllowedTypes(fieldAllowedTypes), visitor, visitedSet);
35
+ walkAllowedTypes(
36
+ normalizeAndEvaluateAnnotatedAllowedTypes(fieldAllowedTypes),
37
+ visitor,
38
+ visitedSet,
39
+ );
36
40
  }
37
41
 
38
42
  // This visit is done at the end so the traversal order is most inner types first.
@@ -47,7 +51,7 @@ export function walkNodeSchema(
47
51
  * @internal
48
52
  */
49
53
  export function walkAllowedTypes(
50
- annotatedAllowedTypes: NormalizedAnnotatedAllowedTypes,
54
+ annotatedAllowedTypes: AllowedTypesFullEvaluated,
51
55
  visitor: SchemaVisitor,
52
56
  visitedSet: Set<TreeNodeSchema> = new Set(),
53
57
  ): void {
@@ -77,7 +81,7 @@ export interface SchemaVisitor {
77
81
  *
78
82
  * After this is called {@link SchemaVisitor.allowedTypeFilter} is applied to each allowed type in the schema to determine which of them are walked into.
79
83
  */
80
- allowedTypes?: (allowedTypes: NormalizedAnnotatedAllowedTypes) => void;
84
+ allowedTypes?: (allowedTypes: AllowedTypesFullEvaluated) => void;
81
85
  /**
82
86
  * If true, will walk into this `allowedType`.
83
87
  * If false, the `allowedType` will not be walked into.
@@ -9,7 +9,7 @@ import { getOrCreate } from "../util/index.js";
9
9
  import {
10
10
  Context,
11
11
  getTreeNodeSchemaPrivateData,
12
- normalizeAnnotatedAllowedTypes,
12
+ normalizeAndEvaluateAnnotatedAllowedTypes,
13
13
  UnhydratedContext,
14
14
  type TreeNodeSchema,
15
15
  type TreeNodeSchemaInitializedData,
@@ -34,7 +34,7 @@ export function getUnhydratedContext(schema: ImplicitFieldSchema): Context {
34
34
  );
35
35
  return new Context(
36
36
  flexContext,
37
- Context.schemaMapFromRootSchema(normalized.annotatedAllowedTypesNormalized),
37
+ Context.schemaMapFromRootSchema(normalized.allowedTypesFull.evaluate()),
38
38
  );
39
39
  });
40
40
  }
@@ -51,7 +51,7 @@ export function getTreeNodeSchemaInitializedData(
51
51
  ...handler,
52
52
  context: getUnhydratedContext(schema),
53
53
  childAnnotatedAllowedTypes: data.childAnnotatedAllowedTypes.map(
54
- normalizeAnnotatedAllowedTypes,
54
+ normalizeAndEvaluateAnnotatedAllowedTypes,
55
55
  ),
56
56
  };
57
57
  }
@@ -23,21 +23,13 @@ import type {
23
23
  TreeNodeSchema,
24
24
  TreeNode,
25
25
  UnhydratedFlexTreeNode,
26
- NormalizedAnnotatedAllowedTypes,
27
26
  ImplicitAllowedTypes,
28
- ImplicitAnnotatedAllowedTypes,
29
- UnannotateImplicitAllowedTypes,
30
- AllowedTypesMetadata,
31
27
  TreeNodeFromImplicitAllowedTypes,
32
28
  TreeLeafValue,
33
29
  InsertableTreeNodeFromImplicitAllowedTypes,
30
+ AllowedTypesFull,
34
31
  } from "./core/index.js";
35
- import {
36
- isAnnotatedAllowedTypes,
37
- normalizeAllowedTypes,
38
- normalizeAnnotatedAllowedTypes,
39
- unannotateImplicitAllowedTypes,
40
- } from "./core/index.js";
32
+ import { normalizeAllowedTypes } from "./core/index.js";
41
33
 
42
34
  import type { SimpleFieldSchema } from "./simpleSchema.js";
43
35
  import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
@@ -81,10 +73,7 @@ export enum FieldKind {
81
73
  * If an explicit stored key was specified in the schema, it will be used.
82
74
  * Otherwise, the stored key is the same as the property key.
83
75
  */
84
- export function getStoredKey(
85
- propertyKey: string,
86
- fieldSchema: ImplicitAnnotatedFieldSchema,
87
- ): FieldKey {
76
+ export function getStoredKey(propertyKey: string, fieldSchema: ImplicitFieldSchema): FieldKey {
88
77
  return brand(getExplicitStoredKey(fieldSchema) ?? propertyKey);
89
78
  }
90
79
 
@@ -92,9 +81,7 @@ export function getStoredKey(
92
81
  * Gets the {@link FieldProps.key | stored key} specified by the schema, if one was explicitly specified.
93
82
  * Otherwise, returns undefined.
94
83
  */
95
- export function getExplicitStoredKey(
96
- fieldSchema: ImplicitAnnotatedFieldSchema,
97
- ): string | undefined {
84
+ export function getExplicitStoredKey(fieldSchema: ImplicitFieldSchema): string | undefined {
98
85
  return fieldSchema instanceof FieldSchema ? fieldSchema.props?.key : undefined;
99
86
  }
100
87
 
@@ -286,30 +273,7 @@ export function createFieldSchema<
286
273
  kind: Kind,
287
274
  annotatedTypes: Types,
288
275
  props?: FieldProps<TCustomMetadata>,
289
- ): FieldSchemaAlpha<Kind, Types, TCustomMetadata>;
290
-
291
- /**
292
- * Package internal construction API that supports annotations for allowed types.
293
- */
294
- export function createFieldSchema<
295
- Kind extends FieldKind,
296
- Types extends ImplicitAnnotatedAllowedTypes,
297
- TCustomMetadata = unknown,
298
- >(
299
- kind: Kind,
300
- annotatedTypes: Types,
301
- props?: FieldProps<TCustomMetadata>,
302
- ): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata>;
303
-
304
- export function createFieldSchema<
305
- Kind extends FieldKind,
306
- Types extends ImplicitAnnotatedAllowedTypes,
307
- TCustomMetadata = unknown,
308
- >(
309
- kind: Kind,
310
- annotatedTypes: Types,
311
- props?: FieldProps<TCustomMetadata>,
312
- ): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata> {
276
+ ): FieldSchemaAlpha<Kind, Types, TCustomMetadata> {
313
277
  return createFieldSchemaPrivate(kind, annotatedTypes, props);
314
278
  }
315
279
 
@@ -318,13 +282,13 @@ export function createFieldSchema<
318
282
  */
319
283
  let createFieldSchemaPrivate: <
320
284
  Kind extends FieldKind,
321
- Types extends ImplicitAnnotatedAllowedTypes,
285
+ Types extends ImplicitAllowedTypes,
322
286
  TCustomMetadata,
323
287
  >(
324
288
  kind: Kind,
325
289
  annotatedTypes: Types,
326
290
  props?: FieldProps<TCustomMetadata>,
327
- ) => FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata>;
291
+ ) => FieldSchemaAlpha<Kind, Types, TCustomMetadata>;
328
292
 
329
293
  /**
330
294
  * All policy for a specific field,
@@ -400,7 +364,7 @@ export class FieldSchema<
400
364
  throw new UsageError("FieldSchema is @sealed: sub-classing is not allowed.");
401
365
  }
402
366
 
403
- this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes));
367
+ this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes).evaluateSet());
404
368
  // TODO: optional fields should (by default) get a default provider that returns undefined, removing the need to special case them here:
405
369
  this.requiresValue =
406
370
  this.props?.defaultProvider === undefined && this.kind !== FieldKind.Optional;
@@ -421,15 +385,8 @@ export class FieldSchemaAlpha<
421
385
  extends FieldSchema<Kind, Types, TCustomMetadata>
422
386
  implements SimpleFieldSchema
423
387
  {
424
- private readonly lazyIdentifiers: Lazy<ReadonlySet<string>>;
425
- private readonly lazyAnnotatedTypes: Lazy<NormalizedAnnotatedAllowedTypes>;
426
388
  private readonly propsAlpha: FieldPropsAlpha<TCustomMetadata> | undefined;
427
389
 
428
- /**
429
- * Metadata on the types of tree nodes allowed on this field.
430
- */
431
- public readonly allowedTypesMetadata: AllowedTypesMetadata;
432
-
433
390
  public get persistedMetadata(): JsonCompatibleReadOnlyObject | undefined {
434
391
  return this.propsAlpha?.persistedMetadata;
435
392
  }
@@ -437,61 +394,44 @@ export class FieldSchemaAlpha<
437
394
  static {
438
395
  createFieldSchemaPrivate = <
439
396
  Kind2 extends FieldKind,
440
- Types2 extends ImplicitAnnotatedAllowedTypes,
397
+ Types2 extends ImplicitAllowedTypes,
441
398
  TCustomMetadata2,
442
399
  >(
443
400
  kind: Kind2,
444
401
  annotatedAllowedTypes: Types2,
445
402
  props?: FieldPropsAlpha<TCustomMetadata2>,
446
- ) =>
447
- new FieldSchemaAlpha(
448
- kind,
449
- unannotateImplicitAllowedTypes(annotatedAllowedTypes),
450
- annotatedAllowedTypes,
451
- props,
452
- );
403
+ ) => new FieldSchemaAlpha(kind, annotatedAllowedTypes, props);
404
+ }
405
+
406
+ /**
407
+ * {@link normalizeAllowedTypes|Normalized} version of {@link FieldSchema.allowedTypes}.
408
+ */
409
+ public readonly allowedTypesFull: AllowedTypesFull;
410
+
411
+ public get allowedTypesIdentifiers(): ReadonlySet<string> {
412
+ return this.allowedTypesFull.evaluateIdentifiers();
453
413
  }
454
414
 
455
415
  protected constructor(
456
416
  kind: Kind,
457
417
  types: Types,
458
- public readonly annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes,
418
+
459
419
  props?: FieldPropsAlpha<TCustomMetadata>,
460
420
  ) {
461
421
  super(kind, types, props);
462
422
 
463
- this.allowedTypesMetadata = isAnnotatedAllowedTypes(annotatedAllowedTypes)
464
- ? annotatedAllowedTypes.metadata
465
- : {};
466
- this.lazyAnnotatedTypes = new Lazy(() =>
467
- normalizeAnnotatedAllowedTypes(annotatedAllowedTypes),
468
- );
469
- this.lazyIdentifiers = new Lazy(
470
- () =>
471
- new Set(this.annotatedAllowedTypesNormalized.types.map(({ type }) => type.identifier)),
472
- );
423
+ const normalizedTypes = normalizeAllowedTypes(types);
424
+ this.allowedTypesFull = normalizedTypes;
473
425
  this.propsAlpha = props;
474
426
  }
475
-
476
- public get allowedTypesIdentifiers(): ReadonlySet<string> {
477
- return this.lazyIdentifiers.value;
478
- }
479
-
480
- /**
481
- * What types of tree nodes are allowed in this field and their annotations.
482
- * @remarks Counterpart to {@link FieldSchemaAlpha.annotatedAllowedTypes}, with any lazy definitions evaluated.
483
- */
484
- public get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes {
485
- return this.lazyAnnotatedTypes.value;
486
- }
487
427
  }
488
428
 
489
429
  /**
490
- * Normalizes a {@link ImplicitFieldSchema} or {@link ImplicitAnnotatedFieldSchema} to a {@link FieldSchema}.
430
+ * Normalizes a {@link ImplicitFieldSchema} or {@link ImplicitFieldSchema} to a {@link FieldSchema}.
491
431
  * @internal
492
432
  */
493
433
  export function normalizeFieldSchema(
494
- schema: ImplicitFieldSchema | ImplicitAnnotatedFieldSchema,
434
+ schema: ImplicitFieldSchema | ImplicitFieldSchema,
495
435
  ): FieldSchemaAlpha {
496
436
  return schema instanceof FieldSchema
497
437
  ? (schema as FieldSchemaAlpha)
@@ -618,20 +558,6 @@ function arePersistedMetadataEqual(
618
558
  */
619
559
  export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
620
560
 
621
- /**
622
- * {@link ImplicitFieldSchema} which supports {@link AnnotatedAllowedTypes | annotations} on the allowed types.
623
- * @alpha
624
- * @input
625
- */
626
- export type ImplicitAnnotatedFieldSchema = FieldSchema | ImplicitAnnotatedAllowedTypes;
627
-
628
- /**
629
- * Removes annotations from an annotated field schema.
630
- * @system @alpha
631
- */
632
- export type UnannotateImplicitFieldSchema<T extends ImplicitAnnotatedFieldSchema> =
633
- T extends ImplicitAnnotatedAllowedTypes ? UnannotateImplicitAllowedTypes<T> : T;
634
-
635
561
  /**
636
562
  * Converts an `ImplicitFieldSchema` to a property type suitable for reading a field with this that schema.
637
563
  *
@@ -9,7 +9,7 @@ export {
9
9
  type WithType,
10
10
  type TreeNodeSchema,
11
11
  type AnnotatedAllowedType,
12
- type NormalizedAnnotatedAllowedTypes,
12
+ type AllowedTypesFullEvaluated,
13
13
  NodeKind,
14
14
  type TreeNodeSchemaClass,
15
15
  type TreeNodeSchemaNonClass,
@@ -38,12 +38,8 @@ export {
38
38
  normalizeAllowedTypes,
39
39
  type NodeSchemaMetadata,
40
40
  type ImplicitAllowedTypes,
41
- type ImplicitAnnotatedAllowedTypes,
42
- type UnannotateImplicitAllowedTypes,
43
41
  type AllowedTypesMetadata,
44
42
  evaluateLazySchema,
45
- type UnannotateAllowedTypes,
46
- type UnannotateAllowedType,
47
43
  type UnannotateAllowedTypesList,
48
44
  type AllowedTypeMetadata,
49
45
  type AnnotatedAllowedTypes,
@@ -57,6 +53,11 @@ export {
57
53
  type SchemaVisitor,
58
54
  type SimpleNodeSchemaBase,
59
55
  withBufferedTreeEvents,
56
+ type AnnotateAllowedTypesList,
57
+ type AllowedTypesFull,
58
+ type AllowedTypesFullFromMixed,
59
+ AnnotatedAllowedTypesInternal,
60
+ type NumberKeys,
60
61
  } from "./core/index.js";
61
62
  export { walkFieldSchema } from "./walkFieldSchema.js";
62
63
  export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
@@ -73,7 +74,8 @@ export {
73
74
  SchemaFactory,
74
75
  SchemaFactoryBeta,
75
76
  SchemaFactoryAlpha,
76
- type SchemaFactoryObjectOptions,
77
+ type ObjectSchemaOptionsAlpha,
78
+ type ObjectSchemaOptions,
77
79
  type ScopedSchemaName,
78
80
  type ValidateRecursiveSchema,
79
81
  type FixRecursiveArraySchema,
@@ -83,6 +85,9 @@ export {
83
85
  treeNodeApi,
84
86
  type TreeNodeApi,
85
87
  type NodeChangedData,
88
+ borrowCursorFromTreeNodeOrValue,
89
+ exportConcise,
90
+ importConcise,
86
91
  TreeBeta,
87
92
  type TreeChangeEventsBeta,
88
93
  type SimpleTreeIndex,
@@ -184,9 +189,7 @@ export type {
184
189
  } from "./simpleSchema.js";
185
190
  export {
186
191
  type ImplicitFieldSchema,
187
- type ImplicitAnnotatedFieldSchema,
188
192
  type TreeFieldFromImplicitField,
189
- type UnannotateImplicitFieldSchema,
190
193
  FieldKind,
191
194
  FieldSchema,
192
195
  FieldSchemaAlpha,
@@ -226,7 +229,6 @@ export {
226
229
  ObjectNodeSchema,
227
230
  type ObjectNodeSchemaPrivate,
228
231
  isObjectNodeSchema,
229
- type InsertableObjectFromAnnotatedSchemaRecord,
230
232
  type TreeObjectNode,
231
233
  setField,
232
234
  isRecordNodeSchema,
@@ -235,7 +237,6 @@ export {
235
237
  type RecordNodePojoEmulationSchema,
236
238
  RecordNodeSchema,
237
239
  type TreeRecordNode,
238
- type UnannotateSchemaRecord,
239
240
  } from "./node-kinds/index.js";
240
241
  export {
241
242
  unhydratedFlexTreeFromInsertable,
@@ -32,14 +32,11 @@ import {
32
32
  UnhydratedSequenceField,
33
33
  getOrCreateNodeFromInnerUnboxedNode,
34
34
  normalizeAllowedTypes,
35
- unannotateImplicitAllowedTypes,
36
35
  type ImplicitAllowedTypes,
37
- type ImplicitAnnotatedAllowedTypes,
38
36
  type InsertableTreeNodeFromImplicitAllowedTypes,
39
37
  type NodeSchemaMetadata,
40
38
  type TreeLeafValue,
41
39
  type TreeNodeFromImplicitAllowedTypes,
42
- type UnannotateImplicitAllowedTypes,
43
40
  TreeNodeValid,
44
41
  type MostDerivedData,
45
42
  type TreeNodeSchemaInitializedData,
@@ -863,7 +860,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
863
860
 
864
861
  public static readonly kind = NodeKind.Array;
865
862
 
866
- protected abstract get childSchema(): ImplicitAnnotatedAllowedTypes;
863
+ protected abstract get childSchema(): ImplicitAllowedTypes;
867
864
  protected abstract get allowedTypes(): ReadonlySet<TreeNodeSchema>;
868
865
 
869
866
  public abstract override get [typeSchemaSymbol](): TreeNodeSchemaClass<
@@ -1147,7 +1144,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
1147
1144
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
1148
1145
  export function arraySchema<
1149
1146
  TName extends string,
1150
- const T extends ImplicitAnnotatedAllowedTypes,
1147
+ const T extends ImplicitAllowedTypes,
1151
1148
  const ImplicitlyConstructable extends boolean,
1152
1149
  const TCustomMetadata = unknown,
1153
1150
  >(
@@ -1167,18 +1164,16 @@ export function arraySchema<
1167
1164
  ArrayNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> &
1168
1165
  TreeNodeSchemaCorePrivate;
1169
1166
 
1170
- const unannotatedTypes = unannotateImplicitAllowedTypes(info);
1171
-
1172
- const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(unannotatedTypes));
1167
+ const normalizedTypes = normalizeAllowedTypes(info);
1173
1168
  const lazyAllowedTypesIdentifiers = new Lazy(
1174
- () => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
1169
+ () => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
1175
1170
  );
1176
1171
 
1177
1172
  let privateData: TreeNodeSchemaPrivateData | undefined;
1178
1173
 
1179
1174
  // This class returns a proxy from its constructor to handle numeric indexing.
1180
1175
  // Alternatively it could extend a normal class which gets tons of numeric properties added.
1181
- class Schema extends CustomArrayNodeBase<UnannotateImplicitAllowedTypes<T>> {
1176
+ class Schema extends CustomArrayNodeBase<T> {
1182
1177
  public static override prepareInstance<T2>(
1183
1178
  this: typeof TreeNodeValid<T2>,
1184
1179
  instance: TreeNodeValid<T2>,
@@ -1255,7 +1250,7 @@ export function arraySchema<
1255
1250
  public static readonly implicitlyConstructable: ImplicitlyConstructable =
1256
1251
  implicitlyConstructable;
1257
1252
  public static get childTypes(): ReadonlySet<TreeNodeSchema> {
1258
- return lazyChildTypes.value;
1253
+ return normalizedTypes.evaluateSet();
1259
1254
  }
1260
1255
  public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
1261
1256
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
@@ -1273,7 +1268,7 @@ export function arraySchema<
1273
1268
  return info;
1274
1269
  }
1275
1270
  protected get allowedTypes(): ReadonlySet<TreeNodeSchema> {
1276
- return lazyChildTypes.value;
1271
+ return normalizedTypes.evaluateSet();
1277
1272
  }
1278
1273
 
1279
1274
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
@@ -1370,10 +1365,10 @@ function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): Flex
1370
1365
  throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
1371
1366
  }
1372
1367
 
1373
- const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
1368
+ const allowedChildTypes = normalizeAllowedTypes(schema.info);
1374
1369
 
1375
1370
  const mappedData = Array.from(data, (child) =>
1376
- arrayChildToFlexTree(child, allowedChildTypes),
1371
+ arrayChildToFlexTree(child, allowedChildTypes.evaluateSet()),
1377
1372
  );
1378
1373
 
1379
1374
  const context = getUnhydratedContext(schema).flexContext;
@@ -10,9 +10,8 @@ import type {
10
10
  TreeNodeSchema,
11
11
  TreeNodeSchemaNonClass,
12
12
  WithType,
13
- ImplicitAnnotatedAllowedTypes,
13
+ ImplicitAllowedTypes,
14
14
  InsertableTreeNodeFromImplicitAllowedTypes,
15
- UnannotateImplicitAllowedTypes,
16
15
  } from "../../core/index.js";
17
16
 
18
17
  import type { SimpleArrayNodeSchema } from "../../simpleSchema.js";
@@ -23,14 +22,14 @@ import type { SimpleArrayNodeSchema } from "../../simpleSchema.js";
23
22
  */
24
23
  export interface ArrayNodeCustomizableSchema<
25
24
  out TName extends string = string,
26
- in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
25
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
27
26
  out ImplicitlyConstructable extends boolean = true,
28
27
  out TCustomMetadata = unknown,
29
28
  > extends TreeNodeSchemaClass<
30
29
  TName,
31
30
  NodeKind.Array,
32
- TreeArrayNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Array, T>,
33
- Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>,
31
+ TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>,
32
+ Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
34
33
  ImplicitlyConstructable,
35
34
  T,
36
35
  undefined,
@@ -44,14 +43,14 @@ export interface ArrayNodeCustomizableSchema<
44
43
  */
45
44
  export interface ArrayNodePojoEmulationSchema<
46
45
  out TName extends string = string,
47
- in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
46
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
48
47
  out ImplicitlyConstructable extends boolean = true,
49
48
  out TCustomMetadata = unknown,
50
49
  > extends TreeNodeSchemaNonClass<
51
50
  TName,
52
51
  NodeKind.Array,
53
- TreeArrayNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Array, T>,
54
- Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>,
52
+ TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>,
53
+ Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
55
54
  ImplicitlyConstructable,
56
55
  T,
57
56
  undefined,
@@ -12,7 +12,6 @@ import { brand } from "../../util/index.js";
12
12
  import {
13
13
  createField,
14
14
  type UnhydratedFlexTreeField,
15
- unannotateImplicitAllowedTypes,
16
15
  normalizeAllowedTypes,
17
16
  type FlexContent,
18
17
  } from "../core/index.js";
@@ -35,7 +34,7 @@ export function recordLikeDataToFlexContent(
35
34
  fieldsIterator: Iterable<readonly [string, InsertableContent]>,
36
35
  schema: MapNodeSchema | RecordNodeSchema,
37
36
  ): FlexContent {
38
- const allowedChildTypes = normalizeAllowedTypes(unannotateImplicitAllowedTypes(schema.info));
37
+ const allowedChildTypes = normalizeAllowedTypes(schema.info);
39
38
  const context = getUnhydratedContext(schema).flexContext;
40
39
 
41
40
  const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
@@ -45,7 +44,10 @@ export function recordLikeDataToFlexContent(
45
44
 
46
45
  // Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
47
46
  if (value !== undefined) {
48
- const child = unhydratedFlexTreeFromInsertableNode(value, allowedChildTypes);
47
+ const child = unhydratedFlexTreeFromInsertableNode(
48
+ value,
49
+ allowedChildTypes.evaluateSet(),
50
+ );
49
51
  const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
50
52
  transformedFields.set(brand(key), field);
51
53
  }
@@ -27,7 +27,6 @@ export {
27
27
 
28
28
  export {
29
29
  type FieldHasDefault,
30
- type InsertableObjectFromAnnotatedSchemaRecord,
31
30
  type InsertableObjectFromSchemaRecord,
32
31
  isObjectNodeSchema,
33
32
  type ObjectFromSchemaRecord,
@@ -37,7 +36,6 @@ export {
37
36
  setField,
38
37
  type TreeObjectNode,
39
38
  type SimpleKeyMap,
40
- type UnannotateSchemaRecord,
41
39
  } from "./object/index.js";
42
40
 
43
41
  export {