Skip to content

Commit ad88916

Browse files
Add HWM and size algorithms to "set up a TransformStream"
1 parent 96c8cd1 commit ad88916

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

index.bs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6953,7 +6953,7 @@ for="ReadableStream">locked</dfn> if ! [$IsReadableStreamLocked$](|stream|) retu
69536953
up"><var>writeAlgorithm</var></dfn>, an optional algorithm <dfn export for="WritableStream/set
69546954
up"><var>closeAlgorithm</var></dfn>, an optional algorithm <dfn export for="WritableStream/set
69556955
up"><var>abortAlgorithm</var></dfn>, an optional number <dfn export for="WritableStream/set
6956-
up"><var>highWaterMark</var></dfn> (default 1), an optional algorithm <dfn export
6956+
up"><var>highWaterMark</var></dfn> (default 1), and an optional algorithm <dfn export
69576957
for="WritableStream/set up"><var>sizeAlgorithm</var></dfn>, perform the following steps.
69586958
|writeAlgorithm| must be an algorithm that accepts a [=chunk=] object and returns a promise. If
69596959
given, |closeAlgorithm| and |abortAlgorithm| may return a promise. If given, |sizeAlgorithm| must
@@ -7034,14 +7034,22 @@ reason.
70347034
<div algorithm="create a TransformStream">
70357035
To <dfn export for="TransformStream" lt="set up|setting up">set up</dfn> a
70367036
newly-[=new|created-via-Web IDL=] {{TransformStream}} |stream| given an algorithm <dfn export
7037-
for="TransformStream/set up"><var>transformAlgorithm</var></dfn> and an optional algorithm <dfn
7038-
export for="TransformStream/set up"><var>flushAlgorithm</var></dfn>, perform the following steps.
7037+
for="TransformStream/set up"><var>transformAlgorithm</var></dfn>, an optional algorithm <dfn
7038+
export for="TransformStream/set up"><var>flushAlgorithm</var></dfn>, an optional number <dfn
7039+
export for="TransformStream/set up"><var>writableHighWaterMark</var></dfn> (default 1), an optional
7040+
algorithm <dfn export for="TransformStream/set up"><var>writableSizeAlgorithm</var></dfn>, an
7041+
optional number <dfn export for="TransformStream/set up"><var>readableHighWaterMark</var></dfn>
7042+
(default 0), and an optional algorithm <dfn export
7043+
for="TransformStream/set up"><var>readableSizeAlgorithm</var></dfn>, perform the following steps.
70397044
|transformAlgorithm| and, if given, |flushAlgorithm|, may return a promise.
7045+
If given, |writableSizeAlgorithm| and |readableSizeAlgorithm| must be algorithms accepting
7046+
[=chunk=] objects and returning a number; and if given, |writableHighWaterMark| and
7047+
|readableHighWaterMark| must be non-negative, non-NaN numbers.
70407048

7041-
1. Let |writableHighWaterMark| be 1.
7042-
1. Let |writableSizeAlgorithm| be an algorithm that returns 1.
7043-
1. Let |readableHighWaterMark| be 0.
7044-
1. Let |readableSizeAlgorithm| be an algorithm that returns 1.
7049+
1. If |writableSizeAlgorithm| was not given, let |writableSizeAlgorithm| be an algorithm that
7050+
returns 1.
7051+
1. If |readableSizeAlgorithm| was not given, let |readableSizeAlgorithm| be an algorithm that
7052+
returns 1.
70457053
1. Let |transformAlgorithmWrapper| be an algorithm that runs these steps given a value |chunk|:
70467054
1. Let |result| be the result of running |transformAlgorithm| given |chunk|. If this throws an
70477055
exception |e|, return [=a promise rejected with=] |e|.
@@ -7086,7 +7094,7 @@ reason.
70867094
The following algorithms must only be used on {{TransformStream}} instances initialized via the
70877095
above [=TransformStream/set up=] algorithm. Usually they are called as part of
70887096
<var>[=TransformStream/set up/transformAlgorithm=]</var> or
7089-
<var>[=TransformStream/set up/flushAlgorithm=]</var>.
7097+
<var ignore>[=TransformStream/set up/flushAlgorithm=]</var>.
70907098

70917099
<p algorithm>To <dfn export for="TransformStream">enqueue</dfn> the JavaScript value |chunk| into a
70927100
{{TransformStream}} |stream|, perform !
@@ -7129,8 +7137,7 @@ Including the {{GenericTransformStream}} mixin will give an IDL interface the ap
71297137
the behavior of the resulting interface, its constructor (or other initialization code) must set
71307138
each instance's [=GenericTransformStream/transform=] to a [=new=] {{TransformStream}}, and then
71317139
[=TransformStream/set up|set it up=] with appropriate customizations via the
7132-
<var>[=TransformStream/set up/transformAlgorithm=]</var> and optionally
7133-
<var>[=TransformStream/set up/flushAlgorithm=]</var> arguments.
7140+
<var>[=TransformStream/set up/transformAlgorithm=]</var> and any optional arguments.
71347141

71357142
Note: Existing examples of this pattern on the web platform include {{CompressionStream}} and
71367143
{{TextDecoderStream}}. [[COMPRESSION]] [[ENCODING]]

0 commit comments

Comments
 (0)