UNPKG

pwabuilder-lib

Version:
86 lines (66 loc) 2.3 kB
'use strict'; var ansi = require('ansi'), path = require('path'); // When the source for pwabuilder-lib is a GitHub repository, npm installs // separate copies of pwabuilder-lib for each platform. The singleton ensures // that all access the global instance; otherwise, each one gets a separate // instance of the logger. var log = global.manifoldjs_logger, cursor = ansi(process.stdout), utils = require('./utils'); var colorMap = { 'debug': 'green', 'info': 'brightGreen', 'warn': 'yellow', 'error': 'brightRed', 'default': 'brightGreen' }; function getApplicationName (appPath) { try { if (!appPath) { appPath = path.dirname(utils.getRootPackagePath()); } var mainModule = path.join(appPath, 'package.json'); return require(mainModule).name; } catch (err) { if (err.code !== 'MODULE_NOT_FOUND') { throw err; } var next = path.resolve(appPath, '..'); if (appPath !== next) { return getApplicationName(next); } } } if (!log) { log = require('loglevel'); var maxLenSeverity = 5; var maxLenSource = 12; var originalFactory = log.methodFactory; log.methodFactory = function (methodName, logLevel, loggerName) { var rawMethod = originalFactory(methodName, logLevel, loggerName); return function (message, source, severity) { severity = severity || methodName; var color = colorMap[severity] || colorMap['default']; cursor[color](); message = (message || '').replace(/\n/g, '\n' + new Array(maxLenSeverity + maxLenSource + 6).join(' ')); if (methodName !== 'write') { source = source || loggerName || getApplicationName() || 'Unknown'; rawMethod( '[' + severity + new Array(Math.max(maxLenSeverity - severity.length + 1, 0)).join(' ') + '] ' + source + new Array(Math.max(maxLenSource - source.length + 1, 0)).join(' ') + ': ' + message); } else { rawMethod(message); } cursor.reset(); }; }; log.write = log.methodFactory('write', log.levels.INFO, ''); // call setLevel to apply the changes log.setLevel(log.getLevel()); global.manifoldjs_logger = log; } module.exports = log;