Files
DeviceManager/node_modules/vitest/dist/chunk-runtime-console.ea222ffb.js

109 lines
3.1 KiB
JavaScript

import { Writable } from 'node:stream';
import { Console } from 'node:console';
import { getSafeTimers } from '@vitest/utils';
import { R as RealDate } from './vendor-date.6e993429.js';
function createCustomConsole(state) {
const stdoutBuffer = /* @__PURE__ */ new Map();
const stderrBuffer = /* @__PURE__ */ new Map();
const timers = /* @__PURE__ */ new Map();
const unknownTestId = "__vitest__unknown_test__";
const { setTimeout, clearTimeout } = getSafeTimers();
function schedule(taskId) {
const timer = timers.get(taskId);
const { stdoutTime, stderrTime } = timer;
clearTimeout(timer.timer);
timer.timer = setTimeout(() => {
if (stderrTime < stdoutTime) {
sendStderr(taskId);
sendStdout(taskId);
} else {
sendStdout(taskId);
sendStderr(taskId);
}
});
}
function sendStdout(taskId) {
const buffer = stdoutBuffer.get(taskId);
if (!buffer)
return;
const content = buffer.map((i) => String(i)).join("");
const timer = timers.get(taskId);
state.rpc.onUserConsoleLog({
type: "stdout",
content: content || "<empty line>",
taskId,
time: timer.stdoutTime || RealDate.now(),
size: buffer.length
});
stdoutBuffer.set(taskId, []);
timer.stdoutTime = 0;
}
function sendStderr(taskId) {
const buffer = stderrBuffer.get(taskId);
if (!buffer)
return;
const content = buffer.map((i) => String(i)).join("");
const timer = timers.get(taskId);
state.rpc.onUserConsoleLog({
type: "stderr",
content: content || "<empty line>",
taskId,
time: timer.stderrTime || RealDate.now(),
size: buffer.length
});
stderrBuffer.set(taskId, []);
timer.stderrTime = 0;
}
const stdout = new Writable({
write(data, encoding, callback) {
var _a;
const id = ((_a = state == null ? void 0 : state.current) == null ? void 0 : _a.id) ?? unknownTestId;
let timer = timers.get(id);
if (timer) {
timer.stdoutTime = timer.stdoutTime || RealDate.now();
} else {
timer = { stdoutTime: RealDate.now(), stderrTime: RealDate.now(), timer: 0 };
timers.set(id, timer);
}
let buffer = stdoutBuffer.get(id);
if (!buffer) {
buffer = [];
stdoutBuffer.set(id, buffer);
}
buffer.push(data);
schedule(id);
callback();
}
});
const stderr = new Writable({
write(data, encoding, callback) {
var _a;
const id = ((_a = state == null ? void 0 : state.current) == null ? void 0 : _a.id) ?? unknownTestId;
let timer = timers.get(id);
if (timer) {
timer.stderrTime = timer.stderrTime || RealDate.now();
} else {
timer = { stderrTime: RealDate.now(), stdoutTime: RealDate.now(), timer: 0 };
timers.set(id, timer);
}
let buffer = stderrBuffer.get(id);
if (!buffer) {
buffer = [];
stderrBuffer.set(id, buffer);
}
buffer.push(data);
schedule(id);
callback();
}
});
return new Console({
stdout,
stderr,
colorMode: true,
groupIndentation: 2
});
}
export { createCustomConsole };