fluid-framework 2.4.0-297027 → 2.4.0-299374

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,9 +4,21 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ // @alpha
8
+ export function adaptEnum<TScope extends string, const TEnum extends Record<string, string | number>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => TreeNode & {
9
+ readonly value: TValue;
10
+ }) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
11
+ readonly value: TEnum[Property];
12
+ }, never, true, unknown> & (new () => TreeNode & {
13
+ readonly value: TEnum[Property];
14
+ }); };
15
+
7
16
  // @public
8
17
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
18
 
19
+ // @public
20
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
21
+
10
22
  // @public
11
23
  type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
12
24
  [FieldKind.Required]: T;
@@ -34,6 +46,12 @@ export interface CommitMetadata {
34
46
  readonly kind: CommitKind;
35
47
  }
36
48
 
49
+ // @alpha
50
+ export function comparePersistedSchema(persisted: JsonCompatible, view: JsonCompatible, options: ICodecOptions, canInitialize: boolean): SchemaCompatibilityStatus;
51
+
52
+ // @alpha
53
+ export function configuredSharedTree(options: SharedTreeOptions): SharedObjectKind<ITree>;
54
+
37
55
  // @public
38
56
  export enum ConnectionState {
39
57
  CatchingUp = 1,
@@ -66,6 +84,15 @@ export interface ContainerSchema {
66
84
  interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
67
85
  }
68
86
 
87
+ // @alpha
88
+ export function enumFromStrings<TScope extends string, const Members extends string>(factory: SchemaFactory<TScope>, members: readonly Members[]): (<TValue extends Members>(value: TValue) => TreeNode & {
89
+ readonly value: TValue;
90
+ }) & Record<Members, TreeNodeSchemaClass<ScopedSchemaName<TScope, Members>, NodeKind.Object, TreeNode & {
91
+ readonly value: Members;
92
+ }, never, true, unknown> & (new () => TreeNode & {
93
+ readonly value: Members;
94
+ })>;
95
+
69
96
  // @public @sealed
70
97
  export abstract class ErasedType<out Name = unknown> {
71
98
  static [Symbol.hasInstance](value: never): value is never;
@@ -75,6 +102,17 @@ export abstract class ErasedType<out Name = unknown> {
75
102
  // @public
76
103
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
77
104
 
105
+ // @alpha
106
+ export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompatible;
107
+
108
+ // @alpha
109
+ export type FactoryContent = IFluidHandle | string | number | boolean | null | Iterable<readonly [string, InsertableContent]> | readonly InsertableContent[] | FactoryContentObject;
110
+
111
+ // @alpha
112
+ export type FactoryContentObject = {
113
+ readonly [P in string]?: InsertableContent;
114
+ };
115
+
78
116
  // @public
79
117
  type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
80
118
 
@@ -141,6 +179,18 @@ export type FluidObject<T = unknown> = {
141
179
  // @public
142
180
  export type FluidObjectProviderKeys<T, TProp extends keyof T = keyof T> = string extends TProp ? never : number extends TProp ? never : TProp extends keyof Required<T>[TProp] ? Required<T>[TProp] extends Required<Required<T>[TProp]>[TProp] ? TProp : never : never;
143
181
 
182
+ // @alpha
183
+ export interface ForestOptions {
184
+ readonly forest?: ForestType;
185
+ }
186
+
187
+ // @alpha
188
+ export enum ForestType {
189
+ Expensive = 2,
190
+ Optimized = 1,
191
+ Reference = 0
192
+ }
193
+
144
194
  // @alpha
145
195
  export function getBranch(tree: ITree): TreeBranch;
146
196
 
@@ -150,6 +200,11 @@ export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
150
200
  // @alpha
151
201
  export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
152
202
 
203
+ // @alpha
204
+ export interface ICodecOptions {
205
+ readonly jsonValidator: JsonValidator;
206
+ }
207
+
153
208
  // @public
154
209
  export interface IConnection {
155
210
  readonly id: string;
@@ -417,6 +472,15 @@ export type InitialObjects<T extends ContainerSchema> = {
417
472
  // @public
418
473
  type _InlineTrick = 0;
419
474
 
475
+ // @alpha
476
+ export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> = TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : InsertableContent;
477
+
478
+ // @alpha
479
+ export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
480
+
481
+ // @alpha
482
+ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> = TSchema extends ImplicitFieldSchema ? InsertableTreeFieldFromImplicitField<TSchema> : InsertableContent | undefined;
483
+
420
484
  // @public
421
485
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
422
486
  readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
@@ -432,7 +496,7 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
432
496
  };
433
497
 
434
498
  // @public
435
- 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;
499
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : never;
436
500
 
437
501
  // @public
438
502
  export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
@@ -441,7 +505,7 @@ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforce
441
505
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
442
506
 
443
507
  // @public
444
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
508
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypesUnsafe ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
445
509
 
446
510
  // @public
447
511
  export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
@@ -486,6 +550,9 @@ declare namespace InternalTypes {
486
550
  NodeBuilderDataUnsafe,
487
551
  NodeFromSchemaUnsafe,
488
552
  ReadonlyMapInlined,
553
+ TreeNodeSchemaUnsafe,
554
+ AllowedTypesUnsafe,
555
+ TreeNodeSchemaNonClassUnsafe,
489
556
  FlexList,
490
557
  FlexListToUnion,
491
558
  ExtractItemType,
@@ -552,6 +619,14 @@ export interface JsonArrayNodeSchema extends JsonNodeSchemaBase<NodeKind.Array,
552
619
  readonly items: JsonFieldSchema;
553
620
  }
554
621
 
622
+ // @alpha
623
+ export type JsonCompatible = string | number | boolean | null | JsonCompatible[] | JsonCompatibleObject;
624
+
625
+ // @alpha
626
+ export type JsonCompatibleObject = {
627
+ [P in string]?: JsonCompatible;
628
+ };
629
+
555
630
  // @alpha @sealed
556
631
  export type JsonFieldSchema = {
557
632
  readonly description?: string | undefined;
@@ -609,6 +684,11 @@ export type JsonTreeSchema = JsonFieldSchema & {
609
684
  readonly $defs: Record<JsonSchemaId, JsonNodeSchema>;
610
685
  };
611
686
 
687
+ // @alpha
688
+ export interface JsonValidator {
689
+ compile<Schema extends TSchema>(schema: Schema): SchemaValidationFunction<Schema>;
690
+ }
691
+
612
692
  // @public
613
693
  export type LazyItem<Item = unknown> = Item | (() => Item);
614
694
 
@@ -638,10 +718,10 @@ export type Myself<M extends IMember = IMember> = M & {
638
718
  };
639
719
 
640
720
  // @public
641
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
721
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
642
722
 
643
723
  // @public
644
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
724
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
645
725
 
646
726
  // @beta @sealed
647
727
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -652,7 +732,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
652
732
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
653
733
 
654
734
  // @public
655
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
735
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
656
736
 
657
737
  // @public
658
738
  export interface NodeInDocumentConstraint {
@@ -670,6 +750,9 @@ export enum NodeKind {
670
750
  Object = 2
671
751
  }
672
752
 
753
+ // @alpha
754
+ export const noopValidator: JsonValidator;
755
+
673
756
  // @public
674
757
  type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
675
758
  -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
@@ -683,6 +766,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
683
766
  // @public
684
767
  export type Off = () => void;
685
768
 
769
+ // @public @sealed
770
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
771
+ }
772
+
686
773
  // @public @sealed
687
774
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
688
775
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -739,17 +826,17 @@ export const rollback: unique symbol;
739
826
  // @public @sealed
740
827
  export interface RunTransaction {
741
828
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
742
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
829
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
743
830
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
744
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
831
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
745
832
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
746
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
833
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
747
834
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
748
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
835
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
749
836
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
750
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
837
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
751
838
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
752
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
839
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
753
840
  readonly rollback: typeof rollback;
754
841
  }
755
842
 
@@ -793,6 +880,11 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
793
880
  readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
794
881
  }
795
882
 
883
+ // @alpha
884
+ export interface SchemaValidationFunction<Schema extends TSchema> {
885
+ check(data: unknown): data is Static<Schema>;
886
+ }
887
+
796
888
  // @public
797
889
  type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
798
890
 
@@ -804,6 +896,32 @@ export interface SharedObjectKind<out TSharedObject = unknown> extends ErasedTyp
804
896
  // @public
805
897
  export const SharedTree: SharedObjectKind<ITree>;
806
898
 
899
+ // @alpha
900
+ export interface SharedTreeFormatOptions {
901
+ formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];
902
+ treeEncodeType: TreeCompressionStrategy;
903
+ }
904
+
905
+ // @alpha
906
+ export const SharedTreeFormatVersion: {
907
+ readonly v1: 1;
908
+ readonly v2: 2;
909
+ readonly v3: 3;
910
+ };
911
+
912
+ // @alpha
913
+ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
914
+
915
+ // @alpha
916
+ export type SharedTreeOptions = Partial<ICodecOptions> & Partial<SharedTreeFormatOptions> & ForestOptions;
917
+
918
+ // @alpha
919
+ export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
920
+ readonly value: TName;
921
+ }, never, true, unknown> & (new () => TreeNode & {
922
+ readonly value: TName;
923
+ });
924
+
807
925
  // @public
808
926
  export interface Tagged<V, T extends string = string> {
809
927
  // (undocumented)
@@ -831,7 +949,7 @@ interface TreeApi extends TreeNodeApi {
831
949
  }
832
950
 
833
951
  // @public @sealed
834
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
952
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
835
953
  }
836
954
 
837
955
  // @public
@@ -840,7 +958,7 @@ export const TreeArrayNode: {
840
958
  };
841
959
 
842
960
  // @public @sealed
843
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
961
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
844
962
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
845
963
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
846
964
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -862,7 +980,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
862
980
  }
863
981
 
864
982
  // @public @sealed
865
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
983
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
866
984
  }
867
985
 
868
986
  // @beta @sealed
@@ -894,8 +1012,14 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
894
1012
  nodeChanged: (data: NodeChangedData<TNode> & (TNode extends WithType<string, NodeKind.Map | NodeKind.Object> ? Required<Pick<NodeChangedData<TNode>, "changedProperties">> : unknown)) => void;
895
1013
  }
