@bemedev/decompose
Version:
Decompose object and so more
1 lines • 2.02 kB
Source Map (JSON)
{"version":3,"file":"flatByKey.cjs","names":["DEFAULT_FLAT_OPTIONS"],"sources":["../src/flatByKey.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport { DEFAULT_FLAT_OPTIONS } from './constants';\nimport type { FlatByKey, FlatOptions } from './types.types';\n\ntype Flat_F = <\n T extends types.Ru,\n omit extends types.PickKeysBy<T, object> & string,\n>(\n val: T,\n omitKey: omit,\n options?: FlatOptions,\n) => FlatByKey<T, omit, FlatOptions>;\n\ntype _Flat_F = (\n val: any,\n omitKey: string,\n options?: FlatOptions,\n path?: string,\n) => any;\n\nexport type Flat = _Flat_F & {\n strict: Flat_F;\n low: _Flat_F;\n};\n\nconst _flat: _Flat_F = (val, omitKey, options, path = '') => {\n const _options = { ...DEFAULT_FLAT_OPTIONS, ...options };\n const { [omitKey]: recursives, ...rest } = val;\n\n const check = _options.children;\n\n let out: any = {};\n out[path === '' ? _options.sep : path] = check ? val : rest;\n\n if (recursives) {\n for (const key in recursives) {\n if (Object.prototype.hasOwnProperty.call(recursives, key)) {\n const element = recursives[key];\n const inner = _flat(\n element,\n omitKey,\n options,\n `${path}${_options.sep}${key}`,\n );\n out = { ...out, ...inner };\n }\n }\n }\n\n return out;\n};\n\nexport const flatByKey: Flat = (val, key, options) =>\n _flat(val, key, options);\nflatByKey.low = _flat;\nflatByKey.strict = _flat;\n"],"mappings":";;;AAyBA,MAAM,SAAkB,KAAK,SAAS,SAAS,OAAO,OAAO;CAC3D,MAAM,WAAW;EAAE,GAAGA,0BAAAA;EAAsB,GAAG;EAAS;CACxD,MAAM,GAAG,UAAU,YAAY,GAAG,SAAS;CAE3C,MAAM,QAAQ,SAAS;CAEvB,IAAI,MAAW,EAAE;AACjB,KAAI,SAAS,KAAK,SAAS,MAAM,QAAQ,QAAQ,MAAM;AAEvD,KAAI;OACG,MAAM,OAAO,WAChB,KAAI,OAAO,UAAU,eAAe,KAAK,YAAY,IAAI,EAAE;GACzD,MAAM,UAAU,WAAW;GAC3B,MAAM,QAAQ,MACZ,SACA,SACA,SACA,GAAG,OAAO,SAAS,MAAM,MAC1B;AACD,SAAM;IAAE,GAAG;IAAK,GAAG;IAAO;;;AAKhC,QAAO;;AAGT,MAAa,aAAmB,KAAK,KAAK,YACxC,MAAM,KAAK,KAAK,QAAQ;AAC1B,UAAU,MAAM;AAChB,UAAU,SAAS"}