mirror of
https://github.com/openclaw/openclaw.git
synced 2026-02-19 18:39:20 -05:00
27 lines
1000 B
TypeScript
27 lines
1000 B
TypeScript
export type BooleanParseOptions = {
|
|
truthy?: string[];
|
|
falsy?: string[];
|
|
};
|
|
|
|
const DEFAULT_TRUTHY = ["true", "1", "yes", "on"] as const;
|
|
const DEFAULT_FALSY = ["false", "0", "no", "off"] as const;
|
|
const DEFAULT_TRUTHY_SET = new Set<string>(DEFAULT_TRUTHY);
|
|
const DEFAULT_FALSY_SET = new Set<string>(DEFAULT_FALSY);
|
|
|
|
export function parseBooleanValue(
|
|
value: unknown,
|
|
options: BooleanParseOptions = {},
|
|
): boolean | undefined {
|
|
if (typeof value === "boolean") return value;
|
|
if (typeof value !== "string") return undefined;
|
|
const normalized = value.trim().toLowerCase();
|
|
if (!normalized) return undefined;
|
|
const truthy = options.truthy ?? DEFAULT_TRUTHY;
|
|
const falsy = options.falsy ?? DEFAULT_FALSY;
|
|
const truthySet = truthy === DEFAULT_TRUTHY ? DEFAULT_TRUTHY_SET : new Set(truthy);
|
|
const falsySet = falsy === DEFAULT_FALSY ? DEFAULT_FALSY_SET : new Set(falsy);
|
|
if (truthySet.has(normalized)) return true;
|
|
if (falsySet.has(normalized)) return false;
|
|
return undefined;
|
|
}
|