Socket
Socket
Sign inDemoInstall

@handsontable/formulajs

Package Overview
Dependencies
Maintainers
4
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@handsontable/formulajs - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

.idea/encodings.xml

18

lib/database.js

@@ -1,5 +0,6 @@

var error = require('./error');
var error = require('./utils/error');
var stats = require('./statistical');
var maths = require('./math-trig');
var utils = require('./utils');
var utils = require('./utils/common');
var evalExpression = require('./utils/criteria-eval');

@@ -64,3 +65,14 @@ function compact(array) {

for (var p = 1; p < criteria.length; ++p) {
currentCriteriaResult = currentCriteriaResult || eval(database[k][l] + criteria[p]); // jshint ignore:line
if (!currentCriteriaResult) {
var isWildcard = criteria[p] === void 0 || criteria[p] === '*';
if (isWildcard) {
currentCriteriaResult = true;
} else {
var tokenizedCriteria = evalExpression.parse(criteria[p] + '');
var tokens = [evalExpression.createToken(database[k][l], evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
currentCriteriaResult = evalExpression.compute(tokens);
}
}
}

@@ -67,0 +79,0 @@ }

4

lib/date-time.js

@@ -1,3 +0,3 @@

var error = require('./error');
var utils = require('./utils');
var error = require('./utils/error');
var utils = require('./utils/common');

@@ -4,0 +4,0 @@ var d1900 = new Date(Date.UTC(1900, 0, 1));

@@ -1,5 +0,5 @@

var error = require('./error');
var jStat = require('jStat').jStat;
var error = require('./utils/error');
var jStat = require('@handsontable/jstat');
var text = require('./text');
var utils = require('./utils');
var utils = require('./utils/common');
var bessel = require('bessel');

@@ -6,0 +6,0 @@

@@ -1,4 +0,4 @@

var error = require('./error');
var error = require('./utils/error');
var dateTime = require('./date-time');
var utils = require('./utils');
var utils = require('./utils/common');

@@ -5,0 +5,0 @@ function validDate(d) {

@@ -1,2 +0,2 @@

var error = require('./error');
var error = require('./utils/error');

@@ -3,0 +3,0 @@ // TODO

@@ -1,3 +0,3 @@

var error = require('./error');
var utils = require('./utils');
var error = require('./utils/error');
var utils = require('./utils/common');
var information = require('./information');

@@ -4,0 +4,0 @@

@@ -1,3 +0,3 @@

var error = require('./error');
var utils = require('./utils');
var error = require('./utils/error');
var utils = require('./utils/common');

@@ -79,3 +79,3 @@ exports.MATCH = function(lookupValue, lookupArray, matchType) {

return error.na;
};
};

@@ -82,0 +82,0 @@ exports.HLOOKUP = function (needle, table, index, rangeLookup) {

@@ -1,5 +0,6 @@

var utils = require('./utils');
var error = require('./error');
var utils = require('./utils/common');
var error = require('./utils/error');
var statistical = require('./statistical');
var information = require('./information');
var evalExpression = require('./utils/criteria-eval');

@@ -991,2 +992,3 @@ exports.ABS = function(number) {

range = utils.parseNumberArray(utils.flatten(range));
if (range instanceof Error) {

@@ -996,5 +998,17 @@ return range;

var result = 0;
var isWildcard = criteria === void 0 || criteria === '*';
var tokenizedCriteria = isWildcard ? null : evalExpression.parse(criteria + '');
for (var i = 0; i < range.length; i++) {
result += (eval(range[i] + criteria)) ? range[i] : 0; // jshint ignore:line
var value = range[i];
if (isWildcard) {
result += value;
} else {
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
result += (evalExpression.compute(tokens) ? value : 0);
}
}
return result;

@@ -1006,24 +1020,43 @@ };

var range = utils.parseNumberArray(utils.flatten(args.shift()));
if (range instanceof Error) {
return range;
}
var criteria = args;
var criterias = args;
var n_range_elements = range.length;
var n_criterias = criteria.length;
var criteriaLength = criterias.length;
var result = 0;
var result = 0;
for (var i = 0; i < n_range_elements; i++) {
var el = range[i];
var condition = '';
for (var c = 0; c < n_criterias; c++) {
condition += el + criteria[c];
if (c !== n_criterias - 1) {
condition += '&&';
var value = range[i];
var isMeetCondition = false;
for (var j = 0; j < criteriaLength; j++) {
var criteria = criterias[j];
var isWildcard = criteria === void 0 || criteria === '*';
var computedResult = false;
if (isWildcard) {
computedResult = true;
} else {
var tokenizedCriteria = evalExpression.parse(criteria + '');
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
computedResult = evalExpression.compute(tokens);
}
// Criterias are calculated as AND so any `false` breakes the loop as unmeet condition
if (!computedResult) {
isMeetCondition = false;
break;
}
isMeetCondition = true;
}
if (eval(condition)) { // jshint ignore:line
result += el;
if (isMeetCondition) {
result += value;
}
}
return result;

@@ -1030,0 +1063,0 @@ };

@@ -1,3 +0,3 @@

var utils = require('./utils');
var error = require('./error');
var utils = require('./utils/common');
var error = require('./utils/error');

@@ -60,2 +60,2 @@ exports.UNIQUE = function () {

});
};
};
var mathTrig = require('./math-trig');
var text = require('./text');
var jStat = require('jStat').jStat;
var utils = require('./utils');
var error = require('./error');
var jStat = require('@handsontable/jstat');
var utils = require('./utils/common');
var evalExpression = require('./utils/criteria-eval');
var error = require('./utils/error');
var misc = require('./miscellaneous');

@@ -72,2 +73,3 @@

average_range = utils.parseNumberArray(utils.flatten(average_range));
if (average_range instanceof Error) {

@@ -78,8 +80,21 @@ return average_range;

var result = 0;
var isWildcard = criteria === void 0 || criteria === '*';
var tokenizedCriteria = isWildcard ? null : evalExpression.parse(criteria + '');
for (var i = 0; i < range.length; i++) {
if (eval(range[i] + criteria)) { // jshint ignore:line
var value = range[i];
if (isWildcard) {
result += average_range[i];
average_count++;
} else {
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
if (evalExpression.compute(tokens)) {
result += average_range[i];
average_count++;
}
}
}
return result / average_count;

@@ -92,15 +107,35 @@ };

var args = utils.argsToArray(arguments);
var criteria = (args.length - 1) / 2;
var criteriaLength = (args.length - 1) / 2;
var range = utils.flatten(args[0]);
var count = 0;
var result = 0;
for (var i = 0; i < range.length; i++) {
var condition = '';
for (var j = 0; j < criteria; j++) {
condition += args[2 * j + 1][i] + args[2 * j + 2];
if (j !== criteria - 1) {
condition += '&&';
var isMeetCondition = false;
for (var j = 0; j < criteriaLength; j++) {
var value = args[2 * j + 1][i];
var criteria = args[2 * j + 2];
var isWildcard = criteria === void 0 || criteria === '*';
var computedResult = false;
if (isWildcard) {
computedResult = true;
} else {
var tokenizedCriteria = evalExpression.parse(criteria + '');
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
computedResult = evalExpression.compute(tokens);
}
// Criterias are calculated as AND so any `false` breakes the loop as unmeet condition
if (!computedResult) {
isMeetCondition = false;
break;
}
isMeetCondition = true;
}
if (eval(condition)) { // jshint ignore:line
if (isMeetCondition) {
result += range[i];

@@ -112,2 +147,3 @@ count++;

var average = result / count;
if (isNaN(average)) {

@@ -435,17 +471,21 @@ return 0;

range = utils.flatten(range);
if (!/[<>=!]/.test(criteria)) {
criteria = '=="' + criteria + '"';
var isWildcard = criteria === void 0 || criteria === '*';
if (isWildcard) {
return range.length;
}
var matches = 0;
var tokenizedCriteria = evalExpression.parse(criteria + '');
for (var i = 0; i < range.length; i++) {
if (typeof range[i] !== 'string') {
if (eval(range[i] + criteria)) { // jshint ignore:line
matches++;
}
} else {
if (eval('"' + range[i] + '"' + criteria)) { // jshint ignore:line
matches++;
}
var value = range[i];
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
if (evalExpression.compute(tokens)) {
matches++;
}
}
return matches;

@@ -457,2 +497,3 @@ };

var results = new Array(utils.flatten(args[0]).length);
for (var i = 0; i < results.length; i++) {

@@ -464,10 +505,12 @@ results[i] = true;

var criteria = args[i + 1];
if (!/[<>=!]/.test(criteria)) {
criteria = '=="' + criteria + '"';
}
for (var j = 0; j < range.length; j++) {
if (typeof range[j] !== 'string') {
results[j] = results[j] && eval(range[j] + criteria); // jshint ignore:line
} else {
results[j] = results[j] && eval('"' + range[j] + '"' + criteria); // jshint ignore:line
var isWildcard = criteria === void 0 || criteria === '*';
if (!isWildcard) {
var tokenizedCriteria = evalExpression.parse(criteria + '');
for (var j = 0; j < range.length; j++) {
var value = range[j];
var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);
results[j] = results[j] && evalExpression.compute(tokens);
}

@@ -482,2 +525,3 @@ }

}
return result;

@@ -484,0 +528,0 @@ };

@@ -1,3 +0,3 @@

var utils = require('./utils');
var error = require('./error');
var utils = require('./utils/common');
var error = require('./utils/error');

@@ -4,0 +4,0 @@ //TODO

@@ -5,3 +5,3 @@ {

"description": "JavaScript implementation of most Microsoft Excel formula functions",
"version": "2.0.0",
"version": "2.0.1",
"repository": {

@@ -25,4 +25,4 @@ "type": "git",

"dependencies": {
"bessel": "^0.2.0",
"jStat": "^1.7.0"
"@handsontable/jstat": "^1.0.0",
"bessel": "^0.2.0"
},

@@ -29,0 +29,0 @@ "devDependencies": {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc