var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; import generatePrefixMap from './generatePrefixMap'; import generatePluginList from './generatePluginList'; function generateImportString(plugin, compatibility) { if (compatibility) { return 'var ' + plugin + ' = require(\'inline-style-prefixer/lib/plugins/' + plugin + '\')'; } return 'import ' + plugin + ' from \'inline-style-prefixer/lib/plugins/' + plugin + '\''; } export function generateFile(prefixMap, pluginList, compatibility) { var pluginImports = pluginList.map(function (plugin) { return generateImportString(plugin, compatibility); }).join('\n'); var moduleExporter = compatibility ? 'module.exports = ' : 'export default'; var pluginExport = '[' + pluginList.join(',') + ']'; var prefixMapExport = JSON.stringify(prefixMap); var prefixVariables = ['var w = ["Webkit"];', 'var m = ["Moz"];', 'var ms = ["ms"];', 'var wm = ["Webkit","Moz"];', 'var wms = ["Webkit","ms"];', 'var wmms = ["Webkit","Moz","ms"];'].join('\n'); return pluginImports + '\n' + prefixVariables + '\n\n' + moduleExporter + ' {\n plugins: ' + pluginExport + ',\n prefixMap: ' + prefixMapExport.replace(/\["Webkit"\]/g, 'w').replace(/\["Moz"\]/g, 'm').replace(/\["ms"\]/g, 'ms').replace(/\["Webkit","Moz"\]/g, 'wm').replace(/\["Webkit","ms"\]/g, 'wms').replace(/\["Webkit","Moz","ms"\]/g, 'wmms') + '\n}'; } function saveFile(fileContent, path) { /* eslint-disable global-require */ var fs = require('fs'); /* eslint-enable global-require */ fs.writeFile(path, fileContent, function (err) { if (err) { throw err; } console.log('Successfully saved data to "' + path + '".'); }); } var defaultOptions = { prefixMap: true, plugins: true, compatibility: false }; export default function generateData(browserList) { var userOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var options = _extends({}, defaultOptions, userOptions); var compatibility = options.compatibility, plugins = options.plugins, path = options.path, prefixMap = options.prefixMap; var requiredPrefixMap = prefixMap ? generatePrefixMap(browserList) : {}; var requiredPlugins = plugins ? generatePluginList(browserList) : []; if (path) { saveFile(generateFile(requiredPrefixMap, requiredPlugins, compatibility), path); } return { prefixMap: requiredPrefixMap, plugins: requiredPlugins }; }