@serwist/turbopack
Version:
A module that integrates Serwist into your Next.js / Turbopack application.
58 lines (45 loc) • 1.52 kB
text/typescript
import { bold, green, red, white, yellow } from "kolorist";
const LOGGING_METHOD = ["wait", "error", "warn", "info", "event"] as const;
type LoggingMethods = (typeof LOGGING_METHOD)[number];
const mapLoggingMethodToConsole: Record<LoggingMethods, "log" | "error" | "warn" | "log"> = {
wait: "log",
error: "error",
warn: "warn",
info: "log",
event: "log",
};
const prefixes = {
wait: `${white(bold("○"))} (serwist)`,
error: `${red(bold("X"))} (serwist)`,
warn: `${yellow(bold("⚠"))} (serwist)`,
info: `${white(bold("○"))} (serwist)`,
event: `${green(bold("✓"))} (serwist)`,
};
const prefixedLog = (prefixType: LoggingMethods, ...message: any[]) => {
const consoleMethod = mapLoggingMethodToConsole[prefixType];
const prefix = prefixes[prefixType];
if ((message[0] === "" || message[0] === undefined) && message.length === 1) {
message.shift();
}
// If there's no message, don't print the prefix but a new line
if (message.length === 0) {
console[consoleMethod]("");
} else {
console[consoleMethod](` ${prefix}`, ...message);
}
};
export const wait = (...message: any[]) => {
prefixedLog("wait", ...message);
};
export const error = (...message: any[]) => {
prefixedLog("error", ...message);
};
export const warn = (...message: any[]) => {
prefixedLog("warn", ...message);
};
export const info = (...message: any[]) => {
prefixedLog("info", ...message);
};
export const event = (...message: any[]) => {
prefixedLog("event", ...message);
};