loglow
Version:
A flexible logging utility for Node.js, offering customizable color, style, and timestamp options for enhanced console output.
133 lines (132 loc) • 3.99 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
// src/index.ts
var LogColor = /* @__PURE__ */ ((LogColor2) => {
LogColor2["Red"] = "\x1B[31m";
LogColor2["Green"] = "\x1B[32m";
LogColor2["Yellow"] = "\x1B[33m";
LogColor2["Blue"] = "\x1B[34m";
LogColor2["Magenta"] = "\x1B[35m";
LogColor2["Cyan"] = "\x1B[36m";
LogColor2["White"] = "\x1B[37m";
return LogColor2;
})(LogColor || {});
var LogStyle = /* @__PURE__ */ ((LogStyle2) => {
LogStyle2["Reset"] = "\x1B[0m";
LogStyle2["Bold"] = "\x1B[1m";
LogStyle2["Dim"] = "\x1B[2m";
LogStyle2["Italic"] = "\x1B[3m";
LogStyle2["Underscore"] = "\x1B[4m";
LogStyle2["Blink"] = "\x1B[5m";
LogStyle2["Reverse"] = "\x1B[7m";
return LogStyle2;
})(LogStyle || {});
var Loglow = class {
constructor() {
this.data = [];
}
/**
* Adds a message log entry with optional styling.
* @param {...unknown[]} messages - One or more messages or data to log.
* @returns {this} The instance of Loglow for chaining.
*/
add(...messages) {
this.data.push({
type: "message" /* Message */,
data: messages
});
return this;
}
/**
* Adds a timestamp log entry with an optional color or style.
* @param {LogColor | LogStyle} [color=LogStyle.Reset] - The color or style of the timestamp.
* @returns {this} The instance of Loglow for chaining.
*/
addTimestamp(color = "\x1B[0m" /* Reset */) {
this.data.push({
type: "timestamp" /* Timestamp */,
color,
data: (/* @__PURE__ */ new Date()).toISOString()
});
return this;
}
/**
* Adds a newline log entry.
* @returns {this} The instance of Loglow for chaining.
*/
addNewline() {
this.data.push({ type: "newline" /* Newline */ });
return this;
}
/**
* Checks if a given value is a valid LogColor or LogStyle.
* @private
* @param {string} value - The value to check.
* @returns {boolean} True if the value is a valid LogColor or LogStyle, false otherwise.
*/
isLogColorOrStyle(value) {
return Object.values(__spreadValues(__spreadValues({}, LogColor), LogStyle)).includes(
value
);
}
/**
* Prints the log entries to the console with appropriate formatting.
*/
print() {
let output = "";
this.data.forEach((item) => {
switch (item.type) {
case "newline" /* Newline */:
output += "\n";
break;
case "timestamp" /* Timestamp */:
output += `${item.color}${item.data}${"\x1B[0m" /* Reset */}`;
break;
case "message" /* Message */:
let accMessage = "";
let count = 0;
if (typeof item.data === "string") {
output += `${item.data}`;
break;
}
item.data.forEach((data) => {
if (typeof data === "string" && this.isLogColorOrStyle(data)) {
accMessage += `${data}`;
} else {
if (count > 0) {
accMessage += " ";
}
accMessage += `${data}`;
count++;
}
});
output += `${accMessage}${"\x1B[0m" /* Reset */}`;
if (item.data.length > 0) {
output += " ";
}
break;
}
});
console.log(output);
}
};
export {
LogColor,
LogStyle,
Loglow
};
//# sourceMappingURL=index.mjs.map