@gjsify/web-streams 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1064 +1,911 @@
1
- import {
2
- kState,
3
- kType,
4
- isBrandCheck,
5
- createPromiseCallback,
6
- dequeueValue,
7
- enqueueValueWithSize,
8
- extractHighWaterMark,
9
- extractSizeAlgorithm,
10
- resetQueue,
11
- setPromiseHandled,
12
- nonOpCancel,
13
- nonOpPull,
14
- nonOpStart,
15
- getIterator,
16
- iteratorNext,
17
- AsyncIterator
18
- } from "./util.js";
19
- import {
20
- WritableStreamDefaultWriter,
21
- isWritableStream,
22
- isWritableStreamLocked,
23
- writableStreamAbort,
24
- writableStreamCloseQueuedOrInFlight,
25
- writableStreamDefaultWriterCloseWithErrorPropagation,
26
- writableStreamDefaultWriterRelease,
27
- writableStreamDefaultWriterWrite
28
- } from "./writable-stream.js";
29
- const kCancel = /* @__PURE__ */ Symbol("kCancel");
30
- const kClose = /* @__PURE__ */ Symbol("kClose");
31
- const kChunk = /* @__PURE__ */ Symbol("kChunk");
32
- const kError = /* @__PURE__ */ Symbol("kError");
33
- const kPull = /* @__PURE__ */ Symbol("kPull");
34
- const kRelease = /* @__PURE__ */ Symbol("kRelease");
35
- const kSkipThrow = /* @__PURE__ */ Symbol("kSkipThrow");
1
+ import { AsyncIterator, createPromiseCallback, dequeueValue, enqueueValueWithSize, extractHighWaterMark, extractSizeAlgorithm, getIterator, isBrandCheck, iteratorNext, kState, kType, nonOpCancel, nonOpPull, nonOpStart, resetQueue, setPromiseHandled } from "./util.js";
2
+ import { WritableStreamDefaultWriter, isWritableStream, isWritableStreamLocked, writableStreamAbort, writableStreamCloseQueuedOrInFlight, writableStreamDefaultWriterCloseWithErrorPropagation, writableStreamDefaultWriterRelease, writableStreamDefaultWriterWrite } from "./writable-stream.js";
3
+ import { queueMicrotask } from "@gjsify/utils";
4
+
5
+ //#region src/readable-stream.ts
6
+ const kCancel = Symbol("kCancel");
7
+ const kClose = Symbol("kClose");
8
+ const kChunk = Symbol("kChunk");
9
+ const kError = Symbol("kError");
10
+ const kPull = Symbol("kPull");
11
+ const kRelease = Symbol("kRelease");
12
+ const kSkipThrow = Symbol("kSkipThrow");
36
13
  let releasedError;
37
14
  let releasingError;
38
15
  function lazyReadableReleasedError() {
39
- if (releasedError) return releasedError;
40
- releasedError = new TypeError("Reader released");
41
- return releasedError;
16
+ if (releasedError) return releasedError;
17
+ releasedError = new TypeError("Reader released");
18
+ return releasedError;
42
19
  }
43
20
  function lazyReadableReleasingError() {
44
- if (releasingError) return releasingError;
45
- releasingError = new TypeError("Releasing reader");
46
- return releasingError;
21
+ if (releasingError) return releasingError;
22
+ releasingError = new TypeError("Releasing reader");
23
+ return releasingError;
47
24
  }
48
25
  function createAbortError() {
49
- if (typeof globalThis.DOMException === "function") {
50
- return new DOMException("The operation was aborted", "AbortError");
51
- }
52
- const err = new Error("The operation was aborted");
53
- err.name = "AbortError";
54
- return err;
26
+ if (typeof globalThis.DOMException === "function") {
27
+ return new DOMException("The operation was aborted", "AbortError");
28
+ }
29
+ const err = new Error("The operation was aborted");
30
+ err.name = "AbortError";
31
+ return err;
55
32
  }
