/
githubmirror
/
ydb-embedded-ui
Обзор
Документация
Войти
/
githubmirror
/
ydb-embedded-ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/services/api/streamingPartReader.ts
33 строки
1 KB
Anton Standrik
fix: more accurate streaming statuses (#3593)
10 мар 2026, 10:39
Не верифицирован
10 мар 2026, 10:39
b04ab9b
Код
Авторство
О чём код?
import type {MultipartPart} from '@mjackson/multipart-parser'; const MAX_PART_SIZE = 64 * 1024 * 1024; let decoder: TextDecoder | undefined; export async function readPartText(part: MultipartPart): Promise<string> { const contentLength = part.headers.contentLength; if (contentLength === null || contentLength <= 0 || contentLength > MAX_PART_SIZE) { return part.text(); } const reader = part.body.getReader(); try { const buffer = new Uint8Array(contentLength); let offset = 0; while (offset < contentLength) { const {done, value} = await reader.read(); if (done) { break; } const remaining = contentLength - offset; const slice = value.byteLength <= remaining ? value : value.subarray(0, remaining); buffer.set(slice, offset); offset += slice.byteLength; } decoder ??= new TextDecoder(); return decoder.decode(buffer.subarray(0, offset)); } finally { reader.releaseLock(); } }