@leankylin-sheet/formula-parser 4.0.44 → 4.0.46

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.
@@ -0,0 +1 @@
1
+ export function multiplyNumber(num1?: number, num2?: number): number;
package/dist/index.esm.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import Emitter from 'tiny-emitter';
2
2
  import * as formulajs from '@formulajs/formulajs';
3
3
  import { utils } from '@formulajs/formulajs';
4
+ import { Decimal } from 'decimal.js';
4
5
 
5
6
  function _callSuper(t, o, e) {
6
7
  return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
@@ -350,13 +351,7 @@ function func$4(symbol) {
350
351
  if (symbolParts.length === 1) {
351
352
  if (formulajs[symbolParts[0]]) {
352
353
  foundFormula = true;
353
- if (symbolParts[0] === "SUMPRODUCT") {
354
- var _params2;
355
- params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
356
- var _item$flat;
357
- return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
358
- });
359
- }
354
+ params = tsParams(symbolParts[0], params);
360
355
  result = formulajs[symbolParts[0]].apply(formulajs, _toConsumableArray(params));
361
356
  }
362
357
  } else {
@@ -384,6 +379,26 @@ function func$4(symbol) {
384
379
  }
385
380
  func$4.isFactory = true;
386
381
  func$4.SYMBOL = SYMBOL$4;
382
+ function tsParams(fnName, params) {
383
+ if (fnName === "SUMPRODUCT") {
384
+ var _params2;
385
+ params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
386
+ var _item$flat;
387
+ return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
388
+ });
389
+ } else if (fnName === "SUMIF") {
390
+ var _params3;
391
+ params = (_params3 = params) === null || _params3 === void 0 ? void 0 : _params3.map(function (item, index) {
392
+ if (index === 2 && Array.isArray(item)) {
393
+ return item === null || item === void 0 ? void 0 : item.map(function (cell) {
394
+ return [null, undefined, ""].includes(cell === null || cell === void 0 ? void 0 : cell[0]) ? [0] : cell;
395
+ });
396
+ }
397
+ return item;
398
+ });
399
+ }
400
+ return params;
401
+ }
387
402
 
388
403
  var SYMBOL$5 = '>';
389
404
  function func$5(exp1, exp2) {
@@ -472,6 +487,19 @@ function func$9(first) {
472
487
  }
473
488
  func$9.SYMBOL = SYMBOL$9;
474
489
 
490
+ /**
491
+ * 解决js处理精度问题
492
+ * 0.3 * 0.1 = 0.03
493
+ * @param num1
494
+ * @param num2
495
+ * @returns
496
+ */
497
+ var multiplyNumber = function multiplyNumber() {
498
+ var num1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
499
+ var num2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
500
+ return new Decimal(num1).mul(num2).toNumber();
501
+ };
502
+
475
503
  var SYMBOL$a = "*";
476
504
 
477
505
  // export default function func(first, ...rest) {
@@ -496,7 +524,7 @@ function func$a(first) {
496
524
  return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
497
525
  });
498
526
  var v = _list.reduce(function (acc, value) {
499
- return acc * toNumber(value);
527
+ return multiplyNumber(acc, toNumber(value));
500
528
  }, toNumber(item));
501
529
  if (isNaN(v)) {
502
530
  throw Error(ERROR_VALUE);
@@ -506,7 +534,7 @@ function func$a(first) {
506
534
  return dd;
507
535
  }
508
536
  var result = rest.reduce(function (acc, value) {
509
- return acc * toNumber(value);
537
+ return multiplyNumber(acc, toNumber(value));
510
538
  }, toNumber(first));
511
539
  if (isNaN(result)) {
512
540
  throw Error(ERROR_VALUE);
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var Emitter = require('tiny-emitter');
6
6
  var formulajs = require('@formulajs/formulajs');
7
+ var decimal_js = require('decimal.js');
7
8
 
8
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
10
 
@@ -378,13 +379,7 @@ function func$4(symbol) {
378
379
  if (symbolParts.length === 1) {
379
380
  if (formulajs__namespace[symbolParts[0]]) {
380
381
  foundFormula = true;
381
- if (symbolParts[0] === "SUMPRODUCT") {
382
- var _params2;
383
- params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
384
- var _item$flat;
385
- return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
386
- });
387
- }
382
+ params = tsParams(symbolParts[0], params);
388
383
  result = formulajs__namespace[symbolParts[0]].apply(formulajs__namespace, _toConsumableArray(params));
389
384
  }
390
385
  } else {
@@ -412,6 +407,26 @@ function func$4(symbol) {
412
407
  }
413
408
  func$4.isFactory = true;
414
409
  func$4.SYMBOL = SYMBOL$4;
410
+ function tsParams(fnName, params) {
411
+ if (fnName === "SUMPRODUCT") {
412
+ var _params2;
413
+ params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
414
+ var _item$flat;
415
+ return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
416
+ });
417
+ } else if (fnName === "SUMIF") {
418
+ var _params3;
419
+ params = (_params3 = params) === null || _params3 === void 0 ? void 0 : _params3.map(function (item, index) {
420
+ if (index === 2 && Array.isArray(item)) {
421
+ return item === null || item === void 0 ? void 0 : item.map(function (cell) {
422
+ return [null, undefined, ""].includes(cell === null || cell === void 0 ? void 0 : cell[0]) ? [0] : cell;
423
+ });
424
+ }
425
+ return item;
426
+ });
427
+ }
428
+ return params;
429
+ }
415
430
 
416
431
  var SYMBOL$5 = '>';
417
432
  function func$5(exp1, exp2) {
@@ -500,6 +515,19 @@ function func$9(first) {
500
515
  }
501
516
  func$9.SYMBOL = SYMBOL$9;
502
517
 
518
+ /**
519
+ * 解决js处理精度问题
520
+ * 0.3 * 0.1 = 0.03
521
+ * @param num1
522
+ * @param num2
523
+ * @returns
524
+ */
525
+ var multiplyNumber = function multiplyNumber() {
526
+ var num1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
527
+ var num2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
528
+ return new decimal_js.Decimal(num1).mul(num2).toNumber();
529
+ };
530
+
503
531
  var SYMBOL$a = "*";
504
532
 
505
533
  // export default function func(first, ...rest) {
@@ -524,7 +552,7 @@ function func$a(first) {
524
552
  return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
525
553
  });
526
554
  var v = _list.reduce(function (acc, value) {
527
- return acc * toNumber(value);
555
+ return multiplyNumber(acc, toNumber(value));
528
556
  }, toNumber(item));
529
557
  if (isNaN(v)) {
530
558
  throw Error(ERROR_VALUE);
@@ -534,7 +562,7 @@ function func$a(first) {
534
562
  return dd;
535
563
  }
536
564
  var result = rest.reduce(function (acc, value) {
537
- return acc * toNumber(value);
565
+ return multiplyNumber(acc, toNumber(value));
538
566
  }, toNumber(first));
539
567
  if (isNaN(result)) {
540
568
  throw Error(ERROR_VALUE);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/formula-parser",
3
- "version": "4.0.44",
3
+ "version": "4.0.46",
4
4
  "description": "Formula parser",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -37,6 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@formulajs/formulajs": "^4.5.6",
40
+ "decimal.js": "^10.6.0",
40
41
  "tiny-emitter": "^2.1.0"
41
42
  },
42
43
  "jest": {