diff --git a/packages/dds/tree/api-report/tree.alpha.api.md b/packages/dds/tree/api-report/tree.alpha.api.md index 7296cc5842d3..f44b32b489b6 100644 --- a/packages/dds/tree/api-report/tree.alpha.api.md +++ b/packages/dds/tree/api-report/tree.alpha.api.md @@ -864,23 +864,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } @@ -1098,8 +1098,8 @@ export namespace System_TableSchema { }>; // @system export function createTableSchema, const TRowSchema extends RowSchemaBase>(inputSchemaFactory: SchemaFactoryBeta, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): TreeNodeSchemaCore_2, "Table">, NodeKind.Object, true, { - readonly rows: TreeNodeSchemaClass, "Table.rows">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>, Iterable>, true, TRowSchema, undefined>; - readonly columns: TreeNodeSchemaClass, "Table.columns">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>, Iterable>, true, TColumnSchema, undefined>; + readonly rows: TreeNodeSchemaClass, "Table.rows">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>, Iterable>, true, TRowSchema, undefined, unknown>; + readonly columns: TreeNodeSchemaClass, "Table.columns">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>, Iterable>, true, TColumnSchema, undefined, unknown>; }, object & { readonly rows: (InsertableTypedNode_2, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>)>; readonly columns: (InsertableTypedNode_2, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>)>; diff --git a/packages/dds/tree/api-report/tree.beta.api.md b/packages/dds/tree/api-report/tree.beta.api.md index 0b4e74b312e2..a9d51da3d032 100644 --- a/packages/dds/tree/api-report/tree.beta.api.md +++ b/packages/dds/tree/api-report/tree.beta.api.md @@ -417,23 +417,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/dds/tree/api-report/tree.legacy.beta.api.md b/packages/dds/tree/api-report/tree.legacy.beta.api.md index 809e9f793cd5..d735dd89462b 100644 --- a/packages/dds/tree/api-report/tree.legacy.beta.api.md +++ b/packages/dds/tree/api-report/tree.legacy.beta.api.md @@ -420,23 +420,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/dds/tree/api-report/tree.legacy.public.api.md b/packages/dds/tree/api-report/tree.legacy.public.api.md index fdec01b3f397..07512810454e 100644 --- a/packages/dds/tree/api-report/tree.legacy.public.api.md +++ b/packages/dds/tree/api-report/tree.legacy.public.api.md @@ -311,23 +311,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/dds/tree/api-report/tree.public.api.md b/packages/dds/tree/api-report/tree.public.api.md index fdec01b3f397..07512810454e 100644 --- a/packages/dds/tree/api-report/tree.public.api.md +++ b/packages/dds/tree/api-report/tree.public.api.md @@ -311,23 +311,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/dds/tree/src/simple-tree/api/schemaFactory.ts b/packages/dds/tree/src/simple-tree/api/schemaFactory.ts index 77e2d70c06d5..920bade82b7b 100644 --- a/packages/dds/tree/src/simple-tree/api/schemaFactory.ts +++ b/packages/dds/tree/src/simple-tree/api/schemaFactory.ts @@ -382,13 +382,16 @@ export class SchemaFactory< * * @param name - Unique identifier for this schema within this factory's scope. * @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key. + * @param options - Additional options for the schema. */ public object< const Name extends TName, const T extends RestrictiveStringRecord, + const TCustomMetadata = unknown, >( name: Name, fields: T, + options?: NodeSchemaOptions, ): TreeNodeSchemaClass< ScopedSchemaName, NodeKind.Object, @@ -444,15 +447,21 @@ export class SchemaFactory< * * @param name - Unique identifier for this schema within this factory's scope. * @param allowedTypes - The types that may appear as values in the map. + * @param options - Additional options for the schema. * * @example * ```typescript * class NamedMap extends factory.map("name", factory.number) {} * ``` */ - public map( + public map< + Name extends TName, + const T extends ImplicitAllowedTypes, + const TCustomMetadata = unknown, + >( name: Name, allowedTypes: T, + options?: NodeSchemaOptions, ): TreeNodeSchemaClass< ScopedSchemaName, NodeKind.Map, @@ -460,7 +469,8 @@ export class SchemaFactory< MapNodeInsertableData, true, T, - undefined + undefined, + TCustomMetadata >; /** @@ -595,6 +605,7 @@ export class SchemaFactory< * * @param name - Unique identifier for this schema within this factory's scope. * @param allowedTypes - The types that may appear in the array. + * @param options - Additional options for the schema. * * @example * ```typescript @@ -603,9 +614,14 @@ export class SchemaFactory< * * {@label NAMED} */ - public array( + public array< + const Name extends TName, + const T extends ImplicitAllowedTypes, + const TCustomMetadata = unknown, + >( name: Name, allowedTypes: T, + options?: NodeSchemaOptions, ): TreeNodeSchemaClass< ScopedSchemaName, NodeKind.Array, @@ -613,7 +629,8 @@ export class SchemaFactory< Iterable>, true, T, - undefined + undefined, + TCustomMetadata >; /** @@ -830,7 +847,8 @@ export class SchemaFactory< public arrayRecursive< const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, - >(name: Name, allowedTypes: T) { + const TCustomMetadata = unknown, + >(name: Name, allowedTypes: T, options?: NodeSchemaOptions) { const RecursiveArray = this.namedArray( name, allowedTypes as T & ImplicitAllowedTypes, @@ -877,7 +895,8 @@ export class SchemaFactory< public mapRecursive< Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, - >(name: Name, allowedTypes: T) { + const TCustomMetadata = unknown, + >(name: Name, allowedTypes: T, options?: NodeSchemaOptions) { const MapSchema = this.namedMap( name, allowedTypes as T & ImplicitAllowedTypes, @@ -885,7 +904,7 @@ export class SchemaFactory< // Setting this (implicitlyConstructable) to true seems to work ok currently, but not for other node kinds. // Supporting this could be fragile and might break other future changes, so it's being kept as false for now. false, - {}, + options ?? {}, ); return MapSchema as TreeNodeSchemaClass< @@ -918,7 +937,8 @@ export class SchemaFactory< }, false, T, - undefined + undefined, + TCustomMetadata >; } } diff --git a/packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md b/packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md index 7eac5a555392..bc440d62f732 100644 --- a/packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md +++ b/packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md @@ -1234,23 +1234,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } @@ -1476,8 +1476,8 @@ export namespace System_TableSchema { }>; // @system export function createTableSchema, const TRowSchema extends RowSchemaBase>(inputSchemaFactory: SchemaFactoryBeta, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): TreeNodeSchemaCore_2, "Table">, NodeKind.Object, true, { - readonly rows: TreeNodeSchemaClass, "Table.rows">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>, Iterable>, true, TRowSchema, undefined>; - readonly columns: TreeNodeSchemaClass, "Table.columns">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>, Iterable>, true, TColumnSchema, undefined>; + readonly rows: TreeNodeSchemaClass, "Table.rows">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>, Iterable>, true, TRowSchema, undefined, unknown>; + readonly columns: TreeNodeSchemaClass, "Table.columns">, NodeKind.Array, TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>, Iterable>, true, TColumnSchema, undefined, unknown>; }, object & { readonly rows: (InsertableTypedNode_2, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.rows">, NodeKind.Array, unknown>)>; readonly columns: (InsertableTypedNode_2, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable>, unknown> & (new (data?: InternalTreeNode | Iterable> | undefined) => TreeArrayNode : TreeNodeFromImplicitAllowedTypes, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes : never, ReadonlyArrayNode_2> & WithType, "Table.columns">, NodeKind.Array, unknown>)>; diff --git a/packages/framework/fluid-framework/api-report/fluid-framework.beta.api.md b/packages/framework/fluid-framework/api-report/fluid-framework.beta.api.md index b1f54331f41b..100879bd30c5 100644 --- a/packages/framework/fluid-framework/api-report/fluid-framework.beta.api.md +++ b/packages/framework/fluid-framework/api-report/fluid-framework.beta.api.md @@ -775,23 +775,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/framework/fluid-framework/api-report/fluid-framework.legacy.beta.api.md b/packages/framework/fluid-framework/api-report/fluid-framework.legacy.beta.api.md index 530ffe823568..7103e5a72cb8 100644 --- a/packages/framework/fluid-framework/api-report/fluid-framework.legacy.beta.api.md +++ b/packages/framework/fluid-framework/api-report/fluid-framework.legacy.beta.api.md @@ -1053,23 +1053,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/framework/fluid-framework/api-report/fluid-framework.legacy.public.api.md b/packages/framework/fluid-framework/api-report/fluid-framework.legacy.public.api.md index 6028a25f4eed..c9633e4366db 100644 --- a/packages/framework/fluid-framework/api-report/fluid-framework.legacy.public.api.md +++ b/packages/framework/fluid-framework/api-report/fluid-framework.legacy.public.api.md @@ -703,23 +703,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; } diff --git a/packages/framework/fluid-framework/api-report/fluid-framework.public.api.md b/packages/framework/fluid-framework/api-report/fluid-framework.public.api.md index 48b717780c9e..a1841439434b 100644 --- a/packages/framework/fluid-framework/api-report/fluid-framework.public.api.md +++ b/packages/framework/fluid-framework/api-report/fluid-framework.public.api.md @@ -669,23 +669,23 @@ export class SchemaFactory(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Array, TreeArrayNode & WithType`>, NodeKind.Array>, Iterable>, true, T, undefined>; - array(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined>; - arrayRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { + array(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, TreeArrayNode & WithType, NodeKind.Array>, Iterable>, true, T, undefined, TCustomMetadata>; + arrayRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe & WithType, NodeKind.Array, unknown>, { [Symbol.iterator](): Iterator>; }, false, T, undefined>; protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema; get identifier(): FieldSchema; map(allowedTypes: T): TreeNodeSchemaNonClass`>, NodeKind.Map, TreeMapNode & WithType`>, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - map(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined>; - mapRecursive(name: Name, allowedTypes: T): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { + map(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, TreeMapNode & WithType, NodeKind.Map>, MapNodeInsertableData, true, T, undefined, TCustomMetadata>; + mapRecursive(name: Name, allowedTypes: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe & WithType, NodeKind.Map, unknown>, { [Symbol.iterator](): Iterator<[ string, System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe ]>; } | { readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe; - }, false, T, undefined>; - object>(name: Name, fields: T): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; + }, false, T, undefined, TCustomMetadata>; + object, const TCustomMetadata = unknown>(name: Name, fields: T, options?: NodeSchemaOptions): TreeNodeSchemaClass, NodeKind.Object, TreeObjectNode>, object & InsertableObjectFromSchemaRecord, true, T>; objectRecursive>(name: Name, t: T): TreeNodeSchemaClass, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe, false, T>; readonly scope: TScope; }