rofrischmann/inline-style-prefix-all

View on GitHub
generator/generateData.js

Summary

Maintainability
A
0 mins
Test Coverage
import fs from 'fs'
import searchMap from './searchMap'
import config from '../config'

const caniuse = require('caniuse-api')

const prefixBrowsers = {
  chrome: 'Webkit',
  safari: 'Webkit',
  firefox: 'Moz',
  opera: 'Webkit',
  ie: 'ms',
  edge: 'ms',
  ios_saf: 'Webkit',
  android: 'Webkit',
  and_chr: 'Webkit',
  and_uc: 'Webkit',
  op_mini: 'Webkit',
  ie_mob: 'ms'
}

const prefixProperties = Object.keys(prefixBrowsers).reduce((out, browser) => {
  const prefix = prefixBrowsers[browser]
  Object.keys(searchMap).forEach(searchKey => {
    const versions = caniuse.getSupport(searchKey, true)
    const properties = [ ].concat(searchMap[searchKey])

    properties.forEach(prop => {
      if (versions[browser].x >= config[browser]) {
        out[prefix][prop] = true;
      }
    })
  })

  return out
}, { Webkit: {}, Moz: {}, ms: {} })

// remove flexprops from IE
const flexPropsIE = [ 'alignContent', 'alignSelf', 'alignItems', 'justifyContent', 'order', 'flexGrow', 'flexShrink', 'flexBasis' ]

flexPropsIE.forEach(prop => {
  prefixProperties.ms[prop] = false
})

const file = 'export default ' + JSON.stringify(prefixProperties).replace(new RegExp(/\[/, 'g'), '{').replace(new RegExp(/\]/, 'g'), '}');

fs.writeFile('./modules/prefixProps.js', file, err => {
  if (err) {
    throw err
  }
  console.log('Successfully generated static property vendor-prefix data based on before generated caniuse data mapping.')
})