@mfederczuk/deeptools
Version:
A set of utility functions that recursively operate on objects
46 lines (45 loc) • 1.66 kB
TypeScript
export type DeepFreezeOptions = {
/**
* Detects circular references in objects and avoids infinite recursion.
*
* Default is `false`.
*/
mindCircularReferences?: boolean;
};
/**
* Recursively freezes **arr** and all of its items & other properties.
*
* @param arr The 3-dimensional array to freeze.
* @param options Options to change the behavior of `deepFreeze`.
*
* @returns **arr**, deeply frozen.
*/
declare function deepFreeze<T>(arr: readonly (readonly (readonly T[])[])[], options?: Readonly<DeepFreezeOptions>): readonly (readonly (readonly Readonly<T>[])[])[];
/**
* Recursively freezes **arr** and all of its items & other properties.
*
* @param arr The 2-dimensional array to freeze.
* @param options Options to change the behavior of `deepFreeze`.
*
* @returns **arr**, deeply frozen.
*/
declare function deepFreeze<T>(arr: readonly (readonly T[])[], options?: Readonly<DeepFreezeOptions>): readonly (readonly Readonly<T>[])[];
/**
* Recursively freezes **arr** and all of its items & other properties.
*
* @param arr The 1-dimensional array to freeze.
* @param options Options to change the behavior of `deepFreeze`.
*
* @returns **arr**, deeply frozen.
*/
declare function deepFreeze<T>(arr: readonly T[], options?: Readonly<DeepFreezeOptions>): readonly Readonly<T>[];
/**
* Recursively freezes **obj** and all of its properties.
*
* @param obj The object to freeze.
* @param options Options to change the behavior of `deepFreeze`.
*
* @returns **obj**, deeply frozen.
*/
declare function deepFreeze<T>(obj: T, options?: Readonly<DeepFreezeOptions>): Readonly<T>;
export { deepFreeze };