stream-adapter.tsx 564 B

1234567891011121314151617
  1. import { AsyncDeflate } from '../../..';
  2. export default (stream: AsyncDeflate) => {
  3. const writable = new WritableStream({
  4. write(dat: Uint8Array) { stream.push(dat); },
  5. close() { stream.push(new Uint8Array(0), true); }
  6. });
  7. const readable = new ReadableStream({
  8. start(controller: ReadableStreamDefaultController<Uint8Array>) {
  9. stream.ondata = (err, chunk, final) => {
  10. if (err) writable.abort(err.message);
  11. controller.enqueue(chunk);
  12. if (final) controller.close();
  13. }
  14. }
  15. });
  16. return { readable, writable };
  17. }