Files
Moltbot/src/auto-reply/reply/config-value.ts

49 lines
1.0 KiB
TypeScript

export function parseConfigValue(raw: string): {
value?: unknown;
error?: string;
} {
const trimmed = raw.trim();
if (!trimmed) {
return { error: "Missing value." };
}
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
try {
return { value: JSON.parse(trimmed) };
} catch (err) {
return { error: `Invalid JSON: ${String(err)}` };
}
}
if (trimmed === "true") {
return { value: true };
}
if (trimmed === "false") {
return { value: false };
}
if (trimmed === "null") {
return { value: null };
}
if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
const num = Number(trimmed);
if (Number.isFinite(num)) {
return { value: num };
}
}
if (
(trimmed.startsWith('"') && trimmed.endsWith('"')) ||
(trimmed.startsWith("'") && trimmed.endsWith("'"))
) {
try {
return { value: JSON.parse(trimmed) };
} catch {
const unquoted = trimmed.slice(1, -1);
return { value: unquoted };
}
}
return { value: trimmed };
}