UNPKG

@serwist/next

Version:

A module that integrates Serwist into your Next.js application.

59 lines (46 loc) 1.79 kB
import { createRequire } from "node:module"; import { bold, green, red, white, yellow } from "kolorist"; import semver from "semver"; const require = createRequire(import.meta.url); const LOGGING_SPACE_PREFIX = semver.gte(require("next/package.json").version, "16.0.0") ? "" : " "; export type LoggingMethods = "wait" | "error" | "warn" | "info" | "event"; const prefixedLog = (prefixType: LoggingMethods, ...message: any[]) => { let prefix: string; let consoleMethod: keyof Console; switch (prefixType) { case "wait": prefix = `${white(bold("○"))} (serwist)`; consoleMethod = "log"; break; case "error": prefix = `${red(bold("X"))} (serwist)`; consoleMethod = "error"; break; case "warn": prefix = `${yellow(bold("⚠"))} (serwist)`; consoleMethod = "warn"; break; case "info": prefix = `${white(bold("○"))} (serwist)`; consoleMethod = "log"; break; case "event": prefix = `${green(bold("✓"))} (serwist)`; consoleMethod = "log"; break; } 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](`${LOGGING_SPACE_PREFIX}${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);