@fluidframework/tree 2.4.0-297385 → 2.4.0-299374

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 (394) hide show
  1. package/.dependency-cruiser-known-violations.json +0 -14
  2. package/.vscode/settings.json +9 -1
  3. package/api-report/tree.alpha.api.md +178 -21
  4. package/api-report/tree.beta.api.md +46 -21
  5. package/api-report/tree.legacy.alpha.api.md +46 -21
  6. package/api-report/tree.legacy.public.api.md +46 -21
  7. package/api-report/tree.public.api.md +46 -21
  8. package/dist/alpha.d.ts +29 -1
  9. package/dist/beta.d.ts +2 -0
  10. package/dist/codec/codec.d.ts +4 -4
  11. package/dist/codec/codec.js.map +1 -1
  12. package/dist/codec/noopValidator.d.ts +1 -1
  13. package/dist/codec/noopValidator.js +1 -1
  14. package/dist/codec/noopValidator.js.map +1 -1
  15. package/dist/core/tree/anchorSet.d.ts +159 -2
  16. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  17. package/dist/core/tree/anchorSet.js +54 -12
  18. package/dist/core/tree/anchorSet.js.map +1 -1
  19. package/dist/external-utilities/typeboxValidator.d.ts +1 -1
  20. package/dist/external-utilities/typeboxValidator.js +1 -1
  21. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  22. package/dist/feature-libraries/flex-tree/lazyField.d.ts +4 -0
  23. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  24. package/dist/feature-libraries/flex-tree/lazyField.js +38 -6
  25. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  26. package/dist/feature-libraries/index.d.ts +0 -1
  27. package/dist/feature-libraries/index.d.ts.map +1 -1
  28. package/dist/feature-libraries/index.js +46 -49
  29. package/dist/feature-libraries/index.js.map +1 -1
  30. package/dist/feature-libraries/treeCompressionUtils.d.ts +1 -1
  31. package/dist/feature-libraries/treeCompressionUtils.js +1 -1
  32. package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
  33. package/dist/index.d.ts +6 -5
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/internalTypes.d.ts +2 -2
  38. package/dist/internalTypes.d.ts.map +1 -1
  39. package/dist/internalTypes.js.map +1 -1
  40. package/dist/legacy.d.ts +2 -0
  41. package/dist/packageVersion.d.ts +1 -1
  42. package/dist/packageVersion.js +1 -1
  43. package/dist/packageVersion.js.map +1 -1
  44. package/dist/public.d.ts +2 -0
  45. package/dist/shared-tree/index.d.ts +2 -1
  46. package/dist/shared-tree/index.d.ts.map +1 -1
  47. package/dist/shared-tree/index.js +5 -1
  48. package/dist/shared-tree/index.js.map +1 -1
  49. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  50. package/dist/shared-tree/schematizingTreeView.js +1 -14
  51. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  52. package/dist/shared-tree/sharedTree.d.ts +24 -9
  53. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  54. package/dist/shared-tree/sharedTree.js +20 -8
  55. package/dist/shared-tree/sharedTree.js.map +1 -1
  56. package/dist/shared-tree/treeApi.d.ts +6 -6
  57. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  58. package/dist/shared-tree/treeApi.js.map +1 -1
  59. package/dist/simple-tree/api/conciseTree.d.ts +29 -0
  60. package/dist/simple-tree/api/conciseTree.d.ts.map +1 -0
  61. package/dist/simple-tree/api/conciseTree.js +25 -0
  62. package/dist/simple-tree/api/conciseTree.js.map +1 -0
  63. package/dist/simple-tree/api/customTree.d.ts +44 -0
  64. package/dist/simple-tree/api/customTree.d.ts.map +1 -0
  65. package/dist/simple-tree/api/customTree.js +63 -0
  66. package/dist/simple-tree/api/customTree.js.map +1 -0
  67. package/dist/simple-tree/api/index.d.ts +7 -2
  68. package/dist/simple-tree/api/index.d.ts.map +1 -1
  69. package/dist/simple-tree/api/index.js +5 -1
  70. package/dist/simple-tree/api/index.js.map +1 -1
  71. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
  72. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  73. package/dist/simple-tree/api/schemaCreationUtilities.js +43 -15
  74. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  75. package/dist/simple-tree/api/schemaFactory.d.ts +1 -2
  76. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  77. package/dist/simple-tree/api/schemaFactory.js +8 -8
  78. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  79. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
  80. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  81. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  82. package/dist/simple-tree/api/storedSchema.d.ts +78 -0
  83. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -0
  84. package/dist/simple-tree/api/storedSchema.js +107 -0
  85. package/dist/simple-tree/api/storedSchema.js.map +1 -0
  86. package/dist/simple-tree/api/testRecursiveDomain.d.ts +10 -10
  87. package/dist/simple-tree/api/tree.d.ts +12 -3
  88. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  89. package/dist/simple-tree/api/tree.js.map +1 -1
  90. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  91. package/dist/simple-tree/api/treeNodeApi.js +5 -5
  92. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  93. package/dist/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
  94. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -0
  95. package/dist/simple-tree/api/typesUnsafe.js.map +1 -0
  96. package/dist/simple-tree/api/verboseTree.d.ts +6 -20
  97. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  98. package/dist/simple-tree/api/verboseTree.js +10 -48
  99. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  100. package/dist/simple-tree/arrayNode.d.ts +14 -3
  101. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  102. package/dist/simple-tree/arrayNode.js +1 -2
  103. package/dist/simple-tree/arrayNode.js.map +1 -1
  104. package/dist/simple-tree/core/index.d.ts +1 -1
  105. package/dist/simple-tree/core/index.d.ts.map +1 -1
  106. package/dist/simple-tree/core/index.js +2 -1
  107. package/dist/simple-tree/core/index.js.map +1 -1
  108. package/dist/simple-tree/core/treeNodeKernel.d.ts +9 -0
  109. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  110. package/dist/simple-tree/core/treeNodeKernel.js +14 -1
  111. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  112. package/dist/simple-tree/core/treeNodeSchema.d.ts +6 -5
  113. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  114. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  115. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  116. package/dist/simple-tree/core/unhydratedFlexTree.js +3 -1
  117. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  118. package/dist/simple-tree/core/withType.d.ts +3 -1
  119. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  120. package/dist/simple-tree/core/withType.js.map +1 -1
  121. package/dist/simple-tree/flexList.d.ts.map +1 -0
  122. package/dist/simple-tree/flexList.js.map +1 -0
  123. package/dist/simple-tree/index.d.ts +6 -7
  124. package/dist/simple-tree/index.d.ts.map +1 -1
  125. package/dist/simple-tree/index.js +5 -3
  126. package/dist/simple-tree/index.js.map +1 -1
  127. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  128. package/dist/simple-tree/mapNode.js +2 -3
  129. package/dist/simple-tree/mapNode.js.map +1 -1
  130. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  131. package/dist/simple-tree/objectNode.js +3 -4
  132. package/dist/simple-tree/objectNode.js.map +1 -1
  133. package/dist/simple-tree/schemaTypes.d.ts +60 -7
  134. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  135. package/dist/simple-tree/schemaTypes.js +11 -6
  136. package/dist/simple-tree/schemaTypes.js.map +1 -1
  137. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  138. package/dist/simple-tree/toFlexSchema.js +13 -15
  139. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  140. package/dist/simple-tree/toMapTree.d.ts +4 -2
  141. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  142. package/dist/simple-tree/toMapTree.js +3 -3
  143. package/dist/simple-tree/toMapTree.js.map +1 -1
  144. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  145. package/dist/simple-tree/treeNodeValid.js +2 -1
  146. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  147. package/dist/treeFactory.d.ts +1 -0
  148. package/dist/treeFactory.d.ts.map +1 -1
  149. package/dist/treeFactory.js +1 -0
  150. package/dist/treeFactory.js.map +1 -1
  151. package/dist/util/utils.d.ts +10 -8
  152. package/dist/util/utils.d.ts.map +1 -1
  153. package/dist/util/utils.js.map +1 -1
  154. package/docs/main/detached-trees.md +8 -8
  155. package/lib/alpha.d.ts +29 -1
  156. package/lib/beta.d.ts +2 -0
  157. package/lib/codec/codec.d.ts +4 -4
  158. package/lib/codec/codec.js.map +1 -1
  159. package/lib/codec/noopValidator.d.ts +1 -1
  160. package/lib/codec/noopValidator.js +1 -1
  161. package/lib/codec/noopValidator.js.map +1 -1
  162. package/lib/core/tree/anchorSet.d.ts +159 -2
  163. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  164. package/lib/core/tree/anchorSet.js +54 -12
  165. package/lib/core/tree/anchorSet.js.map +1 -1
  166. package/lib/external-utilities/typeboxValidator.d.ts +1 -1
  167. package/lib/external-utilities/typeboxValidator.js +1 -1
  168. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  169. package/lib/feature-libraries/flex-tree/lazyField.d.ts +4 -0
  170. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  171. package/lib/feature-libraries/flex-tree/lazyField.js +36 -5
  172. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  173. package/lib/feature-libraries/index.d.ts +0 -1
  174. package/lib/feature-libraries/index.d.ts.map +1 -1
  175. package/lib/feature-libraries/index.js +0 -1
  176. package/lib/feature-libraries/index.js.map +1 -1
  177. package/lib/feature-libraries/treeCompressionUtils.d.ts +1 -1
  178. package/lib/feature-libraries/treeCompressionUtils.js +1 -1
  179. package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
  180. package/lib/index.d.ts +6 -5
  181. package/lib/index.d.ts.map +1 -1
  182. package/lib/index.js +3 -3
  183. package/lib/index.js.map +1 -1
  184. package/lib/internalTypes.d.ts +2 -2
  185. package/lib/internalTypes.d.ts.map +1 -1
  186. package/lib/internalTypes.js.map +1 -1
  187. package/lib/legacy.d.ts +2 -0
  188. package/lib/packageVersion.d.ts +1 -1
  189. package/lib/packageVersion.js +1 -1
  190. package/lib/packageVersion.js.map +1 -1
  191. package/lib/public.d.ts +2 -0
  192. package/lib/shared-tree/index.d.ts +2 -1
  193. package/lib/shared-tree/index.d.ts.map +1 -1
  194. package/lib/shared-tree/index.js +2 -1
  195. package/lib/shared-tree/index.js.map +1 -1
  196. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  197. package/lib/shared-tree/schematizingTreeView.js +2 -15
  198. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  199. package/lib/shared-tree/sharedTree.d.ts +24 -9
  200. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  201. package/lib/shared-tree/sharedTree.js +19 -8
  202. package/lib/shared-tree/sharedTree.js.map +1 -1
  203. package/lib/shared-tree/treeApi.d.ts +6 -6
  204. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  205. package/lib/shared-tree/treeApi.js.map +1 -1
  206. package/lib/simple-tree/api/conciseTree.d.ts +29 -0
  207. package/lib/simple-tree/api/conciseTree.d.ts.map +1 -0
  208. package/lib/simple-tree/api/conciseTree.js +21 -0
  209. package/lib/simple-tree/api/conciseTree.js.map +1 -0
  210. package/lib/simple-tree/api/customTree.d.ts +44 -0
  211. package/lib/simple-tree/api/customTree.d.ts.map +1 -0
  212. package/lib/simple-tree/api/customTree.js +59 -0
  213. package/lib/simple-tree/api/customTree.js.map +1 -0
  214. package/lib/simple-tree/api/index.d.ts +7 -2
  215. package/lib/simple-tree/api/index.d.ts.map +1 -1
  216. package/lib/simple-tree/api/index.js +1 -0
  217. package/lib/simple-tree/api/index.js.map +1 -1
  218. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
  219. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  220. package/lib/simple-tree/api/schemaCreationUtilities.js +43 -15
  221. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  222. package/lib/simple-tree/api/schemaFactory.d.ts +1 -2
  223. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  224. package/lib/simple-tree/api/schemaFactory.js +1 -1
  225. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  226. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
  227. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  228. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  229. package/lib/simple-tree/api/storedSchema.d.ts +78 -0
  230. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -0
  231. package/lib/simple-tree/api/storedSchema.js +101 -0
  232. package/lib/simple-tree/api/storedSchema.js.map +1 -0
  233. package/lib/simple-tree/api/testRecursiveDomain.d.ts +10 -10
  234. package/lib/simple-tree/api/tree.d.ts +12 -3
  235. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  236. package/lib/simple-tree/api/tree.js.map +1 -1
  237. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  238. package/lib/simple-tree/api/treeNodeApi.js +3 -3
  239. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  240. package/lib/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
  241. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -0
  242. package/lib/simple-tree/api/typesUnsafe.js.map +1 -0
  243. package/lib/simple-tree/api/verboseTree.d.ts +6 -20
  244. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  245. package/lib/simple-tree/api/verboseTree.js +11 -49
  246. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  247. package/lib/simple-tree/arrayNode.d.ts +14 -3
  248. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  249. package/lib/simple-tree/arrayNode.js +1 -2
  250. package/lib/simple-tree/arrayNode.js.map +1 -1
  251. package/lib/simple-tree/core/index.d.ts +1 -1
  252. package/lib/simple-tree/core/index.d.ts.map +1 -1
  253. package/lib/simple-tree/core/index.js +1 -1
  254. package/lib/simple-tree/core/index.js.map +1 -1
  255. package/lib/simple-tree/core/treeNodeKernel.d.ts +9 -0
  256. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  257. package/lib/simple-tree/core/treeNodeKernel.js +12 -0
  258. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  259. package/lib/simple-tree/core/treeNodeSchema.d.ts +6 -5
  260. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  261. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  262. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  263. package/lib/simple-tree/core/unhydratedFlexTree.js +3 -1
  264. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  265. package/lib/simple-tree/core/withType.d.ts +3 -1
  266. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  267. package/lib/simple-tree/core/withType.js.map +1 -1
  268. package/lib/simple-tree/flexList.d.ts.map +1 -0
  269. package/lib/simple-tree/flexList.js.map +1 -0
  270. package/lib/simple-tree/index.d.ts +6 -7
  271. package/lib/simple-tree/index.d.ts.map +1 -1
  272. package/lib/simple-tree/index.js +3 -4
  273. package/lib/simple-tree/index.js.map +1 -1
  274. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  275. package/lib/simple-tree/mapNode.js +1 -2
  276. package/lib/simple-tree/mapNode.js.map +1 -1
  277. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  278. package/lib/simple-tree/objectNode.js +1 -2
  279. package/lib/simple-tree/objectNode.js.map +1 -1
  280. package/lib/simple-tree/schemaTypes.d.ts +60 -7
  281. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  282. package/lib/simple-tree/schemaTypes.js +6 -1
  283. package/lib/simple-tree/schemaTypes.js.map +1 -1
  284. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  285. package/lib/simple-tree/toFlexSchema.js +1 -3
  286. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  287. package/lib/simple-tree/toMapTree.d.ts +4 -2
  288. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  289. package/lib/simple-tree/toMapTree.js +3 -3
  290. package/lib/simple-tree/toMapTree.js.map +1 -1
  291. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  292. package/lib/simple-tree/treeNodeValid.js +2 -1
  293. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  294. package/lib/treeFactory.d.ts +1 -0
  295. package/lib/treeFactory.d.ts.map +1 -1
  296. package/lib/treeFactory.js +1 -0
  297. package/lib/treeFactory.js.map +1 -1
  298. package/lib/util/utils.d.ts +10 -8
  299. package/lib/util/utils.d.ts.map +1 -1
  300. package/lib/util/utils.js.map +1 -1
  301. package/package.json +41 -24
  302. package/src/codec/codec.ts +4 -4
  303. package/src/codec/noopValidator.ts +1 -1
  304. package/src/core/tree/anchorSet.ts +63 -13
  305. package/src/external-utilities/typeboxValidator.ts +1 -1
  306. package/src/feature-libraries/flex-tree/lazyField.ts +44 -7
  307. package/src/feature-libraries/index.ts +0 -10
  308. package/src/feature-libraries/treeCompressionUtils.ts +1 -1
  309. package/src/index.ts +26 -6
  310. package/src/internalTypes.ts +4 -1
  311. package/src/packageVersion.ts +1 -1
  312. package/src/shared-tree/index.ts +5 -0
  313. package/src/shared-tree/schematizingTreeView.ts +7 -16
  314. package/src/shared-tree/sharedTree.ts +52 -22
  315. package/src/shared-tree/treeApi.ts +19 -9
  316. package/src/simple-tree/api/conciseTree.ts +58 -0
  317. package/src/simple-tree/api/customTree.ts +119 -0
  318. package/src/simple-tree/api/index.ts +39 -1
  319. package/src/simple-tree/api/schemaCreationUtilities.ts +55 -36
  320. package/src/simple-tree/api/schemaFactory.ts +4 -6
  321. package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -2
  322. package/src/simple-tree/api/storedSchema.ts +126 -0
  323. package/src/simple-tree/api/tree.ts +24 -2
  324. package/src/simple-tree/api/treeNodeApi.ts +3 -8
  325. package/src/simple-tree/{typesUnsafe.ts → api/typesUnsafe.ts} +95 -21
  326. package/src/simple-tree/api/verboseTree.ts +21 -76
  327. package/src/simple-tree/arrayNode.ts +35 -15
  328. package/src/simple-tree/core/index.ts +1 -0
  329. package/src/simple-tree/core/treeNodeKernel.ts +13 -0
  330. package/src/simple-tree/core/treeNodeSchema.ts +7 -5
  331. package/src/simple-tree/core/unhydratedFlexTree.ts +6 -1
  332. package/src/simple-tree/core/withType.ts +10 -1
  333. package/src/simple-tree/index.ts +41 -21
  334. package/src/simple-tree/mapNode.ts +1 -1
  335. package/src/simple-tree/objectNode.ts +1 -1
  336. package/src/simple-tree/schemaTypes.ts +70 -11
  337. package/src/simple-tree/toFlexSchema.ts +1 -3
  338. package/src/simple-tree/toMapTree.ts +7 -4
  339. package/src/simple-tree/treeNodeValid.ts +2 -1
  340. package/src/treeFactory.ts +1 -0
  341. package/src/util/utils.ts +10 -8
  342. package/dist/feature-libraries/flex-tree/unboxed.d.ts +0 -12
  343. package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
  344. package/dist/feature-libraries/flex-tree/unboxed.js +0 -20
  345. package/dist/feature-libraries/flex-tree/unboxed.js.map +0 -1
  346. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
  347. package/dist/feature-libraries/typed-schema/flexList.js.map +0 -1
  348. package/dist/feature-libraries/typed-schema/index.d.ts +0 -7
  349. package/dist/feature-libraries/typed-schema/index.d.ts.map +0 -1
  350. package/dist/feature-libraries/typed-schema/index.js +0 -12
  351. package/dist/feature-libraries/typed-schema/index.js.map +0 -1
  352. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
  353. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
  354. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -7
  355. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
  356. package/dist/simple-tree/proxyBinding.d.ts +0 -15
  357. package/dist/simple-tree/proxyBinding.d.ts.map +0 -1
  358. package/dist/simple-tree/proxyBinding.js +0 -22
  359. package/dist/simple-tree/proxyBinding.js.map +0 -1
  360. package/dist/simple-tree/typesUnsafe.d.ts.map +0 -1
  361. package/dist/simple-tree/typesUnsafe.js.map +0 -1
  362. package/lib/feature-libraries/flex-tree/unboxed.d.ts +0 -12
  363. package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
  364. package/lib/feature-libraries/flex-tree/unboxed.js +0 -16
  365. package/lib/feature-libraries/flex-tree/unboxed.js.map +0 -1
  366. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
  367. package/lib/feature-libraries/typed-schema/flexList.js.map +0 -1
  368. package/lib/feature-libraries/typed-schema/index.d.ts +0 -7
  369. package/lib/feature-libraries/typed-schema/index.d.ts.map +0 -1
  370. package/lib/feature-libraries/typed-schema/index.js +0 -6
  371. package/lib/feature-libraries/typed-schema/index.js.map +0 -1
  372. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
  373. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
  374. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +0 -6
  375. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
  376. package/lib/simple-tree/proxyBinding.d.ts +0 -15
  377. package/lib/simple-tree/proxyBinding.d.ts.map +0 -1
  378. package/lib/simple-tree/proxyBinding.js +0 -18
  379. package/lib/simple-tree/proxyBinding.js.map +0 -1
  380. package/lib/simple-tree/typesUnsafe.d.ts.map +0 -1
  381. package/lib/simple-tree/typesUnsafe.js.map +0 -1
  382. package/src/feature-libraries/flex-tree/unboxed.ts +0 -24
  383. package/src/feature-libraries/typed-schema/README.md +0 -6
  384. package/src/feature-libraries/typed-schema/index.ts +0 -16
  385. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -14
  386. package/src/simple-tree/proxyBinding.ts +0 -20
  387. /package/dist/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
  388. /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
  389. /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
  390. /package/lib/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
  391. /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
  392. /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
  393. /package/src/simple-tree/{ProxyBinding.md → core/TreeNodeBinding.md} +0 -0
  394. /package/src/{feature-libraries/typed-schema → simple-tree}/flexList.ts +0 -0
