@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
@@ -8,12 +8,20 @@
8
8
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
9
 
10
10
  // @public
11
- type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
11
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
12
+
13
+ // @public
14
+ type ApplyKind<T, Kind extends FieldKind> = {
12
15
  [FieldKind.Required]: T;
13
16
  [FieldKind.Optional]: T | undefined;
14
- [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
17
+ [FieldKind.Identifier]: T;
15
18
  }[Kind];
16
19
 
20
+ // @public
21
+ type ApplyKindInput<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = [
22
+ Kind
23
+ ] extends [FieldKind.Required] ? T : [Kind] extends [FieldKind.Optional] ? T | undefined : [Kind] extends [FieldKind.Identifier] ? DefaultsAreOptional extends true ? T | undefined : T : never;
24
+
17
25
  // @public
18
26
  export enum CommitKind {
19
27
  Default = 0,
@@ -98,11 +106,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
98
106
  // @public
99
107
  type _InlineTrick = 0;
100
108
 
109
+ // @public
110
+ export type Input<T extends never> = T;
111
+
101
112
  // @public
102
113
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
114
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property & string]>;
104
115
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
116
+ readonly [Property in keyof T as FieldHasDefault<T[Property & string]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property & string]>;
106
117
  }>;
107
118
 
108
119
  // @public
@@ -113,28 +124,36 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
113
124
  };
114
125
 
115
126
  // @public
116
- export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
127
+ 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;
128
+
129
+ // @public
130
+ 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;
131
+
132
+ // @public
133
+ export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = TList extends readonly [
134
+ LazyItem<infer TSchema extends TreeNodeSchema>,
135
+ ...infer Rest extends AllowedTypes
136
+ ] ? InsertableTypedNode<TSchema> | InsertableTreeNodeFromAllowedTypes<Rest> : never;
117
137
 
118
138
  // @public
119
- export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
139
+ export type InsertableTreeNodeFromAllowedTypesUnsafe<TList extends Unenforced<AllowedTypesUnsafe>> = TList extends readonly [
140
+ LazyItem<infer TSchema extends TreeNodeSchemaUnsafe>,
141
+ ...infer Rest extends AllowedTypesUnsafe
142
+ ] ? InsertableTypedNodeUnsafe<TSchema> | InsertableTreeNodeFromAllowedTypesUnsafe<Rest> : never;
120
143
 
121
144
  // @public
122
- export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
145
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
146
+ TSchema
147
+ ] extends [TreeNodeSchema] ? InsertableTypedNode<TSchema> : [TSchema] extends [AllowedTypes] ? InsertableTreeNodeFromAllowedTypes<TSchema> : never;
123
148
 
124
149
  // @public
125
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
150
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = [TSchema] extends [TreeNodeSchemaUnsafe] ? InsertableTypedNodeUnsafe<TSchema> : [TSchema] extends [AllowedTypesUnsafe] ? InsertableTreeNodeFromAllowedTypesUnsafe<TSchema> : never;
126
151
 
127
152
  // @public
128
- export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
129
- implicitlyConstructable: true;
130
- } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
153
+ 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);
131
154
 
132
155
  // @public
133
- type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
134
- Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
135
- implicitlyConstructable: true;
136
- } ? NodeBuilderDataUnsafe<T> : never)
137
- ][_InlineTrick];
156
+ 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);
138
157
 
139
158
  // @public @sealed
140
159
  export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
