UNPKG

@wireapp/cryptobox

Version:

High-level API with persistent storage for Proteus.

113 lines (92 loc) 2.5 kB
var Logdown = require('./base')() var markdown = require('./markdown/browser') var isColorSupported = require('./util/is-color-supported/browser') var globalObject = require('./util/get-global')() // // Static // // Tomorrow Night Eighties colors // https://github.com/chriskempson/tomorrow-theme#tomorrow-night-eighties Logdown.prefixColors = [ '#F2777A', '#F99157', '#FFCC66', '#99CC99', '#66CCCC', '#6699CC', '#CC99CC' ] Logdown._setPrefixRegExps = function () { try { if ( globalObject.localStorage && typeof globalObject.localStorage.getItem('debug') === 'string' ) { Logdown._prefixRegExps = [] globalObject.localStorage .getItem('debug') .split(',') .forEach(function (str) { str = str.trim() var type = 'enable' if (str[0] === '-') { str = str.substr(1) type = 'disable' } var regExp = Logdown._prepareRegExpForPrefixSearch(str) Logdown._prefixRegExps.push({ type: type, regExp: regExp }) }) } } catch (error) {} } Logdown._getNextPrefixColor = (function () { var lastUsed = 0 return function () { lastUsed += 1 return Logdown.prefixColors[lastUsed % Logdown.prefixColors.length] } })() // // Instance // Logdown.prototype._getDecoratedPrefix = function () { var decoratedPrefix = [] if (isColorSupported()) { decoratedPrefix.push('%c' + this.opts.prefix + '%c ') decoratedPrefix.push( 'color:' + this.opts.prefixColor + '; font-weight:bold;', '' // Empty string resets style. ) } else { decoratedPrefix.push('[' + this.opts.prefix + '] ') } return decoratedPrefix } Logdown.prototype._prepareOutput = function (args) { var preparedOutput = this._getDecoratedPrefix() var parsedMarkdown // Only first argument on `console` can have style. if (typeof args[0] === 'string') { if (this.opts.markdown && isColorSupported()) { parsedMarkdown = markdown.parse(args[0]) preparedOutput[0] = preparedOutput[0] + parsedMarkdown.text preparedOutput = preparedOutput.concat(parsedMarkdown.styles) } else { preparedOutput[0] = preparedOutput[0] + args[0] } } else { preparedOutput.push(args[0]) } if (args.length > 1) { preparedOutput = preparedOutput.concat(args.slice(1)) } return preparedOutput } // // API // Logdown._setPrefixRegExps() module.exports = Logdown