@@ -11,19 +11,5 @@
11
11
  "src/feature-libraries/flex-tree/lazyNode.ts",
12
12
  "src/feature-libraries/flex-tree/lazyField.ts"
13
13
  ]
14
- },
15
- {
16
- "type": "cycle",
17
- "from": "src/feature-libraries/flex-tree/lazyField.ts",
18
- "to": "src/feature-libraries/flex-tree/unboxed.ts",
19
- "rule": {
20
- "severity": "error",
21
- "name": "no-circular"
22
- },
23
- "cycle": [
24
- "src/feature-libraries/flex-tree/unboxed.ts",
25
- "src/feature-libraries/flex-tree/lazyNode.ts",
26
- "src/feature-libraries/flex-tree/lazyField.ts"
27
- ]
28
14
  }
29
15
  ]
@@ -15,7 +15,15 @@
15
15
  // This extension appears to invoke mocha programmatically, meaning that the enablement of this option in the common
16
16
  // mocha test config isn't sufficient; it also needs to be enabled here.
17
17
  "mochaExplorer.nodeArgv": ["--conditions", "allow-ff-test-exports"],
18
- "cSpell.words": ["deprioritized", "endregion", "insertable", "reentrantly", "unhydrated"],
18
+ "cSpell.words": [
19
+ "contravariantly",
20
+ "covariantly",
21
+ "deprioritized",
22
+ "endregion",
23
+ "insertable",
24
+ "reentrantly",
25
+ "unhydrated",
26
+ ],
19
27
 
