import { type CompleteValues, type ExcludeKeysWithMatchingValues, type ExtractKeysWithMatchingValues } from '@augment-vir/core'; import { type OptionalKeysOf, type RequiredKeysOf } from 'type-fest'; /** * Filters an object. Like * [`[].filter`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries) * but for objects. * * @category Object * @category Package : @augment-vir/common * @example * * ```ts * import {filterObject} from '@augment-vir'; * * filterObject({a: 1, b: 2, c: 3}, (key, value) => { * return value >= 2; * }); * // output is `{b: 2, c: 3}` * ``` * * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function filterObject(inputObject: Readonly, callback: (key: keyof ObjectGeneric, value: CompleteValues, fullObject: ObjectGeneric) => boolean): Partial; /** * Converts any optionally `undefined` keys to partials with non-undefined values. This does not * exclude `null` (but {@link RemoveNullishValues} does). * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export type RemoveUndefinedValues = string extends keyof ObjectGeneric ? Record> : { [Key in ExcludeKeysWithMatchingValues]: ObjectGeneric[Key]; } & { [Key in ExtractKeysWithMatchingValues]?: Exclude; }; /** * Converts any optionally `undefined` or `null` keys to partials with non-nullable values. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export type RemoveNullishValues = string extends keyof ObjectGeneric ? Record> : { [Key in ExcludeKeysWithMatchingValues]: ObjectGeneric[Key]; } & { [Key in ExtractKeysWithMatchingValues]?: NonNullable; }; /** * Converts any `undefined` values into `null`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export type ReplaceUndefinedValuesWithNull = { [Key in RequiredKeysOf>]: undefined extends ObjectGeneric[Key] ? Exclude | null : ObjectGeneric[Key]; } & { [Key in OptionalKeysOf>]?: undefined extends Required[Key] ? Exclude | null : ObjectGeneric[Key]; }; /** * Converts any `null` values into `undefined`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export type ReplaceNullValuesWithUndefined = { [Key in RequiredKeysOf>]: null extends ObjectGeneric[Key] ? Exclude | undefined : ObjectGeneric[Key]; } & { [Key in OptionalKeysOf>]?: null extends Required[Key] ? Exclude | undefined : ObjectGeneric[Key]; }; /** * Removes keys for values that are `undefined`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function removeUndefinedValues(input: Readonly): RemoveUndefinedValues; /** * Removes keys for values that are `undefined` or `null`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function removeNullishValues(input: Readonly): RemoveNullishValues; /** * Replaces all `undefined` values with `null`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function replaceUndefinedValuesWithNull(input: Readonly): ReplaceUndefinedValuesWithNull; /** * Replaces all `null` values with `undefined`. * * @category Object * @category Package : @augment-vir/common * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function replaceNullValuesWithUndefined(input: Readonly): ReplaceNullValuesWithUndefined;