remeda
Version:
A utility library for JavaScript and Typescript.
1 lines • 2.75 kB
Source Map (JSON)
{"version":3,"file":"mapValues.cjs","names":["purry","out: Record<string, Value>"],"sources":["../src/mapValues.ts"],"sourcesContent":["import type { Simplify } from \"type-fest\";\nimport type { EnumerableStringKeyOf } from \"./internal/types/EnumerableStringKeyOf\";\nimport type { EnumerableStringKeyedValueOf } from \"./internal/types/EnumerableStringKeyedValueOf\";\nimport { purry } from \"./purry\";\n\ntype MappedValues<T extends object, Value> = Simplify<{\n -readonly [P in keyof T as P extends number | string ? P : never]: Value;\n}>;\n\n/**\n * Maps values of `object` and keeps the same keys. Symbol keys are not passed\n * to the mapper and will be removed from the output object.\n *\n * To also copy the symbol keys to the output use merge:\n * `merge(data, mapValues(data, mapper))`).\n *\n * @param data - The object to map.\n * @param valueMapper - The mapping function.\n * @signature\n * R.mapValues(data, mapper)\n * @example\n * R.mapValues({a: 1, b: 2}, (value, key) => value + key) // => {a: '1a', b: '2b'}\n * @dataFirst\n * @category Object\n */\nexport function mapValues<T extends object, Value>(\n data: T,\n valueMapper: (\n value: EnumerableStringKeyedValueOf<T>,\n key: EnumerableStringKeyOf<T>,\n data: T,\n ) => Value,\n): MappedValues<T, Value>;\n\n/**\n * Maps values of `object` and keeps the same keys. Symbol keys are not passed\n * to the mapper and will be removed from the output object.\n *\n * To also copy the symbol keys to the output use merge:\n * `merge(data, mapValues(data, mapper))`).\n *\n * @param valueMapper - The mapping function.\n * @signature\n * R.mapValues(mapper)(data)\n * @example\n * R.pipe({a: 1, b: 2}, R.mapValues((value, key) => value + key)) // => {a: '1a', b: '2b'}\n * @dataLast\n * @category Object\n */\nexport function mapValues<T extends object, Value>(\n valueMapper: (\n value: EnumerableStringKeyedValueOf<T>,\n key: EnumerableStringKeyOf<T>,\n data: T,\n ) => Value,\n): (data: T) => MappedValues<T, Value>;\n\nexport function mapValues(...args: ReadonlyArray<unknown>): unknown {\n return purry(mapValuesImplementation, args);\n}\n\nfunction mapValuesImplementation<T extends object, Value>(\n data: T,\n valueMapper: (value: unknown, key: string, data: T) => Value,\n): Record<string, Value> {\n const out: Record<string, Value> = {};\n\n for (const [key, value] of Object.entries(data)) {\n const mappedValue = valueMapper(value, key, data);\n out[key] = mappedValue;\n }\n\n return out;\n}\n"],"mappings":"wCAyDA,SAAgB,EAAU,GAAG,EAAuC,CAClE,OAAOA,EAAAA,EAAM,EAAyB,EAAK,CAG7C,SAAS,EACP,EACA,EACuB,CACvB,IAAMC,EAA6B,EAAE,CAErC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAE7C,EAAI,GADgB,EAAY,EAAO,EAAK,EAAK,CAInD,OAAO"}