@fluidframework/tree 2.4.0-299707 → 2.5.0-302463

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 (289) hide show
  1. package/.vscode/settings.json +11 -1
  2. package/CHANGELOG.md +192 -0
  3. package/api-report/tree.alpha.api.md +150 -52
  4. package/api-report/tree.beta.api.md +85 -39
  5. package/api-report/tree.legacy.alpha.api.md +83 -38
  6. package/api-report/tree.legacy.public.api.md +83 -38
  7. package/api-report/tree.public.api.md +83 -38
  8. package/dist/alpha.d.ts +17 -2
  9. package/dist/beta.d.ts +6 -0
  10. package/dist/events/interop.d.ts +1 -7
  11. package/dist/events/interop.d.ts.map +1 -1
  12. package/dist/events/interop.js.map +1 -1
  13. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
  14. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  15. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  16. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  17. package/dist/feature-libraries/flex-tree/lazyField.js +1 -1
  18. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  19. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  20. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +3 -3
  21. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  22. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  23. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  24. package/dist/feature-libraries/treeCursorUtils.js +2 -2
  25. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/internalTypes.d.ts +1 -1
  31. package/dist/internalTypes.d.ts.map +1 -1
  32. package/dist/internalTypes.js.map +1 -1
  33. package/dist/legacy.d.ts +6 -0
  34. package/dist/packageVersion.d.ts +1 -1
  35. package/dist/packageVersion.js +1 -1
  36. package/dist/packageVersion.js.map +1 -1
  37. package/dist/public.d.ts +6 -0
  38. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  39. package/dist/shared-tree/schematizingTreeView.js +1 -1
  40. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  41. package/dist/shared-tree/sharedTree.d.ts +1 -1
  42. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  43. package/dist/shared-tree/sharedTree.js +1 -1
  44. package/dist/shared-tree/sharedTree.js.map +1 -1
  45. package/dist/shared-tree/treeApi.d.ts +6 -6
  46. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  47. package/dist/shared-tree/treeApi.js.map +1 -1
  48. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  49. package/dist/shared-tree/treeCheckout.js +2 -0
  50. package/dist/shared-tree/treeCheckout.js.map +1 -1
  51. package/dist/shared-tree-core/branch.js +1 -1
  52. package/dist/shared-tree-core/branch.js.map +1 -1
  53. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  54. package/dist/shared-tree-core/editManager.js +12 -7
  55. package/dist/shared-tree-core/editManager.js.map +1 -1
  56. package/dist/simple-tree/api/create.d.ts +3 -3
  57. package/dist/simple-tree/api/create.d.ts.map +1 -1
  58. package/dist/simple-tree/api/create.js.map +1 -1
  59. package/dist/simple-tree/api/customTree.js +7 -7
  60. package/dist/simple-tree/api/customTree.js.map +1 -1
  61. package/dist/simple-tree/api/index.d.ts +3 -3
  62. package/dist/simple-tree/api/index.d.ts.map +1 -1
  63. package/dist/simple-tree/api/index.js +1 -2
  64. package/dist/simple-tree/api/index.js.map +1 -1
  65. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  66. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  67. package/dist/simple-tree/api/schemaCreationUtilities.js +31 -21
  68. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  69. package/dist/simple-tree/api/schemaFactory.d.ts +5 -1
  70. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  71. package/dist/simple-tree/api/schemaFactory.js +4 -0
  72. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  73. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  74. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  75. package/dist/simple-tree/api/tree.d.ts +13 -4
  76. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  77. package/dist/simple-tree/api/tree.js.map +1 -1
  78. package/dist/simple-tree/api/treeApiBeta.d.ts +14 -2
  79. package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  80. package/dist/simple-tree/api/treeApiBeta.js +23 -8
  81. package/dist/simple-tree/api/treeApiBeta.js.map +1 -1
  82. package/dist/simple-tree/api/typesUnsafe.d.ts +69 -17
  83. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  84. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  85. package/dist/simple-tree/arrayNode.d.ts +14 -3
  86. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  87. package/dist/simple-tree/arrayNode.js.map +1 -1
  88. package/dist/simple-tree/core/schemaCaching.js +1 -1
  89. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  90. package/dist/simple-tree/core/treeNodeKernel.d.ts +6 -1
  91. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  92. package/dist/simple-tree/core/treeNodeKernel.js +7 -1
  93. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  94. package/dist/simple-tree/core/treeNodeSchema.d.ts +10 -6
  95. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  96. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  97. package/dist/simple-tree/core/unhydratedFlexTree.js +1 -1
  98. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  99. package/dist/simple-tree/core/withType.d.ts +3 -1
  100. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  101. package/dist/simple-tree/core/withType.js.map +1 -1
  102. package/dist/simple-tree/index.d.ts +4 -4
  103. package/dist/simple-tree/index.d.ts.map +1 -1
  104. package/dist/simple-tree/index.js +1 -2
  105. package/dist/simple-tree/index.js.map +1 -1
  106. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  107. package/dist/simple-tree/mapNode.js +3 -0
  108. package/dist/simple-tree/mapNode.js.map +1 -1
  109. package/dist/simple-tree/objectNode.d.ts +4 -2
  110. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  111. package/dist/simple-tree/objectNode.js.map +1 -1
  112. package/dist/simple-tree/schemaTypes.d.ts +168 -14
  113. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  114. package/dist/simple-tree/schemaTypes.js +6 -1
  115. package/dist/simple-tree/schemaTypes.js.map +1 -1
  116. package/dist/simple-tree/toFlexSchema.js +2 -2
  117. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  118. package/dist/simple-tree/toMapTree.d.ts +4 -2
  119. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  120. package/dist/simple-tree/toMapTree.js.map +1 -1
  121. package/dist/util/index.d.ts +2 -1
  122. package/dist/util/index.d.ts.map +1 -1
  123. package/dist/util/index.js +3 -1
  124. package/dist/util/index.js.map +1 -1
  125. package/dist/util/typeUtils.d.ts +61 -0
  126. package/dist/util/typeUtils.d.ts.map +1 -1
  127. package/dist/util/typeUtils.js +27 -0
  128. package/dist/util/typeUtils.js.map +1 -1
  129. package/lib/alpha.d.ts +17 -2
  130. package/lib/beta.d.ts +6 -0
  131. package/lib/events/interop.d.ts +1 -7
  132. package/lib/events/interop.d.ts.map +1 -1
  133. package/lib/events/interop.js.map +1 -1
  134. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
  135. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  136. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  137. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  138. package/lib/feature-libraries/flex-tree/lazyField.js +1 -1
  139. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  140. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  141. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +3 -3
  142. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  143. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  144. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  145. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  146. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  147. package/lib/index.d.ts +2 -2
  148. package/lib/index.d.ts.map +1 -1
  149. package/lib/index.js +1 -1
  150. package/lib/index.js.map +1 -1
  151. package/lib/internalTypes.d.ts +1 -1
  152. package/lib/internalTypes.d.ts.map +1 -1
  153. package/lib/internalTypes.js.map +1 -1
  154. package/lib/legacy.d.ts +6 -0
  155. package/lib/packageVersion.d.ts +1 -1
  156. package/lib/packageVersion.js +1 -1
  157. package/lib/packageVersion.js.map +1 -1
  158. package/lib/public.d.ts +6 -0
  159. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  160. package/lib/shared-tree/schematizingTreeView.js +1 -1
  161. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  162. package/lib/shared-tree/sharedTree.d.ts +1 -1
  163. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  164. package/lib/shared-tree/sharedTree.js +1 -1
  165. package/lib/shared-tree/sharedTree.js.map +1 -1
  166. package/lib/shared-tree/treeApi.d.ts +6 -6
  167. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  168. package/lib/shared-tree/treeApi.js.map +1 -1
  169. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  170. package/lib/shared-tree/treeCheckout.js +2 -0
  171. package/lib/shared-tree/treeCheckout.js.map +1 -1
  172. package/lib/shared-tree-core/branch.js +1 -1
  173. package/lib/shared-tree-core/branch.js.map +1 -1
  174. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  175. package/lib/shared-tree-core/editManager.js +12 -7
  176. package/lib/shared-tree-core/editManager.js.map +1 -1
  177. package/lib/simple-tree/api/create.d.ts +3 -3
  178. package/lib/simple-tree/api/create.d.ts.map +1 -1
  179. package/lib/simple-tree/api/create.js.map +1 -1
  180. package/lib/simple-tree/api/customTree.js +7 -7
  181. package/lib/simple-tree/api/customTree.js.map +1 -1
  182. package/lib/simple-tree/api/index.d.ts +3 -3
  183. package/lib/simple-tree/api/index.d.ts.map +1 -1
  184. package/lib/simple-tree/api/index.js +1 -1
  185. package/lib/simple-tree/api/index.js.map +1 -1
  186. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  187. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  188. package/lib/simple-tree/api/schemaCreationUtilities.js +30 -19
  189. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  190. package/lib/simple-tree/api/schemaFactory.d.ts +5 -1
  191. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  192. package/lib/simple-tree/api/schemaFactory.js +4 -0
  193. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  194. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  195. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  196. package/lib/simple-tree/api/tree.d.ts +13 -4
  197. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  198. package/lib/simple-tree/api/tree.js.map +1 -1
  199. package/lib/simple-tree/api/treeApiBeta.d.ts +14 -2
  200. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  201. package/lib/simple-tree/api/treeApiBeta.js +23 -8
  202. package/lib/simple-tree/api/treeApiBeta.js.map +1 -1
  203. package/lib/simple-tree/api/typesUnsafe.d.ts +69 -17
  204. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  205. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  206. package/lib/simple-tree/arrayNode.d.ts +14 -3
  207. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  208. package/lib/simple-tree/arrayNode.js.map +1 -1
  209. package/lib/simple-tree/core/schemaCaching.js +1 -1
  210. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  211. package/lib/simple-tree/core/treeNodeKernel.d.ts +6 -1
  212. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  213. package/lib/simple-tree/core/treeNodeKernel.js +7 -1
  214. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  215. package/lib/simple-tree/core/treeNodeSchema.d.ts +10 -6
  216. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  217. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  218. package/lib/simple-tree/core/unhydratedFlexTree.js +1 -1
  219. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  220. package/lib/simple-tree/core/withType.d.ts +3 -1
  221. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  222. package/lib/simple-tree/core/withType.js.map +1 -1
  223. package/lib/simple-tree/index.d.ts +4 -4
  224. package/lib/simple-tree/index.d.ts.map +1 -1
  225. package/lib/simple-tree/index.js +2 -2
  226. package/lib/simple-tree/index.js.map +1 -1
  227. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  228. package/lib/simple-tree/mapNode.js +3 -0
  229. package/lib/simple-tree/mapNode.js.map +1 -1
  230. package/lib/simple-tree/objectNode.d.ts +4 -2
  231. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  232. package/lib/simple-tree/objectNode.js.map +1 -1
  233. package/lib/simple-tree/schemaTypes.d.ts +168 -14
  234. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  235. package/lib/simple-tree/schemaTypes.js +6 -1
  236. package/lib/simple-tree/schemaTypes.js.map +1 -1
  237. package/lib/simple-tree/toFlexSchema.js +2 -2
  238. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  239. package/lib/simple-tree/toMapTree.d.ts +4 -2
  240. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  241. package/lib/simple-tree/toMapTree.js.map +1 -1
  242. package/lib/util/index.d.ts +2 -1
  243. package/lib/util/index.d.ts.map +1 -1
  244. package/lib/util/index.js +1 -0
  245. package/lib/util/index.js.map +1 -1
  246. package/lib/util/typeUtils.d.ts +61 -0
  247. package/lib/util/typeUtils.d.ts.map +1 -1
  248. package/lib/util/typeUtils.js +25 -1
  249. package/lib/util/typeUtils.js.map +1 -1
  250. package/package.json +48 -32
  251. package/src/events/interop.ts +1 -12
  252. package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
  253. package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
  254. package/src/feature-libraries/flex-tree/lazyField.ts +1 -1
  255. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +9 -3
  256. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  257. package/src/feature-libraries/treeCursorUtils.ts +2 -2
  258. package/src/index.ts +16 -1
  259. package/src/internalTypes.ts +4 -0
  260. package/src/packageVersion.ts +1 -1
  261. package/src/shared-tree/schematizingTreeView.ts +7 -3
  262. package/src/shared-tree/sharedTree.ts +5 -3
  263. package/src/shared-tree/treeApi.ts +19 -9
  264. package/src/shared-tree/treeCheckout.ts +2 -0
  265. package/src/shared-tree-core/branch.ts +1 -1
  266. package/src/shared-tree-core/editManager.ts +16 -7
  267. package/src/simple-tree/api/create.ts +12 -7
  268. package/src/simple-tree/api/customTree.ts +7 -7
  269. package/src/simple-tree/api/index.ts +6 -1
  270. package/src/simple-tree/api/schemaCreationUtilities.ts +58 -35
  271. package/src/simple-tree/api/schemaFactory.ts +4 -0
  272. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +3 -3
  273. package/src/simple-tree/api/tree.ts +27 -4
  274. package/src/simple-tree/api/treeApiBeta.ts +69 -3
  275. package/src/simple-tree/api/typesUnsafe.ts +126 -30
  276. package/src/simple-tree/arrayNode.ts +34 -14
  277. package/src/simple-tree/core/schemaCaching.ts +1 -1
  278. package/src/simple-tree/core/treeNodeKernel.ts +10 -2
  279. package/src/simple-tree/core/treeNodeSchema.ts +11 -6
  280. package/src/simple-tree/core/unhydratedFlexTree.ts +1 -1
  281. package/src/simple-tree/core/withType.ts +10 -1
  282. package/src/simple-tree/index.ts +19 -2
  283. package/src/simple-tree/mapNode.ts +6 -3
  284. package/src/simple-tree/objectNode.ts +5 -3
  285. package/src/simple-tree/schemaTypes.ts +215 -23
  286. package/src/simple-tree/toFlexSchema.ts +2 -2
  287. package/src/simple-tree/toMapTree.ts +4 -1
  288. package/src/util/index.ts +6 -0
  289. package/src/util/typeUtils.ts +87 -0