20
28
  // Enable biome as default formatter, and disable rules that disagree with it
21
29
  "editor.defaultFormatter": "biomejs.biome",
@@ -4,9 +4,21 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ // @alpha
8
+ export function adaptEnum<TScope extends string, const TEnum extends Record<string, string | number>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => TreeNode & {
9
+ readonly value: TValue;
10
+ }) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
11
+ readonly value: TEnum[Property];
12
+ }, never, true, unknown> & (new () => TreeNode & {
13
+ readonly value: TEnum[Property];
14
+ }); };
15
+
7
16
  // @public
8
17
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
18
 
19
+ // @public
20
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
21
+
10
22
  // @public
11
23
  type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
12
24
  [FieldKind.Required]: T;
@@ -27,13 +39,36 @@ export interface CommitMetadata {
27
39
  readonly kind: CommitKind;
28
40
  }
29
41
 
42
+ // @alpha
43
+ export function comparePersistedSchema(persisted: JsonCompatible, view: JsonCompatible, options: ICodecOptions, canInitialize: boolean): SchemaCompatibilityStatus;
44
+
30
45
  // @public @sealed
31
46
  interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
32
47
  }
33
48
 
49
+ // @alpha
50
+ export function enumFromStrings<TScope extends string, const Members extends string>(factory: SchemaFactory<TScope>, members: readonly Members[]): (<TValue extends Members>(value: TValue) => TreeNode & {
51
+ readonly value: TValue;
52
+ }) & Record<Members, TreeNodeSchemaClass<ScopedSchemaName<TScope, Members>, NodeKind.Object, TreeNode & {
53
+ readonly value: Members;
54
+ }, never, true, unknown> & (new () => TreeNode & {
55
+ readonly value: Members;
56
+ })>;
57
+
34
58
  // @public
