@monstermann/tinybench-pretty-printer
Version:
Customizable pretty-printer for tinybench benchmarks
163 lines (161 loc) • 5.04 kB
JavaScript
const require_margin = require('./columns/margin.cjs');
const require_name = require('./columns/name.cjs');
const require_ops = require('./columns/ops.cjs');
const require_samples = require('./columns/samples.cjs');
const require_summary = require('./columns/summary.cjs');
const require_time = require('./columns/time.cjs');
const require_createCountFormatter = require('./helpers/createCountFormatter.cjs');
const require_createDurationFormatter = require('./helpers/createDurationFormatter.cjs');
const require_createNumberFormatter = require('./helpers/createNumberFormatter.cjs');
const require_getFastestTask = require('./helpers/getFastestTask.cjs');
const require_getSlowestTask = require('./helpers/getSlowestTask.cjs');
const require_mapRecord = require('./helpers/mapRecord.cjs');
const require_sortTasks = require('./helpers/sortTasks.cjs');
let __monstermann_tables = require("@monstermann/tables");
//#region src/tinybenchPrinter.ts
var TinybenchPrinterImpl = class TinybenchPrinterImpl {
config;
constructor(config) {
this.config = config;
}
borders(borders) {
return this.merge({ borders });
}
borderStyle(borderStyle) {
return this.merge({ borderStyle });
}
column(name$1, column) {
return this.merge({ columns: {
...this.config.columns,
[name$1]: column
} });
}
locales(locales) {
return this.merge({ locales });
}
margin(options) {
return this.column("margin", require_margin.margin(options));
}
maxWidth(maxWidth) {
return this.merge({ maxWidth });
}
merge(config) {
return new TinybenchPrinterImpl({
...this.config,
...config
});
}
name(options) {
return this.column("name", require_name.name(options));
}
ops(options) {
return this.column("ops", require_ops.ops(options));
}
order(order) {
return this.merge({ order });
}
padding(padding) {
return this.merge({ padding });
}
prepareTableConfig(bench) {
const { columns, locales, order, sort, ...rest } = this.config;
let tasks = bench.tasks.filter((task) => task.result.state === "completed" || task.result.state === "aborted-with-statistics");
if (!tasks.length) return;
tasks = require_sortTasks.sortTasks(tasks, sort);
const fastestTask = require_getFastestTask.getFastestTask(tasks);
const slowestTask = require_getSlowestTask.getSlowestTask(tasks);
const formatNumber = require_createNumberFormatter.createNumberFormatter(locales);
const formatDuration = require_createDurationFormatter.createDurationFormatter(locales);
const formatCount = require_createCountFormatter.createCountFormatter(locales);
const rows = tasks.map((task) => require_mapRecord.mapRecord(columns, (column) => column.content({
fastestTask,
formatCount,
formatDuration,
formatNumber,
locales,
slowestTask,
task,
tasks
})));
return {
...rest,
columnAlignments: require_mapRecord.mapRecord(columns, (column) => column.rowAlignment),
columns: order,
columnStyles: require_mapRecord.mapRecord(columns, (column) => column.rowStyle),
headerAlignments: require_mapRecord.mapRecord(columns, (column) => column.headerAlignment),
headerStyles: require_mapRecord.mapRecord(columns, (column) => column.headerStyle),
headerTitles: require_mapRecord.mapRecord(columns, (column) => column.header),
rows
};
}
samples(options) {
return this.column("samples", require_samples.samples(options));
}
sort(sort) {
return this.merge({ sort });
}
stdout(stdout) {
return this.merge({ stdout });
}
summary(options) {
return this.column("summary", require_summary.summary(options));
}
time(options) {
return this.column("time", require_time.time(options));
}
toCli(bench) {
const config = this.prepareTableConfig(bench);
if (!config) return "";
return __monstermann_tables.cli.createTable(config);
}
toMarkdown(bench) {
const config = this.prepareTableConfig(bench);
if (!config) return "";
return __monstermann_tables.markdown.createTable(config);
}
useBottomBorder(useBottomBorder) {
return this.merge({ useBottomBorder });
}
useDividerBorder(useDividerBorder) {
return this.merge({ useDividerBorder });
}
useHeader(useHeader) {
return this.merge({ useHeader });
}
useHeaderSeparator(useHeaderSeparator) {
return this.merge({ useHeaderSeparator });
}
useLeftBorder(useLeftBorder) {
return this.merge({ useLeftBorder });
}
useRightBorder(useRightBorder) {
return this.merge({ useRightBorder });
}
useRowSeparator(useRowSeparator) {
return this.merge({ useRowSeparator });
}
useTopBorder(useTopBorder) {
return this.merge({ useTopBorder });
}
};
const tinybenchPrinter = new TinybenchPrinterImpl({
order: [
"name",
"summary",
"ops",
"time",
"margin",
"samples"
],
columns: {
margin: require_margin.margin(),
name: require_name.name(),
ops: require_ops.ops(),
samples: require_samples.samples(),
summary: require_summary.summary(),
time: require_time.time()
}
});
//#endregion
exports.TinybenchPrinterImpl = TinybenchPrinterImpl;
exports.tinybenchPrinter = tinybenchPrinter;