{"_id":"readline-sync","_rev":"284835","name":"readline-sync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","dist-tags":{"latest":"1.4.10"},"maintainers":[{"name":"anseki","email":""}],"time":{"modified":"2021-06-03T18:32:04.000Z","created":"2013-08-29T11:02:41.849Z","1.4.10":"2019-07-27T13:00:08.630Z","1.4.9":"2018-02-17T11:47:45.008Z","1.4.8":"2018-02-07T03:08:47.940Z","1.4.7":"2017-03-18T13:49:01.999Z","1.4.6":"2017-02-01T14:22:01.492Z","1.4.5":"2016-10-28T06:18:25.036Z","1.4.4":"2016-06-13T10:43:11.919Z","1.4.3":"2016-06-04T12:20:03.602Z","1.4.2":"2016-04-30T12:41:21.215Z","1.4.1":"2016-02-23T16:27:35.619Z","1.4.0":"2016-02-23T16:21:50.413Z","1.3.1":"2016-02-06T04:48:40.444Z","1.3.0":"2016-01-27T07:43:43.521Z","1.2.22":"2015-12-24T09:33:20.679Z","1.2.21":"2015-08-30T17:15:53.715Z","1.2.20":"2015-08-23T05:26:07.583Z","1.2.19":"2015-06-12T07:09:28.481Z","1.2.18":"2015-06-11T06:48:47.941Z","1.2.17":"2015-05-28T05:54:25.263Z","1.2.16":"2015-05-23T05:20:32.192Z","1.2.15":"2015-05-15T06:50:26.689Z","1.2.14":"2015-04-26T07:08:49.415Z","1.2.13":"2015-04-25T09:18:51.822Z","1.2.12":"2015-04-24T12:13:34.308Z","1.2.11":"2015-04-24T11:46:44.700Z","1.2.8":"2015-04-24T09:43:33.129Z","1.2.7":"2015-04-24T07:40:42.497Z","1.2.6":"2015-04-23T14:45:49.377Z","0.13.1":"2015-04-23T14:42:53.345Z","0.8.0":"2015-03-20T11:35:20.875Z","0.7.9":"2015-03-17T03:12:39.038Z","0.7.8":"2015-03-13T09:37:43.578Z","0.7.7":"2015-03-12T16:00:26.902Z","0.7.6":"2015-03-11T09:13:56.674Z","0.7.5":"2015-03-05T08:43:00.166Z","0.7.4":"2015-03-03T17:33:08.171Z","0.7.3":"2015-03-02T13:45:34.892Z","0.7.2":"2015-03-01T17:08:16.065Z","0.7.1":"2015-03-01T17:01:25.169Z","0.6.1":"2015-02-22T14:56:01.896Z","0.6.0":"2015-02-22T14:46:17.528Z","0.5.6":"2015-02-12T00:32:13.326Z","0.5.5":"2015-02-11T22:44:57.879Z","0.5.4":"2015-02-11T19:49:00.924Z","0.5.3":"2015-02-10T13:44:04.889Z","0.5.2":"2015-01-26T20:25:45.526Z","0.5.1":"2015-01-26T20:05:08.091Z","0.5.0":"2015-01-26T16:15:37.021Z","0.4.10":"2014-12-04T10:30:26.785Z","0.4.9":"2014-10-23T20:28:42.868Z","0.4.8":"2014-09-12T14:22:34.807Z","0.4.7":"2014-08-21T17:44:32.719Z","0.4.6":"2014-08-21T07:24:42.673Z","0.4.5":"2014-07-13T12:31:05.246Z","0.4.4":"2014-07-13T06:34:15.533Z","0.4.3":"2014-07-13T04:58:37.583Z","0.4.2":"2014-07-11T23:55:46.370Z","0.4.1":"2014-07-11T23:15:47.593Z","0.2.5":"2014-06-29T08:41:39.637Z","0.2.4":"2014-06-28T22:00:59.896Z","0.2.3":"2014-06-27T01:08:16.571Z","0.2.2":"2013-12-18T02:56:35.634Z","0.2.1":"2013-12-17T17:52:55.585Z","0.2.0":"2013-08-29T17:28:33.149Z","0.1.0":"2013-08-29T11:02:41.849Z"},"users":{"saintedlama":true,"neosix":true,"tracker1":true,"oheard":true,"jamesmgreene":true,"bpolonia":true,"redmonkeydf":true,"dannynemer":true,"abrelsfo":true,"huxiaolei":true,"derflatulator":true,"o1lab":true,"jonabrams":true,"josemarjobs":true,"holly":true,"sebagomez":true,"kuzmicheff":true,"dormi330":true,"maycon_ribeiro":true,"mdecker":true,"ys_sidson_aidson":true,"touskar":true,"lvivier":true,"mkrhere":true,"mugifly":true,"rguimaraens":true,"dwqs":true,"drazisil":true},"author":{"name":"anseki","url":"https://github.com/anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"versions":{"1.4.10":{"name":"readline-sync","version":"1.4.10","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","interactive","prompt","question","password","cli","tty","command","repl","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"668a1e837149ac2bd3200755ed897f3665e1e5bf","_id":"readline-sync@1.4.10","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"41df7fbb4b6312d673011594145705bf56d8873b","size":33267,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.10.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.10.tgz"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/readline-sync_1.4.10_1564232408476_0.351834982199946"},"_hasShrinkwrap":false,"publish_time":1564232408630,"_cnpm_publish_time":1564232408630},"1.4.9":{"name":"readline-sync","version":"1.4.9","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","interactive","prompt","question","password","cli","tty","command","repl","keyboard","wait","block"],"main":"./lib/readline-sync.js","files":["lib/*.@(js|ps1|sh)","LICENSE-MIT","README-Deprecated.md"],"engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"7ae7e6a4895c5bd7499a20db573386554736c24d","_id":"readline-sync@1.4.9","scripts":{},"_shasum":"3eda8e65f23cd2a17e61301b1f0003396af5ecda","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"3eda8e65f23cd2a17e61301b1f0003396af5ecda","size":33269,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.9.tgz"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/readline-sync_1.4.9_1518868064918_0.5789038428571252"},"_hasShrinkwrap":false,"publish_time":1518868065008,"_cnpm_publish_time":1518868065008},"1.4.8":{"name":"readline-sync","version":"1.4.8","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","interactive","prompt","question","password","cli","tty","command","repl","keyboard","wait","block"],"main":"./lib/readline-sync.js","files":["lib"],"engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"d328593a1ff9f1df49ea4dca29f4c844e2a1a7cb","_id":"readline-sync@1.4.8","scripts":{},"_shasum":"2e3b296fa64a35b2b011a754e46a235d46985de8","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"2e3b296fa64a35b2b011a754e46a235d46985de8","size":32210,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.8.tgz"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/readline-sync_1.4.8_1517972927799_0.9934745421092217"},"_hasShrinkwrap":false,"publish_time":1517972927940,"_cnpm_publish_time":1517972927940},"1.4.7":{"name":"readline-sync","version":"1.4.7","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","interactive","prompt","question","password","cli","tty","command","repl","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"40211f1987db7b994d2d0a348f6dac362c6af3af","_id":"readline-sync@1.4.7","scripts":{},"_shasum":"001bfdd4c06110c3c084c63bf7c6a56022213f30","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"001bfdd4c06110c3c084c63bf7c6a56022213f30","size":66822,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.7.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.7.tgz_1489844941702_0.5206114484462887"},"directories":{},"publish_time":1489844941999,"_cnpm_publish_time":1489844941999,"_hasShrinkwrap":false},"1.4.6":{"name":"readline-sync","version":"1.4.6","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","interactive","prompt","question","password","cli","tty","command","repl","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"39e95b7ca710a7b518a0b5e11fed3157f805a863","_id":"readline-sync@1.4.6","scripts":{},"_shasum":"87fdacf3a15c50ee88750251b14dc5a531c59118","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"87fdacf3a15c50ee88750251b14dc5a531c59118","size":66802,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.6.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.6.tgz_1485958921233_0.1824195224326104"},"directories":{},"publish_time":1485958921492,"_cnpm_publish_time":1485958921492,"_hasShrinkwrap":false},"1.4.5":{"name":"readline-sync","version":"1.4.5","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"90f173ad92d8d296a410a9b5b19df306a6ccc970","_id":"readline-sync@1.4.5","scripts":{},"_shasum":"c70d2b1473ecabc1e4d533cbaf3e8249fb77e992","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"c70d2b1473ecabc1e4d533cbaf3e8249fb77e992","size":66640,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.5.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.5.tgz_1477635504753_0.7610214669257402"},"directories":{},"publish_time":1477635505036,"_cnpm_publish_time":1477635505036,"_hasShrinkwrap":false},"1.4.4":{"name":"readline-sync","version":"1.4.4","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"e39454cd2bf1f03ada3ca4b010cfed2d9289168d","_id":"readline-sync@1.4.4","scripts":{},"_shasum":"42b168024b2014a6ec1f165ab1b3e442dce22215","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"42b168024b2014a6ec1f165ab1b3e442dce22215","size":66212,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.4.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.4.tgz_1465814591283_0.45198128605261445"},"directories":{},"publish_time":1465814591919,"_cnpm_publish_time":1465814591919,"_hasShrinkwrap":false},"1.4.3":{"name":"readline-sync","version":"1.4.3","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"c719316327a9810191579f96a683bfb5de99d2b6","_id":"readline-sync@1.4.3","scripts":{},"_shasum":"194e5e2863c4a36d792c2181712097fbedcf914e","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"194e5e2863c4a36d792c2181712097fbedcf914e","size":66195,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.3.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.3.tgz_1465042803162_0.44092911132611334"},"directories":{},"publish_time":1465042803602,"_cnpm_publish_time":1465042803602,"_hasShrinkwrap":false},"1.4.2":{"name":"readline-sync","version":"1.4.2","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"a7555c2aac6f0250a4540f31e9915f98b38ec8f2","_id":"readline-sync@1.4.2","scripts":{},"_shasum":"b99115de1290f297186275074c31ab6d1a13b6d6","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"b99115de1290f297186275074c31ab6d1a13b6d6","size":66187,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.2.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.2.tgz_1462020078961_0.5060030946042389"},"directories":{},"publish_time":1462020081215,"_cnpm_publish_time":1462020081215,"_hasShrinkwrap":false},"1.4.1":{"name":"readline-sync","version":"1.4.1","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"f802e5beceedb4fd413c28831a42a0b834a24536","_id":"readline-sync@1.4.1","scripts":{},"_shasum":"0651773d45551273a6a3414748f15c9195407993","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"0651773d45551273a6a3414748f15c9195407993","size":65299,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.1.tgz"},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.1.tgz_1456244850300_0.5645343037322164"},"directories":{},"publish_time":1456244855619,"_cnpm_publish_time":1456244855619,"_hasShrinkwrap":false},"1.4.0":{"name":"readline-sync","version":"1.4.0","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"67f3b66480e66f23444a7fed14acb2f34b62044c","_id":"readline-sync@1.4.0","scripts":{},"_shasum":"b23e723d3244edf18e14e9d17070cc175dbfb550","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"b23e723d3244edf18e14e9d17070cc175dbfb550","size":65286,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.4.0.tgz"},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/readline-sync-1.4.0.tgz_1456244505328_0.7682396944146603"},"directories":{},"publish_time":1456244510413,"_cnpm_publish_time":1456244510413,"_hasShrinkwrap":false},"1.3.1":{"name":"readline-sync","version":"1.3.1","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"7b59655a9a865472081634580eb6e8becc8f32c0","_id":"readline-sync@1.3.1","scripts":{},"_shasum":"0af5c8ae0706d7ccc2e03e374cd7dd3292a005eb","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"0af5c8ae0706d7ccc2e03e374cd7dd3292a005eb","size":65066,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.3.1.tgz"},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/readline-sync-1.3.1.tgz_1454734118026_0.5598298970144242"},"directories":{},"publish_time":1454734120444,"_cnpm_publish_time":1454734120444,"_hasShrinkwrap":false},"1.3.0":{"name":"readline-sync","version":"1.3.0","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"ed02067795c8bc6f8445dfc8ceba0e5e96a322ae","_id":"readline-sync@1.3.0","scripts":{},"_shasum":"7ce053718cb6f58e73a676ebfedbeab102446525","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"7ce053718cb6f58e73a676ebfedbeab102446525","size":65039,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.3.0.tgz"},"directories":{},"publish_time":1453880623521,"_cnpm_publish_time":1453880623521,"_hasShrinkwrap":false},"1.2.22":{"name":"readline-sync","version":"1.2.22","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"0e700b21f6256fee32d0884a93688a5c87894103","_id":"readline-sync@1.2.22","scripts":{},"_shasum":"ea098fb748b287eb42b58285200a1a600ccbca1c","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"ea098fb748b287eb42b58285200a1a600ccbca1c","size":64554,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.22.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.22.tgz"},"directories":{},"publish_time":1450949600679,"_cnpm_publish_time":1450949600679,"_hasShrinkwrap":false},"1.2.21":{"name":"readline-sync","version":"1.2.21","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"c3b717b5b53ab0849ac310f8871137c9f7454db0","_id":"readline-sync@1.2.21","scripts":{},"_shasum":"d7a0eb0472db948ca696c0d8112fb18836ac8e3a","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"d7a0eb0472db948ca696c0d8112fb18836ac8e3a","size":64411,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.21.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.21.tgz"},"directories":{},"publish_time":1440954953715,"_cnpm_publish_time":1440954953715,"_hasShrinkwrap":false},"1.2.20":{"name":"readline-sync","version":"1.2.20","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"274d13a44b31d004c12d1582035a415c26b19bfc","_id":"readline-sync@1.2.20","scripts":{},"_shasum":"06d298235004d8b3914e2b623d87602390b0c5e2","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.6","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"06d298235004d8b3914e2b623d87602390b0c5e2","size":64363,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.20.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.20.tgz"},"directories":{},"publish_time":1440307567583,"_cnpm_publish_time":1440307567583,"_hasShrinkwrap":false},"1.2.19":{"name":"readline-sync","version":"1.2.19","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"948b6909465f9ea4cddf21bb5c4ad79f827aa8dd","_id":"readline-sync@1.2.19","scripts":{},"_shasum":"39057e3045d033f21d6dbee37e00aa0669d9a351","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"39057e3045d033f21d6dbee37e00aa0669d9a351","size":63534,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.19.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.19.tgz"},"directories":{},"publish_time":1434092968481,"_cnpm_publish_time":1434092968481,"_hasShrinkwrap":false},"1.2.18":{"name":"readline-sync","version":"1.2.18","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"2aab17a10a0ab01c91742227f9da2cbd1e812d45","_id":"readline-sync@1.2.18","scripts":{},"_shasum":"5a4d89982d4c800c27dd976750596191f762920d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"5a4d89982d4c800c27dd976750596191f762920d","size":63543,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.18.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.18.tgz"},"directories":{},"publish_time":1434005327941,"_cnpm_publish_time":1434005327941,"_hasShrinkwrap":false},"1.2.17":{"name":"readline-sync","version":"1.2.17","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"b067a0ba78c13908873103001ce42875a25e2e90","_id":"readline-sync@1.2.17","scripts":{},"_shasum":"5eb91d636569850c3ed982a2ad14122dfb02229b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"5eb91d636569850c3ed982a2ad14122dfb02229b","size":37267,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.17.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.17.tgz"},"directories":{},"publish_time":1432792465263,"_cnpm_publish_time":1432792465263,"_hasShrinkwrap":false},"1.2.16":{"name":"readline-sync","version":"1.2.16","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"7c369225646c8c7491d97e2123de2e89f7ec0967","_id":"readline-sync@1.2.16","scripts":{},"_shasum":"888bfff911cb36667d50ea5f2d1ec694a0c3e6f1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"888bfff911cb36667d50ea5f2d1ec694a0c3e6f1","size":37261,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.16.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.16.tgz"},"directories":{},"publish_time":1432358432192,"_cnpm_publish_time":1432358432192,"_hasShrinkwrap":false},"1.2.15":{"name":"readline-sync","version":"1.2.15","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"146c05ccd4c8c7efb5e270a2210e1b4ba1a93445","_id":"readline-sync@1.2.15","scripts":{},"_shasum":"b98c375bde3fe07d0893998168c54ec87fcd5f82","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"b98c375bde3fe07d0893998168c54ec87fcd5f82","size":37268,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.15.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.15.tgz"},"directories":{},"publish_time":1431672626689,"_cnpm_publish_time":1431672626689,"_hasShrinkwrap":false},"1.2.14":{"name":"readline-sync","version":"1.2.14","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"56e1a7d3d10590df98e654db67d363e50a1d60b4","_id":"readline-sync@1.2.14","scripts":{},"_shasum":"ef1b44bd94b1c0c844a96f86740a998a681c34ae","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"ef1b44bd94b1c0c844a96f86740a998a681c34ae","size":36950,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.14.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.14.tgz"},"directories":{},"publish_time":1430032129415,"_cnpm_publish_time":1430032129415,"_hasShrinkwrap":false},"1.2.13":{"name":"readline-sync","version":"1.2.13","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"64e65b27d312f57e51e0c7c0685d3f4b26a3db48","_id":"readline-sync@1.2.13","scripts":{},"_shasum":"8e756bcc3df871e59ac7647fd947af6fb0c90182","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"8e756bcc3df871e59ac7647fd947af6fb0c90182","size":36939,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.13.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.13.tgz"},"directories":{},"publish_time":1429953531822,"_cnpm_publish_time":1429953531822,"_hasShrinkwrap":false},"1.2.12":{"name":"readline-sync","version":"1.2.12","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"f01fbf9946159b5622a305593a7dcd29704503e7","_id":"readline-sync@1.2.12","scripts":{},"_shasum":"0aec53f2af85040cf1056c25cd0fb02c0b32eb29","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"0aec53f2af85040cf1056c25cd0fb02c0b32eb29","size":36062,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.12.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.12.tgz"},"directories":{},"publish_time":1429877614308,"_cnpm_publish_time":1429877614308,"_hasShrinkwrap":false},"1.2.11":{"name":"readline-sync","version":"1.2.11","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"d7fa21e891ee2a4a55a7a76d4fe3a9b435a9bf43","_id":"readline-sync@1.2.11","scripts":{},"_shasum":"bdfdc95ebe6c4ba50c152830e45b506f906606a9","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"bdfdc95ebe6c4ba50c152830e45b506f906606a9","size":36051,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.11.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.11.tgz"},"directories":{},"publish_time":1429876004700,"_cnpm_publish_time":1429876004700,"_hasShrinkwrap":false},"1.2.8":{"name":"readline-sync","version":"1.2.8","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"557a067c9fdd149bf9dd8e84114dbc6cae5bf4ef","_id":"readline-sync@1.2.8","scripts":{},"_shasum":"f8c850baf4283e1c6b09e0cb2537d026d4cd7cf8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"f8c850baf4283e1c6b09e0cb2537d026d4cd7cf8","size":36046,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.8.tgz"},"directories":{},"publish_time":1429868613129,"_cnpm_publish_time":1429868613129,"_hasShrinkwrap":false},"1.2.7":{"name":"readline-sync","version":"1.2.7","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"bcec4a3be26eedd432bb83a1cbd9c0b08185dc0a","_id":"readline-sync@1.2.7","scripts":{},"_shasum":"73da0f3f640d76ad85f36d5a5f3c57d7ea02cece","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"73da0f3f640d76ad85f36d5a5f3c57d7ea02cece","size":36008,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.7.tgz"},"directories":{},"publish_time":1429861242497,"_cnpm_publish_time":1429861242497,"_hasShrinkwrap":false},"1.2.6":{"name":"readline-sync","version":"1.2.6","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"f8ce5409269ff650f786ab6e339e2a3ed5280531","_id":"readline-sync@1.2.6","scripts":{},"_shasum":"13af60b59561b0883a66b50de22f7b104aa3b4aa","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"13af60b59561b0883a66b50de22f7b104aa3b4aa","size":35899,"noattachment":false,"key":"/readline-sync/-/readline-sync-1.2.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-1.2.6.tgz"},"directories":{},"publish_time":1429800349377,"_cnpm_publish_time":1429800349377,"_hasShrinkwrap":false},"0.13.1":{"name":"readline-sync","version":"0.13.1","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"5acea6ccc9cddefae8e32413b38b9d57f15bae0e","_id":"readline-sync@0.13.1","scripts":{},"_shasum":"2c1ffbb29317b6d6719c33d51c74a89787b95bb0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"2c1ffbb29317b6d6719c33d51c74a89787b95bb0","size":35904,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.13.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.13.1.tgz"},"directories":{},"publish_time":1429800173345,"_cnpm_publish_time":1429800173345,"_hasShrinkwrap":false},"0.8.0":{"name":"readline-sync","version":"0.8.0","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"95d2e9f0885fa22871bad79704b6b74d7d19b6c8","_id":"readline-sync@0.8.0","scripts":{},"_shasum":"a383631d84a2403cb4ceb5de6f544a3f48687b30","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"a383631d84a2403cb4ceb5de6f544a3f48687b30","size":15862,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.8.0.tgz"},"directories":{},"publish_time":1426851320875,"_cnpm_publish_time":1426851320875,"_hasShrinkwrap":false},"0.7.9":{"name":"readline-sync","version":"0.7.9","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"583cb4048ae1193f0c0a770c9693e2d63709c745","_id":"readline-sync@0.7.9","scripts":{},"_shasum":"e8fc48c54dc4b17a405387aef1d3fa1e45f62553","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"e8fc48c54dc4b17a405387aef1d3fa1e45f62553","size":13217,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.9.tgz"},"directories":{},"publish_time":1426561959038,"_cnpm_publish_time":1426561959038,"_hasShrinkwrap":false},"0.7.8":{"name":"readline-sync","version":"0.7.8","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"c984c1b7beb7e11da4b300aae1d6f0a592522e81","_id":"readline-sync@0.7.8","scripts":{},"_shasum":"8f6f7e6b8fd4ed9ec1a89aacef47d6a87478086f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"8f6f7e6b8fd4ed9ec1a89aacef47d6a87478086f","size":13168,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.8.tgz"},"directories":{},"publish_time":1426239463578,"_cnpm_publish_time":1426239463578,"_hasShrinkwrap":false},"0.7.7":{"name":"readline-sync","version":"0.7.7","title":"readlineSync","description":"Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"2d29dc0c8af139c6c336ab23f1947f3eba8e9a6c","_id":"readline-sync@0.7.7","scripts":{},"_shasum":"a31f2012c767a7ffc40b9820dfb3bea7784beb5d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"a31f2012c767a7ffc40b9820dfb3bea7784beb5d","size":12966,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.7.tgz"},"directories":{},"publish_time":1426176026902,"_cnpm_publish_time":1426176026902,"_hasShrinkwrap":false},"0.7.6":{"name":"readline-sync","version":"0.7.6","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"a225c27e6ab81c14d0ff0d27ff850215d8a6b081","_id":"readline-sync@0.7.6","scripts":{},"_shasum":"f3cb631d108ce6fdfbab0739e25fb6bd47cedbe2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"f3cb631d108ce6fdfbab0739e25fb6bd47cedbe2","size":12932,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.6.tgz"},"directories":{},"publish_time":1426065236674,"_cnpm_publish_time":1426065236674,"_hasShrinkwrap":false},"0.7.5":{"name":"readline-sync","version":"0.7.5","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"a6039bcf36211d5375b09a0e1f660e8875a0405b","_id":"readline-sync@0.7.5","scripts":{},"_shasum":"ed7d918ddfc0ec0f2b83d7e632269c21cb7e1a59","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"ed7d918ddfc0ec0f2b83d7e632269c21cb7e1a59","size":11981,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.5.tgz"},"directories":{},"publish_time":1425544980166,"_cnpm_publish_time":1425544980166,"_hasShrinkwrap":false},"0.7.4":{"name":"readline-sync","version":"0.7.4","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"fc50c9636817fa6242d5003499d67f6534d7d496","_id":"readline-sync@0.7.4","scripts":{},"_shasum":"af5aee5505b7d4568d758456aa13316ef0cc8788","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"af5aee5505b7d4568d758456aa13316ef0cc8788","size":11813,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.4.tgz"},"directories":{},"publish_time":1425403988171,"_cnpm_publish_time":1425403988171,"_hasShrinkwrap":false},"0.7.3":{"name":"readline-sync","version":"0.7.3","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"9e8a318880ab71e0f233fb47e6284e2207f3dcd5","_id":"readline-sync@0.7.3","scripts":{},"_shasum":"51a44cc9aed1a88daeb170df72bdf50c1d3b46af","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"51a44cc9aed1a88daeb170df72bdf50c1d3b46af","size":11510,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.3.tgz"},"directories":{},"publish_time":1425303934892,"_cnpm_publish_time":1425303934892,"_hasShrinkwrap":false},"0.7.2":{"name":"readline-sync","version":"0.7.2","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"a2113444d130e2319c83923b684b21b3b9f9a002","_id":"readline-sync@0.7.2","scripts":{},"_shasum":"62e9dda54bcd27fa040a90ba0793d9458950b622","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"62e9dda54bcd27fa040a90ba0793d9458950b622","size":11595,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.2.tgz"},"directories":{},"publish_time":1425229696065,"_cnpm_publish_time":1425229696065,"_hasShrinkwrap":false},"0.7.1":{"name":"readline-sync","version":"0.7.1","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"c33a9d77cd150c3bb9bf17a4267e5d2e7245374e","_id":"readline-sync@0.7.1","scripts":{},"_shasum":"9f7e5fb0fcedb0984467b1f09fccfb8add72c9aa","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"9f7e5fb0fcedb0984467b1f09fccfb8add72c9aa","size":11381,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.7.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.7.1.tgz"},"directories":{},"publish_time":1425229285169,"_cnpm_publish_time":1425229285169,"_hasShrinkwrap":false},"0.6.1":{"name":"readline-sync","version":"0.6.1","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"a785f18b76cf98ef59b809356e6672fcb416101e","_id":"readline-sync@0.6.1","scripts":{},"_shasum":"bef8a12cc38bb6c6482e9c271a41403dff6224b6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"bef8a12cc38bb6c6482e9c271a41403dff6224b6","size":11323,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.6.1.tgz"},"directories":{},"publish_time":1424616961896,"_cnpm_publish_time":1424616961896,"_hasShrinkwrap":false},"0.6.0":{"name":"readline-sync","version":"0.6.0","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"55f290ea7c68e9918eedb4743815d519d9a20de7","_id":"readline-sync@0.6.0","scripts":{},"_shasum":"adc7d84cf29b8d0690b74da77059905923a1f5e0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"adc7d84cf29b8d0690b74da77059905923a1f5e0","size":11321,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.6.0.tgz"},"directories":{},"publish_time":1424616377528,"_cnpm_publish_time":1424616377528,"_hasShrinkwrap":false},"0.5.6":{"name":"readline-sync","version":"0.5.6","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","password","keyboard","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"0c503e3ffabb44da40b1c532a2e62cabe9a49fa3","_id":"readline-sync@0.5.6","scripts":{},"_shasum":"68a423785e261bf6efb765d8107fbab46b291223","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"68a423785e261bf6efb765d8107fbab46b291223","size":11117,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.6.tgz"},"directories":{},"publish_time":1423701133326,"_cnpm_publish_time":1423701133326,"_hasShrinkwrap":false},"0.5.5":{"name":"readline-sync","version":"0.5.5","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"ab94a1ea2b2d9783f0bf13b526d6c8cd58151996","_id":"readline-sync@0.5.5","scripts":{},"_shasum":"3ba3fa847a048210244f3e4259c1474372a80970","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"3ba3fa847a048210244f3e4259c1474372a80970","size":11106,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.5.tgz"},"directories":{},"publish_time":1423694697879,"_cnpm_publish_time":1423694697879,"_hasShrinkwrap":false},"0.5.4":{"name":"readline-sync","version":"0.5.4","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"995f22b4bfbc87557a29769372b4500eef2e57d6","_id":"readline-sync@0.5.4","scripts":{},"_shasum":"1ea9a9a455cba1b599ef51d938c3718b7f7bca04","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"1ea9a9a455cba1b599ef51d938c3718b7f7bca04","size":11077,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.4.tgz"},"directories":{},"publish_time":1423684140924,"_cnpm_publish_time":1423684140924,"_hasShrinkwrap":false},"0.5.3":{"name":"readline-sync","version":"0.5.3","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"ca90461c572aff3b4d82d32eb9425a6b3db33928","_id":"readline-sync@0.5.3","scripts":{},"_shasum":"a4f43ab855db6e51fedceaecdbb278a7f32c9b4e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"a4f43ab855db6e51fedceaecdbb278a7f32c9b4e","size":10525,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.3.tgz"},"directories":{},"publish_time":1423575844889,"_cnpm_publish_time":1423575844889,"_hasShrinkwrap":false},"0.5.2":{"name":"readline-sync","version":"0.5.2","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"db8e75433853c8ce42542e3ab19b96bb2044508d","_id":"readline-sync@0.5.2","scripts":{},"_shasum":"95245f5129a597726049f2c679932df955c77159","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"95245f5129a597726049f2c679932df955c77159","size":10495,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.2.tgz"},"directories":{},"publish_time":1422303945526,"_cnpm_publish_time":1422303945526,"_hasShrinkwrap":false},"0.5.1":{"name":"readline-sync","version":"0.5.1","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"33653153dc48a0a654fe2dc148a80443494f018d","_id":"readline-sync@0.5.1","scripts":{},"_shasum":"6cc8c8036180da3f3f4df3a21adfbc7dcc35f0fe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"6cc8c8036180da3f3f4df3a21adfbc7dcc35f0fe","size":10430,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.1.tgz"},"directories":{},"publish_time":1422302708091,"_cnpm_publish_time":1422302708091,"_hasShrinkwrap":false},"0.5.0":{"name":"readline-sync","version":"0.5.0","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"e9714a9a0ab12229a734389ff8dd3c927be5fb6d","_id":"readline-sync@0.5.0","scripts":{},"_shasum":"2f3b61d819a7533020ae075f7b6f5f892f468542","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"2f3b61d819a7533020ae075f7b6f5f892f468542","size":10599,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.5.0.tgz"},"directories":{},"publish_time":1422288937021,"_cnpm_publish_time":1422288937021,"_hasShrinkwrap":false},"0.4.10":{"name":"readline-sync","version":"0.4.10","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"ddcef20649c70bde217af6715c74635852298b0e","_id":"readline-sync@0.4.10","scripts":{},"_shasum":"bef03d993eca3585fd064f5d56d7276765dfc121","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"bef03d993eca3585fd064f5d56d7276765dfc121","size":10327,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.10.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.10.tgz"},"directories":{},"publish_time":1417689026785,"_cnpm_publish_time":1417689026785,"_hasShrinkwrap":false},"0.4.9":{"name":"readline-sync","version":"0.4.9","title":"readlineSync","description":"Synchronous Readline","keywords":["readline","synchronous","prompt","question","wait","block"],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"homepage":"https://github.com/anseki/readline-sync","repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":"MIT","author":{"name":"anseki","url":"https://github.com/anseki"},"gitHead":"ba3e8ba8d160391c8ef0cee94f4bccddd3852536","_id":"readline-sync@0.4.9","scripts":{},"_shasum":"87b71da680348a606fa3c2a6e8dcc857401df1d3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"87b71da680348a606fa3c2a6e8dcc857401df1d3","size":10263,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.9.tgz"},"directories":{},"publish_time":1414096122868,"_cnpm_publish_time":1414096122868,"_hasShrinkwrap":false},"0.4.8":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.8","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"gitHead":"d406cc1c194bd19bbd3ab1b6aa1d778b573ef02b","_id":"readline-sync@0.4.8","scripts":{},"_shasum":"29fe21cbebca4ac1fa23c92f5dd4c89ae65a1da8","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"29fe21cbebca4ac1fa23c92f5dd4c89ae65a1da8","size":10273,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.8.tgz"},"directories":{},"publish_time":1410531754807,"_cnpm_publish_time":1410531754807,"_hasShrinkwrap":false},"0.4.7":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.7","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"gitHead":"5fe64de8ab2396cc581ce304ebf017c25b044305","_id":"readline-sync@0.4.7","scripts":{},"_shasum":"61c7d3ab312d917eb1174325f79e1da426b879a3","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"61c7d3ab312d917eb1174325f79e1da426b879a3","size":10177,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.7.tgz"},"directories":{},"publish_time":1408643072719,"_cnpm_publish_time":1408643072719,"_hasShrinkwrap":false},"0.4.6":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.6","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"gitHead":"e3607ad0e12ff7b5eb44635aa17d09a292c239ce","_id":"readline-sync@0.4.6","scripts":{},"_shasum":"66131d270d083ea1b655abe971991d44a8daf6c8","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"dist":{"shasum":"66131d270d083ea1b655abe971991d44a8daf6c8","size":9777,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.6.tgz"},"directories":{},"publish_time":1408605882673,"_cnpm_publish_time":1408605882673,"_hasShrinkwrap":false},"0.4.5":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.5","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.4.5","dist":{"shasum":"c360278fe7e85497a0d60b10931b459c693ac18f","size":9288,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.5.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-2156-S1W4t_Nr\\1405254705329-0.19455485907383263\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1405254665246,"_cnpm_publish_time":1405254665246,"_hasShrinkwrap":false},"0.4.4":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.4","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.4.4","dist":{"shasum":"28d1169f26734b3e7fdc37c5af85643916ca6eae","size":9283,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.4.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-2544-5WIsJ5Jq\\1405233308094-0.6687436166685075\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1405233255533,"_cnpm_publish_time":1405233255533,"_hasShrinkwrap":false},"0.4.3":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.3","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.4.3","dist":{"shasum":"1819039df13b79b6b048133f1d969e31ca420c6c","size":9208,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.3.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-3380-h3W0MhPg\\1405227582391-0.9563010423444211\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1405227517583,"_cnpm_publish_time":1405227517583,"_hasShrinkwrap":false},"0.4.2":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.2","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.4.2","dist":{"shasum":"2dc624ce4ff47b4891ae6ad15b3d02a214db1d11","size":8913,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.2.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-1728-Z05CshR4\\1405123013140-0.42744684987701476\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1405122946370,"_cnpm_publish_time":1405122946370,"_hasShrinkwrap":false},"0.4.1":{"name":"readline-sync","description":"Synchronous Readline","version":"0.4.1","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.4.1","dist":{"shasum":"dd1482e6bd04f282aa07f1a1e5d111558f195e65","size":8734,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.4.1.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-2840-VCu27voL\\1405120613655-0.08692583697848022\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1405120547593,"_cnpm_publish_time":1405120547593,"_hasShrinkwrap":false},"0.2.5":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.5","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.2.5","dist":{"shasum":"2c48a438120c4653a9a96d1b479978ffcdbc543f","size":3364,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.5.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-1748-kqB0ZIiN\\1404031322570-0.35510917543433607\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1404031299637,"_cnpm_publish_time":1404031299637,"_hasShrinkwrap":false},"0.2.4":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.4","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.2.4","dist":{"shasum":"02ed2702b74a17d6c1c8dbbd65f686ae18f9dcc2","size":3359,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.4.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-3644-T63YtVFr\\1403992904060-0.4669714809861034\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1403992859896,"_cnpm_publish_time":1403992859896,"_hasShrinkwrap":false},"0.2.3":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.3","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"dependencies":{"sync-exec":"~0.3.2"},"keywords":["readline","synchronous","prompt","question","wait","block"],"_id":"readline-sync@0.2.3","dist":{"shasum":"ee1b26a76201322a728d6f4264429e637c1ec971","size":2948,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.3.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-4024-4p4DDRyl\\1403831336921-0.7443152382038534\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1403831296571,"_cnpm_publish_time":1403831296571,"_hasShrinkwrap":false},"0.2.2":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.2","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"readmeFilename":"README.md","_id":"readline-sync@0.2.2","dist":{"shasum":"043259d4b088771c235357b685cf87493ea5e88b","size":2485,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.2.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-3912-V430AFFO\\1387335401671-0.082390968920663\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1387335395634,"_cnpm_publish_time":1387335395634,"_hasShrinkwrap":false},"0.2.1":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.1","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"readmeFilename":"README.md","_id":"readline-sync@0.2.1","dist":{"shasum":"ff1628d0445deade864803f59f186d61e67e539e","size":2398,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.1.tgz"},"_resolved":"c:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\npm-3708-IGYSC1ZW\\1387302787312-0.643997123464942\\tmp.tgz","_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1387302775585,"_cnpm_publish_time":1387302775585,"_hasShrinkwrap":false},"0.2.0":{"name":"readline-sync","description":"Synchronous Readline","version":"0.2.0","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","synchronous","prompt","question","wait","block"],"readmeFilename":"README.md","_id":"readline-sync@0.2.0","dist":{"shasum":"798eb62f7982e72b7451611ca52982f0ba0182d9","size":2170,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.2.0.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1377797313149,"_cnpm_publish_time":1377797313149,"_hasShrinkwrap":false},"0.1.0":{"name":"readline-sync","description":"Synchronous Readline.question","version":"0.1.0","homepage":"https://github.com/anseki/readline-sync","author":{"name":"anseki"},"repository":{"type":"git","url":"git://github.com/anseki/readline-sync.git"},"bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"licenses":[{"type":"MIT","url":"https://github.com/anseki/readline-sync/blob/master/LICENSE-MIT"}],"main":"./lib/readline-sync.js","engines":{"node":">= 0.8.0"},"keywords":["readline","question","synchronous","prompt","wait","block"],"readmeFilename":"README.md","_id":"readline-sync@0.1.0","dist":{"shasum":"172848b951791d65614cab7e51248c415770efa5","size":1883,"noattachment":false,"key":"/readline-sync/-/readline-sync-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/readline-sync/download/readline-sync-0.1.0.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"anseki","email":"AnSeki.aff@gmail.com"},"maintainers":[{"name":"anseki","email":""}],"directories":{},"publish_time":1377774161849,"_cnpm_publish_time":1377774161849,"_hasShrinkwrap":false}},"readme":"# readlineSync\n\n[![npm](https://img.shields.io/npm/v/readline-sync.svg)](https://www.npmjs.com/package/readline-sync) [![GitHub issues](https://img.shields.io/github/issues/anseki/readline-sync.svg)](https://github.com/anseki/readline-sync/issues) [![dependencies](https://img.shields.io/badge/dependencies-No%20dependency-brightgreen.svg)](package.json) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)\n\nSynchronous [Readline](http://nodejs.org/api/readline.html) for interactively running to have a conversation with the user via a console(TTY).\n\nreadlineSync tries to let your script have a conversation with the user via a console, even when the input/output stream is redirected like `your-script <foo.dat >bar.log`.\n\n<table>\n<tr><td><a href=\"#basic_options\">Basic Options</a></td><td><a href=\"#utility_methods\">Utility Methods</a></td><td><a href=\"#placeholders\">Placeholders</a></td></tr>\n</table>\n\n* Simple case:\n\n```js\nvar readlineSync = require('readline-sync');\n\n// Wait for user's response.\nvar userName = readlineSync.question('May I have your name? ');\nconsole.log('Hi ' + userName + '!');\n\n// Handle the secret text (e.g. password).\nvar favFood = readlineSync.question('What is your favorite food? ', {\n  hideEchoBack: true // The typed text on screen is hidden by `*` (default).\n});\nconsole.log('Oh, ' + userName + ' loves ' + favFood + '!');\n```\n\n```console\nMay I have your name? CookieMonster\nHi CookieMonster!\nWhat is your favorite food? ****\nOh, CookieMonster loves tofu!\n```\n\n* Get the user's response by a single key without the Enter key:\n\n```js\nvar readlineSync = require('readline-sync');\nif (readlineSync.keyInYN('Do you want this module?')) {\n  // 'Y' key was pressed.\n  console.log('Installing now...');\n  // Do something...\n} else {\n  // Another key was pressed.\n  console.log('Searching another...');\n  // Do something...\n}\n```\n\n* Let the user choose an item from a list:\n\n```js\nvar readlineSync = require('readline-sync'),\n  animals = ['Lion', 'Elephant', 'Crocodile', 'Giraffe', 'Hippo'],\n  index = readlineSync.keyInSelect(animals, 'Which animal?');\nconsole.log('Ok, ' + animals[index] + ' goes to your room.');\n```\n\n```console\n[1] Lion\n[2] Elephant\n[3] Crocodile\n[4] Giraffe\n[5] Hippo\n[0] CANCEL\n\nWhich animal? [1...5 / 0]: 2\nOk, Elephant goes to your room.\n```\n\n* An UI like the Range Slider:  \n(Press `Z` or `X` key to change a value, and Space Bar to exit)\n\n```js\nvar readlineSync = require('readline-sync'),\n  MAX = 60, MIN = 0, value = 30, key;\nconsole.log('\\n\\n' + (new Array(20)).join(' ') +\n  '[Z] <- -> [X]  FIX: [SPACE]\\n');\nwhile (true) {\n  console.log('\\x1B[1A\\x1B[K|' +\n    (new Array(value + 1)).join('-') + 'O' +\n    (new Array(MAX - value + 1)).join('-') + '| ' + value);\n  key = readlineSync.keyIn('',\n    {hideEchoBack: true, mask: '', limit: 'zx '});\n  if (key === 'z') { if (value > MIN) { value--; } }\n  else if (key === 'x') { if (value < MAX) { value++; } }\n  else { break; }\n}\nconsole.log('\\nA value the user requested: ' + value);\n```\n\n![sample](screen_03.gif)\n\n* Handle the commands repeatedly, such as the shell interface:\n\n```js\nreadlineSync.promptCLLoop({\n  add: function(target, into) {\n    console.log(target + ' is added into ' + into + '.');\n    // Do something...\n  },\n  remove: function(target) {\n    console.log(target + ' is removed.');\n    // Do something...\n  },\n  bye: function() { return true; }\n});\nconsole.log('Exited');\n```\n\n```console\n> add pic01.png archive\npic01.png is added into archive.\n> delete pic01.png\nRequested command is not available.\n> remove pic01.png\npic01.png is removed.\n> bye\nExited\n```\n\n## <a name=\"installation\"></a>Installation\n\n```console\nnpm install readline-sync\n```\n\n## <a name=\"quick_start\"></a>Quick Start\n\n**How does the user input?**\n\n- [Type a reply to a question, and press the Enter key](#quick_start-a) (A)\n- [Type a keyword like a command in prompt, and press the Enter key](#quick_start-b) (B)\n- [Press a single key without the Enter key](#quick_start-c) (C)\n\n<a name=\"quick_start-a\"></a>**(A) What does the user input?**\n\n- [E-mail address](#utility_methods-questionemail)\n- [New password](#utility_methods-questionnewpassword)\n- [Integer number](#utility_methods-questionint)\n- [Floating-point number](#utility_methods-questionfloat)\n- [Local file/directory path](#utility_methods-questionpath)\n- [Others](#basic_methods-question)\n\n<a name=\"quick_start-b\"></a>**(B) What does your script do?**\n\n- [Receive a parsed command-name and arguments](#utility_methods-promptcl)\n- [Receive an input repeatedly](#utility_methods-promptloop)\n- [Receive a parsed command-name and arguments repeatedly](#utility_methods-promptclloop)\n- [Receive an input with prompt that is similar to that of the user's shell](#utility_methods-promptsimshell)\n- [Others](#basic_methods-prompt)\n\n<a name=\"quick_start-c\"></a>**(C) What does the user do?**\n\n- [Say \"Yes\" or \"No\"](#utility_methods-keyinyn)\n- [Say \"Yes\" or \"No\" explicitly](#utility_methods-keyinynstrict)\n- [Make the running of script continue when ready](#utility_methods-keyinpause)\n- [Choose an item from a list](#utility_methods-keyinselect)\n- [Others](#basic_methods-keyin)\n\n## <a name=\"basic_methods\"></a>Basic Methods\n\nThese are used to control details of the behavior. It is recommended to use the [Utility Methods](#utility_methods) instead of Basic Methods if it satisfy your request.\n\n### <a name=\"basic_methods-question\"></a>`question`\n\n```js\nanswer = readlineSync.question([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return the input from the user after it has been typed and the Enter key was pressed.  \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. refusing unexpected input, avoiding trimming white spaces, etc.). **If you let the user input the secret text (e.g. password), you should consider [`hideEchoBack`](#basic_options-hideechoback) option.**\n\nThe `query` may be string, or may not be (e.g. number, Date, Object, etc.). It is converted to string (i.e. `toString` method is called) before it is displayed. (see [Note](#note) also)  \nIt can include the [placeholders](#placeholders).\n\nFor example:\n\n```js\nprogram = readlineSync.question('Which program starts do you want? ', {\n  defaultInput: 'firefox'\n});\n```\n\n### <a name=\"basic_methods-prompt\"></a>`prompt`\n\n```js\ninput = readlineSync.prompt([options])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then return the input from the user after it has been typed and the Enter key was pressed.  \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. refusing unexpected input, avoiding trimming white spaces, etc.).\n\nFor example:\n\n```js\nwhile (true) {\n  command = readlineSync.prompt();\n  // Do something...\n}\n```\n\n### <a name=\"basic_methods-keyin\"></a>`keyIn`\n\n```js\npressedKey = readlineSync.keyIn([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return a character as a key immediately it was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input.  \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. ignoring keys except some keys, checking target key, etc.).\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\nFor example:\n\n```js\nmenuId = readlineSync.keyIn('Hit 1...5 key: ', {limit: '$<1-5>'});\n```\n\n### <a name=\"basic_methods-setdefaultoptions\"></a>`setDefaultOptions`\n\n```js\ncurrentDefaultOptions = readlineSync.setDefaultOptions([newDefaultOptions])\n```\n\nChange the [Default Options](#basic_options) to the values of properties of `newDefaultOptions` Object.  \nAll it takes is to specify options that you want change, because unspecified options are not updated.\n\n## <a name=\"basic_options\"></a>Basic Options\n\n[`prompt`](#basic_options-prompt), [`hideEchoBack`](#basic_options-hideechoback), [`mask`](#basic_options-mask), [`limit`](#basic_options-limit), [`limitMessage`](#basic_options-limitmessage), [`defaultInput`](#basic_options-defaultinput), [`trueValue`, `falseValue`](#basic_options-truevalue_falsevalue), [`caseSensitive`](#basic_options-casesensitive), [`keepWhitespace`](#basic_options-keepwhitespace), [`encoding`](#basic_options-encoding), [`bufferSize`](#basic_options-buffersize), [`print`](#basic_options-print), [`history`](#basic_options-history), [`cd`](#basic_options-cd)\n\nAn `options` Object can be specified to the methods to control the behavior of readlineSync. The options that were not specified to the methods are got from the Default Options. You can change the Default Options by [`setDefaultOptions`](#basic_methods-setdefaultoptions) method anytime, and it is kept until a current process is exited.  \nSpecify the options that are often used to the Default Options, and specify temporary options to the methods.\n\nFor example:\n\n```js\nreadlineSync.setDefaultOptions({limit: ['green', 'yellow', 'red']});\na1 = readlineSync.question('Which color of signal? '); // Input is limited to 3 things.\na2 = readlineSync.question('Which color of signal? '); // It's limited yet.\na3 = readlineSync.question('What is your favorite color? ', {limit: null}); // It's unlimited temporarily.\na4 = readlineSync.question('Which color of signal? '); // It's limited again.\nreadlineSync.setDefaultOptions({limit: ['beef', 'chicken']});\na5 = readlineSync.question('Beef or Chicken? ');        // Input is limited to new 2 things.\na6 = readlineSync.question('And you? ');                // It's limited to 2 things yet.\n```\n\nThe Object as `options` can have following properties.\n\n### <a name=\"basic_options-prompt\"></a>`prompt`\n\n_For `prompt*` methods only_  \n*Type:* string or others  \n*Default:* `'> '`\n\nSet the prompt-sign that is displayed to the user by `prompt*` methods. For example you see `> ` that is Node.js's prompt-sign when you run `node` on the command line.  \nThis may be string, or may not be (e.g. number, Date, Object, etc.). It is converted to string every time (i.e. `toString` method is called) before it is displayed. (see [Note](#note) also)  \nIt can include the [placeholders](#placeholders).\n\nFor example:\n\n```js\nreadlineSync.setDefaultOptions({prompt: '$ '});\n```\n\n```js\n// Display the memory usage always.\nreadlineSync.setDefaultOptions({\n  prompt: { // Simple Object that has toString method.\n    toString: function() {\n      var rss = process.memoryUsage().rss;\n      return '[' + (rss > 1024 ? Math.round(rss / 1024) + 'k' : rss) + 'b]$ ';\n    }\n  }\n});\n```\n\n```console\n[13148kb]$ foo\n[13160kb]$ bar\n[13200kb]$\n```\n\n### <a name=\"basic_options-hideechoback\"></a>`hideEchoBack`\n\n*Type:* boolean  \n*Default:* `false`\n\nIf `true` is specified, hide the secret text (e.g. password) which is typed by user on screen by the mask characters (see [`mask`](#basic_options-mask) option).\n\nFor example:\n\n```js\npassword = readlineSync.question('PASSWORD: ', {hideEchoBack: true});\nconsole.log('Login ...');\n```\n\n```console\nPASSWORD: ********\nLogin ...\n```\n\n### <a name=\"basic_options-mask\"></a>`mask`\n\n*Type:* string  \n*Default:* `'*'`\n\nSet the mask characters that are shown instead of the secret text (e.g. password) when `true` is specified to [`hideEchoBack`](#basic_options-hideechoback) option. If you want to show nothing, specify `''`. (But it might be not user friendly in some cases.)  \n**Note:** In some cases (e.g. when the input stream is redirected on Windows XP), `'*'` or `''` might be used whether other one is specified.\n\nFor example:\n\n```js\nsecret = readlineSync.question('Please whisper sweet words: ', {\n  hideEchoBack: true,\n  mask: require('chalk').magenta('\\u2665')\n});\n```\n\n![sample](screen_02.gif)\n\n### <a name=\"basic_options-limit\"></a>`limit`\n\nLimit the user's input.  \nThe usage differ depending on the method.\n\n#### <a name=\"basic_options-limit-for_question_and_prompt_methods\"></a>For `question*` and `prompt*` methods\n\n*Type:* string, number, RegExp, function or Array  \n*Default:* `[]`\n\nAccept only the input that matches value that is specified to this. If the user input others, display a string that is specified to [`limitMessage`](#basic_options-limitmessage) option, and wait for reinput.\n\n* The string is compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n* The number is compared with the input that is converted to number by `parseFloat()`. For example, it interprets `'   3.14   '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`. And it interprets `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`.\n* The RegExp tests the input.\n* The function that returns a boolean to indicate whether it matches is called with the input.\n\nOne of above or an Array that includes multiple things (or Array includes Array) can be specified.\n\nFor example:\n\n```js\ncommand = readlineSync.prompt({limit: ['add', 'remove', /^clear( all)?$/]});\n// ** But `promptCL` method should be used instead of this. **\n```\n\n```js\nfile = readlineSync.question('Text File: ', {limit: /\\.txt$/i});\n// ** But `questionPath` method should be used instead of this. **\n```\n\n```js\nip = readlineSync.question('IP Address: ', {limit: function(input) {\n  return require('net').isIP(input); // Valid IP Address\n}});\n```\n\n```js\navailableActions = [];\nif (!blockExists())  { availableActions.push('jump'); }\nif (isLarge(place))  { availableActions.push('run'); }\nif (isNew(shoes))    { availableActions.push('kick'); }\nif (isNearby(enemy)) { availableActions.push('punch'); }\naction = readlineSync.prompt({limit: availableActions});\n// ** But `promptCL` method should be used instead of this. **\n```\n\n#### <a name=\"basic_options-limit-for_keyin_method\"></a>For `keyIn*` method\n\n*Type:* string, number or Array  \n*Default:* `[]`\n\nAccept only the key that matches value that is specified to this, ignore others.  \nSpecify the characters as the key. All strings or Array of those are decomposed into single characters. For example, `'abcde'` or `['a', 'bc', ['d', 'e']]` are the same as `['a', 'b', 'c', 'd', 'e']`.  \nThese strings are compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n\nThe [placeholders](#placeholders) like `'$<a-e>'` are replaced to an Array that is the character list like `['a', 'b', 'c', 'd', 'e']`.\n\nFor example:\n\n```js\ndirection = readlineSync.keyIn('Left or Right? ', {limit: 'lr'}); // 'l' or 'r'\n```\n\n```js\ndice = readlineSync.keyIn('Roll the dice, What will the result be? ',\n  {limit: '$<1-6>'}); // range of '1' to '6'\n```\n\n### <a name=\"basic_options-limitmessage\"></a>`limitMessage`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* string  \n*Default:* `'Input another, please.$<( [)limit(])>'`\n\nDisplay this to the user when the [`limit`](#basic_options-limit) option is specified and the user input others.  \nThe [placeholders](#placeholders) can be included.\n\nFor example:\n\n```js\nfile = readlineSync.question('Name of Text File: ', {\n  limit: /\\.txt$/i,\n  limitMessage: 'Sorry, $<lastInput> is not text file.'\n});\n```\n\n### <a name=\"basic_options-defaultinput\"></a>`defaultInput`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* string  \n*Default:* `''`\n\nIf the user input empty text (i.e. pressed the Enter key only), return this.\n\nFor example:\n\n```js\nlang = readlineSync.question('Which language? ', {defaultInput: 'javascript'});\n```\n\n### <a name=\"basic_options-truevalue_falsevalue\"></a>`trueValue`, `falseValue`\n\n*Type:* string, number, RegExp, function or Array  \n*Default:* `[]`\n\nIf the input matches `trueValue`, return `true`. If the input matches `falseValue`, return `false`. In any other case, return the input.\n\n* The string is compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n* The number is compared with the input that is converted to number by `parseFloat()`. For example, it interprets `'   3.14   '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`. And it interprets `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`. Note that in `keyIn*` method, the input is every time one character (i.e. the number that is specified must be an integer within the range of `0` to `9`).\n* The RegExp tests the input.\n* The function that returns a boolean to indicate whether it matches is called with the input.\n\nOne of above or an Array that includes multiple things (or Array includes Array) can be specified.\n\nFor example:\n\n```js\nanswer = readlineSync.question('How do you like it? ', {\n  trueValue: ['yes', 'yeah', 'yep'],\n  falseValue: ['no', 'nah', 'nope']\n});\nif (answer === true) {\n  console.log('Let\\'s go!');\n} else if (answer === false) {\n  console.log('Oh... It\\'s ok...');\n} else {\n  console.log('Sorry. What does \"' + answer + '\" you said mean?');\n}\n```\n\n### <a name=\"basic_options-casesensitive\"></a>`caseSensitive`\n\n*Type:* boolean  \n*Default:* `false`\n\nBy default, the string comparisons are case-insensitive (i.e. `a` equals `A`). If `true` is specified, it is case-sensitive, the cases are not ignored (i.e. `a` is different from `A`).  \nIt affects: [`limit`](#basic_options-limit), [`trueValue`](#basic_options-truevalue_falsevalue), [`falseValue`](#basic_options-truevalue_falsevalue), some [placeholders](#placeholders), and some [Utility Methods](#utility_methods).\n\n### <a name=\"basic_options-keepwhitespace\"></a>`keepWhitespace`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* boolean  \n*Default:* `false`\n\nBy default, remove the leading and trailing white spaces from the input text. If `true` is specified, don't remove those.\n\n### <a name=\"basic_options-encoding\"></a>`encoding`\n\n*Type:* string  \n*Default:* `'utf8'`\n\nSet the encoding method of the input and output.\n\n### <a name=\"basic_options-buffersize\"></a>`bufferSize`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* number  \n*Default:* `1024`\n\nWhen readlineSync reads from a console directly (without [external program](#note-reading_by_external_program)), use a size `bufferSize` buffer.  \nEven if the input by user exceeds it, it's usually no problem, because the buffer is used repeatedly. But some platforms's (e.g. Windows) console might not accept input that exceeds it. And set an enough size.  \nNote that this might be limited by [version of Node.js](https://nodejs.org/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding) and environment running your script (Big buffer size is usually not required). (See also: [issue](https://github.com/nodejs/node/issues/4660), [PR](https://github.com/nodejs/node/pull/4682))\n\n### <a name=\"basic_options-print\"></a>`print`\n\n*Type:* function or `undefined`  \n*Default:* `undefined`\n\nCall the specified function with every output. The function is given two arguments, `display` as an output text, and a value of [`encoding`](#basic_options-encoding) option.\n\nFor example:\n\n* Pass the plain texts to the Logger (e.g. [log4js](https://github.com/nomiddlename/log4js-node)), after clean the colored texts.\n\n![sample](screen_01.png)\n\n```js\nvar readlineSync = require('readline-sync'),\n  chalk = require('chalk'),\n  log4js = require('log4js'),\n  logger, user, pw, command;\n\nlog4js.configure({appenders: [{type: 'file', filename: 'fooApp.log'}]});\nlogger = log4js.getLogger('fooApp');\n\nreadlineSync.setDefaultOptions({\n  print: function(display, encoding)\n    { logger.info(chalk.stripColor(display)); }, // Remove ctrl-chars.\n  prompt: chalk.red.bold('> ')\n});\n\nconsole.log(chalk.black.bold.bgYellow('    Your Account    '));\nuser = readlineSync.question(chalk.gray.underline(' USER NAME ') + ' : ');\npw = readlineSync.question(chalk.gray.underline(' PASSWORD  ') + ' : ',\n  {hideEchoBack: true});\n// Authorization ...\nconsole.log(chalk.green('Welcome, ' + user + '!'));\ncommand = readlineSync.prompt();\n```\n\n* Output a conversation to a file when an output stream is redirected to record those into a file like `your-script >foo.log`. That is, a conversation isn't outputted to `foo.log` without this code.\n\n```js\nreadlineSync.setDefaultOptions({\n  print: function(display, encoding)\n    { process.stdout.write(display, encoding); }\n});\nvar name = readlineSync.question('May I have your name? ');\nvar loc = readlineSync.question('Hi ' + name + '! Where do you live? ');\n```\n\n* Let somebody hear our conversation in real time.  \nIt just uses a fifo with above sample code that was named `conv.js`.\n\nAnother terminal:\n\n```console\nmkfifo /tmp/fifo\ncat /tmp/fifo\n```\n\nMy terminal:\n\n```console\nnode conv.js >/tmp/fifo\n```\n\n```console\nMay I have your name? Oz\nHi Oz! Where do you live? Emerald City\n```\n\nAnd then, another terminal shows this synchronously:\n\n```console\nMay I have your name? Oz\nHi Oz! Where do you live? Emerald City\n```\n\n### <a name=\"basic_options-history\"></a>`history`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* boolean  \n*Default:* `true`\n\nreadlineSync supports a history expansion feature that is similar to that of the shell. If `false` is specified, disable this feature.  \n*It keeps a previous input only.* That is, only `!!`, `!-1`, `!!:p` and `!-1:p` like bash or zsh etc. are supported.\n\n* `!!` or `!-1`: Return a previous input.\n* `!!:p` or `!-1:p`: Display a previous input but do not return it, and wait for reinput.\n\nFor example:\n\n```js\nwhile (true) {\n  input = readlineSync.prompt();\n  console.log('-- You said \"' + input + '\"');\n}\n```\n\n```console\n> hello\n-- You said \"hello\"\n> !!\nhello\n-- You said \"hello\"\n> !!:p\nhello\n> bye\n-- You said \"bye\"\n```\n\n### <a name=\"basic_options-cd\"></a>`cd`\n\n_For `question*` and `prompt*` methods only_  \n*Type:* boolean  \n*Default:* `false`\n\nreadlineSync supports the changing the current working directory feature that is similar to the `cd` and `pwd` commands in the shell. If `true` is specified, enable this feature.  \nThis helps the user when you let the user input the multiple local files or directories.  \nIt supports `cd` and `pwd` commands.\n\n* `cd <path>`: Change the current working directory to `<path>`. The `<path>` can include `~` as the home directory.\n* `pwd`: Display the current working directory.\n\nWhen these were input, do not return, and wait for reinput.\n\nFor example:\n\n```js\nwhile (true) {\n  file = readlineSync.questionPath('File: ');\n  console.log('-- Specified file is ' + file);\n}\n```\n\n```console\nFile: cd foo-dir/bar-dir\nFile: pwd\n/path/to/foo-dir/bar-dir\nFile: file-a.js\n-- Specified file is /path/to/foo-dir/bar-dir/file-a.js\nFile: file-b.png\n-- Specified file is /path/to/foo-dir/bar-dir/file-b.png\nFile: file-c.html\n-- Specified file is /path/to/foo-dir/bar-dir/file-c.html\n```\n\n## <a name=\"utility_methods\"></a>Utility Methods\n\n[`questionEMail`](#utility_methods-questionemail), [`questionNewPassword`](#utility_methods-questionnewpassword), [`questionInt`](#utility_methods-questionint), [`questionFloat`](#utility_methods-questionfloat), [`questionPath`](#utility_methods-questionpath), [`promptCL`](#utility_methods-promptcl), [`promptLoop`](#utility_methods-promptloop), [`promptCLLoop`](#utility_methods-promptclloop), [`promptSimShell`](#utility_methods-promptsimshell), [`keyInYN`](#utility_methods-keyinyn), [`keyInYNStrict`](#utility_methods-keyinynstrict), [`keyInPause`](#utility_methods-keyinpause), [`keyInSelect`](#utility_methods-keyinselect)\n\nThese are convenient methods that are extended [Basic Methods](#basic_methods) to be used easily.\n\n### <a name=\"utility_methods-questionemail\"></a>`questionEMail`\n\n```js\nemail = readlineSync.questionEMail([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid e-mail address, and then return it after the Enter key was pressed.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Input e-mail address: '`.\n\n**Note:** The valid e-mail address requirement is a willful violation of [RFC5322](http://tools.ietf.org/html/rfc5322), this is defined in [HTML5](http://www.w3.org/TR/html5/forms.html). This works enough to prevent the user mistaking. If you want to change it, specify [`limit`](#basic_options-limit) option.\n\nFor example:\n\n```js\nemail = readlineSync.questionEMail();\nconsole.log('-- E-mail is ' + email);\n```\n\n```console\nInput e-mail address: abc\nInput valid e-mail address, please.\nInput e-mail address: mail@example.com\n-- E-mail is mail@example.com\n```\n\n#### <a name=\"utility_methods-questionemail-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limit`](#basic_options-limit) | RegExp by [HTML5](http://www.w3.org/TR/html5/forms.html) |\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid e-mail address, please.'` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-casesensitive\"><code>caseSensitive</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionnewpassword\"></a>`questionNewPassword`\n\n```js\npassword = readlineSync.questionNewPassword([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid password, and then request same one again, and then return it after the Enter key was pressed.  \nIt's the password, or something that is the secret text like the password.  \nYou can specify the valid password requirement to the options.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Input new password: '`.\n\n**Note:** Only the form of password is checked. Check it more if you want. For example, [zxcvbn](https://github.com/dropbox/zxcvbn) is password strength estimation library.\n\nFor example:\n\n```js\npassword = readlineSync.questionNewPassword();\nconsole.log('-- Password is ' + password);\n```\n\n```console\nInput new password: ************\nIt can include: 0...9, A...Z, a...z, !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\nAnd the length must be: 12...24\nInput new password: *************\nReinput a same one to confirm it: *************\nIt differs from first one. Hit only the Enter key if you want to retry from first one.\nReinput a same one to confirm it: *************\n-- Password is _my_password_\n```\n\n#### <a name=\"utility_methods-questionnewpassword-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `true` |\n| [`mask`](#basic_options-mask) | `'*'` |\n| [`limitMessage`](#basic_options-limitmessage) | `'It can include: $<charlist>\\nAnd the length must be: $<length>'` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`caseSensitive`](#basic_options-casesensitive) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-keepwhitespace\"><code>keepWhitespace</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n##### <a name=\"utility_methods-questionnewpassword-options-charlist\"></a>`charlist`\n\n*Type:* string  \n*Default:* `'$<!-~>'`\n\nA string as the characters that can be included in the password. For example, if `'abc123'` is specified, the passwords that include any character other than these 6 characters are refused.  \nThe [placeholders](#placeholders) like `'$<a-e>'` are replaced to the characters like `'abcde'`.  \n\nFor example, let the user input a password that is created with alphabet and some symbols:\n\n```js\npassword = readlineSync.questionNewPassword('PASSWORD: ', {charlist: '$<a-z>#$@%'});\n```\n\n##### <a name=\"utility_methods-questionnewpassword-options-min_max\"></a>`min`, `max`\n\n*Type:* number  \n*Default:* `min`: `12`, `max`: `24`\n\n`min`: A number as a minimum length of the password.  \n`max`: A number as a maximum length of the password.\n\n##### <a name=\"utility_methods-questionnewpassword-options-confirmmessage\"></a>`confirmMessage`\n\n*Type:* string or others  \n*Default:* `'Reinput a same one to confirm it: '`\n\nA message that lets the user input the same password again.  \nIt can include the [placeholders](#placeholders).  \nIf this is not string, it is converted to string (i.e. `toString` method is called).\n\n##### <a name=\"utility_methods-questionnewpassword-options-unmatchmessage\"></a>`unmatchMessage`\n\n*Type:* string or others  \n*Default:* `'It differs from first one. Hit only the Enter key if you want to retry from first one.'`\n\nA warning message that is displayed when the second input did not match first one.  \nThis is converted the same as the [`confirmMessage`](#utility_methods-questionnewpassword-options-confirmmessage) option.\n\n#### <a name=\"utility_methods-questionnewpassword-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-questionnewpassword-additional_placeholders-charlist\"></a>`charlist`\n\nA current value of [`charlist`](#utility_methods-questionnewpassword-options-charlist) option that is converted to human readable if possible. (e.g. `'A...Z'`)\n\n##### <a name=\"utility_methods-questionnewpassword-additional_placeholders-length\"></a>`length`\n\nA current value of [`min` and `max`](#utility_methods-questionnewpassword-options-min_max) option that is converted to human readable. (e.g. `'12...24'`)\n\n### <a name=\"utility_methods-questionint\"></a>`questionInt`\n\n```js\nnumInt = readlineSync.questionInt([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only an input that can be interpreted as an integer, and then return the number (not string) after the Enter key was pressed.  \nThis parses the input as much as possible by `parseInt()`. For example, it interprets `'   5   '`, `'5.6'`, `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\n#### <a name=\"utility_methods-questionint-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid number, please.'` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-hideechoback\"><code>hideEchoBack</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionfloat\"></a>`questionFloat`\n\n```js\nnumFloat = readlineSync.questionFloat([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only an input that can be interpreted as a floating-point number, and then return the number (not string) after the Enter key was pressed.  \nThis parses the input as much as possible by `parseFloat()`. For example, it interprets `'   3.14   '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\n#### <a name=\"utility_methods-questionfloat-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid number, please.'` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-hideechoback\"><code>hideEchoBack</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionpath\"></a>`questionPath`\n\n```js\npath = readlineSync.questionPath([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid local file or directory path, and then return an absolute path after the Enter key was pressed.  \nThe `~` that is input by the user is replaced to the home directory.  \nYou can specify the valid local file or directory path requirement to the options. And you can make it create a new file or directory when it doesn't exist.  \n\nIt is recommended to use this method with the [`cd`](#basic_options-cd) option. (Default: `true`)\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Input path (you can \"cd\" and \"pwd\"): '`.\n\nFor example:\n\n```js\nsourceFile = readlineSync.questionPath('Read from: ', {\n  isFile: true\n});\nconsole.log('-- sourceFile: ' + sourceFile);\n\nsaveDir = readlineSync.questionPath('Save to: ', {\n  isDirectory: true,\n  exists: null,\n  create: true\n});\nconsole.log('-- saveDir: ' + saveDir);\n```\n\n```console\nRead from: ~/fileA\nNo such file or directory: /home/user/fileA\nInput valid path, please.\nRead from: pwd\n/path/to/work\nRead from: cd ~/project-1\nRead from: fileA\n-- sourceFile: /home/user/project-1/fileA\nSave to: ~/deploy/data\n-- saveDir: /home/user/deploy/data\n```\n\n#### <a name=\"utility_methods-questionpath-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'$<error(\\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>'` |\n| [`history`](#basic_options-history) | `true` |\n| [`cd`](#basic_options-cd) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n**Note:** It does not check the coherency about a combination of the options as the path requirement. For example, the `{exists: false, isFile: true}` never check that it is a file because it is limited to the path that does not exist.\n\n##### <a name=\"utility_methods-questionpath-options-exists\"></a>`exists`\n\n*Type:* boolean or others  \n*Default:* `true`\n\nIf `true` is specified, accept only a file or directory path that exists. If `false` is specified, accept only a file or directory path that does *not* exist.  \nIn any other case, the existence is not checked.\n\n##### <a name=\"utility_methods-questionpath-options-min_max\"></a>`min`, `max`\n\n*Type:* number or others  \n*Default:* `undefined`\n\n`min`: A number as a minimum size of the file that is accepted.  \n`max`: A number as a maximum size of the file that is accepted.  \nIf it is not specified or `0` is specified, the size is not checked. (A size of directory is `0`.)\n\n##### <a name=\"utility_methods-questionpath-options-isfile_isdirectory\"></a>`isFile`, `isDirectory`\n\n*Type:* boolean  \n*Default:* `false`\n\n`isFile`: If `true` is specified, accept only a file path.  \n`isDirectory`: If `true` is specified, accept only a directory path.\n\n##### <a name=\"utility_methods-questionpath-options-validate\"></a>`validate`\n\n*Type:* function or `undefined`  \n*Default:* `undefined`\n\nIf a function that returns `true` or an error message is specified, call it with a path that was input, and accept the input when the function returned `true`.  \nIf the function returned a string as an error message, that message is got by the [`error`](#utility_methods-questionpath-additional_placeholders-error) additional [placeholder](#placeholders) parameter.  \nA path that was input is parsed before it is passed to the function. `~` is replaced to a home directory, and a path is converted to an absolute path.  \nThis is also a return value from this method.\n\nFor example, accept only PNG file or tell it to the user:\n\n```js\nimageFile = readlineSync.questionPath('Image File: ', {\n  validate: function(path) { return /\\.png$/i.test(path) || 'It is not PNG'; }\n});\n```\n\n##### <a name=\"utility_methods-questionpath-options-create\"></a>`create`\n\n*Type:* boolean  \n*Default:* `false`\n\nIf `true` is specified, create a file or directory as a path that was input when it doesn't exist. If `true` is specified to the [`isDirectory`](#utility_methods-questionpath-options-isfile_isdirectory) option, create a directory, otherwise a file.  \nIt does not affect the existence check. Therefore, you can get a new file or directory path anytime by specifying: `{exists: false, create: true}`\n\n#### <a name=\"utility_methods-questionpath-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-questionpath-additional_placeholders-error\"></a>`error`\n\nAn error message when the input was not accepted.  \nThis value is set by readlineSync, or the function that was specified to [`validate`](#utility_methods-questionpath-options-validate) option.\n\n##### <a name=\"utility_methods-questionpath-additional_placeholders-min_max\"></a>`min`, `max`\n\nA current value of [`min` and `max`](#utility_methods-questionpath-options-min_max) option.\n\n### <a name=\"utility_methods-promptcl\"></a>`promptCL`\n\n```js\nargsArray = readlineSync.promptCL([commandHandler[, options]])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then consider the input as a command-line and parse it, and then return a result after the Enter key was pressed.  \nA return value is an Array that includes the tokens that were parsed. It parses the input from the user as the command-line, and it interprets whitespaces, quotes, etc., and it splits it to tokens properly. Usually, a first element of the Array is command-name, and remaining elements are arguments.\n\nFor example:\n\n```js\nargsArray = readlineSync.promptCL();\nconsole.log(argsArray.join('\\n'));\n```\n\n```console\n> command arg \"arg\" \" a r g \" \"\" 'a\"r\"g' \"a\"\"rg\" \"arg\ncommand\narg\narg\n a r g \n\na\"r\"g\narg\narg\n```\n\n#### <a name=\"utility_methods-promptcl-commandhandler\"></a>`commandHandler`\n\nBy using the `commandHandler` argument, this method will come into its own. Specifying the Object to this argument has the more merit. And it has the more merit for [`promptCLLoop`](#utility_methods-promptclloop) method.  \n\nIf a function is specified to `commandHandler` argument, it is just called with a parsed Array as an argument list of the function. And `this` is an original input string, in the function.\n\nFor example, the following 2 codes work same except that `this` is enabled in the second one:\n\n```js\nargsArray = readlineSync.promptCL();\nif (argsArray[0] === 'add') {\n  console.log(argsArray[1] + ' is added.');\n} else if (argsArray[0] === 'copy') {\n  console.log(argsArray[1] + ' is copied to ' + argsArray[2] + '.');\n}\n```\n\n```js\nreadlineSync.promptCL(function(command, arg1, arg2) {\n  console.log('You want to: ' + this); // All of command-line.\n  if (command === 'add') {\n    console.log(arg1 + ' is added.');\n  } else if (command === 'copy') {\n    console.log(arg1 + ' is copied to ' + arg2 + '.');\n  }\n});\n```\n\nIf an Object that has properties named as the command-name is specified, the command-name is interpreted, and a function as the value of matched property is called. A function is chosen properly by handling case of the command-name in accordance with the [`caseSensitive`](#basic_options-casesensitive) option.  \nThe function is called with a parsed Array that excludes a command-name (i.e. first element is removed from the Array) as an argument list of the function.  \nThat is, a structure of the `commandHandler` Object looks like:\n\n```js\n{\n  commandA: function(arg) { ... },        // commandA requires one argument.\n  commandB: function(arg1, arg2) { ... }, // readlineSync doesn't care those.\n  commandC: function() { ... }            // Of course, it can also ignore all.\n}\n```\n\nreadlineSync just receives the arguments from the user and passes those to these functions without checking. The functions may have to check whether the required argument was input by the user, and more validate those.\n\nFor example, the following code works same to the above code:\n\n```js\nreadlineSync.promptCL({\n  add: function(element) { // It's called by also \"ADD\", \"Add\", \"aDd\", etc..\n    console.log(element + ' is added.');\n  },\n  copy: function(from, to) {\n    console.log(from + ' is copied to ' + to + '.');\n  }\n});\n```\n\nIf the matched property is not found in the Object, a `_` property is chosen, and the function as the value of this property is called with a parsed Array as an argument list of the function. Note that this includes a command-name. That is, the function looks like `function(command, arg1, arg2, ...) { ... }`.  \nAnd if the Object doesn't have a `_` property, any command that the matched property is not found in the Object is refused.\n\nFor example:\n\n```js\nreadlineSync.promptCL({\n  copy: function(from, to) { // command-name is not included.\n    console.log(from + ' is copied to ' + to + '.');\n  },\n  _: function(command) { // command-name is included.\n    console.log('Sorry, ' + command + ' is not available.');\n  }\n});\n```\n\n#### <a name=\"utility_methods-promptcl-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'Requested command is not available.'` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-prompt\"><code>prompt</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-cd\"><code>cd</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-promptloop\"></a>`promptLoop`\n\n```js\nreadlineSync.promptLoop(inputHandler[, options])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then call `inputHandler` function with the input from the user after it has been typed and the Enter key was pressed. Do these repeatedly until `inputHandler` function returns `true`.\n\nFor example, the following 2 codes work same:\n\n```js\nwhile (true) {\n  input = readlineSync.prompt();\n  console.log('-- You said \"' + input + '\"');\n  if (input === 'bye') {\n    break;\n  }\n}\nconsole.log('It\\'s exited from loop.');\n```\n\n```js\nreadlineSync.promptLoop(function(input) {\n  console.log('-- You said \"' + input + '\"');\n  return input === 'bye';\n});\nconsole.log('It\\'s exited from loop.');\n```\n\n```console\n> hello\n-- You said \"hello\"\n> good morning\n-- You said \"good morning\"\n> bye\n-- You said \"bye\"\nIt's exited from loop.\n```\n\n#### <a name=\"utility_methods-promptloop-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe other options work as shown in the [Basic Options](#basic_options) section.\n\n### <a name=\"utility_methods-promptclloop\"></a>`promptCLLoop`\n\n```js\nreadlineSync.promptCLLoop([commandHandler[, options]])\n```\n\nExecute [`promptCL`](#utility_methods-promptcl) method repeatedly until chosen [`commandHandler`](#utility_methods-promptcl-commandhandler) returns `true`.  \nThe [`commandHandler`](#utility_methods-promptcl-commandhandler) may be a function that is called like:\n\n```js\nexit = allCommands(command, arg1, arg2, ...);\n```\n\nor an Object that has the functions that are called like:\n\n```js\nexit = foundCommand(arg1, arg2, ...);\n```\n\nSee [`promptCL`](#utility_methods-promptcl) method for details.  \nThis method looks like a combination of [`promptCL`](#utility_methods-promptcl) method and [`promptLoop`](#utility_methods-promptloop) method.\n\nFor example:\n\n```js\nreadlineSync.promptCLLoop({\n  add: function(element) {\n    console.log(element + ' is added.');\n  },\n  copy: function(from, to) {\n    console.log(from + ' is copied to ' + to + '.');\n  },\n  bye: function() { return true; }\n});\nconsole.log('It\\'s exited from loop.');\n```\n\n```console\n> add \"New Hard Disk\"\nNew Hard Disk is added.\n> move filesOnOld \"New Hard Disk\"\nRequested command is not available.\n> copy filesOnOld \"New Hard Disk\"\nfilesOnOld is copied to New Hard Disk.\n> bye\nIt's exited from loop.\n```\n\n#### <a name=\"utility_methods-promptclloop-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'Requested command is not available.'` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-prompt\"><code>prompt</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-cd\"><code>cd</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-promptsimshell\"></a>`promptSimShell`\n\n```js\ninput = readlineSync.promptSimShell([options])\n```\n\nDisplay a prompt-sign that is similar to that of the user's shell to the user, and then return the input from the user after it has been typed and the Enter key was pressed.  \nThis method displays a prompt-sign like:\n\nOn Windows:\n\n```console\nC:\\Users\\User\\Path\\To\\Directory>\n```\n\nOn others:\n\n```console\nuser@host:~/path/to/directory$ \n```\n\n#### <a name=\"utility_methods-promptsimshell-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe other options other than [`prompt`](#basic_options-prompt) option work as shown in the [Basic Options](#basic_options) section.\n\n### <a name=\"utility_methods-keyinyn\"></a>`keyInYN`\n\n```js\nboolYesOrEmpty = readlineSync.keyInYN([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return a boolean or an empty string immediately a key was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input.  \nThis method works like the `window.confirm` method of web browsers. A return value means \"Yes\" or \"No\" the user said. It differ depending on the pressed key:\n\n* `Y`: `true`\n* `N`: `false`\n* other: `''`\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Are you sure? '`.\n\nThe keys other than `Y` and `N` are also accepted (If you want to know a user's wish explicitly, use [`keyInYNStrict`](#utility_methods-keyinynstrict) method). Therefore, if you let the user make an important decision (e.g. files are removed), check whether the return value is not *falsy*. That is, a default is \"No\".\n\nFor example:\n\n```js\nif (!readlineSync.keyInYN('Do you want to install this?')) {\n  // Key that is not `Y` was pressed.\n  process.exit();\n}\n// Do something...\n```\n\nOr if you let the user stop something that must be done (e.g. something about the security), check whether the return value is `false` explicitly. That is, a default is \"Yes\".\n\nFor example:\n\n```js\n// Don't use `(!readlineSync.keyInYN())`.\nif (readlineSync.keyInYN('Continue virus scan?') === false) {\n  // `N` key was pressed.\n  process.exit();\n}\n// Continue...\n```\n\n#### <a name=\"utility_methods-keyinyn-options\"></a>Options\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional option is available.\n\n##### <a name=\"utility_methods-keyinyn-options-guide\"></a>`guide`\n\n*Type:* boolean  \n*Default:* `true`\n\nIf `true` is specified, a string `'[y/n]'` as guide for the user is added to `query`. And `':'` is moved to the end of `query`, or it is added.\n\nFor example:\n\n```js\nreadlineSync.keyInYN('Do you like me?'); // No colon\nreadlineSync.keyInYN('Really? :'); // Colon already exists\n```\n\n```console\nDo you like me? [y/n]: y\nReally? [y/n]: y\n```\n\n### <a name=\"utility_methods-keyinynstrict\"></a>`keyInYNStrict`\n\n```js\nboolYes = readlineSync.keyInYNStrict([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only `Y` or `N` key, and then return a boolean immediately it was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input.  \nThis method works like the `window.confirm` method of web browsers. A return value means \"Yes\" or \"No\" the user said. It differ depending on the pressed key:\n\n* `Y`: `true`\n* `N`: `false`\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Are you sure? '`.\n\nA key other than `Y` and `N` is not accepted. That is, a return value has no default. Therefore, the user has to tell an own wish explicitly. If you want to know a user's wish easily, use [`keyInYN`](#utility_methods-keyinyn) method.\n\nThis method works same to [`keyInYN`](#utility_methods-keyinyn) method except that this accept only `Y` or `N` key (Therefore, a return value is boolean every time). The options also work same to [`keyInYN`](#utility_methods-keyinyn) method.\n\n### <a name=\"utility_methods-keyinpause\"></a>`keyInPause`\n\n```js\nreadlineSync.keyInPause([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then just wait for a key to be pressed by the user.  \nThis method works like the `window.alert` method of web browsers. This is used to make the running of script pause and show something to the user, or wait for the user to be ready.  \nBy default, any key is accepted (See: [Note](#utility_methods-keyinpause-note)). You can change this behavior by specifying [`limit`](#basic_options-limit) option  (e.g. accept only a Space Bar).\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Continue...'`.\n\nFor example:\n\n```js\n// Have made the preparations for something...\nconsole.log('==== Information of Your Computer ====');\nconsole.log(info); // This can be `query`.\nreadlineSync.keyInPause();\nconsole.log('It\\'s executing now...');\n// Do something...\n```\n\n```console\n==== Information of Your Computer ====\nFOO: 123456\nBAR: abcdef\nContinue... (Hit any key)\nIt's executing now...\n```\n\n#### <a name=\"utility_methods-keyinpause-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`limit`](#basic_options-limit) | `null` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-casesensitive\"><code>caseSensitive</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional option is available.\n\n##### <a name=\"utility_methods-keyinpause-options-guide\"></a>`guide`\n\n*Type:* boolean  \n*Default:* `true`\n\nIf `true` is specified, a string `'(Hit any key)'` as guide for the user is added to `query`.\n\nFor example:\n\n```js\nreadlineSync.keyInPause('It\\'s pausing now...');\n```\n\n```console\nIt's pausing now... (Hit any key)\n```\n\n#### <a name=\"utility_methods-keyinpause-note\"></a>Note\n\nControl keys including Enter key are not accepted by `keyIn*` methods.  \nIf you want to wait until the user presses Enter key, use `question*` methods instead of `keyIn*` methods. For example:\n\n```js\nreadlineSync.question('Hit Enter key to continue.', {hideEchoBack: true, mask: ''});\n```\n\n### <a name=\"utility_methods-keyinselect\"></a>`keyInSelect`\n\n```js\nindex = readlineSync.keyInSelect(items[, query[, options]])\n```\n\nDisplay the list that was created with the `items` Array, and the `query` to the user if it's specified, and then return the number as an index of the `items` Array immediately it was chosen by pressing a key by the user, **without pressing the Enter key**. Note that the user has no chance to change the input.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.  \nThe default value of `query` is `'Choose one from list: '`.\n\nThe minimum length of `items` Array is 1 and maximum length is 35. These elements are displayed as item list. A key to let the user choose an item is assigned to each item automatically in sequence like \"1, 2, 3 ... 9, A, B, C ...\". A number as an index of the `items` Array that corresponds to a chosen item by the user is returned.\n\n**Note:** Even if the `items` Array has only less than 35 items, a long Array that forces an user to scroll the list may irritate the user. Remember, the user might be in a console environment that doesn't support scrolling the screen. If you want to use a long `items` Array (e.g. more than 10 items), you should consider a \"Pagination\". (See [example](https://github.com/anseki/readline-sync/issues/60#issuecomment-324533678).)\n\nFor example:\n\n```js\nframeworks = ['Express', 'hapi', 'flatiron', 'MEAN.JS', 'locomotive'];\nindex = readlineSync.keyInSelect(frameworks, 'Which framework?');\nconsole.log(frameworks[index] + ' is enabled.');\n```\n\n```console\n[1] Express\n[2] hapi\n[3] flatiron\n[4] MEAN.JS\n[5] locomotive\n[0] CANCEL\n\nWhich framework? [1...5 / 0]: 2\nhapi is enabled.\n```\n\n#### <a name=\"utility_methods-keyinselect-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name       | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n##### <a name=\"utility_methods-keyinselect-options-guide\"></a>`guide`\n\n*Type:* boolean  \n*Default:* `true`\n\nIf `true` is specified, a string like `'[1...5]'` as guide for the user is added to `query`. And `':'` is moved to the end of `query`, or it is added. This is the key list that corresponds to the item list.\n\n##### <a name=\"utility_methods-keyinselect-options-cancel\"></a>`cancel`\n\n*Type:* boolean, string or others  \n*Default:* `'CANCEL'`\n\nIf a value other than `false` is specified, an item to let the user tell \"cancel\" is added to the item list. \"[0] CANCEL\" (default) is displayed, and if `0` key is pressed, `-1` is returned.  \nYou can specify a label of this item other than `'CANCEL'`. A string such as `'Go back'` (empty string `''` also), something that is converted to string such as `Date`, a string that includes [placeholder](#placeholders) such as `'Next $<itemsCount> items'` are accepted.\n\n#### <a name=\"utility_methods-keyinselect-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-itemscount\"></a>`itemsCount`\n\nA length of a current `items` Array.\n\nFor example:\n\n```js\nitems = ['item-A', 'item-B', 'item-C', 'item-D', 'item-E'];\nindex = readlineSync.keyInSelect(items, null,\n  {cancel: 'Show more than $<itemsCount> items'});\n```\n\n```console\n[1] item-A\n[2] item-B\n[3] item-C\n[4] item-D\n[5] item-E\n[0] Show more than 5 items\n```\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-firstitem\"></a>`firstItem`\n\nA first item in a current `items` Array.\n\nFor example:\n\n```js\nindex = readlineSync.keyInSelect(items, 'Choose $<firstItem> or another: ');\n```\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-lastitem\"></a>`lastItem`\n\nA last item in a current `items` Array.\n\nFor example:\n\n```js\nitems = ['January', 'February', 'March', 'April', 'May', 'June'];\nindex = readlineSync.keyInSelect(items, null,\n  {cancel: 'In after $<lastItem>'});\n```\n\n```console\n[1] January\n[2] February\n[3] March\n[4] April\n[5] May\n[6] June\n[0] In after June\n```\n\n## <a name=\"placeholders\"></a>Placeholders\n\n[`hideEchoBack`, `mask`, `defaultInput`, `caseSensitive`, `keepWhitespace`, `encoding`, `bufferSize`, `history`, `cd`, `limit`, `trueValue`, `falseValue`](#placeholders-parameters-hideechoback_mask_defaultinput_casesensitive_keepwhitespace_encoding_buffersize_history_cd_limit_truevalue_falsevalue), [`limitCount`, `limitCountNotZero`](#placeholders-parameters-limitcount_limitcountnotzero), [`lastInput`](#placeholders-parameters-lastinput), [`history_mN`](#placeholders-parameters-historymn), [`cwd`, `CWD`, `cwdHome`](#placeholders-parameters-cwd_cwd_cwdhome), [`date`, `time`, `localeDate`, `localeTime`](#placeholders-parameters-date_time_localedate_localetime), [`C1-C2`](#placeholders-parameters-c1_c2)\n\nThe placeholders in the text are replaced to another string.\n\nFor example, the [`limitMessage`](#basic_options-limitmessage) option to display a warning message that means that the command the user requested is not available:\n\n```js\ncommand = readlineSync.prompt({\n  limit: ['add', 'remove'],\n  limitMessage: '$<lastInput> is not available.'\n});\n```\n\n```console\n> delete\ndelete is not available.\n```\n\nThe placeholders can be included in:\n\n* `query` argument\n* [`prompt`](#basic_options-prompt) and [`limitMessage`](#basic_options-limitmessage) options\n* [`limit` option for `keyIn*` method](#basic_options-limit-for_keyin_method) and [`charlist`](#utility_methods-questionnewpassword-options-charlist) option for [`questionNewPassword`](#utility_methods-questionnewpassword) method ([`C1-C2`](#placeholders-parameters-c1_c2) parameter only)\n* And some additional options for the [Utility Methods](#utility_methods).\n\n### <a name=\"placeholders-syntax\"></a>Syntax\n\n```\n$<parameter>\n```\n\nOr\n\n```\n$<(text1)parameter(text2)>\n```\n\nThe placeholder is replaced to a string that is got by a `parameter`.  \nBoth the `(text1)` and `(text2)` are optional.  \nA more added `'$'` at the left of the placeholder is used as an escape character, it disables a placeholder. For example, `'$$<foo>'` is replaced to `'$<foo>'`. If you want to put a `'$'` which is *not* an escape character at the left of a placeholder, specify it like `'$<($)bufferSize>'`, then it is replaced to `'$1024'`.\n\nAt the each position of `'(text1)'` and `'(text2)'`, `'text1'` and `'text2'` are put when a string that was got by a `parameter` has more than 0 length. If that got string is `''`, a placeholder with or without `'(text1)'` and `'(text2)'` is replaced to `''`.\n\nFor example, a warning message that means that the command the user requested is not available:\n\n```js\ncommand = readlineSync.prompt({\n  limit: ['add', 'remove'],\n  limitMessage: 'Refused $<lastInput> you requested. Please input another.'\n});\n```\n\n```console\n> give-me-car\nRefused give-me-car you requested. Please input another.\n```\n\nIt looks like no problem.  \nBut when the user input nothing (hit only the Enter key), and then a message is displayed:\n\n```console\n> \nRefused  you requested. Please input another.\n```\n\nThis goes well:\n\n```js\ncommand = readlineSync.prompt({\n  limit: ['add', 'remove'],\n  limitMessage: 'Refused $<lastInput( you requested)>. Please input another.'\n});\n```\n\n```console\n> \nRefused . Please input another.\n```\n\n(May be more better: `'$<(Refused )lastInput( you requested. )>Please input another.'`)\n\n**Note:** The syntax `${parameter}` of older version is still supported, but this should not be used because it may be confused with template string syntax of ES6. And this will not be supported in due course of time.\n\n### <a name=\"placeholders-parameters\"></a>Parameters\n\nThe following parameters are available. And some additional parameters are available in the [Utility Methods](#utility_methods).\n\n#### <a name=\"placeholders-parameters-hideechoback_mask_defaultinput_casesensitive_keepwhitespace_encoding_buffersize_history_cd_limit_truevalue_falsevalue\"></a>`hideEchoBack`, `mask`, `defaultInput`, `caseSensitive`, `keepWhitespace`, `encoding`, `bufferSize`, `history`, `cd`, `limit`, `trueValue`, `falseValue`\n\nA current value of each option.  \nIt is converted to human readable if possible. The boolean value is replaced to `'on'` or `'off'`, and the Array is replaced to the list of only string and number elements.  \nAnd in the `keyIn*` method, the parts of the list as characters sequence are suppressed. For example, when `['a', 'b', 'c', 'd', 'e']` is specified to the [`limit`](#basic_options-limit) option, `'$<limit>'` is replaced to `'a...e'`. If `true` is specified to the [`caseSensitive`](#basic_options-casesensitive) option, the characters are converted to lower case.\n\nFor example:\n\n```js\ninput = readlineSync.question(\n  'Input something or the Enter key as \"$<defaultInput>\": ',\n  {defaultInput: 'hello'}\n);\n```\n\n```console\nInput something or the Enter key as \"hello\":\n```\n\n#### <a name=\"placeholders-parameters-limitcount_limitcountnotzero\"></a>`limitCount`, `limitCountNotZero`\n\nA length of a current value of the [`limit`](#basic_options-limit) option.  \nWhen the value of the [`limit`](#basic_options-limit) option is empty, `'$<limitCount>'` is replaced to `'0'`, `'$<limitCountNotZero>'` is replaced to `''`.\n\nFor example:\n\n```js\naction = readlineSync.question(\n  'Choose action$<( from )limitCountNotZero( actions)>: ',\n  {limit: availableActions}\n);\n```\n\n```console\nChoose action from 5 actions:\n```\n\n#### <a name=\"placeholders-parameters-lastinput\"></a>`lastInput`\n\nA last input from the user.  \nIn any case, this is saved.\n\nFor example:\n\n```js\ncommand = readlineSync.prompt({\n  limit: availableCommands,\n  limitMessage: '$<lastInput> is not available.'\n});\n```\n\n```console\n> wrong-command\nwrong-command is not available.\n```\n\n#### <a name=\"placeholders-parameters-historymn\"></a>`history_mN`\n\nWhen the history expansion feature is enabled (see [`history`](#basic_opt","_attachments":{},"homepage":"https://github.com/anseki/readline-sync","bugs":{"url":"https://github.com/anseki/readline-sync/issues"},"license":"MIT"}