896
1014
 
1015
+ // @alpha
1016
+ export enum TreeCompressionStrategy {
1017
+ Compressed = 0,
1018
+ Uncompressed = 1
1019
+ }
1020
+
897
1021
  // @public
898
- 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;
1022
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
899
1023
 
900
1024
  // @public
901
1025
  type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
@@ -944,13 +1068,19 @@ export interface TreeNodeApi {
944
1068
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
945
1069
 
946
1070
  // @public
947
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
1071
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
948
1072
 
949
1073
  // @public @sealed
950
- 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>;
1074
+ 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>;
951
1075
 
952
1076
  // @public @sealed
953
- 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> {
1077
+ 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> {
1078
+ // @sealed
1079
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
1080
+ }
1081
+
1082
+ // @public
1083
+ export interface TreeNodeSchemaClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
954
1084
  // @sealed
955
1085
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
956
1086
  }
@@ -966,11 +1096,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
966
1096
  }
967
1097
 
968
1098
  // @public @sealed
969
- 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> {
1099
+ 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> {
970
1100
  // (undocumented)
971
1101
  create(data: TInsertable): TNode;
972
1102
  }
973
1103
 
1104
+ // @public
1105
+ interface TreeNodeSchemaNonClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
1106
+ // (undocumented)
1107
+ create(data: TInsertable): TNode;
1108
+ }
1109
+
1110
+ // @public
1111
+ 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>;
1112
+
974
1113
  // @public
