var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var logger_exports = {}; __export(logger_exports, { Logger: () => Logger }); module.exports = __toCommonJS(logger_exports); var import_npmlog = __toESM(require("npmlog")); const msSecond = 1e3; const msMinute = 60 * msSecond; const msHour = 60 * msMinute; function formatTime(ms) { let hours = 0; let minutes = 0; let seconds = 0; let milliseconds = ms; let result; function _pad(num) { return `${num}`.padStart(2, "0"); } if (milliseconds >= msSecond) { if (milliseconds >= msMinute) { if (milliseconds >= msHour) { hours = Math.floor(milliseconds / msHour); milliseconds = milliseconds % msHour; } minutes = Math.floor(milliseconds / msMinute); milliseconds = milliseconds % msMinute; } seconds = Math.floor(milliseconds / msSecond); milliseconds = milliseconds % msSecond; } if (hours !== 0 || minutes !== 0) { result = hours !== 0 ? `${hours}:${_pad(minutes)}` : `${minutes}`; return `${result}:${_pad(seconds)}.${milliseconds} (${hours !== 0 ? "h:m" : ""}m:ss.mmm)`; } if (seconds !== 0) { result = seconds.toFixed(3); return `${result}s`; } result = milliseconds.toFixed(3); return `${result}ms`; } class Logger { constructor(options) { this.times = /* @__PURE__ */ new Map(); this.logger = import_npmlog.default; this.levels = []; this.level = options?.level || "info"; } get level() { return this.logger.level; } set level(level) { this.logger.level = level; } time(label) { if (label === void 0) { label = ""; } if (this.times.has(label)) { this.warn("time", 'Time label "%s" already exists.', label); return; } this.times.set(label, process.hrtime()); } timeEnd(label, level, prefix, message, ...args) { if (label === void 0) { label = ""; } if (this.times.has(label) === false) { this.warn("time", 'Time label "%s" does not exist.', label); return; } const time = this.times.get(label); const duration = process.hrtime(time); const ms = duration[0] * 1e3 + duration[1] / 1e6; const formatted = formatTime(ms); this.times.delete(label); if (level !== void 0) { this.log(level, prefix, message, ...args); } return formatted; } subdue(level) { this.levels.push(this.level); this.level = level; } awaken() { if (this.levels.length === 0) { return; } this.level = this.levels.pop(); } get amend() { process.stdout.moveCursor(0, -1); process.stdout.clearLine(1); return this; } log(level, prefix, message, ...args) { this.logger.log(level, prefix, message, ...args); } silly(prefix, message, ...args) { this.logger.silly(prefix, message, ...args); } debug(prefix, message, ...args) { this.logger.debug(prefix, message, ...args); } verbose(prefix, message, ...args) { this.logger.verbose(prefix, message, ...args); } info(prefix, message, ...args) { this.logger.info(prefix, message, ...args); } warn(prefix, message, ...args) { this.logger.warn(prefix, message, ...args); } error(prefix, message, ...args) { this.logger.error(prefix, message, ...args); } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Logger });