UNPKG

amis-formula

Version:

负责 amis 里面的表达式实现,内置公式,编辑器等

282 lines (281 loc) 8.82 kB
export declare function runSequence<T, U>(arr: Array<T>, fn: (item: T, index: number) => Promise<U>): Promise<U[]>; declare const AsyncEvaluator_base: any; export declare class AsyncEvaluator extends AsyncEvaluator_base { constructor(data: any, options?: any); document(ast: { type: 'document'; body: Array<any>; }): Promise<any>; filter(ast: { type: 'filter'; input: any; filters: Array<{ name: string; args: Array<any>; }>; }): Promise<any>; template(ast: { type: 'template'; body: Array<any>; }): Promise<string>; getter(ast: { host: any; key: any; }): Promise<any>; unary(ast: { op: '+' | '-' | '~' | '!'; value: any; }): Promise<number | boolean>; power(ast: { left: any; right: any; }): Promise<number>; multiply(ast: { left: any; right: any; }): Promise<number>; divide(ast: { left: any; right: any; }): Promise<number>; remainder(ast: { left: any; right: any; }): Promise<number>; add(ast: { left: any; right: any; }): Promise<any>; minus(ast: { left: any; right: any; }): Promise<number>; shift(ast: { op: '<<' | '>>' | '>>>'; left: any; right: any; }): Promise<number>; lt(ast: { left: any; right: any; }): Promise<boolean>; gt(ast: { left: any; right: any; }): Promise<boolean>; le(ast: { left: any; right: any; }): Promise<boolean>; ge(ast: { left: any; right: any; }): Promise<boolean>; eq(ast: { left: any; right: any; }): Promise<boolean>; ne(ast: { left: any; right: any; }): Promise<boolean>; streq(ast: { left: any; right: any; }): Promise<boolean>; strneq(ast: { left: any; right: any; }): Promise<boolean>; binary(ast: { op: '&' | '^' | '|'; left: any; right: any; }): Promise<number>; and(ast: { left: any; right: any; }): Promise<any>; or(ast: { left: any; right: any; }): Promise<any>; array(ast: { type: 'array'; members: Array<any>; }): Promise<unknown[]>; object(ast: { members: Array<{ key: string; value: any; }>; }): Promise<any>; conditional(ast: { type: 'conditional'; test: any; consequent: any; alternate: any; }): Promise<any>; funcCall(this: any, ast: { identifier: string; args: Array<any>; }): Promise<any>; callAnonymousFunction(ast: { args: any[]; return: any; }, args: Array<any>): Promise<any>; /** * 示例:IF(A, B, C) * * 如果满足条件A,则返回B,否则返回C,支持多层嵌套IF函数。 * * 也可以用表达式如:A ? B : C * * @example IF(condition, consequent, alternate) * @param {expression} condition - 条件表达式. * @param {any} consequent 条件判断通过的返回结果 * @param {any} alternate 条件判断不通过的返回结果 * @namespace 逻辑函数 * * @returns {any} 根据条件返回不同的结果 */ fnIF(condition: () => any, trueValue: () => any, falseValue: () => any): Promise<any>; /** * 条件全部符合,返回 true,否则返回 false * * 示例:AND(语文成绩>80, 数学成绩>80) * * 语文成绩和数学成绩都大于 80,则返回 true,否则返回 false * * 也可以直接用表达式如:语文成绩>80 && 数学成绩>80 * * @example AND(expression1, expression2, ...expressionN) * @param {...expression} conditions - 条件表达式. * @namespace 逻辑函数 * * @returns {boolean} */ fnAND(...condtions: Array<() => any>): Promise<any>; /** * 条件任意一个满足条件,返回 true,否则返回 false * * 示例:OR(语文成绩>80, 数学成绩>80) * * 语文成绩和数学成绩任意一个大于 80,则返回 true,否则返回 false * * 也可以直接用表达式如:语文成绩>80 || 数学成绩>80 * * @example OR(expression1, expression2, ...expressionN) * @param {...expression} conditions - 条件表达式. * @namespace 逻辑函数 * * @returns {boolean} */ fnOR(...condtions: Array<() => any>): Promise<any>; /** * 异或处理,多个表达式组中存在奇数个真时认为真。 * * @example XOR(condition1, condition2) * @param {expression} condition1 - 条件表达式1 * @param {expression} condition2 - 条件表达式2 * @namespace 逻辑函数 * * @returns {boolean} */ fnXOR(...condtions: Array<() => any>): Promise<boolean>; /** * 判断函数集合,相当于多个 else if 合并成一个。 * * 示例:IFS(语文成绩 > 80, "优秀", 语文成绩 > 60, "良", "继续努力") * * 如果语文成绩大于 80,则返回优秀,否则判断大于 60 分,则返回良,否则返回继续努力。 * * @example IFS(condition1, result1, condition2, result2,...conditionN, resultN) * @param {...any} args - 条件,返回值集合 * @namespace 逻辑函数 * @returns {any} 第一个满足条件的结果,没有命中的返回 false。 */ fnIFS(...args: Array<() => any>): Promise<any>; /** * 数组做数据转换,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYMAP(arr, item => item) * @returns {boolean} 结果 */ fnARRAYMAP(value: any, iterator: any): any; /** * 数据做数据过滤,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * 将第二个箭头函数返回为 false 的成员过滤掉。 * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYFILTER(arr, item => item) * @returns {boolean} 结果 */ fnARRAYFILTER(value: any, iterator: any): Promise<any>; /** * 数据做数据查找,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * 找出第二个箭头函数返回为 true 的成员的索引。 * * 示例: * * ARRAYFINDINDEX([0, 2, false], item => item === 2) 得到 1 * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYFINDINDEX(arr, item => item === 2) * @returns {number} 结果 */ fnARRAYFINDINDEX(arr: any[], iterator: any): Promise<number>; /** * 数据做数据查找,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * 找出第二个箭头函数返回为 true 的成员。 * * 示例: * * ARRAYFIND([0, 2, false], item => item === 2) 得到 2 * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYFIND(arr, item => item === 2) * @returns {any} 结果 */ fnARRAYFIND(arr: any[], iterator: any): Promise<any>; /** * 数据做数据遍历判断,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * 判断第二个箭头函数是否存在返回为 true 的成员。 * * 示例: * * ARRAYSOME([0, 2, false], item => item === 2) 得到 true * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYSOME(arr, item => item === 2) * @returns {boolean} 结果 */ fnARRAYSOME(arr: any[], iterator: any): Promise<any>; /** * 数据做数据遍历判断,需要搭配箭头函数一起使用,注意箭头函数只支持单表达式用法。 * 判断第二个箭头函数返回是否都为 true。 * * 示例: * * ARRAYEVERY([0, 2, false], item => item === 2) 得到 false * * @param {Array<any>} arr 数组 * @param {Function<any>} iterator 箭头函数 * @namespace 数组 * @example ARRAYEVERY(arr, item => item === 2) * @returns {boolean} 结果 */ fnARRAYEVERY(arr: any[], iterator: any): Promise<any>; } export {};