'use strict';
const tty = require('node:tty');
const assertHasColorsArguments = count => {
tty.WriteStream.prototype.hasColors(count);
};
const makeHasColors = colorDepth => (count = 16, env) => {
if (env === undefined && typeof count === 'object' && count !== null) {
count = 16;
}
assertHasColorsArguments(count);
return count <= 2 ** colorDepth;
};
const simulateTTY = (stream, colorDepth) => {
stream.isTTY = true;
stream.columns = 80;
stream.rows = 24;
if (colorDepth) {
stream.getColorDepth = () => colorDepth;
}
stream.hasColors = makeHasColors(colorDepth);
stream.clearLine = tty.WriteStream.prototype.clearLine;
stream.cursorTo = tty.WriteStream.prototype.cursorTo;
stream.moveCursor = tty.WriteStream.prototype.moveCursor;
};
if (process.env.AVA_SIMULATE_TTY) {
const colorDepth = process.env.AVA_TTY_COLOR_DEPTH
? Number.parseInt(process.env.AVA_TTY_COLOR_DEPTH, 10)
: undefined;
simulateTTY(process.stderr, colorDepth);
simulateTTY(process.stdout, colorDepth);
}