@@ -9,20 +9,34 @@ export function adaptEnum<TScope extends string, const TEnum extends Record<stri
9
9
  readonly value: TValue;
10
10
  }) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
11
11
  readonly value: TEnum[Property];
12
- }, never, true, unknown> & (new () => TreeNode & {
12
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
13
13
  readonly value: TEnum[Property];
14
- }); };
14
+ }); } & {
15
+ readonly schema: UnionToTuple<{ readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
16
+ readonly value: TEnum[Property];
17
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
18
+ readonly value: TEnum[Property];
19
+ }); }[keyof TEnum]>;
20
+ };
15
21
 
16
22
  // @public
17
23
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
18
24
 
19
25
  // @public
20
- type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
26
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
27
+
28
+ // @public
29
+ type ApplyKind<T, Kind extends FieldKind> = {
21
30
  [FieldKind.Required]: T;
22
31
  [FieldKind.Optional]: T | undefined;
23
- [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
32
+ [FieldKind.Identifier]: T;
24
33
  }[Kind];
25
34
 
35
+ // @public
36
+ type ApplyKindInput<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = [
37
+ Kind
38
+ ] extends [FieldKind.Required] ? T : [Kind] extends [FieldKind.Optional] ? T | undefined : [Kind] extends [FieldKind.Identifier] ? DefaultsAreOptional extends true ? T | undefined : T : never;
39
+
26
40
  // @public
27
41
  export enum CommitKind {
28
42
  Default = 0,
@@ -44,13 +58,19 @@ interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider
44
58
  }
45
59
 
46
60
  // @alpha
47
- export function enumFromStrings<TScope extends string, const Members extends string>(factory: SchemaFactory<TScope>, members: readonly Members[]): (<TValue extends Members>(value: TValue) => TreeNode & {
61
+ export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TreeNode & {
48
62
  readonly value: TValue;
49
- }) & Record<Members, TreeNodeSchemaClass<ScopedSchemaName<TScope, Members>, NodeKind.Object, TreeNode & {
50
- readonly value: Members;
51
- }, never, true, unknown> & (new () => TreeNode & {
52
- readonly value: Members;
53
- })>;
63
+ }) & Record<Members[number], TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[number]>, NodeKind.Object, TreeNode & {
64
+ readonly value: Members[number];
65
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
66
+ readonly value: Members[number];
67
+ })> & {
68
+ readonly schema: UnionToTuple<Record<Members[number], TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[number]>, NodeKind.Object, TreeNode & {
69
+ readonly value: Members[number];
70
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
71
+ readonly value: Members[number];
72
+ })>[Members[number]]>;
73
+ };
54
74
 
