import deepmerge from "deepmerge"; import { cloneDeep } from "lodash"; import { MergeOptions } from "~/types"; export const formatOutputName = (str: string, separator = "-") => { const words = str.split(separator); const uppercaseWords = words.map((word) => uppercaseFirstChar(word)); const humanReadableFormat = uppercaseWords.join(" "); const searchRegexp = new RegExp(" ", "g"); const pascalCaseFormat = humanReadableFormat.replace(searchRegexp, ""); return { pascalCaseFormat, humanReadableFormat, }; }; export const merge = ( x: Partial, y?: Partial, overrides: Partial = {}, options?: MergeOptions ) => { let result: Partial; if (y !== undefined) { if (options?.clone) { const clone = cloneDeep(y); result = deepmerge(x, clone); } else { result = deepmerge(x, y); } } else { result = x; } result = deepmerge(result, overrides); return result as T; }; const uppercaseFirstChar = (str: string) => { return str.charAt(0).toUpperCase() + str.slice(1); };