56
- import { queueMicrotask as _queueMicrotask } from "@gjsify/utils";
57
33
  function createReadableStreamState() {
58
- return {
59
- disturbed: false,
60
- reader: void 0,
61
- state: "readable",
62
- storedError: void 0,
63
- controller: void 0,
64
- // closedPromise tracks stream-level close for watchers (pipeTo, etc.)
65
- closedPromise: Promise.withResolvers()
66
- };
67
- }
68
- class ReadableStream {
69
- [kType] = "ReadableStream";
70
- [kState];
71
- constructor(source = {}, strategy = {}) {
72
- if (source != null && typeof source !== "object") {
73
- throw new TypeError("source must be an object");
74
- }
75
- if (strategy != null && typeof strategy !== "object") {
76
- throw new TypeError("strategy must be an object");
77
- }
78
- this[kState] = createReadableStreamState();
79
- const size = strategy?.size;
80
- const highWaterMark = strategy?.highWaterMark;
81
- const type = source?.type;
82
- if (type !== void 0) {
83
- if (`${type}` === "bytes") {
84
- throw new RangeError("Byte streams not yet supported (use default controller)");
85
- }
86
- throw new RangeError(`Invalid type: ${type}`);
87
- }
88
- setupReadableStreamDefaultControllerFromSource(
89
- this,
90
- source,
91
- extractHighWaterMark(highWaterMark, 1),
92
- extractSizeAlgorithm(size)
93
- );
94
- }
95
- get locked() {
96
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
97
- return isReadableStreamLocked(this);
98
- }
99
- static from(iterable) {
100
- return readableStreamFromIterable(iterable);
101
- }
102
- cancel(reason = void 0) {
103
- if (!isReadableStream(this))
104
- return Promise.reject(new TypeError("Invalid this"));
105
- if (isReadableStreamLocked(this))
106
- return Promise.reject(new TypeError("ReadableStream is locked"));
107
- return readableStreamCancel(this, reason);
108
- }
109
- getReader(options = {}) {
110
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
111
- if (options != null && typeof options !== "object") {
112
- throw new TypeError("options must be an object");
113
- }
114
- const mode = options?.mode;
115
- if (mode === void 0)
116
- return new ReadableStreamDefaultReader(this);
117
- if (`${mode}` === "byob")
118
- throw new RangeError("BYOB readers not yet supported");
119
- throw new RangeError(`Invalid mode: ${mode}`);
120
- }
121
- pipeThrough(transform, options = {}) {
122
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
123
- const readable = transform?.readable;
124
- if (!isReadableStream(readable)) {
125
- throw new TypeError("transform.readable must be a ReadableStream");
126
- }
127
- const writable = transform?.writable;
128
- if (!isWritableStream(writable)) {
129
- throw new TypeError("transform.writable must be a WritableStream");
130
- }
131
- if (options != null && typeof options !== "object") {
132
- throw new TypeError("options must be an object");
133
- }
134
- const preventAbort = options?.preventAbort;
135
- const preventCancel = options?.preventCancel;
136
- const preventClose = options?.preventClose;
137
- const signal = options?.signal;
138
- if (signal !== void 0 && !(signal instanceof Object && "aborted" in signal)) {
139
- throw new TypeError("options.signal must be an AbortSignal");
140
- }
141
- if (isReadableStreamLocked(this))
142
- throw new TypeError("The ReadableStream is locked");
143
- if (isWritableStreamLocked(writable))
144
- throw new TypeError("The WritableStream is locked");
145
- const promise = readableStreamPipeTo(
146
- this,
147
- writable,
148
- !!preventClose,
149
- !!preventAbort,
150
- !!preventCancel,
151
- signal
152
- );
153
- setPromiseHandled(promise);
154
- return readable;
155
- }
156
- pipeTo(destination, options = {}) {
157
- try {
158
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
159
- if (!isWritableStream(destination)) {
160
- throw new TypeError("destination must be a WritableStream");
161
- }
162
- if (options != null && typeof options !== "object") {
163
- throw new TypeError("options must be an object");
164
- }
165
- const preventAbort = options?.preventAbort;
166
- const preventCancel = options?.preventCancel;
167
- const preventClose = options?.preventClose;
168
- const signal = options?.signal;
169
- if (signal !== void 0 && !(signal instanceof Object && "aborted" in signal)) {
170
- throw new TypeError("options.signal must be an AbortSignal");
171
- }
172
- if (isReadableStreamLocked(this))
173
- throw new TypeError("The ReadableStream is locked");
174
- if (isWritableStreamLocked(destination))
175
- throw new TypeError("The WritableStream is locked");
176
- return readableStreamPipeTo(
177
- this,
178
- destination,
179
- !!preventClose,
180
- !!preventAbort,
181
- !!preventCancel,
182
- signal
183
- );
184
- } catch (error) {
185
- return Promise.reject(error);
186
- }
187
- }
188
- tee() {
189
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
190
- return readableStreamDefaultTee(this, false);
191
- }
192
- values(options = {}) {
193
- if (!isReadableStream(this)) throw new TypeError("Invalid this");
194
- if (options != null && typeof options !== "object") {
195
- throw new TypeError("options must be an object");
196
- }
197
- const preventCancel = !!options?.preventCancel;
198
- const reader = new ReadableStreamDefaultReader(this);
199
- const state = {
200
- done: false,
201
- current: void 0
202
- };
203
- let started = false;
204
- function nextSteps() {
205
- if (state.done)
206
- return Promise.resolve({ done: true, value: void 0 });
207
- if (reader[kState].stream === void 0) {
208
- return Promise.reject(
209
- new TypeError("The reader is not bound to a ReadableStream")
210
- );
211
- }
212
- const { promise, resolve, reject } = Promise.withResolvers();
213
- readableStreamDefaultReaderRead(reader, {
214
- [kChunk](chunk) {
215
- state.current = void 0;
216
- resolve({ value: chunk, done: false });
217
- },
218
- [kClose]() {
219
- state.current = void 0;
220
- state.done = true;
221
- readableStreamReaderGenericRelease(reader);
222
- resolve({ done: true, value: void 0 });
223
- },
224
- [kError](error) {
225
- state.current = void 0;
226
- state.done = true;
227
- readableStreamReaderGenericRelease(reader);
228
- reject(error);
229
- }
230
- });
231
- return promise;
232
- }
233
- async function returnSteps(value) {
234
- if (state.done)
235
- return { done: true, value };
236
- state.done = true;
237
- if (reader[kState].stream === void 0) {
238
- throw new TypeError("The reader is not bound to a ReadableStream");
239
- }
240
- if (!preventCancel) {
241
- const result = readableStreamReaderGenericCancel(reader, value);
242
- readableStreamReaderGenericRelease(reader);
243
- await result;
244
- return { done: true, value };
245
- }
246
- readableStreamReaderGenericRelease(reader);
247
- return { done: true, value };
248
- }
249
- return Object.setPrototypeOf({
250
- next() {
251
- if (!started) {
252
- state.current = Promise.resolve();
253
- started = true;
254
- }
255
- state.current = state.current !== void 0 ? state.current.then(nextSteps, nextSteps) : nextSteps();
256
- return state.current;
257
- },
258
- return(error) {
259
- started = true;
260
- state.current = state.current !== void 0 ? state.current.then(
261
- () => returnSteps(error),
262
- () => returnSteps(error)
263
- ) : returnSteps(error);
264
- return state.current;
265
- },
266
- [Symbol.asyncIterator]() {
267
- return this;
268
- }
269
- }, AsyncIterator);
270
- }
271
- [Symbol.asyncIterator]() {
272
- return this.values();
273
- }
274
- get [Symbol.toStringTag]() {
275
- return "ReadableStream";
276
- }
277
- }
278
- class DefaultReadRequest {
279
- [kState];
280
- constructor() {
281
- this[kState] = Promise.withResolvers();
282
- }
283
- [kChunk](value) {
284
- this[kState].resolve?.({ value, done: false });
285
- }
286
- [kClose]() {
287
- this[kState].resolve?.({ value: void 0, done: true });
288
- }
289
- [kError](error) {
290
- this[kState].reject?.(error);
291
- }
292
- get promise() {
293
- return this[kState].promise;
294
- }
295
- }
296
- class ReadableStreamDefaultReader {
297
- [kType] = "ReadableStreamDefaultReader";
298
- [kState];
299
- constructor(stream) {
300
- if (!isReadableStream(stream))
301
- throw new TypeError("Expected a ReadableStream");
302
- this[kState] = {
303
- readRequests: [],
304
- stream: void 0,
305
- close: {
306
- promise: void 0,
307
- resolve: void 0,
308
- reject: void 0
309
- }
310
- };
311
- setupReadableStreamDefaultReader(this, stream);
312
- }
313
- read() {
314
- if (!isReadableStreamDefaultReader(this))
315
- return Promise.reject(new TypeError("Invalid this"));
316
- if (this[kState].stream === void 0) {
317
- return Promise.reject(
318
- new TypeError("The reader is not attached to a stream")
319
- );
320
- }
321
- const stream = this[kState].stream;
322
- const controller = stream[kState].controller;
323
- if (stream[kState].state === "readable" && isReadableStreamDefaultController(controller) && controller[kState].queue.length > 0) {
324
- stream[kState].disturbed = true;
325
- const chunk = dequeueValue(controller);
326
- if (controller[kState].closeRequested && !controller[kState].queue.length) {
327
- readableStreamDefaultControllerClearAlgorithms(controller);
328
- readableStreamClose(stream);
329
- } else {
330
- readableStreamDefaultControllerCallPullIfNeeded(controller);
331
- }
332
- return Promise.resolve({ value: chunk, done: false });
333
- }
334
- const readRequest = new DefaultReadRequest();
335
- readableStreamDefaultReaderRead(this, readRequest);
336
- return readRequest.promise;
337
- }
338
- releaseLock() {
339
- if (!isReadableStreamDefaultReader(this))
340
- throw new TypeError("Invalid this");
341
- if (this[kState].stream === void 0)
342
- return;
343
- readableStreamDefaultReaderRelease(this);
344
- }
345
- get closed() {
346
- if (!isReadableStreamDefaultReader(this))
347
- return Promise.reject(new TypeError("Invalid this"));
348
- return this[kState].close.promise;
349
- }
350
- cancel(reason = void 0) {
351
- if (!isReadableStreamDefaultReader(this))
352
- return Promise.reject(new TypeError("Invalid this"));
353
- if (this[kState].stream === void 0) {
354
- return Promise.reject(new TypeError("The reader is not attached to a stream"));
355
- }
356
- return readableStreamReaderGenericCancel(this, reason);
357
- }
358
- get [Symbol.toStringTag]() {
359
- return "ReadableStreamDefaultReader";
360
- }
361
- }
362
- class ReadableStreamDefaultController {
363
- [kType] = "ReadableStreamDefaultController";
364
- [kState] = {};
365
- constructor(skipThrowSymbol) {
366
- if (skipThrowSymbol !== kSkipThrow) {
367
- throw new TypeError("Illegal constructor");
368
- }
369
- }
370
- get desiredSize() {
371
- return readableStreamDefaultControllerGetDesiredSize(this);
372
- }
373
- close() {
374
- if (!readableStreamDefaultControllerCanCloseOrEnqueue(this))
375
- throw new TypeError("Controller is already closed");
376
- readableStreamDefaultControllerClose(this);
377
- }
378
- enqueue(chunk = void 0) {
379
- if (!readableStreamDefaultControllerCanCloseOrEnqueue(this))
380
- throw new TypeError("Controller is already closed");
381
- readableStreamDefaultControllerEnqueue(this, chunk);
382
- }
383
- error(error = void 0) {
384
- readableStreamDefaultControllerError(this, error);
385
- }
386
- [kCancel](reason) {
387
- return readableStreamDefaultControllerCancelSteps(this, reason);
388
- }
389
- [kPull](readRequest) {
390
- readableStreamDefaultControllerPullSteps(this, readRequest);
391
- }
392
- [kRelease]() {
393
- }
394
- get [Symbol.toStringTag]() {
395
- return "ReadableStreamDefaultController";
396
- }
397
- }
34
+ return {
35
+ disturbed: false,
36
+ reader: undefined,
37
+ state: "readable",
38
+ storedError: undefined,
39
+ controller: undefined,
40
+ closedPromise: Promise.withResolvers()
41
+ };
42
+ }
43
+ var ReadableStream = class {
44
+ [kType] = "ReadableStream";
45
+ [kState];
46
+ constructor(source = {}, strategy = {}) {
47
+ if (source != null && typeof source !== "object") {
48
+ throw new TypeError("source must be an object");
49
+ }
50
+ if (strategy != null && typeof strategy !== "object") {
51
+ throw new TypeError("strategy must be an object");
52
+ }
53
+ this[kState] = createReadableStreamState();
54
+ const size = strategy?.size;
55
+ const highWaterMark = strategy?.highWaterMark;
56
+ const type = source?.type;
57
+ if (type !== undefined) {
58
+ if (`${type}` === "bytes") {
59
+ throw new RangeError("Byte streams not yet supported (use default controller)");
60
+ }
61
+ throw new RangeError(`Invalid type: ${type}`);
62
+ }
63
+ setupReadableStreamDefaultControllerFromSource(this, source, extractHighWaterMark(highWaterMark, 1), extractSizeAlgorithm(size));
64
+ }
65
+ get locked() {
66
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
67
+ return isReadableStreamLocked(this);
68
+ }
69
+ static from(iterable) {
70
+ return readableStreamFromIterable(iterable);
71
+ }
72
+ cancel(reason = undefined) {
73
+ if (!isReadableStream(this)) return Promise.reject(new TypeError("Invalid this"));
74
+ if (isReadableStreamLocked(this)) return Promise.reject(new TypeError("ReadableStream is locked"));
75
+ return readableStreamCancel(this, reason);
76
+ }
77
+ getReader(options = {}) {
78
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
79
+ if (options != null && typeof options !== "object") {
80
+ throw new TypeError("options must be an object");
81
+ }
82
+ const mode = options?.mode;
83
+ if (mode === undefined) return new ReadableStreamDefaultReader(this);
84
+ if (`${mode}` === "byob") throw new RangeError("BYOB readers not yet supported");
85
+ throw new RangeError(`Invalid mode: ${mode}`);
86
+ }
87
+ pipeThrough(transform, options = {}) {
88
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
89
+ const readable = transform?.readable;
90
+ if (!isReadableStream(readable)) {
91
+ throw new TypeError("transform.readable must be a ReadableStream");
92
+ }
93
+ const writable = transform?.writable;
94
+ if (!isWritableStream(writable)) {
95
+ throw new TypeError("transform.writable must be a WritableStream");
96
+ }
97
+ if (options != null && typeof options !== "object") {
98
+ throw new TypeError("options must be an object");
99
+ }
100
+ const preventAbort = options?.preventAbort;
101
+ const preventCancel = options?.preventCancel;
102
+ const preventClose = options?.preventClose;
103
+ const signal = options?.signal;
104
+ if (signal !== undefined && !(signal instanceof Object && "aborted" in signal)) {
105
+ throw new TypeError("options.signal must be an AbortSignal");
106
+ }
107
+ if (isReadableStreamLocked(this)) throw new TypeError("The ReadableStream is locked");
108
+ if (isWritableStreamLocked(writable)) throw new TypeError("The WritableStream is locked");
109
+ const promise = readableStreamPipeTo(this, writable, !!preventClose, !!preventAbort, !!preventCancel, signal);
110
+ setPromiseHandled(promise);
111
+ return readable;
112
+ }
113
+ pipeTo(destination, options = {}) {
114
+ try {
115
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
116
+ if (!isWritableStream(destination)) {
117
+ throw new TypeError("destination must be a WritableStream");
118
+ }
119
+ if (options != null && typeof options !== "object") {
120
+ throw new TypeError("options must be an object");
121
+ }
122
+ const preventAbort = options?.preventAbort;
123
+ const preventCancel = options?.preventCancel;
124
+ const preventClose = options?.preventClose;
125
+ const signal = options?.signal;
126
+ if (signal !== undefined && !(signal instanceof Object && "aborted" in signal)) {
127
+ throw new TypeError("options.signal must be an AbortSignal");
128
+ }
129
+ if (isReadableStreamLocked(this)) throw new TypeError("The ReadableStream is locked");
130
+ if (isWritableStreamLocked(destination)) throw new TypeError("The WritableStream is locked");
131
+ return readableStreamPipeTo(this, destination, !!preventClose, !!preventAbort, !!preventCancel, signal);
132
+ } catch (error) {
133
+ return Promise.reject(error);
134
+ }
135
+ }
136
+ tee() {
137
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
138
+ return readableStreamDefaultTee(this, false);
139
+ }
140
+ values(options = {}) {
141
+ if (!isReadableStream(this)) throw new TypeError("Invalid this");
142
+ if (options != null && typeof options !== "object") {
143
+ throw new TypeError("options must be an object");
144
+ }
145
+ const preventCancel = !!options?.preventCancel;
146
+ const reader = new ReadableStreamDefaultReader(this);
147
+ const state = {
148
+ done: false,
149
+ current: undefined
150
+ };
151
+ let started = false;
152
+ function nextSteps() {
153
+ if (state.done) return Promise.resolve({
154
+ done: true,
155
+ value: undefined
156
+ });
157
+ if (reader[kState].stream === undefined) {
158
+ return Promise.reject(new TypeError("The reader is not bound to a ReadableStream"));
159
+ }
160
+ const { promise, resolve, reject } = Promise.withResolvers();
161
+ readableStreamDefaultReaderRead(reader, {
162
+ [kChunk](chunk) {
163
+ state.current = undefined;
164
+ resolve({
165
+ value: chunk,
166
+ done: false
167
+ });
168
+ },
169
+ [kClose]() {
170
+ state.current = undefined;
171
+ state.done = true;
172
+ readableStreamReaderGenericRelease(reader);
173
+ resolve({
174
+ done: true,
175
+ value: undefined
176
+ });
177
+ },
178
+ [kError](error) {
179
+ state.current = undefined;
180
+ state.done = true;
181
+ readableStreamReaderGenericRelease(reader);
182
+ reject(error);
183
+ }
184
+ });
185
+ return promise;
186
+ }
187
+ async function returnSteps(value) {
188
+ if (state.done) return {
189
+ done: true,
190
+ value
191
+ };
192
+ state.done = true;
193
+ if (reader[kState].stream === undefined) {
194
+ throw new TypeError("The reader is not bound to a ReadableStream");
195
+ }
196
+ if (!preventCancel) {
197
+ const result = readableStreamReaderGenericCancel(reader, value);
198
+ readableStreamReaderGenericRelease(reader);
199
+ await result;
200
+ return {
201
+ done: true,
202
+ value
203
+ };
204
+ }
205
+ readableStreamReaderGenericRelease(reader);
206
+ return {
207
+ done: true,
208
+ value
209
+ };
210
+ }
211
+ return Object.setPrototypeOf({
212
+ next() {
213
+ if (!started) {
214
+ state.current = Promise.resolve();
215
+ started = true;
216
+ }
217
+ state.current = state.current !== undefined ? state.current.then(nextSteps, nextSteps) : nextSteps();
218
+ return state.current;
219
+ },
220
+ return(error) {
221
+ started = true;
222
+ state.current = state.current !== undefined ? state.current.then(() => returnSteps(error), () => returnSteps(error)) : returnSteps(error);
223
+ return state.current;
224
+ },
225
+ [Symbol.asyncIterator]() {
226
+ return this;
227
+ }
228
+ }, AsyncIterator);
229
+ }
230
+ [Symbol.asyncIterator]() {
231
+ return this.values();
232
+ }
233
+ get [Symbol.toStringTag]() {
234
+ return "ReadableStream";
235
+ }
236
+ };
237
+ var DefaultReadRequest = class {
238
+ [kState];
239
+ constructor() {
240
+ this[kState] = Promise.withResolvers();
241
+ }
242
+ [kChunk](value) {
243
+ this[kState].resolve?.({
244
+ value,
245
+ done: false
246
+ });
247
+ }
248
+ [kClose]() {
249
+ this[kState].resolve?.({
250
+ value: undefined,
251
+ done: true
252
+ });
253
+ }
254
+ [kError](error) {
255
+ this[kState].reject?.(error);
256
+ }
257
+ get promise() {
258
+ return this[kState].promise;
259
+ }
260
+ };
261
+ var ReadableStreamDefaultReader = class {
262
+ [kType] = "ReadableStreamDefaultReader";
263
+ [kState];
264
+ constructor(stream) {
265
+ if (!isReadableStream(stream)) throw new TypeError("Expected a ReadableStream");
266
+ this[kState] = {
267
+ readRequests: [],
268
+ stream: undefined,
269
+ close: {
270
+ promise: undefined,
271
+ resolve: undefined,
272
+ reject: undefined
273
+ }
274
+ };
275
+ setupReadableStreamDefaultReader(this, stream);
276
+ }
277
+ read() {
278
+ if (!isReadableStreamDefaultReader(this)) return Promise.reject(new TypeError("Invalid this"));
279
+ if (this[kState].stream === undefined) {
280
+ return Promise.reject(new TypeError("The reader is not attached to a stream"));
281
+ }
282
+ const stream = this[kState].stream;
283
+ const controller = stream[kState].controller;
284
+ if (stream[kState].state === "readable" && isReadableStreamDefaultController(controller) && controller[kState].queue.length > 0) {
285
+ stream[kState].disturbed = true;
286
+ const chunk = dequeueValue(controller);
287
+ if (controller[kState].closeRequested && !controller[kState].queue.length) {
288
+ readableStreamDefaultControllerClearAlgorithms(controller);
289
+ readableStreamClose(stream);
290
+ } else {
291
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
292
+ }
293
+ return Promise.resolve({
294
+ value: chunk,
295
+ done: false
296
+ });
297
+ }
298
+ const readRequest = new DefaultReadRequest();
299
+ readableStreamDefaultReaderRead(this, readRequest);
300
+ return readRequest.promise;
301
+ }
302
+ releaseLock() {
303
+ if (!isReadableStreamDefaultReader(this)) throw new TypeError("Invalid this");
304
+ if (this[kState].stream === undefined) return;
305
+ readableStreamDefaultReaderRelease(this);
306
+ }
307
+ get closed() {
308
+ if (!isReadableStreamDefaultReader(this)) return Promise.reject(new TypeError("Invalid this"));
309
+ return this[kState].close.promise;
310
+ }
311
+ cancel(reason = undefined) {
312
+ if (!isReadableStreamDefaultReader(this)) return Promise.reject(new TypeError("Invalid this"));
313
+ if (this[kState].stream === undefined) {
314
+ return Promise.reject(new TypeError("The reader is not attached to a stream"));
315
+ }
316
+ return readableStreamReaderGenericCancel(this, reason);
317
+ }
318
+ get [Symbol.toStringTag]() {
319
+ return "ReadableStreamDefaultReader";
320
+ }
321
+ };
322
+ var ReadableStreamDefaultController = class {
323
+ [kType] = "ReadableStreamDefaultController";
324
+ [kState] = {};
325
+ constructor(skipThrowSymbol) {
326
+ if (skipThrowSymbol !== kSkipThrow) {
327
+ throw new TypeError("Illegal constructor");
328
+ }
329
+ }
330
+ get desiredSize() {
331
+ return readableStreamDefaultControllerGetDesiredSize(this);
332
+ }
333
+ close() {
334
+ if (!readableStreamDefaultControllerCanCloseOrEnqueue(this)) throw new TypeError("Controller is already closed");
335
+ readableStreamDefaultControllerClose(this);
336
+ }
337
+ enqueue(chunk = undefined) {
338
+ if (!readableStreamDefaultControllerCanCloseOrEnqueue(this)) throw new TypeError("Controller is already closed");
339
+ readableStreamDefaultControllerEnqueue(this, chunk);
340
+ }
341
+ error(error = undefined) {
342
+ readableStreamDefaultControllerError(this, error);
343
+ }
344
+ [kCancel](reason) {
345
+ return readableStreamDefaultControllerCancelSteps(this, reason);
346
+ }
347
+ [kPull](readRequest) {
348
+ readableStreamDefaultControllerPullSteps(this, readRequest);
349
+ }
350
+ [kRelease]() {}
351
+ get [Symbol.toStringTag]() {
352
+ return "ReadableStreamDefaultController";
353
+ }
354
+ };
398
355
  const isReadableStream = isBrandCheck("ReadableStream");
