Skip to content

Commit 321faea

Browse files
MattiasBuelenssaschanaz
andauthoredAug 4, 2022
Add readable byte streams (#1362)
Co-authored-by: saschanaz <saschanaz@users.noreply.github.com>
1 parent 17ff4cb commit 321faea

9 files changed

+442
-83
lines changed
 

‎baselines/audioworklet.generated.d.ts

+38-7
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,18 @@ interface QueuingStrategyInit {
7575
highWaterMark: number;
7676
}
7777

78-
interface ReadableStreamReadDoneResult {
78+
interface ReadableStreamGetReaderOptions {
79+
/**
80+
* Creates a ReadableStreamBYOBReader and locks the stream to the new reader.
81+
*
82+
* This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.
83+
*/
84+
mode?: ReadableStreamReaderMode;
85+
}
86+
87+
interface ReadableStreamReadDoneResult<T> {
7988
done: true;
80-
value?: undefined;
89+
value?: T;
8190
}
8291

8392
interface ReadableStreamReadValueResult<T> {
@@ -145,6 +154,21 @@ interface Transformer<I = any, O = any> {
145154
writableType?: undefined;
146155
}
147156

157+
interface UnderlyingByteSource {
158+
autoAllocateChunkSize?: number;
159+
cancel?: UnderlyingSourceCancelCallback;
160+
pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;
161+
start?: (controller: ReadableByteStreamController) => any;
162+
type: "bytes";
163+
}
164+
165+
interface UnderlyingDefaultSource<R = any> {
166+
cancel?: UnderlyingSourceCancelCallback;
167+
pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;
168+
start?: (controller: ReadableStreamDefaultController<R>) => any;
169+
type?: undefined;
170+
}
171+
148172
interface UnderlyingSink<W = any> {
149173
abort?: UnderlyingSinkAbortCallback;
150174
close?: UnderlyingSinkCloseCallback;
@@ -154,10 +178,11 @@ interface UnderlyingSink<W = any> {
154178
}
155179

156180
interface UnderlyingSource<R = any> {
181+
autoAllocateChunkSize?: number;
157182
cancel?: UnderlyingSourceCancelCallback;
158183
pull?: UnderlyingSourcePullCallback<R>;
159184
start?: UnderlyingSourceStartCallback<R>;
160-
type?: undefined;
185+
type?: ReadableStreamType;
161186
}
162187

163188
/** A controller object that allows you to abort one or more DOM requests as and when desired. */
@@ -529,19 +554,23 @@ declare var ReadableByteStreamController: {
529554
interface ReadableStream<R = any> {
530555
readonly locked: boolean;
531556
cancel(reason?: any): Promise<void>;
557+
getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
532558
getReader(): ReadableStreamDefaultReader<R>;
559+
getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;
533560
pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
534561
pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
535562
tee(): [ReadableStream<R>, ReadableStream<R>];
536563
}
537564

538565
declare var ReadableStream: {
539566
prototype: ReadableStream;
567+
new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;
568+
new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
540569
new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
541570
};
542571

543572
interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
544-
read(view: ArrayBufferView): Promise<ReadableStreamReadResult<ArrayBufferView>>;
573+
read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
545574
releaseLock(): void;
546575
}
547576

@@ -990,7 +1019,9 @@ type DOMHighResTimeStamp = number;
9901019
type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
9911020
type MessageEventSource = MessagePort;
9921021
type PerformanceEntryList = PerformanceEntry[];
993-
type ReadableStreamController<T> = ReadableStreamDefaultController<T>;
994-
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult;
995-
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T>;
1022+
type ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;
1023+
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
1024+
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;
9961025
type Transferable = ArrayBuffer | MessagePort;
1026+
type ReadableStreamReaderMode = "byob";
1027+
type ReadableStreamType = "bytes";

‎baselines/dom.generated.d.ts

+38-7
Original file line numberDiff line numberDiff line change
@@ -1489,9 +1489,18 @@ interface RTCTransportStats extends RTCStats {
14891489
tlsVersion?: string;
14901490
}
14911491

1492-
interface ReadableStreamReadDoneResult {
1492+
interface ReadableStreamGetReaderOptions {
1493+
/**
1494+
* Creates a ReadableStreamBYOBReader and locks the stream to the new reader.
1495+
*
1496+
* This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.
1497+
*/
1498+
mode?: ReadableStreamReaderMode;
1499+
}
1500+
1501+
interface ReadableStreamReadDoneResult<T> {
14931502
done: true;
1494-
value?: undefined;
1503+
value?: T;
14951504
}
14961505

14971506
interface ReadableStreamReadValueResult<T> {
@@ -1775,6 +1784,21 @@ interface ULongRange {
17751784
min?: number;
17761785
}
17771786

1787+
interface UnderlyingByteSource {
1788+
autoAllocateChunkSize?: number;
1789+
cancel?: UnderlyingSourceCancelCallback;
1790+
pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;
1791+
start?: (controller: ReadableByteStreamController) => any;
1792+
type: "bytes";
1793+
}
1794+
1795+
interface UnderlyingDefaultSource<R = any> {
1796+
cancel?: UnderlyingSourceCancelCallback;
1797+
pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;
1798+
start?: (controller: ReadableStreamDefaultController<R>) => any;
1799+
type?: undefined;
1800+
}
1801+
17781802
interface UnderlyingSink<W = any> {
17791803
abort?: UnderlyingSinkAbortCallback;
17801804
close?: UnderlyingSinkCloseCallback;
@@ -1784,10 +1808,11 @@ interface UnderlyingSink<W = any> {
17841808
}
17851809

17861810
interface UnderlyingSource<R = any> {
1811+
autoAllocateChunkSize?: number;
17871812
cancel?: UnderlyingSourceCancelCallback;
17881813
pull?: UnderlyingSourcePullCallback<R>;
17891814
start?: UnderlyingSourceStartCallback<R>;
1790-
type?: undefined;
1815+
type?: ReadableStreamType;
17911816
}
17921817

17931818
interface ValidityStateFlags {
@@ -11391,19 +11416,23 @@ declare var ReadableByteStreamController: {
1139111416
interface ReadableStream<R = any> {
1139211417
readonly locked: boolean;
1139311418
cancel(reason?: any): Promise<void>;
11419+
getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
1139411420
getReader(): ReadableStreamDefaultReader<R>;
11421+
getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;
1139511422
pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
1139611423
pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
1139711424
tee(): [ReadableStream<R>, ReadableStream<R>];
1139811425
}
1139911426

1140011427
declare var ReadableStream: {
1140111428
prototype: ReadableStream;
11429+
new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;
11430+
new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
1140211431
new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
1140311432
};
1140411433

1140511434
interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
11406-
read(view: ArrayBufferView): Promise<ReadableStreamReadResult<ArrayBufferView>>;
11435+
read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
1140711436
releaseLock(): void;
1140811437
}
1140911438

@@ -18110,9 +18139,9 @@ type NamedCurve = string;
1811018139
type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;
1811118140
type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
1811218141
type PerformanceEntryList = PerformanceEntry[];
18113-
type ReadableStreamController<T> = ReadableStreamDefaultController<T>;
18114-
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult;
18115-
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T>;
18142+
type ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;
18143+
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
18144+
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;
1811618145
type RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
1811718146
type RequestInfo = Request | string;
1811818147
type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement;
@@ -18239,6 +18268,8 @@ type RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
1823918268
type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
1824018269
type RTCStatsIceCandidatePairState = "failed" | "frozen" | "in-progress" | "inprogress" | "succeeded" | "waiting";
1824118270
type RTCStatsType = "candidate-pair" | "certificate" | "codec" | "csrc" | "data-channel" | "inbound-rtp" | "local-candidate" | "media-source" | "outbound-rtp" | "peer-connection" | "remote-candidate" | "remote-inbound-rtp" | "remote-outbound-rtp" | "track" | "transport";
18271+
type ReadableStreamReaderMode = "byob";
18272+
type ReadableStreamType = "bytes";
1824218273
type ReadyState = "closed" | "ended" | "open";
1824318274
type RecordingState = "inactive" | "paused" | "recording";
1824418275
type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";

‎baselines/serviceworker.generated.d.ts

+38-7
Original file line numberDiff line numberDiff line change
@@ -464,9 +464,18 @@ interface QueuingStrategyInit {
464464
highWaterMark: number;
465465
}
466466

467-
interface ReadableStreamReadDoneResult {
467+
interface ReadableStreamGetReaderOptions {
468+
/**
469+
* Creates a ReadableStreamBYOBReader and locks the stream to the new reader.
470+
*
471+
* This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.
472+
*/
473+
mode?: ReadableStreamReaderMode;
474+
}
475+
476+
interface ReadableStreamReadDoneResult<T> {
468477
done: true;
469-
value?: undefined;
478+
value?: T;
470479
}
471480

472481
interface ReadableStreamReadValueResult<T> {
@@ -622,6 +631,21 @@ interface Transformer<I = any, O = any> {
622631
writableType?: undefined;
623632
}
624633

634+
interface UnderlyingByteSource {
635+
autoAllocateChunkSize?: number;
636+
cancel?: UnderlyingSourceCancelCallback;
637+
pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;
638+
start?: (controller: ReadableByteStreamController) => any;
639+
type: "bytes";
640+
}
641+
642+
interface UnderlyingDefaultSource<R = any> {
643+
cancel?: UnderlyingSourceCancelCallback;
644+
pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;
645+
start?: (controller: ReadableStreamDefaultController<R>) => any;
646+
type?: undefined;
647+
}
648+
625649
interface UnderlyingSink<W = any> {
626650
abort?: UnderlyingSinkAbortCallback;
627651
close?: UnderlyingSinkCloseCallback;
@@ -631,10 +655,11 @@ interface UnderlyingSink<W = any> {
631655
}
632656

633657
interface UnderlyingSource<R = any> {
658+
autoAllocateChunkSize?: number;
634659
cancel?: UnderlyingSourceCancelCallback;
635660
pull?: UnderlyingSourcePullCallback<R>;
636661
start?: UnderlyingSourceStartCallback<R>;
637-
type?: undefined;
662+
type?: ReadableStreamType;
638663
}
639664

640665
interface VideoConfiguration {
@@ -2603,19 +2628,23 @@ declare var ReadableByteStreamController: {
26032628
interface ReadableStream<R = any> {
26042629
readonly locked: boolean;
26052630
cancel(reason?: any): Promise<void>;
2631+
getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
26062632
getReader(): ReadableStreamDefaultReader<R>;
2633+
getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;
26072634
pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;
26082635
pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;
26092636
tee(): [ReadableStream<R>, ReadableStream<R>];
26102637
}
26112638

26122639
declare var ReadableStream: {
26132640
prototype: ReadableStream;
2641+
new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;
2642+
new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
26142643
new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;
26152644
};
26162645

26172646
interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
2618-
read(view: ArrayBufferView): Promise<ReadableStreamReadResult<ArrayBufferView>>;
2647+
read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
26192648
releaseLock(): void;
26202649
}
26212650

@@ -5588,9 +5617,9 @@ type NamedCurve = string;
55885617
type OnErrorEventHandler = OnErrorEventHandlerNonNull | null;
55895618
type PerformanceEntryList = PerformanceEntry[];
55905619
type PushMessageDataInit = BufferSource | string;
5591-
type ReadableStreamController<T> = ReadableStreamDefaultController<T>;
5592-
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult;
5593-
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T>;
5620+
type ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;
5621+
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
5622+
type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;
55945623
type RequestInfo = Request | string;
55955624
type TexImageSource = ImageBitmap | ImageData | OffscreenCanvas;
55965625
type TimerHandler = string | Function;
@@ -5627,6 +5656,8 @@ type PermissionState = "denied" | "granted" | "prompt";
56275656
type PredefinedColorSpace = "display-p3" | "srgb";
56285657
type PremultiplyAlpha = "default" | "none" | "premultiply";
56295658
type PushEncryptionKeyName = "auth" | "p256dh";
5659+
type ReadableStreamReaderMode = "byob";
5660+
type ReadableStreamType = "bytes";
56305661
type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
56315662
type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload";
56325663
type RequestCredentials = "include" | "omit" | "same-origin";

0 commit comments

Comments
 (0)
Please sign in to comment.