@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
package/.mocharc.cjs CHANGED
@@ -7,7 +7,15 @@
7
7
 
8
8
  const getFluidTestMochaConfig = require("@fluid-internal/mocha-test-setup/mocharc-common");
9
9
 
10
- const config = getFluidTestMochaConfig(__dirname);
10
+ // The default "spec" for this package will include `.../test/mochaHooks.js`.
11
+ // so including it here would be redundant.
12
+ // Additionally adding it as a required module does not work since required modules can not add hooks (see https://github.com/mochajs/mocha/issues/764).
13
+
14
+ const config = getFluidTestMochaConfig(
15
+ __dirname,
16
+ [],
17
+ process.argv.includes("--emulateProduction") ? "PROD" : undefined,
18
+ );
11
19
  // TODO: figure out why this package needs the --exit flag, tests might not be cleaning up correctly after themselves
12
20
  // In this package, tests which use `TestTreeProvider.create` cause this issue, but there might be other cases as well.
13
21
  // AB#7856
@@ -24,6 +24,15 @@ export interface AllowedTypeMetadata {
24
24
  // @public @system
25
25
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
26
26
 
27
+ // @alpha @sealed
28
+ export type AllowedTypesFull<T extends readonly AnnotatedAllowedType[] = readonly AnnotatedAllowedType[]> = AnnotatedAllowedTypes<T> & UnannotateAllowedTypesList<T>;
29
+
30
+ // @alpha @sealed
31
+ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllowedType<TreeNodeSchema>[]>;
32
+
33
+ // @alpha @sealed
34
+ export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
35
+
27
36
  // @alpha @input
28
37
  export interface AllowedTypesMetadata {
29
38
  readonly custom?: unknown;
@@ -32,6 +41,11 @@ export interface AllowedTypesMetadata {
32
41
  // @alpha
33
42
  export function allowUnused<T>(t?: T): void;
34
43
 
44
+ // @alpha @system
45
+ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = {
46
+ [I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
47
+ };
48
+
35
49
  // @alpha @sealed
36
50
  export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
37
51
  readonly metadata: AllowedTypeMetadata;
@@ -39,9 +53,12 @@ export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
39
53
  }
40
54
 
41
55
  // @alpha @sealed
42
- export interface AnnotatedAllowedTypes<T = LazyItem<TreeNodeSchema>> {
56
+ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> extends ErasedBaseType<"tree.AnnotatedAllowedTypes"> {
57
+ evaluate(): AllowedTypesFullEvaluated;
58
+ evaluateIdentifiers(): ReadonlySet<string>;
59
+ evaluateSet(): ReadonlySet<TreeNodeSchema>;
43
60
  readonly metadata: AllowedTypesMetadata;
44
- readonly types: readonly AnnotatedAllowedType<T>[];
61
+ readonly types: T;
45
62
  }
46
63
 
47
64
  // @public @system
@@ -57,7 +74,7 @@ Kind
57
74
  ] extends [FieldKind.Required] ? T : [Kind] extends [FieldKind.Optional] ? T | undefined : [Kind] extends [FieldKind.Identifier] ? DefaultsAreOptional extends true ? T | undefined : T : never;
58
75
 
59
76
  // @alpha @sealed @system
60
- export interface ArrayNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Array, TreeArrayNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Array, T>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleArrayNodeSchema<TCustomMetadata> {
77
+ export interface ArrayNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Array, TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleArrayNodeSchema<TCustomMetadata> {
61
78
  }
62
79
 
63
80
  // @alpha @sealed @system
@@ -67,7 +84,7 @@ export interface ArrayNodeCustomizableSchemaUnsafe<out TName extends string, in
67
84
  }
68
85
 
69
86
  // @alpha @sealed @system
70
- export interface ArrayNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Array, TreeArrayNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Array, T>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleArrayNodeSchema<TCustomMetadata> {
87
+ export interface ArrayNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Array, TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleArrayNodeSchema<TCustomMetadata> {
71
88
  }
72
89
 
73
90
  // @alpha
@@ -119,7 +136,7 @@ export interface CommitMetadata {
119
136
  // @alpha
120
137
  export function comparePersistedSchema(persisted: JsonCompatible, view: ImplicitFieldSchema, options: ICodecOptions): Omit<SchemaCompatibilityStatus, "canInitialize">;
121
138
 
122
- // @alpha
139
+ // @beta
123
140
  export type ConciseTree<THandle = IFluidHandle> = Exclude<TreeLeafValue, IFluidHandle> | THandle | ConciseTree<THandle>[] | {
124
141
  [key: string]: ConciseTree<THandle>;
125
142
  };
@@ -175,7 +192,7 @@ export function evaluateLazySchema<T extends TreeNodeSchema>(value: LazyItem<T>)
175
192
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
176
193
 
177
194
  // @alpha
178
- export function extractPersistedSchema(schema: ImplicitAnnotatedFieldSchema, oldestCompatibleClient: FluidClientVersion, includeStaged: (upgrade: SchemaUpgrade) => boolean): JsonCompatible;
195
+ export function extractPersistedSchema(schema: ImplicitFieldSchema, oldestCompatibleClient: FluidClientVersion, includeStaged: (upgrade: SchemaUpgrade) => boolean): JsonCompatible;
179
196
 
180
197
  // @alpha @system
181
198
  export type FactoryContent = IFluidHandle | string | number | boolean | null | Iterable<readonly [string, InsertableContent]> | readonly InsertableContent[] | FactoryContentObject;
@@ -226,13 +243,10 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
226
243
 
227
244
  // @alpha @sealed
228
245
  export class FieldSchemaAlpha<Kind extends FieldKind = FieldKind, Types extends ImplicitAllowedTypes = ImplicitAllowedTypes, TCustomMetadata = unknown> extends FieldSchema<Kind, Types, TCustomMetadata> implements SimpleFieldSchema {
229
- protected constructor(kind: Kind, types: Types, annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes, props?: FieldPropsAlpha<TCustomMetadata>);
246
+ protected constructor(kind: Kind, types: Types, props?: FieldPropsAlpha<TCustomMetadata>);
247
+ readonly allowedTypesFull: AllowedTypesFull;
230
248
  // (undocumented)
231
249
  get allowedTypesIdentifiers(): ReadonlySet<string>;
232
- readonly allowedTypesMetadata: AllowedTypesMetadata;
233
- // (undocumented)
234
- readonly annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes;
235
- get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes;
236
250
  // (undocumented)
237
251
  get persistedMetadata(): JsonCompatibleReadOnlyObject | undefined;
238
252
  }
@@ -348,12 +362,6 @@ export type IdentifierIndex = SimpleTreeIndex<string, TreeNode>;
348
362
  // @public
349
363
  export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
350
364
 
351
- // @alpha @input
352
- export type ImplicitAnnotatedAllowedTypes = TreeNodeSchema | AnnotatedAllowedType | AnnotatedAllowedTypes | readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[];
353
-
354
- // @alpha @input
355
- export type ImplicitAnnotatedFieldSchema = FieldSchema | ImplicitAnnotatedAllowedTypes;
356
-
357
365
  // @public
358
366
  export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
359
367
 
@@ -382,9 +390,6 @@ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownS
382
390
  TSchema
383
391
  ] extends [ImplicitFieldSchema] ? InsertableTreeFieldFromImplicitField<TSchema> : [TSchema] extends [UnsafeUnknownSchema] ? InsertableContent | undefined : never;
384
392
 
385
- // @alpha @system
386
- export type InsertableObjectFromAnnotatedSchemaRecord<T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>> = InsertableObjectFromSchemaRecord<UnannotateSchemaRecord<T>>;
387
-
388
393
  // @public @system
389
394
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = RestrictiveStringRecord<ImplicitFieldSchema> extends T ? {
390
395
  arbitraryKey: "arbitraryValue";
@@ -399,8 +404,10 @@ export type InsertableTreeFieldFromImplicitField<TSchemaInput extends ImplicitFi
399
404
 
400
405
  // @public @system
401
406
  export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = IsUnion<TList> extends true ? never : {
402
- readonly [Property in keyof TList]: TList[Property] extends LazyItem<infer TSchema extends TreeNodeSchema> ? InsertableTypedNode<TSchema> : never;
403
- }[number];
407
+ readonly [Property in keyof TList]: [TList[Property]] extends [
408
+ LazyItem<infer TSchema extends TreeNodeSchema>
409
+ ] ? InsertableTypedNode<TSchema> : never;
410
+ }[NumberKeys<TList>];
404
411
 
405
412
  // @public
406
413
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
@@ -577,7 +584,7 @@ export type JsonTreeSchema = JsonFieldSchema & {
577
584
  readonly $defs: Record<JsonSchemaId, JsonNodeSchema>;
578
585
  };
579
586
 
580
- // @alpha @input
587
+ // @beta @input
581
588
  export enum KeyEncodingOptions {
582
589
  allStoredKeys = "allStoredKeys",
583
590
  knownStoredKeys = "knownStoredKeys",
@@ -602,7 +609,7 @@ export interface MakeNominal {
602
609
  }
603
610
 
604
611
  // @alpha @sealed @system
605
- export interface MapNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Map, TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>, MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleMapNodeSchema<TCustomMetadata> {
612
+ export interface MapNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Map, TreeMapNode<T> & WithType<TName, NodeKind.Map, T>, MapNodeInsertableData<T>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleMapNodeSchema<TCustomMetadata> {
606
613
  }
607
614
 
608
615
  // @alpha @sealed @system
@@ -620,7 +627,7 @@ export interface MapNodeCustomizableSchemaUnsafe<out TName extends string, in ou
620
627
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
621
628
 
622
629
  // @alpha @sealed @system
623
- export interface MapNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Map, TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>, MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleMapNodeSchema<TCustomMetadata> {
630
+ export interface MapNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Map, TreeMapNode<T> & WithType<TName, NodeKind.Map, T>, MapNodeInsertableData<T>, ImplicitlyConstructable, T, undefined, TCustomMetadata>, SimpleMapNodeSchema<TCustomMetadata> {
624
631
  }
625
632
 
626
633
  // @alpha
@@ -675,9 +682,13 @@ export interface NodeSchemaOptionsAlpha<out TCustomMetadata = unknown> extends N
675
682
  readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
676
683
  }
677
684
 
678
- // @alpha @sealed
679
- export interface NormalizedAnnotatedAllowedTypes extends AnnotatedAllowedTypes<TreeNodeSchema> {
680
- }
685
+ // @alpha
686
+ export function normalizeAllowedTypes(types: ImplicitAllowedTypes): AllowedTypesFull;
687
+
688
+ // @public @system
689
+ export type NumberKeys<T, Transformed = {
690
+ readonly [Property in keyof T as number extends Property ? never : Property]: Property;
691
+ }> = Transformed[`${number}` & keyof Transformed];
681
692
 
682
693
  // @public @system
683
694
  export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = RestrictiveStringRecord<ImplicitFieldSchema> extends T ? {} : {
@@ -685,15 +696,24 @@ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFie
685
696
  };
686
697
 
687
698
  // @alpha @sealed
688
- export interface ObjectNodeSchema<out TName extends string = string, in out T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema> = RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>, ImplicitlyConstructable extends boolean = boolean, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Object, TreeObjectNode<UnannotateSchemaRecord<T>, TName>, InsertableObjectFromAnnotatedSchemaRecord<T>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleObjectNodeSchema<TCustomMetadata> {
699
+ export interface ObjectNodeSchema<out TName extends string = string, in out T extends RestrictiveStringRecord<ImplicitFieldSchema> = RestrictiveStringRecord<ImplicitFieldSchema>, ImplicitlyConstructable extends boolean = boolean, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Object, TreeObjectNode<T, TName>, InsertableObjectFromSchemaRecord<T>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleObjectNodeSchema<TCustomMetadata> {
689
700
  readonly fields: ReadonlyMap<string, FieldSchemaAlpha & SimpleObjectFieldSchema>;
690
701
  }
691
702
 
692
703
  // @alpha (undocumented)
693
704
  export const ObjectNodeSchema: {
694
- readonly [Symbol.hasInstance]: (value: TreeNodeSchema) => value is ObjectNodeSchema<string, RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>, boolean, unknown>;
705
+ readonly [Symbol.hasInstance]: (value: TreeNodeSchema) => value is ObjectNodeSchema<string, RestrictiveStringRecord<ImplicitFieldSchema>, boolean, unknown>;
695
706
  };
696
707
 
708
+ // @beta @input
709
+ export interface ObjectSchemaOptions<TCustomMetadata = unknown> extends NodeSchemaOptions<TCustomMetadata> {
710
+ readonly allowUnknownOptionalFields?: boolean;
711
+ }
712
+
713
+ // @alpha @input
714
+ export interface ObjectSchemaOptionsAlpha<TCustomMetadata = unknown> extends ObjectSchemaOptions<TCustomMetadata>, NodeSchemaOptionsAlpha<TCustomMetadata> {
715
+ }
716
+
697
717
  // @alpha @sealed
698
718
  export interface ObservationResults<TResult> {
699
719
  readonly result: TResult;
@@ -722,22 +742,22 @@ TSchema
722
742
  ] extends [ImplicitFieldSchema] ? TSchema : ImplicitFieldSchema;
723
743
 
724
744
  // @alpha @sealed @system
725
- export interface RecordNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Record, TreeRecordNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Record, T>, RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleRecordNodeSchema<TCustomMetadata> {
745
+ export interface RecordNodeCustomizableSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaClass<TName, NodeKind.Record, TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>, RecordNodeInsertableData<T>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleRecordNodeSchema<TCustomMetadata> {
726
746
  }
727
747
 
728
748
  // @beta @system
729
749
  export type RecordNodeInsertableData<T extends ImplicitAllowedTypes> = RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
730
750
 
731
751
  // @alpha @sealed @system
732
- export interface RecordNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Record, TreeRecordNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Record, T>, RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleRecordNodeSchema<TCustomMetadata> {
752
+ export interface RecordNodePojoEmulationSchema<out TName extends string = string, in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes, out ImplicitlyConstructable extends boolean = true, out TCustomMetadata = unknown> extends TreeNodeSchemaNonClass<TName, NodeKind.Record, TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>, RecordNodeInsertableData<T>, ImplicitlyConstructable, T, never, TCustomMetadata>, SimpleRecordNodeSchema<TCustomMetadata> {
733
753
  }
734
754
 
735
755
  // @alpha
736
- export type RecordNodeSchema<TName extends string = string, T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes, ImplicitlyConstructable extends boolean = true, TCustomMetadata = unknown> = RecordNodeCustomizableSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> | RecordNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata>;
756
+ export type RecordNodeSchema<TName extends string = string, T extends ImplicitAllowedTypes = ImplicitAllowedTypes, ImplicitlyConstructable extends boolean = true, TCustomMetadata = unknown> = RecordNodeCustomizableSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> | RecordNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata>;
737
757
 
738
758
  // @alpha (undocumented)
739
759
  export const RecordNodeSchema: {
740
- readonly [Symbol.hasInstance]: (value: TreeNodeSchema) => value is RecordNodeSchema<string, ImplicitAnnotatedAllowedTypes, true, unknown>;
760
+ readonly [Symbol.hasInstance]: (value: TreeNodeSchema) => value is RecordNodeSchema<string, ImplicitAllowedTypes, true, unknown>;
741
761
  };
742
762
 
743
763
  // @alpha
@@ -850,48 +870,41 @@ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
850
870
 
851
871
  // @alpha
852
872
  export class SchemaFactoryAlpha<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactoryBeta<TScope, TName> {
853
- arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
873
+ arrayAlpha<const Name extends TName, const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
854
874
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
855
875
  static readonly identifier: <const TCustomMetadata = unknown>(props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Identifier, LeafSchema<"string", string> & SimpleLeafNodeSchema, TCustomMetadata>;
856
876
  static readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle_2<unknown>> & SimpleLeafNodeSchema];
857
877
  readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle_2<unknown>> & SimpleLeafNodeSchema];
858
- mapAlpha<Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
878
+ mapAlpha<Name extends TName, const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
859
879
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
860
- objectAlpha<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {
880
+ objectAlpha<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: ObjectSchemaOptionsAlpha<TCustomMetadata>): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {
861
881
  readonly createFromInsertable: unknown;
862
882
  };
863
- objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T, never, TCustomMetadata> & SimpleObjectNodeSchema<TCustomMetadata> & Pick<ObjectNodeSchema, "fields">;
864
- static readonly optional: {
865
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
866
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
867
- };
868
- readonly optional: {
869
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
870
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
871
- };
883
+ objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: ObjectSchemaOptionsAlpha<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T, never, TCustomMetadata> & SimpleObjectNodeSchema<TCustomMetadata> & Pick<ObjectNodeSchema, "fields">;
884
+ static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
885
+ readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
872
886
  static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
873
887
  readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
874
- recordAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): RecordNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
888
+ recordAlpha<const Name extends TName, const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): RecordNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
875
889
  recordRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Record, TreeRecordNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record, unknown>, {
876
890
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
877
891
  }, false, T, undefined, TCustomMetadata>;
878
- static readonly required: {
879
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
880
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
881
- };
882
- readonly required: {
883
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
884
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
885
- };
892
+ static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
893
+ readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
886
894
  static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
887
895
  readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
888
896
  scopedFactoryAlpha<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner>;
889
897
  static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
890
898
  staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
899
+ static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
900
+ types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
891
901
  }
892
902
 
893
903
  // @beta
894
904
  export class SchemaFactoryBeta<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory<TScope, TName> {
905
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: ObjectSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
906
+ // (undocumented)
907
+ objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: ObjectSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
895
908
  record<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Record<${string}>`>, NodeKind.Record, TreeRecordNode<T> & WithType<ScopedSchemaName<TScope, `Record<${string}>`>, NodeKind.Record>, RecordNodeInsertableData<T>, true, T, undefined>;
896
909
  record<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Record, TreeRecordNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record>, RecordNodeInsertableData<T>, true, T, undefined>;
897
910
  recordRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Record, TreeRecordNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record, unknown>, {
@@ -900,11 +913,6 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
900
913
  scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
901
914
  }
902
915
 
903
- // @alpha @input
904
- export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown> extends NodeSchemaOptionsAlpha<TCustomMetadata> {
905
- readonly allowUnknownOptionalFields?: boolean;
906
- }
907
-
908
916
  // @public @sealed @system
909
917
  export interface SchemaStatics {
910
918
  readonly boolean: LeafSchema<"boolean", boolean>;
@@ -927,7 +935,8 @@ export interface SchemaStatics {
927
935
 
928
936
  // @alpha @sealed @system
929
937
  export interface SchemaStaticsAlpha {
930
- staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
938
+ readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
939
+ readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
931
940
  }
932
941
 
933
942
  // @alpha @sealed
@@ -1032,16 +1041,16 @@ export function singletonSchema<TScope extends string, TName extends string | nu
1032
1041
  // @alpha @system
1033
1042
  export namespace System_TableSchema {
1034
1043
  // @sealed @system
1035
- export type ColumnSchemaBase<TScope extends string | undefined = string | undefined, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitAnnotatedFieldSchema = ImplicitAnnotatedFieldSchema> = ReturnType<typeof createColumnSchema<TScope, TCellSchema, TPropsSchema>>;
1044
+ export type ColumnSchemaBase<TScope extends string | undefined = string | undefined, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createColumnSchema<TScope, TCellSchema, TPropsSchema>>;
1036
1045
  // @system
1037
1046
  export type CreateColumnOptionsBase<TSchemaFactory extends SchemaFactoryAlpha = SchemaFactoryAlpha, TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
1038
1047
  // @system
1039
- export function createColumnSchema<const TInputScope extends string | undefined, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitAnnotatedFieldSchema>(inputSchemaFactory: SchemaFactoryAlpha<TInputScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Column">, NodeKind, unknown>, object & {
1048
+ export function createColumnSchema<const TInputScope extends string | undefined, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryAlpha<TInputScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Column">, NodeKind, unknown>, object & {
1040
1049
  readonly id?: string | undefined;
1041
- } & (FieldHasDefault<UnannotateImplicitFieldSchema<TPropsSchema>> extends true ? {
1042
- props?: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TPropsSchema>> | undefined;
1050
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
1051
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
1043
1052
  } : {
1044
- props: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TPropsSchema>>;
1053
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
1045
1054
  }), true, {
1046
1055
  readonly props: TPropsSchema;
1047
1056
  readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
@@ -1049,13 +1058,13 @@ export namespace System_TableSchema {
1049
1058
  // @system
1050
1059
  export type CreateRowOptionsBase<TSchemaFactory extends SchemaFactoryAlpha = SchemaFactoryAlpha, TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
1051
1060
  // @sealed
1052
- export function createRowSchema<const TInputScope extends string | undefined, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitAnnotatedFieldSchema>(inputSchemaFactory: SchemaFactoryAlpha<TInputScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row">, NodeKind, unknown>, object & {
1061
+ export function createRowSchema<const TInputScope extends string | undefined, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryAlpha<TInputScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row">, NodeKind, unknown>, object & {
1053
1062
  readonly id?: string | undefined;
1054
1063
  readonly cells: (InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Record, TreeRecordNode_2<TCellSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined>> | undefined) & InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Record, TreeRecordNode_2<TCellSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined>>;
1055
- } & (FieldHasDefault<UnannotateImplicitFieldSchema<TPropsSchema>> extends true ? {
1056
- props?: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TPropsSchema>> | undefined;
1064
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
1065
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
1057
1066
  } : {
1058
- props: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TPropsSchema>>;
1067
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
1059
1068
  }), true, {
1060
1069
  readonly props: TPropsSchema;
1061
1070
  readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
@@ -1088,7 +1097,7 @@ export namespace System_TableSchema {
1088
1097
  readonly schemaFactory: TSchemaFactory;
1089
1098
  }
1090
1099
  // @sealed @system
1091
- export type RowSchemaBase<TScope extends string | undefined = string | undefined, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitAnnotatedFieldSchema = ImplicitAnnotatedFieldSchema> = ReturnType<typeof createRowSchema<TScope, TCellSchema, TPropsSchema>>;
1100
+ export type RowSchemaBase<TScope extends string | undefined = string | undefined, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createRowSchema<TScope, TCellSchema, TPropsSchema>>;
1092
1101
  // @system
1093
1102
  export type TableFactoryOptionsBase<TSchemaFactory extends SchemaFactoryAlpha = SchemaFactoryAlpha, TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
1094
1103
  // @sealed @system
@@ -1185,17 +1194,17 @@ export namespace TableSchema {
1185
1194
  readonly row: string | TreeNodeFromImplicitAllowedTypes<TRow>;
1186
1195
  }
1187
1196
  // @sealed
1188
- export interface Column<TCell extends ImplicitAllowedTypes, TProps extends ImplicitAnnotatedFieldSchema = ImplicitAnnotatedFieldSchema> {
1197
+ export interface Column<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1189
1198
  getCells(): readonly {
1190
1199
  rowId: string;
1191
1200
  cell: TreeNodeFromImplicitAllowedTypes<TCell>;
1192
1201
  }[];
1193
1202
  readonly id: string;
1194
- get props(): TreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TProps>>;
1195
- set props(value: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TProps>>);
1203
+ get props(): TreeFieldFromImplicitField<TProps>;
1204
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1196
1205
  }
1197
1206
  export function column<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateColumnOptionsBase<SchemaFactoryAlpha<TScope>, TCell>): System_TableSchema.ColumnSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>;
1198
- export function column<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitAnnotatedFieldSchema>(params: System_TableSchema.CreateColumnOptionsBase<SchemaFactoryAlpha<TScope>, TCell> & {
1207
+ export function column<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateColumnOptionsBase<SchemaFactoryAlpha<TScope>, TCell> & {
1199
1208
  readonly props: TProps;
1200
1209
  }): System_TableSchema.ColumnSchemaBase<TScope, TCell, TProps>;
1201
1210
  export interface InsertColumnsParameters<TColumn extends ImplicitAllowedTypes> {
@@ -1207,7 +1216,7 @@ export namespace TableSchema {
1207
1216
  readonly rows: InsertableTreeNodeFromImplicitAllowedTypes<TRow>[];
1208
1217
  }
1209
1218
  // @sealed
1210
- export interface Row<TCell extends ImplicitAllowedTypes, TProps extends ImplicitAnnotatedFieldSchema = ImplicitAnnotatedFieldSchema> {
1219
+ export interface Row<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1211
1220
  getCell(column: Column<TCell>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1212
1221
  getCell(columnId: string): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1213
1222
  getCells(): readonly {
@@ -1215,15 +1224,15 @@ export namespace TableSchema {
1215
1224
  cell: TreeNodeFromImplicitAllowedTypes<TCell>;
1216
1225
  }[];
1217
1226
  readonly id: string;
1218
- get props(): TreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TProps>>;
1219
- set props(value: InsertableTreeFieldFromImplicitField<UnannotateImplicitFieldSchema<TProps>>);
1227
+ get props(): TreeFieldFromImplicitField<TProps>;
1228
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1220
1229
  removeCell(column: Column<TCell>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1221
1230
  removeCell(columnId: string): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1222
1231
  setCell(column: Column<TCell>, value: InsertableTreeNodeFromImplicitAllowedTypes<TCell>): void;
1223
1232
  setCell(columnId: string, value: InsertableTreeNodeFromImplicitAllowedTypes<TCell>): void;
1224
1233
  }
1225
1234
  export function row<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateRowOptionsBase<SchemaFactoryAlpha<TScope>, TCell>): System_TableSchema.RowSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>;
1226
- export function row<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitAnnotatedFieldSchema>(params: System_TableSchema.CreateRowOptionsBase<SchemaFactoryAlpha<TScope>, TCell> & {
1235
+ export function row<const TScope extends string | undefined, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateRowOptionsBase<SchemaFactoryAlpha<TScope>, TCell> & {
1227
1236
  readonly props: TProps;
1228
1237
  }): System_TableSchema.RowSchemaBase<TScope, TCell, TProps>;
1229
1238
  export interface SetCellParameters<TCell extends ImplicitAllowedTypes, TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
@@ -1362,6 +1371,9 @@ export const TreeArrayNode: {
1362
1371
  export interface TreeBeta {
1363
1372
  clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
1364
1373
  create<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: InsertableTreeFieldFromImplicitField<TSchema>): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
1374
+ exportConcise(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): ConciseTree;
1375
+ exportConcise(node: TreeNode | TreeLeafValue | undefined, options?: TreeEncodingOptions): ConciseTree | undefined;
1376
+ importConcise<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: ConciseTree | undefined): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
1365
1377
  on<K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>): () => void;
1366
1378
  }
1367
1379
 
@@ -1408,7 +1420,7 @@ export enum TreeCompressionStrategy {
1408
1420
  Uncompressed = 1
1409
1421
  }
1410
1422
 
1411
- // @alpha @input
1423
+ // @beta @input
1412
1424
  export interface TreeEncodingOptions<TKeyOptions = KeyEncodingOptions> {
1413
1425
  readonly keys?: TKeyOptions;
1414
1426
  }
@@ -1598,26 +1610,9 @@ const typeNameSymbol: unique symbol;
1598
1610
  // @public @system
1599
1611
  export const typeSchemaSymbol: unique symbol;
1600
1612
 
1601
- // @alpha @system
1602
- export type UnannotateAllowedType<T extends AnnotatedAllowedType | LazyItem<TreeNodeSchema>> = T extends AnnotatedAllowedType<infer X> ? X : T;
1603
-
1604
- // @alpha @system
1605
- export type UnannotateAllowedTypes<T extends AnnotatedAllowedTypes> = UnannotateAllowedTypesList<T["types"]>;
1606
-
1607
1613
  // @alpha @system
1608
1614
  export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = {
1609
- [I in keyof T]: UnannotateAllowedType<T[I]>;
1610
- };
1611
-
1612
- // @alpha @system
1613
- export type UnannotateImplicitAllowedTypes<T extends ImplicitAnnotatedAllowedTypes> = T extends AnnotatedAllowedTypes ? UnannotateAllowedTypes<T> : T extends AnnotatedAllowedType ? UnannotateAllowedTypesList<[T]> : T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[] ? UnannotateAllowedTypesList<T> : T extends TreeNodeSchema ? T : ImplicitAllowedTypes;
1614
-
1615
- // @alpha @system
1616
- export type UnannotateImplicitFieldSchema<T extends ImplicitAnnotatedFieldSchema> = T extends ImplicitAnnotatedAllowedTypes ? UnannotateImplicitAllowedTypes<T> : T;
1617
-
1618
- // @alpha @system
1619
- export type UnannotateSchemaRecord<T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>> = {
1620
- readonly [P in Extract<keyof T, string>]: UnannotateImplicitFieldSchema<T[P]>;
1615
+ [I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
1621
1616
  };
1622
1617
 
1623
1618
  // @public
@@ -43,6 +43,11 @@ export interface CommitMetadata {
43
43
  readonly kind: CommitKind;
44
44
  }
45
45
 
46
+ // @beta
47
+ export type ConciseTree<THandle = IFluidHandle> = Exclude<TreeLeafValue, IFluidHandle> | THandle | ConciseTree<THandle>[] | {
48
+ [key: string]: ConciseTree<THandle>;
49
+ };
50
+
46
51
  // @beta
47
52
  export function configuredSharedTreeBeta(options: SharedTreeOptionsBeta): SharedObjectKind<ITree>;
48
53
 
@@ -159,8 +164,10 @@ export type InsertableTreeFieldFromImplicitField<TSchemaInput extends ImplicitFi
159
164
 
160
165
  // @public @system
161
166
  export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = IsUnion<TList> extends true ? never : {
162
- readonly [Property in keyof TList]: TList[Property] extends LazyItem<infer TSchema extends TreeNodeSchema> ? InsertableTypedNode<TSchema> : never;
163
- }[number];
167
+ readonly [Property in keyof TList]: [TList[Property]] extends [
168
+ LazyItem<infer TSchema extends TreeNodeSchema>
169
+ ] ? InsertableTypedNode<TSchema> : never;
170
+ }[NumberKeys<TList>];
164
171
 
165
172
  // @public
166
173
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
@@ -219,6 +226,13 @@ export interface ITreeViewConfiguration<TSchema extends ImplicitFieldSchema = Im
219
226
  readonly schema: TSchema;
220
227
  }
221
228
 
229
+ // @beta @input
230
+ export enum KeyEncodingOptions {
231
+ allStoredKeys = "allStoredKeys",
232
+ knownStoredKeys = "knownStoredKeys",
233
+ usePropertyKeys = "usePropertyKeys"
234
+ }
235
+
222
236
  // @public
223
237
  export type LazyItem<Item = unknown> = Item | (() => Item);
224
238
 
@@ -278,11 +292,21 @@ export interface NodeSchemaOptions<out TCustomMetadata = unknown> {
278
292
  readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
279
293
  }
280
294
 
295
+ // @public @system
296
+ export type NumberKeys<T, Transformed = {
297
+ readonly [Property in keyof T as number extends Property ? never : Property]: Property;
298
+ }> = Transformed[`${number}` & keyof Transformed];
299
+
281
300
  // @public @system
282
301
  export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = RestrictiveStringRecord<ImplicitFieldSchema> extends T ? {} : {
283
302
  -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
284
303
  };
285
304
 
305
+ // @beta @input
306
+ export interface ObjectSchemaOptions<TCustomMetadata = unknown> extends NodeSchemaOptions<TCustomMetadata> {
307
+ readonly allowUnknownOptionalFields?: boolean;
308
+ }
309
+
286
310
  // @public @deprecated
287
311
  export type Off = Off_2;
288
312
 
@@ -384,6 +408,9 @@ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
384
408
 
385
409
  // @beta
386
410
  export class SchemaFactoryBeta<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory<TScope, TName> {
411
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: ObjectSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
412
+ // (undocumented)
413
+ objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: ObjectSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
387
414
  record<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Record<${string}>`>, NodeKind.Record, TreeRecordNode<T> & WithType<ScopedSchemaName<TScope, `Record<${string}>`>, NodeKind.Record>, RecordNodeInsertableData<T>, true, T, undefined>;
388
415
  record<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Record, TreeRecordNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record>, RecordNodeInsertableData<T>, true, T, undefined>;
389
416
  recordRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Record, TreeRecordNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record, unknown>, {
@@ -555,6 +582,9 @@ export const TreeArrayNode: {
555
582
  export interface TreeBeta {
556
583
  clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
557
584
  create<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: InsertableTreeFieldFromImplicitField<TSchema>): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
585
+ exportConcise(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): ConciseTree;
586
+ exportConcise(node: TreeNode | TreeLeafValue | undefined, options?: TreeEncodingOptions): ConciseTree | undefined;
587
+ importConcise<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: ConciseTree | undefined): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
558
588
  on<K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>): () => void;
559
589
  }
560
590
 
@@ -572,6 +602,11 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
572
602
  nodeChanged: (data: NodeChangedData<TNode> & (TNode extends WithType<string, NodeKind.Map | NodeKind.Object | NodeKind.Record> ? Required<Pick<NodeChangedData<TNode>, "changedProperties">> : unknown)) => void;
573
603
  }
574
604
 
605
+ // @beta @input
606
+ export interface TreeEncodingOptions<TKeyOptions = KeyEncodingOptions> {
607
+ readonly keys?: TKeyOptions;
608
+ }
609
+
575
610
  // @public
576
611
  export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
577
612