import { JsonPath } from '@p-lc/shared'; import { Uidl } from '@p-lc/uidl'; import { ElementOfUidl, EntityDetailTypeElement, EntityDetailTypeExpression, ExpressionOfUidl } from '../types'; /** * UIDL 工具集配置,需要提供 UIDL 扩展内容的处理方式 */ export interface UidlUtilsConfig { /** * UIDL 生成器,字段名 -> 生成器 */ uidlGenerators: Record | undefined>; /** * 元素生成器,字段名 -> 生成器 */ elementGenerators: Record | undefined>; /** * 表达式生成器,表达式类型 -> 生成器 */ expressionGenerators: Record | undefined>; /** * UIDL 逻辑获取器,字段名 -> 获取器 */ uidlLogicGetters: Record | undefined>; /** * 元素逻辑获取器,字段名 -> 获取器 */ elementLogicGetters: Record | undefined>; /** * 表达式逻辑获取器,字段名 -> 获取器 */ expressionLogicGetters: Record | undefined>; /** * UIDL 逻辑设置器,字段名 -> 设置器 */ uidlLogicSetters: Record | undefined>; /** * 元素逻辑设置器,字段名 -> 设置器 */ elementLogicSetters: Record | undefined>; /** * 表达式逻辑设置器,字段名 -> 设置器 */ expressionLogicSetters: Record | undefined>; /** * UIDL 压缩器,字段名 -> 压缩器 */ uidlMinifiers: Record | undefined>; /** * 元素 压缩器,字段名 -> 压缩器 */ elementMinifiers: Record | undefined>; /** * 表达式压缩器,字段名 -> 压缩器 */ expressionMinifiers: Record | undefined>; } /** * UIDL 生成器,生成所有直接子实体 */ export interface UidlGenerator { /** * UIDL 生成器,生成所有直接子实体 * @param uidl UIDL */ (uidl: U): Generator, void, unknown>; } /** * 元素生成器,生成所有直接子实体 */ export interface ElementGenerator { /** * 元素生成器,生成所有直接子实体 * @param element 元素 */ (element: ElementOfUidl): Generator, void, unknown>; } /** * 表达式生成器,生成所有直接子实体 */ export interface ExpressionGenerator { /** * 表达式生成器,生成所有直接子实体 * @param expression 表达式 */ (expression: ExpressionOfUidl): Generator, void, unknown>; } /** * 子实体详情 */ export type ChildEntityDetail = ChildElementDetail | ChildExpressionDetail; /** * 子实体详情基础部分 */ export interface ChildEntityDetailBase { /** * JSON 路径 */ jsonPath: JsonPath; /** * 逻辑路径 */ logicPath: JsonPath; } /** * 子元素详情 */ export interface ChildElementDetail extends ChildEntityDetailBase { /** * 类型 */ type: EntityDetailTypeElement; /** * 元素 */ element: ElementOfUidl; } /** * 子表达式详情 */ export interface ChildExpressionDetail extends ChildEntityDetailBase { /** * 类型 */ type: EntityDetailTypeExpression; /** * 表达式 */ expression: ExpressionOfUidl; } /** * UIDL 逻辑获取器 */ export interface UidlLogicGetter { /** * UIDL 逻辑获取器 * @param uidl UIDL * @param logicPath 逻辑路径,长度大于 0 * @param helper 助手 */ (uidl: U, logicPath: JsonPath, helper: LogicGetterHelper): GetterEntityDetail; } /** * 元素逻辑获取器 */ export interface ElementLogicGetter { /** * 元素逻辑获取器 * @param element 元素 * @param logicPath 逻辑路径,长度大于 0 * @param helper 助手 */ (element: ElementOfUidl, logicPath: JsonPath, helper: LogicGetterHelper): GetterEntityDetail; } /** * 表达式逻辑获取器 */ export interface ExpressionLogicGetter { /** * 表达式逻辑获取器 * @param expression 表达式 * @param logicPath 逻辑路径,长度大于 0 * @param helper 助手 */ (expression: ExpressionOfUidl, logicPath: JsonPath, helper: LogicGetterHelper): GetterEntityDetail; } /** * 逻辑获取器助手 */ export interface LogicGetterHelper { /** * 在元素中获取 * @param element 元素 * @param logicPath 逻辑路径,长度可以为 0 */ getInElement(element: ElementOfUidl, logicPath: JsonPath): GetterEntityDetail; /** * 在表达式中获取 * @param expression 表达式 * @param logicPath 逻辑路径,长度可以为 0 */ getInExpression(expression: ExpressionOfUidl, logicPath: JsonPath): GetterEntityDetail; } /** * 获取器实体详情,`undefined` 表示实体不存在 */ export type GetterEntityDetail = undefined | Omit, 'logicPath'> | (Omit, 'logicPath'> & { /** * 是表达式的一部分,比如静态表达式里的某个字段,默认:false */ isPart?: boolean; }); /** * UIDL 逻辑设置器 */ export interface UidlLogicSetter { /** * UIDL 逻辑获取器 * @param uidl UIDL * @param logicPath 逻辑路径,长度大于 0 * @param entity 实体 * @param helper 助手 */ (uidl: U, logicPath: JsonPath, entity: SetterEntityDetail, helper: LogicSetterHelper): U; } /** * 元素逻辑设置器 */ export interface ElementLogicSetter { /** * 元素逻辑获取器 * @param element 元素 * @param logicPath 逻辑路径,长度大于 0 * @param entity 实体 * @param helper 助手 */ (element: ElementOfUidl, logicPath: JsonPath, entity: SetterEntityDetail, helper: LogicSetterHelper): ElementOfUidl | undefined; } /** * 表达式逻辑设置器 */ export interface ExpressionLogicSetter { /** * 表达式逻辑获取器 * @param expression 表达式 * @param logicPath 逻辑路径,长度大于 0 * @param entity 实体 * @param helper 助手 */ (expression: ExpressionOfUidl, logicPath: JsonPath, entity: SetterEntityDetail, helper: LogicSetterHelper): ExpressionOfUidl | undefined; } /** * 逻辑设置器助手 */ export interface LogicSetterHelper { /** * 在元素中设置 * @param element 元素 * @param logicPath 逻辑路径,长度可以为 0 * @param entity 实体 */ setInElement(element: ElementOfUidl, logicPath: JsonPath, entity: SetterEntityDetail): ElementOfUidl | undefined; /** * 在表达式中设置 * @param expression 表达式 * @param logicPath 逻辑路径,长度可以为 0 * @param entity 实体 */ setInExpression(expression: ExpressionOfUidl, logicPath: JsonPath, entity: SetterEntityDetail): ExpressionOfUidl | undefined; } /** * 设置器实体详情,`undefined` 表示删除 */ export type SetterEntityDetail = undefined | Omit, 'logicPath' | 'jsonPath'> | Omit, 'logicPath' | 'jsonPath'>; /** * UIDL 压缩器 */ export interface UidlMinifier { /** * UIDL 压缩器 * @param uidl UIDL * @param helper 助手 */ (uidl: U, helper: MinifierHelper): U; } /** * 元素压缩器 */ export interface ElementMinifier { /** * 元素压缩器 * @param element 元素 * @param helper 助手 */ (element: ElementOfUidl, helper: MinifierHelper): ElementOfUidl; } /** * 表达式压缩器 */ export interface ExpressionMinifier { /** * 表达式压缩器 * @param expression 表达式 * @param helper 助手 */ (expression: ExpressionOfUidl, helper: MinifierHelper): ExpressionOfUidl; } /** * 压缩器助手 */ export interface MinifierHelper { /** * 压缩元素 * @param element 元素 */ minifyElement(element: ElementOfUidl): ElementOfUidl; /** * 压缩表达式 * @param expression 表达式 */ minifyExpression(expression: ExpressionOfUidl): ExpressionOfUidl; } //# sourceMappingURL=types.d.ts.map