astro-ghostcms/.pnpm-store/v3/files/91/06d5cfeb361d02ae548074e20f0...

172 lines
4.1 KiB
Plaintext

import { blue, bold, dim, red, yellow } from "kleur/colors";
import stringWidth from "string-width";
const dateTimeFormat = new Intl.DateTimeFormat([], {
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
hour12: false
});
const levels = {
debug: 20,
info: 30,
warn: 40,
error: 50,
silent: 90
};
function log(opts, level, label, message, newLine = true) {
const logLevel = opts.level;
const dest = opts.dest;
const event = {
label,
level,
message,
newLine
};
if (!isLogLevelEnabled(logLevel, level)) {
return;
}
dest.write(event);
}
function isLogLevelEnabled(configuredLogLevel, level) {
return levels[configuredLogLevel] <= levels[level];
}
function info(opts, label, message, newLine = true) {
return log(opts, "info", label, message, newLine);
}
function warn(opts, label, message, newLine = true) {
return log(opts, "warn", label, message, newLine);
}
function error(opts, label, message, newLine = true) {
return log(opts, "error", label, message, newLine);
}
function table(opts, columns) {
return function logTable(logFn, ...input) {
const message = columns.map((len, i) => padStr(input[i].toString(), len)).join(" ");
logFn(opts, null, message);
};
}
function debug(...args) {
if ("_astroGlobalDebug" in globalThis) {
globalThis._astroGlobalDebug(...args);
}
}
function padStr(str, len) {
const strLen = stringWidth(str);
if (strLen > len) {
return str.substring(0, len - 3) + "...";
}
const spaces = Array.from({ length: len - strLen }, () => " ").join("");
return str + spaces;
}
function getEventPrefix({ level, label }) {
const timestamp = `${dateTimeFormat.format(/* @__PURE__ */ new Date())}`;
const prefix = [];
if (level === "error" || level === "warn") {
prefix.push(bold(timestamp));
prefix.push(`[${level.toUpperCase()}]`);
} else {
prefix.push(timestamp);
}
if (label) {
prefix.push(`[${label}]`);
}
if (level === "error") {
return red(prefix.join(" "));
}
if (level === "warn") {
return yellow(prefix.join(" "));
}
if (prefix.length === 1) {
return dim(prefix[0]);
}
return dim(prefix[0]) + " " + blue(prefix.splice(1).join(" "));
}
let defaultLogLevel;
if (typeof process !== "undefined") {
let proc = process;
if ("argv" in proc && Array.isArray(proc.argv)) {
if (proc.argv.includes("--verbose")) {
defaultLogLevel = "debug";
} else if (proc.argv.includes("--silent")) {
defaultLogLevel = "silent";
} else {
defaultLogLevel = "info";
}
} else {
defaultLogLevel = "info";
}
} else {
defaultLogLevel = "info";
}
function timerMessage(message, startTime = Date.now()) {
let timeDiff = Date.now() - startTime;
let timeDisplay = timeDiff < 750 ? `${Math.round(timeDiff)}ms` : `${(timeDiff / 1e3).toFixed(1)}s`;
return `${message} ${dim(timeDisplay)}`;
}
class Logger {
options;
constructor(options) {
this.options = options;
}
info(label, message, newLine = true) {
info(this.options, label, message, newLine);
}
warn(label, message, newLine = true) {
warn(this.options, label, message, newLine);
}
error(label, message, newLine = true) {
error(this.options, label, message, newLine);
}
debug(label, ...messages) {
debug(label, ...messages);
}
level() {
return this.options.level;
}
forkIntegrationLogger(label) {
return new AstroIntegrationLogger(this.options, label);
}
}
class AstroIntegrationLogger {
options;
label;
constructor(logging, label) {
this.options = logging;
this.label = label;
}
/**
* Creates a new logger instance with a new label, but the same log options.
*/
fork(label) {
return new AstroIntegrationLogger(this.options, label);
}
info(message) {
info(this.options, this.label, message);
}
warn(message) {
warn(this.options, this.label, message);
}
error(message) {
error(this.options, this.label, message);
}
debug(message) {
debug(this.label, message);
}
}
export {
AstroIntegrationLogger,
Logger,
dateTimeFormat,
debug,
defaultLogLevel,
error,
getEventPrefix,
info,
isLogLevelEnabled,
levels,
log,
table,
timerMessage,
warn
};