55
75
  // @public
56
76
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
@@ -58,6 +78,14 @@ type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ?
58
78
  // @alpha
59
79
  export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompatible;
60
80
 
81
+ // @alpha
82
+ export type FactoryContent = IFluidHandle | string | number | boolean | null | Iterable<readonly [string, InsertableContent]> | readonly InsertableContent[] | FactoryContentObject;
83
+
84
+ // @alpha
85
+ export type FactoryContentObject = {
86
+ readonly [P in string]?: InsertableContent;
87
+ };
88
+
61
89
  // @public
62
90
  type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
63
91
 
@@ -132,7 +160,7 @@ export enum ForestType {
132
160
  export function getBranch(tree: ITree): TreeBranch;
133
161
 
134
162
  // @alpha
135
- export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
163
+ export function getBranch<T extends ImplicitFieldSchema>(view: TreeView<T>): TreeBranch;
136
164
 
137
165
  // @alpha
138
166
  export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
@@ -151,11 +179,25 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
151
179
  // @public
152
180
  type _InlineTrick = 0;
153
181
 
182
+ // @public
183
+ export type Input<T extends never> = T;
184
+
185
+ // @alpha
186
+ export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> = TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : InsertableContent;
187
+
188
+ // @alpha
189
+ export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
190
+
191
+ // @alpha
192
+ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> = [
193
+ TSchema
194
+ ] extends [ImplicitFieldSchema] ? InsertableTreeFieldFromImplicitField<TSchema> : [TSchema] extends [UnsafeUnknownSchema] ? InsertableContent | undefined : never;
195
+
154
196
  // @public
155
197
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
156
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
198
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property & string]>;
157
199
  } & {
158
- readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
200
+ readonly [Property in keyof T as FieldHasDefault<T[Property & string]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property & string]>;
159
201
  }>;
