aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-07-04 16:38:45 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-07-04 16:38:45 -0700
commit48f64bc6e5fade5410413d31d0f17e9802a3917b (patch)
tree94c00737824119970f741eda92c96f71a16f9232 /src/bun.js/builtins/js
parent667303fc861afaa33ceb273a1e1652c7cd706879 (diff)
downloadbun-48f64bc6e5fade5410413d31d0f17e9802a3917b.tar.gz
bun-48f64bc6e5fade5410413d31d0f17e9802a3917b.tar.zst
bun-48f64bc6e5fade5410413d31d0f17e9802a3917b.zip
[itnernal] Cleanup some of the streams code
Diffstat (limited to 'src/bun.js/builtins/js')
-rw-r--r--src/bun.js/builtins/js/ReadableStreamInternals.js72
1 files changed, 47 insertions, 25 deletions
diff --git a/src/bun.js/builtins/js/ReadableStreamInternals.js b/src/bun.js/builtins/js/ReadableStreamInternals.js
index 353e3f9e9..0f5871fa1 100644
--- a/src/bun.js/builtins/js/ReadableStreamInternals.js
+++ b/src/bun.js/builtins/js/ReadableStreamInternals.js
@@ -784,42 +784,51 @@ function readDirectStream(stream, sink, underlyingSource) {
"use strict";
@putByIdDirectPrivate(stream, "underlyingSource", @undefined);
+ @putByIdDirectPrivate(stream, "start", @undefined);
- var {close: originalClose, pull} = underlyingSource;
- underlyingSource = @undefined;
+ var capturedStream = stream;
+ var reader;
- var fakeReader = {
- };
- var close = (reason) => {
- try {
- originalClose && originalClose(reason);
- } catch (e) {
+ function close(stream, reason) {
+ if (reason && underlyingSource?.cancel) {
+ try {
+ underlyingSource.cancel(reason);
+ } catch (e) {
+ }
+ underlyingSource = @undefined;
}
- originalClose = @undefined;
- @putByIdDirectPrivate(stream, "reader", @undefined);
- @putByIdDirectPrivate(stream, "readableStreamController", null);
- @putByIdDirectPrivate(stream, "state", @streamClosed);
- stream = @undefined;
- fakeReader = @undefined;
- };
+
+ if (stream) {
+ @putByIdDirectPrivate(stream, "readableStreamController", @undefined);
+ @putByIdDirectPrivate(stream, "reader", @undefined);
+ if (reason) {
+ @putByIdDirectPrivate(stream, "state", @streamErrored);
+ @putByIdDirectPrivate(stream, "storedError", reason);
+ } else {
+ @putByIdDirectPrivate(stream, "state", @streamClosed);
+ }
+
+ }
+ }
- if (!pull) {
+
+
+
+ if (!underlyingSource.pull) {
close();
return;
}
- if (!@isCallable(pull)) {
+ if (!@isCallable(underlyingSource.pull)) {
close();
@throwTypeError("pull is not a function");
return;
}
@putByIdDirectPrivate(stream, "readableStreamController", sink);
- @putByIdDirectPrivate(stream, "start", @undefined);
-
const highWaterMark = @getByIdDirectPrivate(stream, "highWaterMark");
if (highWaterMark) {
@@ -828,12 +837,15 @@ function readDirectStream(stream, sink, underlyingSource) {
});
}
- @startDirectStream.@call(sink, stream, pull, close);
+ @startDirectStream.@call(sink, stream, underlyingSource.pull, close);
+ @putByIdDirectPrivate(stream, "reader", {});
- // isReadableStreamLocked() checks for truthiness of "reader"
- @putByIdDirectPrivate(stream, "reader", fakeReader);
- pull(sink);
+ var maybePromise = underlyingSource.pull(sink);
sink = @undefined;
+ if (maybePromise && @isPromise(maybePromise)) {
+ return maybePromise.@then(() => {});
+ }
+
}
@globalPrivate;
@@ -841,11 +853,21 @@ function assignToStream(stream, sink) {
"use strict";
// The stream is either a direct stream or a "default" JS stream
- const underlyingSource = @getByIdDirectPrivate(stream, "underlyingSource");
+ var underlyingSource = @getByIdDirectPrivate(stream, "underlyingSource");
// we know it's a direct stream when @underlyingSource is set
if (underlyingSource) {
- return @readDirectStream(stream, sink, underlyingSource);
+ try {
+ return @readDirectStream(stream, sink, underlyingSource);
+ } catch(e) {
+ throw e;
+ } finally {
+ underlyingSource = @undefined;
+ stream = @undefined;
+ sink = @undefined;
+ }
+
+
}
return @readStreamIntoSink(stream, sink, true);
span>/+0 2023-08-22[ci] formatGravatar ematipico 2-35/+42 2023-08-22add: config error if `outDir` is inside `publicDir` (#8152)Gravatar André Alves 3-0/+13 Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-22Deprecate drafts feature (#8099)Gravatar Bjorn Lu 7-7/+41 Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> 2023-08-21Use more permissive type for `defineCollection` schema option (#8163)Gravatar Chris Swithinbank 2-5/+7 Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-21feat: style scoped hash is lowercase (#8180)Gravatar Emanuele Stoppa 4-7/+48 2023-08-21RC Release candidate (#8179)Gravatar Matthew Phillips 2-1/+32 * RC Release candidate * Use the rc tag 2023-08-21Set Markdoc integration version to a minor (#8177)Gravatar Matthew Phillips 1-1/+1 2023-08-21fix(@astrojs/node): handler should work with `express` (#8176)Gravatar Emanuele Stoppa 7-16/+221 2023-08-21[docs] deprecate build.split and build.excludeMiddleware in config ref (#8158)Gravatar Sarah Rainsberger 1-25/+7 2023-08-21chore: lock fileGravatar Emanuele Stoppa 1-0/+4 2023-08-21[ci] formatGravatar natemoo-re 4-9/+15 2023-08-21Stringify shouldn't throw on user object during rendering (#8127)Gravatar Nate Moore 9-46/+115 * fix(#7923): do not throw on user { type } object * chore: remove unused type export * chore: guess it wasn't unused 2023-08-21[ci] formatGravatar natemoo-re 1-1/+4 2023-08-21fix(dev): open to base path (#8123)Gravatar Nate Moore 2-1/+8 2023-08-21chore(gitpod): resolve potential globbing and word splitting issue (#8124)Gravatar Ben Elan 1-1/+1 Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-21fix(#6965): fix build stats (#8122)Gravatar Nate Moore 2-1/+8 2023-08-21only update our own history entires during back navigation through view ↵Gravatar Martin Trapp 2-3/+11 transitions (#8116) 2023-08-21fix: reinsert attribute to specify direction of ViewTransition (forward / ↵Gravatar Martin Trapp 2-7/+12 back) (#8109) 2023-08-21Remove deprecated APIs (#8170)Gravatar Bjorn Lu 4-107/+5 2023-08-21Remove pre-shiki v0.14 theme names (#8169)Gravatar Bjorn Lu 6-80/+14 2023-08-21[docs] JSX framework integration READMEs (#8151)Gravatar Sarah Rainsberger 3-0/+104 2023-08-21fix(assets): Add missing type for imageConfig export (#8171)Gravatar Erika 2-1/+7 2023-08-21Deprecate simple objects from endpoints (#8132)Gravatar Bjorn Lu 20-201/+243 2023-08-18[docs] update scopedStyleStragegy default and description (#8148)Gravatar Sarah Rainsberger 1-2/+2 2023-08-18[ci] release (#8145)astro@2.10.12@astrojs/react@2.3.2@astrojs/node@5.3.5Gravatar Houston (Bot) 46-92/+98 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-18Fix missing package file regression (#8149)Gravatar Matthew Phillips 2-1/+7 2023-08-18fix(node): delegate preview's not found and error handling to core/app (#8141)Gravatar Arsh 2-9/+6 * fix(node): delegate preview's not found and error handling to core/app * add changeset --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-18Replace `class:list` implementation with `clsx` (#8142)Gravatar Nate Moore 12-68/+133 * chore: replace `class:list` implementation with `clsx` * chore: remove Set support from `class:list` test * chore: better class:list test * Update packages/astro/src/runtime/server/render/component.ts 2023-08-18[ci] formatGravatar matthewp 1-1/+4 2023-08-18fix(data collections): normalize file paths for DataEntry.id (#8144)Gravatar Arsh 2-1/+6 * normalize file paths for DataEntry.id * add changeset 2023-08-18[ci] release (beta) (#8140)astro@3.0.0-beta.4Gravatar Houston (Bot) 41-65/+72 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-18[error messages] Update image errors-data.ts (#8126)Gravatar Sarah Rainsberger 1-12/+12 Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-18fix(polyfills): Use object shape for Stackblitz polyfill listGravatar Princesseuh 1-2/+2 2023-08-18fix: polyfill File using undici instead of node:buffer (#8139)Gravatar Erika 2-8/+9 * fix: polyfill File using undici instead of node:buffer * chore: changeset 2023-08-18[ci] release (beta) (#8073)create-astro@4.0.0-beta.1astro@3.0.0-beta.3@astrojs/vercel@4.0.0-beta.3@astrojs/telemetry@3.0.0-beta.2@astrojs/svelte@4.0.0-beta.1@astrojs/solid-js@3.0.0-beta.2@astrojs/react@3.0.0-beta.3@astrojs/mdx@1.0.0-beta.1@astrojs/cloudflare@7.0.0-beta.2Gravatar Houston (Bot) 63-117/+389 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-18[ci] release (#8138)astro@2.10.11@astrojs/react@2.3.1Gravatar Houston (Bot) 44-80/+82 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-18[ci] formatGravatar natemoo-re 1-1/+1 2023-08-18Fix 404 response leading to an infinite loop when there is no 404 page (#8136)Gravatar André Alves 2-1/+10 * fix: 404 response leads to infinite loop * chore: changeset --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-18fix(react): add missing export (#8137)Gravatar Nate Moore 2-1/+7 2023-08-18[ci] release (#8096)create-astro@3.2.2astro@2.10.10@astrojs/vercel@3.8.2@astrojs/svelte@3.1.1@astrojs/solid-js@2.2.1@astrojs/react@2.3.0Gravatar Houston (Bot) 63-197/+186 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-18changeset(next): inlineStylesheets default switch is major (#8133)Gravatar Arsh 1-1/+1 2023-08-18feat: add polyfills for stackblitz (#8130)Gravatar Erika 7-6/+86 * feat: add polyfills for Stackblitz * chore: changeset