@fluidframework/tree 2.33.2 → 2.40.0-336023

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 (315) hide show
  1. package/.vscode/settings.json +2 -0
  2. package/api-report/tree.alpha.api.md +120 -50
  3. package/api-report/tree.beta.api.md +31 -27
  4. package/api-report/tree.legacy.alpha.api.md +24 -23
  5. package/api-report/tree.legacy.public.api.md +24 -23
  6. package/api-report/tree.public.api.md +24 -23
  7. package/dist/alpha.d.ts +16 -1
  8. package/dist/beta.d.ts +2 -0
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/internalTypes.d.ts +0 -1
  13. package/dist/internalTypes.d.ts.map +1 -1
  14. package/dist/internalTypes.js.map +1 -1
  15. package/dist/jsonDomainSchema.d.ts +2 -2
  16. package/dist/jsonDomainSchema.js +2 -2
  17. package/dist/jsonDomainSchema.js.map +1 -1
  18. package/dist/legacy.d.ts +2 -0
  19. package/dist/packageVersion.d.ts +1 -1
  20. package/dist/packageVersion.d.ts.map +1 -1
  21. package/dist/packageVersion.js +1 -1
  22. package/dist/packageVersion.js.map +1 -1
  23. package/dist/public.d.ts +2 -0
  24. package/dist/serializableDomainSchema.d.ts +3 -3
  25. package/dist/serializableDomainSchema.js +2 -2
  26. package/dist/serializableDomainSchema.js.map +1 -1
  27. package/dist/shared-tree/independentView.d.ts +1 -1
  28. package/dist/shared-tree/independentView.js.map +1 -1
  29. package/dist/shared-tree/index.d.ts +3 -2
  30. package/dist/shared-tree/index.d.ts.map +1 -1
  31. package/dist/shared-tree/index.js +4 -4
  32. package/dist/shared-tree/index.js.map +1 -1
  33. package/dist/shared-tree/schematizeTree.d.ts +4 -4
  34. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  35. package/dist/shared-tree/schematizeTree.js +2 -3
  36. package/dist/shared-tree/schematizeTree.js.map +1 -1
  37. package/dist/shared-tree/schematizingTreeView.d.ts +3 -3
  38. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  39. package/dist/shared-tree/schematizingTreeView.js +4 -4
  40. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  41. package/dist/shared-tree/{treeApi.d.ts → tree.d.ts} +34 -34
  42. package/dist/shared-tree/tree.d.ts.map +1 -0
  43. package/dist/shared-tree/{treeApi.js → tree.js} +6 -6
  44. package/dist/shared-tree/tree.js.map +1 -0
  45. package/dist/shared-tree/{treeApiAlpha.d.ts → treeAlpha.d.ts} +22 -14
  46. package/dist/shared-tree/treeAlpha.d.ts.map +1 -0
  47. package/dist/shared-tree/{treeApiAlpha.js → treeAlpha.js} +4 -3
  48. package/dist/shared-tree/treeAlpha.js.map +1 -0
  49. package/dist/simple-tree/api/conciseTree.d.ts +1 -1
  50. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  51. package/dist/simple-tree/api/configuration.d.ts +177 -0
  52. package/dist/simple-tree/api/configuration.d.ts.map +1 -0
  53. package/dist/simple-tree/api/configuration.js +163 -0
  54. package/dist/simple-tree/api/configuration.js.map +1 -0
  55. package/dist/simple-tree/api/getJsonSchema.js +2 -2
  56. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  57. package/dist/simple-tree/api/index.d.ts +7 -4
  58. package/dist/simple-tree/api/index.d.ts.map +1 -1
  59. package/dist/simple-tree/api/index.js +8 -7
  60. package/dist/simple-tree/api/index.js.map +1 -1
  61. package/dist/simple-tree/api/{view.d.ts → schemaCompatibilityTester.d.ts} +8 -10
  62. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -0
  63. package/dist/simple-tree/api/{view.js → schemaCompatibilityTester.js} +9 -9
  64. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -0
  65. package/dist/simple-tree/api/schemaFactory.d.ts +16 -10
  66. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  67. package/dist/simple-tree/api/schemaFactory.js +20 -12
  68. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  69. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +12 -6
  70. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  71. package/dist/simple-tree/api/schemaFactoryAlpha.js +2 -2
  72. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  73. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +67 -4
  74. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  75. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  76. package/dist/simple-tree/api/schemaFromSimple.d.ts +1 -1
  77. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  78. package/dist/simple-tree/api/schemaFromSimple.js +1 -1
  79. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  80. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
  81. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  82. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  83. package/dist/simple-tree/api/storedSchema.d.ts +3 -3
  84. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  85. package/dist/simple-tree/api/storedSchema.js +3 -2
  86. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  87. package/dist/simple-tree/api/tree.d.ts +5 -174
  88. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  89. package/dist/simple-tree/api/tree.js +1 -156
  90. package/dist/simple-tree/api/tree.js.map +1 -1
  91. package/{lib/simple-tree/api/treeApiBeta.d.ts → dist/simple-tree/api/treeBeta.d.ts} +13 -5
  92. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -0
  93. package/dist/simple-tree/api/{treeApiBeta.js → treeBeta.js} +5 -4
  94. package/dist/simple-tree/api/treeBeta.js.map +1 -0
  95. package/dist/simple-tree/api/typesUnsafe.d.ts +4 -9
  96. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  97. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  98. package/dist/simple-tree/arrayNode.d.ts +2 -2
  99. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  100. package/dist/simple-tree/arrayNode.js +3 -2
  101. package/dist/simple-tree/arrayNode.js.map +1 -1
  102. package/dist/simple-tree/arrayNodeTypes.d.ts +3 -3
  103. package/dist/simple-tree/arrayNodeTypes.d.ts.map +1 -1
  104. package/dist/simple-tree/arrayNodeTypes.js.map +1 -1
  105. package/dist/simple-tree/index.d.ts +3 -3
  106. package/dist/simple-tree/index.d.ts.map +1 -1
  107. package/dist/simple-tree/index.js +2 -2
  108. package/dist/simple-tree/index.js.map +1 -1
  109. package/dist/simple-tree/mapNode.d.ts +2 -2
  110. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  111. package/dist/simple-tree/mapNode.js +1 -1
  112. package/dist/simple-tree/mapNode.js.map +1 -1
  113. package/dist/simple-tree/mapNodeTypes.d.ts +3 -3
  114. package/dist/simple-tree/mapNodeTypes.d.ts.map +1 -1
  115. package/dist/simple-tree/mapNodeTypes.js.map +1 -1
  116. package/dist/simple-tree/objectNode.d.ts +18 -5
  117. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  118. package/dist/simple-tree/objectNode.js +4 -3
  119. package/dist/simple-tree/objectNode.js.map +1 -1
  120. package/dist/simple-tree/objectNodeTypes.d.ts +4 -4
  121. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  122. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  123. package/dist/simple-tree/schemaTypes.d.ts +163 -13
  124. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  125. package/dist/simple-tree/schemaTypes.js +107 -8
  126. package/dist/simple-tree/schemaTypes.js.map +1 -1
  127. package/dist/simple-tree/treeNodeValid.js +2 -2
  128. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  129. package/dist/tableSchema.d.ts +197 -86
  130. package/dist/tableSchema.d.ts.map +1 -1
  131. package/dist/tableSchema.js +100 -45
  132. package/dist/tableSchema.js.map +1 -1
  133. package/dist/util/typeUtils.d.ts +1 -1
  134. package/dist/util/typeUtils.js.map +1 -1
  135. package/lib/alpha.d.ts +16 -1
  136. package/lib/beta.d.ts +2 -0
  137. package/lib/index.d.ts +2 -2
  138. package/lib/index.d.ts.map +1 -1
  139. package/lib/index.js.map +1 -1
  140. package/lib/internalTypes.d.ts +0 -1
  141. package/lib/internalTypes.d.ts.map +1 -1
  142. package/lib/internalTypes.js.map +1 -1
  143. package/lib/jsonDomainSchema.d.ts +2 -2
  144. package/lib/jsonDomainSchema.js +2 -2
  145. package/lib/jsonDomainSchema.js.map +1 -1
  146. package/lib/legacy.d.ts +2 -0
  147. package/lib/packageVersion.d.ts +1 -1
  148. package/lib/packageVersion.d.ts.map +1 -1
  149. package/lib/packageVersion.js +1 -1
  150. package/lib/packageVersion.js.map +1 -1
  151. package/lib/public.d.ts +2 -0
  152. package/lib/serializableDomainSchema.d.ts +3 -3
  153. package/lib/serializableDomainSchema.js +2 -2
  154. package/lib/serializableDomainSchema.js.map +1 -1
  155. package/lib/shared-tree/independentView.d.ts +1 -1
  156. package/lib/shared-tree/independentView.js.map +1 -1
  157. package/lib/shared-tree/index.d.ts +3 -2
  158. package/lib/shared-tree/index.d.ts.map +1 -1
  159. package/lib/shared-tree/index.js +2 -2
  160. package/lib/shared-tree/index.js.map +1 -1
  161. package/lib/shared-tree/schematizeTree.d.ts +4 -4
  162. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  163. package/lib/shared-tree/schematizeTree.js +2 -3
  164. package/lib/shared-tree/schematizeTree.js.map +1 -1
  165. package/lib/shared-tree/schematizingTreeView.d.ts +3 -3
  166. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  167. package/lib/shared-tree/schematizingTreeView.js +5 -5
  168. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  169. package/lib/shared-tree/{treeApi.d.ts → tree.d.ts} +34 -34
  170. package/lib/shared-tree/tree.d.ts.map +1 -0
  171. package/lib/shared-tree/{treeApi.js → tree.js} +5 -5
  172. package/lib/shared-tree/tree.js.map +1 -0
  173. package/lib/shared-tree/{treeApiAlpha.d.ts → treeAlpha.d.ts} +22 -14
  174. package/lib/shared-tree/treeAlpha.d.ts.map +1 -0
  175. package/lib/shared-tree/{treeApiAlpha.js → treeAlpha.js} +4 -3
  176. package/lib/shared-tree/treeAlpha.js.map +1 -0
  177. package/lib/simple-tree/api/conciseTree.d.ts +1 -1
  178. package/lib/simple-tree/api/conciseTree.js.map +1 -1
  179. package/lib/simple-tree/api/configuration.d.ts +177 -0
  180. package/lib/simple-tree/api/configuration.d.ts.map +1 -0
  181. package/lib/simple-tree/api/configuration.js +157 -0
  182. package/lib/simple-tree/api/configuration.js.map +1 -0
  183. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  184. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  185. package/lib/simple-tree/api/index.d.ts +7 -4
  186. package/lib/simple-tree/api/index.d.ts.map +1 -1
  187. package/lib/simple-tree/api/index.js +4 -3
  188. package/lib/simple-tree/api/index.js.map +1 -1
  189. package/lib/simple-tree/api/{view.d.ts → schemaCompatibilityTester.d.ts} +8 -10
  190. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -0
  191. package/lib/simple-tree/api/{view.js → schemaCompatibilityTester.js} +7 -7
  192. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -0
  193. package/lib/simple-tree/api/schemaFactory.d.ts +16 -10
  194. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  195. package/lib/simple-tree/api/schemaFactory.js +20 -12
  196. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  197. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +12 -6
  198. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  199. package/lib/simple-tree/api/schemaFactoryAlpha.js +2 -2
  200. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  201. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +67 -4
  202. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  203. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  204. package/lib/simple-tree/api/schemaFromSimple.d.ts +1 -1
  205. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  206. package/lib/simple-tree/api/schemaFromSimple.js +1 -1
  207. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  208. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
  209. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  210. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  211. package/lib/simple-tree/api/storedSchema.d.ts +3 -3
  212. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  213. package/lib/simple-tree/api/storedSchema.js +3 -2
  214. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  215. package/lib/simple-tree/api/tree.d.ts +5 -174
  216. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  217. package/lib/simple-tree/api/tree.js +0 -152
  218. package/lib/simple-tree/api/tree.js.map +1 -1
  219. package/{dist/simple-tree/api/treeApiBeta.d.ts → lib/simple-tree/api/treeBeta.d.ts} +13 -5
  220. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -0
  221. package/lib/simple-tree/api/{treeApiBeta.js → treeBeta.js} +5 -4
  222. package/lib/simple-tree/api/treeBeta.js.map +1 -0
  223. package/lib/simple-tree/api/typesUnsafe.d.ts +4 -9
  224. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  225. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  226. package/lib/simple-tree/arrayNode.d.ts +2 -2
  227. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  228. package/lib/simple-tree/arrayNode.js +4 -3
  229. package/lib/simple-tree/arrayNode.js.map +1 -1
  230. package/lib/simple-tree/arrayNodeTypes.d.ts +3 -3
  231. package/lib/simple-tree/arrayNodeTypes.d.ts.map +1 -1
  232. package/lib/simple-tree/arrayNodeTypes.js.map +1 -1
  233. package/lib/simple-tree/index.d.ts +3 -3
  234. package/lib/simple-tree/index.d.ts.map +1 -1
  235. package/lib/simple-tree/index.js +1 -1
  236. package/lib/simple-tree/index.js.map +1 -1
  237. package/lib/simple-tree/mapNode.d.ts +2 -2
  238. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  239. package/lib/simple-tree/mapNode.js +2 -2
  240. package/lib/simple-tree/mapNode.js.map +1 -1
  241. package/lib/simple-tree/mapNodeTypes.d.ts +3 -3
  242. package/lib/simple-tree/mapNodeTypes.d.ts.map +1 -1
  243. package/lib/simple-tree/mapNodeTypes.js.map +1 -1
  244. package/lib/simple-tree/objectNode.d.ts +18 -5
  245. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  246. package/lib/simple-tree/objectNode.js +5 -4
  247. package/lib/simple-tree/objectNode.js.map +1 -1
  248. package/lib/simple-tree/objectNodeTypes.d.ts +4 -4
  249. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  250. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  251. package/lib/simple-tree/schemaTypes.d.ts +163 -13
  252. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  253. package/lib/simple-tree/schemaTypes.js +96 -8
  254. package/lib/simple-tree/schemaTypes.js.map +1 -1
  255. package/lib/simple-tree/treeNodeValid.js +2 -2
  256. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  257. package/lib/tableSchema.d.ts +197 -86
  258. package/lib/tableSchema.d.ts.map +1 -1
  259. package/lib/tableSchema.js +100 -45
  260. package/lib/tableSchema.js.map +1 -1
  261. package/lib/util/typeUtils.d.ts +1 -1
  262. package/lib/util/typeUtils.js.map +1 -1
  263. package/package.json +20 -20
  264. package/src/index.ts +17 -1
  265. package/src/internalTypes.ts +0 -2
  266. package/src/jsonDomainSchema.ts +2 -2
  267. package/src/packageVersion.ts +1 -1
  268. package/src/serializableDomainSchema.ts +3 -3
  269. package/src/shared-tree/independentView.ts +1 -1
  270. package/src/shared-tree/index.ts +3 -6
  271. package/src/shared-tree/schematizeTree.ts +5 -5
  272. package/src/shared-tree/schematizingTreeView.ts +11 -8
  273. package/src/shared-tree/{treeApi.ts → tree.ts} +51 -51
  274. package/src/shared-tree/{treeApiAlpha.ts → treeAlpha.ts} +22 -13
  275. package/src/simple-tree/api/conciseTree.ts +1 -1
  276. package/src/simple-tree/api/configuration.ts +353 -0
  277. package/src/simple-tree/api/getJsonSchema.ts +1 -1
  278. package/src/simple-tree/api/index.ts +21 -15
  279. package/src/simple-tree/api/{view.ts → schemaCompatibilityTester.ts} +8 -15
  280. package/src/simple-tree/api/schemaFactory.ts +130 -19
  281. package/src/simple-tree/api/schemaFactoryAlpha.ts +7 -5
  282. package/src/simple-tree/api/schemaFactoryRecursive.ts +102 -38
  283. package/src/simple-tree/api/schemaFromSimple.ts +2 -2
  284. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +1 -1
  285. package/src/simple-tree/api/storedSchema.ts +8 -4
  286. package/src/simple-tree/api/tree.ts +13 -354
  287. package/src/simple-tree/api/{treeApiBeta.ts → treeBeta.ts} +17 -5
  288. package/src/simple-tree/api/typesUnsafe.ts +15 -11
  289. package/src/simple-tree/arrayNode.ts +10 -5
  290. package/src/simple-tree/arrayNodeTypes.ts +8 -7
  291. package/src/simple-tree/index.ts +17 -1
  292. package/src/simple-tree/mapNode.ts +11 -3
  293. package/src/simple-tree/mapNodeTypes.ts +10 -7
  294. package/src/simple-tree/objectNode.ts +39 -15
  295. package/src/simple-tree/objectNodeTypes.ts +9 -5
  296. package/src/simple-tree/schemaTypes.ts +353 -25
  297. package/src/simple-tree/treeNodeValid.ts +2 -2
  298. package/src/tableSchema.ts +749 -445
  299. package/src/util/typeUtils.ts +1 -1
  300. package/dist/shared-tree/treeApi.d.ts.map +0 -1
  301. package/dist/shared-tree/treeApi.js.map +0 -1
  302. package/dist/shared-tree/treeApiAlpha.d.ts.map +0 -1
  303. package/dist/shared-tree/treeApiAlpha.js.map +0 -1
  304. package/dist/simple-tree/api/treeApiBeta.d.ts.map +0 -1
  305. package/dist/simple-tree/api/treeApiBeta.js.map +0 -1
  306. package/dist/simple-tree/api/view.d.ts.map +0 -1
  307. package/dist/simple-tree/api/view.js.map +0 -1
  308. package/lib/shared-tree/treeApi.d.ts.map +0 -1
  309. package/lib/shared-tree/treeApi.js.map +0 -1
  310. package/lib/shared-tree/treeApiAlpha.d.ts.map +0 -1
  311. package/lib/shared-tree/treeApiAlpha.js.map +0 -1
  312. package/lib/simple-tree/api/treeApiBeta.d.ts.map +0 -1
  313. package/lib/simple-tree/api/treeApiBeta.js.map +0 -1
  314. package/lib/simple-tree/api/view.d.ts.map +0 -1
  315. package/lib/simple-tree/api/view.js.map +0 -1