975
1114
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
976
1115
 
@@ -986,7 +1125,7 @@ export enum TreeStatus {
986
1125
  }
987
1126
 
988
1127
  // @public @sealed
989
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
1128
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
990
1129
  readonly compatibility: SchemaCompatibilityStatus;
991
1130
  readonly events: Listenable<TreeViewEvents>;
992
1131
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -996,6 +1135,15 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
996
1135
  upgradeSchema(): void;
997
1136
  }
998
1137
 
1138
+ // @alpha
1139
+ export interface TreeViewAlpha<in out TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> extends Omit<TreeView<TSchema extends ImplicitFieldSchema ? TSchema : ImplicitFieldSchema>, "root" | "initialize"> {
1140
+ // (undocumented)
1141
+ initialize(content: InsertableField<TSchema>): void;
1142
+ // (undocumented)
1143
+ get root(): TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeLeafValue | TreeNode;
1144
+ set root(newRoot: InsertableField<TSchema>);
1145
+ }
1146
+
999
1147
  // @public @sealed
1000
1148
  export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
1001
1149
  constructor(props: ITreeViewConfiguration<TSchema>);
@@ -1013,6 +1161,12 @@ export interface TreeViewEvents {
1013
1161
  schemaChanged(): void;
1014
1162
  }
1015
1163
 
1164
+ // @alpha
1165
+ export const typeboxValidator: JsonValidator;
1166
+
1167
+ // @alpha
1168
+ export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
1169
+
1016
1170
  // @public @deprecated
1017
1171
  const typeNameSymbol: unique symbol;
1018
1172
 
@@ -1025,6 +1179,12 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
1025
1179
  // @public
1026
1180
  export type Unhydrated<T> = T;
1027
1181
 
1182
+ // @alpha
1183
+ export const UnsafeUnknownSchema: unique symbol;
1184
+
1185
+ // @alpha
1186
+ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
1187
+
1028
1188
  // @public
1029
1189
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
1030
1190
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -1045,7 +1205,7 @@ export interface ViewableTree {
1045
1205
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
1046
1206
  // @deprecated
1047
1207
  get [typeNameSymbol](): TName;
1048
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
1208
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
1049
1209
  }
1050
1210
 