35
59
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
36
60
 
61
+ // @alpha
62
+ export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompatible;
63
+
64
+ // @alpha
65
+ export type FactoryContent = IFluidHandle | string | number | boolean | null | Iterable<readonly [string, InsertableContent]> | readonly InsertableContent[] | FactoryContentObject;
66
+
67
+ // @alpha
68
+ export type FactoryContentObject = {
69
+ readonly [P in string]?: InsertableContent;
70
+ };
71
+
37
72
  // @public
38
73
  type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
39
74
 
@@ -92,6 +127,18 @@ type FlexList<Item = unknown> = readonly LazyItem<Item>[];
92
127
  // @public
93
128
  type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
94
129
 
130
+ // @alpha
131
+ export interface ForestOptions {
132
+ readonly forest?: ForestType;
133
+ }
134
+
135
+ // @alpha
136
+ export enum ForestType {
137
+ Expensive = 2,
138
+ Optimized = 1,
139
+ Reference = 0
140
+ }
141
+
95
142
  // @alpha
96
143
  export function getBranch(tree: ITree): TreeBranch;
97
144
 
@@ -101,6 +148,11 @@ export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
101
148
  // @alpha
102
149
  export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
103
150
 
151
+ // @alpha
152
+ export interface ICodecOptions {
153
+ readonly jsonValidator: JsonValidator;
154
+ }
155
+
104
156
  // @public
