UNPKG

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
/** * 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;