160
202
 
161
203
  // @public
@@ -166,28 +208,36 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
166
208
  };
167
209
 
168
210
  // @public
169
- 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;
211
+ export type InsertableTreeFieldFromImplicitField<TSchemaInput extends ImplicitFieldSchema, TSchema = UnionToIntersection<TSchemaInput>> = [TSchema] extends [FieldSchema<infer Kind, infer Types>] ? ApplyKindInput<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : [TSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : never;
212
+
213
+ // @public
214
+ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchemaInput extends Unenforced<ImplicitFieldSchema>, TSchema = UnionToIntersection<TSchemaInput>> = [TSchema] extends [FieldSchemaUnsafe<infer Kind, infer Types>] ? ApplyKindInput<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : [TSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : never;
215
+
216
+ // @public
217
+ export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = TList extends readonly [
218
+ LazyItem<infer TSchema extends TreeNodeSchema>,
219
+ ...infer Rest extends AllowedTypes
220
+ ] ? InsertableTypedNode<TSchema> | InsertableTreeNodeFromAllowedTypes<Rest> : never;
170
221
 
171
222
  // @public
172
- export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
223
+ export type InsertableTreeNodeFromAllowedTypesUnsafe<TList extends Unenforced<AllowedTypesUnsafe>> = TList extends readonly [
224
+ LazyItem<infer TSchema extends TreeNodeSchemaUnsafe>,
225
+ ...infer Rest extends AllowedTypesUnsafe
226
+ ] ? InsertableTypedNodeUnsafe<TSchema> | InsertableTreeNodeFromAllowedTypesUnsafe<Rest> : never;
173
227
 
174
228
  // @public
175
- export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
229
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
230
+ TSchema
231
+ ] extends [TreeNodeSchema] ? InsertableTypedNode<TSchema> : [TSchema] extends [AllowedTypes] ? InsertableTreeNodeFromAllowedTypes<TSchema> : never;
176
232
 
177
233
  // @public
178
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
234
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = [TSchema] extends [TreeNodeSchemaUnsafe] ? InsertableTypedNodeUnsafe<TSchema> : [TSchema] extends [AllowedTypesUnsafe] ? InsertableTreeNodeFromAllowedTypesUnsafe<TSchema> : never;
179
235
 
180
236
  // @public
181
- export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
182
- implicitlyConstructable: true;
183
- } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
237
+ export type InsertableTypedNode<TSchema extends TreeNodeSchema, T = UnionToIntersection<TSchema>> = (T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, never, true> ? NodeBuilderData<T> : never) | (T extends TreeNodeSchema ? Unhydrated<TreeNode extends NodeFromSchema<T> ? never : NodeFromSchema<T>> : never);
184
238
 
