{"version":3,"file":"array-of-objects-utilities.esm.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../node_modules/get-jpaths/lib/getJPaths.js","../node_modules/get-jpaths/lib/getJPathsAsObject.js","../lib/flattenToJPaths.js","../lib/getDistinctJPaths.js","../lib/objectArrayToText.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Recursively extracts all JSON paths with their corresponding primitive values from an object.\n * @param obj - The input object or value to traverse.\n * @param options - Optional parameters to control traversal and filtering.\n * @returns an array of objects each containing a jpath and its corresponding primitive value.\n */\nexport function getJPaths(obj, options = {}) {\n    const { maxArrayElements = 5, maxDepth = 3, includeJPaths = [], excludeJPaths = [], includeJPathRegexps = [], excludeJPathRegexps = [], modifiers = {}, } = options;\n    // convert modifiers to a Map for faster access\n    const modifiersMap = new Map(Object.entries(modifiers));\n    function matchesInclude(path) {\n        if (includeJPaths.length === 0 && includeJPathRegexps.length === 0) {\n            return true;\n        }\n        if (includeJPaths.length > 0 && includeJPaths.includes(path))\n            return true;\n        return includeJPathRegexps.some((re) => re.test(path));\n    }\n    function isExcluded(path) {\n        if (excludeJPaths.length === 0 && excludeJPathRegexps.length === 0) {\n            return false;\n        }\n        if (excludeJPaths.length > 0 && excludeJPaths.includes(path))\n            return true;\n        return excludeJPathRegexps.some((re) => re.test(path));\n    }\n    function traverse(value, prefix = '', depth = 0) {\n        // Stop if depth exceeds maximum\n        if (depth > maxDepth) {\n            return [];\n        }\n        const modifier = modifiersMap.get(prefix);\n        if (modifier) {\n            value = modifier(value);\n        }\n        let result = [];\n        if (isAnyArray(value)) {\n            const limitedItems = value.slice(0, maxArrayElements);\n            for (const [idx, item] of limitedItems.entries()) {\n                const newPrefix = prefix ? `${prefix}.${idx}` : `${idx}`;\n                result = result.concat(traverse(item, newPrefix, depth + 1));\n            }\n        }\n        else if (typeof value === 'object' && value !== null) {\n            for (const key of Object.keys(value)) {\n                const child = value[key];\n                const newPrefix = prefix ? `${prefix}.${key}` : key;\n                result = result.concat(traverse(child, newPrefix, depth + 1));\n            }\n        }\n        else if ((typeof value === 'string' ||\n            typeof value === 'number' ||\n            typeof value === 'boolean') &&\n            matchesInclude(prefix) &&\n            !isExcluded(prefix)) {\n            result.push({ jpath: prefix, value });\n        }\n        return result;\n    }\n    return traverse(obj);\n}\n//# sourceMappingURL=getJPaths.js.map","import { getJPaths } from \"./getJPaths.js\";\n/**\n * Recursively extracts all JSON paths with their corresponding primitive values from an object.\n * @param obj - The input object or value to traverse.\n * @param options - Optional parameters to control traversal and filtering.\n * @returns an object mapping jpaths to their corresponding primitive values.\n */\nexport function getJPathsAsObject(obj, options = {}) {\n    const jpaths = getJPaths(obj, options);\n    const result = {};\n    for (const entry of jpaths) {\n        result[entry.jpath] = entry.value;\n    }\n    return result;\n}\n//# sourceMappingURL=getJPathsAsObject.js.map","import { getJPathsAsObject } from 'get-jpaths';\n/**\n * When given an array of objects, it flattens each object to its JSON paths representation.\n * For example if you have an array of objects like:\n * [{ a: { b: 'ab', c: 'cd' }, d: 4 }, { e: 5 }]\n * It will return:\n * [{ 'a.b': 'ab', 'a.c': 'cd', 'd': 4 }, { 'e': 5 }]\n * Numerous options allows to select jPaths and modify values.\n * @param data - Array of objects to flatten\n * @param options - Options to customize the flattening process based on the get-jpaths library\n * @returns Array of flattened objects\n */\nexport function flattenToJPaths(data, options = {}) {\n    const results = [];\n    for (const item of data) {\n        results.push(getJPathsAsObject(item, options));\n    }\n    return results;\n}\n//# sourceMappingURL=flattenToJPaths.js.map","import { getJPaths } from 'get-jpaths';\n/**\n * When given an array of objects, it returns the distinct JSON paths found in the objects.\n * For example if you have an array of objects like:\n * [{ a: { b: 'ab', c: 'cd' }, d: 4 }, { e: 5 }]\n * It will return:\n * ['a.b', 'a.c', 'd', 'e']\n * @param data - array of objects\n * @param options - options to get jpaths\n * @returns Array of distinct JSON paths\n */\nexport function getDistinctJPaths(data, options = {}) {\n    const jPathSet = new Set();\n    for (const item of data) {\n        const jpaths = getJPaths(item, options);\n        for (const jpath of jpaths) {\n            jPathSet.add(jpath.jpath);\n        }\n    }\n    return Array.from(jPathSet);\n}\n//# sourceMappingURL=getDistinctJPaths.js.map","/**\n * Converts an array of objects into a text representation (e.g., CSV or TSV).\n * @param data - Array of objects\n * @param options - Options for text conversion\n * @returns Text representation of the object array\n */\nexport function objectArrayToText(data, options = {}) {\n    const { delimiter = '\\t', eol = '\\n', header = true, headerMapping = {}, } = options;\n    const allKeys = new Set();\n    for (const item of data) {\n        for (const key in item) {\n            allKeys.add(key);\n        }\n    }\n    const keys = Array.from(allKeys);\n    let text = '';\n    if (header) {\n        const headerRow = keys\n            .map((key) => headerMapping[key] || key)\n            .join(delimiter);\n        text += headerRow + eol;\n    }\n    for (const item of data) {\n        const row = keys\n            .map((key) => {\n            const value = item[key];\n            return value !== undefined ? String(value) : '';\n        })\n            .join(delimiter);\n        text += row + eol;\n    }\n    return text;\n}\n//# sourceMappingURL=objectArrayToText.js.map"],"names":["toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","getJPaths","obj","options","maxArrayElements","maxDepth","includeJPaths","excludeJPaths","includeJPathRegexps","excludeJPathRegexps","modifiers","modifiersMap","Map","entries","matchesInclude","path","length","some","re","test","isExcluded","traverse","prefix","depth","modifier","get","result","limitedItems","slice","idx","item","newPrefix","concat","key","keys","child","push","jpath","getJPathsAsObject","jpaths","entry","flattenToJPaths","data","results","getDistinctJPaths","jPathSet","Set","add","Array","from","objectArrayToText","delimiter","eol","header","headerMapping","allKeys","text","headerRow","map","join","row","undefined","String"],"mappings":"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","x_google_ignoreList":[0,1,2]}