diff options
Diffstat (limited to 'node_modules/read')
-rw-r--r-- | node_modules/read/LICENSE | 15 | ||||
-rw-r--r-- | node_modules/read/README.md | 53 | ||||
-rw-r--r-- | node_modules/read/lib/read.js | 113 | ||||
-rw-r--r-- | node_modules/read/package.json | 60 |
4 files changed, 241 insertions, 0 deletions
diff --git a/node_modules/read/LICENSE b/node_modules/read/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/read/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/read/README.md b/node_modules/read/README.md new file mode 100644 index 0000000..5967fad --- /dev/null +++ b/node_modules/read/README.md @@ -0,0 +1,53 @@ +## read + +For reading user input from stdin. + +Similar to the `readline` builtin's `question()` method, but with a +few more features. + +## USAGE + +```javascript +var read = require("read") +read(options, callback) +``` + +The callback gets called with either the user input, or the default +specified, or an error, as `callback(error, result, isDefault)` +node style. + +## OPTIONS + +Every option is optional. + +* `prompt` What to write to stdout before reading input. +* `silent` Don't echo the output as the user types it. +* `replace` Replace silenced characters with the supplied character value. +* `timeout` Number of ms to wait for user input before giving up. +* `default` The default value if the user enters nothing. +* `edit` Allow the user to edit the default value. +* `terminal` Treat the output as a TTY, whether it is or not. +* `input` Readable stream to get input data from. (default `process.stdin`) +* `output` Writeable stream to write prompts to. (default: `process.stdout`) + +If silent is true, and the input is a TTY, then read will set raw +mode, and read character by character. + +## COMPATIBILITY + +This module works sort of with node 0.6. It does not work with node +versions less than 0.6. It is best on node 0.8. + +On node version 0.6, it will remove all listeners on the input +stream's `data` and `keypress` events, because the readline module did +not fully clean up after itself in that version of node, and did not +make it possible to clean up after it in a way that has no potential +for side effects. + +Additionally, some of the readline options (like `terminal`) will not +function in versions of node before 0.8, because they were not +implemented in the builtin readline module. + +## CONTRIBUTING + +Patches welcome. diff --git a/node_modules/read/lib/read.js b/node_modules/read/lib/read.js new file mode 100644 index 0000000..a93d1b3 --- /dev/null +++ b/node_modules/read/lib/read.js @@ -0,0 +1,113 @@ + +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) + } +} diff --git a/node_modules/read/package.json b/node_modules/read/package.json new file mode 100644 index 0000000..d409938 --- /dev/null +++ b/node_modules/read/package.json @@ -0,0 +1,60 @@ +{ + "_from": "read@1.0.x", + "_id": "read@1.0.7", + "_inBundle": false, + "_integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "_location": "/read", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "read@1.0.x", + "name": "read", + "escapedName": "read", + "rawSpec": "1.0.x", + "saveSpec": null, + "fetchSpec": "1.0.x" + }, + "_requiredBy": [ + "/prompt" + ], + "_resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "_shasum": "b3da19bd052431a97671d44a42634adf710b40c4", + "_spec": "read@1.0.x", + "_where": "/data/dev/Projets/Bingoloto Remote/node_modules/prompt", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/isaacs/read/issues" + }, + "bundleDependencies": false, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "deprecated": false, + "description": "read(1) for node programs", + "devDependencies": { + "tap": "^1.2.0" + }, + "engines": { + "node": ">=0.8" + }, + "files": [ + "lib/read.js" + ], + "homepage": "https://github.com/isaacs/read#readme", + "license": "ISC", + "main": "lib/read.js", + "name": "read", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/read.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "1.0.7" +} |