185
239
  // @public
186
- type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
187
- Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
188
- implicitlyConstructable: true;
189
- } ? NodeBuilderDataUnsafe<T> : never)
190
- ][_InlineTrick];
240
+ type InsertableTypedNodeUnsafe<TSchema extends Unenforced<TreeNodeSchemaUnsafe>, T = UnionToIntersection<TSchema>> = (T extends TreeNodeSchemaUnsafe<string, NodeKind, TreeNode | TreeLeafValue, never, true> ? NodeBuilderDataUnsafe<T> : never) | (T extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<T> : never);
191
241
 
192
242
  // @public @sealed
193
243
  export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
@@ -198,6 +248,7 @@ declare namespace InternalTypes {
198
248
  _InlineTrick,
199
249
  FlattenKeys,
200
250
  ApplyKind,
251
+ ApplyKindInput,
201
252
  NodeBuilderData,
202
253
  FieldHasDefault,
203
254
  TreeArrayNodeBase,
@@ -220,6 +271,9 @@ declare namespace InternalTypes {
220
271
  NodeBuilderDataUnsafe,
221
272
  NodeFromSchemaUnsafe,
222
273
  ReadonlyMapInlined,
274
+ TreeNodeSchemaUnsafe,
275
+ AllowedTypesUnsafe,
276
+ TreeNodeSchemaNonClassUnsafe,
223
277
  FlexList,
224
278
  FlexListToUnion,
225
279
  ExtractItemType,
@@ -231,6 +285,9 @@ export { InternalTypes }
231
285
  // @public
232
286
  export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
233
287
 
288
+ // @alpha
289
+ export type IsUnion<T, T2 = T> = T extends unknown ? [T2] extends [T] ? false : true : "error";
290
+
234
291
  // @public @sealed
235
292
  export class IterableTreeArrayContent<T> implements Iterable<T> {
236
293
  [Symbol.iterator](): Iterator<T>;
@@ -347,10 +404,10 @@ export interface MakeNominal {
347
404
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
348
405
 
349
406
  // @public
350
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
407
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
351
408
 
352
409
  // @public
353
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
410
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
354
411
 
355
412
  // @beta @sealed
356
413
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -361,7 +418,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
361
418
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
362
419
 
363
420
  // @public
364
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
421
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
365
422
 
366
423
  // @public
367
424
  export interface NodeInDocumentConstraint {
@@ -395,6 +452,13 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
395
452
  // @public
396
453
  export type Off = () => void;
397
454
 
455
+ // @alpha
456
+ export type PopUnion<Union, AsOverloadedFunction = UnionToIntersection<Union extends unknown ? (f: Union) => void : never>> = AsOverloadedFunction extends (a: infer First) => void ? First : never;
457
+
458
+ // @public @sealed
459
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
460
+ }
461
+
398
462
  // @public @sealed
399
463
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
400
464
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -446,17 +510,17 @@ export const rollback: unique symbol;
446
510
  // @public @sealed
447
511
  export interface RunTransaction {
448
512
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
449
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
513
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
450
514
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
451
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
515
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
452
516
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
453
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
517
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
454
518
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
455
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
519
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
456
520
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
457
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
521
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
458
522
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
459
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
523
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
460
524
  readonly rollback: typeof rollback;
461
525
  }
462
526
 
@@ -490,7 +554,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
490
554
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
491
555
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
492
556
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
493
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
557
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property], UnionToIntersection_2<T[Property]>>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1], UnionToIntersection_2<T[Property_1]>> | undefined; }, false, T>;
494
558
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
495
559
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
496
560
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -530,7 +594,7 @@ export type SharedTreeOptions = Partial<ICodecOptions> & Partial<SharedTreeForma
530
594
  // @alpha
531
595
  export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
532
596
  readonly value: TName;
533
- }, never, true, unknown> & (new () => TreeNode & {
597
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never>) => TreeNode & {
534
598
  readonly value: TName;
535
599
  });
