packages/fela-logger/src/index.js
/* eslint-disable consistent-return, no-console */
import cssbeautify from 'cssbeautify'
import { CLEAR_TYPE } from 'fela-utils'
function addLogger(renderer, options) {
renderer.subscribe((change) => {
if (change.type === CLEAR_TYPE) {
console.log('Cleared renderer cache.')
return true
}
const selector = change.selector || change.fontFamily || change.name
const css =
change.declaration || change.keyframe || change.fontFace || change.css
const formattedCSS = options.format ? cssbeautify(css) : css
const isMedia = change.media && change.media.length > 0
// logs all information in a group
console.group(selector)
if (isMedia) {
console.log(change.media)
}
if (options.logCSS) {
console.log(formattedCSS)
}
console.groupEnd()
})
return renderer
}
const defaultOptions = {
logCSS: false,
formatCSS: false,
}
export default function logger(options = {}) {
return (renderer) =>
addLogger(renderer, {
...defaultOptions,
...options,
})
}