fluid-framework 2.3.1 → 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 +77 -38
- package/api-report/fluid-framework.beta.api.md +50 -30
- package/api-report/fluid-framework.legacy.alpha.api.md +54 -30
- package/api-report/fluid-framework.legacy.public.api.md +50 -30
- package/api-report/fluid-framework.public.api.md +50 -30
- package/dist/alpha.d.ts +7 -0
- package/dist/beta.d.ts +4 -0
- package/dist/legacy.d.ts +4 -0
- package/dist/public.d.ts +4 -0
- package/lib/alpha.d.ts +7 -0
- package/lib/beta.d.ts +4 -0
- package/lib/legacy.d.ts +4 -0
- package/lib/public.d.ts +4 -0
- package/package.json +11 -11
|
@@ -92,21 +92,29 @@ export enum FieldKind {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
// @public
|
|
95
|
-
export interface FieldProps {
|
|
95
|
+
export interface FieldProps<TCustomMetadata = unknown> {
|
|
96
96
|
readonly defaultProvider?: DefaultProvider;
|
|
97
97
|
readonly key?: string;
|
|
98
|
+
readonly metadata?: FieldSchemaMetadata<TCustomMetadata>;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
// @public @sealed
|
|
101
|
-
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes> {
|
|
102
|
+
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes, out TCustomMetadata = unknown> {
|
|
102
103
|
readonly allowedTypes: Types;
|
|
103
104
|
get allowedTypeSet(): ReadonlySet<TreeNodeSchema>;
|
|
104
105
|
readonly kind: Kind;
|
|
105
|
-
|
|
106
|
+
get metadata(): FieldSchemaMetadata<TCustomMetadata> | undefined;
|
|
107
|
+
readonly props?: FieldProps<TCustomMetadata> | undefined;
|
|
106
108
|
readonly requiresValue: boolean;
|
|
107
109
|
protected _typeCheck: MakeNominal;
|
|
108
110
|
}
|
|
109
111
|
|
|
112
|
+
// @public @sealed
|
|
113
|
+
export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
|
|
114
|
+
readonly custom?: TCustomMetadata;
|
|
115
|
+
readonly description?: string | undefined;
|
|
116
|
+
}
|
|
117
|
+
|
|
110
118
|
// @public
|
|
111
119
|
export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends Unenforced<ImplicitAllowedTypes>> extends FieldSchema<Kind, any> {
|
|
112
120
|
readonly allowedTypes: Types;
|
|
@@ -498,14 +506,14 @@ export type InitialObjects<T extends ContainerSchema> = {
|
|
|
498
506
|
type _InlineTrick = 0;
|
|
499
507
|
|
|
500
508
|
// @public
|
|
501
|
-
type InsertableObjectFromSchemaRecord<T extends
|
|
502
|
-
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
509
|
+
type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
|
|
510
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
503
511
|
} & {
|
|
504
|
-
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
512
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
505
513
|
}>;
|
|
506
514
|
|
|
507
515
|
// @public
|
|
508
|
-
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
516
|
+
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
509
517
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
510
518
|
} & {
|
|
511
519
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
@@ -548,7 +556,6 @@ declare namespace InternalTypes {
|
|
|
548
556
|
ApplyKind,
|
|
549
557
|
NodeBuilderData,
|
|
550
558
|
FieldHasDefault,
|
|
551
|
-
TreeNodeSchemaNonClass,
|
|
552
559
|
TreeArrayNodeBase,
|
|
553
560
|
ScopedSchemaName,
|
|
554
561
|
DefaultProvider,
|
|
@@ -814,8 +821,7 @@ export interface ITrace {
|
|
|
814
821
|
}
|
|
815
822
|
|
|
816
823
|
// @public @sealed
|
|
817
|
-
export interface ITree extends IFluidLoadable {
|
|
818
|
-
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
824
|
+
export interface ITree extends ViewableTree, IFluidLoadable {
|
|
819
825
|
}
|
|
820
826
|
|
|
821
827
|
// @public
|
|
@@ -853,7 +859,7 @@ export interface MakeNominal {
|
|
|
853
859
|
}
|
|
854
860
|
|
|
855
861
|
// @public
|
|
856
|
-
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> |
|
|
862
|
+
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
|
|
857
863
|
|
|
858
864
|
// @public
|
|
859
865
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
@@ -892,12 +898,12 @@ export enum NodeKind {
|
|
|
892
898
|
}
|
|
893
899
|
|
|
894
900
|
// @public
|
|
895
|
-
type ObjectFromSchemaRecord<T extends
|
|
896
|
-
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]
|
|
901
|
+
type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
|
|
902
|
+
-readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
|
|
897
903
|
};
|
|
898
904
|
|
|
899
905
|
// @public
|
|
900
|
-
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
906
|
+
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
901
907
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
902
908
|
};
|
|
903
909
|
|
|
@@ -925,11 +931,18 @@ export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any
|
|
|
925
931
|
[K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
|
|
926
932
|
} : L;
|
|
927
933
|
|
|
928
|
-
// @public
|
|
934
|
+
// @public @deprecated
|
|
929
935
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
930
936
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
931
937
|
};
|
|
932
938
|
|
|
939
|
+
// @public
|
|
940
|
+
export type RestrictiveStringRecord<T> = {
|
|
941
|
+
readonly [P in string]: T;
|
|
942
|
+
} & {
|
|
943
|
+
readonly [P in symbol]?: never;
|
|
944
|
+
};
|
|
945
|
+
|
|
933
946
|
// @public @sealed
|
|
934
947
|
export interface Revertible {
|
|
935
948
|
dispose(): void;
|
|
@@ -978,7 +991,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
978
991
|
// @public @sealed
|
|
979
992
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
980
993
|
constructor(scope: TScope);
|
|
981
|
-
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
994
|
+
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>;
|
|
982
995
|
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>;
|
|
983
996
|
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>, {
|
|
984
997
|
[Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
|
|
@@ -986,7 +999,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
986
999
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
987
1000
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
|
|
988
1001
|
get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
|
|
989
|
-
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
1002
|
+
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>;
|
|
990
1003
|
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>;
|
|
991
1004
|
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>, {
|
|
992
1005
|
[Symbol.iterator](): Iterator<[
|
|
@@ -996,11 +1009,11 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
996
1009
|
}, false, T>;
|
|
997
1010
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
998
1011
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
999
|
-
object<const Name extends TName, const T extends
|
|
1000
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<
|
|
1001
|
-
optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps
|
|
1012
|
+
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>;
|
|
1013
|
+
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>;
|
|
1014
|
+
optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
|
|
1002
1015
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
1003
|
-
required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps
|
|
1016
|
+
required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
|
|
1004
1017
|
requiredRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Required, T>;
|
|
1005
1018
|
// (undocumented)
|
|
1006
1019
|
readonly scope: TScope;
|
|
@@ -1012,6 +1025,7 @@ type ScopedSchemaName<TScope extends string | undefined, TName extends number |
|
|
|
1012
1025
|
|
|
1013
1026
|
// @alpha
|
|
1014
1027
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
1028
|
+
// @deprecated
|
|
1015
1029
|
constructor(opArgs: IMergeTreeDeltaOpArgs, deltaArgs: IMergeTreeDeltaCallbackArgs, mergeTreeClient: Client);
|
|
1016
1030
|
readonly isLocal: boolean;
|
|
1017
1031
|
// (undocumented)
|
|
@@ -1020,6 +1034,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
1020
1034
|
|
|
1021
1035
|
// @alpha
|
|
1022
1036
|
export abstract class SequenceEvent<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
1037
|
+
// @deprecated
|
|
1023
1038
|
constructor(
|
|
1024
1039
|
deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>, mergeTreeClient: Client);
|
|
1025
1040
|
get clientId(): string | undefined;
|
|
@@ -1033,6 +1048,7 @@ export abstract class SequenceEvent<TOperation extends MergeTreeDeltaOperationTy
|
|
|
1033
1048
|
|
|
1034
1049
|
// @alpha
|
|
1035
1050
|
export class SequenceInterval implements ISerializableInterval {
|
|
1051
|
+
// @deprecated
|
|
1036
1052
|
constructor(client: Client,
|
|
1037
1053
|
start: LocalReferencePosition,
|
|
1038
1054
|
end: LocalReferencePosition, intervalType: IntervalType, props?: PropertySet, startSide?: Side, endSide?: Side);
|
|
@@ -1071,6 +1087,7 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
1071
1087
|
|
|
1072
1088
|
// @alpha
|
|
1073
1089
|
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
1090
|
+
// @deprecated
|
|
1074
1091
|
constructor(
|
|
1075
1092
|
opArgs: IMergeTreeDeltaOpArgs | undefined, deltaArgs: IMergeTreeMaintenanceCallbackArgs, mergeTreeClient: Client);
|
|
1076
1093
|
readonly opArgs: IMergeTreeDeltaOpArgs | undefined;
|
|
@@ -1151,14 +1168,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
|
|
|
1151
1168
|
insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
|
|
1152
1169
|
moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
|
|
1153
1170
|
moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
1154
|
-
moveRangeToIndex(
|
|
1155
|
-
moveRangeToIndex(
|
|
1171
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
|
|
1172
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
1156
1173
|
moveRangeToStart(sourceStart: number, sourceEnd: number): void;
|
|
1157
1174
|
moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
1158
1175
|
moveToEnd(sourceIndex: number): void;
|
|
1159
1176
|
moveToEnd(sourceIndex: number, source: TMoveFrom): void;
|
|
1160
|
-
moveToIndex(
|
|
1161
|
-
moveToIndex(
|
|
1177
|
+
moveToIndex(destinationGap: number, sourceIndex: number): void;
|
|
1178
|
+
moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
|
|
1162
1179
|
moveToStart(sourceIndex: number): void;
|
|
1163
1180
|
moveToStart(sourceIndex: number, source: TMoveFrom): void;
|
|
1164
1181
|
removeAt(index: number): void;
|
|
@@ -1239,6 +1256,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
|
|
|
1239
1256
|
|
|
1240
1257
|
// @public @sealed
|
|
1241
1258
|
export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
|
|
1259
|
+
readonly childTypes: ReadonlySet<TreeNodeSchema>;
|
|
1242
1260
|
readonly identifier: Name;
|
|
1243
1261
|
readonly implicitlyConstructable: ImplicitlyConstructable;
|
|
1244
1262
|
readonly info: Info;
|
|
@@ -1247,16 +1265,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
|
|
|
1247
1265
|
}
|
|
1248
1266
|
|
|
1249
1267
|
// @public @sealed
|
|
1250
|
-
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> {
|
|
1268
|
+
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> {
|
|
1251
1269
|
// (undocumented)
|
|
1252
1270
|
create(data: TInsertable): TNode;
|
|
1253
1271
|
}
|
|
1254
1272
|
|
|
1255
1273
|
// @public
|
|
1256
|
-
export type TreeObjectNode<T extends
|
|
1274
|
+
export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
1257
1275
|
|
|
1258
1276
|
// @public
|
|
1259
|
-
export type TreeObjectNodeUnsafe<T extends Unenforced<
|
|
1277
|
+
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
|
|
1260
1278
|
|
|
1261
1279
|
// @public
|
|
1262
1280
|
export enum TreeStatus {
|
|
@@ -1273,6 +1291,7 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
|
|
|
1273
1291
|
initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
|
|
1274
1292
|
get root(): TreeFieldFromImplicitField<TSchema>;
|
|
1275
1293
|
set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
|
|
1294
|
+
readonly schema: TSchema;
|
|
1276
1295
|
upgradeSchema(): void;
|
|
1277
1296
|
}
|
|
1278
1297
|
|
|
@@ -1307,15 +1326,20 @@ export type Unhydrated<T> = T;
|
|
|
1307
1326
|
|
|
1308
1327
|
// @public
|
|
1309
1328
|
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
|
|
1310
|
-
[NodeKind.Object]: T["info"] extends
|
|
1329
|
+
[NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
1311
1330
|
[NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
|
|
1312
1331
|
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
|
|
1313
1332
|
}[T["kind"]], false, {
|
|
1314
|
-
[NodeKind.Object]:
|
|
1333
|
+
[NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
|
|
1315
1334
|
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
1316
1335
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
1317
1336
|
}[T["kind"]]>> = true;
|
|
1318
1337
|
|
|
1338
|
+
// @public @sealed
|
|
1339
|
+
export interface ViewableTree {
|
|
1340
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1319
1343
|
// @public @sealed
|
|
1320
1344
|
export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
|
|
1321
1345
|
// @deprecated
|
|
@@ -89,21 +89,29 @@ export enum FieldKind {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// @public
|
|
92
|
-
export interface FieldProps {
|
|
92
|
+
export interface FieldProps<TCustomMetadata = unknown> {
|
|
93
93
|
readonly defaultProvider?: DefaultProvider;
|
|
94
94
|
readonly key?: string;
|
|
95
|
+
readonly metadata?: FieldSchemaMetadata<TCustomMetadata>;
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
// @public @sealed
|
|
98
|
-
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes> {
|
|
99
|
+
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes, out TCustomMetadata = unknown> {
|
|
99
100
|
readonly allowedTypes: Types;
|
|
100
101
|
get allowedTypeSet(): ReadonlySet<TreeNodeSchema>;
|
|
101
102
|
readonly kind: Kind;
|
|
102
|
-
|
|
103
|
+
get metadata(): FieldSchemaMetadata<TCustomMetadata> | undefined;
|
|
104
|
+
readonly props?: FieldProps<TCustomMetadata> | undefined;
|
|
103
105
|
readonly requiresValue: boolean;
|
|
104
106
|
protected _typeCheck: MakeNominal;
|
|
105
107
|
}
|
|
106
108
|
|
|
109
|
+
// @public @sealed
|
|
110
|
+
export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
|
|
111
|
+
readonly custom?: TCustomMetadata;
|
|
112
|
+
readonly description?: string | undefined;
|
|
113
|
+
}
|
|
114
|
+
|
|
107
115
|
// @public
|
|
108
116
|
export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends Unenforced<ImplicitAllowedTypes>> extends FieldSchema<Kind, any> {
|
|
109
117
|
readonly allowedTypes: Types;
|
|
@@ -426,14 +434,14 @@ export type InitialObjects<T extends ContainerSchema> = {
|
|
|
426
434
|
type _InlineTrick = 0;
|
|
427
435
|
|
|
428
436
|
// @public
|
|
429
|
-
type InsertableObjectFromSchemaRecord<T extends
|
|
430
|
-
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
437
|
+
type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
|
|
438
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
431
439
|
} & {
|
|
432
|
-
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
440
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
|
|
433
441
|
}>;
|
|
434
442
|
|
|
435
443
|
// @public
|
|
436
|
-
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
444
|
+
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
437
445
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
438
446
|
} & {
|
|
439
447
|
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
@@ -476,7 +484,6 @@ declare namespace InternalTypes {
|
|
|
476
484
|
ApplyKind,
|
|
477
485
|
NodeBuilderData,
|
|
478
486
|
FieldHasDefault,
|
|
479
|
-
TreeNodeSchemaNonClass,
|
|
480
487
|
TreeArrayNodeBase,
|
|
481
488
|
ScopedSchemaName,
|
|
482
489
|
DefaultProvider,
|
|
@@ -544,8 +551,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
544
551
|
}
|
|
545
552
|
|
|
546
553
|
// @public @sealed
|
|
547
|
-
export interface ITree extends IFluidLoadable {
|
|
548
|
-
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
554
|
+
export interface ITree extends ViewableTree, IFluidLoadable {
|
|
549
555
|
}
|
|
550
556
|
|
|
551
557
|
// @public
|
|
@@ -583,7 +589,7 @@ export interface MakeNominal {
|
|
|
583
589
|
}
|
|
584
590
|
|
|
585
591
|
// @public
|
|
586
|
-
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> |
|
|
592
|
+
export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
|
|
587
593
|
|
|
588
594
|
// @public
|
|
589
595
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
@@ -622,12 +628,12 @@ export enum NodeKind {
|
|
|
622
628
|
}
|
|
623
629
|
|
|
624
630
|
// @public
|
|
625
|
-
type ObjectFromSchemaRecord<T extends
|
|
626
|
-
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]
|
|
631
|
+
type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
|
|
632
|
+
-readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
|
|
627
633
|
};
|
|
628
634
|
|
|
629
635
|
// @public
|
|
630
|
-
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<
|
|
636
|
+
type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
|
|
631
637
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
632
638
|
};
|
|
633
639
|
|
|
@@ -655,11 +661,18 @@ export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any
|
|
|
655
661
|
[K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
|
|
656
662
|
} : L;
|
|
657
663
|
|
|
658
|
-
// @public
|
|
664
|
+
// @public @deprecated
|
|
659
665
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
660
666
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
661
667
|
};
|
|
662
668
|
|
|
669
|
+
// @public
|
|
670
|
+
export type RestrictiveStringRecord<T> = {
|
|
671
|
+
readonly [P in string]: T;
|
|
672
|
+
} & {
|
|
673
|
+
readonly [P in symbol]?: never;
|
|
674
|
+
};
|
|
675
|
+
|
|
663
676
|
// @public @sealed
|
|
664
677
|
export interface Revertible {
|
|
665
678
|
dispose(): void;
|
|
@@ -708,7 +721,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
708
721
|
// @public @sealed
|
|
709
722
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
710
723
|
constructor(scope: TScope);
|
|
711
|
-
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
724
|
+
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>;
|
|
712
725
|
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>;
|
|
713
726
|
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>, {
|
|
714
727
|
[Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
|
|
@@ -716,7 +729,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
716
729
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
717
730
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
|
|
718
731
|
get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
|
|
719
|
-
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T):
|
|
732
|
+
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>;
|
|
720
733
|
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>;
|
|
721
734
|
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>, {
|
|
722
735
|
[Symbol.iterator](): Iterator<[
|
|
@@ -726,11 +739,11 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
726
739
|
}, false, T>;
|
|
727
740
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
728
741
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
729
|
-
object<const Name extends TName, const T extends
|
|
730
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<
|
|
731
|
-
optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps
|
|
742
|
+
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>;
|
|
743
|
+
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>;
|
|
744
|
+
optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
|
|
732
745
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
733
|
-
required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps
|
|
746
|
+
required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
|
|
734
747
|
requiredRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Required, T>;
|
|
735
748
|
// (undocumented)
|
|
736
749
|
readonly scope: TScope;
|
|
@@ -794,14 +807,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
|
|
|
794
807
|
insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
|
|
795
808
|
moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
|
|
796
809
|
moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
797
|
-
moveRangeToIndex(
|
|
798
|
-
moveRangeToIndex(
|
|
810
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
|
|
811
|
+
moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
799
812
|
moveRangeToStart(sourceStart: number, sourceEnd: number): void;
|
|
800
813
|
moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
|
|
801
814
|
moveToEnd(sourceIndex: number): void;
|
|
802
815
|
moveToEnd(sourceIndex: number, source: TMoveFrom): void;
|
|
803
|
-
moveToIndex(
|
|
804
|
-
moveToIndex(
|
|
816
|
+
moveToIndex(destinationGap: number, sourceIndex: number): void;
|
|
817
|
+
moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
|
|
805
818
|
moveToStart(sourceIndex: number): void;
|
|
806
819
|
moveToStart(sourceIndex: number, source: TMoveFrom): void;
|
|
807
820
|
removeAt(index: number): void;
|
|
@@ -882,6 +895,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
|
|
|
882
895
|
|
|
883
896
|
// @public @sealed
|
|
884
897
|
export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
|
|
898
|
+
readonly childTypes: ReadonlySet<TreeNodeSchema>;
|
|
885
899
|
readonly identifier: Name;
|
|
886
900
|
readonly implicitlyConstructable: ImplicitlyConstructable;
|
|
887
901
|
readonly info: Info;
|
|
@@ -890,16 +904,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
|
|
|
890
904
|
}
|
|
891
905
|
|
|
892
906
|
// @public @sealed
|
|
893
|
-
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> {
|
|
907
|
+
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> {
|
|
894
908
|
// (undocumented)
|
|
895
909
|
create(data: TInsertable): TNode;
|
|
896
910
|
}
|
|
897
911
|
|
|
898
912
|
// @public
|
|
899
|
-
export type TreeObjectNode<T extends
|
|
913
|
+
export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
900
914
|
|
|
901
915
|
// @public
|
|
902
|
-
export type TreeObjectNodeUnsafe<T extends Unenforced<
|
|
916
|
+
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
|
|
903
917
|
|
|
904
918
|
// @public
|
|
905
919
|
export enum TreeStatus {
|
|
@@ -916,6 +930,7 @@ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposab
|
|
|
916
930
|
initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
|
|
917
931
|
get root(): TreeFieldFromImplicitField<TSchema>;
|
|
918
932
|
set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
|
|
933
|
+
readonly schema: TSchema;
|
|
919
934
|
upgradeSchema(): void;
|
|
920
935
|
}
|
|
921
936
|
|
|
@@ -950,15 +965,20 @@ export type Unhydrated<T> = T;
|
|
|
950
965
|
|
|
951
966
|
// @public
|
|
952
967
|
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
|
|
953
|
-
[NodeKind.Object]: T["info"] extends
|
|
968
|
+
[NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
954
969
|
[NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
|
|
955
970
|
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
|
|
956
971
|
}[T["kind"]], false, {
|
|
957
|
-
[NodeKind.Object]:
|
|
972
|
+
[NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
|
|
958
973
|
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
959
974
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
960
975
|
}[T["kind"]]>> = true;
|
|
961
976
|
|
|
977
|
+
// @public @sealed
|
|
978
|
+
export interface ViewableTree {
|
|
979
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
980
|
+
}
|
|
981
|
+
|
|
962
982
|
// @public @sealed
|
|
963
983
|
export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
|
|
964
984
|
// @deprecated
|