diff options
author | 2022-06-02 18:36:10 -0700 | |
---|---|---|
committer | 2022-06-02 18:36:10 -0700 | |
commit | 549e5bbbcdbfec70b1649b1400b2bb59b4791974 (patch) | |
tree | adb1549c670e66b175722824f7614cbfddb6d97e /src/javascript/jsc/bindings/builtins/js/ReadableStream.js | |
parent | 57ad68a4b096d4cbe2b7a7e0373d546444ff7602 (diff) | |
download | bun-549e5bbbcdbfec70b1649b1400b2bb59b4791974.tar.gz bun-549e5bbbcdbfec70b1649b1400b2bb59b4791974.tar.zst bun-549e5bbbcdbfec70b1649b1400b2bb59b4791974.zip |
Handle empty files/blobs
Diffstat (limited to 'src/javascript/jsc/bindings/builtins/js/ReadableStream.js')
-rw-r--r-- | src/javascript/jsc/bindings/builtins/js/ReadableStream.js | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/javascript/jsc/bindings/builtins/js/ReadableStream.js b/src/javascript/jsc/bindings/builtins/js/ReadableStream.js index 4d7113888..f3ab66d5c 100644 --- a/src/javascript/jsc/bindings/builtins/js/ReadableStream.js +++ b/src/javascript/jsc/bindings/builtins/js/ReadableStream.js @@ -89,6 +89,17 @@ function initializeReadableStream(underlyingSource, strategy) } @globalPrivate +function createEmptyReadableStream() { + var stream = new @ReadableStream({ + pull() {}, + start() {}, + cancel() {}, + }); + @readableStreamClose(stream); + return stream; +} + +@globalPrivate function createNativeReadableStream(nativePtr, nativeType, autoAllocateChunkSize) { "use strict"; var cached = globalThis[Symbol.for("Bun.nativeReadableStreamPrototype")] ||= new @Map; @@ -96,7 +107,7 @@ function createNativeReadableStream(nativePtr, nativeType, autoAllocateChunkSize if (Prototype === @undefined) { var [pull, start, cancel, setClose, deinit] = globalThis[Symbol.for("Bun.lazy")](nativeType); var closer = [false]; -var handleResult; + var handleResult; function handleNativeReadableStreamPromiseResult(val) { "use strict"; var {c, v} = this; @@ -104,7 +115,6 @@ var handleResult; this.v = @undefined; handleResult(val, c, v); } - handleResult = function handleResult(result, controller, view) { "use strict"; @@ -170,19 +180,7 @@ var handleResult; // empty file, no need for native back-and-forth on this if (chunkSize === 0) { - return new @ReadableStream({ - start(controller) { - controller.close(); - }, - - pull() { - - }, - - cancel() { - - }, - }); + return @createEmptyReadableStream(); } var instance = new Prototype(nativePtr, chunkSize); |