diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2018-05-06 23:08:00 +0200 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-05-18 15:25:38 +0200 |
commit | f4f8b22f7d474a9206ce1253cf884b94552759f3 (patch) | |
tree | ac20cddcbd11a364d597fdf253022980134bd81b /lib/readline.js | |
parent | 11892b0b6422f6e983bfbde7ba342942dd2e2297 (diff) | |
download | android-node-v8-f4f8b22f7d474a9206ce1253cf884b94552759f3.tar.gz android-node-v8-f4f8b22f7d474a9206ce1253cf884b94552759f3.tar.bz2 android-node-v8-f4f8b22f7d474a9206ce1253cf884b94552759f3.zip |
string_decoder: lazy loaded
PR-URL: https://github.com/nodejs/node/pull/20567
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'lib/readline.js')
-rw-r--r-- | lib/readline.js | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/readline.js b/lib/readline.js index 124fc8111b..89dd1b84f2 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -35,7 +35,6 @@ const { const { debug, inherits } = require('util'); const { Buffer } = require('buffer'); const EventEmitter = require('events'); -const { StringDecoder } = require('string_decoder'); const { CSI, emitKeys, @@ -52,6 +51,9 @@ const { kClearScreenDown } = CSI; +// Lazy load StringDecoder for startup performance. +let StringDecoder; + const kHistorySize = 30; const kMincrlfDelay = 100; // \r\n, \n, or \r followed by something other than \n @@ -73,6 +75,9 @@ 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; @@ -987,6 +992,9 @@ Interface.prototype._ttyWrite = function(s, key) { 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); |