536
600
 
@@ -547,7 +611,7 @@ interface TreeApi extends TreeNodeApi {
547
611
  }
548
612
 
549
613
  // @public @sealed
550
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
614
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
551
615
  }
552
616
 
553
617
  // @public
@@ -556,7 +620,7 @@ export const TreeArrayNode: {
556
620
  };
557
621
 
558
622
  // @public @sealed
559
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
623
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
560
624
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
561
625
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
562
626
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -578,12 +642,13 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
578
642
  }
579
643
 
580
644
  // @public @sealed
581
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
645
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
582
646
  }
583
647
 
584
648
  // @beta @sealed
585
649
  export const TreeBeta: {
586
- readonly on: <K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>) => () => void;
650
+ on<K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>): () => void;
651
+ clone<TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
587
652
  };
588
653
 
589
654
  // @alpha @sealed
@@ -617,10 +682,10 @@ export enum TreeCompressionStrategy {
617
682
  }
618
683
 
619
684
  // @public
620
- 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;
685
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
621
686
 
622
687
  // @public
623
- type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
688
+ type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
624
689
 
625
690
  // @public
626
691
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
@@ -666,13 +731,19 @@ export interface TreeNodeApi {
666
731
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
667
732
 
668
733
  // @public
669
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
734
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
670
735
 
671
736
  // @public @sealed
672
- 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>;
737
+ 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>;
673
738
 
674
739
  // @public @sealed
675
- 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> {
740
+ 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> {
741
+ // @sealed
742
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
743
+ }
744
+
745
+ // @public
746
+ export interface TreeNodeSchemaClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable, out ImplicitlyConstructable extends boolean, out Info> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
676
747
  // @sealed
677
748
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
678
749
  }
@@ -688,11 +759,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
688
759
  }