105
157
  export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
106
158
 
@@ -110,6 +162,15 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
110
162
  // @public
111
163
  type _InlineTrick = 0;
112
164
 
165
+ // @alpha
166
+ export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> = TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : InsertableContent;
167
+
168
+ // @alpha
169
+ export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
170
+
171
+ // @alpha
172
+ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> = TSchema extends ImplicitFieldSchema ? InsertableTreeFieldFromImplicitField<TSchema> : InsertableContent | undefined;
173
+
113
174
  // @public
114
175
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
115
176
  readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
@@ -125,7 +186,7 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
125
186
  };
126
187
 
127
188
  // @public
128
- export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
189
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : never;
129
190
 
130
191
  // @public
131
192
  export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
@@ -134,7 +195,7 @@ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforce
134
195
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
135
196
 
136
197
  // @public
137
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
198
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypesUnsafe ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
138
199
 
139
200
  // @public
140
201
  export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
@@ -179,6 +240,9 @@ declare namespace InternalTypes {
179
240
  NodeBuilderDataUnsafe,
180
241
  NodeFromSchemaUnsafe,
181
242
  ReadonlyMapInlined,
243
+ TreeNodeSchemaUnsafe,
244
+ AllowedTypesUnsafe,
245
+ TreeNodeSchemaNonClassUnsafe,
182
246
  FlexList,
183
247
  FlexListToUnion,
184
248
  ExtractItemType,
@@ -215,6 +279,14 @@ export interface JsonArrayNodeSchema extends JsonNodeSchemaBase<NodeKind.Array,
215
279
  readonly items: JsonFieldSchema;
216
280
  }
