@jsonjoy.com/json-type
Version:
High-performance JSON Pointer implementation
38 lines (37 loc) • 2.18 kB
TypeScript
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 {};