{"version":3,"file":"smart-array-filter.js","sources":["../node_modules/lodash.escaperegexp/index.js","../lib-esm/match/nativeMatch.js","../lib-esm/match/recursiveMatch.js","../lib-esm/match/match.js","../lib-esm/utils/charSplit.js","../lib-esm/utils/getCheckNumber.js","../lib-esm/utils/getCheckString.js","../lib-esm/utils/convertKeywordsToCriteria.js","../lib-esm/utils/ensureObjectOfRegExps.js","../lib-esm/index.js"],"sourcesContent":["/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n","/**\n * NativeMatch.\n *\n * @param element - String|number.\n * @param keyword - Criterion.\n * @returns Boolean.\n */\nexport default function nativeMatch(element, keyword) {\n    if (typeof element === 'string') {\n        return keyword.checkString(element);\n    }\n    else if (typeof element === 'number') {\n        return keyword.checkNumber(element);\n    }\n    else {\n        return false;\n    }\n}\n//# sourceMappingURL=nativeMatch.js.map","import nativeMatch from './nativeMatch';\n/**\n * RecursiveMatch.\n *\n * @param element - String | number | Record<string, string>.\n * @param criterium - Criterion.\n * @param keys - String[].\n * @param options - Object.\n * @param options.ignorePaths - RegExp[].\n * @returns Boolean.\n */\nexport default function recursiveMatch(element, criterium, keys, options) {\n    if (typeof element === 'object') {\n        if (Array.isArray(element)) {\n            for (const elm of element) {\n                if (recursiveMatch(elm, criterium, keys, options)) {\n                    return true;\n                }\n            }\n        }\n        else {\n            for (const i in element) {\n                keys.push(i);\n                const didMatch = recursiveMatch(element[i], criterium, keys, options);\n                keys.pop();\n                if (didMatch)\n                    return true;\n            }\n        }\n    }\n    else if (criterium.is) {\n        // we check for the presence of a key (jpath)\n        if (criterium.is.test(keys.join('.'))) {\n            return !!element;\n        }\n        else {\n            return false;\n        }\n    }\n    else {\n        // need to check if keys match\n        const joinedKeys = keys.join('.');\n        for (const ignorePath of options.ignorePaths) {\n            if (ignorePath.test(joinedKeys))\n                return false;\n        }\n        if (options.includePaths) {\n            let included = false;\n            for (const includePath of options.includePaths) {\n                if (includePath.test(joinedKeys)) {\n                    included = true;\n                    break;\n                }\n            }\n            if (!included)\n                return false;\n        }\n        if (criterium.key) {\n            if (!criterium.key.test(joinedKeys))\n                return false;\n        }\n        return nativeMatch(element, criterium);\n    }\n    return false;\n}\n//# sourceMappingURL=recursiveMatch.js.map","import recursiveMatch from './recursiveMatch';\n/**\n * Match.\n *\n * @param element - String | number | Record<string, string>.\n * @param criteria - Criterion[].\n * @param predicate - String.\n * @param options - Object.\n * @param options.ignorePaths - RegExp[].\n * @param options.pathAlias - Record<string, string|RegExp>s.\n * @returns Boolean.\n */\nexport default function match(element, criteria, predicate, options) {\n    if (criteria.length) {\n        let found = false;\n        for (const criterion of criteria) {\n            // match XOR negate\n            if (recursiveMatch(element, criterion, [], options)\n                ? !criterion.negate\n                : criterion.negate) {\n                if (predicate === 'OR') {\n                    return true;\n                }\n                found = true;\n            }\n            else if (predicate === 'AND') {\n                return false;\n            }\n        }\n        return found;\n    }\n    return true;\n}\n//# sourceMappingURL=match.js.map","/**\n * We split a string into an array of strings except if it in single or double quotes.\n * @param string\n * @param char\n * @returns\n */\nexport default function charSplit(string, delimiter) {\n    const results = [];\n    let inQuotes = false;\n    let start = 0;\n    let quote = '';\n    for (let i = 0; i < string.length; i++) {\n        const char = string[i];\n        if (inQuotes) {\n            if (char === quote) {\n                inQuotes = false;\n                quote = '';\n            }\n        }\n        else if (char === '\"' || char === \"'\") {\n            inQuotes = true;\n            quote = char;\n        }\n        else if (char.match(delimiter) && !inQuotes) {\n            results.push(string.slice(start, i).trim());\n            start = i + 1;\n        }\n        if (i === string.length - 1) {\n            results.push(string.slice(start).trim());\n        }\n    }\n    return results\n        .map((result) => {\n        if (result.startsWith('\"') && result.endsWith('\"')) {\n            return result.slice(1, -1);\n        }\n        if (result.startsWith(\"'\") && result.endsWith(\"'\")) {\n            return result.slice(1, -1);\n        }\n        return result;\n    })\n        .filter((result) => result);\n}\n//# sourceMappingURL=charSplit.js.map","const operators = {\n    '<': function lt(values) {\n        const value = Number(values[0]);\n        return (number) => {\n            return number < value;\n        };\n    },\n    '<=': function lte(values) {\n        const value = Number(values[0]);\n        return (number) => {\n            return number <= value;\n        };\n    },\n    '=': function equal(values) {\n        const possibleNumbers = values[0]\n            .split(',')\n            .filter((item) => item)\n            .map(Number);\n        return (number) => {\n            for (let i = 0; i < possibleNumbers.length; i++) {\n                if (number === possibleNumbers[i]) {\n                    return true;\n                }\n            }\n            return false;\n        };\n    },\n    '>=': function gte(values) {\n        const value = Number(values[0]);\n        return (number) => {\n            return number >= value;\n        };\n    },\n    '>': function gt(values) {\n        const value = Number(values[0]);\n        return (number) => {\n            return number > value;\n        };\n    },\n    '..': function range(values) {\n        const valueLow = Number(values[0]);\n        const valueHigh = Number(values[1]);\n        return (number) => number >= valueLow && number <= valueHigh;\n    },\n};\n/**\n * @internal\n */\nexport default function getCheckNumber(keyword) {\n    const { values, operator } = splitNumberOperator(keyword);\n    const checkOperator = operators[operator];\n    if (!checkOperator) {\n        throw new Error(`unknown operator ${operator}`);\n    }\n    return checkOperator(values);\n}\n/**\n * @internal\n */\nexport function splitNumberOperator(keyword) {\n    const match = /^\\s*\\(?\\s*(?<startOperator><=|>=|<|=|>|\\.\\.)?(?<firstValue>-?\\d*\\.?\\d+)(?:(?<afterDots>\\.\\.)(?<secondValue>-?\\d*\\.?\\d*))?\\s*\\)?\\s*$/.exec(keyword);\n    if (!match) {\n        return {\n            operator: '=',\n            values: [keyword],\n        };\n    }\n    if (!match.groups) {\n        throw new Error('unreachable');\n    }\n    const { startOperator, firstValue, afterDots, secondValue } = match.groups;\n    let operator = startOperator;\n    let values = firstValue ? [firstValue] : [];\n    // ..12\n    if (startOperator === '..') {\n        operator = '<=';\n    }\n    // 12..\n    else if (!startOperator && afterDots && !secondValue) {\n        operator = '>=';\n    }\n    // 12..14\n    else if (afterDots) {\n        operator = '..';\n    }\n    if (secondValue) {\n        values.push(secondValue);\n    }\n    return {\n        values,\n        operator: operator || '=',\n    };\n}\n//# sourceMappingURL=getCheckNumber.js.map","import escapeRegExp from 'lodash.escaperegexp';\nimport charSplit from './charSplit';\nconst operators = {\n    '<': function lt(query) {\n        return (string) => {\n            return string < query[0];\n        };\n    },\n    '<=': function lte(query) {\n        return (string) => {\n            return string <= query[0];\n        };\n    },\n    '=': function equal(query, insensitive) {\n        const possibilities = charSplit(query[0], ',')\n            .filter((item) => item)\n            .map((string) => new RegExp(`^${escapeRegExp(string)}$`, insensitive));\n        return (string) => {\n            for (const possibility of possibilities) {\n                if (possibility.test(string)) {\n                    return true;\n                }\n            }\n            return false;\n        };\n    },\n    '~': function fuzzy(query, insensitive) {\n        const possibilities = charSplit(query[0], ',')\n            .filter((item) => item)\n            .map((string) => new RegExp(escapeRegExp(string), insensitive));\n        return (string) => {\n            for (const possibility of possibilities) {\n                if (possibility.test(string)) {\n                    return true;\n                }\n            }\n            return false;\n        };\n    },\n    '>=': function lge(query) {\n        return (string) => {\n            return string >= query[0];\n        };\n    },\n    '>': function lg(query) {\n        return (string) => {\n            return string > query[0];\n        };\n    },\n    '..': function range(query) {\n        return (string) => {\n            return string >= query[0] && string <= query[1];\n        };\n    },\n};\n/**\n * GetCheckString.\n *\n * @param keyword - String.\n * @param insensitive - String.\n * @returns CheckString. (string)=>boolean.\n */\nexport default function getCheckString(keyword, insensitive) {\n    const { values, operator } = splitStringOperator(keyword);\n    const operatorCheck = operators[operator];\n    if (!operatorCheck) {\n        throw new Error(`unreachable unknown operator ${operator}`);\n    }\n    return operatorCheck(values, insensitive);\n}\n/**\n * @internal\n */\nexport function splitStringOperator(keyword) {\n    const parts = keyword.split('..');\n    const match = /^\\s*\\(?(?<operator><=|<|=|>=|>)?\\s*(?<value>\\S*)\\s*\\)?$/.exec(parts[0]);\n    if (!match) {\n        // Should never happen\n        return {\n            operator: '~',\n            values: [keyword],\n        };\n    }\n    if (!match.groups) {\n        throw new Error('unreachable');\n    }\n    let { operator, value } = match.groups;\n    let secondQuery = parts[1];\n    let values = [value];\n    if (parts.length > 1) {\n        operator = '..';\n        if (!secondQuery) {\n            operator = '>=';\n        }\n        else if (!value) {\n            values = [secondQuery];\n            operator = '<=';\n        }\n        else {\n            values.push(secondQuery);\n        }\n    }\n    return {\n        operator: operator || '~',\n        values,\n    };\n}\n//# sourceMappingURL=getCheckString.js.map","import escapeRegExp from 'lodash.escaperegexp';\nimport getCheckNumber from './getCheckNumber';\nimport getCheckString from './getCheckString';\n/**\n * @internal\n */\nexport default function convertKeywordsToCriteria(keywords, options) {\n    const { insensitive, pathAlias } = options;\n    return keywords.map((keyword) => {\n        const criterion = {};\n        if (keyword.startsWith('-')) {\n            criterion.negate = true;\n            keyword = keyword.substring(1);\n        }\n        const colon = keyword.indexOf(':');\n        if (colon > -1) {\n            const value = keyword.substring(colon + 1);\n            if (colon > 0) {\n                const key = keyword.substring(0, colon);\n                if (key === 'is') {\n                    // a property path exists\n                    criterion.is = new RegExp(`(^|\\\\.)${escapeRegExp(value)}(\\\\.|$)`, insensitive);\n                }\n                if (pathAlias[key]) {\n                    criterion.key = pathAlias[key];\n                }\n                else {\n                    criterion.key = new RegExp(`(^|\\\\.)${escapeRegExp(key)}(\\\\.|$)`, insensitive);\n                }\n            }\n            fillCriterion(criterion, value, insensitive);\n        }\n        else {\n            fillCriterion(criterion, keyword, insensitive);\n        }\n        return criterion;\n    });\n}\n/**\n * FillCriterion.\n *\n * @param criterion - Criterion.\n * @param keyword - String.\n * @param insensitive - String.\n */\nfunction fillCriterion(criterion, keyword, insensitive) {\n    criterion.checkString = getCheckString(keyword, insensitive);\n    criterion.checkNumber = getCheckNumber(keyword);\n}\n//# sourceMappingURL=convertKeywordsToCriteria.js.map","import escapeRegExp from 'lodash.escaperegexp';\n/**\n * EnsureObjectOfRegExps.\n *\n * @param object  - { [index: string]: string|RegExp }.\n * @param options - Object.\n * @param options.insensitive - String.\n * @returns - Record<string, string|RegExp>.\n */\nexport default function ensureObjectOfRegExps(object, options) {\n    const { insensitive } = options;\n    const toReturn = {};\n    for (const [key, value] of Object.entries(object)) {\n        if (value instanceof RegExp) {\n            toReturn[key] = value;\n        }\n        else {\n            toReturn[key] = new RegExp(`(^|\\\\.)${escapeRegExp(value)}(\\\\.|$)`, insensitive);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=ensureObjectOfRegExps.js.map","import escapeRegExp from 'lodash.escaperegexp';\nimport match from './match/match';\nimport charSplit from './utils/charSplit';\nimport convertKeywordsToCriteria from './utils/convertKeywordsToCriteria';\nimport ensureObjectOfRegExps from './utils/ensureObjectOfRegExps';\n/**\n *\n * Filter.\n *\n * @param data - Array to filter.\n * @param [options={}] - Object.\n * @param [options.limit=Infinity] - Maximum number of results.\n * @param [options.caseSensitive=false] - By default we ignore case.\n * @param [options.ignorePaths=[]] - Array of jpath to ignore.\n * @param [options.includePaths] - Array of jpath to allow, default everything.\n * @param [options.pathAlias={}] - Key (string), value (string of regexp).\n * @param [options.keywords=[]] - List of keywords used to filter the array.\n * @param [options.index=false] - Returns the indices in the array that match.\n * @param [options.predicate='AND'] - Could be either AND or OR.\n * @returns String[] | number[].\n */\nexport function filter(data, options = {}) {\n    let { index = false, predicate = 'AND', ignorePaths: ignorePathsOption = [], includePaths: includePathsOption, pathAlias: pathAliasOption = {}, } = options;\n    const limit = options.limit ? options.limit : Infinity;\n    const insensitive = options.caseSensitive ? '' : 'i';\n    let keywords = options.keywords || [];\n    const pathAlias = ensureObjectOfRegExps(pathAliasOption, { insensitive });\n    const ignorePaths = ignorePathsOption.map((path) => typeof path === 'string'\n        ? new RegExp(`(^|\\\\.)${escapeRegExp(path)}(\\\\.|$)`, insensitive)\n        : path);\n    const includePaths = includePathsOption\n        ? includePathsOption.map((path) => typeof path === 'string'\n            ? new RegExp(`(^|\\\\.)${escapeRegExp(path)}(\\\\.|$)`, insensitive)\n            : path)\n        : undefined;\n    if (typeof keywords === 'string') {\n        keywords = charSplit(keywords, /[ \\t\\r\\n]/);\n    }\n    const criteria = convertKeywordsToCriteria(keywords, {\n        insensitive,\n        pathAlias,\n    });\n    let matched = 0;\n    if (index) {\n        const result = [];\n        for (let i = 0; i < data.length && matched < limit; i++) {\n            if (match(data[i], criteria, predicate, {\n                ignorePaths,\n                includePaths,\n                pathAlias,\n            })) {\n                matched = result.push(i);\n            }\n        }\n        return result;\n    }\n    else {\n        const result = [];\n        for (let i = 0; i < data.length && matched < limit; i++) {\n            if (match(data[i], criteria, predicate, {\n                ignorePaths,\n                includePaths,\n                pathAlias,\n            })) {\n                matched = result.push(data[i]);\n            }\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=index.js.map"],"names":["INFINITY","symbolTag","reRegExpChar","reHasRegExpChar","RegExp","source","freeGlobal","global","Object","freeSelf","self","root","Function","objectProto","prototype","objectToString","toString","Symbol","symbolProto","undefined","symbolToString","baseToString","value","isSymbol","call","result","isObjectLike","escapeRegExp","string","test","replace","lodash_escaperegexp","nativeMatch","element","keyword","checkString","checkNumber","recursiveMatch","criterium","keys","options","Array","isArray","elm","i","push","didMatch","pop","is","join","joinedKeys","ignorePath","ignorePaths","includePaths","included","includePath","key","match","criteria","predicate","length","found","criterion","negate","charSplit","delimiter","results","inQuotes","start","quote","char","slice","trim","map","startsWith","endsWith","filter","operators","lt","values","Number","number","lte","equal","possibleNumbers","split","item","gte","gt","range","valueLow","valueHigh","getCheckNumber","operator","splitNumberOperator","checkOperator","Error","exec","groups","startOperator","firstValue","afterDots","secondValue","query","insensitive","possibilities","possibility","fuzzy","lge","lg","getCheckString","splitStringOperator","operatorCheck","parts","secondQuery","convertKeywordsToCriteria","keywords","pathAlias","substring","colon","indexOf","fillCriterion","ensureObjectOfRegExps","object","toReturn","entries","data","index","ignorePathsOption","includePathsOption","pathAliasOption","limit","Infinity","caseSensitive","path","matched"],"mappings":"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"}