fluid-framework 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.
@@ -9,20 +9,34 @@ export function adaptEnum<TScope extends string, const TEnum extends Record<stri
9
9
  readonly value: TValue;
10
10
  }) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
11
11
  readonly value: TEnum[Property];
12
- }, never, true, unknown> & (new () => TreeNode & {
12
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
13
13
  readonly value: TEnum[Property];
14
- }); };
14
+ }); } & {
15
+ readonly schema: UnionToTuple<{ readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
16
+ readonly value: TEnum[Property];
17
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
18
+ readonly value: TEnum[Property];
19
+ }); }[keyof TEnum]>;
20
+ };
15
21
 
16
22
  // @public
17
23
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
18
24
 
19
25
  // @public
20
- type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
26
+ type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
27
+
28
+ // @public
29
+ type ApplyKind<T, Kind extends FieldKind> = {
21
30
  [FieldKind.Required]: T;
22
31
  [FieldKind.Optional]: T | undefined;
23
- [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
32
+ [FieldKind.Identifier]: T;
24
33
  }[Kind];
25
34
 
35
+ // @public
36
+ type ApplyKindInput<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = [
37
+ Kind
38
+ ] extends [FieldKind.Required] ? T : [Kind] extends [FieldKind.Optional] ? T | undefined : [Kind] extends [FieldKind.Identifier] ? DefaultsAreOptional extends true ? T | undefined : T : never;
39
+
26
40
  // @public
27
41
  export enum AttachState {
28
42
  Attached = "Attached",
@@ -82,13 +96,19 @@ interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider
82
96
  }
83
97
 
84
98
  // @alpha
85
- export function enumFromStrings<TScope extends string, const Members extends string>(factory: SchemaFactory<TScope>, members: readonly Members[]): (<TValue extends Members>(value: TValue) => TreeNode & {
99
+ export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TreeNode & {
86
100
  readonly value: TValue;
87
- }) & Record<Members, TreeNodeSchemaClass<ScopedSchemaName<TScope, Members>, NodeKind.Object, TreeNode & {
88
- readonly value: Members;
89
- }, never, true, unknown> & (new () => TreeNode & {
90
- readonly value: Members;
91
- })>;
101
+ }) & Record<Members[number], TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[number]>, NodeKind.Object, TreeNode & {
102
+ readonly value: Members[number];
103
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
104
+ readonly value: Members[number];
105
+ })> & {
106
+ readonly schema: UnionToTuple<Record<Members[number], TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[number]>, NodeKind.Object, TreeNode & {
107
+ readonly value: Members[number];
108
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never> | undefined) => TreeNode & {
109
+ readonly value: Members[number];
110
+ })>[Members[number]]>;
111
+ };
92
112
 
93
113
  // @public @sealed
94
114
  export abstract class ErasedType<out Name = unknown> {
@@ -102,6 +122,14 @@ type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ?
102
122
  // @alpha
103
123
  export function extractPersistedSchema(schema: ImplicitFieldSchema): JsonCompatible;
104
124
 
125
+ // @alpha
126
+ export type FactoryContent = IFluidHandle | string | number | boolean | null | Iterable<readonly [string, InsertableContent]> | readonly InsertableContent[] | FactoryContentObject;
127
+
128
+ // @alpha
129
+ export type FactoryContentObject = {
130
+ readonly [P in string]?: InsertableContent;
131
+ };
132
+
105
133
  // @public
106
134
  type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
107
135
 
@@ -184,7 +212,7 @@ export enum ForestType {
184
212
  export function getBranch(tree: ITree): TreeBranch;
185
213
 
186
214
  // @alpha
187
- export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
215
+ export function getBranch<T extends ImplicitFieldSchema>(view: TreeView<T>): TreeBranch;
188
216
 
189
217
  // @alpha
190
218
  export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
@@ -461,11 +489,25 @@ export type InitialObjects<T extends ContainerSchema> = {
461
489
  // @public
462
490
  type _InlineTrick = 0;
463
491
 
492
+ // @public
493
+ export type Input<T extends never> = T;
494
+
495
+ // @alpha
496
+ export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> = TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : InsertableContent;
497
+
498
+ // @alpha
499
+ export type InsertableContent = Unhydrated<TreeNode> | FactoryContent;
500
+
501
+ // @alpha
502
+ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> = [
503
+ TSchema
504
+ ] extends [ImplicitFieldSchema] ? InsertableTreeFieldFromImplicitField<TSchema> : [TSchema] extends [UnsafeUnknownSchema] ? InsertableContent | undefined : never;
505
+
464
506
  // @public
465
507
  type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
466
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
508
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property & string]>;
467
509
  } & {
468
- readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
510
+ readonly [Property in keyof T as FieldHasDefault<T[Property & string]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property & string]>;
469
511
  }>;
470
512
 
471
513
  // @public
@@ -476,28 +518,36 @@ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<Restrict
476
518
  };