@@ -15,10 +15,13 @@ import {
15
15
  createFieldSchema,
16
16
  FieldKind,
17
17
  normalizeAllowedTypes,
18
+ unannotateImplicitAllowedTypes,
18
19
  type ImplicitAllowedTypes,
20
+ type ImplicitAnnotatedAllowedTypes,
19
21
  type InsertableTreeNodeFromImplicitAllowedTypes,
20
22
  type NodeSchemaMetadata,
21
23
  type TreeNodeFromImplicitAllowedTypes,
24
+ type UnannotateImplicitAllowedTypes,
22
25
  } from "./schemaTypes.js";
23
26
  import {
24
27
  getKernel,
@@ -233,7 +236,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
233
236
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
234
237
  export function mapSchema<
235
238
  TName extends string,
236
- const T extends ImplicitAllowedTypes,
239
+ const T extends ImplicitAnnotatedAllowedTypes,
237
240
  const ImplicitlyConstructable extends boolean,
238
241
  const TCustomMetadata = unknown,
239
242
  >(
@@ -243,14 +246,19 @@ export function mapSchema<
243
246
  useMapPrototype: boolean,
244
247
  metadata?: NodeSchemaMetadata<TCustomMetadata>,
245
248
  ) {
246
- const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(info));
249
+ const lazyChildTypes = new Lazy(() =>
250
+ normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
251
+ );
247
252
  const lazyAllowedTypesIdentifiers = new Lazy(
248
253
  () => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
249
254
  );
250
255
 
251
256
  let unhydratedContext: Context;
252
257
 
253
- class Schema extends CustomMapNodeBase<T> implements TreeMapNode<T> {
258
+ class Schema
259
+ extends CustomMapNodeBase<UnannotateImplicitAllowedTypes<T>>
260
+ implements TreeMapNode<UnannotateImplicitAllowedTypes<T>>
261
+ {
254
262
  public static override prepareInstance<T2>(
255
263
  this: typeof TreeNodeValid<T2>,
256
264
  instance: TreeNodeValid<T2>,
@@ -4,7 +4,10 @@
4
4
  */
5
5
 
6
6
  import type { MapNodeInsertableData, TreeMapNode } from "./mapNode.js";
7
- import type { ImplicitAllowedTypes } from "./schemaTypes.js";
7
+ import type {
8
+ ImplicitAnnotatedAllowedTypes,
9
+ UnannotateImplicitAllowedTypes,
10
+ } from "./schemaTypes.js";
8
11
  import {
9
12
  NodeKind,
10
13
  type TreeNodeSchemaClass,
@@ -21,14 +24,14 @@ import type { SimpleMapNodeSchema } from "./simpleSchema.js";
21
24
  */
22
25
  export interface MapNodeCustomizableSchema<
23
26
  out TName extends string = string,
24
- in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
27
+ in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
25
28
  out ImplicitlyConstructable extends boolean = true,
26
29
  out TCustomMetadata = unknown,
27
30
  > extends TreeNodeSchemaClass<
28
31
  TName,
29
32
  NodeKind.Map,
30
- TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
31
- MapNodeInsertableData<T>,
33
+ TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>,
34
+ MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
32
35
  ImplicitlyConstructable,
33
36
  T,
34
37
  undefined,
@@ -42,14 +45,14 @@ export interface MapNodeCustomizableSchema<
42
45
  */
43
46
  export interface MapNodePojoEmulationSchema<
44
47
  out TName extends string = string,
45
- in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
48
+ in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
46
49
  out ImplicitlyConstructable extends boolean = true,
47
50
  out TCustomMetadata = unknown,
48
51
  > extends TreeNodeSchemaNonClass<
49
52
  TName,
50
53
  NodeKind.Map,
51
- TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
52
- MapNodeInsertableData<T>,
54
+ TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>,
55
+ MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
53
56
  ImplicitlyConstructable,
54
57
  T,
55
58
  undefined,
@@ -29,6 +29,9 @@ import {
29
29
  type NodeSchemaMetadata,
30
30
  type FieldSchemaAlpha,
31
31
  ObjectFieldSchema,
32
+ type ImplicitAnnotatedFieldSchema,
33
+ unannotateSchemaRecord,
34
+ type UnannotateSchemaRecord,
32
35
  } from "./schemaTypes.js";
33
36
  import {
34
37
  type TreeNodeSchema,
@@ -59,7 +62,7 @@ import type { SimpleObjectFieldSchema } from "./simpleSchema.js";
59
62
  * @remarks
60
63
  * Due to {@link https://github.com/microsoft/TypeScript/issues/43826}, we can't enable implicit construction of {@link TreeNode|TreeNodes} for setters.
61
64
  * Therefore code assigning to these fields must explicitly construct nodes using the schema's constructor or create method,
62
- * or using some other method like {@link TreeAlpha.create}.
65
+ * or using some other method like {@link (TreeAlpha:interface).create}.
63
66
  * @system @public
64
67
  */
65
68
  export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> =
@@ -92,7 +95,9 @@ export type TreeObjectNode<
92
95
  > = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
93
96
 
94
97
  /**
95
- * Type utility for determining whether or not an implicit field schema has a default value.
98
+ * Type utility for determining if an implicit field schema is known to have a default value.
99
+ *
100
+ * @remarks Yields `false` when unknown.
96
101
  *
97
102
  * @privateRemarks
98
103
  * TODO: Account for field schemas with default value providers.
@@ -100,9 +105,9 @@ export type TreeObjectNode<
100
105
  *
101
106
  * @system @public
102
107
  */
103
- export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<
104
- FieldKind.Optional | FieldKind.Identifier
105
- >
108
+ export type FieldHasDefault<T extends ImplicitFieldSchema> = [T] extends [
109
+ FieldSchema<FieldKind.Optional | FieldKind.Identifier>,
110
+ ]
106
111
  ? true
107
112
  : false;
108
113
 
@@ -154,6 +159,18 @@ export type InsertableObjectFromSchemaRecord<
154
159
  }
155
160
  >;
156
161
 
162
+ /**
163
+ * Helper used to remove annotations from a schema record and produce insertable objects,
164
+ *
165
+ * @privateremarks
166
+ * This calls {@link InsertableObjectFromSchemaRecord} in order to produce the insertable objects.
167
+ *
168
+ * @system @alpha
169
+ */
170
+ export type InsertableObjectFromAnnotatedSchemaRecord<
171
+ T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
172
+ > = InsertableObjectFromSchemaRecord<UnannotateSchemaRecord<T>>;
173
+
157
174
  /**
158
175
  * Maps from simple field keys ("property" keys) to information about the field.
159
176
  *
@@ -354,7 +371,7 @@ abstract class CustomObjectNodeBase<
354
371
  */
355
372
  export function objectSchema<
356
373
  TName extends string,
357
- const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
374
+ const T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
358
375
  const ImplicitlyConstructable extends boolean,
359
376
  const TCustomMetadata = unknown,
360
377
  >(
@@ -368,12 +385,14 @@ export function objectSchema<
368
385
  // Field set can't be modified after this since derived data is stored in maps.
369
386
  Object.freeze(info);
370
387
 
388
+ const unannotatedInfo = unannotateSchemaRecord(info);
389
+
371
390
  // Ensure no collisions between final set of property keys, and final set of stored keys (including those
372
391
  // implicitly derived from property keys)
373
- assertUniqueKeys(identifier, info);
392
+ assertUniqueKeys(identifier, unannotatedInfo);
374
393
 
375
394
  // Performance optimization: cache property key => stored key and schema.
376
- const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(info);
395
+ const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(unannotatedInfo);
377
396
 
378
397
  const identifierFieldKeys: FieldKey[] = [];
379
398
  for (const item of flexKeyMap.values()) {
@@ -390,17 +409,22 @@ export function objectSchema<
390
409
  let customizable: boolean;
391
410
  let unhydratedContext: Context;
392
411
 
393
- class CustomObjectNode extends CustomObjectNodeBase<T> {
412
+ class CustomObjectNode extends CustomObjectNodeBase<UnannotateSchemaRecord<T>> {
394
413
  public static readonly fields: ReadonlyMap<
395
414
  string,
396
415
  FieldSchemaAlpha & SimpleObjectFieldSchema
397
416
  > = new Map(
398
417
  Array.from(flexKeyMap, ([key, value]) => [
399
418
  key as string,
400
- new ObjectFieldSchema(value.schema.kind, value.schema.allowedTypes, {
401
- ...value.schema.props,
402
- key: getStoredKey(key as string, value.schema),
403
- }),
419
+ new ObjectFieldSchema(
420
+ value.schema.kind,
421
+ value.schema.allowedTypes,
422
+ (value.schema as FieldSchemaAlpha).annotatedAllowedTypes,
423
+ {
424
+ ...value.schema.props,
425
+ key: getStoredKey(key as string, value.schema),
426
+ },
427
+ ),
404
428
  ]),
405
429
  );
406
430
  public static readonly flexKeyMap: SimpleKeyMap = flexKeyMap;
@@ -513,8 +537,8 @@ export function objectSchema<
513
537
  }
514
538
  type Output = typeof CustomObjectNode &
515
539
  (new (
516
- input: InsertableObjectFromSchemaRecord<T> | InternalTreeNode,
517
- ) => TreeObjectNode<T, TName>);
540
+ input: InsertableObjectFromAnnotatedSchemaRecord<T> | InternalTreeNode,
541
+ ) => TreeObjectNode<UnannotateSchemaRecord<T>, TName>);
518
542
  return CustomObjectNode as Output;
519
543
  }
520
544
 
@@ -6,10 +6,14 @@
6
6
  import type { RestrictiveStringRecord } from "../util/index.js";
7
7
  import type {
8
8
  TreeObjectNode,
9
- InsertableObjectFromSchemaRecord,
10
9
  SimpleKeyMap,
10
+ InsertableObjectFromAnnotatedSchemaRecord,
11
11
  } from "./objectNode.js";
12
- import type { ImplicitFieldSchema, FieldSchemaAlpha } from "./schemaTypes.js";
12
+ import type {
13
+ FieldSchemaAlpha,
14
+ ImplicitAnnotatedFieldSchema,
15
+ UnannotateSchemaRecord,
16
+ } from "./schemaTypes.js";
13
17
  import { NodeKind, type TreeNodeSchemaClass, type TreeNodeSchema } from "./core/index.js";
14
18
  import type { FieldKey } from "../core/index.js";
15
19
  import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "./simpleSchema.js";
@@ -22,14 +26,14 @@ import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "./simpleSc
22
26
  export interface ObjectNodeSchema<
23
27
  out TName extends string = string,
24
28
  in out T extends
25
- RestrictiveStringRecord<ImplicitFieldSchema> = RestrictiveStringRecord<ImplicitFieldSchema>,
29
+ RestrictiveStringRecord<ImplicitAnnotatedFieldSchema> = RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
26
30
  ImplicitlyConstructable extends boolean = boolean,
27
31
  out TCustomMetadata = unknown,
28
32
  > extends TreeNodeSchemaClass<
29
33
  TName,
30
34
  NodeKind.Object,
31
- TreeObjectNode<T, TName>,
32
- InsertableObjectFromSchemaRecord<T>,
35
+ TreeObjectNode<UnannotateSchemaRecord<T>, TName>,
36
+ InsertableObjectFromAnnotatedSchemaRecord<T>,
33
37
  ImplicitlyConstructable,
34
38
  T,
35
39
  never,