UNPKG

@bemedev/decompose

Version:
1 lines 2.49 kB
{"version":3,"file":"recompose.cjs","sources":["../src/recompose.ts"],"sourcesContent":["import { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './types.types';\n\nexport function recomposeObjectUrl<T>(shape: string, value: T) {\n const obj: Ru = {};\n if (shape.length <= 0) return obj;\n\n const keys = shape.split(SEPARATOR);\n if (keys.length === 1) {\n const key = keys.shift();\n obj[key!] = value;\n } else {\n const key = keys.shift();\n obj[key!] = recomposeObjectUrl(keys.join(SEPARATOR), value);\n }\n\n return obj;\n}\n\n/**\n * Recompose a flatten object \n * @example\n * \n * { 'data.age': 10, 'human.login': 'login' }\n * will become\n * {\n data: {\n age: 10,\n },\n human: {\n login: 'login',\n },\n }\n * @remark \n * The generated typescript type takes too much ressources\n\n * @todo\n Add type to the return\n */\ntype Recompose_F = <T extends Ru>(shape: T) => Recompose<T>;\ntype _Recompose_F = (shape: any) => any;\n\nexport type Recomposer = Recompose_F & {\n strict: Recompose_F;\n low: _Recompose_F;\n};\n\nconst _recompose: _Recompose_F = shape => {\n const entries = Object.entries(shape);\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n arr.push(recomposeObjectUrl(key, value));\n });\n return merge(...arr);\n};\n\nexport const recompose: Recomposer = shape => _recompose(shape);\nrecompose.low = _recompose;\nrecompose.strict = _recompose;\n"],"names":["SEPARATOR","merge"],"mappings":";;;;;AAIgB,SAAA,kBAAkB,CAAI,KAAa,EAAE,KAAQ,EAAA;IAC3D,MAAM,GAAG,GAAO,EAAE;AAClB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAACA,2BAAS,CAAC;AACnC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,KAAK;;SACZ;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAACA,2BAAS,CAAC,EAAE,KAAK,CAAC;;AAG7D,IAAA,OAAO,GAAG;AACZ;AA8BA,MAAM,UAAU,GAAiB,KAAK,IAAG;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,MAAM,GAAG,GAAU,EAAE;IACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC/B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAC,CAAC;AACF,IAAA,OAAOC,iBAAK,CAAC,GAAG,GAAG,CAAC;AACtB,CAAC;AAEM,MAAM,SAAS,GAAe,KAAK,IAAI,UAAU,CAAC,KAAK;AAC9D,SAAS,CAAC,GAAG,GAAG,UAAU;AAC1B,SAAS,CAAC,MAAM,GAAG,UAAU;;;;;"}