| 'use strict'; |
| |
| const { |
| Number, |
| NumberIsNaN, |
| NumberParseInt, |
| ObjectCreate, |
| } = primordials; |
| |
| const REPL = require('repl'); |
| const { kStandaloneREPL } = require('internal/repl/utils'); |
| |
| module.exports = ObjectCreate(REPL); |
| module.exports.createInternalRepl = createRepl; |
| |
| function createRepl(env, opts, cb) { |
| if (typeof opts === 'function') { |
| cb = opts; |
| opts = null; |
| } |
| opts = { |
| [kStandaloneREPL]: true, |
| ignoreUndefined: false, |
| useGlobal: true, |
| breakEvalOnSigint: true, |
| ...opts |
| }; |
| |
| if (NumberParseInt(env.NODE_NO_READLINE)) { |
| opts.terminal = false; |
| } |
| |
| if (env.NODE_REPL_MODE) { |
| opts.replMode = { |
| 'strict': REPL.REPL_MODE_STRICT, |
| 'sloppy': REPL.REPL_MODE_SLOPPY |
| }[env.NODE_REPL_MODE.toLowerCase().trim()]; |
| } |
| |
| if (opts.replMode === undefined) { |
| opts.replMode = REPL.REPL_MODE_SLOPPY; |
| } |
| |
| const historySize = Number(env.NODE_REPL_HISTORY_SIZE); |
| if (!NumberIsNaN(historySize) && historySize > 0) { |
| opts.historySize = historySize; |
| } else { |
| opts.historySize = 1000; |
| } |
| |
| const repl = REPL.start(opts); |
| const term = 'terminal' in opts ? opts.terminal : process.stdout.isTTY; |
| repl.setupHistory(term ? env.NODE_REPL_HISTORY : '', cb); |
| } |