399
356
  const isReadableStreamDefaultController = isBrandCheck("ReadableStreamDefaultController");
400
357
  const isReadableStreamDefaultReader = isBrandCheck("ReadableStreamDefaultReader");
401
358
  function isReadableStreamLocked(stream) {
402
- return stream[kState].reader !== void 0;
359
+ return stream[kState].reader !== undefined;
403
360
  }
404
361
  function readableStreamCancel(stream, reason) {
405
- stream[kState].disturbed = true;
406
- switch (stream[kState].state) {
407
- case "closed":
408
- return Promise.resolve();
409
- case "errored":
410
- return Promise.reject(stream[kState].storedError);
411
- }
412
- readableStreamClose(stream);
413
- return stream[kState].controller[kCancel](reason).then(() => {
414
- });
362
+ stream[kState].disturbed = true;
363
+ switch (stream[kState].state) {
364
+ case "closed": return Promise.resolve();
365
+ case "errored": return Promise.reject(stream[kState].storedError);
366
+ }
367
+ readableStreamClose(stream);
368
+ return stream[kState].controller[kCancel](reason).then(() => {});
415
369
  }
416
370
  function readableStreamClose(stream) {
417
- stream[kState].state = "closed";
418
- stream[kState].closedPromise.resolve();
419
- const { reader } = stream[kState];
420
- if (reader === void 0) return;
421
- reader[kState].close.resolve?.();
422
- if (readableStreamHasDefaultReader(stream)) {
423
- for (let n = 0; n < reader[kState].readRequests.length; n++)
424
- reader[kState].readRequests[n][kClose]();
425
- reader[kState].readRequests = [];
426
- }
371
+ stream[kState].state = "closed";
372
+ stream[kState].closedPromise.resolve();
373
+ const { reader } = stream[kState];
374
+ if (reader === undefined) return;
375
+ reader[kState].close.resolve?.();
376
+ if (readableStreamHasDefaultReader(stream)) {
377
+ for (let n = 0; n < reader[kState].readRequests.length; n++) reader[kState].readRequests[n][kClose]();
378
+ reader[kState].readRequests = [];
379
+ }
427
380
  }
