From 2bfba0dd339d1480e1b5caa64f28e330147845b9 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Sun, 6 May 2018 23:09:01 +0200 Subject: [PATCH] readline: lazy loaded PR-URL: https://github.com/nodejs/node/pull/20567 Reviewed-By: Gus Caplan Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel --- lib/tty.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tty.js b/lib/tty.js index 4e9023b0eb6..b36adf2534c 100644 --- a/lib/tty.js +++ b/lib/tty.js @@ -26,9 +26,11 @@ const net = require('net'); const { TTY, isTTY } = process.binding('tty_wrap'); const errors = require('internal/errors'); const { ERR_INVALID_FD, ERR_TTY_INIT_FAILED } = errors.codes; -const readline = require('readline'); const { getColorDepth } = require('internal/tty'); +// Lazy loaded for startup performance. +let readline; + function isatty(fd) { return Number.isInteger(fd) && fd >= 0 && isTTY(fd); } @@ -122,15 +124,19 @@ WriteStream.prototype._refreshSize = function() { // Backwards-compat WriteStream.prototype.cursorTo = function(x, y) { + if (readline === undefined) readline = require('readline'); readline.cursorTo(this, x, y); }; WriteStream.prototype.moveCursor = function(dx, dy) { + if (readline === undefined) readline = require('readline'); readline.moveCursor(this, dx, dy); }; WriteStream.prototype.clearLine = function(dir) { + if (readline === undefined) readline = require('readline'); readline.clearLine(this, dir); }; WriteStream.prototype.clearScreenDown = function() { + if (readline === undefined) readline = require('readline'); readline.clearScreenDown(this); }; WriteStream.prototype.getWindowSize = function() {