Skip to content

Commit

Permalink
add prefixed keyframes analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
bartveneman committed Apr 22, 2019
1 parent aefbcca commit 10ec525
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 19 deletions.
4 changes: 4 additions & 0 deletions readme.md
Expand Up @@ -53,6 +53,10 @@ analyze('foo{}')
// 'atrules.keyframes.total': 0,
// 'atrules.keyframes.totalUnique': 0,
// 'atrules.keyframes.unique': [],
// 'atrules.keyframes.prefixed.total': 0,
// 'atrules.keyframes.prefixed.totalUnique': 0,
// 'atrules.keyframes.prefixed.unique': [],
// 'atrules.keyframes.prefixed.share': 0,
// 'atrules.mediaqueries.total': 0,
// 'atrules.mediaqueries.totalUnique': 0,
// 'atrules.mediaqueries.unique': [],
Expand Down
23 changes: 11 additions & 12 deletions src/analyzer/atrules/keyframes.js
@@ -1,20 +1,19 @@
const isVendorPrefixed = require('is-vendor-prefixed')
const uniquer = require('../../utils/uniquer')

module.exports = atRules => {
const all = atRules
.filter(rule => {
return [
'keyframes',
'-moz-keyframes',
'-webkit-keyframes',
'-ms-keyframes',
'-o-keyframes'
].includes(rule.type)
})
.map(rule => rule.params)
const all = atRules.filter(rule => rule.type.includes('keyframes'))
const prefixed = all
.filter(rule => isVendorPrefixed(rule.type))
.map(rule => `@${rule.type} ${rule.params}`)

return {
total: all.length,
...uniquer(all)
...uniquer(all.map(rule => rule.params)),
prefixed: {
total: prefixed.length,
...uniquer(prefixed),
share: prefixed.length === 0 ? 0 : all.length / prefixed.length
}
}
}
15 changes: 8 additions & 7 deletions test/analyzer/atrules/keyframes.js
Expand Up @@ -36,7 +36,8 @@ test('it responds with the correct structure', t => [
prefixed: {
total: 0,
totalUnique: 0,
unique: []
unique: [],
share: 0
}
})
])
Expand Down Expand Up @@ -85,6 +86,7 @@ test('it finds all vendor prefixed keyframes', t => {

t.is(actual.total, 4)
t.is(actual.totalUnique, 4)
t.is(actual.share, 1)
t.deepEqual(actual.unique, [
{
count: 1,
Expand Down Expand Up @@ -120,7 +122,8 @@ test('it does not report non-vendor prefixed keyframes as prefixed', t => {

t.is(actual.total, 0)
t.is(actual.totalUnique, 0)
t.is(actual.unique, [])
t.is(actual.share, 0)
t.deepEqual(actual.unique, [])
})

test('it does not report non-@keyframes atrules as @keyframes', t => {
Expand All @@ -135,9 +138,7 @@ test('it does not report non-@keyframes atrules as @keyframes', t => {
}
])

t.deepEqual(actual, {
total: 0,
totalUnique: 0,
unique: []
})
t.is(actual.total, 0)
t.is(actual.totalUnique, 0)
t.deepEqual(actual.unique, [])
})
4 changes: 4 additions & 0 deletions test/analyzer/index.js
Expand Up @@ -33,6 +33,10 @@ test('Returns the correct analysis object structure', async t => {
'atrules.keyframes.total': 0,
'atrules.keyframes.totalUnique': 0,
'atrules.keyframes.unique': [],
'atrules.keyframes.prefixed.total': 0,
'atrules.keyframes.prefixed.totalUnique': 0,
'atrules.keyframes.prefixed.unique': [],
'atrules.keyframes.prefixed.share': 0,
'atrules.mediaqueries.total': 0,
'atrules.mediaqueries.totalUnique': 0,
'atrules.mediaqueries.unique': [],
Expand Down

0 comments on commit 10ec525

Please sign in to comment.