{\itshape {\bfseries{Node.\+js core streams for userland}}} \href{https://travis-ci.com/nodejs/readable-stream}{\texttt{ }}

\href{https://nodei.co/npm/readable-stream/}{\texttt{ }} \href{https://nodei.co/npm/readable-stream/}{\texttt{ }}

\href{https://saucelabs.com/u/readabe-stream}{\texttt{ }}


\begin{DoxyCode}{0}
\DoxyCodeLine{npm install -\/-\/save readable-\/stream }

\end{DoxyCode}


This package is a mirror of the streams implementations in Node.\+js.

Full documentation may be found on the \href{https://nodejs.org/dist/v10.19.0/docs/api/stream.html}{\texttt{ Node.\+js website}}.

If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use {\bfseries{readable-\/stream}} {\itshape only} and avoid the $\ast$\char`\"{}stream\char`\"{}$\ast$ module in Node-\/core, for background see \href{http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html}{\texttt{ this blogpost}}.

As of version 2.\+0.\+0 {\bfseries{readable-\/stream}} uses semantic versioning.\hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28628}{}\doxysection{Version 3.\+x.\+x}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28628}
v3.\+x.\+x of {\ttfamily readable-\/stream} is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in \href{https://nodejs.org/en/blog/release/v9.0.0/}{\texttt{ Node v9}} and \href{https://nodejs.org/en/blog/release/v10.0.0/}{\texttt{ Node v10}}, as follows\+:


\begin{DoxyEnumerate}
\item Error codes\+: \href{https://github.com/nodejs/node/pull/13310}{\texttt{ https\+://github.\+com/nodejs/node/pull/13310}}, \href{https://github.com/nodejs/node/pull/13291}{\texttt{ https\+://github.\+com/nodejs/node/pull/13291}}, \href{https://github.com/nodejs/node/pull/16589}{\texttt{ https\+://github.\+com/nodejs/node/pull/16589}}, \href{https://github.com/nodejs/node/pull/15042}{\texttt{ https\+://github.\+com/nodejs/node/pull/15042}}, \href{https://github.com/nodejs/node/pull/15665}{\texttt{ https\+://github.\+com/nodejs/node/pull/15665}}, \href{https://github.com/nodejs/readable-stream/pull/344}{\texttt{ https\+://github.\+com/nodejs/readable-\/stream/pull/344}}
\item \textquotesingle{}readable\textquotesingle{} have precedence over flowing \href{https://github.com/nodejs/node/pull/18994}{\texttt{ https\+://github.\+com/nodejs/node/pull/18994}}
\item make virtual methods errors consistent \href{https://github.com/nodejs/node/pull/18813}{\texttt{ https\+://github.\+com/nodejs/node/pull/18813}}
\item updated streams error handling \href{https://github.com/nodejs/node/pull/18438}{\texttt{ https\+://github.\+com/nodejs/node/pull/18438}}
\item writable.\+end should return this. \href{https://github.com/nodejs/node/pull/18780}{\texttt{ https\+://github.\+com/nodejs/node/pull/18780}}
\item readable continues to read when push(\textquotesingle{}\textquotesingle{}) \href{https://github.com/nodejs/node/pull/18211}{\texttt{ https\+://github.\+com/nodejs/node/pull/18211}}
\item add custom inspect to Buffer\+List \href{https://github.com/nodejs/node/pull/17907}{\texttt{ https\+://github.\+com/nodejs/node/pull/17907}}
\item always defer \textquotesingle{}readable\textquotesingle{} with next\+Tick \href{https://github.com/nodejs/node/pull/17979}{\texttt{ https\+://github.\+com/nodejs/node/pull/17979}}
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28629}{}\doxysection{Version 2.\+x.\+x}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28629}
v2.\+x.\+x of {\ttfamily readable-\/stream} is a cut of the stream module from Node 8 (there have been no semver-\/major changes from Node 4 to 8). This version supports all Node.\+js versions from 0.\+8, as well as evergreen browsers and IE 10 \& 11.\hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28630}{}\doxysubsection{Big Thanks}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28630}
Cross-\/browser Testing Platform and Open Source $<$3 Provided by \mbox{[}Sauce Labs\mbox{]}\mbox{[}sauce\mbox{]}\hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28631}{}\doxysection{Usage}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28631}
You can swap your \`{}require(\textquotesingle{}stream\textquotesingle{})\`{} with \`{}require(\textquotesingle{}readable-\/stream\textquotesingle{})\`{} without any changes, if you are just using one of the main classes and functions.

\`{}\`{}\`{}js const \{ Readable, Writable, Transform, Duplex, pipeline, finished \} = require(\textquotesingle{}readable-\/stream\textquotesingle{}) \`{}\`{}\`{}\`{}

Note that \`{}require(\textquotesingle{}stream\textquotesingle{})\`{} will return \`{}\+Stream\`{}, while \`{}require(\textquotesingle{}readable-\/stream\textquotesingle{})\`{} will return \`{}\+Readable\`{}. We discourage using whatever is exported directly, but rather use one of the properties as shown in the example above.\hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28632}{}\doxysection{Streams Working Group}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28632}
\`{}readable-\/stream\`{} is maintained by the Streams Working Group, which oversees the development and maintenance of the Streams API within Node.\+js. The responsibilities of the Streams Working Group include\+:


\begin{DoxyItemize}
\item Addressing stream issues on the Node.\+js issue tracker.
\item Authoring and editing stream documentation within the Node.\+js project.
\item Reviewing changes to stream subclasses within the Node.\+js project.
\item Redirecting changes to streams from the Node.\+js project to this project.
\item Assisting in the implementation of stream providers within Node.\+js.
\item Recommending versions of \`{}readable-\/stream\`{} to be included in Node.\+js.
\item Messaging about the future of streams to give the community advance notice of changes.
\end{DoxyItemize}

\label{_members}%
 \hypertarget{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28633}{}\doxysubsection{Team Members}\label{md_sfcode_node_modules_spdy_transport_node_modules_readable_stream_README_autotoc_md28633}

\begin{DoxyItemize}
\item {\bfseries{Calvin Metcalf}} (\href{https://github.com/calvinmetcalf}{\texttt{ @calvinmetcalf}}) $<$\href{mailto:calvin.metcalf@gmail.com}{\texttt{ calvin.\+metcalf@gmail.\+com}}$>$
\begin{DoxyItemize}
\item Release GPG key\+: F3\+EF5\+F62\+A87\+FC27\+A22\+E643\+F714\+CE4\+FF5015\+AA242
\end{DoxyItemize}
\item {\bfseries{Mathias Buus}} (\href{https://github.com/mafintosh}{\texttt{ @mafintosh}}) $<$\href{mailto:mathiasbuus@gmail.com}{\texttt{ mathiasbuus@gmail.\+com}}$>$
\item {\bfseries{Matteo Collina}} (\href{https://github.com/mcollina}{\texttt{ @mcollina}}) $<$\href{mailto:matteo.collina@gmail.com}{\texttt{ matteo.\+collina@gmail.\+com}}$>$
\begin{DoxyItemize}
\item Release GPG key\+: 3ABC01543\+F22\+DD2239285\+CDD818674489\+FBC127E
\end{DoxyItemize}
\item {\bfseries{Irina Shestak}} (\href{https://github.com/lrlna}{\texttt{ @lrlna}}) $<$\href{mailto:shestak.irina@gmail.com}{\texttt{ shestak.\+irina@gmail.\+com}}$>$
\item {\bfseries{Yoshua Wyuts}} (\href{https://github.com/yoshuawuyts}{\texttt{ @yoshuawuyts}}) $<$\href{mailto:yoshuawuyts@gmail.com}{\texttt{ yoshuawuyts@gmail.\+com}}$>$ 
\end{DoxyItemize}