@fluidframework/tree 2.4.0 → 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 (241) hide show
  1. package/.vscode/settings.json +11 -1
  2. package/api-report/tree.alpha.api.md +148 -51
  3. package/api-report/tree.beta.api.md +83 -38
  4. package/api-report/tree.legacy.alpha.api.md +83 -38
  5. package/api-report/tree.legacy.public.api.md +83 -38
  6. package/api-report/tree.public.api.md +83 -38
  7. package/dist/alpha.d.ts +17 -2
  8. package/dist/beta.d.ts +6 -0
  9. package/dist/events/interop.d.ts +1 -7
  10. package/dist/events/interop.d.ts.map +1 -1
  11. package/dist/events/interop.js.map +1 -1
  12. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
  13. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  14. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  15. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  16. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  17. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  18. package/dist/feature-libraries/treeCursorUtils.js +2 -2
  19. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/internalTypes.d.ts +1 -1
  25. package/dist/internalTypes.d.ts.map +1 -1
  26. package/dist/internalTypes.js.map +1 -1
  27. package/dist/legacy.d.ts +6 -0
  28. package/dist/packageVersion.d.ts +1 -1
  29. package/dist/packageVersion.d.ts.map +1 -1
  30. package/dist/packageVersion.js +1 -1
  31. package/dist/packageVersion.js.map +1 -1
  32. package/dist/public.d.ts +6 -0
  33. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  34. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  35. package/dist/shared-tree/sharedTree.d.ts +1 -1
  36. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  37. package/dist/shared-tree/sharedTree.js.map +1 -1
  38. package/dist/shared-tree/treeApi.d.ts +6 -6
  39. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  40. package/dist/shared-tree/treeApi.js.map +1 -1
  41. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  42. package/dist/shared-tree/treeCheckout.js +2 -0
  43. package/dist/shared-tree/treeCheckout.js.map +1 -1
  44. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  45. package/dist/shared-tree-core/editManager.js +12 -7
  46. package/dist/shared-tree-core/editManager.js.map +1 -1
  47. package/dist/simple-tree/api/create.d.ts +3 -3
  48. package/dist/simple-tree/api/create.d.ts.map +1 -1
  49. package/dist/simple-tree/api/create.js.map +1 -1
  50. package/dist/simple-tree/api/customTree.js +2 -2
  51. package/dist/simple-tree/api/customTree.js.map +1 -1
  52. package/dist/simple-tree/api/index.d.ts +3 -3
  53. package/dist/simple-tree/api/index.d.ts.map +1 -1
  54. package/dist/simple-tree/api/index.js +1 -2
  55. package/dist/simple-tree/api/index.js.map +1 -1
  56. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  57. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  58. package/dist/simple-tree/api/schemaCreationUtilities.js +31 -21
  59. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  60. package/dist/simple-tree/api/schemaFactory.d.ts +5 -1
  61. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  62. package/dist/simple-tree/api/schemaFactory.js +4 -0
  63. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  64. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  65. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  66. package/dist/simple-tree/api/tree.d.ts +13 -4
  67. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  68. package/dist/simple-tree/api/tree.js.map +1 -1
  69. package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  70. package/dist/simple-tree/api/treeApiBeta.js.map +1 -1
  71. package/dist/simple-tree/api/typesUnsafe.d.ts +69 -17
  72. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  73. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  74. package/dist/simple-tree/arrayNode.d.ts +14 -3
  75. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  76. package/dist/simple-tree/arrayNode.js.map +1 -1
  77. package/dist/simple-tree/core/treeNodeSchema.d.ts +10 -6
  78. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  79. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  80. package/dist/simple-tree/core/withType.d.ts +3 -1
  81. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  82. package/dist/simple-tree/core/withType.js.map +1 -1
  83. package/dist/simple-tree/index.d.ts +4 -4
  84. package/dist/simple-tree/index.d.ts.map +1 -1
  85. package/dist/simple-tree/index.js +1 -2
  86. package/dist/simple-tree/index.js.map +1 -1
  87. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  88. package/dist/simple-tree/mapNode.js +3 -0
  89. package/dist/simple-tree/mapNode.js.map +1 -1
  90. package/dist/simple-tree/objectNode.d.ts +4 -2
  91. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  92. package/dist/simple-tree/objectNode.js.map +1 -1
  93. package/dist/simple-tree/schemaTypes.d.ts +168 -14
  94. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  95. package/dist/simple-tree/schemaTypes.js +6 -1
  96. package/dist/simple-tree/schemaTypes.js.map +1 -1
  97. package/dist/simple-tree/toMapTree.d.ts +4 -2
  98. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  99. package/dist/simple-tree/toMapTree.js.map +1 -1
  100. package/dist/util/index.d.ts +2 -1
  101. package/dist/util/index.d.ts.map +1 -1
  102. package/dist/util/index.js +3 -1
  103. package/dist/util/index.js.map +1 -1
  104. package/dist/util/typeUtils.d.ts +61 -0
  105. package/dist/util/typeUtils.d.ts.map +1 -1
  106. package/dist/util/typeUtils.js +27 -0
  107. package/dist/util/typeUtils.js.map +1 -1
  108. package/lib/alpha.d.ts +17 -2
  109. package/lib/beta.d.ts +6 -0
  110. package/lib/events/interop.d.ts +1 -7
  111. package/lib/events/interop.d.ts.map +1 -1
  112. package/lib/events/interop.js.map +1 -1
  113. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
  114. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  115. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  116. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  117. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  118. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  119. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  120. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  121. package/lib/index.d.ts +2 -2
  122. package/lib/index.d.ts.map +1 -1
  123. package/lib/index.js +1 -1
  124. package/lib/index.js.map +1 -1
  125. package/lib/internalTypes.d.ts +1 -1
  126. package/lib/internalTypes.d.ts.map +1 -1
  127. package/lib/internalTypes.js.map +1 -1
  128. package/lib/legacy.d.ts +6 -0
  129. package/lib/packageVersion.d.ts +1 -1
  130. package/lib/packageVersion.d.ts.map +1 -1
  131. package/lib/packageVersion.js +1 -1
  132. package/lib/packageVersion.js.map +1 -1
  133. package/lib/public.d.ts +6 -0
  134. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  135. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  136. package/lib/shared-tree/sharedTree.d.ts +1 -1
  137. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  138. package/lib/shared-tree/sharedTree.js.map +1 -1
  139. package/lib/shared-tree/treeApi.d.ts +6 -6
  140. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  141. package/lib/shared-tree/treeApi.js.map +1 -1
  142. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  143. package/lib/shared-tree/treeCheckout.js +2 -0
  144. package/lib/shared-tree/treeCheckout.js.map +1 -1
  145. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  146. package/lib/shared-tree-core/editManager.js +12 -7
  147. package/lib/shared-tree-core/editManager.js.map +1 -1
  148. package/lib/simple-tree/api/create.d.ts +3 -3
  149. package/lib/simple-tree/api/create.d.ts.map +1 -1
  150. package/lib/simple-tree/api/create.js.map +1 -1
  151. package/lib/simple-tree/api/customTree.js +2 -2
  152. package/lib/simple-tree/api/customTree.js.map +1 -1
  153. package/lib/simple-tree/api/index.d.ts +3 -3
  154. package/lib/simple-tree/api/index.d.ts.map +1 -1
  155. package/lib/simple-tree/api/index.js +1 -1
  156. package/lib/simple-tree/api/index.js.map +1 -1
  157. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  158. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  159. package/lib/simple-tree/api/schemaCreationUtilities.js +30 -19
  160. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  161. package/lib/simple-tree/api/schemaFactory.d.ts +5 -1
  162. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  163. package/lib/simple-tree/api/schemaFactory.js +4 -0
  164. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  165. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  166. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  167. package/lib/simple-tree/api/tree.d.ts +13 -4
  168. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  169. package/lib/simple-tree/api/tree.js.map +1 -1
  170. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  171. package/lib/simple-tree/api/treeApiBeta.js.map +1 -1
  172. package/lib/simple-tree/api/typesUnsafe.d.ts +69 -17
  173. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  174. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  175. package/lib/simple-tree/arrayNode.d.ts +14 -3
  176. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  177. package/lib/simple-tree/arrayNode.js.map +1 -1
  178. package/lib/simple-tree/core/treeNodeSchema.d.ts +10 -6
  179. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  180. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  181. package/lib/simple-tree/core/withType.d.ts +3 -1
  182. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  183. package/lib/simple-tree/core/withType.js.map +1 -1
  184. package/lib/simple-tree/index.d.ts +4 -4
  185. package/lib/simple-tree/index.d.ts.map +1 -1
  186. package/lib/simple-tree/index.js +2 -2
  187. package/lib/simple-tree/index.js.map +1 -1
  188. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  189. package/lib/simple-tree/mapNode.js +3 -0
  190. package/lib/simple-tree/mapNode.js.map +1 -1
  191. package/lib/simple-tree/objectNode.d.ts +4 -2
  192. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  193. package/lib/simple-tree/objectNode.js.map +1 -1
  194. package/lib/simple-tree/schemaTypes.d.ts +168 -14
  195. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  196. package/lib/simple-tree/schemaTypes.js +6 -1
  197. package/lib/simple-tree/schemaTypes.js.map +1 -1
  198. package/lib/simple-tree/toMapTree.d.ts +4 -2
  199. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  200. package/lib/simple-tree/toMapTree.js.map +1 -1
  201. package/lib/util/index.d.ts +2 -1
  202. package/lib/util/index.d.ts.map +1 -1
  203. package/lib/util/index.js +1 -0
  204. package/lib/util/index.js.map +1 -1
  205. package/lib/util/typeUtils.d.ts +61 -0
  206. package/lib/util/typeUtils.d.ts.map +1 -1
  207. package/lib/util/typeUtils.js +25 -1
  208. package/lib/util/typeUtils.js.map +1 -1
  209. package/package.json +48 -32
  210. package/src/events/interop.ts +1 -12
  211. package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
  212. package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
  213. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  214. package/src/feature-libraries/treeCursorUtils.ts +2 -2
  215. package/src/index.ts +16 -1
  216. package/src/internalTypes.ts +4 -0
  217. package/src/packageVersion.ts +1 -1
  218. package/src/shared-tree/schematizingTreeView.ts +6 -2
  219. package/src/shared-tree/sharedTree.ts +4 -2
  220. package/src/shared-tree/treeApi.ts +19 -9
  221. package/src/shared-tree/treeCheckout.ts +2 -0
  222. package/src/shared-tree-core/editManager.ts +16 -7
  223. package/src/simple-tree/api/create.ts +12 -7
  224. package/src/simple-tree/api/customTree.ts +2 -2
  225. package/src/simple-tree/api/index.ts +6 -1
  226. package/src/simple-tree/api/schemaCreationUtilities.ts +58 -35
  227. package/src/simple-tree/api/schemaFactory.ts +4 -0
  228. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +3 -3
  229. package/src/simple-tree/api/tree.ts +27 -4
  230. package/src/simple-tree/api/treeApiBeta.ts +6 -2
  231. package/src/simple-tree/api/typesUnsafe.ts +126 -30
  232. package/src/simple-tree/arrayNode.ts +34 -14
  233. package/src/simple-tree/core/treeNodeSchema.ts +11 -6
  234. package/src/simple-tree/core/withType.ts +10 -1
  235. package/src/simple-tree/index.ts +19 -2
  236. package/src/simple-tree/mapNode.ts +6 -3
  237. package/src/simple-tree/objectNode.ts +5 -3
  238. package/src/simple-tree/schemaTypes.ts +215 -23
  239. package/src/simple-tree/toMapTree.ts +4 -1
  240. package/src/util/index.ts +6 -0
  241. package/src/util/typeUtils.ts +87 -0
