Skip to content

Commit 513a15e

Browse files
fix: Improve file download to avoid storing content in memory (box/box-codegen#701) (#589)
1 parent dfd3e5f commit 513a15e

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "e5d612a", "specHash": "f737b7b", "version": "1.15.1" }
1+
{ "engineHash": "92f6040", "specHash": "f737b7b", "version": "1.15.1" }

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/networking/boxNetworkClient.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -198,19 +198,24 @@ export class BoxNetworkClient implements NetworkClient {
198198

199199
const contentType = response.headers.get('content-type') ?? '';
200200
const ignoreResponseBody = fetchOptions.followRedirects === false;
201-
const responseBytesBuffer = !ignoreResponseBody
202-
? await response.arrayBuffer()
203-
: new Uint8Array();
204201

205-
const data = ((): SerializedData => {
206-
if (!ignoreResponseBody && contentType.includes('application/json')) {
202+
let data: SerializedData | undefined;
203+
let content: ByteStream = generateByteStreamFromBuffer(new Uint8Array());
204+
let responseBytesBuffer: ArrayBuffer | undefined;
205+
206+
if (!ignoreResponseBody) {
207+
if (options.responseFormat === 'binary') {
208+
content = response.body as ByteStream;
209+
responseBytesBuffer = new Uint8Array();
210+
} else if (options.responseFormat === 'json') {
211+
responseBytesBuffer = await response.arrayBuffer();
207212
const text = new TextDecoder().decode(responseBytesBuffer);
208-
return jsonToSerializedData(text);
213+
if (contentType.includes('application/json')) {
214+
data = jsonToSerializedData(text);
215+
}
216+
content = generateByteStreamFromBuffer(responseBytesBuffer);
209217
}
210-
return void 0;
211-
})();
212-
213-
const content = generateByteStreamFromBuffer(responseBytesBuffer);
218+
}
214219

215220
let fetchResponse: FetchResponse = {
216221
url: response.url,

0 commit comments

Comments
 (0)