UNPKG

@opra/common

Version:
82 lines (81 loc) 2.99 kB
import 'reflect-metadata'; import type { Combine, Type, TypeThunkAsync } from 'ts-gems'; import { OpraSchema } from '../../schema/index.js'; import type { ApiDocument } from '../api-document.js'; import type { DocumentElement } from '../common/document-element.js'; import { DocumentInitContext } from '../common/document-init-context.js'; import { ApiField } from './api-field.js'; import { ComplexTypeBase } from './complex-type-base.js'; import { DataType } from './data-type.js'; import type { MappedType } from './mapped-type.js'; import type { MixinType } from './mixin-type.js'; /** * @namespace ComplexType */ export declare namespace ComplexType { interface Metadata extends Combine<{ kind: OpraSchema.ComplexType.Kind; fields?: Record<string, ApiField.Metadata>; additionalFields?: boolean | string | TypeThunkAsync | ['error'] | ['error', string]; }, DataType.Metadata, OpraSchema.ComplexType> { } interface Options extends Combine<Pick<Metadata, 'additionalFields' | 'keyField' | 'discriminatorField' | 'discriminatorValue'>, DataType.Options, Pick<OpraSchema.ComplexType, 'abstract'>> { } interface InitArguments extends Combine<{ kind: OpraSchema.ComplexType.Kind; base?: ComplexType | MappedType | MixinType; fields?: Record<string, ApiField.InitArguments | ApiField>; additionalFields?: boolean | DataType | ['error'] | ['error', string]; }, DataType.InitArguments, ComplexType.Metadata> { } interface ParsedFieldPath { fieldName: string; dataType: DataType; field?: ApiField; additionalField?: boolean; sign?: '+' | '-'; } } /** * Type definition for MixinType * @class ComplexType */ export interface ComplexTypeStatic { /** * Class constructor of ComplexType * * @param owner * @param args * @param context * @constructor */ new (owner: DocumentElement, args?: ComplexType.InitArguments, context?: DocumentInitContext): ComplexType; (options?: ComplexType.Options): ClassDecorator; prototype: ComplexType; extend<T extends Type>(typeClass: T, fields: Record<string, ApiField.Options>): T; } /** * Type definition of ComplexType prototype * @interface ComplexType */ export interface ComplexType extends ComplexTypeClass { } /** * ComplexType constructor */ export declare const ComplexType: ComplexTypeStatic; /** * * @class ComplexType */ declare abstract class ComplexTypeClass extends ComplexTypeBase { readonly kind: OpraSchema.ComplexType.Kind; readonly base?: ComplexType | MappedType | MixinType; readonly ctor?: Type; discriminatorField?: string; discriminatorValue?: string; extendsFrom(baseType: DataType | string | Type | object): boolean; toJSON(options?: ApiDocument.ExportOptions): OpraSchema.ComplexType; protected _locateBase(callback: (base: ComplexTypeBase) => boolean): ComplexTypeBase | undefined; } export {};