import { IObj, IResult } from '../interfaces'; import type { IStringifier, IParser } from './jsonCache.types'; /** * @internal */ export interface IFlattener { flatten(obj: IObj): IResult; unflatten(result: IResult): IObj; } /** * @internal * * Class for flattening and unflattening an object / array * * This could've been a simple function but is rather a class * because we are instantiating it during the constructor phase of * JSONCache class by calling it with stringifier & parser options. */ export declare class Flattener implements IFlattener { private stringifier; private parser; constructor(stringifier?: IStringifier, parser?: IParser); /** * Flattens the given object and converts it * to a dept of 1 * * @param obj Object to be flattened */ flatten(obj: IObj): IResult; /** * Unflattens the given object to its original * format and also applies the necessary types * that it originally had * * @param flattened Flattened object */ unflatten(flattened: IResult): IObj; /*********************************** * PRIVATE METHODS - Flatten helpers **********************************/ private traverse; private assignResult; /************************************* * PRIVATE METHODS - Unflatten helpers *************************************/ private mergeTypes; private scaffoldStructure; }