'use strict';
-module.exports = {createRepl: createRepl};
-
const Interface = require('readline').Interface;
const REPL = require('repl');
const path = require('path');
+module.exports = Object.create(REPL);
+module.exports.createInternalRepl = createRepl;
+
// XXX(chrisdickinson): The 15ms debounce value is somewhat arbitrary.
// The debounce is to guard against code pasted into the REPL.
const kDebounceHistoryMS = 15;
-try {
- // hack for require.resolve("./relative") to work properly.
- module.filename = path.resolve('repl');
-} catch (e) {
- // path.resolve('repl') fails when the current working directory has been
- // deleted. Fall back to the directory name of the (absolute) executable
- // path. It's not really correct but what are the alternatives?
- const dirname = path.dirname(process.execPath);
- module.filename = path.resolve(dirname, 'repl');
+// XXX(chrisdickinson): hack to make sure that the internal debugger
+// uses the original repl.
+function replStart() {
+ return REPL.start.apply(REPL, arguments);
}
-// hack for repl require to work properly with node_modules folders
-module.paths = require('module')._nodeModulePaths(module.filename);
-
function createRepl(env, cb) {
const opts = {
ignoreUndefined: false,
const domain = require('domain');
const debug = util.debuglog('repl');
+try {
+ // hack for require.resolve("./relative") to work properly.
+ module.filename = path.resolve('repl');
+} catch (e) {
+ // path.resolve('repl') fails when the current working directory has been
+ // deleted. Fall back to the directory name of the (absolute) executable
+ // path. It's not really correct but what are the alternatives?
+ const dirname = path.dirname(process.execPath);
+ module.filename = path.resolve(dirname, 'repl');
+}
+
+// hack for repl require to work properly with node_modules folders
+module.paths = require('module')._nodeModulePaths(module.filename);
+
// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
// If -i or --interactive were passed, or stdin is a TTY.
if (process._forceRepl || NativeModule.require('tty').isatty(0)) {
// REPL
- Module.requireRepl().createRepl(process.env, function(err, repl) {
+ Module.requireRepl().createInternalRepl(process.env, function(err, repl) {
if (err) {
throw err;
}