import isObject from 'lodash.isobject'; import lodashKebabCase from 'lodash.kebabcase'; import { type KebabCase, type KebabCasedPropertiesDeep } from 'type-fest'; export const kebabCase = (text: T) => lodashKebabCase(text as unknown as string) as KebabCase; export const kebabCaseDeep = (value: T): KebabCasedPropertiesDeep => { // Check if it's an array if (Array.isArray(value)) { return value.map(kebabCaseDeep) as KebabCasedPropertiesDeep; } // Check if it's an object if (isObject(value)) { // oxlint-disable-next-line @typescripttypescript/no-explicit-any const result: Record = {}; for (const key in value) { result[kebabCase(key)] = kebabCaseDeep(value[key]); } return result as KebabCasedPropertiesDeep; } return value as KebabCasedPropertiesDeep; };