@fluidframework/tree 2.30.0 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/CHANGELOG.md +1632 -1500
  2. package/api-extractor/api-extractor.current.json +0 -3
  3. package/api-report/tree.alpha.api.md +233 -88
  4. package/api-report/tree.beta.api.md +86 -61
  5. package/api-report/tree.legacy.alpha.api.md +86 -61
  6. package/api-report/tree.legacy.public.api.md +86 -61
  7. package/api-report/tree.public.api.md +86 -61
  8. package/dist/alpha.d.ts +26 -1
  9. package/dist/beta.d.ts +5 -1
  10. package/dist/codec/codec.d.ts +1 -1
  11. package/dist/codec/codec.d.ts.map +1 -1
  12. package/dist/codec/codec.js +3 -4
  13. package/dist/codec/codec.js.map +1 -1
  14. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  15. package/dist/codec/discriminatedUnions.js +1 -1
  16. package/dist/codec/discriminatedUnions.js.map +1 -1
  17. package/dist/core/rebase/utils.js +1 -1
  18. package/dist/core/rebase/utils.js.map +1 -1
  19. package/dist/core/schema-stored/schema.d.ts +4 -1
  20. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  21. package/dist/core/schema-stored/schema.js +8 -4
  22. package/dist/core/schema-stored/schema.js.map +1 -1
  23. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  24. package/dist/core/tree/anchorSet.js +4 -4
  25. package/dist/core/tree/anchorSet.js.map +1 -1
  26. package/dist/core/tree/treeTextFormat.js +2 -2
  27. package/dist/core/tree/treeTextFormat.js.map +1 -1
  28. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/basicChunk.js +8 -8
  30. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -2
  32. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  35. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  36. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +3 -3
  37. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
  39. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  40. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  41. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  42. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -4
  44. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  46. package/dist/feature-libraries/chunked-forest/emptyChunk.js +15 -15
  47. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  48. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/uniformChunk.js +4 -4
  50. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  51. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  52. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +19 -19
  53. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  54. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  55. package/dist/feature-libraries/default-schema/schemaChecker.js +1 -2
  56. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  57. package/dist/feature-libraries/flex-tree/lazyField.js +3 -3
  58. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  59. package/dist/feature-libraries/flex-tree/lazyNode.js +4 -4
  60. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  61. package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  62. package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  63. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  64. package/dist/feature-libraries/modular-schema/comparison.js +4 -4
  65. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  66. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  67. package/dist/feature-libraries/modular-schema/isNeverTree.js +2 -3
  68. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  69. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  70. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  71. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  72. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  73. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +4 -4
  74. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  75. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
  76. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  77. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  78. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  79. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  80. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  81. package/dist/feature-libraries/schema-index/codec.js +2 -1
  82. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  83. package/dist/feature-libraries/sequence-field/compose.d.ts +1 -1
  84. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  85. package/dist/feature-libraries/sequence-field/compose.js +16 -17
  86. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  87. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  88. package/dist/feature-libraries/sequence-field/invert.js +1 -1
  89. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  90. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
  91. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  92. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  93. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  94. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  95. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  96. package/dist/feature-libraries/sequence-field/utils.js +1 -1
  97. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  98. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  99. package/dist/feature-libraries/treeCursorUtils.js +4 -5
  100. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  101. package/dist/index.d.ts +4 -3
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +8 -4
  104. package/dist/index.js.map +1 -1
  105. package/dist/jsonDomainSchema.d.ts +15 -16
  106. package/dist/jsonDomainSchema.d.ts.map +1 -1
  107. package/dist/jsonDomainSchema.js +10 -5
  108. package/dist/jsonDomainSchema.js.map +1 -1
  109. package/dist/legacy.d.ts +5 -1
  110. package/dist/packageVersion.d.ts +1 -1
  111. package/dist/packageVersion.js +1 -1
  112. package/dist/packageVersion.js.map +1 -1
  113. package/dist/public.d.ts +5 -1
  114. package/dist/serializableDomainSchema.d.ts +8 -14
  115. package/dist/serializableDomainSchema.d.ts.map +1 -1
  116. package/dist/shared-tree/schematizeTree.js +1 -1
  117. package/dist/shared-tree/schematizeTree.js.map +1 -1
  118. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  119. package/dist/shared-tree/sharedTree.js +16 -12
  120. package/dist/shared-tree/sharedTree.js.map +1 -1
  121. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  122. package/dist/shared-tree/sharedTreeChangeFamily.js +1 -1
  123. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  124. package/dist/shared-tree/treeApiAlpha.d.ts +6 -2
  125. package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
  126. package/dist/shared-tree/treeApiAlpha.js +20 -17
  127. package/dist/shared-tree/treeApiAlpha.js.map +1 -1
  128. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  129. package/dist/shared-tree/treeCheckout.js +1 -1
  130. package/dist/shared-tree/treeCheckout.js.map +1 -1
  131. package/dist/shared-tree-core/branch.d.ts +4 -3
  132. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  133. package/dist/shared-tree-core/branch.js +2 -2
  134. package/dist/shared-tree-core/branch.js.map +1 -1
  135. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  136. package/dist/shared-tree-core/editManager.js +37 -31
  137. package/dist/shared-tree-core/editManager.js.map +1 -1
  138. package/dist/sharedTreeAttributes.d.ts +18 -0
  139. package/dist/sharedTreeAttributes.d.ts.map +1 -0
  140. package/dist/sharedTreeAttributes.js +25 -0
  141. package/dist/sharedTreeAttributes.js.map +1 -0
  142. package/dist/simple-tree/api/customTree.js +3 -3
  143. package/dist/simple-tree/api/customTree.js.map +1 -1
  144. package/dist/simple-tree/api/getJsonSchema.d.ts +10 -0
  145. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  146. package/dist/simple-tree/api/getJsonSchema.js +10 -0
  147. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  148. package/dist/simple-tree/api/getSimpleSchema.d.ts +13 -43
  149. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  150. package/dist/simple-tree/api/getSimpleSchema.js +13 -43
  151. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  152. package/dist/simple-tree/api/index.d.ts +3 -3
  153. package/dist/simple-tree/api/index.d.ts.map +1 -1
  154. package/dist/simple-tree/api/index.js +3 -1
  155. package/dist/simple-tree/api/index.js.map +1 -1
  156. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  157. package/dist/simple-tree/api/schemaCreationUtilities.js +2 -2
  158. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  159. package/dist/simple-tree/api/schemaFactory.d.ts +100 -58
  160. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  161. package/dist/simple-tree/api/schemaFactory.js +65 -133
  162. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  163. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +31 -23
  164. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  165. package/dist/simple-tree/api/schemaFactoryAlpha.js +17 -1
  166. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  167. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +40 -5
  168. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  169. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  170. package/dist/simple-tree/api/schemaFromSimple.d.ts +4 -4
  171. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  172. package/dist/simple-tree/api/schemaFromSimple.js +26 -15
  173. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  174. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts +3 -2
  175. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  176. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +7 -6
  177. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  178. package/dist/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
  179. package/dist/simple-tree/api/simpleTreeIndex.js +4 -3
  180. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  181. package/dist/simple-tree/api/testRecursiveDomain.d.ts +10 -10
  182. package/dist/simple-tree/api/tree.d.ts +1 -1
  183. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  184. package/dist/simple-tree/api/tree.js +6 -6
  185. package/dist/simple-tree/api/tree.js.map +1 -1
  186. package/dist/simple-tree/api/treeNodeApi.js +3 -3
  187. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  188. package/dist/simple-tree/api/typesUnsafe.d.ts +87 -21
  189. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  190. package/dist/simple-tree/api/typesUnsafe.js +0 -1
  191. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  192. package/dist/simple-tree/api/verboseTree.js +4 -4
  193. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  194. package/dist/simple-tree/api/view.d.ts.map +1 -1
  195. package/dist/simple-tree/api/view.js +16 -17
  196. package/dist/simple-tree/api/view.js.map +1 -1
  197. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +16 -3
  198. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  199. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +70 -147
  200. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  201. package/dist/simple-tree/arrayNode.d.ts +5 -4
  202. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  203. package/dist/simple-tree/arrayNode.js +13 -9
  204. package/dist/simple-tree/arrayNode.js.map +1 -1
  205. package/dist/simple-tree/arrayNodeTypes.d.ts +46 -0
  206. package/dist/simple-tree/arrayNodeTypes.d.ts.map +1 -0
  207. package/dist/simple-tree/arrayNodeTypes.js +30 -0
  208. package/dist/simple-tree/arrayNodeTypes.js.map +1 -0
  209. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  210. package/dist/simple-tree/core/getOrCreateNode.js +1 -11
  211. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  212. package/dist/simple-tree/core/index.d.ts +1 -2
  213. package/dist/simple-tree/core/index.d.ts.map +1 -1
  214. package/dist/simple-tree/core/index.js +2 -3
  215. package/dist/simple-tree/core/index.js.map +1 -1
  216. package/dist/simple-tree/core/treeNodeKernel.d.ts +12 -5
  217. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  218. package/dist/simple-tree/core/treeNodeKernel.js +36 -20
  219. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  220. package/dist/simple-tree/core/treeNodeSchema.d.ts +14 -7
  221. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  222. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  223. package/dist/simple-tree/core/unhydratedFlexTree.js +5 -5
  224. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  225. package/dist/simple-tree/index.d.ts +9 -2
  226. package/dist/simple-tree/index.d.ts.map +1 -1
  227. package/dist/simple-tree/index.js +9 -1
  228. package/dist/simple-tree/index.js.map +1 -1
  229. package/dist/simple-tree/leafNodeSchema.d.ts +22 -5
  230. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  231. package/dist/simple-tree/leafNodeSchema.js +2 -0
  232. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  233. package/dist/simple-tree/mapNode.d.ts +3 -2
  234. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  235. package/dist/simple-tree/mapNode.js +5 -1
  236. package/dist/simple-tree/mapNode.js.map +1 -1
  237. package/dist/simple-tree/mapNodeTypes.d.ts +46 -0
  238. package/dist/simple-tree/mapNodeTypes.d.ts.map +1 -0
  239. package/dist/simple-tree/mapNodeTypes.js +30 -0
  240. package/dist/simple-tree/mapNodeTypes.js.map +1 -0
  241. package/dist/simple-tree/objectNode.d.ts +10 -3
  242. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  243. package/dist/simple-tree/objectNode.js +10 -5
  244. package/dist/simple-tree/objectNode.js.map +1 -1
  245. package/dist/simple-tree/objectNodeTypes.d.ts +9 -5
  246. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  247. package/dist/simple-tree/objectNodeTypes.js +3 -0
  248. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  249. package/dist/simple-tree/proxies.js +2 -1
  250. package/dist/simple-tree/proxies.js.map +1 -1
  251. package/dist/simple-tree/schemaTypes.d.ts +47 -6
  252. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  253. package/dist/simple-tree/schemaTypes.js +40 -4
  254. package/dist/simple-tree/schemaTypes.js.map +1 -1
  255. package/dist/simple-tree/{api/simpleSchema.d.ts → simpleSchema.d.ts} +54 -30
  256. package/dist/simple-tree/simpleSchema.d.ts.map +1 -0
  257. package/dist/simple-tree/simpleSchema.js.map +1 -0
  258. package/dist/simple-tree/toMapTree.js +3 -3
  259. package/dist/simple-tree/toMapTree.js.map +1 -1
  260. package/dist/simple-tree/toStoredSchema.js +1 -1
  261. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  262. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  263. package/dist/simple-tree/treeNodeValid.js +4 -5
  264. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  265. package/dist/treeFactory.d.ts +0 -12
  266. package/dist/treeFactory.d.ts.map +1 -1
  267. package/dist/treeFactory.js +5 -21
  268. package/dist/treeFactory.js.map +1 -1
  269. package/dist/util/idAllocator.d.ts.map +1 -1
  270. package/dist/util/idAllocator.js +1 -2
  271. package/dist/util/idAllocator.js.map +1 -1
  272. package/dist/util/index.d.ts +1 -1
  273. package/dist/util/index.d.ts.map +1 -1
  274. package/dist/util/index.js +2 -3
  275. package/dist/util/index.js.map +1 -1
  276. package/dist/util/typeCheck.d.ts +7 -0
  277. package/dist/util/typeCheck.d.ts.map +1 -1
  278. package/dist/util/typeCheck.js.map +1 -1
  279. package/dist/util/utils.d.ts +0 -1
  280. package/dist/util/utils.d.ts.map +1 -1
  281. package/dist/util/utils.js +1 -4
  282. package/dist/util/utils.js.map +1 -1
  283. package/lib/alpha.d.ts +26 -1
  284. package/lib/beta.d.ts +5 -1
  285. package/lib/codec/codec.d.ts +1 -1
  286. package/lib/codec/codec.d.ts.map +1 -1
  287. package/lib/codec/codec.js +1 -2
  288. package/lib/codec/codec.js.map +1 -1
  289. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  290. package/lib/codec/discriminatedUnions.js +2 -2
  291. package/lib/codec/discriminatedUnions.js.map +1 -1
  292. package/lib/core/rebase/utils.js +1 -1
  293. package/lib/core/rebase/utils.js.map +1 -1
  294. package/lib/core/schema-stored/schema.d.ts +4 -1
  295. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  296. package/lib/core/schema-stored/schema.js +6 -2
  297. package/lib/core/schema-stored/schema.js.map +1 -1
  298. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  299. package/lib/core/tree/anchorSet.js +2 -2
  300. package/lib/core/tree/anchorSet.js.map +1 -1
  301. package/lib/core/tree/treeTextFormat.js +1 -1
  302. package/lib/core/tree/treeTextFormat.js.map +1 -1
  303. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  304. package/lib/feature-libraries/chunked-forest/basicChunk.js +2 -2
  305. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  306. package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -2
  307. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  308. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  309. package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -2
  310. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  311. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +1 -1
  312. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  313. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
  314. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  315. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  316. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  317. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  318. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +1 -2
  319. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  320. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  321. package/lib/feature-libraries/chunked-forest/emptyChunk.js +1 -1
  322. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  323. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  324. package/lib/feature-libraries/chunked-forest/uniformChunk.js +2 -2
  325. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  326. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  327. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  328. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  329. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  330. package/lib/feature-libraries/default-schema/schemaChecker.js +1 -2
  331. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  332. package/lib/feature-libraries/flex-tree/lazyField.js +2 -2
  333. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  334. package/lib/feature-libraries/flex-tree/lazyNode.js +2 -2
  335. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  336. package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  337. package/lib/feature-libraries/indexing/anchorTreeIndex.js +2 -2
  338. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  339. package/lib/feature-libraries/modular-schema/comparison.js +2 -2
  340. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  341. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  342. package/lib/feature-libraries/modular-schema/isNeverTree.js +1 -2
  343. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  344. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  345. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +2 -2
  346. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  347. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  348. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +2 -2
  349. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  350. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js +2 -2
  351. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  352. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  353. package/lib/feature-libraries/object-forest/objectForest.js +2 -2
  354. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  355. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  356. package/lib/feature-libraries/schema-index/codec.js +2 -1
  357. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  358. package/lib/feature-libraries/sequence-field/compose.d.ts +1 -1
  359. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  360. package/lib/feature-libraries/sequence-field/compose.js +1 -2
  361. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  362. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  363. package/lib/feature-libraries/sequence-field/invert.js +2 -2
  364. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  365. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
  366. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +2 -2
  367. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  368. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  369. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +2 -2
  370. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  371. package/lib/feature-libraries/sequence-field/utils.js +2 -2
  372. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  373. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  374. package/lib/feature-libraries/treeCursorUtils.js +1 -2
  375. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  376. package/lib/index.d.ts +4 -3
  377. package/lib/index.d.ts.map +1 -1
  378. package/lib/index.js +4 -3
  379. package/lib/index.js.map +1 -1
  380. package/lib/jsonDomainSchema.d.ts +15 -16
  381. package/lib/jsonDomainSchema.d.ts.map +1 -1
  382. package/lib/jsonDomainSchema.js +11 -6
  383. package/lib/jsonDomainSchema.js.map +1 -1
  384. package/lib/legacy.d.ts +5 -1
  385. package/lib/packageVersion.d.ts +1 -1
  386. package/lib/packageVersion.js +1 -1
  387. package/lib/packageVersion.js.map +1 -1
  388. package/lib/public.d.ts +5 -1
  389. package/lib/serializableDomainSchema.d.ts +8 -14
  390. package/lib/serializableDomainSchema.d.ts.map +1 -1
  391. package/lib/shared-tree/schematizeTree.js +2 -2
  392. package/lib/shared-tree/schematizeTree.js.map +1 -1
  393. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  394. package/lib/shared-tree/sharedTree.js +14 -10
  395. package/lib/shared-tree/sharedTree.js.map +1 -1
  396. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  397. package/lib/shared-tree/sharedTreeChangeFamily.js +2 -2
  398. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  399. package/lib/shared-tree/treeApiAlpha.d.ts +6 -2
  400. package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
  401. package/lib/shared-tree/treeApiAlpha.js +10 -7
  402. package/lib/shared-tree/treeApiAlpha.js.map +1 -1
  403. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  404. package/lib/shared-tree/treeCheckout.js +2 -2
  405. package/lib/shared-tree/treeCheckout.js.map +1 -1
  406. package/lib/shared-tree-core/branch.d.ts +4 -3
  407. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  408. package/lib/shared-tree-core/branch.js +2 -2
  409. package/lib/shared-tree-core/branch.js.map +1 -1
  410. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  411. package/lib/shared-tree-core/editManager.js +35 -29
  412. package/lib/shared-tree-core/editManager.js.map +1 -1
  413. package/lib/sharedTreeAttributes.d.ts +18 -0
  414. package/lib/sharedTreeAttributes.d.ts.map +1 -0
  415. package/lib/sharedTreeAttributes.js +22 -0
  416. package/lib/sharedTreeAttributes.js.map +1 -0
  417. package/lib/simple-tree/api/customTree.js +2 -2
  418. package/lib/simple-tree/api/customTree.js.map +1 -1
  419. package/lib/simple-tree/api/getJsonSchema.d.ts +10 -0
  420. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  421. package/lib/simple-tree/api/getJsonSchema.js +10 -0
  422. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  423. package/lib/simple-tree/api/getSimpleSchema.d.ts +13 -43
  424. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  425. package/lib/simple-tree/api/getSimpleSchema.js +13 -43
  426. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  427. package/lib/simple-tree/api/index.d.ts +3 -3
  428. package/lib/simple-tree/api/index.d.ts.map +1 -1
  429. package/lib/simple-tree/api/index.js +1 -0
  430. package/lib/simple-tree/api/index.js.map +1 -1
  431. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  432. package/lib/simple-tree/api/schemaCreationUtilities.js +1 -1
  433. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  434. package/lib/simple-tree/api/schemaFactory.d.ts +100 -58
  435. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  436. package/lib/simple-tree/api/schemaFactory.js +64 -132
  437. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  438. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +31 -23
  439. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  440. package/lib/simple-tree/api/schemaFactoryAlpha.js +18 -2
  441. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  442. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +40 -5
  443. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  444. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  445. package/lib/simple-tree/api/schemaFromSimple.d.ts +4 -4
  446. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  447. package/lib/simple-tree/api/schemaFromSimple.js +21 -10
  448. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  449. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts +3 -2
  450. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  451. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +6 -6
  452. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  453. package/lib/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
  454. package/lib/simple-tree/api/simpleTreeIndex.js +2 -1
  455. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  456. package/lib/simple-tree/api/testRecursiveDomain.d.ts +10 -10
  457. package/lib/simple-tree/api/tree.d.ts +1 -1
  458. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  459. package/lib/simple-tree/api/tree.js +2 -2
  460. package/lib/simple-tree/api/tree.js.map +1 -1
  461. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  462. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  463. package/lib/simple-tree/api/typesUnsafe.d.ts +87 -21
  464. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  465. package/lib/simple-tree/api/typesUnsafe.js +0 -1
  466. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  467. package/lib/simple-tree/api/verboseTree.js +2 -2
  468. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  469. package/lib/simple-tree/api/view.d.ts.map +1 -1
  470. package/lib/simple-tree/api/view.js +1 -2
  471. package/lib/simple-tree/api/view.js.map +1 -1
  472. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +16 -3
  473. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  474. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +69 -146
  475. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  476. package/lib/simple-tree/arrayNode.d.ts +5 -4
  477. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  478. package/lib/simple-tree/arrayNode.js +7 -3
  479. package/lib/simple-tree/arrayNode.js.map +1 -1
  480. package/lib/simple-tree/arrayNodeTypes.d.ts +46 -0
  481. package/lib/simple-tree/arrayNodeTypes.d.ts.map +1 -0
  482. package/lib/simple-tree/arrayNodeTypes.js +26 -0
  483. package/lib/simple-tree/arrayNodeTypes.js.map +1 -0
  484. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  485. package/lib/simple-tree/core/getOrCreateNode.js +2 -12
  486. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  487. package/lib/simple-tree/core/index.d.ts +1 -2
  488. package/lib/simple-tree/core/index.d.ts.map +1 -1
  489. package/lib/simple-tree/core/index.js +1 -2
  490. package/lib/simple-tree/core/index.js.map +1 -1
  491. package/lib/simple-tree/core/treeNodeKernel.d.ts +12 -5
  492. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  493. package/lib/simple-tree/core/treeNodeKernel.js +28 -14
  494. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  495. package/lib/simple-tree/core/treeNodeSchema.d.ts +14 -7
  496. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  497. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  498. package/lib/simple-tree/core/unhydratedFlexTree.js +2 -2
  499. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  500. package/lib/simple-tree/index.d.ts +9 -2
  501. package/lib/simple-tree/index.d.ts.map +1 -1
  502. package/lib/simple-tree/index.js +3 -0
  503. package/lib/simple-tree/index.js.map +1 -1
  504. package/lib/simple-tree/leafNodeSchema.d.ts +22 -5
  505. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  506. package/lib/simple-tree/leafNodeSchema.js +2 -0
  507. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  508. package/lib/simple-tree/mapNode.d.ts +3 -2
  509. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  510. package/lib/simple-tree/mapNode.js +5 -1
  511. package/lib/simple-tree/mapNode.js.map +1 -1
  512. package/lib/simple-tree/mapNodeTypes.d.ts +46 -0
  513. package/lib/simple-tree/mapNodeTypes.d.ts.map +1 -0
  514. package/lib/simple-tree/mapNodeTypes.js +26 -0
  515. package/lib/simple-tree/mapNodeTypes.js.map +1 -0
  516. package/lib/simple-tree/objectNode.d.ts +10 -3
  517. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  518. package/lib/simple-tree/objectNode.js +10 -5
  519. package/lib/simple-tree/objectNode.js.map +1 -1
  520. package/lib/simple-tree/objectNodeTypes.d.ts +9 -5
  521. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  522. package/lib/simple-tree/objectNodeTypes.js +3 -0
  523. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  524. package/lib/simple-tree/proxies.js +2 -1
  525. package/lib/simple-tree/proxies.js.map +1 -1
  526. package/lib/simple-tree/schemaTypes.d.ts +47 -6
  527. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  528. package/lib/simple-tree/schemaTypes.js +37 -3
  529. package/lib/simple-tree/schemaTypes.js.map +1 -1
  530. package/lib/simple-tree/{api/simpleSchema.d.ts → simpleSchema.d.ts} +54 -30
  531. package/lib/simple-tree/simpleSchema.d.ts.map +1 -0
  532. package/lib/simple-tree/simpleSchema.js.map +1 -0
  533. package/lib/simple-tree/toMapTree.js +2 -2
  534. package/lib/simple-tree/toMapTree.js.map +1 -1
  535. package/lib/simple-tree/toStoredSchema.js +2 -2
  536. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  537. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  538. package/lib/simple-tree/treeNodeValid.js +1 -2
  539. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  540. package/lib/treeFactory.d.ts +0 -12
  541. package/lib/treeFactory.d.ts.map +1 -1
  542. package/lib/treeFactory.js +1 -17
  543. package/lib/treeFactory.js.map +1 -1
  544. package/lib/tsdoc-metadata.json +1 -1
  545. package/lib/util/idAllocator.d.ts.map +1 -1
  546. package/lib/util/idAllocator.js +1 -2
  547. package/lib/util/idAllocator.js.map +1 -1
  548. package/lib/util/index.d.ts +1 -1
  549. package/lib/util/index.d.ts.map +1 -1
  550. package/lib/util/index.js +1 -1
  551. package/lib/util/index.js.map +1 -1
  552. package/lib/util/typeCheck.d.ts +7 -0
  553. package/lib/util/typeCheck.d.ts.map +1 -1
  554. package/lib/util/typeCheck.js.map +1 -1
  555. package/lib/util/utils.d.ts +0 -1
  556. package/lib/util/utils.d.ts.map +1 -1
  557. package/lib/util/utils.js +0 -2
  558. package/lib/util/utils.js.map +1 -1
  559. package/package.json +36 -26
  560. package/src/codec/codec.ts +2 -2
  561. package/src/codec/discriminatedUnions.ts +2 -2
  562. package/src/core/rebase/utils.ts +1 -1
  563. package/src/core/schema-stored/schema.ts +6 -2
  564. package/src/core/tree/anchorSet.ts +1 -2
  565. package/src/core/tree/treeTextFormat.ts +1 -1
  566. package/src/feature-libraries/chunked-forest/basicChunk.ts +2 -2
  567. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  568. package/src/feature-libraries/chunked-forest/chunkedForest.ts +1 -2
  569. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -1
  570. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +2 -2
  571. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +2 -2
  572. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +1 -2
  573. package/src/feature-libraries/chunked-forest/emptyChunk.ts +1 -1
  574. package/src/feature-libraries/chunked-forest/uniformChunk.ts +2 -2
  575. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -1
  576. package/src/feature-libraries/default-schema/schemaChecker.ts +1 -2
  577. package/src/feature-libraries/flex-tree/lazyField.ts +2 -2
  578. package/src/feature-libraries/flex-tree/lazyNode.ts +2 -2
  579. package/src/feature-libraries/indexing/anchorTreeIndex.ts +2 -2
  580. package/src/feature-libraries/modular-schema/comparison.ts +2 -2
  581. package/src/feature-libraries/modular-schema/isNeverTree.ts +1 -2
  582. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +1 -2
  583. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -2
  584. package/src/feature-libraries/node-identifier/mockNodeIdentifierManager.ts +2 -2
  585. package/src/feature-libraries/object-forest/objectForest.ts +1 -2
  586. package/src/feature-libraries/schema-index/codec.ts +2 -1
  587. package/src/feature-libraries/sequence-field/compose.ts +2 -2
  588. package/src/feature-libraries/sequence-field/invert.ts +2 -2
  589. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +2 -2
  590. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +2 -2
  591. package/src/feature-libraries/sequence-field/utils.ts +2 -2
  592. package/src/feature-libraries/treeCursorUtils.ts +1 -2
  593. package/src/index.ts +26 -3
  594. package/src/jsonDomainSchema.ts +30 -11
  595. package/src/packageVersion.ts +1 -1
  596. package/src/shared-tree/schematizeTree.ts +2 -2
  597. package/src/shared-tree/sharedTree.ts +16 -10
  598. package/src/shared-tree/sharedTreeChangeFamily.ts +1 -2
  599. package/src/shared-tree/treeApiAlpha.ts +36 -13
  600. package/src/shared-tree/treeCheckout.ts +2 -8
  601. package/src/shared-tree-core/branch.ts +5 -3
  602. package/src/shared-tree-core/editManager.ts +37 -45
  603. package/src/sharedTreeAttributes.ts +25 -0
  604. package/src/simple-tree/api/customTree.ts +2 -2
  605. package/src/simple-tree/api/getJsonSchema.ts +10 -0
  606. package/src/simple-tree/api/getSimpleSchema.ts +14 -44
  607. package/src/simple-tree/api/index.ts +7 -11
  608. package/src/simple-tree/api/schemaCreationUtilities.ts +1 -2
  609. package/src/simple-tree/api/schemaFactory.ts +161 -86
  610. package/src/simple-tree/api/schemaFactoryAlpha.ts +62 -67
  611. package/src/simple-tree/api/schemaFactoryRecursive.ts +44 -12
  612. package/src/simple-tree/api/schemaFromSimple.ts +41 -13
  613. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +7 -7
  614. package/src/simple-tree/api/simpleTreeIndex.ts +2 -1
  615. package/src/simple-tree/api/tree.ts +3 -3
  616. package/src/simple-tree/api/treeNodeApi.ts +2 -2
  617. package/src/simple-tree/api/typesUnsafe.ts +151 -33
  618. package/src/simple-tree/api/verboseTree.ts +2 -2
  619. package/src/simple-tree/api/view.ts +1 -2
  620. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +80 -185
  621. package/src/simple-tree/arrayNode.ts +20 -14
  622. package/src/simple-tree/arrayNodeTypes.ts +93 -0
  623. package/src/simple-tree/core/getOrCreateNode.ts +3 -13
  624. package/src/simple-tree/core/index.ts +1 -1
  625. package/src/simple-tree/core/treeNodeKernel.ts +32 -18
  626. package/src/simple-tree/core/treeNodeSchema.ts +14 -8
  627. package/src/simple-tree/core/unhydratedFlexTree.ts +2 -2
  628. package/src/simple-tree/index.ts +30 -9
  629. package/src/simple-tree/leafNodeSchema.ts +28 -7
  630. package/src/simple-tree/mapNode.ts +13 -11
  631. package/src/simple-tree/mapNodeTypes.ts +90 -0
  632. package/src/simple-tree/objectNode.ts +37 -13
  633. package/src/simple-tree/objectNodeTypes.ts +21 -16
  634. package/src/simple-tree/proxies.ts +2 -2
  635. package/src/simple-tree/schemaTypes.ts +83 -19
  636. package/src/simple-tree/{api/simpleSchema.ts → simpleSchema.ts} +61 -32
  637. package/src/simple-tree/toMapTree.ts +2 -2
  638. package/src/simple-tree/toStoredSchema.ts +2 -2
  639. package/src/simple-tree/treeNodeValid.ts +1 -2
  640. package/src/treeFactory.ts +1 -19
  641. package/src/util/idAllocator.ts +1 -3
  642. package/src/util/index.ts +0 -1
  643. package/src/util/typeCheck.ts +7 -0
  644. package/src/util/utils.ts +0 -3
  645. package/dist/simple-tree/api/simpleSchema.d.ts.map +0 -1
  646. package/dist/simple-tree/api/simpleSchema.js.map +0 -1
  647. package/dist/simple-tree/core/schemaCaching.d.ts +0 -16
  648. package/dist/simple-tree/core/schemaCaching.d.ts.map +0 -1
  649. package/dist/simple-tree/core/schemaCaching.js +0 -32
  650. package/dist/simple-tree/core/schemaCaching.js.map +0 -1
  651. package/lib/simple-tree/api/simpleSchema.d.ts.map +0 -1
  652. package/lib/simple-tree/api/simpleSchema.js.map +0 -1
  653. package/lib/simple-tree/core/schemaCaching.d.ts +0 -16
  654. package/lib/simple-tree/core/schemaCaching.d.ts.map +0 -1
  655. package/lib/simple-tree/core/schemaCaching.js +0 -27
  656. package/lib/simple-tree/core/schemaCaching.js.map +0 -1
  657. package/prettier.config.cjs +0 -8
  658. package/src/simple-tree/core/schemaCaching.ts +0 -35
  659. /package/dist/simple-tree/{api/simpleSchema.js → simpleSchema.js} +0 -0
  660. /package/lib/simple-tree/{api/simpleSchema.js → simpleSchema.js} +0 -0
