readline: eagerly load string_decoder
There was no point in lazy loading the string_decoder, since it would be used in all cases anyway. PR-URL: https://github.com/nodejs/node/pull/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>
This commit is contained in:
parent
46aa7d091f
commit
254398a0be
@ -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;
|
||||
@ -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;
|
||||
@ -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);
|
||||
@ -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++) {
|
||||
@ -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`
|
||||
|
Loading…
x
Reference in New Issue
Block a user