X-Git-Url: https://git.josue.xyz/?p=VSoRC%2F.git;a=blobdiff_plain;f=node_modules%2Fnode-pty%2Flib%2Fterminal.js;fp=node_modules%2Fnode-pty%2Flib%2Fterminal.js;h=a4f1eedc35006869923113cc862fea7a6c58a255;hp=0000000000000000000000000000000000000000;hb=e79e4a5a87f3e84f7c1777f10a954453a69bf540;hpb=4339da12467b75fb8b6ca831f4bf0081c485ed2c diff --git a/node_modules/node-pty/lib/terminal.js b/node_modules/node-pty/lib/terminal.js new file mode 100644 index 0000000..a4f1eed --- /dev/null +++ b/node_modules/node-pty/lib/terminal.js @@ -0,0 +1,167 @@ +"use strict"; +/** + * Copyright (c) 2012-2015, Christopher Jeffrey (MIT License) + * Copyright (c) 2016, Daniel Imms (MIT License). + * Copyright (c) 2018, Microsoft Corporation (MIT License). + */ +Object.defineProperty(exports, "__esModule", { value: true }); +var events_1 = require("events"); +var eventEmitter2_1 = require("./eventEmitter2"); +exports.DEFAULT_COLS = 80; +exports.DEFAULT_ROWS = 24; +/** + * Default messages to indicate PAUSE/RESUME for automatic flow control. + * To avoid conflicts with rebound XON/XOFF control codes (such as on-my-zsh), + * the sequences can be customized in `IPtyForkOptions`. + */ +var FLOW_CONTROL_PAUSE = '\x13'; // defaults to XOFF +var FLOW_CONTROL_RESUME = '\x11'; // defaults to XON +var Terminal = /** @class */ (function () { + function Terminal(opt) { + this._onData = new eventEmitter2_1.EventEmitter2(); + this._onExit = new eventEmitter2_1.EventEmitter2(); + // for 'close' + this._internalee = new events_1.EventEmitter(); + if (!opt) { + return; + } + // Do basic type checks here in case node-pty is being used within JavaScript. If the wrong + // types go through to the C++ side it can lead to hard to diagnose exceptions. + this._checkType('name', opt.name ? opt.name : null, 'string'); + this._checkType('cols', opt.cols ? opt.cols : null, 'number'); + this._checkType('rows', opt.rows ? opt.rows : null, 'number'); + this._checkType('cwd', opt.cwd ? opt.cwd : null, 'string'); + this._checkType('env', opt.env ? opt.env : null, 'object'); + this._checkType('uid', opt.uid ? opt.uid : null, 'number'); + this._checkType('gid', opt.gid ? opt.gid : null, 'number'); + this._checkType('encoding', opt.encoding ? opt.encoding : null, 'string'); + // setup flow control handling + this.handleFlowControl = !!(opt.handleFlowControl); + this._flowControlPause = opt.flowControlPause || FLOW_CONTROL_PAUSE; + this._flowControlResume = opt.flowControlResume || FLOW_CONTROL_RESUME; + } + Object.defineProperty(Terminal.prototype, "onData", { + get: function () { return this._onData.event; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Terminal.prototype, "onExit", { + get: function () { return this._onExit.event; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Terminal.prototype, "pid", { + get: function () { return this._pid; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Terminal.prototype, "cols", { + get: function () { return this._cols; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Terminal.prototype, "rows", { + get: function () { return this._rows; }, + enumerable: true, + configurable: true + }); + Terminal.prototype.write = function (data) { + if (this.handleFlowControl) { + // PAUSE/RESUME messages are not forwarded to the pty + if (data === this._flowControlPause) { + this.pause(); + return; + } + if (data === this._flowControlResume) { + this.resume(); + return; + } + } + // everything else goes to the real pty + this._write(data); + }; + Terminal.prototype._forwardEvents = function () { + var _this = this; + this.on('data', function (e) { return _this._onData.fire(e); }); + this.on('exit', function (exitCode, signal) { return _this._onExit.fire({ exitCode: exitCode, signal: signal }); }); + }; + Terminal.prototype._checkType = function (name, value, type) { + if (value && typeof value !== type) { + throw new Error(name + " must be a " + type + " (not a " + typeof value + ")"); + } + }; + /** See net.Socket.end */ + Terminal.prototype.end = function (data) { + this._socket.end(data); + }; + /** See stream.Readable.pipe */ + Terminal.prototype.pipe = function (dest, options) { + return this._socket.pipe(dest, options); + }; + /** See net.Socket.pause */ + Terminal.prototype.pause = function () { + return this._socket.pause(); + }; + /** See net.Socket.resume */ + Terminal.prototype.resume = function () { + return this._socket.resume(); + }; + /** See net.Socket.setEncoding */ + Terminal.prototype.setEncoding = function (encoding) { + if (this._socket._decoder) { + delete this._socket._decoder; + } + if (encoding) { + this._socket.setEncoding(encoding); + } + }; + Terminal.prototype.addListener = function (eventName, listener) { this.on(eventName, listener); }; + Terminal.prototype.on = function (eventName, listener) { + if (eventName === 'close') { + this._internalee.on('close', listener); + return; + } + this._socket.on(eventName, listener); + }; + Terminal.prototype.emit = function (eventName) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + if (eventName === 'close') { + return this._internalee.emit.apply(this._internalee, arguments); + } + return this._socket.emit.apply(this._socket, arguments); + }; + Terminal.prototype.listeners = function (eventName) { + return this._socket.listeners(eventName); + }; + Terminal.prototype.removeListener = function (eventName, listener) { + this._socket.removeListener(eventName, listener); + }; + Terminal.prototype.removeAllListeners = function (eventName) { + this._socket.removeAllListeners(eventName); + }; + Terminal.prototype.once = function (eventName, listener) { + this._socket.once(eventName, listener); + }; + Terminal.prototype._close = function () { + this._socket.writable = false; + this._socket.readable = false; + this.write = function () { }; + this.end = function () { }; + this._writable = false; + this._readable = false; + }; + Terminal.prototype._parseEnv = function (env) { + var keys = Object.keys(env || {}); + var pairs = []; + for (var i = 0; i < keys.length; i++) { + pairs.push(keys[i] + '=' + env[keys[i]]); + } + return pairs; + }; + return Terminal; +}()); +exports.Terminal = Terminal; +//# sourceMappingURL=terminal.js.map \ No newline at end of file