UNPKG

@jsonjoy.com/json-type

Version:

High-performance JSON Pointer implementation

38 lines (37 loc) 2.18 kB
import * as schema from '../../schema'; import { AbstractType } from './AbstractType'; import type { SchemaOf, Type } from '../types'; import type * as ts from '../../typescript/types'; import type { ResolveType } from '../../system'; import type { Observable } from 'rxjs'; type FunctionImpl<Req extends Type, Res extends Type, Ctx = unknown> = (req: ResolveType<Req>, ctx: Ctx) => Promise<ResolveType<Res>>; export declare class FunctionType<Req extends Type, Res extends Type> extends AbstractType<schema.FunctionSchema<SchemaOf<Req>, SchemaOf<Res>>> { readonly req: Req; readonly res: Res; protected schema: schema.FunctionSchema<SchemaOf<Req>, SchemaOf<Res>>; fn: schema.FunctionValue<schema.TypeOf<SchemaOf<Req>>, schema.TypeOf<SchemaOf<Res>>>; constructor(req: Req, res: Res, options?: schema.Optional<schema.FunctionSchema<SchemaOf<Req>, SchemaOf<Res>>>); getSchema(): schema.FunctionSchema<SchemaOf<Req>, SchemaOf<Res>>; validateSchema(): void; random(): unknown; singleton?: FunctionImpl<Req, Res, any>; implement<Ctx = unknown>(singleton: FunctionImpl<Req, Res, Ctx>): this; toTypeScriptAst(): ts.TsFunctionType; toString(tab?: string): string; } type FunctionStreamingImpl<Req extends Type, Res extends Type, Ctx = unknown> = (req: Observable<ResolveType<Req>>, ctx: Ctx) => Observable<ResolveType<Res>>; export declare class FunctionStreamingType<Req extends Type, Res extends Type> extends AbstractType<schema.FunctionStreamingSchema<SchemaOf<Req>, SchemaOf<Res>>> { readonly req: Req; readonly res: Res; readonly isStreaming = true; protected schema: schema.FunctionStreamingSchema<SchemaOf<Req>, SchemaOf<Res>>; constructor(req: Req, res: Res, options?: schema.Optional<schema.FunctionStreamingSchema<SchemaOf<Req>, SchemaOf<Res>>>); getSchema(): schema.FunctionStreamingSchema<SchemaOf<Req>, SchemaOf<Res>>; validateSchema(): void; random(): unknown; singleton?: FunctionStreamingImpl<Req, Res, any>; implement<Ctx = unknown>(singleton: FunctionStreamingImpl<Req, Res, Ctx>): this; toTypeScriptAst(): ts.TsFunctionType; toString(tab?: string): string; } export {};