import type { Benchmark, MetricsCollection, Sampled, Standard } from "../types/benchmark.js"; export class BenchmarkWrapper { constructor( private benchmark: Benchmark, private separator: string = '_' ) { } datasetName(): string { return `${this.className()}${this.separator}${this.benchmark.name}`; } metric(label: string): Standard | undefined { return this.benchmark?.metrics?.[label]; } sampled(label: string): Sampled | undefined { return this.benchmark?.sampledMetrics?.[label]; } metricLabels(): string[] { return BenchmarkWrapper.labels(this.benchmark.metrics); } sampledLabels(): string[] { return BenchmarkWrapper.labels(this.benchmark.sampledMetrics); } className(): string { const className = this.benchmark.className; const parts = className.split('.'); const lastIndex = parts.length - 1; return parts[lastIndex]; } testName(): string { return this.benchmark.name; } private static labels(collection: MetricsCollection | undefined): string[] { const labels: string[] = []; if (collection) { for (const key in collection) { if (collection.hasOwnProperty(key)) { labels.push(key); } } } return labels; } }