217
281
 
282
+ // @alpha
283
+ export type JsonCompatible = string | number | boolean | null | JsonCompatible[] | JsonCompatibleObject;
284
+
285
+ // @alpha
286
+ export type JsonCompatibleObject = {
287
+ [P in string]?: JsonCompatible;
288
+ };
289
+
218
290
  // @alpha @sealed
219
291
  export type JsonFieldSchema = {
220
292
  readonly description?: string | undefined;
@@ -272,6 +344,11 @@ export type JsonTreeSchema = JsonFieldSchema & {
272
344
  readonly $defs: Record<JsonSchemaId, JsonNodeSchema>;
273
345
  };
274
346
 
347
+ // @alpha
348
+ export interface JsonValidator {
349
+ compile<Schema extends TSchema>(schema: Schema): SchemaValidationFunction<Schema>;
350
+ }
351
+
275
352
  // @public
276
353
  export type LazyItem<Item = unknown> = Item | (() => Item);
277
354
 
@@ -293,10 +370,10 @@ export interface MakeNominal {
293
370
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
294
371
 
295
372
  // @public
296
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
373
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
297
374
 
298
375
  // @public
299
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
376
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
300
377
 
301
378
  // @beta @sealed
302
379
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -307,7 +384,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
307
384
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
308
385
 
309
386
  // @public
310
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
387
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
311
388
 
312
389
  // @public
313
390
  export interface NodeInDocumentConstraint {
@@ -325,6 +402,9 @@ export enum NodeKind {
325
402
  Object = 2
326
403
  }
327
404
 
405
+ // @alpha
406
+ export const noopValidator: JsonValidator;
407
+
328
408
  // @public
329
409
  type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
330
410
  -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
@@ -338,6 +418,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
338
418
  // @public
339
419
  export type Off = () => void;
340
420
 
421
+ // @public @sealed
422
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
423
+ }
424
+
341
425
  // @public @sealed
342
426
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
343
427
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -389,17 +473,17 @@ export const rollback: unique symbol;
389
473
  // @public @sealed
390
474
  export interface RunTransaction {
391
475
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
392
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
476
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
393
477
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
394
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
478
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
395
479
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
396
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
480
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
397
481
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
398
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
482
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
399
483
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
400
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
484
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
401
485
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
402
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
486
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
403
487
  readonly rollback: typeof rollback;
404
488
  }
405
489
 
@@ -443,9 +527,40 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
443
527
  readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
444
528
  }
445
529
 
530
+ // @alpha
531
+ export interface SchemaValidationFunction<Schema extends TSchema> {
532
+ check(data: unknown): data is Static<Schema>;
533
+ }
534
+
446
535
  // @public
447
536
  type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
448
537
 
538
+ // @alpha
539
+ export interface SharedTreeFormatOptions {
540
+ formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];
541
+ treeEncodeType: TreeCompressionStrategy;
542
+ }
543
+
544
+ // @alpha
545
+ export const SharedTreeFormatVersion: {
546
+ readonly v1: 1;
547
+ readonly v2: 2;
548
+ readonly v3: 3;
549
+ };
550
+
551
+ // @alpha
552
+ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
553
+
554
+ // @alpha
555
+ export type SharedTreeOptions = Partial<ICodecOptions> & Partial<SharedTreeFormatOptions> & ForestOptions;
556
+
557
+ // @alpha
558
+ export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
559
+ readonly value: TName;
560
+ }, never, true, unknown> & (new () => TreeNode & {
561
+ readonly value: TName;
562
+ });
563
+
449
564
  // @public