@@ -145,6 +164,7 @@ declare namespace InternalTypes {
145
164
  _InlineTrick,
146
165
  FlattenKeys,
147
166
  ApplyKind,
167
+ ApplyKindInput,
148
168
  NodeBuilderData,
149
169
  FieldHasDefault,
150
170
  TreeArrayNodeBase,
@@ -167,6 +187,9 @@ declare namespace InternalTypes {
167
187
  NodeBuilderDataUnsafe,
168
188
  NodeFromSchemaUnsafe,
169
189
  ReadonlyMapInlined,
190
+ TreeNodeSchemaUnsafe,
191
+ AllowedTypesUnsafe,
192
+ TreeNodeSchemaNonClassUnsafe,
170
193
  FlexList,
171
194
  FlexListToUnion,
172
195
  ExtractItemType,
@@ -219,10 +242,10 @@ export interface MakeNominal {
219
242
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
220
243
 
221
244
  // @public
222
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
245
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
223
246
 
224
247
  // @public
225
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
248
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
226
249
 
227
250
  // @beta @sealed
228
251
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -233,7 +256,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
233
256
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
234
257
 
235
258
  // @public
236
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
259
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
237
260
 
238
261
  // @public
239
262
  export interface NodeInDocumentConstraint {
@@ -264,6 +287,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
264
287
  // @public
265
288
  export type Off = () => void;
266
289
 
290
+ // @public @sealed
291
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
292
+ }
293
+
267
294
  // @public @sealed
268
295
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
269
296
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -315,17 +342,17 @@ export const rollback: unique symbol;
315
342
  // @public @sealed
316
343
  export interface RunTransaction {
317
344
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
318
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
345
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
319
346
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
320
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
347
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
321
348
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
322
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
349
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
323
350
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
324
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
351
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
325
352
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
326
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
353
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
327
354
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
328
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
355
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
329
356
  readonly rollback: typeof rollback;
330
357
  }
331
358
 
@@ -359,7 +386,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
359
386
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
360
387
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
361
388
  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>;
362
- 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>;
389
+ 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>;
363
390
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
364
391
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
365
392
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -385,7 +412,7 @@ interface TreeApi extends TreeNodeApi {
385
412
  }
386
413
 
387
414
  // @public @sealed
388
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
415
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
389
416
  }
390
417
 
391
418
  // @public
@@ -394,7 +421,7 @@ export const TreeArrayNode: {
394
421
  };
395
422
 
396
423
  // @public @sealed
397
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
424
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
398
425
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
399
426
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
400
427
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -416,7 +443,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
416
443
  }
417
444
 
418
445
  // @public @sealed
419
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
446
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
420
447
  }
421
448
 
422
449
  // @beta @sealed
@@ -437,10 +464,10 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
437
464
  }
438
465
 
439
466
  // @public
440
- 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;
467
+ 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;
441
468
 
442
469
  // @public
443
- type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
470
+ type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
444
471
 
445
472
  // @public
446
473
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
@@ -486,13 +513,19 @@ export interface TreeNodeApi {
486
513
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
487
514
 
488
515
  // @public
489
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
516
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
490
517
 
491
518
  // @public @sealed
492
- 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>;
519
+ 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>;
493
520
 
494
521
  // @public @sealed
495
- 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> {
522
+ 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> {
523
+ // @sealed
524
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
525
+ }
526
+
527
+ // @public
528
+ 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> {
496
529
  // @sealed
497
530
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
498
531
  }
@@ -508,11 +541,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
508
541
  }
509
542
 
510
543
  // @public @sealed
511
- 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> {
544
+ 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> {
512
545
  // (undocumented)
513
546
  create(data: TInsertable): TNode;
514
547
  }
515
548
 
549
+ // @public
550
+ 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> {
551
+ // (undocumented)
552
+ create(data: TInsertable): TNode;
553
+ }
554
+
555
+ // @public
556
+ 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>;
557
+
516
558
  // @public
517
559
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
518
560
 
@@ -528,7 +570,7 @@ export enum TreeStatus {
528
570
  }
529
571
 
530
572
  // @public @sealed
531
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
573
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
532
574
  readonly compatibility: SchemaCompatibilityStatus;
533
575
  readonly events: Listenable<TreeViewEvents>;
534
576
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -539,7 +581,7 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
539
581
  }
540
582
 
541
583
  // @public @sealed
542
- export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
584
+ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
543
585
  constructor(props: ITreeViewConfiguration<TSchema>);
544
586
  readonly enableSchemaValidation: boolean;
545
587
  readonly preventAmbiguity: boolean;
@@ -567,6 +609,9 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
567
609
  // @public
568
610
  export type Unhydrated<T> = T;
569
611
 
612
+ // @public
613
+ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
614
+
570
615
  // @public
571
616
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
572
617
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -587,7 +632,7 @@ export interface ViewableTree {
587
632
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
588
633
  // @deprecated
589
634
  get [typeNameSymbol](): TName;
590
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
635
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
591
636
  }
592
637
 
593
638
  // (No @packageDocumentation comment for this package)
@@ -8,12 +8,20 @@
8
8
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
9
 
10
10
  // @public
11
- type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
11
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
12
+
13
+ // @public
14
+ type ApplyKind<T, Kind extends FieldKind> = {
12
15
  [FieldKind.Required]: T;
13
16
  [FieldKind.Optional]: T | undefined;
14
- [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
17
+ [FieldKind.Identifier]: T;
15
18
  }[Kind];
16
19
 
20
+ // @public
21
+ type ApplyKindInput<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = [
22
+ Kind
23
+ ] extends [FieldKind.Required] ? T : [Kind] extends [FieldKind.Optional] ? T | undefined : [Kind] extends [FieldKind.Identifier] ? DefaultsAreOptional extends true ? T | undefined : T : never;
24
+
17
25
  // @public
18
26
  export enum CommitKind {
19
27
  Default = 0,
@@ -98,11 +106,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
98
106
  // @public
99
107
  type _InlineTrick = 0;
100
108
 
109
+ // @public
110
+ export type Input<T extends never> = T;
111
+
101
112
  // @public
102
113
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
114
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property & string]>;
104
115
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
116
+ readonly [Property in keyof T as FieldHasDefault<T[Property & string]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property & string]>;
106
117
  }>;
107
118
 
108
119
  // @public
@@ -113,28 +124,36 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
113
124
  };
