import { MetaData } from "./meta_data"; import { NoOp } from "./string_transforms"; import { InstantiationMethod } from "./interfaces"; import isFunction from "lodash/isFunction"; /** * Use one of the provided function or use your own custom function. * * No function provided will result to an unchanged string property. * * @example```js import { SetSerializeKeyTransform, CamelCase } from "cerializr"; SetSerializeKeyTransform(CamelCase);``` * * @param fn */ export function SetSerializeKeyTransform(fn: (str: string) => string): void { MetaData.serializeKeyTransform = isFunction(fn) ? fn : NoOp; } /** * Use one of the provided function or use your own custom function. * * No function provided will result to an unchanged string property. * * @example```js import { SetDeserializeKeyTransform, CamelCase } from "cerializr"; SetDeserializeKeyTransform(CamelCase);``` * * @param fn */ export function SetDeserializeKeyTransform(fn: (str: string) => string): void { MetaData.deserializeKeyTransform = isFunction(fn) ? fn : NoOp; } /** * Change the default InstantiationMethod * @param instantiationMethod */ export function SetDefaultInstantiationMethod( instantiationMethod: InstantiationMethod | null ): void { MetaData.deserializeInstantationMethod = instantiationMethod === null ? InstantiationMethod.New : instantiationMethod; }