Files
openclaw/src/param-key.ts
2026-04-07 22:57:52 +01:00

20 lines
606 B
TypeScript

import { lowercasePreservingWhitespace } from "./shared/string-coerce.js";
function toSnakeCaseKey(key: string): string {
const snakeKey = key
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
.replace(/([a-z0-9])([A-Z])/g, "$1_$2");
return lowercasePreservingWhitespace(snakeKey);
}
export function readSnakeCaseParamRaw(params: Record<string, unknown>, 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;
}