repl: fix terminal default setting · nodejs/node@97737fd (original) (raw)

`@@ -140,47 +140,70 @@ function REPLServer(prompt,

`

140

140

`replMode);

`

141

141

`}

`

142

142

``

143

``

`-

var options, input, output, dom, breakEvalOnSigint;

`

``

143

`+

let options;

`

144

144

`if (prompt !== null && typeof prompt === 'object') {

`

145

``

`-

// an options object was given

`

146

``

`-

options = prompt;

`

``

145

`+

// An options object was given.

`

``

146

`+

options = { ...prompt };

`

147

147

`stream = options.stream || options.socket;

`

148

``

`-

input = options.input;

`

149

``

`-

output = options.output;

`

150

148

`eval_ = options.eval;

`

151

149

`useGlobal = options.useGlobal;

`

152

150

`ignoreUndefined = options.ignoreUndefined;

`

153

151

`prompt = options.prompt;

`

154

``

`-

dom = options.domain;

`

155

152

`replMode = options.replMode;

`

156

``

`-

breakEvalOnSigint = options.breakEvalOnSigint;

`

157

153

`} else {

`

158

154

`options = {};

`

159

155

`}

`

160

156

``

161

``

`-

if (breakEvalOnSigint && eval_) {

`

``

157

`+

if (!options.input && !options.output) {

`

``

158

`+

// Legacy API, passing a 'stream'/'socket' option.

`

``

159

`+

if (!stream) {

`

``

160

`+

// Use stdin and stdout as the default streams if none were given.

`

``

161

`+

stream = process;

`

``

162

`+

}

`

``

163

`` +

// We're given a duplex readable/writable Stream, like a net.Socket

``

``

164

`` +

// or a custom object with 2 streams, or the process object.

``

``

165

`+

options.input = stream.stdin || stream;

`

``

166

`+

options.output = stream.stdout || stream;

`

``

167

`+

}

`

``

168

+

``

169

`+

if (options.terminal === undefined) {

`

``

170

`+

options.terminal = options.output.isTTY;

`

``

171

`+

}

`

``

172

`+

options.terminal = !!options.terminal;

`

``

173

+

``

174

`+

if (options.terminal && options.useColors === undefined) {

`

``

175

`+

// If possible, check if stdout supports colors or not.

`

``

176

`+

if (options.output.hasColors) {

`

``

177

`+

options.useColors = options.output.hasColors();

`

``

178

`+

} else if (process.env.NODE_DISABLE_COLORS === undefined) {

`

``

179

`+

options.useColors = true;

`

``

180

`+

}

`

``

181

`+

}

`

``

182

+

``

183

`+

this.inputStream = options.input;

`

``

184

`+

this.outputStream = options.output;

`

``

185

`+

this.useColors = !!options.useColors;

`

``

186

`+

this._domain = options.domain || domain.create();

`

``

187

`+

this.useGlobal = !!useGlobal;

`

``

188

`+

this.ignoreUndefined = !!ignoreUndefined;

`

``

189

`+

this.replMode = replMode || exports.REPL_MODE_SLOPPY;

`

``

190

`+

this.underscoreAssigned = false;

`

``

191

`+

this.last = undefined;

`

``

192

`+

this.underscoreErrAssigned = false;

`

``

193

`+

this.lastError = undefined;

`

``

194

`+

this.breakEvalOnSigint = !!options.breakEvalOnSigint;

`

``

195

`+

this.editorMode = false;

`

``

196

`+

// Context id for use with the inspector protocol.

`

``

197

`+

this[kContextId] = undefined;

`

``

198

+

``

199

`+

if (this.breakEvalOnSigint && eval_) {

`

162

200

`// Allowing this would not reflect user expectations.

`

163

201

`// breakEvalOnSigint affects only the behavior of the default eval().

`

164

202

`throw new ERR_INVALID_REPL_EVAL_CONFIG();

`

165

203

`}

`

166

204

``

167

``

`-

var self = this;

`

168

``

-

169

``

`-

self._domain = dom || domain.create();

`

170

``

`-

self.useGlobal = !!useGlobal;

`

171

``

`-

self.ignoreUndefined = !!ignoreUndefined;

`

172

``

`-

self.replMode = replMode || exports.REPL_MODE_SLOPPY;

`

173

``

`-

self.underscoreAssigned = false;

`

174

``

`-

self.last = undefined;

`

175

``

`-

self.underscoreErrAssigned = false;

`

176

``

`-

self.lastError = undefined;

`

177

``

`-

self.breakEvalOnSigint = !!breakEvalOnSigint;

`

178

``

`-

self.editorMode = false;

`

179

``

`-

// Context id for use with the inspector protocol.

`

180

``

`-

self[kContextId] = undefined;

`

181

``

-

182

``

`-

let rli = self;

`

183

``

`-

Object.defineProperty(self, 'rli', {

`

``

205

`+

let rli = this;

`

``

206

`+

Object.defineProperty(this, 'rli', {

`

184

207

`get: util.deprecate(() => rli,

`

185

208

`'REPLServer.rli is deprecated', 'DEP0124'),

`

186

209

`set: util.deprecate((val) => rli = val,

`

`@@ -197,6 +220,8 @@ function REPLServer(prompt,

`

197

220

``

198

221

`eval_ = eval_ || defaultEval;

`

199

222

``

``

223

`+

const self = this;

`

``

224

+

200

225

`// Pause taking in new input, and store the keys in a buffer.

`

201

226

`const pausedBuffer = [];

`

202

227

`let paused = false;

`

`@@ -452,21 +477,6 @@ function REPLServer(prompt,

`

452

477

`top.displayPrompt();

`

453

478

`});

`

454

479

``

455

``

`-

if (!input && !output) {

`

456

``

`-

// legacy API, passing a 'stream'/'socket' option

`

457

``

`-

if (!stream) {

`

458

``

`-

// Use stdin and stdout as the default streams if none were given

`

459

``

`-

stream = process;

`

460

``

`-

}

`

461

``

`` -

// We're given a duplex readable/writable Stream, like a net.Socket

``

462

``

`` -

// or a custom object with 2 streams, or the process object

``

463

``

`-

input = stream.stdin || stream;

`

464

``

`-

output = stream.stdout || stream;

`

465

``

`-

}

`

466

``

-

467

``

`-

self.inputStream = input;

`

468

``

`-

self.outputStream = output;

`

469

``

-

470

480

`self.resetContext();

`

471

481

`self.lines.level = [];

`

472

482

``

`@@ -503,13 +513,6 @@ function REPLServer(prompt,

`

503

513

`// Figure out which "writer" function to use

`

504

514

`self.writer = options.writer || exports.writer;

`

505

515

``

506

``

`-

if (options.useColors === undefined) {

`

507

``

`-

options.useColors = self.terminal && (

`

508

``

`-

typeof self.outputStream.getColorDepth === 'function' ?

`

509

``

`-

self.outputStream.getColorDepth() > 1 : true);

`

510

``

`-

}

`

511

``

`-

self.useColors = !!options.useColors;

`

512

``

-

513

516

`if (self.writer === writer) {

`

514

517

`// Conditionally turn on ANSI coloring.

`

515

518

`writer.options.colors = self.useColors;

`