428
381
  function readableStreamError(stream, error) {
429
- stream[kState].state = "errored";
430
- stream[kState].storedError = error;
431
- setPromiseHandled(stream[kState].closedPromise.promise);
432
- stream[kState].closedPromise.reject(error);
433
- const { reader } = stream[kState];
434
- if (reader === void 0) return;
435
- setPromiseHandled(reader[kState].close.promise);
436
- reader[kState].close.reject?.(error);
437
- if (readableStreamHasDefaultReader(stream)) {
438
- for (let n = 0; n < reader[kState].readRequests.length; n++)
439
- reader[kState].readRequests[n][kError](error);
440
- reader[kState].readRequests = [];
441
- }
382
+ stream[kState].state = "errored";
383
+ stream[kState].storedError = error;
384
+ setPromiseHandled(stream[kState].closedPromise.promise);
385
+ stream[kState].closedPromise.reject(error);
386
+ const { reader } = stream[kState];
387
+ if (reader === undefined) return;
388
+ setPromiseHandled(reader[kState].close.promise);
389
+ reader[kState].close.reject?.(error);
390
+ if (readableStreamHasDefaultReader(stream)) {
391
+ for (let n = 0; n < reader[kState].readRequests.length; n++) reader[kState].readRequests[n][kError](error);
392
+ reader[kState].readRequests = [];
393
+ }
442
394
  }
443
395
  function readableStreamHasDefaultReader(stream) {
444
- const { reader } = stream[kState];
445
- if (reader === void 0) return false;
446
- return reader[kState] !== void 0 && reader[kType] === "ReadableStreamDefaultReader";
396
+ const { reader } = stream[kState];
397
+ if (reader === undefined) return false;
398
+ return reader[kState] !== undefined && reader[kType] === "ReadableStreamDefaultReader";
447
399
  }
448
400
  function readableStreamGetNumReadRequests(stream) {
449
- return stream[kState].reader[kState].readRequests.length;
401
+ return stream[kState].reader[kState].readRequests.length;
450
402
  }
451
403
  function readableStreamFulfillReadRequest(stream, chunk, done) {
452
- const { reader } = stream[kState];
453
- const readRequest = reader[kState].readRequests.shift();
454
- if (done)
455
- readRequest[kClose]();
456
- else
457
- readRequest[kChunk](chunk);
404
+ const { reader } = stream[kState];
405
+ const readRequest = reader[kState].readRequests.shift();
406
+ if (done) readRequest[kClose]();
407
+ else readRequest[kChunk](chunk);
458
408
  }
459
409
  function readableStreamAddReadRequest(stream, readRequest) {
460
- stream[kState].reader[kState].readRequests.push(readRequest);
410
+ stream[kState].reader[kState].readRequests.push(readRequest);
461
411
  }
462
412
  function readableStreamReaderGenericCancel(reader, reason) {
463
- const { stream } = reader[kState];
464
- return readableStreamCancel(stream, reason);
413
+ const { stream } = reader[kState];
414
+ return readableStreamCancel(stream, reason);
465
415
  }
466
416
  function readableStreamReaderGenericInitialize(reader, stream) {
467
- reader[kState].stream = stream;
468
- stream[kState].reader = reader;
469
- switch (stream[kState].state) {
470
- case "readable":
471
- reader[kState].close = Promise.withResolvers();
472
- break;
473
- case "closed":
474
- reader[kState].close = {
475
- promise: Promise.resolve(),
476
- resolve: void 0,
477
- reject: void 0
478
- };
479
- break;
480
- case "errored":
481
- reader[kState].close = {
482
- promise: Promise.reject(stream[kState].storedError),
483
- resolve: void 0,
484
- reject: void 0
485
- };
486
- setPromiseHandled(reader[kState].close.promise);
487
- break;
488
- }
417
+ reader[kState].stream = stream;
418
+ stream[kState].reader = reader;
419
+ switch (stream[kState].state) {
420
+ case "readable":
421
+ reader[kState].close = Promise.withResolvers();
422
+ break;
423
+ case "closed":
424
+ reader[kState].close = {
425
+ promise: Promise.resolve(),
426
+ resolve: undefined,
427
+ reject: undefined
428
+ };
429
+ break;
430
+ case "errored":
431
+ reader[kState].close = {
432
+ promise: Promise.reject(stream[kState].storedError),
433
+ resolve: undefined,
434
+ reject: undefined
435
+ };
436
+ setPromiseHandled(reader[kState].close.promise);
437
+ break;
438
+ }
489
439
  }
490
440
  function readableStreamReaderGenericRelease(reader) {
491
- const { stream } = reader[kState];
492
- const releasedStateError = lazyReadableReleasedError();
493
- if (stream[kState].state === "readable") {
494
- reader[kState].close.reject?.(releasedStateError);
495
- } else {
496
- reader[kState].close = {
497
- promise: Promise.reject(releasedStateError),
498
- resolve: void 0,
499
- reject: void 0
500
- };
501
- }
502
- setPromiseHandled(reader[kState].close.promise);
503
- stream[kState].controller[kRelease]();
504
- stream[kState].reader = void 0;
505
- reader[kState].stream = void 0;
441
+ const { stream } = reader[kState];
442
+ const releasedStateError = lazyReadableReleasedError();
443
+ if (stream[kState].state === "readable") {
444
+ reader[kState].close.reject?.(releasedStateError);
445
+ } else {
446
+ reader[kState].close = {
447
+ promise: Promise.reject(releasedStateError),
448
+ resolve: undefined,
449
+ reject: undefined
450
+ };
451
+ }
452
+ setPromiseHandled(reader[kState].close.promise);
453
+ stream[kState].controller[kRelease]();
454
+ stream[kState].reader = undefined;
455
+ reader[kState].stream = undefined;
506
456
  }
507
457
  function readableStreamDefaultReaderRelease(reader) {
508
- readableStreamReaderGenericRelease(reader);
509
- readableStreamDefaultReaderErrorReadRequests(reader, lazyReadableReleasingError());
458
+ readableStreamReaderGenericRelease(reader);
459
+ readableStreamDefaultReaderErrorReadRequests(reader, lazyReadableReleasingError());
510
460
  }
511
461
  function readableStreamDefaultReaderErrorReadRequests(reader, e) {
512
- for (let n = 0; n < reader[kState].readRequests.length; ++n) {
513
- reader[kState].readRequests[n][kError](e);
514
- }
515
- reader[kState].readRequests = [];
462
+ for (let n = 0; n < reader[kState].readRequests.length; ++n) {
463
+ reader[kState].readRequests[n][kError](e);
464
+ }
465
+ reader[kState].readRequests = [];
516
466
  }
