Spaces:
Configuration error
Configuration error
| 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; | |
| } | |