kriszyp / cbor-x

Ultra-fast CBOR encoder/decoder with extensions for records and structural cloning
MIT License
263 stars 33 forks source link

Web/WhatWG Streams API Support #98

Open pojntfx opened 7 months ago

pojntfx commented 7 months ago

Currently, this library supports the legacy NodeJS streams API (see https://github.com/kriszyp/cbor-x?tab=readme-ov-file#streams), but not the newer Web/WhatWG streams API (see https://developer.mozilla.org/en-US/docs/Web/API/Streams_API). While it is possible on NodeJS to convert from the legacy API to the the new web streams API with Readable.toWeb()/Writable.toWeb(), neither of these APIs are available in the browser, making it hard to use cbor-x's streaming decode/encode support correctly (with support for backpressure etc.) when reading from a Readable stream such as a fetch request body or a WebTransport stream.

Adding support for this new (and arguable simpler to implement) streams API natively would greatly simplify this library's use in the browser.

MeirionHughes commented 2 months ago

As an aside, if you add 'readable-stream' (node's v18 streams) to your bundler and import from there instead of node:streams, you can use the toWeb, fromWeb helpers in the browser.