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
|
kClearScreenDown
|
||||||
} = CSI;
|
} = CSI;
|
||||||
|
|
||||||
// Lazy load StringDecoder for startup performance.
|
const { StringDecoder } = require('string_decoder');
|
||||||
let StringDecoder;
|
|
||||||
|
|
||||||
// Lazy load Readable for startup performance.
|
// Lazy load Readable for startup performance.
|
||||||
let Readable;
|
let Readable;
|
||||||
@ -93,9 +92,6 @@ function Interface(input, output, completer, terminal) {
|
|||||||
return new Interface(input, output, completer, terminal);
|
return new Interface(input, output, completer, terminal);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringDecoder === undefined)
|
|
||||||
StringDecoder = require('string_decoder').StringDecoder;
|
|
||||||
|
|
||||||
this._sawReturnAt = 0;
|
this._sawReturnAt = 0;
|
||||||
this.isCompletionEnabled = true;
|
this.isCompletionEnabled = true;
|
||||||
this._sawKeyPress = false;
|
this._sawKeyPress = false;
|
||||||
@ -1131,8 +1127,6 @@ Interface.prototype[Symbol.asyncIterator] = function() {
|
|||||||
function emitKeypressEvents(stream, iface) {
|
function emitKeypressEvents(stream, iface) {
|
||||||
if (stream[KEYPRESS_DECODER]) return;
|
if (stream[KEYPRESS_DECODER]) return;
|
||||||
|
|
||||||
if (StringDecoder === undefined)
|
|
||||||
StringDecoder = require('string_decoder').StringDecoder;
|
|
||||||
stream[KEYPRESS_DECODER] = new StringDecoder('utf8');
|
stream[KEYPRESS_DECODER] = new StringDecoder('utf8');
|
||||||
|
|
||||||
stream[ESCAPE_DECODER] = emitKeys(stream);
|
stream[ESCAPE_DECODER] = emitKeys(stream);
|
||||||
@ -1147,8 +1141,11 @@ function emitKeypressEvents(stream, iface) {
|
|||||||
if (r) {
|
if (r) {
|
||||||
clearTimeout(timeoutId);
|
clearTimeout(timeoutId);
|
||||||
|
|
||||||
|
let escapeTimeout = ESCAPE_CODE_TIMEOUT;
|
||||||
|
|
||||||
if (iface) {
|
if (iface) {
|
||||||
iface._sawKeyPress = r.length === 1;
|
iface._sawKeyPress = r.length === 1;
|
||||||
|
escapeTimeout = iface.escapeCodeTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < r.length; i++) {
|
for (let i = 0; i < r.length; i++) {
|
||||||
@ -1160,10 +1157,7 @@ function emitKeypressEvents(stream, iface) {
|
|||||||
stream[ESCAPE_DECODER].next(r[i]);
|
stream[ESCAPE_DECODER].next(r[i]);
|
||||||
// Escape letter at the tail position
|
// Escape letter at the tail position
|
||||||
if (r[i] === kEscape && i + 1 === r.length) {
|
if (r[i] === kEscape && i + 1 === r.length) {
|
||||||
timeoutId = setTimeout(
|
timeoutId = setTimeout(escapeCodeTimeout, escapeTimeout);
|
||||||
escapeCodeTimeout,
|
|
||||||
iface ? iface.escapeCodeTimeout : ESCAPE_CODE_TIMEOUT
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// If the generator throws (it could happen in the `keypress`
|
// If the generator throws (it could happen in the `keypress`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user