517
467
  function readableStreamDefaultReaderRead(reader, readRequest) {
518
- const { stream } = reader[kState];
519
- stream[kState].disturbed = true;
520
- switch (stream[kState].state) {
521
- case "closed":
522
- readRequest[kClose]();
523
- break;
524
- case "errored":
525
- readRequest[kError](stream[kState].storedError);
526
- break;
527
- case "readable":
528
- stream[kState].controller[kPull](readRequest);
529
- break;
530
- }
468
+ const { stream } = reader[kState];
469
+ stream[kState].disturbed = true;
470
+ switch (stream[kState].state) {
471
+ case "closed":
472
+ readRequest[kClose]();
473
+ break;
474
+ case "errored":
475
+ readRequest[kError](stream[kState].storedError);
476
+ break;
477
+ case "readable":
478
+ stream[kState].controller[kPull](readRequest);
479
+ break;
480
+ }
531
481
  }
532
482
  function setupReadableStreamDefaultReader(reader, stream) {
533
- if (isReadableStreamLocked(stream))
534
- throw new TypeError("ReadableStream is locked");
535
- readableStreamReaderGenericInitialize(reader, stream);
536
- reader[kState].readRequests = [];
483
+ if (isReadableStreamLocked(stream)) throw new TypeError("ReadableStream is locked");
484
+ readableStreamReaderGenericInitialize(reader, stream);
485
+ reader[kState].readRequests = [];
537
486
  }
538
487
  function readableStreamDefaultControllerClose(controller) {
539
- if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller))
540
- return;
541
- controller[kState].closeRequested = true;
542
- if (!controller[kState].queue.length) {
543
- readableStreamDefaultControllerClearAlgorithms(controller);
544
- readableStreamClose(controller[kState].stream);
545
- }
488
+ if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller)) return;
489
+ controller[kState].closeRequested = true;
490
+ if (!controller[kState].queue.length) {
491
+ readableStreamDefaultControllerClearAlgorithms(controller);
492
+ readableStreamClose(controller[kState].stream);
493
+ }
546
494
  }
547
495
  function readableStreamDefaultControllerEnqueue(controller, chunk) {
548
- if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller))
549
- return;
550
- const { stream } = controller[kState];
551
- if (isReadableStreamLocked(stream) && readableStreamGetNumReadRequests(stream)) {
552
- readableStreamFulfillReadRequest(stream, chunk, false);
553
- } else {
554
- try {
555
- const chunkSize = controller[kState].sizeAlgorithm(chunk);
556
- enqueueValueWithSize(controller, chunk, chunkSize);
557
- } catch (error) {
558
- readableStreamDefaultControllerError(controller, error);
559
- throw error;
560
- }
561
- }
562
- readableStreamDefaultControllerCallPullIfNeeded(controller);
496
+ if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller)) return;
497
+ const { stream } = controller[kState];
498
+ if (isReadableStreamLocked(stream) && readableStreamGetNumReadRequests(stream)) {
499
+ readableStreamFulfillReadRequest(stream, chunk, false);
500
+ } else {
501
+ try {
502
+ const chunkSize = controller[kState].sizeAlgorithm(chunk);
503
+ enqueueValueWithSize(controller, chunk, chunkSize);
504
+ } catch (error) {
505
+ readableStreamDefaultControllerError(controller, error);
506
+ throw error;
507
+ }
508
+ }
509
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
563
510
  }
564
511
  function readableStreamDefaultControllerCanCloseOrEnqueue(controller) {
565
- const { stream } = controller[kState];
566
- return !controller[kState].closeRequested && stream[kState].state === "readable";
512
+ const { stream } = controller[kState];
513
+ return !controller[kState].closeRequested && stream[kState].state === "readable";
567
514
  }
568
515
  function readableStreamDefaultControllerGetDesiredSize(controller) {
569
- const { stream, highWaterMark, queueTotalSize } = controller[kState];
570
- switch (stream[kState].state) {
571
- case "errored":
572
- return null;
573
- case "closed":
574
- return 0;
575
- default:
576
- return highWaterMark - queueTotalSize;
577
- }
516
+ const { stream, highWaterMark, queueTotalSize } = controller[kState];
517
+ switch (stream[kState].state) {
518
+ case "errored": return null;
519
+ case "closed": return 0;
520
+ default: return highWaterMark - queueTotalSize;
521
+ }
578
522
  }
579
523
  function readableStreamDefaultControllerHasBackpressure(controller) {
580
- return !readableStreamDefaultControllerShouldCallPull(controller);
524
+ return !readableStreamDefaultControllerShouldCallPull(controller);
581
525
  }
582
526
  function readableStreamDefaultControllerShouldCallPull(controller) {
583
- const { stream } = controller[kState];
584
- if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller) || !controller[kState].started)
585
- return false;
586
- if (isReadableStreamLocked(stream) && readableStreamGetNumReadRequests(stream)) {
587
- return true;
588
- }
589
- const desiredSize = readableStreamDefaultControllerGetDesiredSize(controller);
590
- return desiredSize !== null && desiredSize > 0;
527
+ const { stream } = controller[kState];
528
+ if (!readableStreamDefaultControllerCanCloseOrEnqueue(controller) || !controller[kState].started) return false;
529
+ if (isReadableStreamLocked(stream) && readableStreamGetNumReadRequests(stream)) {
530
+ return true;
531
+ }
532
+ const desiredSize = readableStreamDefaultControllerGetDesiredSize(controller);
533
+ return desiredSize !== null && desiredSize > 0;
591
534
  }
592
535
  function readableStreamDefaultControllerCallPullIfNeeded(controller) {
593
- if (!readableStreamDefaultControllerShouldCallPull(controller))
594
- return;
595
- if (controller[kState].pulling) {
596
- controller[kState].pullAgain = true;
597
- return;
598
- }
599
- controller[kState].pulling = true;
600
- controller[kState].pullAlgorithm(controller).then(
601
- () => {
602
- controller[kState].pulling = false;
603
- if (controller[kState].pullAgain) {
604
- controller[kState].pullAgain = false;
605
- readableStreamDefaultControllerCallPullIfNeeded(controller);
606
- }
607
- },
608
- (error) => readableStreamDefaultControllerError(controller, error)
609
- );
536
+ if (!readableStreamDefaultControllerShouldCallPull(controller)) return;
537
+ if (controller[kState].pulling) {
538
+ controller[kState].pullAgain = true;
539
+ return;
540
+ }
541
+ controller[kState].pulling = true;
542
+ controller[kState].pullAlgorithm(controller).then(() => {
543
+ controller[kState].pulling = false;
544
+ if (controller[kState].pullAgain) {
545
+ controller[kState].pullAgain = false;
546
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
547
+ }
548
+ }, (error) => readableStreamDefaultControllerError(controller, error));
610
549
  }
611
550
  function readableStreamDefaultControllerClearAlgorithms(controller) {
612
- controller[kState].pullAlgorithm = void 0;
613
- controller[kState].cancelAlgorithm = void 0;
614
- controller[kState].sizeAlgorithm = void 0;
551
+ controller[kState].pullAlgorithm = undefined;
552
+ controller[kState].cancelAlgorithm = undefined;
553
+ controller[kState].sizeAlgorithm = undefined;
615
554
  }
616
555
  function readableStreamDefaultControllerError(controller, error) {
617
- const { stream } = controller[kState];
618
- if (stream[kState].state === "readable") {
619
- resetQueue(controller);
620
- readableStreamDefaultControllerClearAlgorithms(controller);
621
- readableStreamError(stream, error);
622
- }
556
+ const { stream } = controller[kState];
557
+ if (stream[kState].state === "readable") {
558
+ resetQueue(controller);
559
+ readableStreamDefaultControllerClearAlgorithms(controller);
560
+ readableStreamError(stream, error);
561
+ }
623
562
  }
624
563
  function readableStreamDefaultControllerCancelSteps(controller, reason) {
625
- resetQueue(controller);
626
- const result = controller[kState].cancelAlgorithm(reason);
627
- readableStreamDefaultControllerClearAlgorithms(controller);
628
- return result;
564
+ resetQueue(controller);
565
+ const result = controller[kState].cancelAlgorithm(reason);
566
+ readableStreamDefaultControllerClearAlgorithms(controller);
567
+ return result;
629
568
  }
630
569
  function readableStreamDefaultControllerPullSteps(controller, readRequest) {
631
- const { stream, queue } = controller[kState];
632
- if (queue.length) {
633
- const chunk = dequeueValue(controller);
634
- if (controller[kState].closeRequested && !queue.length) {
635
- readableStreamDefaultControllerClearAlgorithms(controller);
636
- readableStreamClose(stream);
637
- } else {
638
- readableStreamDefaultControllerCallPullIfNeeded(controller);
639
- }
640
- readRequest[kChunk](chunk);
641
- return;
642
- }
643
- readableStreamAddReadRequest(stream, readRequest);
644
- readableStreamDefaultControllerCallPullIfNeeded(controller);
570
+ const { stream, queue } = controller[kState];
571
+ if (queue.length) {
572
+ const chunk = dequeueValue(controller);
573
+ if (controller[kState].closeRequested && !queue.length) {
574
+ readableStreamDefaultControllerClearAlgorithms(controller);
575
+ readableStreamClose(stream);
576
+ } else {
577
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
578
+ }
579
+ readRequest[kChunk](chunk);
580
+ return;
581
+ }
582
+ readableStreamAddReadRequest(stream, readRequest);
583
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
645
584
  }