450
565
  export type TransactionConstraint = NodeInDocumentConstraint;
451
566
 
@@ -459,7 +574,7 @@ interface TreeApi extends TreeNodeApi {
459
574
  }
460
575
 
461
576
  // @public @sealed
462
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
577
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
463
578
  }
464
579
 
465
580
  // @public
@@ -468,7 +583,7 @@ export const TreeArrayNode: {
468
583
  };
469
584
 
470
585
  // @public @sealed
471
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
586
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
472
587
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
473
588
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
474
589
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -490,7 +605,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
490
605
  }
491
606
 
492
607
  // @public @sealed
493
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
608
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
494
609
  }
495
610
 
496
611
  // @beta @sealed
@@ -522,8 +637,14 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
522
637
  nodeChanged: (data: NodeChangedData<TNode> & (TNode extends WithType<string, NodeKind.Map | NodeKind.Object> ? Required<Pick<NodeChangedData<TNode>, "changedProperties">> : unknown)) => void;
523
638
  }
524
639
 
640
+ // @alpha
641
+ export enum TreeCompressionStrategy {
642
+ Compressed = 0,
643
+ Uncompressed = 1
644
+ }
645
+
525
646
  // @public
526
- export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
647
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
527
648
 
528
649
  // @public
529
650
  type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
@@ -572,13 +693,19 @@ export interface TreeNodeApi {
572
693
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
573
694
 
574
695
  // @public
575
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
696
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
576
697
 
577
698
  // @public @sealed
578
- export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
699
+ export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
579
700
 
580
701
  // @public @sealed
581
- export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
702
+ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
703
+ // @sealed
704
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
705
+ }
706
+
707
+ // @public
708
+ export interface TreeNodeSchemaClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
582
709
  // @sealed
583
710
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
584
711
  }
@@ -594,11 +721,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
594
721
  }
595
722
 
596
723
  // @public @sealed
597
- export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
724
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
725
+ // (undocumented)
726
+ create(data: TInsertable): TNode;
727
+ }
728
+
729
+ // @public
730
+ interface TreeNodeSchemaNonClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
598
731
  // (undocumented)
599
732
  create(data: TInsertable): TNode;
600
733
  }
601
734
 
735
+ // @public
736
+ type TreeNodeSchemaUnsafe<Name extends string = string, Kind extends NodeKind = NodeKind, TNode extends Unenforced<TreeNode | TreeLeafValue> = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
737
+
602
738
  // @public
603
739
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
604
740
 
@@ -614,7 +750,7 @@ export enum TreeStatus {
614
750
  }
615
751
 
616
752
  // @public @sealed
617
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
753
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
618
754
  readonly compatibility: SchemaCompatibilityStatus;
619
755
  readonly events: Listenable<TreeViewEvents>;
620
756
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -624,6 +760,15 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
624
760
  upgradeSchema(): void;
625
761
  }
626
762
 
763
+ // @alpha
764
+ export interface TreeViewAlpha<in out TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> extends Omit<TreeView<TSchema extends ImplicitFieldSchema ? TSchema : ImplicitFieldSchema>, "root" | "initialize"> {
765
+ // (undocumented)
766
+ initialize(content: InsertableField<TSchema>): void;
767
+ // (undocumented)
768
+ get root(): TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeLeafValue | TreeNode;
769
+ set root(newRoot: InsertableField<TSchema>);
770
+ }
771
+
627
772
  // @public @sealed
628
773
  export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
629
774
  constructor(props: ITreeViewConfiguration<TSchema>);
@@ -641,6 +786,12 @@ export interface TreeViewEvents {
641
786
  schemaChanged(): void;
642
787
  }
643
788
 
789
+ // @alpha
790
+ export const typeboxValidator: JsonValidator;
791
+
792
+ // @alpha
793
+ export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
794
+
644
795
  // @public @deprecated
645
796
  const typeNameSymbol: unique symbol;
646
797
 
@@ -653,6 +804,12 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
653
804
  // @public
654
805
  export type Unhydrated<T> = T;
655
806
 
807
+ // @alpha
808
+ export const UnsafeUnknownSchema: unique symbol;
809
+
810
+ // @alpha
811
+ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
812
+
656
813
  // @public
