@stringsync/vexml
Version:
MusicXML to Vexflow
32 lines (31 loc) • 965 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MonitoredFormatter = void 0;
const config_1 = require("../config");
const debug_1 = require("../debug");
/**
* A formatter that tracks how long its child formatter takes to format a document.
*/
class MonitoredFormatter {
formatter;
config;
log;
constructor(formatter, logger, opts) {
this.formatter = formatter;
this.config = { ...config_1.DEFAULT_CONFIG, ...opts?.config };
this.log = logger;
}
format(document) {
const stopwatch = debug_1.Stopwatch.start();
const formatted = this.formatter.format(document);
const lap = stopwatch.lap();
if (lap < 1) {
this.log.info(`formatted score in <1ms`);
}
else {
this.log.info(`formatted score in ${Math.round(lap)}ms`);
}
return formatted;
}
}
exports.MonitoredFormatter = MonitoredFormatter;