All files / lib/internal repl.js

90.74% Statements 49/54
91.67% Branches 11/12
100% Functions 1/1
90.74% Lines 49/54

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 551x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 60x 60x 23x 23x 23x 60x 60x 60x 60x 60x 60x 60x 60x 60x 2x 2x 60x 60x           60x 60x 60x 60x 60x 60x 60x 2x 60x 58x 58x 60x 60x 60x 60x 60x  
'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);
}