@@ -15,7 +15,17 @@
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
+ "contravariance",
20
+ "contravariantly",
21
+ "covariantly",
22
+ "deprioritized",
23
+ "endregion",
24
+ "insertable",
25
+ "reentrantly",
26
+ "typeparam",
27
+ "unhydrated",
28
+ ],
19
29
 
20
30
  // Enable biome as default formatter, and disable rules that disagree with it
21
31
  "editor.defaultFormatter": "biomejs.biome",
@@ -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,7 +642,7 @@ 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
@@ -618,10 +682,10 @@ export enum TreeCompressionStrategy {
618
682
  }
619
683
 
620
684
  // @public
621
- 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;
622
686
 
623
687
  // @public
624
- 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;
625
689
 
626
690
  // @public
627
691
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
@@ -667,13 +731,19 @@ export interface TreeNodeApi {
667
731
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
668
732
 
669
733
  // @public
670
- 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;
671
735
 
672
736
  // @public @sealed
673
- 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>;
674
738
 
675
739
  // @public @sealed
676
- 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> {
677
747
  // @sealed
678
748
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
679
749
  }
@@ -689,11 +759,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
689
759
  }
690
760
 
691
761
  // @public @sealed
692
- 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> {
693
769
  // (undocumented)
694
770
  create(data: TInsertable): TNode;
695
771
  }
