@wireapp/cryptobox
Version:
High-level API with persistent storage for Proteus.
113 lines (92 loc) • 2.5 kB
JavaScript
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