compression-streams-polyfill v0.1.7
compression-streams-polyfill
Lightweight polyfill/ponyfill for the Compression Streams API
Usage
Install:
npm i compression-streams-polyfill # or yarn add, or pnpm addImport:
import 'compression-streams-polyfill';
// CompressionStream and DecompressionStream are now availableIf your environment doesn't support ES Modules:
require('compression-streams-polyfill');If you want to load from a CDN in the browser:
<!--
You should use either UNPKG or jsDelivr (i.e. only one of the following)
You can specify the version, e.g. with compression-streams-polyfill@0.1.4
-->
<script src="https://unpkg.com/compression-streams-polyfill"></script>
<script src="https://cdn.jsdelivr.net/npm/compression-streams-polyfill"></script>Ponyfill usage
This polyfill is almost perfectly spec-compliant. Nonetheless, if you'd like to avoid adding CompressionStream and DecompressionStream to the global scope, you can use the ponyfill.
Note that you must supply your own TransformStream implementation to use the ponyfill (though TransformStream is available in most modern browsers).
import { makeCompressionStream, makeDecompressionStream } from 'compression-streams-polyfill/ponyfill';
// If you'd like to also ponyfill TransformStream:
// import { TransformStream } from 'web-streams-polyfill/ponyfill';
const CompressionStream = makeCompressionStream(TransformStream);
const DecompressionStream = makeDecompressionStream(TransformStream);Performance and size
This polyfill is based on fflate and is therefore very fast. It tends to be between 20% slower and 5% faster than Chromium's native CompressionStream and DecompressionStream. The CompressionStream polyfill also yields similar compression ratios to the native implementation.
The polyfill's full bundle size is about 17kB minified, or 7kB gzipped.
License
MIT