This commit is contained in:
Yamozha
2021-04-02 02:24:13 +03:00
parent c23950b545
commit 7256d79e2c
31493 changed files with 3036630 additions and 0 deletions

View File

@ -0,0 +1,32 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getRecommendedPlugins;
var _pluginMap = require('./maps/pluginMap');
var _pluginMap2 = _interopRequireDefault(_pluginMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getRecommendedPlugins(browserList) {
var recommendedPlugins = {};
for (var plugin in _pluginMap2.default) {
var browserSupportByPlugin = _pluginMap2.default[plugin];
for (var browser in browserSupportByPlugin) {
if (browserList.hasOwnProperty(browser)) {
var browserVersion = browserSupportByPlugin[browser];
if (browserList[browser] < browserVersion) {
recommendedPlugins[plugin] = true;
}
}
}
}
return Object.keys(recommendedPlugins);
}

View File

@ -0,0 +1,87 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = generatePrefixMap;
var _caniuseApi = require('caniuse-api');
var _propertyMap = require('./maps/propertyMap');
var _propertyMap2 = _interopRequireDefault(_propertyMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixBrowserMap = {
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'
// remove flexprops from IE
};var flexPropsIE = ['alignContent', 'alignSelf', 'alignItems', 'justifyContent', 'order', 'flexGrow', 'flexShrink', 'flexBasis'];
function filterAndRemoveIfEmpty(map, property, filter) {
if (map[property]) {
map[property] = map[property].filter(filter);
if (map[property].length === 0) {
delete map[property];
}
}
}
function generatePrefixMap(browserList) {
var prefixMap = {};
for (var browser in prefixBrowserMap) {
var prefix = prefixBrowserMap[browser];
for (var keyword in _propertyMap2.default) {
var keywordProperties = [].concat(_propertyMap2.default[keyword]);
var versions = (0, _caniuseApi.getSupport)(keyword);
for (var i = 0, len = keywordProperties.length; i < len; ++i) {
if (versions[browser].x >= browserList[browser]) {
var property = keywordProperties[i];
if (!prefixMap[property]) {
prefixMap[property] = [];
}
if (prefixMap[property].indexOf(prefix) === -1) {
prefixMap[property].push(prefix);
}
}
}
}
}
// remove flexProps from IE and Firefox due to alternative syntax
for (var _i = 0, _len = flexPropsIE.length; _i < _len; ++_i) {
filterAndRemoveIfEmpty(prefixMap, flexPropsIE[_i], function (prefix) {
return prefix !== 'ms' && prefix !== 'Moz';
});
}
// remove transition from Moz and Webkit as they are handled
// specially by the transition plugins
filterAndRemoveIfEmpty(prefixMap, 'transition', function (prefix) {
return prefix !== 'Moz' && prefix !== 'Webkit';
});
// remove WebkitFlexDirection as it does not exist
filterAndRemoveIfEmpty(prefixMap, 'flexDirection', function (prefix) {
return prefix !== 'Moz';
});
return prefixMap;
}

View File

@ -0,0 +1,85 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
exports.generateFile = generateFile;
exports.default = generateData;
var _generatePrefixMap = require('./generatePrefixMap');
var _generatePrefixMap2 = _interopRequireDefault(_generatePrefixMap);
var _generatePluginList = require('./generatePluginList');
var _generatePluginList2 = _interopRequireDefault(_generatePluginList);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 + '\'';
}
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
};
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 ? (0, _generatePrefixMap2.default)(browserList) : {};
var requiredPlugins = plugins ? (0, _generatePluginList2.default)(browserList) : [];
if (path) {
saveFile(generateFile(requiredPrefixMap, requiredPlugins, compatibility), path);
}
return {
prefixMap: requiredPrefixMap,
plugins: requiredPlugins
};
}

View File