114
125
 
115
126
  // @public
116
- export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
127
+ 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;
128
+
129
+ // @public
130
+ 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;
131
+
132
+ // @public
133
+ export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = TList extends readonly [
134
+ LazyItem<infer TSchema extends TreeNodeSchema>,
135
+ ...infer Rest extends AllowedTypes
136
+ ] ? InsertableTypedNode<TSchema> | InsertableTreeNodeFromAllowedTypes<Rest> : never;
117
137
 
118
138
  // @public
119
- export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
139
+ export type InsertableTreeNodeFromAllowedTypesUnsafe<TList extends Unenforced<AllowedTypesUnsafe>> = TList extends readonly [
140
+ LazyItem<infer TSchema extends TreeNodeSchemaUnsafe>,
141
+ ...infer Rest extends AllowedTypesUnsafe
142
+ ] ? InsertableTypedNodeUnsafe<TSchema> | InsertableTreeNodeFromAllowedTypesUnsafe<Rest> : never;
120
143
 
121
144
  // @public
122
- export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
145
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
146
+ TSchema
147
+ ] extends [TreeNodeSchema] ? InsertableTypedNode<TSchema> : [TSchema] extends [AllowedTypes] ? InsertableTreeNodeFromAllowedTypes<TSchema> : never;
123
148
 
124
149
  // @public
125
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
150
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = [TSchema] extends [TreeNodeSchemaUnsafe] ? InsertableTypedNodeUnsafe<TSchema> : [TSchema] extends [AllowedTypesUnsafe] ? InsertableTreeNodeFromAllowedTypesUnsafe<TSchema> : never;
126
151
 
127
152
  // @public
128
- export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
129
- implicitlyConstructable: true;
130
- } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
153
+ 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);
131
154
 
132
155
  // @public
133
- type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
134
- Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
135
- implicitlyConstructable: true;
136
- } ? NodeBuilderDataUnsafe<T> : never)
137
- ][_InlineTrick];
156
+ 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);
138
157
 
139
158
  // @public @sealed
140
159
  export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