477
519
 
478
520
  // @public
479
- 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;
521
+ 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;
522
+
523
+ // @public
524
+ 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;
525
+
526
+ // @public
527
+ export type InsertableTreeNodeFromAllowedTypes<TList extends AllowedTypes> = TList extends readonly [
528
+ LazyItem<infer TSchema extends TreeNodeSchema>,
529
+ ...infer Rest extends AllowedTypes
530
+ ] ? InsertableTypedNode<TSchema> | InsertableTreeNodeFromAllowedTypes<Rest> : never;
480
531
 
481
532
  // @public
482
- export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
533
+ export type InsertableTreeNodeFromAllowedTypesUnsafe<TList extends Unenforced<AllowedTypesUnsafe>> = TList extends readonly [
534
+ LazyItem<infer TSchema extends TreeNodeSchemaUnsafe>,
535
+ ...infer Rest extends AllowedTypesUnsafe
536
+ ] ? InsertableTypedNodeUnsafe<TSchema> | InsertableTreeNodeFromAllowedTypesUnsafe<Rest> : never;
483
537
 
484
538
  // @public
485
- export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
539
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes> = [
540
+ TSchema
541
+ ] extends [TreeNodeSchema] ? InsertableTypedNode<TSchema> : [TSchema] extends [AllowedTypes] ? InsertableTreeNodeFromAllowedTypes<TSchema> : never;
486
542
 
487
543
  // @public
488
- export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
544
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = [TSchema] extends [TreeNodeSchemaUnsafe] ? InsertableTypedNodeUnsafe<TSchema> : [TSchema] extends [AllowedTypesUnsafe] ? InsertableTreeNodeFromAllowedTypesUnsafe<TSchema> : never;
489
545
 
490
546
  // @public
491
- export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
492
- implicitlyConstructable: true;
493
- } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
547
+ 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);
494
548
 
495
549
  // @public
496
- type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
497
- Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
498
- implicitlyConstructable: true;
499
- } ? NodeBuilderDataUnsafe<T> : never)
500
- ][_InlineTrick];
550
+ 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);
501
551
 
502
552
  // @public @sealed
503
553
  export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
