@bemedev/decompose
Version:
Decompose object and so more
31 lines (30 loc) • 1.02 kB
JavaScript
import { sortMap } from "./sortMap.js";
import { DELIMITER } from "./constants/strings.js";
import { castings } from "@bemedev/types";
//#region src/decomposeSV.ts
function ddecompose(val, prev = "") {
const output = [];
const _prev = prev ? prev + DELIMITER : "";
if (prev !== "") output.push(prev);
if (typeof val === "string") output.push(`${_prev}${val}`);
else {
const keys = Object.keys(val);
output.push(...keys.map((key) => ddecompose(val[key], `${_prev}${key}`)).flat());
}
return output;
}
const _decomposeSV = (val, sorter = sortMap) => {
const output1 = ddecompose(val, "");
output1.sort(sorter);
const regex = new RegExp(DELIMITER, "g");
return output1.map((value) => value.replace(regex, "."));
};
/* v8 ignore next 3 */
const decomposeSV = (val, sorter) => {
return castings.commons.any(_decomposeSV(val, sorter));
};
decomposeSV.low = _decomposeSV;
decomposeSV.strict = castings.commons.unknown(_decomposeSV);
//#endregion
export { decomposeSV };
//# sourceMappingURL=decomposeSV.js.map