sikits
Version:
A powerful and comprehensive utility library for JavaScript and TypeScript with 100+ functions for strings, numbers, arrays, and objects
89 lines (88 loc) • 3.56 kB
TypeScript
/**
* Creates a deep clone of an object using structured clone (if available) or JSON
*/
export declare const deepCloneStructured: <T>(obj: T) => T;
/**
* Creates a deep clone of an object with circular reference support
*/
export declare const deepCloneCircular: <T>(obj: T, hash?: WeakMap<object, any>) => T;
/**
* Merges multiple objects deeply
*/
export declare const deepMerge: (...objects: any[]) => any;
/**
* Compares two objects deeply
*/
export declare const deepEqual: (obj1: any, obj2: any) => boolean;
/**
* Gets the difference between two objects
*/
export declare const objectDiff: (obj1: any, obj2: any) => {
added: string[];
removed: string[];
changed: string[];
};
/**
* Transforms object keys using a function
*/
export declare const transformKeys: <T extends Record<string, any>>(obj: T, transformer: (key: string) => string) => Record<string, any>;
/**
* Transforms object values using a function
*/
export declare const transformValues: <T extends Record<string, any>, U>(obj: T, transformer: (value: any, key: string) => U) => Record<string, U>;
/**
* Creates an object from an array of key-value pairs
*/
export declare const fromEntries: <T = any>(entries: [string, T][]) => Record<string, T>;
/**
* Creates an array of key-value pairs from an object
*/
export declare const toEntries: <T = any>(obj: Record<string, T>) => [string, T][];
/**
* Inverts an object (swaps keys and values)
*/
export declare const invert: <T extends Record<string, string | number>>(obj: T) => Record<string, string>;
/**
* Creates an object with default values
*/
export declare const createWithDefaults: <T extends Record<string, any>>(keys: string[], defaultValue: any) => T;
/**
* Creates an object from an array using a key function
*/
export declare const groupByKey: <T>(array: T[], keyFn: (item: T) => string) => Record<string, T[]>;
/**
* Creates an object from an array using a value function
*/
export declare const indexBy: <T>(array: T[], keyFn: (item: T) => string) => Record<string, T>;
/**
* Counts occurrences of values in an array
*/
export declare const countBy: <T>(array: T[], keyFn: (item: T) => string) => Record<string, number>;
/**
* Sums values in an array grouped by key
*/
export declare const sumBy: <T>(array: T[], keyFn: (item: T) => string, valueFn: (item: T) => number) => Record<string, number>;
/**
* Averages values in an array grouped by key
*/
export declare const averageBy: <T>(array: T[], keyFn: (item: T) => string, valueFn: (item: T) => number) => Record<string, number>;
/**
* Finds the maximum value in an array grouped by key
*/
export declare const maxBy: <T>(array: T[], keyFn: (item: T) => string, valueFn: (item: T) => number) => Record<string, number>;
/**
* Finds the minimum value in an array grouped by key
*/
export declare const minBy: <T>(array: T[], keyFn: (item: T) => string, valueFn: (item: T) => number) => Record<string, number>;
/**
* Creates a proxy object that logs all property access
*/
export declare const createLoggingProxy: <T extends Record<string, any>>(obj: T, logger?: (action: string, key: string, value?: any) => void) => T;
/**
* Creates a proxy object that validates property values
*/
export declare const createValidationProxy: <T extends Record<string, any>>(obj: T, validators: Record<string, (value: any) => boolean>) => T;
/**
* Creates a proxy object that caches computed properties
*/
export declare const createCachingProxy: <T extends Record<string, any>>(obj: T, computedProps: Record<string, () => any>) => T;