decodeSseJson function

Stream<Map<String, dynamic>> decodeSseJson(
  1. Stream<String> data
)

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;
  }
}