UNPKG

@monstermann/tinybench-pretty-printer

Version:
163 lines (161 loc) 5.04 kB
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;