UNPKG

aem-clientlib-webpack-plugin

Version:

A webpack plugin to generate clientlib structure based a clientlib.config.js file

87 lines (83 loc) 2.11 kB
/* eslint no-console: 0 */ import _ from 'lodash'; import Moment from 'moment'; import Chalk from 'chalk'; export const pluginName = 'aem-clientlib-webpack-plugin'; export class BaseLogger { constructor(_level) { this.level = typeof (_level) === 'string' ? _level : 'silent'; } verbose(...message) { throw new Error(`Base class method can't be called. This class must be extended. verbose(...message) called with ${message}`); } info(...message) { throw new Error(`Base class method can't be called. This class must be extended. info(...message) called with ${message}`); } error(...message) { throw new Error(`Base class method can't be called. This class must be extended. error(...message) called with ${message}`); } log(type, ...append) { // console.log(type, ...append); console.log(...BaseLogger.getLogBanner(type), ...append); } static getColor(type) { switch (type) { case 'info': return Chalk.yellow; case 'verbose': return Chalk.blueBright; case 'error': return Chalk.red; default: return Chalk.black; } } static getLogBanner(type) { return [BaseLogger.getColor(type)(type), Moment().format('HH:mm:ss'), Chalk.cyan(pluginName)]; } static get pluginName() { return 'aem-clientlib-webpack-plugin'; } } export class SilentLogger extends BaseLogger { constructor() { super('silent'); } verbose(...message) { _.noop(message); } info(...message) { _.noop(message); } error(...message) { _.noop(message); } } export class InfoLogger extends BaseLogger { constructor() { super('info'); } verbose(...message) { _.noop(message); } info(...message) { this.log('info', ...message); } error(...message) { this.log('error', ...message); } } export class VerboseLogger extends BaseLogger { constructor() { super('verbose'); } verbose(...message) { this.log('verbose', ...message); } info(...message) { this.log('info', ...message); } error(...message) { this.log('info', ...message); } }