@opra/common
Version:
Opra common package
131 lines (130 loc) • 7.68 kB
TypeScript
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;
}