export const extractJSON = (str?: string) => { if (!str) return let firstOpen = 0, firstClose = 0, candidate = ''; firstOpen = str.indexOf('{', firstOpen + 1); do { firstClose = str.lastIndexOf('}'); if (firstClose <= firstOpen) { return; } do { candidate = str.substring(firstOpen, firstClose + 1); try { let result = JSON.parse(candidate); return { result, start: firstOpen < 0 ? 0 : firstOpen, end: firstClose } } catch (e) { } firstClose = str.substring(0, firstClose).lastIndexOf('}'); } while (firstClose > firstOpen); firstOpen = str.indexOf('{', firstOpen + 1); } while (firstOpen != -1); } export const parseJSON = (str?: string | null): any | undefined => { if (!str) return undefined try { const parsed = JSON.parse(str); return typeof parsed === "object" ? parsed : undefined; } catch (error) { return undefined; } }