decodeSseJson function
SSE の data ペイロード列を JSON マップ列にデコードする。
[DONE](OpenAI 互換 API の終端マーカー)・JSON でないもの・
マップでないものは読み飛ばす。
Implementation
Stream<Map<String, dynamic>> decodeSseJson(Stream<String> data) async* {
await for (final payload in data) {
final trimmed = payload.trim();
if (trimmed.isEmpty || trimmed == '[DONE]') continue;
Object? decoded;
try {
decoded = jsonDecode(trimmed);
} on FormatException {
continue;
}
if (decoded is Map<String, dynamic>) yield decoded;
}
}