Re: [whatwg/streams] Add two demos using streams for PNG manipulation (#911)

Great stuff!

- I'd like `GrayscalePNGSource` to be a transform stream. Wrapping a ReadableStream inside another ReadableStream is a pattern I'm trying to discourage. I realise the fact that no browser has shipped TransformStream yet makes this inconvenient! If it's not possible to change this, could we link only to "Unpack chunks of a PNG" for the time being?
- In `logReadableStream()`, it would be much easier to create a WritableStream and then pipe to it. Basically the contents of `pump()` would instead be in the `write()` method, except for the `if (done)` part which would go in the `close()` method. Try it, I think you'll like it!

As a general rule, any time you're using `getReader()` or `getWriter()`, you should think about whether there would be a simpler way to do it with `pipeTo()` or `pipeThrough()`.

General comments:

- It looks like `GrayscalePNGSource` won't work properly unless the input is an rgba PNG. Maybe it should throw in other cases?
- Using
```javascript
const {value, done} = await reader.read();
```
inside a loop in an async function is much easier and cleaner that using a `pump()` function. I think all the browsers that have or will have ReadableStream already support async/await.

It took me a while to understand what "Unpack chunks of a PNG" was doing. It would probably benefit from a bit more documentation.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/911#issuecomment-376754142

Received on Wednesday, 28 March 2018 04:02:35 UTC