refactor(lib): extract shared image constants and JSON parsing utilities
Move image extensions, MIME types, and size limit into a dedicated constants module. Extract JSON-from-text parsing into a pure utility function for reuse across the codebase.
This commit is contained in:
19
src/lib/json-utils.ts
Normal file
19
src/lib/json-utils.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* Extract JSON from text that may contain prose, markdown code blocks, or raw JSON.
|
||||
* Pure function — same input = same output, no side effects.
|
||||
*/
|
||||
export const extractJsonFromText = (text: string): unknown => {
|
||||
try {
|
||||
return JSON.parse(text);
|
||||
} catch {
|
||||
const codeBlockMatch = text.match(/```(?:json)?\s*([\s\S]*?)```/);
|
||||
if (codeBlockMatch) {
|
||||
return JSON.parse(codeBlockMatch[1].trim());
|
||||
}
|
||||
const arrayMatch = text.match(/\[[\s\S]*\]/);
|
||||
if (arrayMatch) {
|
||||
return JSON.parse(arrayMatch[0]);
|
||||
}
|
||||
throw new Error("No JSON found in response");
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user