UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions and classes for everyday development needs.

91 lines 4.4 kB
import type { DotNotationKey, GenericObject, Numberified, Stringified } from './types'; /** * * Converts the values of specified keys in an object to numbers. * * Supports nested objects using dot-notation keys. * * @param data The object to convert. * @param options Options object specifying the conversion mapping. * - `keys`: The keys in the objects to be converted (dot-notation supported). * - `convertTo`: The target type, either `"string"` or `"number"`. * @returns The modified object with the converted values as `"string"` or `"number"`. */ export declare function convertObjectValues<T extends GenericObject, C extends 'string' | 'number'>(data: T, options: { keys: DotNotationKey<T>[]; convertTo: C; }): C extends 'string' ? Stringified<T> : C extends 'number' ? Numberified<T> : never; /** * * Converts the values of specified keys in an array of objects to numbers or strings. * * Supports nested objects using dot-notation keys. * * @param data The array of objects to convert. * @param options Options object specifying the conversion mapping. * - `keys`: The keys in the objects to be converted (dot-notation supported). * - `convertTo`: The target type, either `"string"` or `"number"`. * @returns The modified array of objects with the converted values as `"string"` or `"number"`. */ export declare function convertObjectValues<T extends GenericObject, C extends 'string' | 'number'>(data: T[], options: { keys: DotNotationKey<T>[]; convertTo: C; }): C extends 'string' ? Stringified<T>[] : C extends 'number' ? Numberified<T>[] : never; /** * * Pick specific fields from an object and create a new object with specified fields. * * @description This function creates a new object containing only the specified fields from the source object. * It is useful for creating a new object with a subset of properties from an existing object. * * @param T The type of the source object. * @param U The type of the keys to pick from the source object. * * @param source The source object from which to pick fields. * @param keys The keys of the fields to pick from the source object. * * @returns An object containing only the picked fields. */ export declare function pickFields<T extends GenericObject, U extends keyof T>(source: T, keys: U[]): { [K in U]: T[K]; }; /** * * Create a new object by removing specific keys from the source object. * * @param source - The original (source) object from which to delete fields. * @param keys - An array of keys (fields) to remove from the object. * * @returns A new object without the specified keys. * * @example * deleteFields({ a: 1, b: 2, c: 3 }, ['b']) * // => { a: 1, c: 3 } * * @notes * - Does not mutate the original object. * - Useful for excluding sensitive or unwanted fields. */ export declare function deleteFields<T extends GenericObject, U extends keyof T>(source: T, keys: readonly U[]): { [K in Exclude<keyof T, U>]: T[K]; }; /** * * Pick specific fields from an object based on a given condition. * * @description This function creates a new object containing only the fields that satisfy the given condition. * The condition can be based on the field's value or type, depending on the implementation. * * @param T The type of the source object. * * @param source The source object from which to pick fields. * @param condition A function that takes the key and value of a property and returns a boolean indicating whether the property should be picked. * * @returns An object containing only the fields that satisfy the condition. */ export declare function pickObjectFieldsByCondition<T extends GenericObject>(source: T, condition: (key: keyof T, value: T[keyof T]) => boolean): Partial<T>; /** * * Remap fields from one object to another. * @description This function creates a new object with fields remapped from the source object to the target object based on the provided field map. * * @param source The source object from which to remap fields. * @param fieldMap An object that maps target keys to source keys. * @returns An object with fields remapped according to the field map. */ export declare function remapFields<Source extends GenericObject, Target extends Record<string, keyof Source>>(source: Source, fieldMap: Target): { [K in keyof Target]: Source[Target[K]]; }; //# sourceMappingURL=convert.d.ts.map