@@ -145,6 +164,7 @@ declare namespace InternalTypes {
145
164
  _InlineTrick,
146
165
  FlattenKeys,
147
166
  ApplyKind,
167
+ ApplyKindInput,
148
168
  NodeBuilderData,
149
169
  FieldHasDefault,
150
170
  TreeArrayNodeBase,
@@ -167,6 +187,9 @@ declare namespace InternalTypes {
167
187
  NodeBuilderDataUnsafe,
168
188
  NodeFromSchemaUnsafe,
169
189
  ReadonlyMapInlined,
190
+ TreeNodeSchemaUnsafe,
191
+ AllowedTypesUnsafe,
192
+ TreeNodeSchemaNonClassUnsafe,
170
193
  FlexList,
171
194
  FlexListToUnion,
172
195
  ExtractItemType,
@@ -219,16 +242,16 @@ export interface MakeNominal {
219
242
  export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
220
243
 
221
244
  // @public
222
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
245
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
223
246
 
224
247
  // @public
225
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
248
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
226
249
 
227
250
  // @public
228
251
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
229
252
 
230
253
  // @public
231
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
254
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
232
255
 
233
256
  // @public
234
257
  export interface NodeInDocumentConstraint {
@@ -259,6 +282,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
259
282
  // @public
260
283
  export type Off = () => void;
261
284
 
285
+ // @public @sealed
286
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
287
+ }
288
+
262
289
  // @public @sealed
263
290
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
264
291
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -310,17 +337,17 @@ export const rollback: unique symbol;
310
337
  // @public @sealed
311
338
  export interface RunTransaction {
312
339
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
313
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
340
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
314
341
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
315
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
342
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
316
343
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
317
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
344
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
318
345
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
319
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
346
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
320
347
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
321
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
348
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
322
349
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
323
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
350
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
324
351
  readonly rollback: typeof rollback;
325
352
  }
326
353
 
@@ -354,7 +381,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
354
381
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
355
382
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
356
383
  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>;
357
- 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>;
384
+ 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>;
358
385
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
359
386
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
360
387
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -383,7 +410,7 @@ interface TreeApi extends TreeNodeApi {
383
410
  }
384
411
 
385
412
  // @public @sealed
386
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
413
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
387
414
  }
388
415
 
389
416
  // @public
@@ -392,7 +419,7 @@ export const TreeArrayNode: {
392
419
  };
393
420
 
394
421
  // @public @sealed
395
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
422
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
396
423
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
397
424
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
398
425
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -414,7 +441,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
414
441
  }
415
442
 
416
443
  // @public @sealed
417
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
444
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
418
445
  }
419
446
 
420
447
  // @public @sealed
@@ -424,10 +451,10 @@ export interface TreeChangeEvents {
424
451
  }
425
452
 
426
453
  // @public
427
- 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;
454
+ 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;
428
455
 
429
456
  // @public
430
- type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
457
+ type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
431
458
 
432
459
  // @public
433
460
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
@@ -473,13 +500,19 @@ export interface TreeNodeApi {
473
500
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
474
501
 
475
502
  // @public
476
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
503
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
477
504
 
478
505
  // @public @sealed
479
- 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>;
506
+ 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>;
480
507
 
481
508
  // @public @sealed
482
- 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> {
509
+ 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> {
510
+ // @sealed
511
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
512
+ }
513
+
514
+ // @public
515
+ 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> {
483
516
  // @sealed
484
517
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
485
518
  }
@@ -495,11 +528,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
495
528
  }
496
529
 
497
530
  // @public @sealed
498
- 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> {
531
+ 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> {
499
532
  // (undocumented)
500
533
  create(data: TInsertable): TNode;
501
534
  }
502
535
 
536
+ // @public
537
+ 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> {
538
+ // (undocumented)
539
+ create(data: TInsertable): TNode;
540
+ }
541
+
542
+ // @public
543
+ 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>;
544
+
503
545
  // @public
504
546
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
505
547
 
@@ -515,7 +557,7 @@ export enum TreeStatus {
515
557
  }
516
558
 
517
559
  // @public @sealed
518
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
560
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
519
561
  readonly compatibility: SchemaCompatibilityStatus;
520
562
  readonly events: Listenable<TreeViewEvents>;
521
563
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -526,7 +568,7 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
526
568
  }
527
569
 
528
570
  // @public @sealed
529
- export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
571
+ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
530
572
  constructor(props: ITreeViewConfiguration<TSchema>);
531
573
  readonly enableSchemaValidation: boolean;
532
574
  readonly preventAmbiguity: boolean;
@@ -554,6 +596,9 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
554
596
  // @public
555
597
  export type Unhydrated<T> = T;
556
598
 
599
+ // @public
600
+ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
601
+
557
602
  // @public
558
603
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
559
604
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -574,7 +619,7 @@ export interface ViewableTree {
574
619
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
575
620
  // @deprecated
576
621
  get [typeNameSymbol](): TName;
577
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
622
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
578
623
  }
579
624
 
580
625
  // (No @packageDocumentation comment for this package)