646
585
  function setupReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {
647
- controller[kState] = {
648
- cancelAlgorithm,
649
- closeRequested: false,
650
- highWaterMark,
651
- pullAgain: false,
652
- pullAlgorithm,
653
- pulling: false,
654
- queue: [],
655
- queueTotalSize: 0,
656
- started: false,
657
- sizeAlgorithm,
658
- stream
659
- };
660
- stream[kState].controller = controller;
661
- const startResult = startAlgorithm();
662
- new Promise((r) => r(startResult)).then(
663
- () => {
664
- controller[kState].started = true;
665
- readableStreamDefaultControllerCallPullIfNeeded(controller);
666
- },
667
- (error) => readableStreamDefaultControllerError(controller, error)
668
- );
586
+ controller[kState] = {
587
+ cancelAlgorithm,
588
+ closeRequested: false,
589
+ highWaterMark,
590
+ pullAgain: false,
591
+ pullAlgorithm,
592
+ pulling: false,
593
+ queue: [],
594
+ queueTotalSize: 0,
595
+ started: false,
596
+ sizeAlgorithm,
597
+ stream
598
+ };
599
+ stream[kState].controller = controller;
600
+ const startResult = startAlgorithm();
601
+ new Promise((r) => r(startResult)).then(() => {
602
+ controller[kState].started = true;
603
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
604
+ }, (error) => readableStreamDefaultControllerError(controller, error));
669
605
  }
670
606
  function setupReadableStreamDefaultControllerFromSource(stream, source, highWaterMark, sizeAlgorithm) {
671
- const controller = new ReadableStreamDefaultController(kSkipThrow);
672
- const start = source?.start;
673
- const pull = source?.pull;
674
- const cancel = source?.cancel;
675
- const startAlgorithm = start ? start.bind(source, controller) : nonOpStart;
676
- const pullAlgorithm = pull ? createPromiseCallback("source.pull", pull, source) : nonOpPull;
677
- const cancelAlgorithm = cancel ? createPromiseCallback("source.cancel", cancel, source) : nonOpCancel;
678
- setupReadableStreamDefaultController(
679
- stream,
680
- controller,
681
- startAlgorithm,
682
- pullAlgorithm,
683
- cancelAlgorithm,
684
- highWaterMark,
685
- sizeAlgorithm
686
- );
607
+ const controller = new ReadableStreamDefaultController(kSkipThrow);
608
+ const start = source?.start;
609
+ const pull = source?.pull;
610
+ const cancel = source?.cancel;
611
+ const startAlgorithm = start ? start.bind(source, controller) : nonOpStart;
612
+ const pullAlgorithm = pull ? createPromiseCallback("source.pull", pull, source) : nonOpPull;
613
+ const cancelAlgorithm = cancel ? createPromiseCallback("source.cancel", cancel, source) : nonOpCancel;
614
+ setupReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);
687
615
  }
688
616
  function createReadableStream(start, pull, cancel, highWaterMark = 1, size = () => 1) {
689
- const stream = Object.create(ReadableStream.prototype);
690
- stream[kType] = "ReadableStream";
691
- stream[kState] = createReadableStreamState();
692
- const controller = new ReadableStreamDefaultController(kSkipThrow);
693
- setupReadableStreamDefaultController(
694
- stream,
695
- controller,
696
- start,
697
- pull,
698
- cancel,
699
- highWaterMark,
700
- size
701
- );
702
- return stream;
617
+ const stream = Object.create(ReadableStream.prototype);
618
+ stream[kType] = "ReadableStream";
619
+ stream[kState] = createReadableStreamState();
620
+ const controller = new ReadableStreamDefaultController(kSkipThrow);
621
+ setupReadableStreamDefaultController(stream, controller, start, pull, cancel, highWaterMark, size);
622
+ return stream;
703
623
  }
704
624
  function readableStreamFromIterable(iterable) {
705
- let stream;
706
- const iteratorRecord = getIterator(iterable, "async");
707
- const startAlgorithm = nonOpStart;
708
- async function pullAlgorithm() {
709
- const nextResult = iteratorNext(iteratorRecord);
710
- const nextPromise = Promise.resolve(nextResult);
711
- return nextPromise.then((iterResult) => {
712
- if (typeof iterResult !== "object" || iterResult === null) {
713
- throw new TypeError(
714
- "The promise returned by the iterator.next() method must fulfill with an object"
715
- );
716
- }
717
- if (iterResult.done) {
718
- readableStreamDefaultControllerClose(stream[kState].controller);
719
- } else {
720
- readableStreamDefaultControllerEnqueue(stream[kState].controller, iterResult.value);
721
- }
722
- });
723
- }
724
- async function cancelAlgorithm(reason) {
725
- const iterator = iteratorRecord.iterator;
726
- const returnMethod = iterator.return;
727
- if (returnMethod === void 0) {
728
- return Promise.resolve();
729
- }
730
- const returnResult = returnMethod.call(iterator, reason);
731
- const returnPromise = Promise.resolve(returnResult);
732
- return returnPromise.then((iterResult) => {
733
- if (typeof iterResult !== "object" || iterResult === null) {
734
- throw new TypeError(
735
- "The promise returned by the iterator.return() method must fulfill with an object"
736
- );
737
- }
738
- return void 0;
739
- });
740
- }
741
- stream = createReadableStream(
742
- startAlgorithm,
743
- pullAlgorithm,
744
- cancelAlgorithm,
745
- 0
746
- );
747
- return stream;
625
+ let stream;
626
+ const iteratorRecord = getIterator(iterable, "async");
627
+ const startAlgorithm = nonOpStart;
628
+ async function pullAlgorithm() {
629
+ const nextResult = iteratorNext(iteratorRecord);
630
+ const nextPromise = Promise.resolve(nextResult);
631
+ return nextPromise.then((iterResult) => {
632
+ if (typeof iterResult !== "object" || iterResult === null) {
633
+ throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object");
634
+ }
635
+ if (iterResult.done) {
636
+ readableStreamDefaultControllerClose(stream[kState].controller);
637
+ } else {
638
+ readableStreamDefaultControllerEnqueue(stream[kState].controller, iterResult.value);
639
+ }
640
+ });
641
+ }
642
+ async function cancelAlgorithm(reason) {
643
+ const iterator = iteratorRecord.iterator;
644
+ const returnMethod = iterator.return;
645
+ if (returnMethod === undefined) {
646
+ return Promise.resolve();
647
+ }
648
+ const returnResult = returnMethod.call(iterator, reason);
649
+ const returnPromise = Promise.resolve(returnResult);
650
+ return returnPromise.then((iterResult) => {
651
+ if (typeof iterResult !== "object" || iterResult === null) {
652
+ throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object");
653
+ }
654
+ return undefined;
655
+ });
656
+ }
657
+ stream = createReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);
658
+ return stream;
748
659
  }
