simplr-gulp
Version:
Fully functional gulpfile.js implementation. Tailored for Single Page Application. Written in TypeScript.
116 lines (115 loc) • 4.06 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const colors = require("ansi-colors");
const log = require("fancy-log");
var LogType;
(function (LogType) {
LogType[LogType["Default"] = 0] = "Default";
LogType[LogType["Error"] = 1] = "Error";
LogType[LogType["Info"] = 2] = "Info";
LogType[LogType["Warning"] = 3] = "Warning";
})(LogType || (LogType = {}));
class LoggerType {
constructor(type) {
this.type = type;
}
get Type() {
return this.type;
}
}
class Logger {
showMessage(type, loggerType, ...messages) {
let isDefaultLogType = false;
let color, typeString;
switch (type) {
case LogType.Error:
{
color = colors.styles.red.open;
}
break;
case LogType.Info:
{
color = colors.styles.cyan.open;
}
break;
case LogType.Warning:
{
color = colors.styles.yellow.open;
}
break;
default: {
color = colors.styles.white.open;
isDefaultLogType = true;
}
}
if (!isDefaultLogType) {
typeString = LogType[type].toLocaleUpperCase();
}
else {
typeString = "";
}
if (loggerType !== undefined) {
typeString = typeString + " " + loggerType.Type;
}
if (!isDefaultLogType || loggerType !== undefined) {
typeString = typeString + ":";
}
let resolvedMessages = this.discernWords(type, color, ...messages);
log(`${colors.styles.bold.open}${color}${typeString}${resolvedMessages.join(" ")}`, colors.styles.reset.open);
}
discernWords(type, ...messages) {
if (type === LogType.Default || type === LogType.Info) {
let resolveMessages = messages.map(message => {
if (typeof message === "string") {
let msg = message;
let openColor = true;
while (msg.search("'") !== -1) {
if (openColor) {
openColor = !openColor;
msg = msg.replace("'", colors.styles.magenta.open);
}
else {
openColor = !openColor;
msg = msg.replace("'", colors.styles.magenta.close);
}
}
return msg;
}
return message;
});
return resolveMessages;
}
else {
return messages;
}
}
getLoggerTypeFromMessages(messages) {
return messages[0] instanceof LoggerType ? messages.shift() : undefined;
}
log(...messages) {
let loggerType = this.getLoggerTypeFromMessages(messages);
this.showMessage(LogType.Default, loggerType, ...messages);
}
error(...messages) {
let loggerType = this.getLoggerTypeFromMessages(messages);
this.showMessage(LogType.Error, loggerType, ...messages);
}
info(...messages) {
let loggerType = this.getLoggerTypeFromMessages(messages);
this.showMessage(LogType.Info, loggerType, ...messages);
}
warn(...messages) {
let loggerType = this.getLoggerTypeFromMessages(messages);
this.showMessage(LogType.Warning, loggerType, ...messages);
}
withType(type) {
let loggerType = new LoggerType(type);
return {
log: this.log.bind(this, loggerType),
error: this.error.bind(this, loggerType),
info: this.info.bind(this, loggerType),
warn: this.warn.bind(this, loggerType)
};
}
}
exports.Logger = Logger;
exports.LoggerInstance = new Logger();