Skip to content

Commit d182a31

Browse files
MattiasBuelenssandersn
authored andcommitted
Improve Streams (#750)
* Use [NoInterfaceObject] on stream types * Remove unnecessary "override-exposed" * Support type parameters for typedefs * Align ReadableStreamReadResult with IteratorResult * Add chunk types to TextEncoderStream and TextDecoderStream
1 parent e1811c5 commit d182a31

File tree

7 files changed

+141
-66
lines changed

7 files changed

+141
-66
lines changed

baselines/dom.generated.d.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,16 @@ interface RTCTransportStats extends RTCStats {
14961496
selectedCandidatePairId?: string;
14971497
}
14981498

1499+
interface ReadableStreamReadDoneResult<T> {
1500+
done: true;
1501+
value?: T;
1502+
}
1503+
1504+
interface ReadableStreamReadValueResult<T> {
1505+
done: false;
1506+
value: T;
1507+
}
1508+
14991509
interface RegistrationOptions {
15001510
scope?: string;
15011511
type?: WorkerType;
@@ -12709,11 +12719,6 @@ interface ReadableStreamDefaultReader<R = any> {
1270912719
releaseLock(): void;
1271012720
}
1271112721

12712-
interface ReadableStreamReadResult<T> {
12713-
done: boolean;
12714-
value: T;
12715-
}
12716-
1271712722
interface ReadableStreamReader<R = any> {
1271812723
cancel(): Promise<void>;
1271912724
read(): Promise<ReadableStreamReadResult<R>>;
@@ -15662,6 +15667,8 @@ interface TextDecoderCommon {
1566215667
}
1566315668

1566415669
interface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {
15670+
readonly readable: ReadableStream<string>;
15671+
readonly writable: WritableStream<BufferSource>;
1566515672
}
1566615673

1566715674
declare var TextDecoderStream: {
@@ -15694,6 +15701,8 @@ interface TextEncoderCommon {
1569415701
}
1569515702

1569615703
interface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {
15704+
readonly readable: ReadableStream<Uint8Array>;
15705+
readonly writable: WritableStream<string>;
1569715706
}
1569815707

1569915708
declare var TextEncoderStream: {
@@ -19969,6 +19978,7 @@ type ConstrainDouble = number | ConstrainDoubleRange;
1996919978
type ConstrainBoolean = boolean | ConstrainBooleanParameters;
1997019979
type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;
1997119980
type PerformanceEntryList = PerformanceEntry[];
19981+
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
1997219982
type VibratePattern = number | number[];
1997319983
type COSEAlgorithmIdentifier = number;
1997419984
type AuthenticatorSelectionList = AAGUID[];

baselines/webworker.generated.d.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,16 @@ interface QueuingStrategy<T = any> {
371371
size?: QueuingStrategySizeCallback<T>;
372372
}
373373

374+
interface ReadableStreamReadDoneResult<T> {
375+
done: true;
376+
value?: T;
377+
}
378+
379+
interface ReadableStreamReadValueResult<T> {
380+
done: false;
381+
value: T;
382+
}
383+
374384
interface RegistrationOptions {
375385
scope?: string;
376386
type?: WorkerType;
@@ -2760,11 +2770,6 @@ interface ReadableStreamDefaultReader<R = any> {
27602770
releaseLock(): void;
27612771
}
27622772

2763-
interface ReadableStreamReadResult<T> {
2764-
done: boolean;
2765-
value: T;
2766-
}
2767-
27682773
interface ReadableStreamReader<R = any> {
27692774
cancel(): Promise<void>;
27702775
read(): Promise<ReadableStreamReadResult<R>>;
@@ -3083,6 +3088,8 @@ interface TextDecoderCommon {
30833088
}
30843089

30853090
interface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {
3091+
readonly readable: ReadableStream<string>;
3092+
readonly writable: WritableStream<BufferSource>;
30863093
}
30873094

30883095
declare var TextDecoderStream: {
@@ -3115,6 +3122,8 @@ interface TextEncoderCommon {
31153122
}
31163123

31173124
interface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {
3125+
readonly readable: ReadableStream<Uint8Array>;
3126+
readonly writable: WritableStream<string>;
31183127
}
31193128

31203129
declare var TextEncoderStream: {
@@ -5804,6 +5813,7 @@ type ImageBitmapSource = CanvasImageSource | Blob | ImageData;
58045813
type TimerHandler = string | Function;
58055814
type PerformanceEntryList = PerformanceEntry[];
58065815
type PushMessageDataInit = BufferSource | string;
5816+
type ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;
58075817
type VibratePattern = number | number[];
58085818
type AlgorithmIdentifier = string | Algorithm;
58095819
type HashAlgorithmIdentifier = AlgorithmIdentifier;

inputfiles/addedTypes.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,38 @@
21942194
}
21952195
}
21962196
}
2197+
},
2198+
"TextDecoderStream": {
2199+
"properties": {
2200+
"property": {
2201+
"readable": {
2202+
"name": "readable",
2203+
"read-only": 1,
2204+
"override-type": "ReadableStream<string>"
2205+
},
2206+
"writable": {
2207+
"name": "writable",
2208+
"read-only": 1,
2209+
"override-type": "WritableStream<BufferSource>"
2210+
}
2211+
}
2212+
}
2213+
},
2214+
"TextEncoderStream": {
2215+
"properties": {
2216+
"property": {
2217+
"readable": {
2218+
"name": "readable",
2219+
"read-only": 1,
2220+
"override-type": "ReadableStream<Uint8Array>"
2221+
},
2222+
"writable": {
2223+
"name": "writable",
2224+
"read-only": 1,
2225+
"override-type": "WritableStream<string>"
2226+
}
2227+
}
2228+
}
21972229
}
21982230
}
21992231
},

inputfiles/idl/Streams.widl

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,21 @@ dictionary PipeOptions {
4646
AbortSignal? signal;
4747
};
4848

49-
[Exposed=(Window,Worker)]
50-
interface ReadableStreamReadResult {
51-
attribute boolean done;
52-
attribute any value;
49+
dictionary ReadableStreamReadValueResult {
50+
required boolean done;
51+
required any value;
5352
};
5453

55-
[Constructor(ReadableStream stream),
56-
Exposed=(Window,Worker)]
54+
dictionary ReadableStreamReadDoneResult {
55+
required boolean done;
56+
any value;
57+
};
58+
59+
[Exposed=(Window,Worker)]
60+
typedef (ReadableStreamReadValueResult or ReadableStreamReadDoneResult) ReadableStreamReadResult;
61+
62+
[Exposed=(Window,Worker),
63+
NoInterfaceObject]
5764
interface ReadableStreamDefaultReader {
5865
readonly attribute Promise<void> closed;
5966

@@ -62,8 +69,8 @@ interface ReadableStreamDefaultReader {
6269
void releaseLock();
6370
};
6471

65-
[Constructor(ReadableStream stream),
66-
Exposed=(Window,Worker)]
72+
[Exposed=(Window,Worker),
73+
NoInterfaceObject]
6774
interface ReadableStreamBYOBReader {
6875
readonly attribute Promise<void> closed;
6976

@@ -72,7 +79,8 @@ interface ReadableStreamBYOBReader {
7279
void releaseLock();
7380
};
7481

75-
[Exposed=(Window,Worker)]
82+
[Exposed=(Window,Worker),
83+
NoInterfaceObject]
7684
interface ReadableStreamDefaultController {
7785
readonly attribute unrestricted double? desiredSize;
7886

@@ -81,7 +89,8 @@ interface ReadableStreamDefaultController {
8189
void error(optional any error);
8290
};
8391

84-
[Exposed=(Window,Worker)]
92+
[Exposed=(Window,Worker),
93+
NoInterfaceObject]
8594
interface ReadableByteStreamController {
8695
readonly attribute ReadableStreamBYOBRequest byobRequest;
8796
readonly attribute unrestricted double? desiredSize;
@@ -91,7 +100,8 @@ interface ReadableByteStreamController {
91100
void error(optional any error);
92101
};
93102

94-
[Exposed=(Window,Worker)]
103+
[Exposed=(Window,Worker),
104+
NoInterfaceObject]
95105
interface ReadableStreamBYOBRequest {
96106
readonly attribute ArrayBufferView view;
97107

@@ -121,8 +131,8 @@ dictionary UnderlyingSink {
121131
any type;
122132
};
123133

124-
[Constructor(ReadableStream stream),
125-
Exposed=(Window,Worker)]
134+
[Exposed=(Window,Worker),
135+
NoInterfaceObject]
126136
interface WritableStreamDefaultWriter {
127137
readonly attribute Promise<void> closed;
128138
readonly attribute unrestricted double? desiredSize;
@@ -134,7 +144,8 @@ interface WritableStreamDefaultWriter {
134144
Promise<void> write(any chunk);
135145
};
136146

137-
[Exposed=(Window,Worker)]
147+
[Exposed=(Window,Worker),
148+
NoInterfaceObject]
138149
interface WritableStreamDefaultController {
139150
void error(optional any error);
140151
};
@@ -158,7 +169,8 @@ dictionary Transformer {
158169
any writableType;
159170
};
160171

161-
[Exposed=(Window,Worker)]
172+
[Exposed=(Window,Worker),
173+
NoInterfaceObject]
162174
interface TransformStreamDefaultController {
163175
readonly attribute unrestricted double? desiredSize;
164176

0 commit comments

Comments
 (0)