UNPKG

@opra/common

Version:
131 lines (130 loc) 7.68 kB
import type { Combine, ThunkAsync, Type } from 'ts-gems'; import { ResponsiveMap } from '../../helpers/index.js'; import { OpraSchema } from '../../schema/index.js'; import { DocumentElement } from '../common/document-element.js'; import { DocumentInitContext } from '../common/document-init-context.js'; import { ApiField } from '../data-type/api-field.js'; import { ArrayType } from '../data-type/array-type.js'; import { ComplexType } from '../data-type/complex-type.js'; import { DataType } from '../data-type/data-type.js'; import { EnumType } from '../data-type/enum-type.js'; import { MappedType } from '../data-type/mapped-type.js'; import { MixinType } from '../data-type/mixin-type.js'; import { SimpleType } from '../data-type/simple-type.js'; import { UnionType } from '../data-type/union-type.js'; /** * * @namespace DataTypeFactory */ export declare namespace DataTypeFactory { type DataTypeSources = ThunkAsync<Type | EnumType.EnumObject | EnumType.EnumArray | object>[] | Record<string, OpraSchema.DataType>; type DataTypeThunk = Type | EnumType.EnumObject | EnumType.EnumArray | object; interface ArrayTypeInit extends Combine<{ _instance?: ArrayType; type: (string | SimpleTypeInit | ComplexTypeInit | MappedTypeInit | MixinTypeInit | UnionTypeInit | ArrayTypeInit)[]; }, ArrayType.InitArguments> { } interface ComplexTypeInit extends Combine<{ _instance?: ComplexType; base?: string | ComplexTypeInit | MappedTypeInit | MixinTypeInit; fields?: Record<string, ApiFieldInit>; additionalFields?: boolean | string | DataTypeFactory.DataTypeInitArguments | ['error'] | ['error', string]; }, ComplexType.InitArguments> { } interface EnumTypeInit extends Combine<{ _instance?: MappedType; base?: string | EnumTypeInit; }, EnumType.InitArguments> { } interface MappedTypeInit extends Combine<{ _instance?: MappedType; base: string | ComplexTypeInit | MappedTypeInit | MixinTypeInit; }, MappedType.InitArguments> { } interface MixinTypeInit extends Combine<{ _instance?: MixinType; types: (string | ComplexTypeInit | MappedTypeInit | MixinTypeInit)[]; }, MixinType.InitArguments> { } interface SimpleTypeInit extends Combine<{ _instance?: SimpleType; base?: string | SimpleTypeInit; }, SimpleType.InitArguments> { } interface UnionTypeInit extends Combine<{ _instance?: MixinType; types: (string | ComplexTypeInit | MappedTypeInit | MixinTypeInit)[]; }, UnionType.InitArguments> { } interface ApiFieldInit extends Combine<{ type: string | DataTypeInitArguments; }, ApiField.InitArguments> { } type DataTypeInitArguments = ComplexTypeInit | EnumTypeInit | MappedTypeInit | MixinTypeInit | SimpleTypeInit | UnionTypeInit | ArrayTypeInit; interface Context extends DocumentInitContext { importQueue?: ResponsiveMap<any>; initArgsMap?: ResponsiveMap<DataTypeInitArguments>; } } /** * * @class DataTypeFactory */ export declare class DataTypeFactory { static createDataType(context: DocumentInitContext | undefined, owner: DocumentElement, thunk: DataTypeFactory.DataTypeThunk): Promise<DataType | undefined>; static resolveDataType(context: DocumentInitContext | undefined, owner: DocumentElement, v: any): Promise<DataType>; /** * * @param context * @param target * @param types */ static addDataTypes(context: DocumentInitContext | undefined, target: DocumentElement, types: DataTypeFactory.DataTypeSources): Promise<void>; /** * * @param context * @param owner * @param types */ static createAllDataTypes(context: DocumentInitContext | undefined, owner: DocumentElement, types: DataTypeFactory.DataTypeSources): Promise<DataType[] | undefined>; /** * * @param ctx * @param owner * @param types */ protected static _prepareAllInitArgs(ctx: DocumentInitContext, owner: DocumentElement, types: DataTypeFactory.DataTypeSources): Promise<DataTypeFactory.DataTypeInitArguments[] | void>; /** * * @param context * @param owner * @param thunk * @param checkCircularDeps * @protected */ protected static _importDataTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, thunk: string | Type | OpraSchema.DataType | object, checkCircularDeps?: boolean): Promise<DataTypeFactory.DataTypeInitArguments | string | void>; protected static _prepareDataTypeArgs(context: DataTypeFactory.Context, initArgs: DataTypeFactory.DataTypeInitArguments, metadata: OpraSchema.DataTypeBase | DataType.Metadata): Promise<void>; protected static _prepareArrayTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.ArrayTypeInit, metadata: (ArrayType.Metadata | OpraSchema.ArrayType) & { ctor?: Type; }): Promise<void>; protected static _prepareComplexTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.ComplexTypeInit, metadata: ComplexType.Metadata | OpraSchema.ComplexType): Promise<void>; protected static _prepareEnumTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.EnumTypeInit, metadata: EnumType.Metadata | OpraSchema.EnumType): Promise<void>; protected static _prepareSimpleTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.SimpleTypeInit, metadata: SimpleType.Metadata | OpraSchema.SimpleType): Promise<void>; protected static _prepareMappedTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.MappedTypeInit, metadata: DataTypeFactory.MappedTypeInit | OpraSchema.MappedType): Promise<void>; protected static _prepareMixinTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.MixinTypeInit, metadata: (MixinType.Metadata | OpraSchema.MixinType) & { ctor?: Type; }): Promise<void>; protected static _prepareUnionTypeArgs(context: DataTypeFactory.Context, owner: DocumentElement, initArgs: DataTypeFactory.UnionTypeInit, metadata: (UnionType.Metadata | OpraSchema.UnionType) & { ctor?: Type; }): Promise<void>; protected static _createDataType(context: DocumentInitContext & { initArgsMap?: ResponsiveMap<DataTypeFactory.DataTypeInitArguments>; }, owner: DocumentElement, args: DataTypeFactory.DataTypeInitArguments | string): ArrayType | ComplexType | EnumType | MappedType | MixinType | SimpleType | UnionType | undefined; protected static _createArrayType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.ArrayTypeInit): ArrayType; protected static _createComplexType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.ComplexTypeInit): ComplexType; protected static _createEnumType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.EnumTypeInit): EnumType; protected static _createMappedType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.MappedTypeInit): MappedType; protected static _createMixinType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.MixinTypeInit): MixinType; protected static _createSimpleType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.SimpleTypeInit): SimpleType; protected static _createUnionType(context: DocumentInitContext, owner: DocumentElement, args: DataTypeFactory.UnionTypeInit): UnionType; }