657
814
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
658
815
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -673,7 +830,7 @@ export interface ViewableTree {
673
830
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
674
831
  // @deprecated
675
832
  get [typeNameSymbol](): TName;
676
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
833
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
677
834
  }
678
835
 
679
836
  // (No @packageDocumentation comment for this package)
@@ -7,6 +7,9 @@
7
7
  // @public
8
8
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
9
 
10
+ // @public
11
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
12
+
10
13
  // @public
11
14
  type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
12
15
  [FieldKind.Required]: T;
@@ -113,7 +116,7 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
113
116
  };
114
117
 
115
118
  // @public
116
- export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
119
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : never;
117
120
 
118
121
  // @public
119
122
  export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
@@ -122,7 +125,7 @@ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforce
122
125
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
123
126
 
124
127
  // @public
125
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
128
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypesUnsafe ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
126
129
 
127
130
  // @public
128
131
  export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
@@ -167,6 +170,9 @@ declare namespace InternalTypes {
167
170
  NodeBuilderDataUnsafe,
168
171
  NodeFromSchemaUnsafe,
169
172
  ReadonlyMapInlined,
173
+ TreeNodeSchemaUnsafe,
174
+ AllowedTypesUnsafe,
175
+ TreeNodeSchemaNonClassUnsafe,
170
176
  FlexList,
171
177
  FlexListToUnion,
172
178
  ExtractItemType,
@@ -219,10 +225,10 @@ export interface MakeNominal {
219
225
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
220
226
 
221
227
  // @public
222
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
228
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
223
229
 
224
230
  // @public
225
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
231
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
226
232
 
227
233
  // @beta @sealed
228
234
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -233,7 +239,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
233
239
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
234
240
 
235
241
  // @public
236
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
242
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
237
243
 
238
244
  // @public
239
245
  export interface NodeInDocumentConstraint {
@@ -264,6 +270,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
264
270
  // @public
265
271
  export type Off = () => void;
266
272
 
273
+ // @public @sealed
274
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
275
+ }
276
+
267
277
  // @public @sealed
268
278
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
269
279
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -315,17 +325,17 @@ export const rollback: unique symbol;
315
325
  // @public @sealed
316
326
  export interface RunTransaction {
317
327
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
318
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
328
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
319
329
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
320
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
330
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
321
331
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
322
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
332
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
323
333
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
324
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
334
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
325
335
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
326
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
336
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
327
337
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
328
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
338
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
329
339
  readonly rollback: typeof rollback;
330
340
  }
331
341
 
@@ -385,7 +395,7 @@ interface TreeApi extends TreeNodeApi {
385
395
  }
386
396
 
387
397
  // @public @sealed
388
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
398
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
389
399
  }
390
400
 
391
401
  // @public
@@ -394,7 +404,7 @@ export const TreeArrayNode: {
394
404
  };
395
405
 
396
406
  // @public @sealed
397
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
407
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
398
408
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
399
409
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
400
410
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -416,7 +426,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
416
426
  }
417
427
 
418
428
  // @public @sealed
419
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
429
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
420
430
  }
421
431
 
422
432
  // @beta @sealed
@@ -436,7 +446,7 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
436
446
  }
437
447
 
438
448
  // @public
439
- export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
449
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
440
450
 
441
451
  // @public
442
452
  type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
@@ -485,13 +495,19 @@ export interface TreeNodeApi {
485
495
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
486
496
 
487
497
  // @public
488
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
498
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
489
499
 
490
500
  // @public @sealed
491
- export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
501
+ export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
492
502
 
493
503
  // @public @sealed
494
- export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
504
+ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
505
+ // @sealed
506
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
507
+ }
508
+
509
+ // @public
510
+ export interface TreeNodeSchemaClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
495
511
  // @sealed
496
512
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
497
513
  }
@@ -507,11 +523,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
507
523
  }
508
524
 
509
525
  // @public @sealed
510
- export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
526
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
527
+ // (undocumented)
528
+ create(data: TInsertable): TNode;
529
+ }
530
+
531
+ // @public
532
+ interface TreeNodeSchemaNonClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
511
533
  // (undocumented)
512
534
  create(data: TInsertable): TNode;
513
535
  }
514
536
 
537
+ // @public
538
+ type TreeNodeSchemaUnsafe<Name extends string = string, Kind extends NodeKind = NodeKind, TNode extends Unenforced<TreeNode | TreeLeafValue> = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
539
+
515
540
  // @public
516
541
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
517
542
 
@@ -527,7 +552,7 @@ export enum TreeStatus {
527
552
  }
528
553
 
529
554
  // @public @sealed
530
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
555
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
531
556
  readonly compatibility: SchemaCompatibilityStatus;
532
557
  readonly events: Listenable<TreeViewEvents>;
533
558
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -586,7 +611,7 @@ export interface ViewableTree {
586
611
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
587
612
  // @deprecated
588
613
  get [typeNameSymbol](): TName;
589
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
614
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
590
615
  }
591
616
 
592
617
  // (No @packageDocumentation comment for this package)