json-express
Version:
Parse JSON expression and transform into another forms.
44 lines (43 loc) • 1.59 kB
TypeScript
import TemplateExpression from './template-expression';
import FlatSchemaMatcher, { FlatSchema, FlatSchemaColumn } from './flat-schema-matcher';
interface JsonExpressContext {
[key: string]: any;
}
interface JsonExpressHandler {
name?: string;
exclusive?: boolean;
schema: FlatSchema;
placeholder?(value: object): any;
build(value: any, context?: JsonExpressContext): any | Promise<any>;
}
interface JsonExpressHandlerItem {
handlerName: string;
matcher: FlatSchemaMatcher;
handler: JsonExpressHandler;
typeCheckers: JsonExpressTypeCheckerMap;
}
interface JsonExpressReturnCallback {
(value: any, completed?: boolean, error?: Error): void;
}
interface JsonExpressTypeChecker {
(value: any): void;
}
interface JsonExpressTypeCheckerMap {
[key: string]: JsonExpressTypeChecker;
}
interface JsonExpressTypeCheckerGenerator {
(type: any, schemaColumn?: FlatSchemaColumn): JsonExpressTypeChecker;
}
declare class JsonExpress {
static Template: typeof TemplateExpression;
private handlerItems;
private _typeCheckerGenerator;
constructor(handlers?: JsonExpressHandler[]);
get typeCheckerGenerator(): JsonExpressTypeCheckerGenerator;
set typeCheckerGenerator(gen: JsonExpressTypeCheckerGenerator);
private generateTypeCheckers;
addHandler(handler: JsonExpressHandler): void;
build(expression: any, context?: JsonExpressContext, cb?: JsonExpressReturnCallback): Promise<unknown>;
}
export default JsonExpress;
export { JsonExpressContext, JsonExpressHandler, JsonExpressHandlerItem, JsonExpressTypeChecker };