amis-formula 6.9.0-rc.2 → 6.9.0-rc.4
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.js +1 -1
- package/esm/error.js +1 -1
- package/esm/evalutor.d.ts +2 -1
- package/esm/evalutor.js +11 -4
- package/esm/evalutorForAsync.js +1 -1
- package/esm/filter.js +1 -1
- package/esm/function.js +1 -1
- package/esm/index.js +1 -1
- package/esm/lexer.js +1 -1
- package/esm/parser.js +1 -1
- package/lib/doc.js +1 -1
- package/lib/error.js +1 -1
- package/lib/evalutor.d.ts +2 -1
- package/lib/evalutor.js +11 -5
- package/lib/evalutorForAsync.js +1 -1
- package/lib/filter.js +1 -1
- package/lib/function.js +1 -1
- package/lib/index.js +1 -1
- package/lib/lexer.js +1 -1
- package/lib/parser.js +1 -1
- package/package.json +1 -1
package/esm/doc.js
CHANGED
package/esm/error.js
CHANGED
package/esm/evalutor.d.ts
CHANGED
|
@@ -59,10 +59,11 @@ export declare class Evaluator {
|
|
|
59
59
|
value: any;
|
|
60
60
|
}): number | boolean;
|
|
61
61
|
formatNumber(value: any, int?: boolean): any;
|
|
62
|
+
isValidValue(value: string | number): boolean;
|
|
62
63
|
power(ast: {
|
|
63
64
|
left: any;
|
|
64
65
|
right: any;
|
|
65
|
-
}):
|
|
66
|
+
}): any;
|
|
66
67
|
multiply(ast: {
|
|
67
68
|
left: any;
|
|
68
69
|
right: any;
|
package/esm/evalutor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.9.0-rc.
|
|
2
|
+
* amis-formula v6.9.0-rc.4
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -15,7 +15,6 @@ import uniqBy from 'lodash/uniqBy';
|
|
|
15
15
|
import isEqual from 'lodash/isEqual';
|
|
16
16
|
import isPlainObject from 'lodash/isPlainObject';
|
|
17
17
|
import get from 'lodash/get';
|
|
18
|
-
import isNumber from 'lodash/isNumber';
|
|
19
18
|
import { FormulaEvalError } from './error.js';
|
|
20
19
|
|
|
21
20
|
/**
|
|
@@ -173,10 +172,18 @@ var Evaluator = /** @class */ (function () {
|
|
|
173
172
|
}
|
|
174
173
|
return value !== null && value !== void 0 ? value : 0;
|
|
175
174
|
};
|
|
175
|
+
// 判断是否是数字或者字符串数字
|
|
176
|
+
Evaluator.prototype.isValidValue = function (value) {
|
|
177
|
+
return (typeof value === 'number' ||
|
|
178
|
+
(typeof value === 'string' && /^\d+(\.\d+)?$/.test(value)));
|
|
179
|
+
};
|
|
176
180
|
Evaluator.prototype.power = function (ast) {
|
|
177
181
|
var left = this.evalute(ast.left);
|
|
178
182
|
var right = this.evalute(ast.right);
|
|
179
|
-
|
|
183
|
+
if (!this.isValidValue(left) || !this.isValidValue(right)) {
|
|
184
|
+
return left;
|
|
185
|
+
}
|
|
186
|
+
return Math.pow(left, right);
|
|
180
187
|
};
|
|
181
188
|
Evaluator.prototype.multiply = function (ast) {
|
|
182
189
|
var left = this.evalute(ast.left);
|
|
@@ -979,7 +986,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
979
986
|
* @returns {number} 基数的指数次幂
|
|
980
987
|
*/
|
|
981
988
|
Evaluator.prototype.fnPOW = function (base, exponent) {
|
|
982
|
-
if (!
|
|
989
|
+
if (!this.isValidValue(base) || !this.isValidValue(exponent)) {
|
|
983
990
|
return base;
|
|
984
991
|
}
|
|
985
992
|
return Math.pow(base, exponent);
|
package/esm/evalutorForAsync.js
CHANGED
package/esm/filter.js
CHANGED
package/esm/function.js
CHANGED
package/esm/index.js
CHANGED
package/esm/lexer.js
CHANGED
package/esm/parser.js
CHANGED
package/lib/doc.js
CHANGED
package/lib/error.js
CHANGED
package/lib/evalutor.d.ts
CHANGED
|
@@ -59,10 +59,11 @@ export declare class Evaluator {
|
|
|
59
59
|
value: any;
|
|
60
60
|
}): number | boolean;
|
|
61
61
|
formatNumber(value: any, int?: boolean): any;
|
|
62
|
+
isValidValue(value: string | number): boolean;
|
|
62
63
|
power(ast: {
|
|
63
64
|
left: any;
|
|
64
65
|
right: any;
|
|
65
|
-
}):
|
|
66
|
+
}): any;
|
|
66
67
|
multiply(ast: {
|
|
67
68
|
left: any;
|
|
68
69
|
right: any;
|
package/lib/evalutor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v6.9.0-rc.
|
|
2
|
+
* amis-formula v6.9.0-rc.4
|
|
3
3
|
* Copyright 2021-2024 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -19,7 +19,6 @@ var uniqBy = require('lodash/uniqBy');
|
|
|
19
19
|
var isEqual = require('lodash/isEqual');
|
|
20
20
|
var isPlainObject = require('lodash/isPlainObject');
|
|
21
21
|
var get = require('lodash/get');
|
|
22
|
-
var isNumber = require('lodash/isNumber');
|
|
23
22
|
var error = require('./error.js');
|
|
24
23
|
|
|
25
24
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -35,7 +34,6 @@ var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
|
|
|
35
34
|
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
36
35
|
var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
|
|
37
36
|
var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
|
|
38
|
-
var isNumber__default = /*#__PURE__*/_interopDefaultLegacy(isNumber);
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* @file 公式内置函数
|
|
@@ -192,10 +190,18 @@ var Evaluator = /** @class */ (function () {
|
|
|
192
190
|
}
|
|
193
191
|
return value !== null && value !== void 0 ? value : 0;
|
|
194
192
|
};
|
|
193
|
+
// 判断是否是数字或者字符串数字
|
|
194
|
+
Evaluator.prototype.isValidValue = function (value) {
|
|
195
|
+
return (typeof value === 'number' ||
|
|
196
|
+
(typeof value === 'string' && /^\d+(\.\d+)?$/.test(value)));
|
|
197
|
+
};
|
|
195
198
|
Evaluator.prototype.power = function (ast) {
|
|
196
199
|
var left = this.evalute(ast.left);
|
|
197
200
|
var right = this.evalute(ast.right);
|
|
198
|
-
|
|
201
|
+
if (!this.isValidValue(left) || !this.isValidValue(right)) {
|
|
202
|
+
return left;
|
|
203
|
+
}
|
|
204
|
+
return Math.pow(left, right);
|
|
199
205
|
};
|
|
200
206
|
Evaluator.prototype.multiply = function (ast) {
|
|
201
207
|
var left = this.evalute(ast.left);
|
|
@@ -998,7 +1004,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
998
1004
|
* @returns {number} 基数的指数次幂
|
|
999
1005
|
*/
|
|
1000
1006
|
Evaluator.prototype.fnPOW = function (base, exponent) {
|
|
1001
|
-
if (!
|
|
1007
|
+
if (!this.isValidValue(base) || !this.isValidValue(exponent)) {
|
|
1002
1008
|
return base;
|
|
1003
1009
|
}
|
|
1004
1010
|
return Math.pow(base, exponent);
|
package/lib/evalutorForAsync.js
CHANGED
package/lib/filter.js
CHANGED
package/lib/function.js
CHANGED
package/lib/index.js
CHANGED
package/lib/lexer.js
CHANGED
package/lib/parser.js
CHANGED