Server IP : 127.0.0.2 / Your IP : 18.119.132.107 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/nodejs/ |
Upload File : |
module.exports = read var readline = require('readline') var Mute = require('mute-stream') function read (opts, cb) { if (opts.num) { throw new Error('read() no longer accepts a char number limit') } if (typeof opts.default !== 'undefined' && typeof opts.default !== 'string' && typeof opts.default !== 'number') { throw new Error('default value must be string or number') } var input = opts.input || process.stdin var output = opts.output || process.stdout var prompt = (opts.prompt || '').trim() + ' ' var silent = opts.silent var editDef = false var timeout = opts.timeout var def = opts.default || '' if (def) { if (silent) { prompt += '(<default hidden>) ' } else if (opts.edit) { editDef = true } else { prompt += '(' + def + ') ' } } var terminal = !!(opts.terminal || output.isTTY) var m = new Mute({ replace: opts.replace, prompt: prompt }) m.pipe(output, {end: false}) output = m var rlOpts = { input: input, output: output, terminal: terminal } if (process.version.match(/^v0\.6/)) { var rl = readline.createInterface(rlOpts.input, rlOpts.output) } else { var rl = readline.createInterface(rlOpts) } output.unmute() rl.setPrompt(prompt) rl.prompt() if (silent) { output.mute() } else if (editDef) { rl.line = def rl.cursor = def.length rl._refreshLine() } var called = false rl.on('line', onLine) rl.on('error', onError) rl.on('SIGINT', function () { rl.close() onError(new Error('canceled')) }) var timer if (timeout) { timer = setTimeout(function () { onError(new Error('timed out')) }, timeout) } function done () { called = true rl.close() if (process.version.match(/^v0\.6/)) { rl.input.removeAllListeners('data') rl.input.removeAllListeners('keypress') rl.input.pause() } clearTimeout(timer) output.mute() output.end() } function onError (er) { if (called) return done() return cb(er) } function onLine (line) { if (called) return if (silent && terminal) { output.unmute() output.write('\r\n') } done() // truncate the \n at the end. line = line.replace(/\r?\n$/, '') var isDefault = !!(editDef && line === def) if (def && !line) { isDefault = true line = def } cb(null, line, isDefault) } }