fluid-framework 2.4.0-294316 → 2.4.0-297027
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.
- package/api-report/fluid-framework.alpha.api.md +58 -28
- package/api-report/fluid-framework.beta.api.md +38 -27
- package/api-report/fluid-framework.legacy.alpha.api.md +42 -27
- package/api-report/fluid-framework.legacy.public.api.md +38 -27
- package/api-report/fluid-framework.public.api.md +38 -27
- package/dist/alpha.d.ts +6 -0
- package/dist/beta.d.ts +3 -0
- package/dist/legacy.d.ts +3 -0
- package/dist/public.d.ts +3 -0
- package/lib/alpha.d.ts +6 -0
- package/lib/beta.d.ts +3 -0
- package/lib/legacy.d.ts +3 -0
- package/lib/public.d.ts +3 -0
- package/package.json +11 -11
|
@@ -108,8 +108,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
|
|
|
108
108
|
|
|
109
109
|
// @public @sealed
|
|
110
110
|
export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
|
|
111
|
-
custom?: TCustomMetadata;
|
|
112
|
-
description?: string | undefined;
|
|
111
|
+
readonly custom?: TCustomMetadata;
|
|
112
|
+
readonly description?: string | undefined;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
// @public
|
|
@@ -142,7 +142,13 @@ export type FluidObject<T = unknown> = {
|
|
|
142
142
|
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
143
|
|
|
144
144
|
// @alpha
|
|
145
|
-
export function
|
|
145
|
+
export function getBranch(tree: ITree): TreeBranch;
|
|
146
|
+
|
|
147
|
+
// @alpha
|
|
148
|
+
export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
|
|
149
|
+
|
|
150
|
+
// @alpha
|
|
151
|
+
export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
|
|
146
152
|
|
|
147
153
|
// @public
|
|
148
154
|
export interface IConnection {
|
|
@@ -412,14 +418,14 @@ export type InitialObjects<T extends ContainerSchema> = {
|
|
|
412
418
|
type _InlineTrick = 0;
|
|
413
419
|
|
|
414
420
|
// @public
|
|
415
|
-
type InsertableObjectFromSchemaRecord<T extends
|
|
416
|
-
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
421
|
+
type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
|
|
422
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
417
423
|
} & {
|
|
418
|
-
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
424
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
419
425
|
}>;
|
|
420
426
|
|
|
421
427
|
// @public
|
|
422
|
-
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
428
|
+
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
423
429
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
424
430
|
} & {
|
|
425
431
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
@@ -460,7 +466,6 @@ declare namespace InternalTypes {
|
|
|
460
466
|
ApplyKind,
|
|
461
467
|
NodeBuilderData,
|
|
462
468
|
FieldHasDefault,
|
|
463
|
-
TreeNodeSchemaNonClass,
|
|
464
469
|
TreeArrayNodeBase,
|
|
465
470
|
ScopedSchemaName,
|
|
466
471
|
DefaultProvider,
|
|
@@ -528,8 +533,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
528
533
|
}
|
|
529
534
|
|
|
530
535
|
// @public @sealed
|
|
531
|
-
export interface ITree extends IFluidLoadable {
|
|
532
|
-
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
536
|
+
export interface ITree extends ViewableTree, IFluidLoadable {
|
|
533
537
|
}
|
|
534
538
|
|
|
535
539
|
// @public
|
|
@@ -623,7 +627,7 @@ export interface MakeNominal {
|
|
|
623
627
|
}
|
|
624
628
|
|
|
625
629
|
// @public
|
|
626
|
-
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> |
|
|
630
|
+
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
|
|
627
631
|
|
|
628
632
|
// @public
|
|
629
633
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
@@ -667,12 +671,12 @@ export enum NodeKind {
|
|
|
667
671
|
}
|
|
668
672
|
|
|
669
673
|
// @public
|
|
670
|
-
type ObjectFromSchemaRecord<T extends
|
|
671
|
-
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]
|
|
674
|
+
type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
|
|
675
|
+
-readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
|
|
672
676
|
};
|
|
673
677
|
|
|
674
678
|
// @public
|
|
675
|
-
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
679
|
+
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
676
680
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
677
681
|
};
|
|
678
682
|
|
|
@@ -700,11 +704,18 @@ export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any
|
|
|
700
704
|
[K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
|
|
701
705
|
} : L;
|
|
702
706
|
|
|
703
|
-
// @public
|
|
707
|
+
// @public @deprecated
|
|
704
708
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
705
709
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
706
710
|
};
|
|
707
711
|
|
|
712
|
+
// @public
|
|
713
|
+
export type RestrictiveStringRecord<T> = {
|
|
714
|
+
readonly [P in string]: T;
|
|
715
|
+
} & {
|
|
716
|
+
readonly [P in symbol]?: never;
|
|
717
|
+
};
|
|
718
|
+
|
|
708
719
|
// @public @sealed
|
|
709
720
|
export interface Revertible {
|
|
710
721
|
dispose(): void;
|
|
@@ -753,7 +764,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
753
764
|
// @public @sealed
|
|
754
765
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
755
766
|
constructor(scope: TScope);
|
|
756
|
-
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
767
|
+
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
757
768
|
array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
758
769
|
arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
|
|
759
770
|
[Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
|
|
@@ -761,7 +772,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
761
772
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
762
773
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
|
|
763
774
|
get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
|
|
764
|
-
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
775
|
+
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
|
|
765
776
|
map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
|
|
766
777
|
mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
|
|
767
778
|
[Symbol.iterator](): Iterator<[
|
|
@@ -771,8 +782,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
771
782
|
}, false, T>;
|
|
772
783
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
773
784
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
774
|
-
object<const Name extends TName, const T extends
|
|
775
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<
|
|
785
|
+
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>;
|
|
786
|
+
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>;
|
|
776
787
|
optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
|
|
777
788
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
778
789
|
required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
|
|
@@ -835,14 +846,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
|
|
|
835
846
|
insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
|
|
836
847
|
moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
|
|
837
848
|
moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
838
|
-
moveRangeToIndex(
|
|
839
|
-
moveRangeToIndex(
|
|
849
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
|
|
850
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
840
851
|
moveRangeToStart(sourceStart: number, sourceEnd: number): void;
|
|
841
852
|
moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
842
853
|
moveToEnd(sourceIndex: number): void;
|
|
843
854
|
moveToEnd(sourceIndex: number, source: TMoveFrom): void;
|
|
844
|
-
moveToIndex(
|
|
845
|
-
moveToIndex(
|
|
855
|
+
moveToIndex(destinationGap: number, sourceIndex: number): void;
|
|
856
|
+
moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
|
|
846
857
|
moveToStart(sourceIndex: number): void;
|
|
847
858
|
moveToStart(sourceIndex: number, source: TMoveFrom): void;
|
|
848
859
|
removeAt(index: number): void;
|
|
@@ -859,6 +870,19 @@ export const TreeBeta: {
|
|
|
859
870
|
readonly on: <K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>) => () => void;
|
|
860
871
|
};
|
|
861
872
|
|
|
873
|
+
// @alpha @sealed
|
|
874
|
+
export interface TreeBranch extends ViewableTree {
|
|
875
|
+
branch(): TreeBranchFork;
|
|
876
|
+
merge(branch: TreeBranchFork): void;
|
|
877
|
+
merge(branch: TreeBranchFork, disposeMerged: boolean): void;
|
|
878
|
+
rebase(branch: TreeBranchFork): void;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
// @alpha @sealed
|
|
882
|
+
export interface TreeBranchFork extends TreeBranch, IDisposable {
|
|
883
|
+
rebaseOnto(branch: TreeBranch): void;
|
|
884
|
+
}
|
|
885
|
+
|
|
862
886
|
// @public @sealed
|
|
863
887
|
export interface TreeChangeEvents {
|
|
864
888
|
nodeChanged(unstable?: unknown): void;
|
|
@@ -933,6 +957,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
|
|
|
933
957
|
|
|
934
958
|
// @public @sealed
|
|
935
959
|
export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
|
|
960
|
+
readonly childTypes: ReadonlySet<TreeNodeSchema>;
|
|
936
961
|
readonly identifier: Name;
|
|
937
962
|
readonly implicitlyConstructable: ImplicitlyConstructable;
|
|
938
963
|
readonly info: Info;
|
|
@@ -941,16 +966,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
|
|
|
941
966
|
}
|
|
942
967
|
|
|
943
968
|
// @public @sealed
|
|
944
|
-
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> {
|
|
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> {
|
|
945
970
|
// (undocumented)
|
|
946
971
|
create(data: TInsertable): TNode;
|
|
947
972
|
}
|
|
948
973
|
|
|
949
974
|
// @public
|
|
950
|
-
export type TreeObjectNode<T extends
|
|
975
|
+
export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
951
976
|
|
|
952
977
|
// @public
|
|
953
|
-
export type TreeObjectNodeUnsafe<T extends Unenforced<
|
|
978
|
+
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
|
|
954
979
|
|
|
955
980
|
// @public
|
|
956
981
|
export enum TreeStatus {
|
|
@@ -1002,15 +1027,20 @@ export type Unhydrated<T> = T;
|
|
|
1002
1027
|
|
|
1003
1028
|
// @public
|
|
1004
1029
|
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
|
|
1005
|
-
[NodeKind.Object]: T["info"] extends
|
|
1030
|
+
[NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
1006
1031
|
[NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
|
|
1007
1032
|
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
|
|
1008
1033
|
}[T["kind"]], false, {
|
|
1009
|
-
[NodeKind.Object]:
|
|
1034
|
+
[NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
|
|
1010
1035
|
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
1011
1036
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
1012
1037
|
}[T["kind"]]>> = true;
|
|
1013
1038
|
|
|
1039
|
+
// @public @sealed
|
|
1040
|
+
export interface ViewableTree {
|
|
1041
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1014
1044
|
// @public @sealed
|
|
1015
1045
|
export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
|
|
1016
1046
|
// @deprecated
|
|
@@ -108,8 +108,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
|
|
|
108
108
|
|
|
109
109
|
// @public @sealed
|
|
110
110
|
export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
|
|
111
|
-
custom?: TCustomMetadata;
|
|
112
|
-
description?: string | undefined;
|
|
111
|
+
readonly custom?: TCustomMetadata;
|
|
112
|
+
readonly description?: string | undefined;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
// @public
|
|
@@ -406,14 +406,14 @@ export type InitialObjects<T extends ContainerSchema> = {
|
|
|
406
406
|
type _InlineTrick = 0;
|
|
407
407
|
|
|
408
408
|
// @public
|
|
409
|
-
type InsertableObjectFromSchemaRecord<T extends
|
|
410
|
-
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
409
|
+
type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
|
|
410
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
411
411
|
} & {
|
|
412
|
-
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
412
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
413
413
|
}>;
|
|
414
414
|
|
|
415
415
|
// @public
|
|
416
|
-
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
416
|
+
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
417
417
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
418
418
|
} & {
|
|
419
419
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
@@ -454,7 +454,6 @@ declare namespace InternalTypes {
|
|
|
454
454
|
ApplyKind,
|
|
455
455
|
NodeBuilderData,
|
|
456
456
|
FieldHasDefault,
|
|
457
|
-
TreeNodeSchemaNonClass,
|
|
458
457
|
TreeArrayNodeBase,
|
|
459
458
|
ScopedSchemaName,
|
|
460
459
|
DefaultProvider,
|
|
@@ -522,8 +521,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
522
521
|
}
|
|
523
522
|
|
|
524
523
|
// @public @sealed
|
|
525
|
-
export interface ITree extends IFluidLoadable {
|
|
526
|
-
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
524
|
+
export interface ITree extends ViewableTree, IFluidLoadable {
|
|
527
525
|
}
|
|
528
526
|
|
|
529
527
|
// @public
|
|
@@ -555,7 +553,7 @@ export interface MakeNominal {
|
|
|
555
553
|
}
|
|
556
554
|
|
|
557
555
|
// @public
|
|
558
|
-
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> |
|
|
556
|
+
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
|
|
559
557
|
|
|
560
558
|
// @public
|
|
561
559
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
@@ -599,12 +597,12 @@ export enum NodeKind {
|
|
|
599
597
|
}
|
|
600
598
|
|
|
601
599
|
// @public
|
|
602
|
-
type ObjectFromSchemaRecord<T extends
|
|
603
|
-
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]
|
|
600
|
+
type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
|
|
601
|
+
-readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
|
|
604
602
|
};
|
|
605
603
|
|
|
606
604
|
// @public
|
|
607
|
-
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
605
|
+
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
608
606
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
609
607
|
};
|
|
610
608
|
|
|
@@ -632,11 +630,18 @@ export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any
|
|
|
632
630
|
[K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
|
|
633
631
|
} : L;
|
|
634
632
|
|
|
635
|
-
// @public
|
|
633
|
+
// @public @deprecated
|
|
636
634
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
637
635
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
638
636
|
};
|
|
639
637
|
|
|
638
|
+
// @public
|
|
639
|
+
export type RestrictiveStringRecord<T> = {
|
|
640
|
+
readonly [P in string]: T;
|
|
641
|
+
} & {
|
|
642
|
+
readonly [P in symbol]?: never;
|
|
643
|
+
};
|
|
644
|
+
|
|
640
645
|
// @public @sealed
|
|
641
646
|
export interface Revertible {
|
|
642
647
|
dispose(): void;
|
|
@@ -685,7 +690,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
685
690
|
// @public @sealed
|
|
686
691
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
687
692
|
constructor(scope: TScope);
|
|
688
|
-
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
693
|
+
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
689
694
|
array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
690
695
|
arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
|
|
691
696
|
[Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
|
|
@@ -693,7 +698,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
693
698
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
694
699
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
|
|
695
700
|
get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
|
|
696
|
-
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
701
|
+
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
|
|
697
702
|
map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
|
|
698
703
|
mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
|
|
699
704
|
[Symbol.iterator](): Iterator<[
|
|
@@ -703,8 +708,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
703
708
|
}, false, T>;
|
|
704
709
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
705
710
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
706
|
-
object<const Name extends TName, const T extends
|
|
707
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<
|
|
711
|
+
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>;
|
|
712
|
+
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>;
|
|
708
713
|
optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
|
|
709
714
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
710
715
|
required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
|
|
@@ -767,14 +772,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
|
|
|
767
772
|
insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
|
|
768
773
|
moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
|
|
769
774
|
moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
770
|
-
moveRangeToIndex(
|
|
771
|
-
moveRangeToIndex(
|
|
775
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
|
|
776
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
772
777
|
moveRangeToStart(sourceStart: number, sourceEnd: number): void;
|
|
773
778
|
moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
774
779
|
moveToEnd(sourceIndex: number): void;
|
|
775
780
|
moveToEnd(sourceIndex: number, source: TMoveFrom): void;
|
|
776
|
-
moveToIndex(
|
|
777
|
-
moveToIndex(
|
|
781
|
+
moveToIndex(destinationGap: number, sourceIndex: number): void;
|
|
782
|
+
moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
|
|
778
783
|
moveToStart(sourceIndex: number): void;
|
|
779
784
|
moveToStart(sourceIndex: number, source: TMoveFrom): void;
|
|
780
785
|
removeAt(index: number): void;
|
|
@@ -865,6 +870,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
|
|
|
865
870
|
|
|
866
871
|
// @public @sealed
|
|
867
872
|
export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
|
|
873
|
+
readonly childTypes: ReadonlySet<TreeNodeSchema>;
|
|
868
874
|
readonly identifier: Name;
|
|
869
875
|
readonly implicitlyConstructable: ImplicitlyConstructable;
|
|
870
876
|
readonly info: Info;
|
|
@@ -873,16 +879,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
|
|
|
873
879
|
}
|
|
874
880
|
|
|
875
881
|
// @public @sealed
|
|
876
|
-
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> {
|
|
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> {
|
|
877
883
|
// (undocumented)
|
|
878
884
|
create(data: TInsertable): TNode;
|
|
879
885
|
}
|
|
880
886
|
|
|
881
887
|
// @public
|
|
882
|
-
export type TreeObjectNode<T extends
|
|
888
|
+
export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
883
889
|
|
|
884
890
|
// @public
|
|
885
|
-
export type TreeObjectNodeUnsafe<T extends Unenforced<
|
|
891
|
+
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
|
|
886
892
|
|
|
887
893
|
// @public
|
|
888
894
|
export enum TreeStatus {
|
|
@@ -934,15 +940,20 @@ export type Unhydrated<T> = T;
|
|
|
934
940
|
|
|
935
941
|
// @public
|
|
936
942
|
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
|
|
937
|
-
[NodeKind.Object]: T["info"] extends
|
|
943
|
+
[NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
938
944
|
[NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
|
|
939
945
|
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
|
|
940
946
|
}[T["kind"]], false, {
|
|
941
|
-
[NodeKind.Object]:
|
|
947
|
+
[NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
|
|
942
948
|
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
943
949
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
944
950
|
}[T["kind"]]>> = true;
|
|
945
951
|
|
|
952
|
+
// @public @sealed
|
|
953
|
+
export interface ViewableTree {
|
|
954
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
955
|
+
}
|
|
956
|
+
|
|
946
957
|
// @public @sealed
|
|
947
958
|
export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
|
|
948
959
|
// @deprecated
|