UNPKG

@opra/common

Version:
79 lines (78 loc) 2.32 kB
import type { Combine, ThunkAsync, Type } from 'ts-gems'; import { ResponsiveMap } from '../../helpers/index.js'; import { OpraSchema } from '../../schema/index.js'; import { DataTypeMap } from '../common/data-type-map.js'; import { DocumentElement } from '../common/document-element.js'; import type { EnumType } from '../data-type/enum-type.js'; import { WSControllerDecoratorFactory } from '../decorators/ws-controller.decorator.js'; import { nodeInspectCustom } from '../utils/inspect.util.js'; import type { WSApi } from './ws-api.js'; import type { WSOperation } from './ws-operation.js'; /** * @namespace WSController */ export declare namespace WSController { interface Metadata extends Pick<OpraSchema.WSController, 'description'> { name: string; types?: ThunkAsync<Type | EnumType.EnumObject | EnumType.EnumArray>[]; operations?: Record<string, WSOperation.Metadata>; } interface Options extends Partial<Pick<OpraSchema.WSController, 'description'>> { name?: string; } interface InitArguments extends Combine<{ instance?: object; ctor?: Type; }, Pick<Metadata, 'name' | 'description'>> { } } /** * Type definition for WSController * @class WSController */ export interface WSControllerStatic extends WSControllerDecoratorFactory { /** * Class constructor of WSController * @param owner * @param args */ new (owner: WSApi | WSController, args: WSController.InitArguments): WSController; prototype: WSController; } /** * Type definition of WSController prototype * @interface WSController */ export interface WSController extends WSControllerClass { } /** * WSController */ export declare const WSController: WSControllerStatic; /** * * @class WSController */ declare class WSControllerClass extends DocumentElement { protected _controllerReverseMap: WeakMap<Type, WSController | null>; readonly kind: OpraSchema.WSController.Kind; readonly name: string; description?: string; instance?: any; ctor?: Type; operations: ResponsiveMap<WSOperation>; types: DataTypeMap; /** * */ toString(): string; /** * */ toJSON(): OpraSchema.WSController; /** * */ protected [nodeInspectCustom](): string; } export {};