@ -0,0 +1,116 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
// values are "up-to"
var maximumVersion = 9999;
exports.default = {
backgroundClip: {
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
ios_saf: maximumVersion,
edge: maximumVersion,
firefox: maximumVersion,
op_mini: maximumVersion
},
calc: {
firefox: 15,
chrome: 25,
safari: 6.1,
ios_saf: 7
},
crossFade: {
chrome: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
ios_saf: 10,
safari: 10
},
cursor: {
firefox: maximumVersion,
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion
},
filter: {
ios_saf: maximumVersion,
safari: 9.1
},
flex: {
chrome: 29,
safari: 9,
ios_saf: 9,
opera: 16
},
flexboxIE: {
ie_mob: 11,
ie: 11
},
flexboxOld: {
firefox: 22,
chrome: 21,
safari: 6.2,
ios_saf: 6.2,
android: 4.4,
and_uc: maximumVersion
},
gradient: {
firefox: 16,
chrome: 26,
safari: 7,
ios_saf: 7,
opera: 12.1,
op_mini: 12.1,
android: 4.4,
and_uc: maximumVersion
},
grid: {
edge: 16,
ie: 11,
ie_mob: 11
},
imageSet: {
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
and_uc: maximumVersion,
ios_saf: maximumVersion
},
logical: {
chrome: 68,
safari: maximumVersion,
opera: maximumVersion,
and_chr: 66,
ios_saf: maximumVersion,
firefox: 40
},
position: {
safari: maximumVersion,
ios_saf: maximumVersion
},
sizing: {
chrome: 46,
safari: maximumVersion,
opera: 33,
and_chr: 53,
ios_saf: maximumVersion
},
transition: {
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
and_uc: maximumVersion,
ios_saf: maximumVersion,
msie: maximumVersion,
ie_mob: maximumVersion,
edge: maximumVersion,
firefox: maximumVersion,
op_mini: maximumVersion
}
};

View File

@ -0,0 +1,43 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
'border-radius': 'borderRadius',
'border-image': ['borderImage', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],
flexbox: ['flex', 'flexBasis', 'flexDirection', 'flexGrow', 'flexFlow', 'flexShrink', 'flexWrap', 'alignContent', 'alignItems', 'alignSelf', 'justifyContent', 'order'],
'css-transitions': ['transition', 'transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],
transforms2d: ['transform', 'transformOrigin', 'transformOriginX', 'transformOriginY'],
transforms3d: ['backfaceVisibility', 'perspective', 'perspectiveOrigin', 'transform', 'transformOrigin', 'transformStyle', 'transformOriginX', 'transformOriginY', 'transformOriginZ'],
'css-animation': ['animation', 'animationDelay', 'animationDirection', 'animationFillMode', 'animationDuration', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],
'css-appearance': 'appearance',
'user-select-none': 'userSelect',
'css-backdrop-filter': 'backdropFilter',
'css3-boxsizing': 'boxSizing',
'font-kerning': 'fontKerning',
'css-exclusions': ['wrapFlow', 'wrapThrough', 'wrapMargin'],
'css-snappoints': ['scrollSnapType', 'scrollSnapPointsX', 'scrollSnapPointsY', 'scrollSnapDestination', 'scrollSnapCoordinate'],
'text-emphasis': ['textEmphasisPosition', 'textEmphasis', 'textEmphasisStyle', 'textEmphasisColor'],
'css-text-align-last': 'textAlignLast',
'css-boxdecorationbreak': 'boxDecorationBreak',
'css-clip-path': 'clipPath',
'css-masks': ['maskImage', 'maskMode', 'maskRepeat', 'maskPosition', 'maskClip', 'maskOrigin', 'maskSize', 'maskComposite', 'mask', 'maskBorderSource', 'maskBorderMode', 'maskBorderSlice', 'maskBorderWidth', 'maskBorderOutset', 'maskBorderRepeat', 'maskBorder', 'maskType'],
'css-touch-action': 'touchAction',
'text-size-adjust': 'textSizeAdjust',
'text-decoration': ['textDecorationStyle', 'textDecorationSkip', 'textDecorationLine', 'textDecorationColor'],
'css-shapes': ['shapeImageThreshold', 'shapeImageMargin', 'shapeImageOutside'],
'css3-tabsize': 'tabSize',
'css-filters': 'filter',
'css-resize': 'resize',
'css-hyphens': 'hyphens',
'css-regions': ['flowInto', 'flowFrom', 'breakBefore', 'breakAfter', 'breakInside', 'regionFragment'],
'object-fit': ['objectFit', 'objectPosition'],
'text-overflow': 'textOverflow',
'background-img-opts': ['backgroundClip', 'backgroundOrigin', 'backgroundSize'],
'font-feature': 'fontFeatureSettings',
'css-boxshadow': 'boxShadow',
multicolumn: ['breakAfter', 'breakBefore', 'breakInside', 'columnCount', 'columnFill', 'columnGap', 'columnRule', 'columnRuleColor', 'columnRuleStyle', 'columnRuleWidth', 'columns', 'columnSpan', 'columnWidth', 'columnGap'],
'css-writing-mode': ['writingMode'],
'css-text-orientation': ['textOrientation']
};