{"version":3,"sources":["../../src/streaming/text.ts"],"sourcesContent":["import { StreamChunk } from './types';\r\n\r\nexport class ChunkDecoder {\r\n  private decoder = new TextDecoder('utf-8');\r\n\r\n  decode(chunk: StreamChunk): string {\r\n    if (typeof chunk === 'string') return chunk;\r\n    const bytes = chunk instanceof ArrayBuffer ? new Uint8Array(chunk) : chunk;\r\n    return this.decoder.decode(bytes, { stream: true });\r\n  }\r\n}\r\n\r\nexport function normalizeNewlines(s: string): string {\r\n  // Keep it simple: normalize CRLF to LF for parsing logic.\r\n  return s.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\r\n}\r\n\r\nexport function splitLinesKeepRemainder(buffer: string): { lines: string[]; remainder: string } {\r\n  const idx = buffer.lastIndexOf('\\n');\r\n  if (idx === -1) return { lines: [], remainder: buffer };\r\n  const head = buffer.slice(0, idx);\r\n  const remainder = buffer.slice(idx + 1);\r\n  return { lines: head.split('\\n'), remainder };\r\n}\r\n\r\nexport function updateStringState(line: string, inString: string | null): string | null {\r\n  let state = inString;\r\n  for (let i = 0; i < line.length; i++) {\r\n    const char = line[i];\r\n    if (state === null) {\r\n      if (char === '\"' || char === \"'\") {\r\n        state = char;\r\n      }\r\n    } else {\r\n      if (char === state) {\r\n        // Check if it's escaped\r\n        let backslashes = 0;\r\n        for (let j = i - 1; j >= 0; j--) {\r\n          if (line[j] === '\\\\') backslashes++;\r\n          else break;\r\n        }\r\n        if (backslashes % 2 === 0) {\r\n          state = null;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return state;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,aAAa;AAAA,EAChB,UAAU,IAAI,YAAY,OAAO;AAAA,EAEzC,OAAO,OAA4B;AACjC,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAM,QAAQ,iBAAiB,cAAc,IAAI,WAAW,KAAK,IAAI;AACrE,WAAO,KAAK,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,EACpD;AACF;AAEO,SAAS,kBAAkB,GAAmB;AAEnD,SAAO,EAAE,QAAQ,SAAS,IAAI,EAAE,QAAQ,OAAO,IAAI;AACrD;AAEO,SAAS,wBAAwB,QAAwD;AAC9F,QAAM,MAAM,OAAO,YAAY,IAAI;AACnC,MAAI,QAAQ,GAAI,QAAO,EAAE,OAAO,CAAC,GAAG,WAAW,OAAO;AACtD,QAAM,OAAO,OAAO,MAAM,GAAG,GAAG;AAChC,QAAM,YAAY,OAAO,MAAM,MAAM,CAAC;AACtC,SAAO,EAAE,OAAO,KAAK,MAAM,IAAI,GAAG,UAAU;AAC9C;AAEO,SAAS,kBAAkB,MAAc,UAAwC;AACtF,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,OAAO,KAAK,CAAC;AACnB,QAAI,UAAU,MAAM;AAClB,UAAI,SAAS,OAAO,SAAS,KAAK;AAChC,gBAAQ;AAAA,MACV;AAAA,IACF,OAAO;AACL,UAAI,SAAS,OAAO;AAElB,YAAI,cAAc;AAClB,iBAAS,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;AAC/B,cAAI,KAAK,CAAC,MAAM,KAAM;AAAA,cACjB;AAAA,QACP;AACA,YAAI,cAAc,MAAM,GAAG;AACzB,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;","names":[]}