From 1303244b1c4ceb2025ec24a69493c82145bd5374 Mon Sep 17 00:00:00 2001 From: Russell Anthony Date: Mon, 27 Apr 2020 16:19:19 -0700 Subject: [PATCH] Build Uint8Array from ReadableStream without experimental Response constructor --- .../stream-collector-browser/src/index.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/stream-collector-browser/src/index.ts b/packages/stream-collector-browser/src/index.ts index f48229ef9b72..f82c72552972 100644 --- a/packages/stream-collector-browser/src/index.ts +++ b/packages/stream-collector-browser/src/index.ts @@ -1,9 +1,20 @@ import { StreamCollector } from "@aws-sdk/types"; -export const streamCollector: StreamCollector = ( - stream: ReadableStream +export const streamCollector: StreamCollector = async ( + stream: ReadableStream ): Promise => { - return new Response(stream) - .arrayBuffer() - .then(arrayBuffer => new Uint8Array(arrayBuffer)); + let res = new Uint8Array(0); + const reader = stream.getReader(); + let isDone = false; + while(!isDone) { + const { done, value } = await reader.read(); + if(value) { + const prior = res; + res = new Uint8Array(prior.length + value.length); + res.set(prior); + res.set(value, prior.length); + } + isDone = done; + } + return res; };