UNPKG

@bemedev/decompose

Version:
51 lines (50 loc) 1.59 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); require("./constants/strings.cjs"); let ts_deepmerge = require("ts-deepmerge"); //#region src/recompose.ts function recomposeObjectUrl(shape, value) { const obj = {}; if (shape.length <= 0) return obj; const keys = shape.split("."); if (keys.length === 1) { const key = keys.shift(); obj[key] = value; } else { const key = keys.shift(); obj[key] = recomposeObjectUrl(keys.join("."), value); } return obj; } const _recompose = (shape) => { const entries = Object.entries(shape); if (entries.length === 0) return {}; const arr = []; entries.forEach(([key, value]) => { arr.push(recomposeObjectUrl(key, value)); }); return _recompose2((0, ts_deepmerge.merge)(...arr)); }; const _recompose2 = (shape) => { if (Array.isArray(shape) || typeof shape !== "object" || shape === null) return shape; const entries = Object.entries(shape).sort(([a], [b]) => a.localeCompare(b)); if (entries.length === 0) return {}; if (entries.every(([key]) => key.startsWith("[") && key.endsWith("]"))) { const arr = []; entries.forEach(([key, value]) => { const index = parseInt(key.slice(1, -1), 10); arr[index] = _recompose2(value); }); return arr; } return entries.reduce((acc, [key, value]) => { acc[key] = _recompose2(value); return acc; }, {}); }; const recompose = (shape) => _recompose(shape); recompose.low = _recompose; recompose.strict = _recompose; //#endregion exports.recompose = recompose; exports.recomposeObjectUrl = recomposeObjectUrl; //# sourceMappingURL=recompose.cjs.map