UNPKG

@chord-ts/rpc

Version:

💎 Cutting edge transport framework vanishing borders between frontend and backend

68 lines • 2.07 kB
import type { Composer } from '.'; import type { ValidateAdapter } from 'src/validators/types'; import * as JSONRPC from '../specs/JSONRPC_V2/types'; export interface MethodDescription { key: PropKey; descriptor: PropertyDescriptor; target: Target; validators: Validators; argNames: string[]; metadata: MethodMetadata; use: Middleware<Event, Context, {}>[]; } export interface PartialMethodDescription { key: PropKey; descriptor?: PropertyDescriptor; target: Target; validators?: Validators; argNames?: string[]; metadata?: MethodMetadata; use?: Middleware<Event, Context, {}>[]; } export interface Validators { in?: { [k: number]: unknown; }; out?: unknown; } export interface MethodConfig extends Validators { use?: Middleware<Event, Context, {}> | Middleware<Event, Context, {}>[]; } export interface PropertyDescription { key: PropKey; target: Target; } export interface MethodMetadata { returnType?: string; argsType?: string[]; } export interface Schema { route: string; methods: Record<string, MethodMetadata>; models: string[]; } export interface ComposerConfig { route?: string; onError?: ErrorCallback; validator?: ValidateAdapter; } export interface Target { constructor: { name: string; }; } export type PropKey = string | symbol; export type ClassConstructor<T extends object> = new (...params: unknown[]) => T; export type Middleware<Event, Ctx, Extension> = (event: Event, ctx: Ctx, next: CallableFunction) => Promise<(Ctx & Extension) | void>; export type Composed<T extends { [s: string]: object; }> = Composer<T> & T & Record<keyof T, InstanceType<T[keyof T]>>; export type Event = { request: Request; [key: string]: unknown; } | Request; export type Context = { body: JSONRPC.Request<JSONRPC.Parameters>; } & Record<string, unknown>; export type ModifiedContext<T> = T extends (infer Mw extends (...args: unknown[]) => unknown)[] ? Awaited<ReturnType<Mw>> : T; //# sourceMappingURL=types.d.ts.map