fixed injection watcher

This commit is contained in:
2026-06-11 08:18:30 +03:00
parent 481b93e84a
commit b5a1831b8e
5 changed files with 56 additions and 18 deletions
+22 -9
View File
@@ -228,22 +228,17 @@ export const api = {
});
if (!response.ok || !response.body) {
throw new Error("Failed to send message");
const detail = await response.text().catch(() => "");
throw new Error(detail || `Ошибка отправки (${response.status})`);
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const parts = buffer.split("\n\n");
buffer = parts.pop() ?? "";
const flushParts = function* (parts: string[]) {
for (const part of parts) {
if (!part.trim()) continue;
const lines = part.split("\n");
let event = "message";
let data = "";
@@ -257,6 +252,24 @@ export const api = {
yield { event, data: JSON.parse(data) };
}
}
};
while (true) {
const { done, value } = await reader.read();
if (value) {
buffer += decoder.decode(value, { stream: !done });
}
const parts = buffer.split("\n\n");
buffer = parts.pop() ?? "";
yield* flushParts(parts);
if (done) {
if (buffer.trim()) {
yield* flushParts([buffer]);
}
break;
}
}
},