Blame view
node_modules/inquirer/lib/ui/baseUI.js
1.16 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
'use strict'; var _ = require('lodash'); var readlineFacade = require('readline2'); /** * Base interface class other can inherits from */ var UI = module.exports = function (opt) { // Instantiate the Readline interface // @Note: Don't reassign if already present (allow test to override the Stream) if (!this.rl) { this.rl = readlineFacade.createInterface(_.extend({ terminal: true }, opt)); } this.rl.resume(); this.onForceClose = this.onForceClose.bind(this); // Make sure new prompt start on a newline when closing this.rl.on('SIGINT', this.onForceClose); process.on('exit', this.onForceClose); }; /** * Handle the ^C exit * @return {null} */ UI.prototype.onForceClose = function () { this.close(); console.log(' '); // Line return }; /** * Close the interface and cleanup listeners */ UI.prototype.close = function () { // Remove events listeners this.rl.removeListener('SIGINT', this.onForceClose); process.removeListener('exit', this.onForceClose); // Restore prompt functionnalities this.rl.output.unmute(); // Close the readline this.rl.output.end(); this.rl.pause(); this.rl.close(); this.rl = null; }; |