1051
1211
  ```
@@ -7,6 +7,9 @@
7
7
  // @public
8
8
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
9
 
10
+ // @public
11
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
12
+
10
13
  // @public
11
14
  type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
12
15
  [FieldKind.Required]: T;
@@ -420,7 +423,7 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
420
423
  };
421
424
 
422
425
  // @public
423
- 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;
426
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : never;
424
427
 
425
428
  // @public
426
429
  export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
@@ -429,7 +432,7 @@ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforce
429
432
  export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
430
433
 
431
434
  // @public
432
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
435
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypesUnsafe ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
433
436
 
434
437
  // @public
435
438
  export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
@@ -474,6 +477,9 @@ declare namespace InternalTypes {
474
477
  NodeBuilderDataUnsafe,
475
478
  NodeFromSchemaUnsafe,
476
479
  ReadonlyMapInlined,
480
+ TreeNodeSchemaUnsafe,
481
+ AllowedTypesUnsafe,
482
+ TreeNodeSchemaNonClassUnsafe,
477
483
  FlexList,
478
484
  FlexListToUnion,
479
485
  ExtractItemType,
@@ -564,10 +570,10 @@ export type Myself<M extends IMember = IMember> = M & {
564
570
  };
565
571
 
566
572
  // @public
567
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
573
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
568
574
 
569
575
  // @public
570
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
576
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
571
577
 
572
578
  // @beta @sealed
573
579
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -578,7 +584,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
578
584
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
579
585
 
580
586
  // @public
581
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
587
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
582
588
 
583
589
  // @public
584
590
  export interface NodeInDocumentConstraint {
@@ -609,6 +615,10 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
609
615
  // @public
610
616
  export type Off = () => void;
611
617
 
618
+ // @public @sealed
619
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
620
+ }
621
+
612
622
  // @public @sealed
613
623
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
614
624
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -665,17 +675,17 @@ export const rollback: unique symbol;
665
675
  // @public @sealed
666
676
  export interface RunTransaction {
667
677
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
668
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
678
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
669
679
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
670
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
680
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
671
681
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
672
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
682
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
673
683
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
674
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
684
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
675
685
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
676
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
686
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
677
687
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
678
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
688
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
679
689
  readonly rollback: typeof rollback;
680
690
  }
681
691
 
@@ -757,7 +767,7 @@ interface TreeApi extends TreeNodeApi {
757
767
  }
758
768
 
759
769
  // @public @sealed
760
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
770
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
761
771
  }
762
772
 
763
773
  // @public
@@ -766,7 +776,7 @@ export const TreeArrayNode: {
766
776
  };
767
777
 
768
778
  // @public @sealed
769
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
779
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
770
780
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
771
781
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
772
782
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -788,7 +798,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
788
798
  }
789
799
 
790
800
  // @public @sealed
791
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
801
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
792
802
  }
793
803
 
794
804
  // @beta @sealed
@@ -808,7 +818,7 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends
808
818
  }
809
819
 
810
820
  // @public
811
- 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;
821
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
812
822
 
813
823
  // @public
814
824
  type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
@@ -857,13 +867,19 @@ export interface TreeNodeApi {
857
867
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
858
868
 
859
869
  // @public
860
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
870
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
861
871
 
862
872
  // @public @sealed
863
- 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>;
873
+ 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>;
864
874
 
865
875
  // @public @sealed
866
- 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> {
876
+ 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> {
877
+ // @sealed
878
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
879
+ }
880
+
881
+ // @public
882
+ export interface TreeNodeSchemaClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
867
883
  // @sealed
868
884
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
869
885
  }
@@ -879,11 +895,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
879
895
  }
880
896
 
881
897
  // @public @sealed
882
- 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> {
898
+ 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> {
899
+ // (undocumented)
900
+ create(data: TInsertable): TNode;
901
+ }
902
+
903
+ // @public
904
+ interface TreeNodeSchemaNonClassUnsafe<out Name extends string, out Kind extends NodeKind, out TNode extends Unenforced<TreeNode | TreeLeafValue>, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
883
905
  // (undocumented)
884
906
  create(data: TInsertable): TNode;
885
907
  }
886
908
 
909
+ // @public
910
+ 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>;
911
+
887
912
  // @public
888
913
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
889
914
 
@@ -899,7 +924,7 @@ export enum TreeStatus {
899
924
  }
900
925
 
901
926
  // @public @sealed
902
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
927
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
903
928
  readonly compatibility: SchemaCompatibilityStatus;
904
929
  readonly events: Listenable<TreeViewEvents>;
905
930
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -958,7 +983,7 @@ export interface ViewableTree {
958
983
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
959
984
  // @deprecated
960
985
  get [typeNameSymbol](): TName;
961
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
986
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
962
987
  }
963
988
 
964
989
  ```