UNPKG

@bemedev/decompose

Version:
61 lines (60 loc) 2.45 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_constants_strings = require("./constants/strings.cjs"); const require_constants_objects = require("./constants/objects.cjs"); const require_helpers = require("./helpers.cjs"); //#region src/decompose.ts function ddecompose(arg, prev = "", options = require_constants_objects.DEFAULT_DECOMPOSE_OPTIONS, first = true) { const { object } = { ...require_constants_objects.DEFAULT_DECOMPOSE_OPTIONS, ...options }; const canAddObjectKeys = object === "both" || object === "object"; const canAddKeys = object === "both" || object === "key"; const _prev = prev ? prev + require_constants_strings.DELIMITER : ""; const output = []; if (Array.isArray(arg)) { if (canAddObjectKeys && !first) output.push([`${prev}`, arg]); arg.forEach((item, index) => { const values = ddecompose(item, `${_prev}${require_constants_strings.LEFT_BRACKET}${index}${require_constants_strings.RIGHT_BRACKET}`, options, false); output.push(...values); }); return output; } if (require_helpers.isPrimitive(arg)) { const isFirst = !prev.includes(require_constants_strings.DELIMITER); if (canAddKeys || isFirst) output.push([`${prev}`, arg]); return output; } if (canAddObjectKeys && prev !== "") output.push([`${prev}`, arg]); Object.entries(arg).forEach(([key, value]) => { const values = ddecompose(value, `${_prev}${key}`, options, false); output.push(...values); }); return output; } const _decompose = (val, options) => { const entries1 = ddecompose(val, "", options); const { sep, start } = { ...require_constants_objects.DEFAULT_DECOMPOSE_OPTIONS, ...options }; if (entries1.length == 0) { if (Array.isArray(val)) return []; return {}; } const regexDel = new RegExp(require_constants_strings.DELIMITER, "g"); const regexLeft = new RegExp(require_constants_strings.LEFT_BRACKET, "g"); const regexRight = new RegExp(require_constants_strings.RIGHT_BRACKET, "g"); const entries2 = entries1.map(([__key, value]) => { const _key = __key.replace(regexDel, sep).replace(regexLeft, `[`).replace(regexRight, `]`); return [start ? `${sep}${_key}` : _key, value]; }); return Object.fromEntries(entries2); }; /* v8 ignore next 1 */ const decompose = (val, options) => _decompose(val, options); decompose.low = decompose; decompose.strict = decompose; //#endregion exports.decompose = decompose; //# sourceMappingURL=decompose.cjs.map