UNPKG

next-era

Version:

Welcome to **Next Era**! A comprehensive library designed to supercharge your **Next.js** applications with powerful utilities and significant performance optimizations. Build faster, more efficient, and feature-rich Next.js projects with ease.

68 lines (67 loc) 1.97 kB
import { isFunction, map } from "lodash"; /** * Logger class creates a builder to build log instance, which can be used to log messages to the console. * Log function's able to use template literals. * Example: * ```ts * const { debug } = new Logger(data).groupCollapsed("group label"); * debug`doing something`; * debug `done`.groupEnd(); * ``` */ export class Logger { #context; constructor(...context) { this.#context = context; } #log = (context, strings, ...values) => { const messages = [strings[0]]; map(values, (value, index) => { messages.push(value, strings[index + 1]); }); return [ messages.join(""), ...map(context, (attr) => (isFunction(attr) ? attr() : attr)), ]; }; clear = () => { console.clear(); return this; }; group = (...label) => { console.group(...label); return this; }; groupCollapsed = (...label) => { console.groupCollapsed(...label); return this; }; log = (strings, ...values) => { console.log(...this.#log(this.#context, strings, ...values)); return this; }; trace = (strings, ...values) => { console.trace(...this.#log(this.#context, strings, ...values)); return this; }; info = (strings, ...values) => { console.info(...this.#log(this.#context, strings, ...values)); return this; }; debug = (strings, ...values) => { console.debug(...this.#log(this.#context, strings, ...values)); return this; }; warn = (strings, ...values) => { console.warn(...this.#log(this.#context, strings, ...values)); return this; }; error = (strings, ...values) => { console.error(...this.#log(this.#context, strings, ...values)); return this; }; groupEnd = () => { console.groupEnd(); return this; }; }