Web Streams, based on the WHATWG spec reference implementation.
This library comes in four variants:
@mattiasbuelens/web-streams-polyfill
: a polyfill that replaces the native stream implementations. Recommended for use in web apps through a<script>
tag.@mattiasbuelens/web-streams-polyfill/es6
: a polyfill targeting ES2015+ environments. Recommended for use in web apps targeting modern browsers through a<script>
tag.@mattiasbuelens/web-streams-polyfill/ponyfill
: a ponyfill that provides the stream implementations without replacing any globals. Recommended for use in Node applications or web libraries.@mattiasbuelens/web-streams-polyfill/ponyfill/es6
: a ponyfill targeting ES2015+ environments. Recommended for use in modern Node applications, or in web libraries targeting modern browsers.
Each variant also includes TypeScript type definitions, compatible with the DOM type definitions for streams included in TypeScript.
Usage as a polyfill:
<!-- unpkg cdn -->
<script src="https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"></script>
<!-- self hosted -->
<script src="/path/to/web-streams-polyfill/dist/polyfill.min.js"></script>
<script>
var readable = new ReadableStream();
</script>
Usage as a Node module:
var streams = require("@mattiasbuelens/web-streams-polyfill/ponyfill");
var readable = new streams.ReadableStream();
Usage as a ES2015 module:
import { ReadableStream } from "@mattiasbuelens/web-streams-polyfill/ponyfill";
const readable = new ReadableStream();
The polyfill
and ponyfill
variants work in any ES5-compatible environment that has a global Promise
.
If you need to support older browsers or Node versions that do not have a native Promise
implementation
(check the support table), you must first include a Promise
polyfill
(e.g. promise-polyfill).
The polyfill/es6
and ponyfill/es6
variants work in any ES2015-compatible environment.
The polyfill implements version 1116de06e9
(29 Nov 2018) of the streams specification.
The type definitions are compatible with the built-in stream types of TypeScript 3.3.
Thanks to these people for their work on the original polyfill: