diff --git a/dist/utilities/filter.js b/dist/utilities/filter.js index f81c95d279484f4bed1d6a9fea60ff06a41fac0b..87d28d6e1ab2bca573b1b436b3fddd9b04556ada 100644 --- a/dist/utilities/filter.js +++ b/dist/utilities/filter.js @@ -86,171 +86,152 @@ function filter(array, predicate, options) { exports.filter = filter; function filterFunction(value, predicate, options) { let filter = false; - let negation; - if (!options) { + let negation = false; + let usedPredicate = predicate; + if (!options) options = {}; - } - if (typeof predicate === 'string' && predicate.indexOf('$exists') > 0) { - negation = predicate.indexOf('!') === 0; - filter = !_.isNil(value); - } - else if (!_.isNil(value) && !_.isNil(predicate)) { - let comparator = options.comparator ? options.comparator : 'strict'; - if (Array.isArray(value)) { - for (const subValue of value) { - if (filterFunction(subValue, predicate, options)) { - filter = true; - break; + let comparator = options.comparator ? options.comparator : 'strict'; + let operator = options.operator ? options.operator : 'and'; + try { + if (typeof usedPredicate === 'object' && !Array.isArray(usedPredicate)) { + const key = Object.keys(usedPredicate).length === 1 ? Object.keys(usedPredicate)[0] : ''; + if (key === '$' || key.startsWith('$')) { + usedPredicate = usedPredicate[key]; + if (key === '$or' || key === '$and') { + operator = key.substring(1); } - } - } - else if (typeof value === 'object') { - let wildcardPredicate; - let keys; - let operator = options.operator ? options.operator : 'and'; - if (typeof predicate === 'string' || typeof predicate['$'] === 'string') { //wildcard, terms can match any property of value - keys = Object.keys(value); - wildcardPredicate = typeof predicate['$'] === 'string' ? predicate['$'] : predicate; - if (wildcardPredicate.indexOf('!') === 0) { + else if (key === '$strict' || key === '$caseSensitive' || key === '$caseInsensitive' || + key === '$gt' || key === '$gte' || key === '$lt' || key === '$lte' || + key === '$regex' || key === '$size') { + comparator = key.substring(1); + } + else if (key === '$not' || key === '$ne' || key === '$nin') { negation = true; - wildcardPredicate = wildcardPredicate.substring(1); } - operator = 'or'; + else { + //"$", "$eq", "$in", "$all" + } } - else { - keys = Object.keys(predicate); + } + if (typeof usedPredicate === 'string' && usedPredicate.indexOf('!') === 0) { + negation = true; + usedPredicate = usedPredicate.substring(1); + } + if (usedPredicate === '$exists') { + filter = !_.isNil(value); + } + else if (!_.isNil(value) && !_.isNil(usedPredicate)) { + if (Array.isArray(value) && comparator !== 'size') { + //value array of strings, usedPredicate array of strings + if (Array.isArray(value) && arrayValidators_1.arrayElementTypeValidator(value, 'string') && + Array.isArray(usedPredicate) && arrayValidators_1.arrayElementTypeValidator(usedPredicate, 'string')) { + if (comparator === 'caseSensitive') { + filter = arrayValidators_1.arrayIncludesCaseSensitiveValidator(value, usedPredicate, options.allOf); + } + else if (comparator === 'caseInsensitive') { + filter = arrayValidators_1.arrayIncludesCaseInsensitiveValidator(value, usedPredicate, options.allOf); + } + else if (comparator === 'strict') { + filter = arrayValidators_1.arrayStrictValidator(value, usedPredicate); + } + } + else { + for (const subValue of value) { + if (filterFunction(subValue, usedPredicate, options)) { + filter = true; + break; + } + } + } } - for (const key of keys) { - let tmpFilter = false; - if (key === '$or' || key === '$and') { - tmpFilter = filterFunction(value, predicate[key], { - operator: key.substring(1), - comparator: options.comparator - }); + else if (typeof value === 'object') { + let keys; + if (typeof usedPredicate === 'string') { //wildcard, terms can match any property of value + keys = Object.keys(value); + operator = 'or'; } else { - const usedPredicate = wildcardPredicate ? wildcardPredicate : predicate[key]; - if (!_.isNil(usedPredicate)) { + keys = Object.keys(usedPredicate); + } + for (const key of keys) { + let tmpFilter = false; + let tmpUsedPredicate; + if (key === '$or' || key === '$and') { + tmpFilter = filterFunction(value, usedPredicate[key], { + operator: key.substring(1), + comparator: comparator + }); + } + else { + tmpUsedPredicate = typeof usedPredicate === 'string' ? usedPredicate : usedPredicate[key]; if (key.indexOf('.') > -1) { const element = value[key.split('.')[0]]; if (element) { - tmpFilter = filterFunction(element, { [key.split('.')[1]]: usedPredicate }, { comparator: options.comparator }); + tmpFilter = filterFunction(element, { [key.split('.')[1]]: tmpUsedPredicate }, { comparator: comparator }); } } else { - tmpFilter = filterFunction(value[key], usedPredicate, { comparator: options.comparator }); + tmpFilter = filterFunction(value[key], tmpUsedPredicate, { comparator: comparator }); } } - } - if (tmpFilter && operator === 'or') { - filter = true; - break; // since condition already matches one expression - } - else if (!tmpFilter && operator === 'and') { - filter = false; - break; // since condition already does not matches one expression - } - filter = tmpFilter; - } - } - else { - let tmpFilter = false; - try { - let usedPredicate = predicate; - if (typeof usedPredicate === 'object') { - const subKey = predicate ? Object.keys(predicate)[0] : ''; - if (subKey.startsWith('$')) { - usedPredicate = predicate[subKey]; - if (subKey === '$strict' || - subKey === '$caseSensitive' || - subKey === '$caseInsensitive' || - subKey === '$gt' || - subKey === '$gte' || - subKey === '$lt' || - subKey === '$lte' || - subKey === '$regex' || - subKey === '$size') { - comparator = subKey.substring(1); - } - else if (subKey === '$ne' || subKey === '$nin') { - negation = true; - } - else { - //(subKey === "$eq") - //(subKey === "$in") - //(subKey === "$all") - //comparator = "strict" - } + if (tmpFilter && operator === 'or') { + filter = true; + break; // since condition already matches one expression } - } - if ((comparator === 'caseInsensitive' || comparator === 'caseSensitive' || comparator === 'strict') && - (value && (typeof value === 'string' || arrayValidators_1.arrayElementTypeValidator(value, 'string'))) && - (usedPredicate && (typeof usedPredicate === 'string' || arrayValidators_1.arrayElementTypeValidator(usedPredicate, 'string')))) { - if (usedPredicate.indexOf('!') === 0) { - negation = true; - usedPredicate = usedPredicate.substring(1); + else if (!tmpFilter && operator === 'and') { + filter = false; + break; // since condition already does not matches one expression } + filter = tmpFilter; + } + } + else { + if ((comparator === 'caseInsensitive' || comparator === 'caseSensitive' || comparator === 'strict')) { //value string, usedPredicate array if (typeof value === 'string' && (Array.isArray(usedPredicate) || usedPredicate.indexOf('||') > -1)) { const predicates = (typeof usedPredicate === 'string') ? split(usedPredicate, '||') : usedPredicate; for (const p of predicates) { if (filterStringPredicate(value, p, comparator)) { - tmpFilter = true; + filter = true; } } } - //value array, usedPredicate array - else if (Array.isArray(value) && Array.isArray(usedPredicate)) { - if (comparator === 'caseSensitive') { - tmpFilter = arrayValidators_1.arrayIncludesCaseSensitiveValidator(value, usedPredicate); - } - else if (comparator === 'caseInsensitive') { - tmpFilter = arrayValidators_1.arrayIncludesCaseInsensitiveValidator(value, usedPredicate); - } - else if (comparator === 'strict') { - tmpFilter = arrayValidators_1.arrayStrictValidator(value, usedPredicate); - } - } //value string, usedPredicate string - else { - tmpFilter = filterStringPredicate(value, usedPredicate, comparator); + else if (typeof value === 'string' && typeof usedPredicate === 'string') { + filter = filterStringPredicate(value, usedPredicate, comparator); } - } - else if (comparator === 'strict') { - if (Array.isArray(value) && Array.isArray(usedPredicate)) { - tmpFilter = arrayValidators_1.arrayStrictValidator(value, usedPredicate); - } - else { - tmpFilter = value === usedPredicate; + //value other, usedPredicate other + else if (typeof value === typeof usedPredicate) { + filter = value === usedPredicate; } } else if (comparator === 'gt' || comparator === 'gte' || comparator === 'lt' || comparator === 'lte') { if (comparator === 'gt') { - tmpFilter = numberValidators_1.exclusiveMinimumValidator(value, usedPredicate); + filter = numberValidators_1.exclusiveMinimumValidator(value, usedPredicate); } if (comparator === 'gte') { - tmpFilter = numberValidators_1.minimumValidator(value, usedPredicate); + filter = numberValidators_1.minimumValidator(value, usedPredicate); } if (comparator === 'lt') { - tmpFilter = numberValidators_1.exclusiveMaximumValidator(value, usedPredicate); + filter = numberValidators_1.exclusiveMaximumValidator(value, usedPredicate); } if (comparator === 'lte') { - tmpFilter = numberValidators_1.maximumValidator(value, usedPredicate); + filter = numberValidators_1.maximumValidator(value, usedPredicate); } } else if (comparator === 'regExp') { - tmpFilter = regExpValidators_1.regExpValidator(value, usedPredicate); + filter = regExpValidators_1.regExpValidator(value, usedPredicate); } else if (comparator === 'size') { - tmpFilter = arrayValidators_1.arraySizeValidator(value, usedPredicate); + filter = arrayValidators_1.arraySizeValidator(value, usedPredicate); } } - catch (error) { - // silently handle error - } - filter = tmpFilter; } } + catch (error) { + // silently handle error + filter = false; + } return (negation) ? !filter : filter; } function filterStringPredicate(value, p, comparator) { diff --git a/dist/utilities/filter.js.map b/dist/utilities/filter.js.map index 93ccf2fb9ac11acd4e29cca2ddee1aebb475809c..686fbff0f6a87a963008e9fc65756c74baec49b4 100644 --- a/dist/utilities/filter.js.map +++ b/dist/utilities/filter.js.map @@ -1 +1 @@ -{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utilities/filter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utilities/filter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/validators/arrayValidators.js b/dist/validators/arrayValidators.js index bbd6b2df5d415e31f525dd760e5ed5036eef847e..c80c7d4e895f129018c7223f43f3bc96414fc68e 100644 --- a/dist/validators/arrayValidators.js +++ b/dist/validators/arrayValidators.js @@ -52,24 +52,40 @@ function arrayElementTypeValidator(array, type) { return isElementType; } exports.arrayElementTypeValidator = arrayElementTypeValidator; -function arrayIncludesCaseSensitiveValidator(array1, array2) { +function arrayIncludesCaseSensitiveValidator(array1, array2, allOf = false) { if (!arrayElementTypeValidator(array1, 'string')) { throw new Error('array1 is not of type array of string'); } if (!arrayElementTypeValidator(array2, 'string')) { throw new Error('array2 is not of type array of string'); } - return _.difference(array1, array1.filter((a) => array2.some((b) => a.includes(b)))).length === 0; + let filteredArray = array1.filter((a) => array2.some((b) => a.includes(b))); + let result; + if (allOf) { + result = _.difference(array1, filteredArray).length === 0; + } + else { + result = filteredArray.length > 0; + } + return result; } exports.arrayIncludesCaseSensitiveValidator = arrayIncludesCaseSensitiveValidator; -function arrayIncludesCaseInsensitiveValidator(array1, array2) { +function arrayIncludesCaseInsensitiveValidator(array1, array2, allOf = false) { if (!arrayElementTypeValidator(array1, 'string')) { throw new Error('array1 is not of type array of string'); } if (!arrayElementTypeValidator(array2, 'string')) { throw new Error('array2 is not of type array of string'); } - return _.difference(array1, array1.filter((a) => array2.some((b) => a.toLowerCase().includes(b.toLowerCase())))).length === 0; + let filteredArray = array1.filter((a) => array2.some((b) => a.toLowerCase().includes(b.toLowerCase()))); + let result; + if (allOf) { + result = _.difference(array1, filteredArray).length === 0; + } + else { + result = filteredArray.length > 0; + } + return result; } exports.arrayIncludesCaseInsensitiveValidator = arrayIncludesCaseInsensitiveValidator; //# sourceMappingURL=arrayValidators.js.map \ No newline at end of file diff --git a/dist/validators/arrayValidators.js.map b/dist/validators/arrayValidators.js.map index 0842b05eefe5e6cc4407bd1fda616a474a033d3f..f8085721183dbba395e98f2999a5eb2c4ab2edda 100644 --- a/dist/validators/arrayValidators.js.map +++ b/dist/validators/arrayValidators.js.map @@ -1 +1 @@ -{"version":3,"file":"arrayValidators.js","sourceRoot":"","sources":["../../src/validators/arrayValidators.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;AAEb;;;GAGG;AACH,0CAA4B;AAE5B,SAAgB,oBAAoB,CAAC,KAAY,EAAE,aAAoB;IACnE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC3D,CAAC;AAFD,oDAEC;AAED,SAAgB,kBAAkB,CAAC,KAAY,EAAE,IAAY;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AACzD,CAAC;AAFD,gDAEC;AAED,SAAgB,yBAAyB,CAAC,KAAY,EAAE,IAAgD;IACpG,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC9C;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC1B,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC9C;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC1B,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC9C;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC3B,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/C;KACJ;IACD,OAAO,aAAa,CAAC;AACzB,CAAC;AAdD,8DAcC;AAED,SAAgB,mCAAmC,CAAC,MAAa,EAAE,MAAa;IAC5E,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;IACD,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACtG,CAAC;AARD,kFAQC;AAED,SAAgB,qCAAqC,CAAC,MAAa,EAAE,MAAa;IAC9E,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;IACD,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAClI,CAAC;AARD,sFAQC"} \ No newline at end of file +{"version":3,"file":"arrayValidators.js","sourceRoot":"","sources":["../../src/validators/arrayValidators.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f0fef1ca67aa841390f0e64176e9442ee2d6899b..0b5180aefd097557485eb44d8cb46113d53b5a3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "value-converters", - "version": "1.2.0", + "version": "1.2.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.2.0", + "version": "1.2.1", "license": "BSD-3-Clause-Clear", "dependencies": { "lodash": "^4.17.21", diff --git a/package.json b/package.json index e3ceab612d538eac01dd18a9ed1e93488e996f97..bdb50415dd6e69f3e670054d529406f214da0d71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "value-converters", - "version": "1.2.0", + "version": "1.2.1", "description": "extended filtering function, sorting, localization, dissolving urls and reusable validators", "main": "dist/index.js", "scripts": { diff --git a/src/utilities/filter.ts b/src/utilities/filter.ts index 39b44a02a6b738517116fe3583356b2d77647703..a9ea9d653a97433dabb57451bf641fd5c683dde3 100644 --- a/src/utilities/filter.ts +++ b/src/utilities/filter.ts @@ -80,8 +80,9 @@ function filterFunction(value: any, predicate: any, options: any): boolean { let filter = false; let negation = false; let usedPredicate = predicate; - let comparator = options?.comparator ? options.comparator : 'strict'; - let operator = options?.operator ? options.operator : 'and'; + if (!options) options = {}; + let comparator = options.comparator ? options.comparator : 'strict'; + let operator = options.operator ? options.operator : 'and'; try { if (typeof usedPredicate === 'object' && !Array.isArray(usedPredicate)) { const key = Object.keys(usedPredicate).length === 1 ? Object.keys(usedPredicate)[0] : '';