UNPKG

@opra/common

Version:
84 lines (83 loc) 2.58 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 { RpcControllerDecoratorFactory } from '../decorators/rpc-controller.decorator.js'; import { nodeInspectCustom } from '../utils/inspect.util.js'; import type { RpcApi } from './rpc-api'; import type { RpcHeader } from './rpc-header.js'; import type { RpcOperation } from './rpc-operation'; /** * @namespace RpcController */ export declare namespace RpcController { interface Metadata extends Pick<OpraSchema.RpcController, 'description'> { name: string; types?: ThunkAsync<Type | EnumType.EnumObject | EnumType.EnumArray>[]; operations?: Record<string, RpcOperation.Metadata>; headers?: RpcHeader.Metadata[]; } interface Options extends Partial<Pick<OpraSchema.RpcController, 'description'>> { name?: string; } interface InitArguments extends Combine<{ instance?: object; ctor?: Type; }, Pick<Metadata, 'name' | 'description'>> { } } /** * Type definition for RpcController * @class RpcController */ export interface RpcControllerStatic extends RpcControllerDecoratorFactory { /** * Class constructor of RpcController * @param owner * @param args */ new (owner: RpcApi | RpcController, args: RpcController.InitArguments): RpcController; prototype: RpcController; } /** * Type definition of RpcController prototype * @interface RpcController */ export interface RpcController extends RpcControllerClass { } /** * RpcController */ export declare const RpcController: RpcControllerStatic; /** * * @class RpcController */ declare class RpcControllerClass extends DocumentElement { protected _controllerReverseMap: WeakMap<Type, RpcController | null>; readonly kind: OpraSchema.RpcController.Kind; readonly name: string; description?: string; path: string; instance?: any; ctor?: Type; headers: RpcHeader[]; operations: ResponsiveMap<RpcOperation>; types: DataTypeMap; findHeader(paramName: string, location?: OpraSchema.HttpParameterLocation): RpcHeader | undefined; /** * */ toString(): string; /** * */ toJSON(): OpraSchema.RpcController; /** * */ protected [nodeInspectCustom](): string; } export {};