123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- declare namespace mapObject {
- type Mapper<
- SourceObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
- > = (
- sourceKey: keyof SourceObjectType,
- sourceValue: SourceObjectType[keyof SourceObjectType],
- source: SourceObjectType
- ) => [
- targetKey: MappedObjectKeyType,
- targetValue: MappedObjectValueType,
- mapperOptions?: mapObject.MapperOptions
- ];
-
- interface Options {
- /**
- Recurse nested objects and objects in arrays.
-
- @default false
- */
- deep?: boolean;
-
- /**
- Target object to map properties on to.
-
- @default {}
- */
- target?: {[key: string]: any};
- }
-
- interface DeepOptions extends Options {
- deep: true;
- }
-
- interface TargetOptions<TargetObjectType extends {[key: string]: any}> extends Options {
- target: TargetObjectType;
- }
-
- interface MapperOptions {
- /**
- Whether `targetValue` should be recursed. Requires `deep: true`.
-
- @default true
- */
- shouldRecurse?: boolean;
- }
- }
-
- /**
- Map object keys and values into a new object.
-
- @param source - Source object to copy properties from.
- @param mapper - Mapping function.
-
- @example
- ```
- import mapObject = require('map-obj');
-
- const newObject = mapObject({foo: 'bar'}, (key, value) => [value, key]);
- //=> {bar: 'foo'}
-
- const newObject = mapObject({FOO: true, bAr: {bAz: true}}, (key, value) => [key.toLowerCase(), value]);
- //=> {foo: true, bar: {bAz: true}}
-
- const newObject = mapObject({FOO: true, bAr: {bAz: true}}, (key, value) => [key.toLowerCase(), value], {deep: true});
- //=> {foo: true, bar: {baz: true}}
- ```
- */
- declare function mapObject<
- SourceObjectType extends object,
- TargetObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
- >(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.DeepOptions & mapObject.TargetOptions<TargetObjectType>
- ): TargetObjectType & {[key: string]: unknown};
- declare function mapObject<
- SourceObjectType extends object,
- MappedObjectKeyType extends string,
- MappedObjectValueType
- >(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.DeepOptions
- ): {[key: string]: unknown};
- declare function mapObject<
- SourceObjectType extends {[key: string]: any},
- TargetObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
- >(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.TargetOptions<TargetObjectType>
- ): TargetObjectType & {[K in MappedObjectKeyType]: MappedObjectValueType};
- declare function mapObject<
- SourceObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
- >(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options?: mapObject.Options
- ): {[K in MappedObjectKeyType]: MappedObjectValueType};
-
- export = mapObject;
|