export function toUpper(key: string) { return key.replaceAll(/_./g, (v) => v[1].toUpperCase()) } export function toLower(key: string) { return key.replaceAll(/[A-ZА-ЯЁ]/g, (v) => `_${v.toLowerCase()}`) } export function toUpperAllKeys(value: unknown): unknown { if (value && typeof value === 'object') { if (Array.isArray(value)) { const typedValue = value as unknown[] const result: unknown[] = [] typedValue.forEach((v) => { result.push(toUpperAllKeys(v)) }) return result } const typedValue = value as { [key: string]: unknown } const result: { [key: string]: unknown } = {} Object.entries(typedValue).forEach(([k, v]) => { result[toUpper(k)] = toUpperAllKeys(v) }) return result } return value } export function toLowerAllKeys(value: unknown): unknown { if (value && typeof value === 'object') { if (Array.isArray(value)) { const typedValue = value as unknown[] const result: unknown[] = [] typedValue.forEach((v) => { result.push(toLowerAllKeys(v)) }) return result } const typedValue = value as { [key: string]: unknown } const result: { [key: string]: unknown } = {} Object.entries(typedValue).forEach(([k, v]) => { result[toLower(k)] = toLowerAllKeys(v) }) return result } return value }