![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/local/lib/node_modules/forever/node_modules/from/ |
Upload File : |
'use strict'; var Stream = require('stream') // from // // a stream that reads from an source. // source may be an array, or a function. // from handles pause behaviour for you. module.exports = function from (source) { if(Array.isArray(source)) { var source_index = 0, source_len = source.length; return from (function (i) { if(source_index < source_len) this.emit('data', source[source_index++]) else this.emit('end') return true }) } var s = new Stream(), i = 0 s.ended = false s.started = false s.readable = true s.writable = false s.paused = false s.ended = false s.pause = function () { s.started = true s.paused = true } function next () { s.started = true if(s.ended) return while(!s.ended && !s.paused && source.call(s, i++, function () { if(!s.ended && !s.paused) process.nextTick(next); })) ; } s.resume = function () { s.started = true s.paused = false next() } s.on('end', function () { s.ended = true s.readable = false process.nextTick(s.destroy) }) s.destroy = function () { s.ended = true s.emit('close') } /* by default, the stream will start emitting at nextTick if you want, you can pause it, after pipeing. you can also resume before next tick, and that will also work. */ process.nextTick(function () { if(!s.started) s.resume() }) return s }