amis-formula 6.7.0 → 6.9.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/doc.d.ts +1 -15
- package/esm/doc.js +5 -5
- package/esm/error.js +1 -1
- package/esm/evalutor.d.ts +2 -2
- package/esm/evalutor.js +6 -3
- package/esm/evalutorForAsync.js +1 -1
- package/esm/filter.js +3 -3
- package/esm/function.d.ts +26 -4
- package/esm/function.js +19 -5
- package/esm/index.d.ts +7 -2
- package/esm/index.js +24 -5
- package/esm/lexer.js +1 -1
- package/esm/parser.js +1 -1
- package/esm/types.d.ts +2 -1
- package/lib/doc.d.ts +1 -15
- package/lib/doc.js +4 -6
- package/lib/error.js +1 -1
- package/lib/evalutor.d.ts +2 -2
- package/lib/evalutor.js +6 -3
- package/lib/evalutorForAsync.js +1 -1
- package/lib/filter.js +3 -3
- package/lib/function.d.ts +26 -4
- package/lib/function.js +20 -5
- package/lib/index.d.ts +7 -2
- package/lib/index.js +22 -3
- package/lib/lexer.js +1 -1
- package/lib/parser.js +1 -1
- package/lib/types.d.ts +2 -1
- package/package.json +1 -1
package/esm/doc.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 公式文档 请运行 `npm run genDoc` 自动生成
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
example: string;
|
|
8
|
-
params: {
|
|
9
|
-
type: string;
|
|
10
|
-
name: string;
|
|
11
|
-
description: string | null;
|
|
12
|
-
}[];
|
|
13
|
-
returns: {
|
|
14
|
-
type: string;
|
|
15
|
-
description: string | null;
|
|
16
|
-
};
|
|
17
|
-
namespace: string;
|
|
18
|
-
}[];
|
|
4
|
+
export {};
|
package/esm/doc.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { bulkRegisterFunctionDoc } from './function.js';
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* 公式文档 请运行 `npm run genDoc` 自动生成
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
bulkRegisterFunctionDoc([
|
|
10
12
|
{
|
|
11
13
|
name: "IF",
|
|
12
14
|
description: "如果满足条件condition,则返回consequent,否则返回alternate,支持多层嵌套IF函数。\n\n等价于直接用JS表达式如:condition ? consequent : alternate。",
|
|
@@ -1917,6 +1919,4 @@ var doc = [
|
|
|
1917
1919
|
},
|
|
1918
1920
|
namespace: "其他"
|
|
1919
1921
|
}
|
|
1920
|
-
];
|
|
1921
|
-
|
|
1922
|
-
export { doc };
|
|
1922
|
+
]);
|
package/esm/error.js
CHANGED
package/esm/evalutor.d.ts
CHANGED
|
@@ -11,9 +11,9 @@ export declare class Evaluator {
|
|
|
11
11
|
};
|
|
12
12
|
contextStack: Array<(varname: string) => any>;
|
|
13
13
|
static defaultFilters: FilterMap;
|
|
14
|
-
static
|
|
14
|
+
static extendDefaultFilters(filters: FilterMap): void;
|
|
15
15
|
static defaultFunctions: FunctionMap;
|
|
16
|
-
static
|
|
16
|
+
static extendDefaultFunctions(funtions: FunctionMap): void;
|
|
17
17
|
constructor(context: {
|
|
18
18
|
[propName: string]: any;
|
|
19
19
|
}, options?: EvaluatorOptions);
|
package/esm/evalutor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -36,10 +36,10 @@ var Evaluator = /** @class */ (function () {
|
|
|
36
36
|
this.filters = __assign(__assign(__assign({}, Evaluator.defaultFilters), this.filters), options === null || options === void 0 ? void 0 : options.filters);
|
|
37
37
|
this.functions = __assign(__assign(__assign({}, Evaluator.defaultFunctions), this.functions), options === null || options === void 0 ? void 0 : options.functions);
|
|
38
38
|
}
|
|
39
|
-
Evaluator.
|
|
39
|
+
Evaluator.extendDefaultFilters = function (filters) {
|
|
40
40
|
Evaluator.defaultFilters = __assign(__assign({}, Evaluator.defaultFilters), filters);
|
|
41
41
|
};
|
|
42
|
-
Evaluator.
|
|
42
|
+
Evaluator.extendDefaultFunctions = function (funtions) {
|
|
43
43
|
Evaluator.defaultFunctions = __assign(__assign({}, Evaluator.defaultFunctions), funtions);
|
|
44
44
|
};
|
|
45
45
|
// 主入口
|
|
@@ -2232,6 +2232,9 @@ var Evaluator = /** @class */ (function () {
|
|
|
2232
2232
|
Evaluator.defaultFunctions = {};
|
|
2233
2233
|
return Evaluator;
|
|
2234
2234
|
}());
|
|
2235
|
+
// 兼容
|
|
2236
|
+
Evaluator.setDefaultFilters = Evaluator.extendDefaultFilters;
|
|
2237
|
+
Evaluator.setDefaultFunctions = Evaluator.extendDefaultFunctions;
|
|
2235
2238
|
function getCookie(name) {
|
|
2236
2239
|
var value = "; ".concat(document.cookie);
|
|
2237
2240
|
var parts = value.split("; ".concat(name, "="));
|
package/esm/evalutorForAsync.js
CHANGED
package/esm/filter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -33,11 +33,11 @@ var filters = {
|
|
|
33
33
|
};
|
|
34
34
|
function registerFilter(name, fn) {
|
|
35
35
|
filters[name] = fn;
|
|
36
|
-
Evaluator.
|
|
36
|
+
Evaluator.extendDefaultFilters(filters);
|
|
37
37
|
}
|
|
38
38
|
function extendsFilters(value) {
|
|
39
39
|
Object.assign(filters, value);
|
|
40
|
-
Evaluator.
|
|
40
|
+
Evaluator.extendDefaultFilters(filters);
|
|
41
41
|
}
|
|
42
42
|
function getFilters() {
|
|
43
43
|
return filters;
|
package/esm/function.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function registerFunction(name: string, fn: (
|
|
4
|
-
export declare
|
|
1
|
+
import { Evaluator } from './evalutor';
|
|
2
|
+
import { FunctionDocMap, FunctionDocItem } from './types';
|
|
3
|
+
export declare function registerFunction(name: string, fn: (this: Evaluator, ...args: Array<any>) => any): void;
|
|
4
|
+
export declare const functionDocs: FunctionDocMap;
|
|
5
5
|
export declare function registerFunctionDoc(groupName: string, item: FunctionDocItem): void;
|
|
6
|
+
export declare function bulkRegisterFunctionDoc(fnDocs: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
example: string;
|
|
10
|
+
params: {
|
|
11
|
+
type: string;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string | null;
|
|
14
|
+
}[];
|
|
15
|
+
returns: {
|
|
16
|
+
type: string;
|
|
17
|
+
description: string | null;
|
|
18
|
+
};
|
|
19
|
+
namespace: string;
|
|
20
|
+
}[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* 注册公式,并同时注册公式说明
|
|
23
|
+
* @param name
|
|
24
|
+
* @param fn
|
|
25
|
+
* @param fnInfo
|
|
26
|
+
*/
|
|
27
|
+
export declare function registerFormula(name: string, fn: (this: Evaluator, ...args: Array<any>) => any, fnInfo?: FunctionDocItem): void;
|
package/esm/function.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { Evaluator } from './evalutor.js';
|
|
7
7
|
|
|
8
|
-
var functions = {};
|
|
9
8
|
function registerFunction(name, fn) {
|
|
10
|
-
|
|
11
|
-
Evaluator.
|
|
9
|
+
var _a;
|
|
10
|
+
Evaluator.extendDefaultFunctions((_a = {},
|
|
11
|
+
_a["fn".concat(name)] = fn,
|
|
12
|
+
_a));
|
|
12
13
|
}
|
|
13
14
|
var functionDocs = {};
|
|
14
15
|
function registerFunctionDoc(groupName, item) {
|
|
@@ -19,5 +20,18 @@ function registerFunctionDoc(groupName, item) {
|
|
|
19
20
|
functionDocs[groupName] = [item];
|
|
20
21
|
}
|
|
21
22
|
}
|
|
23
|
+
function bulkRegisterFunctionDoc(fnDocs) {
|
|
24
|
+
fnDocs.forEach(function (item) { return registerFunctionDoc(item.namespace || 'Others', item); });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 注册公式,并同时注册公式说明
|
|
28
|
+
* @param name
|
|
29
|
+
* @param fn
|
|
30
|
+
* @param fnInfo
|
|
31
|
+
*/
|
|
32
|
+
function registerFormula(name, fn, fnInfo) {
|
|
33
|
+
registerFunction(name, fn);
|
|
34
|
+
fnInfo && registerFunctionDoc(fnInfo.namespace || 'Others', fnInfo);
|
|
35
|
+
}
|
|
22
36
|
|
|
23
|
-
export { functionDocs,
|
|
37
|
+
export { bulkRegisterFunctionDoc, functionDocs, registerFormula, registerFunction, registerFunctionDoc };
|
package/esm/index.d.ts
CHANGED
|
@@ -3,8 +3,13 @@ import { AsyncEvaluator } from './evalutorForAsync';
|
|
|
3
3
|
import { parse } from './parser';
|
|
4
4
|
import { lexer } from './lexer';
|
|
5
5
|
import { registerFilter, filters, getFilters, extendsFilters } from './filter';
|
|
6
|
-
import { registerFunction, registerFunctionDoc,
|
|
6
|
+
import { registerFunction, registerFunctionDoc, registerFormula } from './function';
|
|
7
7
|
import type { FilterContext, ASTNode, ParserOptions, EvaluatorOptions } from './types';
|
|
8
|
-
export { parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, registerFunction, registerFunctionDoc,
|
|
8
|
+
export { parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, registerFormula, registerFunction, registerFunctionDoc, extendsFilters };
|
|
9
|
+
export * from './types';
|
|
9
10
|
export declare function evaluate(astOrString: string | ASTNode, data: any, options?: ParserOptions & EvaluatorOptions): any;
|
|
10
11
|
export declare function evaluateForAsync(astOrString: string | ASTNode, data: any, options?: ParserOptions & EvaluatorOptions): Promise<any>;
|
|
12
|
+
export declare function getFunctionsDoc(): Promise<{
|
|
13
|
+
groupName: string;
|
|
14
|
+
items: import("./types").FunctionDocItem[];
|
|
15
|
+
}[]>;
|
package/esm/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { __awaiter, __generator } from 'tslib';
|
|
6
|
+
import { __awaiter, __generator, __read } from 'tslib';
|
|
7
7
|
import { Evaluator } from './evalutor.js';
|
|
8
8
|
export { Evaluator } from './evalutor.js';
|
|
9
9
|
import { AsyncEvaluator } from './evalutorForAsync.js';
|
|
@@ -13,7 +13,8 @@ export { parse } from './parser.js';
|
|
|
13
13
|
export { lexer } from './lexer.js';
|
|
14
14
|
import { getFilters } from './filter.js';
|
|
15
15
|
export { extendsFilters, filters, getFilters, registerFilter } from './filter.js';
|
|
16
|
-
|
|
16
|
+
import { functionDocs } from './function.js';
|
|
17
|
+
export { registerFormula, registerFunction, registerFunctionDoc } from './function.js';
|
|
17
18
|
|
|
18
19
|
function evaluate(astOrString, data, options) {
|
|
19
20
|
var ast = astOrString;
|
|
@@ -34,7 +35,25 @@ function evaluateForAsync(astOrString, data, options) {
|
|
|
34
35
|
});
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
|
-
Evaluator.
|
|
38
|
+
Evaluator.extendDefaultFilters(getFilters());
|
|
38
39
|
AsyncEvaluator.setDefaultFilters(getFilters());
|
|
40
|
+
function getFunctionsDoc() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
+
return __generator(this, function (_a) {
|
|
43
|
+
switch (_a.label) {
|
|
44
|
+
case 0: return [4 /*yield*/, import('./doc.js')];
|
|
45
|
+
case 1:
|
|
46
|
+
_a.sent();
|
|
47
|
+
return [2 /*return*/, Object.entries(functionDocs).map(function (_a) {
|
|
48
|
+
var _b = __read(_a, 2), k = _b[0], items = _b[1];
|
|
49
|
+
return ({
|
|
50
|
+
groupName: k,
|
|
51
|
+
items: items
|
|
52
|
+
});
|
|
53
|
+
})];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
39
58
|
|
|
40
|
-
export { evaluate, evaluateForAsync };
|
|
59
|
+
export { evaluate, evaluateForAsync, getFunctionsDoc };
|
package/esm/lexer.js
CHANGED
package/esm/parser.js
CHANGED
package/esm/types.d.ts
CHANGED
|
@@ -3,12 +3,13 @@ export interface FilterMap {
|
|
|
3
3
|
[propName: string]: (this: FilterContext, input: any, ...args: any[]) => any;
|
|
4
4
|
}
|
|
5
5
|
export interface FunctionMap {
|
|
6
|
-
[propName: string]: (this: Evaluator,
|
|
6
|
+
[propName: string]: (this: Evaluator, ...args: Array<any>) => any;
|
|
7
7
|
}
|
|
8
8
|
export interface FunctionDocItem {
|
|
9
9
|
name: string;
|
|
10
10
|
example?: string;
|
|
11
11
|
description?: string;
|
|
12
|
+
namespace?: string;
|
|
12
13
|
[propName: string]: any;
|
|
13
14
|
}
|
|
14
15
|
export interface FunctionDocMap {
|
package/lib/doc.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 公式文档 请运行 `npm run genDoc` 自动生成
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
example: string;
|
|
8
|
-
params: {
|
|
9
|
-
type: string;
|
|
10
|
-
name: string;
|
|
11
|
-
description: string | null;
|
|
12
|
-
}[];
|
|
13
|
-
returns: {
|
|
14
|
-
type: string;
|
|
15
|
-
description: string | null;
|
|
16
|
-
};
|
|
17
|
-
namespace: string;
|
|
18
|
-
}[];
|
|
4
|
+
export {};
|
package/lib/doc.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
var _function = require('./function.js');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* 公式文档 请运行 `npm run genDoc` 自动生成
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
_function.bulkRegisterFunctionDoc([
|
|
14
14
|
{
|
|
15
15
|
name: "IF",
|
|
16
16
|
description: "如果满足条件condition,则返回consequent,否则返回alternate,支持多层嵌套IF函数。\n\n等价于直接用JS表达式如:condition ? consequent : alternate。",
|
|
@@ -1921,6 +1921,4 @@ var doc = [
|
|
|
1921
1921
|
},
|
|
1922
1922
|
namespace: "其他"
|
|
1923
1923
|
}
|
|
1924
|
-
];
|
|
1925
|
-
|
|
1926
|
-
exports.doc = doc;
|
|
1924
|
+
]);
|
package/lib/error.js
CHANGED
package/lib/evalutor.d.ts
CHANGED
|
@@ -11,9 +11,9 @@ export declare class Evaluator {
|
|
|
11
11
|
};
|
|
12
12
|
contextStack: Array<(varname: string) => any>;
|
|
13
13
|
static defaultFilters: FilterMap;
|
|
14
|
-
static
|
|
14
|
+
static extendDefaultFilters(filters: FilterMap): void;
|
|
15
15
|
static defaultFunctions: FunctionMap;
|
|
16
|
-
static
|
|
16
|
+
static extendDefaultFunctions(funtions: FunctionMap): void;
|
|
17
17
|
constructor(context: {
|
|
18
18
|
[propName: string]: any;
|
|
19
19
|
}, options?: EvaluatorOptions);
|
package/lib/evalutor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -55,10 +55,10 @@ var Evaluator = /** @class */ (function () {
|
|
|
55
55
|
this.filters = tslib.__assign(tslib.__assign(tslib.__assign({}, Evaluator.defaultFilters), this.filters), options === null || options === void 0 ? void 0 : options.filters);
|
|
56
56
|
this.functions = tslib.__assign(tslib.__assign(tslib.__assign({}, Evaluator.defaultFunctions), this.functions), options === null || options === void 0 ? void 0 : options.functions);
|
|
57
57
|
}
|
|
58
|
-
Evaluator.
|
|
58
|
+
Evaluator.extendDefaultFilters = function (filters) {
|
|
59
59
|
Evaluator.defaultFilters = tslib.__assign(tslib.__assign({}, Evaluator.defaultFilters), filters);
|
|
60
60
|
};
|
|
61
|
-
Evaluator.
|
|
61
|
+
Evaluator.extendDefaultFunctions = function (funtions) {
|
|
62
62
|
Evaluator.defaultFunctions = tslib.__assign(tslib.__assign({}, Evaluator.defaultFunctions), funtions);
|
|
63
63
|
};
|
|
64
64
|
// 主入口
|
|
@@ -2251,6 +2251,9 @@ var Evaluator = /** @class */ (function () {
|
|
|
2251
2251
|
Evaluator.defaultFunctions = {};
|
|
2252
2252
|
return Evaluator;
|
|
2253
2253
|
}());
|
|
2254
|
+
// 兼容
|
|
2255
|
+
Evaluator.setDefaultFilters = Evaluator.extendDefaultFilters;
|
|
2256
|
+
Evaluator.setDefaultFunctions = Evaluator.extendDefaultFunctions;
|
|
2254
2257
|
function getCookie(name) {
|
|
2255
2258
|
var value = "; ".concat(document.cookie);
|
|
2256
2259
|
var parts = value.split("; ".concat(name, "="));
|
package/lib/evalutorForAsync.js
CHANGED
package/lib/filter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -37,11 +37,11 @@ var filters = {
|
|
|
37
37
|
};
|
|
38
38
|
function registerFilter(name, fn) {
|
|
39
39
|
filters[name] = fn;
|
|
40
|
-
evalutor.Evaluator.
|
|
40
|
+
evalutor.Evaluator.extendDefaultFilters(filters);
|
|
41
41
|
}
|
|
42
42
|
function extendsFilters(value) {
|
|
43
43
|
Object.assign(filters, value);
|
|
44
|
-
evalutor.Evaluator.
|
|
44
|
+
evalutor.Evaluator.extendDefaultFilters(filters);
|
|
45
45
|
}
|
|
46
46
|
function getFilters() {
|
|
47
47
|
return filters;
|
package/lib/function.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function registerFunction(name: string, fn: (
|
|
4
|
-
export declare
|
|
1
|
+
import { Evaluator } from './evalutor';
|
|
2
|
+
import { FunctionDocMap, FunctionDocItem } from './types';
|
|
3
|
+
export declare function registerFunction(name: string, fn: (this: Evaluator, ...args: Array<any>) => any): void;
|
|
4
|
+
export declare const functionDocs: FunctionDocMap;
|
|
5
5
|
export declare function registerFunctionDoc(groupName: string, item: FunctionDocItem): void;
|
|
6
|
+
export declare function bulkRegisterFunctionDoc(fnDocs: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
example: string;
|
|
10
|
+
params: {
|
|
11
|
+
type: string;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string | null;
|
|
14
|
+
}[];
|
|
15
|
+
returns: {
|
|
16
|
+
type: string;
|
|
17
|
+
description: string | null;
|
|
18
|
+
};
|
|
19
|
+
namespace: string;
|
|
20
|
+
}[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* 注册公式,并同时注册公式说明
|
|
23
|
+
* @param name
|
|
24
|
+
* @param fn
|
|
25
|
+
* @param fnInfo
|
|
26
|
+
*/
|
|
27
|
+
export declare function registerFormula(name: string, fn: (this: Evaluator, ...args: Array<any>) => any, fnInfo?: FunctionDocItem): void;
|
package/lib/function.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -9,10 +9,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
9
9
|
|
|
10
10
|
var evalutor = require('./evalutor.js');
|
|
11
11
|
|
|
12
|
-
var functions = {};
|
|
13
12
|
function registerFunction(name, fn) {
|
|
14
|
-
|
|
15
|
-
evalutor.Evaluator.
|
|
13
|
+
var _a;
|
|
14
|
+
evalutor.Evaluator.extendDefaultFunctions((_a = {},
|
|
15
|
+
_a["fn".concat(name)] = fn,
|
|
16
|
+
_a));
|
|
16
17
|
}
|
|
17
18
|
var functionDocs = {};
|
|
18
19
|
function registerFunctionDoc(groupName, item) {
|
|
@@ -23,8 +24,22 @@ function registerFunctionDoc(groupName, item) {
|
|
|
23
24
|
functionDocs[groupName] = [item];
|
|
24
25
|
}
|
|
25
26
|
}
|
|
27
|
+
function bulkRegisterFunctionDoc(fnDocs) {
|
|
28
|
+
fnDocs.forEach(function (item) { return registerFunctionDoc(item.namespace || 'Others', item); });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 注册公式,并同时注册公式说明
|
|
32
|
+
* @param name
|
|
33
|
+
* @param fn
|
|
34
|
+
* @param fnInfo
|
|
35
|
+
*/
|
|
36
|
+
function registerFormula(name, fn, fnInfo) {
|
|
37
|
+
registerFunction(name, fn);
|
|
38
|
+
fnInfo && registerFunctionDoc(fnInfo.namespace || 'Others', fnInfo);
|
|
39
|
+
}
|
|
26
40
|
|
|
41
|
+
exports.bulkRegisterFunctionDoc = bulkRegisterFunctionDoc;
|
|
27
42
|
exports.functionDocs = functionDocs;
|
|
28
|
-
exports.
|
|
43
|
+
exports.registerFormula = registerFormula;
|
|
29
44
|
exports.registerFunction = registerFunction;
|
|
30
45
|
exports.registerFunctionDoc = registerFunctionDoc;
|
package/lib/index.d.ts
CHANGED
|
@@ -3,8 +3,13 @@ import { AsyncEvaluator } from './evalutorForAsync';
|
|
|
3
3
|
import { parse } from './parser';
|
|
4
4
|
import { lexer } from './lexer';
|
|
5
5
|
import { registerFilter, filters, getFilters, extendsFilters } from './filter';
|
|
6
|
-
import { registerFunction, registerFunctionDoc,
|
|
6
|
+
import { registerFunction, registerFunctionDoc, registerFormula } from './function';
|
|
7
7
|
import type { FilterContext, ASTNode, ParserOptions, EvaluatorOptions } from './types';
|
|
8
|
-
export { parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, registerFunction, registerFunctionDoc,
|
|
8
|
+
export { parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, registerFormula, registerFunction, registerFunctionDoc, extendsFilters };
|
|
9
|
+
export * from './types';
|
|
9
10
|
export declare function evaluate(astOrString: string | ASTNode, data: any, options?: ParserOptions & EvaluatorOptions): any;
|
|
10
11
|
export declare function evaluateForAsync(astOrString: string | ASTNode, data: any, options?: ParserOptions & EvaluatorOptions): Promise<any>;
|
|
12
|
+
export declare function getFunctionsDoc(): Promise<{
|
|
13
|
+
groupName: string;
|
|
14
|
+
items: import("./types").FunctionDocItem[];
|
|
15
|
+
}[]>;
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.
|
|
2
|
+
* amis-formula v6.9.0-rc.0
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -34,8 +34,26 @@ function evaluateForAsync(astOrString, data, options) {
|
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
evalutor.Evaluator.
|
|
37
|
+
evalutor.Evaluator.extendDefaultFilters(filter.getFilters());
|
|
38
38
|
evalutorForAsync.AsyncEvaluator.setDefaultFilters(filter.getFilters());
|
|
39
|
+
function getFunctionsDoc() {
|
|
40
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
41
|
+
return tslib.__generator(this, function (_a) {
|
|
42
|
+
switch (_a.label) {
|
|
43
|
+
case 0: return [4 /*yield*/, Promise.resolve().then(function() {return new Promise(function(fullfill) {require(['./doc.js', "tslib"], function(mod, tslib) {fullfill(tslib.__importStar(mod))})})})];
|
|
44
|
+
case 1:
|
|
45
|
+
_a.sent();
|
|
46
|
+
return [2 /*return*/, Object.entries(_function.functionDocs).map(function (_a) {
|
|
47
|
+
var _b = tslib.__read(_a, 2), k = _b[0], items = _b[1];
|
|
48
|
+
return ({
|
|
49
|
+
groupName: k,
|
|
50
|
+
items: items
|
|
51
|
+
});
|
|
52
|
+
})];
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
39
57
|
|
|
40
58
|
exports.Evaluator = evalutor.Evaluator;
|
|
41
59
|
exports.AsyncEvaluator = evalutorForAsync.AsyncEvaluator;
|
|
@@ -45,8 +63,9 @@ exports.extendsFilters = filter.extendsFilters;
|
|
|
45
63
|
exports.filters = filter.filters;
|
|
46
64
|
exports.getFilters = filter.getFilters;
|
|
47
65
|
exports.registerFilter = filter.registerFilter;
|
|
48
|
-
exports.
|
|
66
|
+
exports.registerFormula = _function.registerFormula;
|
|
49
67
|
exports.registerFunction = _function.registerFunction;
|
|
50
68
|
exports.registerFunctionDoc = _function.registerFunctionDoc;
|
|
51
69
|
exports.evaluate = evaluate;
|
|
52
70
|
exports.evaluateForAsync = evaluateForAsync;
|
|
71
|
+
exports.getFunctionsDoc = getFunctionsDoc;
|
package/lib/lexer.js
CHANGED
package/lib/parser.js
CHANGED
package/lib/types.d.ts
CHANGED
|
@@ -3,12 +3,13 @@ export interface FilterMap {
|
|
|
3
3
|
[propName: string]: (this: FilterContext, input: any, ...args: any[]) => any;
|
|
4
4
|
}
|
|
5
5
|
export interface FunctionMap {
|
|
6
|
-
[propName: string]: (this: Evaluator,
|
|
6
|
+
[propName: string]: (this: Evaluator, ...args: Array<any>) => any;
|
|
7
7
|
}
|
|
8
8
|
export interface FunctionDocItem {
|
|
9
9
|
name: string;
|
|
10
10
|
example?: string;
|
|
11
11
|
description?: string;
|
|
12
|
+
namespace?: string;
|
|
12
13
|
[propName: string]: any;
|
|
13
14
|
}
|
|
14
15
|
export interface FunctionDocMap {
|