/
eb
/
Surf
Обзор
Документация
Войти
/
eb
/
Surf
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/to-through/index.js
60 строк
1 KB
EvgeniyBudaev
Initial commit
17 фев 2020, 09:02
17 фев 2020, 09:02
bb6f06f
Код
Авторство
О чём код?
'use strict'; var through = require('through2'); function forward(chunk, enc, cb) { cb(null, chunk); } function toThrough(readable) { var opts = { objectMode: readable._readableState.objectMode, highWaterMark: readable._readableState.highWaterMark, }; function flush(cb) { var self = this; readable.on('readable', onReadable); readable.on('end', cb); function onReadable() { var chunk; while (chunk = readable.read()) { self.push(chunk); } } } var wrapper = through(opts, forward, flush); var shouldFlow = true; wrapper.once('pipe', onPipe); wrapper.on('newListener', onListener); readable.on('error', wrapper.emit.bind(wrapper, 'error')); function onListener(event) { // Once we've seen the data or readable event, check if we need to flow if (event === 'data' || event === 'readable') { maybeFlow(); this.removeListener('newListener', onListener); } } function onPipe() { // If the wrapper is piped, disable flow shouldFlow = false; } function maybeFlow() { // If we need to flow, end the stream which triggers flush if (shouldFlow) { wrapper.end(); } } return wrapper; } module.exports = toThrough;