diff --git a/baselines/audioworklet.generated.d.ts b/baselines/audioworklet.generated.d.ts index 1f6f1241f..991a2dd7a 100644 --- a/baselines/audioworklet.generated.d.ts +++ b/baselines/audioworklet.generated.d.ts @@ -75,9 +75,18 @@ interface QueuingStrategyInit { highWaterMark: number; } -interface ReadableStreamReadDoneResult { +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * 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. + */ + mode?: ReadableStreamReaderMode; +} + +interface ReadableStreamReadDoneResult { done: true; - value?: undefined; + value?: T; } interface ReadableStreamReadValueResult { @@ -145,6 +154,21 @@ interface Transformer { writableType?: undefined; } +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableByteStreamController) => void | PromiseLike; + start?: (controller: ReadableByteStreamController) => any; + type: "bytes"; +} + +interface UnderlyingDefaultSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike; + start?: (controller: ReadableStreamDefaultController) => any; + type?: undefined; +} + interface UnderlyingSink { abort?: UnderlyingSinkAbortCallback; close?: UnderlyingSinkCloseCallback; @@ -154,10 +178,11 @@ interface UnderlyingSink { } interface UnderlyingSource { + autoAllocateChunkSize?: number; cancel?: UnderlyingSourceCancelCallback; pull?: UnderlyingSourcePullCallback; start?: UnderlyingSourceStartCallback; - type?: undefined; + type?: ReadableStreamType; } /** A controller object that allows you to abort one or more DOM requests as and when desired. */ @@ -529,7 +554,9 @@ declare var ReadableByteStreamController: { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; @@ -537,11 +564,13 @@ interface ReadableStream { declare var ReadableStream: { prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream; + new(underlyingSource: UnderlyingDefaultSource, strategy?: QueuingStrategy): ReadableStream; new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; }; interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - read(view: ArrayBufferView): Promise>; + read(view: T): Promise>; releaseLock(): void; } @@ -990,7 +1019,9 @@ type DOMHighResTimeStamp = number; type EventListenerOrEventListenerObject = EventListener | EventListenerObject; type MessageEventSource = MessagePort; type PerformanceEntryList = PerformanceEntry[]; -type ReadableStreamController = ReadableStreamDefaultController; -type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; -type ReadableStreamReader = ReadableStreamDefaultReader; +type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; +type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; +type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; type Transferable = ArrayBuffer | MessagePort; +type ReadableStreamReaderMode = "byob"; +type ReadableStreamType = "bytes"; diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 053ccb504..ac97630dc 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -1485,9 +1485,18 @@ interface RTCTransportStats extends RTCStats { tlsVersion?: string; } -interface ReadableStreamReadDoneResult { +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * 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. + */ + mode?: ReadableStreamReaderMode; +} + +interface ReadableStreamReadDoneResult { done: true; - value?: undefined; + value?: T; } interface ReadableStreamReadValueResult { @@ -1771,6 +1780,21 @@ interface ULongRange { min?: number; } +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableByteStreamController) => void | PromiseLike; + start?: (controller: ReadableByteStreamController) => any; + type: "bytes"; +} + +interface UnderlyingDefaultSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike; + start?: (controller: ReadableStreamDefaultController) => any; + type?: undefined; +} + interface UnderlyingSink { abort?: UnderlyingSinkAbortCallback; close?: UnderlyingSinkCloseCallback; @@ -1780,10 +1804,11 @@ interface UnderlyingSink { } interface UnderlyingSource { + autoAllocateChunkSize?: number; cancel?: UnderlyingSourceCancelCallback; pull?: UnderlyingSourcePullCallback; start?: UnderlyingSourceStartCallback; - type?: undefined; + type?: ReadableStreamType; } interface ValidityStateFlags { @@ -11365,7 +11390,9 @@ declare var ReadableByteStreamController: { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; @@ -11373,11 +11400,13 @@ interface ReadableStream { declare var ReadableStream: { prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream; + new(underlyingSource: UnderlyingDefaultSource, strategy?: QueuingStrategy): ReadableStream; new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; }; interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - read(view: ArrayBufferView): Promise>; + read(view: T): Promise>; releaseLock(): void; } @@ -18080,9 +18109,9 @@ type NamedCurve = string; type OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; -type ReadableStreamController = ReadableStreamDefaultController; -type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; -type ReadableStreamReader = ReadableStreamDefaultReader; +type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; +type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; +type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; type RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext; type RequestInfo = Request | string; type TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement; @@ -18209,6 +18238,8 @@ type RTCSdpType = "answer" | "offer" | "pranswer" | "rollback"; type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable"; type RTCStatsIceCandidatePairState = "failed" | "frozen" | "in-progress" | "inprogress" | "succeeded" | "waiting"; 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"; +type ReadableStreamReaderMode = "byob"; +type ReadableStreamType = "bytes"; type ReadyState = "closed" | "ended" | "open"; type RecordingState = "inactive" | "paused" | "recording"; type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index 3e7ff5c77..cb17d2b06 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -464,9 +464,18 @@ interface QueuingStrategyInit { highWaterMark: number; } -interface ReadableStreamReadDoneResult { +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * 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. + */ + mode?: ReadableStreamReaderMode; +} + +interface ReadableStreamReadDoneResult { done: true; - value?: undefined; + value?: T; } interface ReadableStreamReadValueResult { @@ -622,6 +631,21 @@ interface Transformer { writableType?: undefined; } +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableByteStreamController) => void | PromiseLike; + start?: (controller: ReadableByteStreamController) => any; + type: "bytes"; +} + +interface UnderlyingDefaultSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike; + start?: (controller: ReadableStreamDefaultController) => any; + type?: undefined; +} + interface UnderlyingSink { abort?: UnderlyingSinkAbortCallback; close?: UnderlyingSinkCloseCallback; @@ -631,10 +655,11 @@ interface UnderlyingSink { } interface UnderlyingSource { + autoAllocateChunkSize?: number; cancel?: UnderlyingSourceCancelCallback; pull?: UnderlyingSourcePullCallback; start?: UnderlyingSourceStartCallback; - type?: undefined; + type?: ReadableStreamType; } interface VideoConfiguration { @@ -2593,7 +2618,9 @@ declare var ReadableByteStreamController: { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; @@ -2601,11 +2628,13 @@ interface ReadableStream { declare var ReadableStream: { prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream; + new(underlyingSource: UnderlyingDefaultSource, strategy?: QueuingStrategy): ReadableStream; new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; }; interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - read(view: ArrayBufferView): Promise>; + read(view: T): Promise>; releaseLock(): void; } @@ -5571,9 +5600,9 @@ type NamedCurve = string; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; type PushMessageDataInit = BufferSource | string; -type ReadableStreamController = ReadableStreamDefaultController; -type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; -type ReadableStreamReader = ReadableStreamDefaultReader; +type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; +type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; +type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; type RequestInfo = Request | string; type TexImageSource = ImageBitmap | ImageData | OffscreenCanvas; type TimerHandler = string | Function; @@ -5610,6 +5639,8 @@ type PermissionState = "denied" | "granted" | "prompt"; type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; type PushEncryptionKeyName = "auth" | "p256dh"; +type ReadableStreamReaderMode = "byob"; +type ReadableStreamType = "bytes"; type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; type RequestCredentials = "include" | "omit" | "same-origin"; diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index 0b371128e..6e6b0d353 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -430,9 +430,18 @@ interface QueuingStrategyInit { highWaterMark: number; } -interface ReadableStreamReadDoneResult { +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * 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. + */ + mode?: ReadableStreamReaderMode; +} + +interface ReadableStreamReadDoneResult { done: true; - value?: undefined; + value?: T; } interface ReadableStreamReadValueResult { @@ -588,6 +597,21 @@ interface Transformer { writableType?: undefined; } +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableByteStreamController) => void | PromiseLike; + start?: (controller: ReadableByteStreamController) => any; + type: "bytes"; +} + +interface UnderlyingDefaultSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike; + start?: (controller: ReadableStreamDefaultController) => any; + type?: undefined; +} + interface UnderlyingSink { abort?: UnderlyingSinkAbortCallback; close?: UnderlyingSinkCloseCallback; @@ -597,10 +621,11 @@ interface UnderlyingSink { } interface UnderlyingSource { + autoAllocateChunkSize?: number; cancel?: UnderlyingSourceCancelCallback; pull?: UnderlyingSourcePullCallback; start?: UnderlyingSourceStartCallback; - type?: undefined; + type?: ReadableStreamType; } interface VideoConfiguration { @@ -2472,7 +2497,9 @@ declare var ReadableByteStreamController: { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; @@ -2480,11 +2507,13 @@ interface ReadableStream { declare var ReadableStream: { prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream; + new(underlyingSource: UnderlyingDefaultSource, strategy?: QueuingStrategy): ReadableStream; new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; }; interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - read(view: ArrayBufferView): Promise>; + read(view: T): Promise>; releaseLock(): void; } @@ -5584,9 +5613,9 @@ type MessageEventSource = MessagePort | ServiceWorker; type NamedCurve = string; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; -type ReadableStreamController = ReadableStreamDefaultController; -type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; -type ReadableStreamReader = ReadableStreamDefaultReader; +type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; +type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; +type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; type RequestInfo = Request | string; type TexImageSource = ImageBitmap | ImageData | OffscreenCanvas; type TimerHandler = string | Function; @@ -5621,6 +5650,8 @@ type PermissionState = "denied" | "granted" | "prompt"; type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; type PushEncryptionKeyName = "auth" | "p256dh"; +type ReadableStreamReaderMode = "byob"; +type ReadableStreamType = "bytes"; type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; type RequestCredentials = "include" | "omit" | "same-origin"; diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index e8c35828b..e13cd5c61 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -480,9 +480,18 @@ interface RTCEncodedVideoFrameMetadata { width?: number; } -interface ReadableStreamReadDoneResult { +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * 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. + */ + mode?: ReadableStreamReaderMode; +} + +interface ReadableStreamReadDoneResult { done: true; - value?: undefined; + value?: T; } interface ReadableStreamReadValueResult { @@ -638,6 +647,21 @@ interface Transformer { writableType?: undefined; } +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableByteStreamController) => void | PromiseLike; + start?: (controller: ReadableByteStreamController) => any; + type: "bytes"; +} + +interface UnderlyingDefaultSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike; + start?: (controller: ReadableStreamDefaultController) => any; + type?: undefined; +} + interface UnderlyingSink { abort?: UnderlyingSinkAbortCallback; close?: UnderlyingSinkCloseCallback; @@ -647,10 +671,11 @@ interface UnderlyingSink { } interface UnderlyingSource { + autoAllocateChunkSize?: number; cancel?: UnderlyingSourceCancelCallback; pull?: UnderlyingSourcePullCallback; start?: UnderlyingSourceStartCallback; - type?: undefined; + type?: ReadableStreamType; } interface VideoColorSpaceInit { @@ -2691,7 +2716,9 @@ declare var ReadableByteStreamController: { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; @@ -2699,11 +2726,13 @@ interface ReadableStream { declare var ReadableStream: { prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream; + new(underlyingSource: UnderlyingDefaultSource, strategy?: QueuingStrategy): ReadableStream; new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; }; interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - read(view: ArrayBufferView): Promise>; + read(view: T): Promise>; releaseLock(): void; } @@ -5876,9 +5905,9 @@ type NamedCurve = string; type OnErrorEventHandler = OnErrorEventHandlerNonNull | null; type PerformanceEntryList = PerformanceEntry[]; type PushMessageDataInit = BufferSource | string; -type ReadableStreamController = ReadableStreamDefaultController; -type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; -type ReadableStreamReader = ReadableStreamDefaultReader; +type ReadableStreamController = ReadableStreamDefaultController | ReadableByteStreamController; +type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; +type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; type RequestInfo = Request | string; type TexImageSource = ImageBitmap | ImageData | OffscreenCanvas; type TimerHandler = string | Function; @@ -5916,6 +5945,8 @@ type PredefinedColorSpace = "display-p3" | "srgb"; type PremultiplyAlpha = "default" | "none" | "premultiply"; type PushEncryptionKeyName = "auth" | "p256dh"; type RTCEncodedVideoFrameType = "delta" | "empty" | "key"; +type ReadableStreamReaderMode = "byob"; +type ReadableStreamType = "bytes"; type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; type RequestCache = "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; type RequestCredentials = "include" | "omit" | "same-origin"; diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index 738837c91..dcabbbaef 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -1155,6 +1155,11 @@ }, "ReadableStreamReadDoneResult": { "name": "ReadableStreamReadDoneResult", + "typeParameters": [ + { + "name": "T" + } + ], "members": { "member": { "done": { @@ -1164,7 +1169,7 @@ }, "value": { "name": "value", - "overrideType": "undefined" + "overrideType": "T" } } } @@ -1190,6 +1195,63 @@ } } } + }, + "UnderlyingByteSource": { + "name": "UnderlyingByteSource", + "members": { + "member": { + "type": { + "name": "type", + "required": true, + "overrideType": "\"bytes\"" + }, + "autoAllocateChunkSize": { + "name": "autoAllocateChunkSize", + "type": "unsigned long long" + }, + "start": { + "name": "start", + "overrideType": "(controller: ReadableByteStreamController) => any" + }, + "pull": { + "name": "pull", + "overrideType": "(controller: ReadableByteStreamController) => void | PromiseLike" + }, + "cancel": { + "name": "cancel", + "type": "UnderlyingSourceCancelCallback" + } + } + } + }, + "UnderlyingDefaultSource": { + "name": "UnderlyingDefaultSource", + "typeParameters": [ + { + "name": "R", + "default": "any" + } + ], + "members": { + "member": { + "type": { + "name": "type", + "type": "undefined" + }, + "start": { + "name": "start", + "overrideType": "(controller: ReadableStreamDefaultController) => any" + }, + "pull": { + "name": "pull", + "overrideType": "(controller: ReadableStreamDefaultController) => void | PromiseLike" + }, + "cancel": { + "name": "cancel", + "type": "UnderlyingSourceCancelCallback" + } + } + } } } }, @@ -1302,21 +1364,7 @@ "type": "ReadableStreamReadDoneResult" } ], - "overrideType": "ReadableStreamReadValueResult | ReadableStreamReadDoneResult" - }, - { - "name": "ReadableStreamReader", - "typeParameters": [ - { - "name": "T" - } - ], - "type": [ - { - "type": "ReadableStreamDefaultReader" - } - ], - "overrideType": "ReadableStreamDefaultReader" + "overrideType": "ReadableStreamReadValueResult | ReadableStreamReadDoneResult" }, { "name": "EventListenerOrEventListenerObject", diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 0d6fd1176..a450dec09 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -2349,6 +2349,41 @@ "constructor": { "signature": { "0": { + "param": [ + { + "name": "underlyingSource", + "optional": false, + "type": "UnderlyingByteSource" + }, + { + "name": "strategy", + "overrideType": "{ highWaterMark?: number }" + } + ], + "overrideType": "ReadableStream" + }, + "1": { + "typeParameters": [ + { + "name": "R", + "default": "any" + } + ], + "param": [ + { + "name": "underlyingSource", + "optional": false, + "overrideType": "UnderlyingDefaultSource" + }, + { + "name": "strategy", + "optional": true, + "overrideType": "QueuingStrategy" + } + ], + "overrideType": "ReadableStream" + }, + "2": { "typeParameters": [ { "name": "R", @@ -2358,10 +2393,12 @@ "param": [ { "name": "underlyingSource", + "optional": true, "overrideType": "UnderlyingSource" }, { "name": "strategy", + "optional": true, "overrideType": "QueuingStrategy" } ], @@ -2372,6 +2409,12 @@ { "type": "UnderlyingSource" }, + { + "type": "UnderlyingByteSource" + }, + { + "type": "UnderlyingDefaultSource" + }, { "type": "QueuingStrategy" } @@ -2380,9 +2423,13 @@ "methods": { "method": { "getReader": { + "additionalSignatures": [ + "getReader(options: { mode: \"byob\" }): ReadableStreamBYOBReader", + "getReader(): ReadableStreamDefaultReader" + ], "signature": { "0": { - "overrideType": "ReadableStreamDefaultReader" + "overrideType": "ReadableStreamReader" } } }, @@ -2432,11 +2479,19 @@ "read": { "signature": { "0": { - "subtype": { - "subtype": { - "type": "ArrayBufferView" + "typeParameters": [ + { + "name": "T", + "extends": "ArrayBufferView" } - } + ], + "param": [ + { + "name": "view", + "overrideType": "T" + } + ], + "overrideType": "Promise>" } } } @@ -3167,9 +3222,6 @@ }, "pull": { "overrideType": "UnderlyingSourcePullCallback" - }, - "type": { - "overrideType": "undefined" } } } @@ -3264,13 +3316,30 @@ "typedefs": { "typedef": [ { - "overrideType": "ReadableStreamDefaultController", + "overrideType": "ReadableStreamDefaultController | ReadableByteStreamController", "name": "ReadableStreamController", "typeParameters": [ { "name": "T" } ] + }, + { + "name": "ReadableStreamReader", + "typeParameters": [ + { + "name": "T" + } + ], + "type": [ + { + "type": "ReadableStreamDefaultReader" + }, + { + "type": "ReadableStreamBYOBReader" + } + ], + "overrideType": "ReadableStreamDefaultReader | ReadableStreamBYOBReader" } ] }, diff --git a/inputfiles/removedTypes.jsonc b/inputfiles/removedTypes.jsonc index 7fd9632a8..78641cd12 100644 --- a/inputfiles/removedTypes.jsonc +++ b/inputfiles/removedTypes.jsonc @@ -19,8 +19,6 @@ "CredentialMediationRequirement": { "value": ["conditional"] // tied to Credential#isConditionalMediationAvailable }, - "ReadableStreamReaderMode": null, - "ReadableStreamType": null, "RTCStatsType": { "value": [ "stream", @@ -73,19 +71,6 @@ "NetworkInformation": { "implements": ["NetworkInformationSaveData"] }, - "ReadableStream": { - "methods": { - "method": { - "getReader": { - "signature": { - "0": { - "param": ["options"] - } - } - } - } - } - }, "Response": { "methods": { "method": { @@ -377,7 +362,6 @@ } }, "ReadableStreamReadResult": null, - "ReadableStreamGetReaderOptions": null, "RequestInit": { "members": { "member": { @@ -575,13 +559,6 @@ } } }, - "UnderlyingSource": { - "members": { - "member": { - "autoAllocateChunkSize": null - } - } - }, "VideoConfiguration": { "members": { "member": { diff --git a/unittests/files/streams.ts b/unittests/files/streams.ts new file mode 100644 index 000000000..a5237a26a --- /dev/null +++ b/unittests/files/streams.ts @@ -0,0 +1,110 @@ +function assertType(_x: T) {} + +const readableStream = new ReadableStream({ + start(controller) { + assertType>(controller); + controller.desiredSize; + controller.enqueue("a"); + }, + pull(controller) { + assertType>(controller); + controller.enqueue("b"); + controller.close(); + }, + cancel(reason) { + assertType(reason); + }, +}); + +const defaultReader1 = readableStream.getReader(); +assertType>(defaultReader1); +defaultReader1.read().then((result) => { + assertType>(result); + if (!result.done) { + result.value.charAt(0); + } +}); + +const readableByteStream = new ReadableStream({ + type: "bytes", + start(controller) { + assertType(controller); + controller.desiredSize; + controller.byobRequest; + }, + pull(controller) { + assertType(controller); + if (controller.byobRequest) { + assertType(controller.byobRequest); + controller.byobRequest.view; + controller.byobRequest.respond(1); + controller.byobRequest.respondWithNewView(new Uint32Array(1)); + } else { + controller.enqueue(new Uint8Array(1)); + } + controller.close(); + }, + cancel(reason) { + assertType(reason); + }, +}); + +const defaultReader2 = readableByteStream.getReader(); +assertType>(defaultReader2); +defaultReader2.read().then((result) => { + assertType>(result); + if (!result.done) { + result.value.buffer; + result.value[0]; + } +}); + +const byobReader = readableByteStream.getReader({ mode: "byob" }); +assertType(byobReader); +byobReader.read(new Uint8Array(1)); +byobReader.read(new DataView(new ArrayBuffer(1))).then((result) => { + assertType>(result); + if (!result.done) { + result.value.getUint8(0); + } +}); + +const writableStream = new WritableStream({ + start(controller) { + assertType(controller); + }, + write(chunk, controller) { + assertType(chunk); + assertType(controller); + chunk.toFixed(3); + controller.error("boom!"); + }, + close() {}, + abort(reason) { + assertType(reason); + }, +}); + +const defaultWriter = writableStream.getWriter(); +assertType>(defaultWriter); +defaultWriter.write(42); +defaultWriter.close(); +defaultWriter.abort("boom!"); + +const transformStream = new TransformStream({ + start(controller) { + assertType>(controller); + }, + transform(chunk, controller) { + assertType(chunk); + assertType>(controller); + controller.enqueue(chunk.length); + controller.error("boom!"); + }, + flush(controller) { + assertType>(controller); + controller.terminate(); + }, +}); +assertType>(transformStream.readable); +assertType>(transformStream.writable);