export function toSnakeCaseKey(key: string): string { return key .replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2") .replace(/([a-z0-9])([A-Z])/g, "$1_$2") .toLowerCase(); } export function readSnakeCaseParamRaw(params: Record, key: string): unknown { if (Object.hasOwn(params, key)) { return params[key]; } const snakeKey = toSnakeCaseKey(key); if (snakeKey !== key && Object.hasOwn(params, snakeKey)) { return params[snakeKey]; } return undefined; }