-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnamespace.js
57 lines (51 loc) · 1.15 KB
/
namespace.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { capitalize as cap } from '../utils'
/**
* Namespace plugin.
*
* @param {String} msgs Messages.
* @param {Object} [options={}] Plugin options.
* @param {String} [options.name=null] Namespace name.
* @param {Boolean} [options.capitalize=false] Capitalize.
* @param {Object} [options.styles={}] Plugin styles.
* @param {Object} level Level.
* @param {String} level.name Level name.
* @param {Object} level.options Level options.
*
* @returns {Object} Plugin result.
*/
export default function namespace (msgs, { name = null, capitalize = false, styles = {} }, level) {
let formattedMsg = ''
let s = {}
if (name) {
if (capitalize) {
name = cap(name)
}
formattedMsg = `[${name}]`
s = {
...defaultStyles,
...levelStyles[level.name],
...styles || {}
}
}
return { before: formattedMsg, styles: s }
}
const defaultStyles = {
color: 'white',
background: '#000000',
padding: '3px 5px'
}
const levelStyles = {
log: {
background: '#000000'
},
info: {
background: '#219bff'
},
warn: {
background: '#ffea2d',
color: 'inherit'
},
error: {
background: '#e52d34'
}
}