696
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
+
697
776
  // @public
698
777
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
699
778
 
@@ -709,7 +788,7 @@ export enum TreeStatus {
709
788
  }
710
789
 
711
790
  // @public @sealed
712
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
791
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
713
792
  readonly compatibility: SchemaCompatibilityStatus;
714
793
  readonly events: Listenable<TreeViewEvents>;
715
794
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -719,8 +798,17 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
719
798
  upgradeSchema(): void;
720
799
  }
721
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
+
722
810
  // @public @sealed
723
- export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
811
+ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
724
812
  constructor(props: ITreeViewConfiguration<TSchema>);
725
813
  readonly enableSchemaValidation: boolean;
726
814
  readonly preventAmbiguity: boolean;
@@ -739,9 +827,6 @@ export interface TreeViewEvents {
739
827
  // @alpha
740
828
  export const typeboxValidator: JsonValidator;
741
829
 
742
- // @alpha
743
- export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
744
-
745
830
  // @public @deprecated
746
831
  const typeNameSymbol: unique symbol;
747
832
 
@@ -754,6 +839,18 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
754
839
  // @public
755
840
  export type Unhydrated<T> = T;
756
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
+
757
854
  // @public
758
855
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
759
856
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -774,7 +871,7 @@ export interface ViewableTree {
774
871
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
775
872
  // @deprecated
776
873
  get [typeNameSymbol](): TName;
777
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
874
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
778
875
  }
779
876
 
780
877
  // (No @packageDocumentation comment for this package)