@@ -3,7 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { NodeSchemaMetadata, TreeLeafValue } from "../schemaTypes.js";
6
+ import type { TreeLeafValue } from "../schemaTypes.js";
7
+ import type { SimpleNodeSchemaBase } from "../simpleSchema.js";
7
8
  import type { InternalTreeNode, TreeNode, Unhydrated } from "./types.js";
8
9
 
9
10
  /**
@@ -18,6 +19,13 @@ import type { InternalTreeNode, TreeNode, Unhydrated } from "./types.js";
18
19
  * Captures the schema both as runtime data and compile time type information.
19
20
  * Use {@link SchemaFactory} to define schema.
20
21
  * Use `Tree.schema(value)` to lookup the schema for a {@link TreeNode} or {@link TreeLeafValue}.
22
+ * @privateRemarks
23
+ * TODO:
24
+ * The long lists of type parameters here are awkward to deal with.
25
+ * Switching to (or adding an option to use)
26
+ * an interface based pattern with unordered named parameters for types like this would be a good idea.
27
+ * The related `@system` types should be simple to port to the new pattern, but stable public one like this will need to support both:
28
+ * the new one could either be added as a system type, or be recommended to replace this one (deprecating it).
21
29
  * @sealed @public
22
30
  */
23
31
  export type TreeNodeSchema<
