'use strict'; const ArrayStream = require('../common/arraystream'); const repl = require('node:repl'); const assert = require('node:assert'); function startNewREPLServer(replOpts = {}, testingOpts = {}) { const input = new ArrayStream(); const output = new ArrayStream(); output.accumulator = ''; output.write = (data) => (output.accumulator += `${data}`.replaceAll('\r', '')); const replServer = repl.start({ prompt: '', input, output, terminal: true, allowBlockingCompletions: true, ...replOpts, }); if (!testingOpts.disableDomainErrorAssert) { // Some errors are passed to the domain, but do not callback replServer._domain.on('error', assert.ifError); } return { replServer, input, output }; } module.exports = { startNewREPLServer };