(stream: ReadableStream<Uint8Array>)
| 1194 | } |
| 1195 | |
| 1196 | async function drainBytes(stream: ReadableStream<Uint8Array>): Promise<Uint8Array> { |
| 1197 | const reader = stream.getReader(); |
| 1198 | const parts: Uint8Array[] = []; |
| 1199 | let total = 0; |
| 1200 | try { |
| 1201 | while (true) { |
| 1202 | const { value, done } = await reader.read(); |
| 1203 | if (done) break; |
| 1204 | if (!value) continue; |
| 1205 | parts.push(value); |
| 1206 | total += value.byteLength; |
| 1207 | } |
| 1208 | } finally { |
| 1209 | reader.releaseLock(); |
| 1210 | } |
| 1211 | if (parts.length === 1) return parts[0]; |
| 1212 | const out = new Uint8Array(total); |
| 1213 | let offset = 0; |
| 1214 | for (const part of parts) { |
| 1215 | out.set(part, offset); |
| 1216 | offset += part.byteLength; |
| 1217 | } |
| 1218 | return out; |
| 1219 | } |
| 1220 | |
| 1221 | function toThinkFileInfo(input: { |
| 1222 | path: string; |
no test coverage detected