@@ -81,6 +89,8 @@ export type TreeNodeSchemaNonClass<
81
89
  ? {
82
90
  /**
83
91
  * Constructs an {@link Unhydrated} node with this schema.
92
+ * @privateRemarks
93
+ * Also allows InternalTreeNode.
84
94
  * @sealed
85
95
  */
86
96
  create(data?: TInsertable | TConstructorExtra): TNode;
@@ -88,6 +98,8 @@ export type TreeNodeSchemaNonClass<
88
98
  : {
89
99
  /**
90
100
  * Constructs an {@link Unhydrated} node with this schema.
101
+ * @privateRemarks
102
+ * Also allows InternalTreeNode.
91
103
  * @sealed
92
104
  */
93
105
  create(data: TInsertable | TConstructorExtra): TNode;
@@ -227,7 +239,7 @@ export interface TreeNodeSchemaCore<
227
239
  out Info = unknown,
228
240
  out TInsertable = never,
229
241
  out TCustomMetadata = unknown,
230
- > {
242
+ > extends SimpleNodeSchemaBase<Kind, TCustomMetadata> {
231
243
  /**
232
244
  * Unique (within a document's schema) identifier used to associate nodes with their schema.
233
245
  * @remarks
@@ -239,7 +251,6 @@ export interface TreeNodeSchemaCore<
239
251
  * it is best practice to pick a new identifier.
240
252
  */
241
253
  readonly identifier: Name;
242
- readonly kind: Kind;
243
254
 
244
255
  /**
245
256
  * Data used to define this schema.
@@ -283,11 +294,6 @@ export interface TreeNodeSchemaCore<
283
294
  */
284
295
  readonly childTypes: ReadonlySet<TreeNodeSchema>;
285
296
 
286
- /**
287
- * User-provided {@link NodeSchemaMetadata} for this schema.
288
- */
289
- readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
290
-
291
297
  /**
292
298
  * Constructs an instance of this node type.
293
299
  * @remarks
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, oob } from "@fluidframework/core-utils/internal";
6
+ import { assert, oob, fail } from "@fluidframework/core-utils/internal";
7
7
  import { createEmitter } from "@fluid-internal/client-utils";
8
8
  import type { Listenable } from "@fluidframework/core-interfaces";
9
9
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
@@ -25,7 +25,7 @@ import {
25
25
  type TreeStoredSchema,
26
26
  type Value,
27
27
  } from "../../core/index.js";
28
- import { brand, fail, getOrCreate, mapIterable } from "../../util/index.js";
28
+ import { brand, getOrCreate, mapIterable } from "../../util/index.js";
29
29
  import {
30
30
  type FlexTreeContext,
31
31
  FlexTreeEntityKind,
@@ -57,14 +57,6 @@ export {
57
57
  type IdentifierIndex,
58
58
  createSimpleTreeIndex,
59
59
  createIdentifierIndex,
60
- type SimpleNodeSchemaBase,
61
- type SimpleTreeSchema,
62
- type SimpleNodeSchema,
63
- type SimpleFieldSchema,
64
- type SimpleLeafNodeSchema,
65
- type SimpleMapNodeSchema,
66
- type SimpleArrayNodeSchema,
67
- type SimpleObjectNodeSchema,
68
60
  type JsonSchemaId,
69
61
  type JsonSchemaType,
70
62
  type JsonObjectNodeSchema,
@@ -108,8 +100,12 @@ export {
108
100
  type TreeNodeSchemaClassUnsafe,
109
101
  type TreeNodeSchemaUnsafe,
110
102
  type AllowedTypesUnsafe,
103
+ type ImplicitAllowedTypesUnsafe,
104
+ type ImplicitFieldSchemaUnsafe,
111
105
  type TreeNodeSchemaNonClassUnsafe,
112
106
  type InsertableTreeNodeFromAllowedTypesUnsafe,
107
+ type ArrayNodeCustomizableSchemaUnsafe,
108
+ type MapNodeCustomizableSchemaUnsafe,
113
109
  type TreeViewAlpha,
114
110
  type TreeBranch,
115
111
  type TreeBranchEvents,
@@ -124,7 +120,7 @@ export {
124
120
  type CustomTreeNode,
125
121
  type CustomTreeValue,
126
122
  tryStoredSchemaAsArray,
127
- type schemaStatics,
123
+ type SchemaStatics,
128
124
  type ITreeAlpha,
129
125
  type TransactionConstraint,
130
126
  type NodeInDocumentConstraint,
@@ -141,7 +137,19 @@ export {
141
137
  replaceHandles,
142
138
  replaceVerboseTreeHandles,
143
139
  type HandleConverter,
140
+ type FieldSchemaAlphaUnsafe,
144
141
  } from "./api/index.js";
142
+ export type {
143
+ SimpleTreeSchema,
144
+ SimpleNodeSchema,
145
+ SimpleFieldSchema,
146
+ SimpleLeafNodeSchema,
147
+ SimpleMapNodeSchema,
148
+ SimpleArrayNodeSchema,
149
+ SimpleObjectNodeSchema,
150
+ SimpleNodeSchemaBase,
151
+ SimpleObjectFieldSchema,
152
+ } from "./simpleSchema.js";
145
153
  export {
146
154
  type NodeFromSchema,
147
155
  isTreeNodeSchemaClass,
@@ -154,6 +162,7 @@ export {
154
162
  type AllowedTypes,
155
163
  FieldKind,
156
164
  FieldSchema,
165
+ type FieldSchemaAlpha,
157
166
  type InsertableTreeFieldFromImplicitField,
158
167
  type InsertableTypedNode,
159
168
  type NodeBuilderData,
@@ -186,6 +195,16 @@ export {
186
195
  IterableTreeArrayContent,
187
196
  type ReadonlyArrayNode,
188
197
  } from "./arrayNode.js";
198
+ export type {
199
+ ArrayNodeCustomizableSchema,
200
+ ArrayNodePojoEmulationSchema,
201
+ } from "./arrayNodeTypes.js";
202
+ export { ArrayNodeSchema, isArrayNodeSchema } from "./arrayNodeTypes.js";
203
+ export type {
204
+ MapNodeCustomizableSchema,
205
+ MapNodePojoEmulationSchema,
206
+ } from "./mapNodeTypes.js";
207
+ export { MapNodeSchema, isMapNodeSchema } from "./mapNodeTypes.js";
189
208
  export {
190
209
  type FieldHasDefault,
191
210
  type InsertableObjectFromSchemaRecord,
@@ -194,6 +213,7 @@ export {
194
213
  setField,
195
214
  createUnknownOptionalFieldPolicy,
196
215
  } from "./objectNode.js";
216
+ export { ObjectNodeSchema } from "./objectNodeTypes.js";
197
217
  export type { TreeMapNode, MapNodeInsertableData } from "./mapNode.js";
198
218
  export {
199
219
  mapTreeFromNodeData,
@@ -209,4 +229,5 @@ export {
209
229
  handleSchema,
210
230
  nullSchema,
211
231
  } from "./leafNodeSchema.js";
232
+ export type { LeafSchema } from "./leafNodeSchema.js";
212
233
  export type { LazyItem, FlexList, FlexListToUnion, ExtractItemType } from "./flexList.js";
@@ -12,6 +12,8 @@ import {
12
12
  valueSchemaAllows,
13
13
  } from "../feature-libraries/index.js";
14
14
  import { NodeKind, type TreeNodeSchema, type TreeNodeSchemaNonClass } from "./core/index.js";
15
+ import type { NodeSchemaMetadata, TreeLeafValue } from "./schemaTypes.js";
16
+ import type { SimpleLeafNodeSchema } from "./simpleSchema.js";
15
17
 
16
18
  /**
17
19
  * Instances of this class are schema for leaf nodes.
@@ -44,9 +46,14 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
44
46
  return data;
45
47
  }
46
48
 
49
+ public readonly leafKind: ValueSchema;
50
+
51
+ public readonly metadata: NodeSchemaMetadata = {};
52
+
47
53
  public constructor(name: Name, t: T) {
48
54
  this.identifier = name;
49
55
  this.info = t;
56
+ this.leafKind = t;
50
57
  }
51
58
  }
52
59
 
@@ -56,17 +63,31 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
56
63
  function makeLeaf<Name extends string, const T extends ValueSchema>(
57
64
  name: Name,
58
65
  t: T,
59
- ): TreeNodeSchema<
60
- `com.fluidframework.leaf.${Name}`,
61
- NodeKind.Leaf,
62
- TreeValue<T>,
63
- TreeValue<T>,
64
- true
65
- > {
66
+ ): LeafSchema<Name, TreeValue<T>> & SimpleLeafNodeSchema {
66
67
  // Names in this domain follow https://en.wikipedia.org/wiki/Reverse_domain_name_notation
67
68
  return new LeafNodeSchema(`com.fluidframework.leaf.${name}`, t);
68
69
  }
69
70
 
71
+ /**
72
+ * A {@link TreeNodeSchema} for a {@link TreeLeafValue}.
73
+ * @remarks
74
+ * This is just a more specific alias for a particular {@link TreeNodeSchemaNonClass}.
75
+ * It only exists to make the API (particularly errors, IntelliSense, and generated .d.ts files) more readable.
76
+ *
77
+ * See {@link SchemaFactory} and its various properties for actual leaf schema objects.
78
+ * @privateRemarks
79
+ * This is an interface so its name will show up in things like type errors instead of the fully expanded TreeNodeSchemaNonClass.
80
+ * @system @sealed @public
81
+ */
82
+ export interface LeafSchema<Name extends string, T extends TreeLeafValue>
83
+ extends TreeNodeSchemaNonClass<
84
+ `com.fluidframework.leaf.${Name}`,
85
+ NodeKind.Leaf,
86
+ /* TNode */ T,
87
+ /* TInsertable */ T,
88
+ /* ImplicitlyConstructable */ true
89
+ > {}
90
+
70
91
  // Leaf schema shared between all SchemaFactory instances.
71
92
  export const stringSchema = makeLeaf("string", ValueSchema.String);
72
93
  export const numberSchema = makeLeaf("number", ValueSchema.Number);
@@ -24,9 +24,7 @@ import {
24
24
  getKernel,
25
25
  type InnerNode,
26
26
  NodeKind,
27
- type TreeNodeSchemaBoth,
28
27
  type TreeNodeSchema,
29
- type WithType,
30
28
  // eslint-disable-next-line import/no-deprecated
31
29
  typeNameSymbol,
32
30
  type TreeNode,
@@ -45,6 +43,7 @@ import { brand, count, type RestrictiveStringRecord } from "../util/index.js";
45
43
  import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
46
44
  import type { ExclusiveMapTree } from "../core/index.js";
47
45
  import { getUnhydratedContext } from "./createContext.js";
46
+ import type { MapNodeCustomizableSchema, MapNodePojoEmulationSchema } from "./mapNodeTypes.js";
48
47
 
49
48
  /**
50
49
  * A map of string keys to tree objects.
@@ -245,6 +244,9 @@ export function mapSchema<
245
244
  metadata?: NodeSchemaMetadata<TCustomMetadata>,
246
245
  ) {
247
246
  const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(info));
247
+ const lazyAllowedTypesIdentifiers = new Lazy(
248
+ () => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
249
+ );
248
250
 
249
251
  let unhydratedContext: Context;
250
252
 
@@ -271,6 +273,10 @@ export function mapSchema<
271
273
  );
272
274
  }
273
275
 
276
+ public static get allowedTypesIdentifiers(): ReadonlySet<string> {
277
+ return lazyAllowedTypesIdentifiers.value;
278
+ }
279
+
274
280
  protected static override constructorCached: MostDerivedData | undefined = undefined;
275
281
 
276
282
  protected static override oneTimeSetup<T2>(this: typeof TreeNodeValid<T2>): Context {
@@ -286,8 +292,7 @@ export function mapSchema<
286
292
  public static get childTypes(): ReadonlySet<TreeNodeSchema> {
287
293
  return lazyChildTypes.value;
288
294
  }
289
- public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> | undefined =
290
- metadata;
295
+ public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
291
296
 
292
297
  // eslint-disable-next-line import/no-deprecated
293
298
  public get [typeNameSymbol](): TName {
@@ -297,16 +302,13 @@ export function mapSchema<
297
302
  return Schema.constructorCached?.constructor as unknown as typeof schemaErased;
298
303
  }
299
304
  }
300
- const schemaErased: TreeNodeSchemaBoth<
305
+ const schemaErased: MapNodeCustomizableSchema<
301
306
  TName,
302
- NodeKind.Map,
303
- TreeMapNode<T> & WithType<TName, NodeKind.Map>,
304
- MapNodeInsertableData<T>,
305
- ImplicitlyConstructable,
306
307
  T,
307
- undefined,
308
+ ImplicitlyConstructable,
308
309
  TCustomMetadata
309
- > = Schema;
310
+ > &
311
+ MapNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> = Schema;
310
312
  return schemaErased;
311
313
  }
312
314
 
@@ -0,0 +1,90 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type { MapNodeInsertableData, TreeMapNode } from "./mapNode.js";
7
+ import type { ImplicitAllowedTypes } from "./schemaTypes.js";
8
+ import {
9
+ NodeKind,
10
+ type TreeNodeSchemaClass,
11
+ type TreeNodeSchema,
12
+ type TreeNodeSchemaNonClass,
13
+ type WithType,
14
+ } from "./core/index.js";
15
+
16
+ import type { SimpleMapNodeSchema } from "./simpleSchema.js";
17
+
18
+ /**
19
+ * A schema for customizable {@link (TreeMapNode:interface)}s.
20
+ * @system @sealed @alpha
21
+ */
22
+ export interface MapNodeCustomizableSchema<
23
+ out TName extends string = string,
24
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
25
+ out ImplicitlyConstructable extends boolean = true,
26
+ out TCustomMetadata = unknown,
27
+ > extends TreeNodeSchemaClass<
28
+ TName,
29
+ NodeKind.Map,
30
+ TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
31
+ MapNodeInsertableData<T>,
32
+ ImplicitlyConstructable,
33
+ T,
34
+ undefined,
35
+ TCustomMetadata
36
+ >,
37
+ SimpleMapNodeSchema<TCustomMetadata> {}
38
+
39
+ /**
40
+ * A schema for POJO emulation mode {@link (TreeMapNode:interface)}s.
41
+ * @system @sealed @alpha
42
+ */
43
+ export interface MapNodePojoEmulationSchema<
44
+ out TName extends string = string,
45
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
46
+ out ImplicitlyConstructable extends boolean = true,
47
+ out TCustomMetadata = unknown,
48
+ > extends TreeNodeSchemaNonClass<
49
+ TName,
50
+ NodeKind.Map,
51
+ TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
52
+ MapNodeInsertableData<T>,
53
+ ImplicitlyConstructable,
54
+ T,
55
+ undefined,
56
+ TCustomMetadata
57
+ >,
58
+ SimpleMapNodeSchema<TCustomMetadata> {}
59
+
60
+ /**
61
+ * A schema for {@link (TreeMapNode:interface)}s.
62
+ * @privateRemarks
63
+ * This could have generic arguments added and forwarded.
64
+ * The expected use-cases for this don't need them however, and if they did want an argument it would probably be the allowed types;
65
+ * perhaps if moving to an order independent way to pass generic arguments, adding support for them here would make sense.
66
+ * @alpha
67
+ */
68
+ export type MapNodeSchema = MapNodeCustomizableSchema | MapNodePojoEmulationSchema;
69
+
70
+ /**
71
+ * @alpha
72
+ */
73
+ export const MapNodeSchema = {
74
+ /**
75
+ * instanceof-based narrowing support for MapNodeSchema in Javascript and TypeScript 5.3 or newer.
76
+ */
77
+ [Symbol.hasInstance](value: TreeNodeSchema): value is MapNodeSchema {
78
+ return isMapNodeSchema(value);
79
+ },
80
+ } as const;
81
+
82
+ /**
83
+ * Narrows a {@link (TreeNodeSchema:interface)} to an {@link (MapNodeSchema:interface)}.
84
+ * @privateRemarks
85
+ * If at some point we want to have internal only APIs for MapNodeSchema (like done for objects),
86
+ * this can include those since its not the public facing API.
87
+ */
88
+ export function isMapNodeSchema(schema: TreeNodeSchema): schema is MapNodeSchema {
89
+ return schema.kind === NodeKind.Map;
90
+ }
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Lazy } from "@fluidframework/core-utils/internal";
6
+ import { assert, Lazy, fail } from "@fluidframework/core-utils/internal";
7
7
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import type { FieldKey, SchemaPolicy } from "../core/index.js";
@@ -27,6 +27,8 @@ import {
27
27
  type ImplicitAllowedTypes,
28
28
  FieldKind,
29
29
  type NodeSchemaMetadata,
30
+ type FieldSchemaAlpha,
31
+ ObjectFieldSchema,
30
32
  } from "./schemaTypes.js";
31
33
  import {
32
34
  type TreeNodeSchema,
@@ -42,7 +44,7 @@ import {
42
44
  getOrCreateInnerNode,
43
45
  } from "./core/index.js";
44
46
  import { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
45
- import { type RestrictiveStringRecord, fail, type FlattenKeys } from "../util/index.js";
47
+ import type { RestrictiveStringRecord, FlattenKeys } from "../util/index.js";
46
48
  import {
47
49
  isObjectNodeSchema,
48
50
  type ObjectNodeSchema,
@@ -50,16 +52,21 @@ import {
50
52
  } from "./objectNodeTypes.js";
51
53
  import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
52
54
  import { getUnhydratedContext } from "./createContext.js";
55
+ import type { SimpleObjectFieldSchema } from "./simpleSchema.js";
53
56
 
54
57
  /**
55
58
  * Generates the properties for an ObjectNode from its field schema object.
56
59
  * @system @public
57
60
  */
58
- export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
59
- -readonly [Property in keyof T]: Property extends string
60
- ? TreeFieldFromImplicitField<T[Property]>
61
- : unknown;
62
- };
61
+ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> =
62
+ RestrictiveStringRecord<ImplicitFieldSchema> extends T
63
+ ? // eslint-disable-next-line @typescript-eslint/ban-types
64
+ {}
65
+ : {
66
+ -readonly [Property in keyof T]: Property extends string
67
+ ? TreeFieldFromImplicitField<T[Property]>
68
+ : unknown;
69
+ };
63
70
 
64
71
  /**
65
72
  * A {@link TreeNode} which modules a JavaScript object.
@@ -112,12 +119,21 @@ export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSche
112
119
  * To prevent extraneous properties in literals for the fields of an empty object from compiling, the empty case is special cased to produce `Record<string, never>`.
113
120
  * More details at {@link https://mercury.com/blog/creating-an-emptyobject-type-in-typescript}.
114
121
  *
122
+ * Additionally when T is exactly `RestrictiveStringRecord<ImplicitFieldSchema>` produce just `never` so that it is assignable to the insertable for any given object type.
123
+ *
124
+ * Separating `{}` from `RestrictiveStringRecord<ImplicitFieldSchema>` is a bit messy since both extend each-other despite them being very different types.
125
+ * A third dummy type `{ arbitraryKey: "arbitraryValue" }` is used to resolve this.
126
+ *
115
127
  * @system @public
116
128
  */
117
129
  export type InsertableObjectFromSchemaRecord<
118
130
  T extends RestrictiveStringRecord<ImplicitFieldSchema>,
119
- > = Record<string, never> extends T
120
- ? Record<string, never>
131
+ > = RestrictiveStringRecord<ImplicitFieldSchema> extends T
132
+ ? { arbitraryKey: "arbitraryValue" } extends T
133
+ ? // {} case
134
+ Record<string, never>
135
+ : // RestrictiveStringRecord<ImplicitFieldSchema> case
136
+ never
121
137
  : FlattenKeys<
122
138
  {
123
139
  readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<
@@ -366,8 +382,17 @@ export function objectSchema<
366
382
  let unhydratedContext: Context;
367
383
 
368
384
  class CustomObjectNode extends CustomObjectNodeBase<T> {
369
- public static readonly fields: ReadonlyMap<string, FieldSchema> = new Map(
370
- Array.from(flexKeyMap, ([key, value]) => [key as string, value.schema]),
385
+ public static readonly fields: ReadonlyMap<
386
+ string,
387
+ FieldSchemaAlpha & SimpleObjectFieldSchema
388
+ > = new Map(
389
+ Array.from(flexKeyMap, ([key, value]) => [
390
+ key as string,
391
+ new ObjectFieldSchema(value.schema.kind, value.schema.allowedTypes, {
392
+ ...value.schema.props,
393
+ key: getStoredKey(key as string, value.schema),
394
+ }),
395
+ ]),
371
396
  );
372
397
  public static readonly flexKeyMap: SimpleKeyMap = flexKeyMap;
373
398
  public static readonly storedKeyToPropertyKey: ReadonlyMap<FieldKey, string> = new Map<
@@ -467,8 +492,7 @@ export function objectSchema<
467
492
  public static get childTypes(): ReadonlySet<TreeNodeSchema> {
468
493
  return lazyChildTypes.value;
469
494
  }
470
- public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> | undefined =
471
- metadata;
495
+ public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
472
496
 
473
497
  // eslint-disable-next-line import/no-deprecated
474
498
  public get [typeNameSymbol](): TName {
@@ -9,35 +9,37 @@ import type {
9
9
  InsertableObjectFromSchemaRecord,
10
10
  SimpleKeyMap,
11
11
  } from "./objectNode.js";
12
- import type { ImplicitFieldSchema, FieldSchema } from "./schemaTypes.js";
12
+ import type { ImplicitFieldSchema, FieldSchemaAlpha } from "./schemaTypes.js";
13
13
  import { NodeKind, type TreeNodeSchemaClass, type TreeNodeSchema } from "./core/index.js";
14
14
  import type { FieldKey } from "../core/index.js";
15
+ import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "./simpleSchema.js";
15
16
 
16
17
  /**
17
18
  * A schema for {@link TreeObjectNode}s.
18
- * @privateRemarks
19
- * This is a candidate for being promoted to the public package API.
19
+ * @sealed
20
+ * @alpha
20
21
  */
21
22
  export interface ObjectNodeSchema<
22
- TName extends string = string,
23
- T extends
23
+ out TName extends string = string,
24
+ in out T extends
24
25
  RestrictiveStringRecord<ImplicitFieldSchema> = RestrictiveStringRecord<ImplicitFieldSchema>,
25
26
  ImplicitlyConstructable extends boolean = boolean,
26
- TCustomMetadata = unknown,
27
+ out TCustomMetadata = unknown,
27
28
  > extends TreeNodeSchemaClass<
28
- TName,
29
- NodeKind.Object,
30
- TreeObjectNode<T, TName>,
31
- object & InsertableObjectFromSchemaRecord<T>,
32
- ImplicitlyConstructable,
33
- T,
34
- never,
35
- TCustomMetadata
36
- > {
29
+ TName,
30
+ NodeKind.Object,
31
+ TreeObjectNode<T, TName>,
32
+ InsertableObjectFromSchemaRecord<T>,
33
+ ImplicitlyConstructable,
34
+ T,
35
+ never,
36
+ TCustomMetadata
37
+ >,
38
+ SimpleObjectNodeSchema<TCustomMetadata> {
37
39
  /**
38
40
  * From property keys to the associated schema.
39
41
  */
40
- readonly fields: ReadonlyMap<string, FieldSchema>;
42
+ readonly fields: ReadonlyMap<string, FieldSchemaAlpha & SimpleObjectFieldSchema>;
41
43
  }
42
44
 
43
45
  /**
@@ -65,6 +67,9 @@ export interface ObjectNodeSchemaInternalData {
65
67
  readonly allowUnknownOptionalFields: boolean;
66
68
  }
67
69
 
70
+ /**
71
+ * @alpha
72
+ */
68
73
  export const ObjectNodeSchema = {
69
74
  /**
70
75
  * instanceof-based narrowing support for ObjectNodeSchema in Javascript and TypeScript 5.3 or newer.
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
-
7
+ import { fail } from "@fluidframework/core-utils/internal";
8
8
  import {
9
9
  EmptyKey,
10
10
  type IForestSubscription,
@@ -20,7 +20,7 @@ import {
20
20
  type FlexTreeRequiredField,
21
21
  type FlexTreeOptionalField,
22
22
  } from "../feature-libraries/index.js";
23
- import { type Mutable, fail, isReadonlyArray } from "../util/index.js";
23
+ import { type Mutable, isReadonlyArray } from "../util/index.js";
24
24
  import {
25
25
  getKernel,
26
26
  type TreeNode,