mirror of
https://github.com/nodejs/node.git
synced 2025-05-09 07:27:32 +00:00

This makes sure that the described default behavior for the `terminal` option is actually always used and not only when running the REPL as standalone program. The options code is now logically combined instead of being spread out in the big REPL constructor. PR-URL: https://github.com/nodejs/node/pull/26518 Reviewed-By: Lance Ball <lball@redhat.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const REPL = require('repl');
|
|
const { kStandaloneREPL } = require('internal/repl/utils');
|
|
|
|
module.exports = Object.create(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 (parseInt(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 (!Number.isNaN(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);
|
|
}
|