749
660
  function readableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {
750
- let reader;
751
- let writer;
752
- try {
753
- reader = new ReadableStreamDefaultReader(source);
754
- writer = new WritableStreamDefaultWriter(dest);
755
- } catch (error) {
756
- return Promise.reject(error);
757
- }
758
- source[kState].disturbed = true;
759
- let shuttingDown = false;
760
- const { promise, resolve, reject } = Promise.withResolvers();
761
- const state = {
762
- currentWrite: Promise.resolve()
763
- };
764
- let abortListener;
765
- function finalize(rejected, error) {
766
- writableStreamDefaultWriterRelease(writer);
767
- readableStreamReaderGenericRelease(reader);
768
- if (signal !== void 0 && abortListener) {
769
- signal.removeEventListener("abort", abortListener);
770
- abortListener = void 0;
771
- }
772
- if (rejected)
773
- reject(error);
774
- else
775
- resolve();
776
- }
777
- async function waitForCurrentWrite() {
778
- const write = state.currentWrite;
779
- await write;
780
- if (write !== state.currentWrite)
781
- await waitForCurrentWrite();
782
- }
783
- function shutdownWithAnAction(action, rejected, originalError) {
784
- if (shuttingDown) return;
785
- shuttingDown = true;
786
- if (dest[kState].state === "writable" && !writableStreamCloseQueuedOrInFlight(dest)) {
787
- waitForCurrentWrite().then(complete, (error) => finalize(true, error));
788
- return;
789
- }
790
- complete();
791
- function complete() {
792
- action().then(
793
- () => finalize(!!rejected, originalError),
794
- (error) => finalize(true, error)
795
- );
796
- }
797
- }
798
- function shutdown(rejected, error) {
799
- if (shuttingDown) return;
800
- shuttingDown = true;
801
- if (dest[kState].state === "writable" && !writableStreamCloseQueuedOrInFlight(dest)) {
802
- waitForCurrentWrite().then(
803
- () => finalize(!!rejected, error),
804
- (err) => finalize(true, err)
805
- );
806
- return;
807
- }
808
- finalize(!!rejected, error);
809
- }
810
- function abortAlgorithm() {
811
- let error;
812
- if (signal.reason && signal.reason.name === "AbortError") {
813
- error = createAbortError();
814
- } else {
815
- error = signal.reason;
816
- }
817
- const actions = [];
818
- if (!preventAbort) {
819
- actions.push(() => {
820
- if (dest[kState].state === "writable")
821
- return writableStreamAbort(dest, error);
822
- return Promise.resolve();
823
- });
824
- }
825
- if (!preventCancel) {
826
- actions.push(() => {
827
- if (source[kState].state === "readable")
828
- return readableStreamCancel(source, error);
829
- return Promise.resolve();
830
- });
831
- }
832
- shutdownWithAnAction(
833
- () => Promise.all(actions.map((action) => action())).then(() => void 0),
834
- true,
835
- error
836
- );
837
- }
838
- function watchErrored(stream, watchPromise, action) {
839
- if (stream[kState].state === "errored")
840
- action(stream[kState].storedError);
841
- else
842
- watchPromise.then(void 0, action);
843
- }
844
- function watchClosed(stream, watchPromise, action) {
845
- if (stream[kState].state === "closed")
846
- action();
847
- else
848
- watchPromise.then(action, () => {
849
- });
850
- }
851
- class PipeToReadRequest {
852
- [kChunk](chunk) {
853
- _queueMicrotask(() => {
854
- state.currentWrite = writableStreamDefaultWriterWrite(writer, chunk);
855
- setPromiseHandled(state.currentWrite);
856
- stepPromise.resolve(false);
857
- });
858
- }
859
- [kClose]() {
860
- stepPromise.resolve(true);
861
- }
862
- [kError](error) {
863
- stepPromise.reject(error);
864
- }
865
- }
866
- let stepPromise = {
867
- resolve: null,
868
- reject: null
869
- };
870
- async function step() {
871
- if (shuttingDown) return true;
872
- if (dest[kState].backpressure) {
873
- await writer[kState].ready.promise;
874
- if (shuttingDown) return true;
875
- }
876
- const controller = source[kState].controller;
877
- if (source[kState].state === "readable" && isReadableStreamDefaultController(controller) && controller[kState].queue.length > 0) {
878
- while (controller[kState].queue.length > 0) {
879
- if (shuttingDown) return true;
880
- const chunk = dequeueValue(controller);
881
- if (controller[kState].closeRequested && !controller[kState].queue.length) {
882
- readableStreamDefaultControllerClearAlgorithms(controller);
883
- readableStreamClose(source);
884
- }
885
- state.currentWrite = writableStreamDefaultWriterWrite(writer, chunk);
886
- setPromiseHandled(state.currentWrite);
887
- if (dest[kState].backpressure) {
888
- break;
889
- } else if (dest[kState].state !== "writable" || writableStreamCloseQueuedOrInFlight(dest)) {
890
- break;
891
- }
892
- }
893
- readableStreamDefaultControllerCallPullIfNeeded(controller);
894
- if (source[kState].state === "closed") {
895
- return true;
896
- }
897
- return false;
898
- }
899
- const { promise: readPromise, resolve: readResolve, reject: readReject } = Promise.withResolvers();
900
- stepPromise = { resolve: readResolve, reject: readReject };
901
- readableStreamDefaultReaderRead(reader, new PipeToReadRequest());
902
- return readPromise;
903
- }
904
- async function run() {
905
- while (!await step()) ;
906
- }
907
- if (signal !== void 0) {
908
- if (signal.aborted) {
909
- abortAlgorithm();
910
- return promise;
911
- }
912
- abortListener = abortAlgorithm;
913
- signal.addEventListener("abort", abortListener, { once: true });
914
- }
915
- setPromiseHandled(run());
916
- watchErrored(source, reader[kState].close.promise, (error) => {
917
- if (!preventAbort) {
918
- return shutdownWithAnAction(
919
- () => writableStreamAbort(dest, error),
920
- true,
921
- error
922
- );
923
- }
924
- shutdown(true, error);
925
- });
926
- watchErrored(dest, writer[kState].close.promise, (error) => {
927
- if (!preventCancel) {
928
- return shutdownWithAnAction(
929
- () => readableStreamCancel(source, error),
930
- true,
931
- error
932
- );
933
- }
934
- shutdown(true, error);
935
- });
936
- watchClosed(source, reader[kState].close.promise, () => {
937
- if (!preventClose) {
938
- return shutdownWithAnAction(
939
- () => writableStreamDefaultWriterCloseWithErrorPropagation(writer)
940
- );
941
- }
942
- shutdown();
943
- });
944
- if (writableStreamCloseQueuedOrInFlight(dest) || dest[kState].state === "closed") {
945
- const error = new TypeError("Destination WritableStream is closed");
946
- if (!preventCancel) {
947
- shutdownWithAnAction(
948
- () => readableStreamCancel(source, error),
949
- true,
950
- error
951
- );
952
- } else {
953
- shutdown(true, error);
954
- }
955
- }
956
- return promise;
661
+ let reader;
662
+ let writer;
663
+ try {
664
+ reader = new ReadableStreamDefaultReader(source);
665
+ writer = new WritableStreamDefaultWriter(dest);
666
+ } catch (error) {
667
+ return Promise.reject(error);
668
+ }
669
+ source[kState].disturbed = true;
670
+ let shuttingDown = false;
671
+ const { promise, resolve, reject } = Promise.withResolvers();
672
+ const state = { currentWrite: Promise.resolve() };
673
+ let abortListener;
674
+ function finalize(rejected, error) {
675
+ writableStreamDefaultWriterRelease(writer);
676
+ readableStreamReaderGenericRelease(reader);
677
+ if (signal !== undefined && abortListener) {
678
+ signal.removeEventListener("abort", abortListener);
679
+ abortListener = undefined;
680
+ }
681
+ if (rejected) reject(error);
682
+ else resolve();
683
+ }
684
+ async function waitForCurrentWrite() {
685
+ const write = state.currentWrite;
686
+ await write;
687
+ if (write !== state.currentWrite) await waitForCurrentWrite();
688
+ }
689
+ function shutdownWithAnAction(action, rejected, originalError) {
690
+ if (shuttingDown) return;
691
+ shuttingDown = true;
692
+ if (dest[kState].state === "writable" && !writableStreamCloseQueuedOrInFlight(dest)) {
693
+ waitForCurrentWrite().then(complete, (error) => finalize(true, error));
694
+ return;
695
+ }
696
+ complete();
697
+ function complete() {
698
+ action().then(() => finalize(!!rejected, originalError), (error) => finalize(true, error));
699
+ }
700
+ }
701
+ function shutdown(rejected, error) {
702
+ if (shuttingDown) return;
703
+ shuttingDown = true;
704
+ if (dest[kState].state === "writable" && !writableStreamCloseQueuedOrInFlight(dest)) {
705
+ waitForCurrentWrite().then(() => finalize(!!rejected, error), (err) => finalize(true, err));
706
+ return;
707
+ }
708
+ finalize(!!rejected, error);
709
+ }
710
+ function abortAlgorithm() {
711
+ let error;
712
+ if (signal.reason && signal.reason.name === "AbortError") {
713
+ error = createAbortError();
714
+ } else {
715
+ error = signal.reason;
716
+ }
717
+ const actions = [];
718
+ if (!preventAbort) {
719
+ actions.push(() => {
720
+ if (dest[kState].state === "writable") return writableStreamAbort(dest, error);
721
+ return Promise.resolve();
722
+ });
723
+ }
724
+ if (!preventCancel) {
725
+ actions.push(() => {
726
+ if (source[kState].state === "readable") return readableStreamCancel(source, error);
727
+ return Promise.resolve();
728
+ });
729
+ }
730
+ shutdownWithAnAction(() => Promise.all(actions.map((action) => action())).then(() => undefined), true, error);
731
+ }
732
+ function watchErrored(stream, watchPromise, action) {
733
+ if (stream[kState].state === "errored") action(stream[kState].storedError);
734
+ else watchPromise.then(undefined, action);
735
+ }
736
+ function watchClosed(stream, watchPromise, action) {
737
+ if (stream[kState].state === "closed") action();
738
+ else watchPromise.then(action, () => {});
739
+ }
740
+ class PipeToReadRequest {
741
+ [kChunk](chunk) {
742
+ queueMicrotask(() => {
743
+ state.currentWrite = writableStreamDefaultWriterWrite(writer, chunk);
744
+ setPromiseHandled(state.currentWrite);
745
+ stepPromise.resolve(false);
746
+ });
747
+ }
748
+ [kClose]() {
749
+ stepPromise.resolve(true);
750
+ }
751
+ [kError](error) {
752
+ stepPromise.reject(error);
753
+ }
754
+ }
755
+ let stepPromise = {
756
+ resolve: null,
757
+ reject: null
758
+ };
759
+ async function step() {
760
+ if (shuttingDown) return true;
761
+ if (dest[kState].backpressure) {
762
+ await writer[kState].ready.promise;
763
+ if (shuttingDown) return true;
764
+ }
765
+ const controller = source[kState].controller;
766
+ if (source[kState].state === "readable" && isReadableStreamDefaultController(controller) && controller[kState].queue.length > 0) {
767
+ while (controller[kState].queue.length > 0) {
768
+ if (shuttingDown) return true;
769
+ const chunk = dequeueValue(controller);
770
+ if (controller[kState].closeRequested && !controller[kState].queue.length) {
771
+ readableStreamDefaultControllerClearAlgorithms(controller);
772
+ readableStreamClose(source);
773
+ }
774
+ state.currentWrite = writableStreamDefaultWriterWrite(writer, chunk);
775
+ setPromiseHandled(state.currentWrite);
776
+ if (dest[kState].backpressure) {
777
+ break;
778
+ } else if (dest[kState].state !== "writable" || writableStreamCloseQueuedOrInFlight(dest)) {
779
+ break;
780
+ }
781
+ }
782
+ readableStreamDefaultControllerCallPullIfNeeded(controller);
783
+ if (source[kState].state === "closed") {
784
+ return true;
785
+ }
786
+ return false;
787
+ }
788
+ const { promise: readPromise, resolve: readResolve, reject: readReject } = Promise.withResolvers();
789
+ stepPromise = {
790
+ resolve: readResolve,
791
+ reject: readReject
792
+ };
793
+ readableStreamDefaultReaderRead(reader, new PipeToReadRequest());
794
+ return readPromise;
795
+ }
796
+ async function run() {
797
+ while (!await step());
798
+ }
799
+ if (signal !== undefined) {
800
+ if (signal.aborted) {
801
+ abortAlgorithm();
802
+ return promise;
803
+ }
804
+ abortListener = abortAlgorithm;
805
+ signal.addEventListener("abort", abortListener, { once: true });
806
+ }
807
+ setPromiseHandled(run());
808
+ watchErrored(source, reader[kState].close.promise, (error) => {
809
+ if (!preventAbort) {
810
+ return shutdownWithAnAction(() => writableStreamAbort(dest, error), true, error);
811
+ }
812
+ shutdown(true, error);
813
+ });
814
+ watchErrored(dest, writer[kState].close.promise, (error) => {
815
+ if (!preventCancel) {
816
+ return shutdownWithAnAction(() => readableStreamCancel(source, error), true, error);
817
+ }
818
+ shutdown(true, error);
819
+ });
820
+ watchClosed(source, reader[kState].close.promise, () => {
821
+ if (!preventClose) {
822
+ return shutdownWithAnAction(() => writableStreamDefaultWriterCloseWithErrorPropagation(writer));
823
+ }
824
+ shutdown();
825
+ });
826
+ if (writableStreamCloseQueuedOrInFlight(dest) || dest[kState].state === "closed") {
827
+ const error = new TypeError("Destination WritableStream is closed");
828
+ if (!preventCancel) {
829
+ shutdownWithAnAction(() => readableStreamCancel(source, error), true, error);
830
+ } else {
831
+ shutdown(true, error);
832
+ }
833
+ }
834
+ return promise;
957
835
  }
