import { KVObject } from "./define"; export interface SchemaOptions { /** * 字段定义,格式为 { name: info } * info 格式为: true表示任意类型,或者提供编码解码器: { input, output } ,或者提供 'type' 生成默认的编码解码器 */ fields: SchemaFields; } export interface SchemaFields { [key: string]: boolean | string | SchemaField; } export interface SchemaField { /** * 格式化输入的函数 * @param data 数据 */ input?: (data: any) => any; /** * 格式化输出的函数 * @param data 数据 */ output?: (data: any) => any; /** * 序列化的函数 * @param data 数据 */ encode?: (data: any) => any; /** * 反序列化的函数 * @param data 数据 */ decode?: (data: any) => any; /** * 类型 */ type?: string; } export declare class Schema { private _fields; /** * 创建 Schema */ constructor(options: SchemaOptions); /** * 格式化输入数据 * @param data 输入的键值对数据 */ formatInput(data: KVObject): KVObject; /** * 格式化输入数据数组 * @param list 输入的键值对数据数组 */ formatInputList(list: KVObject[]): KVObject[]; /** * 格式化输出数据 * @param data 输入的键值对数据 */ formatOutput(data: KVObject): KVObject; /** * 格式化输出数据数组 * @param list 输入的键值对数据数组 */ formatOutputList(list: KVObject[]): KVObject[]; /** * 序列化 * @param data 要序列化的键值对数据 */ serialize(data: KVObject): string; /** * 反序列化 * @param data 要反序列化的数据 */ unserialize(data: string): KVObject; }