UNPKG

@bemedev/decompose

Version:
38 lines (35 loc) 1.34 kB
import { castings } from '@bemedev/types'; import { DELIMITER } from './constants/strings.js'; import { isPrimitive } from './helpers.js'; import { sortMap } from './sortMap.js'; function ddecomposeKeys(val, prev = '', addObjectKeys = true) { const _prev = prev ? prev + DELIMITER : ''; const output = []; const entries1 = Object.entries(val); entries1.forEach(([key, value]) => { const isPrimit = isPrimitive(value); if (!isPrimit) { if (addObjectKeys) output.push(`${_prev}${key}`); const values = ddecomposeKeys(value, `${_prev}${key}`, addObjectKeys); output.push(...values); } else output.push(`${_prev}${key}`); }); return output; } const _decomposeKeys = (val, sorter = sortMap, addObjectKeys = true) => { const output1 = ddecomposeKeys(val, '', addObjectKeys); output1.sort(sorter); const regex = new RegExp(DELIMITER, 'g'); return output1.map(value => value.replace(regex, '.')); }; const decomposeKeys = (val, sorter, addObjectKeys) => { return castings.commons.any(_decomposeKeys(val, sorter, addObjectKeys)); }; decomposeKeys.low = _decomposeKeys; decomposeKeys.strict = castings.commons.unknown(_decomposeKeys); export { decomposeKeys }; //# sourceMappingURL=decomposeKeys.js.map