@opra/common
Version:
Opra common package
95 lines (94 loc) • 3.43 kB
TypeScript
import 'reflect-metadata';
import type { Class, Combine, Type } 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 type { ComplexType } from './complex-type.js';
import { ComplexTypeBase } from './complex-type-base.js';
import { DataType } from './data-type.js';
import type { MappedType } from './mapped-type.js';
/**
* @namespace MixinType
*/
export declare namespace MixinType {
interface Metadata extends Combine<{
kind: OpraSchema.MixinType.Kind;
name?: string;
types: Type[];
}, DataType.Metadata, Pick<ComplexType.Metadata, 'additionalFields'>, OpraSchema.MixinType> {
}
interface InitArguments extends Combine<{
kind: OpraSchema.MixinType.Kind;
types: (ComplexType | MappedType | MixinType)[];
ctor?: Type;
}, DataType.InitArguments, MixinType.Metadata> {
}
}
/**
* Type definition for MixinType
* @class MixinType
*/
export interface MixinTypeStatic {
/**
* Class constructor of MixinType
*
* @param owner
* @param args
* @constructor
*/
new (owner: DocumentElement, args: MixinType.InitArguments): MixinType;
/**
* Create a new mixin type from given two types
* @param types
* @param options
*/ <A1 extends any[], I1, S1, A2 extends any[], I2, S2>(types: [Class<A1, I1, S1>, Class<A2, I2, S2>], options?: DataType.Options): Class<any[], I1 & I2, S1 & S2>;
/**
* Helper method that mixes given types
* @param types
* @param options
*/ <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3>(types: [Class<A1, I1, S1>, Class<A2, I2, S2>, Class<A3, I3, S3>], options?: DataType.Options): Class<any[], I1 & I2 & I3, S1 & S2 & S3>;
/**
* Helper method that mixes given types
* @param types
* @param options
*/ <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3, A4 extends any[], I4, S4>(types: [
Class<A1, I1, S1>,
Class<A2, I2, S2>,
Class<A3, I3, S3>,
Class<A4, I4, S4>
], options?: DataType.Options): Class<any[], I1 & I2 & I3 & I4, S1 & S2 & S3 & S4>;
/**
* Helper method that mixes given types
* @param types
* @param options
*/ <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3, A4 extends any[], I4, S4, A5 extends any[], I5, S5>(types: [
Class<A1, I1, S1>,
Class<A2, I2, S2>,
Class<A3, I3, S3>,
Class<A4, I4, S4>,
Class<A5, I5, S5>
], options?: DataType.Options): Class<any[], I1 & I2 & I3 & I4 & I5, S1 & S2 & S3 & S4 & S5>;
prototype: MixinType;
}
/**
* Type definition of MixinType prototype
* @interface
*/
export interface MixinType extends MixinTypeClass {
}
/**
* @class MixinType
*/
export declare const MixinType: MixinTypeStatic;
/**
*
* @class MixinType
*/
declare class MixinTypeClass extends ComplexTypeBase {
readonly kind: OpraSchema.MixinType.Kind;
readonly types: (ComplexType | MixinType | MappedType)[];
extendsFrom(baseType: DataType | string | Type | object): boolean;
toJSON(options?: ApiDocument.ExportOptions): OpraSchema.MixinType;
protected _locateBase(callback: (base: ComplexTypeBase) => boolean): ComplexTypeBase | undefined;
}
export {};