{"version":3,"file":"json-parse.d.ts","sourceRoot":"","sources":["../../src/utils/json-parse.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EACzC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACjD,CAAC,CAsBH","sourcesContent":["import { parse as partialParse } from \"partial-json\";\n\n/**\n * Attempts to parse potentially incomplete JSON during streaming.\n * Always returns a valid object, even if the JSON is incomplete.\n *\n * @param partialJson The partial JSON string from streaming\n * @returns Parsed object or empty object if parsing fails\n */\nexport function parseStreamingJson<T = any>(\n\tpartialJson: string | undefined,\n\tonWarning?: (code: string, message: string) => void,\n): T {\n\tif (!partialJson || partialJson.trim() === \"\") {\n\t\treturn {} as T;\n\t}\n\n\t// Try standard parsing first (fastest for complete JSON)\n\ttry {\n\t\treturn JSON.parse(partialJson) as T;\n\t} catch {\n\t\t// Try partial-json for incomplete JSON\n\t\ttry {\n\t\t\tconst result = partialParse(partialJson);\n\t\t\treturn (result ?? {}) as T;\n\t\t} catch {\n\t\t\t// Both JSON.parse and partial-json failed — input is unparseable garbage\n\t\t\tonWarning?.(\n\t\t\t\t\"json_parse_total_failure\",\n\t\t\t\t`Both JSON.parse and partial-json failed on: ${partialJson.slice(0, 200)}`,\n\t\t\t);\n\t\t\treturn {} as T;\n\t\t}\n\t}\n}\n"]}