Skip to content

Commit

Permalink
readline: eagerly load string_decoder
Browse files Browse the repository at this point in the history
There was no point in lazy loading the string_decoder, since it
would be used in all cases anyway.

PR-URL: #30807
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
BridgeAR authored and targos committed Dec 9, 2019
1 parent 8ad53ab commit 2f1ae4f
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions lib/readline.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ const {
kClearScreenDown
} = CSI;

// Lazy load StringDecoder for startup performance.
let StringDecoder;
const { StringDecoder } = require('string_decoder');

// Lazy load Readable for startup performance.
let Readable;
Expand Down Expand Up @@ -93,9 +92,6 @@ function Interface(input, output, completer, terminal) {
return new Interface(input, output, completer, terminal);
}

if (StringDecoder === undefined)
StringDecoder = require('string_decoder').StringDecoder;

this._sawReturnAt = 0;
this.isCompletionEnabled = true;
this._sawKeyPress = false;
Expand Down Expand Up @@ -1131,8 +1127,6 @@ Interface.prototype[Symbol.asyncIterator] = function() {
function emitKeypressEvents(stream, iface) {
if (stream[KEYPRESS_DECODER]) return;

if (StringDecoder === undefined)
StringDecoder = require('string_decoder').StringDecoder;
stream[KEYPRESS_DECODER] = new StringDecoder('utf8');

stream[ESCAPE_DECODER] = emitKeys(stream);
Expand All @@ -1147,8 +1141,11 @@ function emitKeypressEvents(stream, iface) {
if (r) {
clearTimeout(timeoutId);

let escapeTimeout = ESCAPE_CODE_TIMEOUT;

if (iface) {
iface._sawKeyPress = r.length === 1;
escapeTimeout = iface.escapeCodeTimeout;
}

for (let i = 0; i < r.length; i++) {
Expand All @@ -1160,10 +1157,7 @@ function emitKeypressEvents(stream, iface) {
stream[ESCAPE_DECODER].next(r[i]);
// Escape letter at the tail position
if (r[i] === kEscape && i + 1 === r.length) {
timeoutId = setTimeout(
escapeCodeTimeout,
iface ? iface.escapeCodeTimeout : ESCAPE_CODE_TIMEOUT
);
timeoutId = setTimeout(escapeCodeTimeout, escapeTimeout);
}
} catch (err) {
// If the generator throws (it could happen in the `keypress`
Expand Down

0 comments on commit 2f1ae4f

Please sign in to comment.