UNPKG

dbl-utils

Version:

Utilities for dbl, adba and others projects

1 lines 15.4 kB
{"version":3,"names":["object_mutation_1","cov_c56d95dlv","s","require","flat_1","exports","default","object","schema","b","JSON","parse","stringify","rules","extraTasks","f","processRules","key","undefined","tasks","Object","assign","iterate","keyData","itemName","data","loop","Array","isArray","itemFound","substring","split","reduce","obj","builded","map","item","join","first","next","ignore","d","def","if","found","task","attrs","a","flat","toReturn","ref","unflattened","unflatten","refObj","modify","deepMerge","keys","forEach","i","fixed","error","includes","pattern","result","replace","match","path","processed","err"],"sources":["/home/diablo/dev/dbl-utils/src/resolve-refs.ts"],"sourcesContent":["import { deepMerge } from \"./object-mutation\";\nimport { unflatten } from \"./flat\";\n\n/**\n * Resolve `$` references within an object or array using a provided schema.\n *\n * References are resolved recursively allowing simple string lookups and\n * advanced operations defined by `rules`.\n *\n * @param object - Object or array containing `$path/to/value` references.\n * @param schema - Optional schema object used as the base for lookups.\n * Defaults to a deep clone of `object`.\n * @param rules - Custom rule definitions used when a reference matches a rule\n * key. Each rule maps to a tuple where the first element is the task name and\n * the rest are arguments passed to that task.\n * @param extraTasks - Additional task implementations that can be referenced in\n * `rules`.\n * @returns The object with all references resolved.\n *\n * @example\n * ```ts\n * const data = { values: { a: 1 } };\n * const obj = { num: \"$values/a\" };\n * const result = resolveRefs(obj, data);\n * console.log(result.num); // 1\n * ```\n */\nexport default (\n object: any,\n schema = JSON.parse(JSON.stringify(object)),\n rules: Record<string, [string, ...any[]]> = {},\n extraTasks: Record<string, Function> = {}\n): any => {\n const processRules = (key: string): any => {\n if (!rules[key]) return undefined;\n const tasks: Record<string, Function> = {\n iterate: (keyData: any, itemName: string) => {\n const data = loop(keyData);\n if (!Array.isArray(data)) return [];\n const itemFound = key.substring(1).split('/')\n .reduce((obj, key) => obj[key], schema);\n const builded = data.map((item) => {\n schema[itemName] = item;\n return loop(itemFound);\n });\n delete schema[itemName];\n return builded;\n },\n join: (first: any, join: string, ...next: any) => {\n const f = loop(first);\n if (Array.isArray(f)) return f.join(join);\n return [f, ...loop([join, next])].join('');\n },\n ignore: (d: string, def: any) => d.substring(1).split('/')\n .reduce((obj, key) => obj[key], schema) || def,\n if: (d: string, found: any, def: any) => (d.substring(1).split('/')\n .reduce((obj, key) => obj[key], schema) && loop(found)) || def,\n ...extraTasks\n }\n const [task, ...attrs] = rules[key];\n return tasks[task](...attrs);\n }\n const loop = (item: any): any => {\n if (item === null) return item;\n if (Array.isArray(item)) {\n return item.map(a => loop(a)).flat();\n } else if (typeof item === 'object') {\n let toReturn: Record<string, any> = {};\n if (item.ref) {\n const ref = item.ref;\n delete item.ref;\n const unflattened = unflatten(item, '/');\n const refObj = loop(ref);\n const modify = loop(unflattened);\n if (typeof refObj === 'string') toReturn = deepMerge({ ref: refObj }, modify);\n else toReturn = deepMerge({}, refObj, modify);\n } else {\n Object.keys(item).forEach(i => {\n toReturn[i] = loop(item[i])\n });\n }\n return toReturn;\n } else if (typeof item === 'string' && item[0] === '$' && item[1] !== '{') {\n const fixed = processRules(item);\n if (fixed !== undefined) return fixed;\n let keys = item.substring(1).split('/');\n // Get the content of $path/to/element\n let data;\n try {\n data = keys.reduce((obj, key) => obj[key], schema);\n data = JSON.parse(JSON.stringify(data));\n } catch (error) {\n return item;\n }\n return loop(data);\n } else if (typeof item === 'string' && item.includes('${')) {\n // Replace all occurrences of ${some/path} within the string\n const pattern = /\\$\\{([^}]+?)\\}/g; // Matches ${something/here}\n let result = item;\n\n result = result.replace(pattern, (match, path) => {\n try {\n const keys = path.split('/');\n let data = keys.reduce((obj: any, key: string) => obj[key], schema);\n data = JSON.parse(JSON.stringify(data));\n const processed = loop(data);\n return typeof processed === 'string' ? processed : JSON.stringify(processed);\n } catch (err) {\n return match; // If lookup fails, keep the original\n }\n });\n\n return result;\n } else {\n return item;\n }\n }\n return loop(JSON.parse(JSON.stringify(object)));\n };\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","ignoreList":[]}