@@ -508,6 +558,7 @@ declare namespace InternalTypes {
508
558
  _InlineTrick,
509
559
  FlattenKeys,
510
560
  ApplyKind,
561
+ ApplyKindInput,
511
562
  NodeBuilderData,
512
563
  FieldHasDefault,
513
564
  TreeArrayNodeBase,
@@ -530,6 +581,9 @@ declare namespace InternalTypes {
530
581
  NodeBuilderDataUnsafe,
531
582
  NodeFromSchemaUnsafe,
532
583
  ReadonlyMapInlined,
584
+ TreeNodeSchemaUnsafe,
585
+ AllowedTypesUnsafe,
586
+ TreeNodeSchemaNonClassUnsafe,
533
587
  FlexList,
534
588
  FlexListToUnion,
535
589
  ExtractItemType,
@@ -566,6 +620,9 @@ export function isFluidHandle(value: unknown): value is IFluidHandle;
566
620
  // @public
567
621
  export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
568
622
 
623
+ // @alpha
624
+ export type IsUnion<T, T2 = T> = T extends unknown ? [T2] extends [T] ? false : true : "error";
625
+
569
626
  // @public
570
627
  export interface ITelemetryBaseProperties {
571
628
  [index: string]: TelemetryBaseEventPropertyType | Tagged<TelemetryBaseEventPropertyType>;
@@ -695,10 +752,10 @@ export type Myself<M extends IMember = IMember> = M & {
695
752
  };
696
753
 
697
754
  // @public
698
- type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
755
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, TreeNode | TreeLeafValue, infer TBuild> ? TBuild : never;
699
756
 
700
757
  // @public
701
- type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
758
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
702
759
 
703
760
  // @beta @sealed
704
761
  export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
@@ -709,7 +766,7 @@ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
709
766
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
710
767
 
711
768
  // @public
712
- type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
769
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
713
770
 
714
771
  // @public
715
772
  export interface NodeInDocumentConstraint {
@@ -743,6 +800,13 @@ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<I
743
800
  // @public
744
801
  export type Off = () => void;
745
802
 
803
+ // @alpha
804
+ export type PopUnion<Union, AsOverloadedFunction = UnionToIntersection<Union extends unknown ? (f: Union) => void : never>> = AsOverloadedFunction extends (a: infer First) => void ? First : never;
805
+
806
+ // @public @sealed
807
+ export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
808
+ }
809
+
746
810
  // @public @sealed
747
811
  interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
748
812
  [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
@@ -799,17 +863,17 @@ export const rollback: unique symbol;
799
863
  // @public @sealed
800
864
  export interface RunTransaction {
801
865
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
802
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
866
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
803
867
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
804
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
868
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
805
869
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
806
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
870
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void): void;
807
871
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
808
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
872
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
809
873
  <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
810
- <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
874
+ <TView extends TreeView<any>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
811
875
  <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
812
- <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
876
+ <TView extends TreeView<any>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
813
877
  readonly rollback: typeof rollback;
814
878
  }
815
879
 
@@ -843,7 +907,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
843
907
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
844
908
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
845
909
  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>;
846
- 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>;
910
+ 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>;
847
911
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
848
912
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
849
913
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -891,7 +955,7 @@ export type SharedTreeOptions = Partial<ICodecOptions> & Partial<SharedTreeForma
891
955
  // @alpha
892
956
  export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
893
957
  readonly value: TName;
894
- }, never, true, unknown> & (new () => TreeNode & {
958
+ }, Record<string, never>, true, unknown> & (new (data?: InternalTreeNode | Record<string, never>) => TreeNode & {
895
959
  readonly value: TName;
896
960
  });
897
961
 
@@ -922,7 +986,7 @@ interface TreeApi extends TreeNodeApi {
922
986
  }
923
987
 
924
988
  // @public @sealed
925
- export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
989
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>> {
926
990
  }
927
991
 
928
992
  // @public
@@ -931,7 +995,7 @@ export const TreeArrayNode: {
931
995
  };
932
996
 
933
997
  // @public @sealed
934
- interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
998
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode> extends ReadonlyArrayNode<T> {
935
999
  insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
936
1000
  insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
937
1001
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
@@ -953,7 +1017,7 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
953
1017
  }
954
1018
 
955
1019
  // @public @sealed
956
- export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
1020
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>> {
957
1021
  }
958
1022
 
959
1023
  // @beta @sealed
@@ -993,10 +1057,10 @@ export enum TreeCompressionStrategy {
993
1057
  }
994
1058
 
995
1059
  // @public
996
- 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;
1060
+ 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;
997
1061
 
998
1062
  // @public
999
- type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
1063
+ type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
1000
1064
 
1001
1065
  // @public
1002
1066
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
@@ -1042,13 +1106,19 @@ export interface TreeNodeApi {
1042
1106
  export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
1043
1107
 
1044
1108
  // @public
1045
- type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
1109
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends TreeNodeSchemaUnsafe ? NodeFromSchemaUnsafe<TSchema> : TSchema extends AllowedTypesUnsafe ? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>> : unknown;
1046
1110
 
1047
1111
  // @public @sealed
1048
- 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>;
1112
+ 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>;
1049
1113
 
1050
1114
  // @public @sealed
1051
- 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> {
1115
+ 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> {
1116
+ // @sealed
1117
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
1118
+ }
1119
+
1120
+ // @public
1121
+ 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> {
1052
1122
  // @sealed
1053
1123
  new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
1054
1124
  }
@@ -1064,11 +1134,20 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
1064
1134
  }
1065
1135
 
1066
1136
  // @public @sealed
1067
- 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> {
1137
+ 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> {
1138
+ // (undocumented)
1139
+ create(data: TInsertable): TNode;
1140
+ }
1141
+
1142
+ // @public
1143
+ 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> {
1068
1144
  // (undocumented)
1069
1145
  create(data: TInsertable): TNode;
1070
1146
  }
1071
1147
 
1148
+ // @public
1149
+ 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>;
1150
+
1072
1151
  // @public
1073
1152
  export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
1074
1153
 
@@ -1084,7 +1163,7 @@ export enum TreeStatus {
1084
1163
  }
1085
1164
 
1086
1165
  // @public @sealed
1087
- export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
1166
+ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends IDisposable {
1088
1167
  readonly compatibility: SchemaCompatibilityStatus;
1089
1168
  readonly events: Listenable<TreeViewEvents>;
1090
1169
  initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
@@ -1094,8 +1173,17 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
1094
1173
  upgradeSchema(): void;
1095
1174
  }
1096
1175
 
1176
+ // @alpha
1177
+ export interface TreeViewAlpha<in out TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> extends Omit<TreeView<TSchema extends ImplicitFieldSchema ? TSchema : ImplicitFieldSchema>, "root" | "initialize"> {
1178
+ // (undocumented)
1179
+ initialize(content: InsertableField<TSchema>): void;
1180
+ // (undocumented)
1181
+ get root(): TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeLeafValue | TreeNode;
1182
+ set root(newRoot: InsertableField<TSchema>);
1183
+ }
1184
+
1097
1185
  // @public @sealed
1098
- export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
1186
+ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
1099
1187
  constructor(props: ITreeViewConfiguration<TSchema>);
1100
1188
  readonly enableSchemaValidation: boolean;
1101
1189
  readonly preventAmbiguity: boolean;
@@ -1114,9 +1202,6 @@ export interface TreeViewEvents {
1114
1202
  // @alpha
1115
1203
  export const typeboxValidator: JsonValidator;
1116
1204
 
1117
- // @alpha
1118
- export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
1119
-
1120
1205
  // @public @deprecated
1121
1206
  const typeNameSymbol: unique symbol;
1122
1207
 
@@ -1129,6 +1214,18 @@ export type Unenforced<_DesiredExtendsConstraint> = unknown;
1129
1214
  // @public
1130
1215
  export type Unhydrated<T> = T;
1131
1216
 
1217
+ // @public
1218
+ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
1219
+
1220
+ // @alpha
1221
+ export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union>> = IsUnion<Union> extends true ? UnionToTuple<Exclude<Union, First>, [First, ...A]> : [Union, ...A];
1222
+
1223
+ // @alpha
1224
+ export const UnsafeUnknownSchema: unique symbol;
1225
+
1226
+ // @alpha
1227
+ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
1228
+
1132
1229
  // @public
1133
1230
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
1134
1231
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
@@ -1149,7 +1246,7 @@ export interface ViewableTree {
1149
1246
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
1150
1247
  // @deprecated
1151
1248
  get [typeNameSymbol](): TName;
1152
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
1249
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode | TreeLeafValue, never, boolean, TInfo>;
1153
1250
  }
1154
1251
 
1155
1252
  ```