689
760
 
690
761
  // @public @sealed
691
- 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> {
762
+ 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> {
763
+ // (undocumented)
764
+ create(data: TInsertable): TNode;
765
+ }
766
+
767
+ // @public
768
+ interface TreeNodeSchemaNonClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable, out ImplicitlyConstructable extends boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
692
769
  // (undocumented)
693
770
  create(data: TInsertable): TNode;
694
771
  }
695
772
 
773
+ // @public
774
+ 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>;
775
+
696
776
  // @public
697
777
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
698
778
 
@@ -708,7 +788,7 @@ export enum TreeStatus {
708
788
  }
709
789
 
710
790
  // @public @sealed
711
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
791
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
712
792
  readonly compatibility: SchemaCompatibilityStatus;
713
793
  readonly events: Listenable<TreeViewEvents>;
714
794
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -718,8 +798,17 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
718
798
  upgradeSchema(): void;
719
799
  }
720
800
 
801
+ // @alpha
802
+ export interface TreeViewAlpha<in out TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> extends Omit<TreeView<TSchema extends ImplicitFieldSchema ? TSchema : ImplicitFieldSchema>, "root" | "initialize"> {
803
+ // (undocumented)
804
+ initialize(content: InsertableField<TSchema>): void;
805
+ // (undocumented)
806
+ get root(): TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeLeafValue | TreeNode;
807
+ set root(newRoot: InsertableField<TSchema>);
808
+ }
809
+
721
810
  // @public @sealed
722
- export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
811
+ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
723
812
  constructor(props: ITreeViewConfiguration<TSchema>);
724
813
  readonly enableSchemaValidation: boolean;
725
814
  readonly preventAmbiguity: boolean;
@@ -738,9 +827,6 @@ export interface TreeViewEvents {
738
827
  // @alpha
739
828
  export const typeboxValidator: JsonValidator;
740
829
 
741
- // @alpha
742
- export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
743
-
744
830
  // @public @deprecated
745
831
  const typeNameSymbol: unique symbol;
746
832
 
@@ -753,6 +839,18 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
753
839
  // @public
754
840
  export type Unhydrated<T> = T;
755
841
 
842
+ // @public
843
+ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
844
+
845
+ // @alpha
846
+ export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union>> = IsUnion<Union> extends true ? UnionToTuple<Exclude<Union, First>, [First, ...A]> : [Union, ...A];
847
+
848
+ // @alpha
849
+ export const UnsafeUnknownSchema: unique symbol;
850
+
851
+ // @alpha
852
+ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
853
+
756
854
  // @public
757
855
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
758
856
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -773,7 +871,7 @@ export interface ViewableTree {
773
871
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
774
872
  // @deprecated
775
873
  get [typeNameSymbol](): TName;
776
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
874
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
777
875
  }
778
876
 
779
877
  // (No @packageDocumentation comment for this package)