958
836
  function readableStreamDefaultTee(stream, cloneForBranch2) {
959
- const reader = new ReadableStreamDefaultReader(stream);
960
- let reading = false;
961
- let canceled1 = false;
962
- let canceled2 = false;
963
- let reason1;
964
- let reason2;
965
- let branch1;
966
- let branch2;
967
- const cancelPromise = Promise.withResolvers();
968
- async function pullAlgorithm() {
969
- if (reading) return;
970
- reading = true;
971
- const readRequest = {
972
- [kChunk](value) {
973
- _queueMicrotask(() => {
974
- reading = false;
975
- const value1 = value;
976
- let value2 = value;
977
- if (!canceled2 && cloneForBranch2) {
978
- try {
979
- value2 = structuredClone(value2);
980
- } catch {
981
- }
982
- }
983
- if (!canceled1) {
984
- readableStreamDefaultControllerEnqueue(
985
- branch1[kState].controller,
986
- value1
987
- );
988
- }
989
- if (!canceled2) {
990
- readableStreamDefaultControllerEnqueue(
991
- branch2[kState].controller,
992
- value2
993
- );
994
- }
995
- });
996
- },
997
- [kClose]() {
998
- _queueMicrotask(() => {
999
- reading = false;
1000
- if (!canceled1)
1001
- readableStreamDefaultControllerClose(branch1[kState].controller);
1002
- if (!canceled2)
1003
- readableStreamDefaultControllerClose(branch2[kState].controller);
1004
- if (!canceled1 || !canceled2)
1005
- cancelPromise.resolve(void 0);
1006
- });
1007
- },
1008
- [kError]() {
1009
- reading = false;
1010
- }
1011
- };
1012
- readableStreamDefaultReaderRead(reader, readRequest);
1013
- }
1014
- function cancel1Algorithm(reason) {
1015
- canceled1 = true;
1016
- reason1 = reason;
1017
- if (canceled2) {
1018
- const compositeReason = [reason1, reason2];
1019
- cancelPromise.resolve(readableStreamCancel(stream, compositeReason));
1020
- }
1021
- return cancelPromise.promise;
1022
- }
1023
- function cancel2Algorithm(reason) {
1024
- canceled2 = true;
1025
- reason2 = reason;
1026
- if (canceled1) {
1027
- const compositeReason = [reason1, reason2];
1028
- cancelPromise.resolve(readableStreamCancel(stream, compositeReason));
1029
- }
1030
- return cancelPromise.promise;
1031
- }
1032
- branch1 = createReadableStream(nonOpStart, pullAlgorithm, cancel1Algorithm);
1033
- branch2 = createReadableStream(nonOpStart, pullAlgorithm, cancel2Algorithm);
1034
- reader[kState].close.promise.then(
1035
- void 0,
1036
- (error) => {
1037
- readableStreamDefaultControllerError(branch1[kState].controller, error);
1038
- readableStreamDefaultControllerError(branch2[kState].controller, error);
1039
- if (!canceled1 || !canceled2)
1040
- cancelPromise.resolve(void 0);
1041
- }
1042
- );
1043
- return [branch1, branch2];
1044
- }
1045
- export {
1046
- ReadableStream,
1047
- ReadableStreamDefaultController,
1048
- ReadableStreamDefaultReader,
1049
- createReadableStream,
1050
- isReadableStream,
1051
- isReadableStreamDefaultController,
1052
- isReadableStreamDefaultReader,
1053
- isReadableStreamLocked,
1054
- readableStreamCancel,
1055
- readableStreamClose,
1056
- readableStreamDefaultControllerCanCloseOrEnqueue,
1057
- readableStreamDefaultControllerClose,
1058
- readableStreamDefaultControllerEnqueue,
1059
- readableStreamDefaultControllerError,
1060
- readableStreamDefaultControllerGetDesiredSize,
1061
- readableStreamDefaultControllerHasBackpressure,
1062
- readableStreamError,
1063
- setupReadableStreamDefaultController
1064
- };
837
+ const reader = new ReadableStreamDefaultReader(stream);
838
+ let reading = false;
839
+ let canceled1 = false;
840
+ let canceled2 = false;
841
+ let reason1;
842
+ let reason2;
843
+ let branch1;
844
+ let branch2;
845
+ const cancelPromise = Promise.withResolvers();
846
+ async function pullAlgorithm() {
847
+ if (reading) return;
848
+ reading = true;
849
+ const readRequest = {
850
+ [kChunk](value) {
851
+ queueMicrotask(() => {
852
+ reading = false;
853
+ const value1 = value;
854
+ let value2 = value;
855
+ if (!canceled2 && cloneForBranch2) {
856
+ try {
857
+ value2 = structuredClone(value2);
858
+ } catch {}
859
+ }
860
+ if (!canceled1) {
861
+ readableStreamDefaultControllerEnqueue(branch1[kState].controller, value1);
862
+ }
863
+ if (!canceled2) {
864
+ readableStreamDefaultControllerEnqueue(branch2[kState].controller, value2);
865
+ }
866
+ });
867
+ },
868
+ [kClose]() {
869
+ queueMicrotask(() => {
870
+ reading = false;
871
+ if (!canceled1) readableStreamDefaultControllerClose(branch1[kState].controller);
872
+ if (!canceled2) readableStreamDefaultControllerClose(branch2[kState].controller);
873
+ if (!canceled1 || !canceled2) cancelPromise.resolve(undefined);
874
+ });
875
+ },
876
+ [kError]() {
877
+ reading = false;
878
+ }
879
+ };
880
+ readableStreamDefaultReaderRead(reader, readRequest);
881
+ }
882
+ function cancel1Algorithm(reason) {
883
+ canceled1 = true;
884
+ reason1 = reason;
885
+ if (canceled2) {
886
+ const compositeReason = [reason1, reason2];
887
+ cancelPromise.resolve(readableStreamCancel(stream, compositeReason));
888
+ }
889
+ return cancelPromise.promise;
890
+ }
891
+ function cancel2Algorithm(reason) {
892
+ canceled2 = true;
893
+ reason2 = reason;
894
+ if (canceled1) {
895
+ const compositeReason = [reason1, reason2];
896
+ cancelPromise.resolve(readableStreamCancel(stream, compositeReason));
897
+ }
898
+ return cancelPromise.promise;
899
+ }
900
+ branch1 = createReadableStream(nonOpStart, pullAlgorithm, cancel1Algorithm);
901
+ branch2 = createReadableStream(nonOpStart, pullAlgorithm, cancel2Algorithm);
902
+ reader[kState].close.promise.then(undefined, (error) => {
903
+ readableStreamDefaultControllerError(branch1[kState].controller, error);
904
+ readableStreamDefaultControllerError(branch2[kState].controller, error);
905
+ if (!canceled1 || !canceled2) cancelPromise.resolve(undefined);
906
+ });
907
+ return [branch1, branch2];
908
+ }
909
+
910
+ //#endregion
911
+ export { ReadableStream, ReadableStreamDefaultController, ReadableStreamDefaultReader, createReadableStream, isReadableStream, isReadableStreamDefaultController, isReadableStreamDefaultReader, isReadableStreamLocked, readableStreamCancel, readableStreamClose, readableStreamDefaultControllerCanCloseOrEnqueue, readableStreamDefaultControllerClose, readableStreamDefaultControllerEnqueue, readableStreamDefaultControllerError, readableStreamDefaultControllerGetDesiredSize, readableStreamDefaultControllerHasBackpressure, readableStreamError, setupReadableStreamDefaultController };