@testim/testim-cli
Version:
Command line interface for running Testing on you CI
116 lines (91 loc) • 9.38 kB
JavaScript
;
var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _cssValue = require('css-value');
var _cssValue2 = _interopRequireDefault(_cssValue);
var _rgb2hex = require('rgb2hex');
var _rgb2hex2 = _interopRequireDefault(_rgb2hex);
var _sanitize = require('./sanitize');
var _sanitize2 = _interopRequireDefault(_sanitize);
var parse = function parse(cssPropertyValue, cssProperty) {
if (!cssPropertyValue || !cssPropertyValue.value) {
return null;
}
var parsedValue = {
property: cssProperty,
value: cssPropertyValue.value.toLowerCase().trim()
};
if (parsedValue.value.indexOf('rgb') === 0) {
/**
* remove whitespaces in rgb values
*/
parsedValue.value = parsedValue.value.replace(/\s/g, '');
/**
* parse color values
*/
var color = parsedValue.value;
parsedValue.parsed = (0, _rgb2hex2['default'])(parsedValue.value);
parsedValue.parsed.type = 'color';
parsedValue.parsed[/[rgba]+/g.exec(color)[0]] = color;
} else if (parsedValue.property === 'font-family') {
var font = (0, _cssValue2['default'])(cssPropertyValue.value);
var string = parsedValue.value;
var value = cssPropertyValue.value.split(/,/).map(_sanitize2['default'].css);
parsedValue.value = _sanitize2['default'].css(font[0].value || font[0].string);
parsedValue.parsed = { value: value, type: 'font', string: string };
} else {
/**
* parse other css properties
*/
try {
parsedValue.parsed = (0, _cssValue2['default'])(cssPropertyValue.value);
if (parsedValue.parsed.length === 1) {
parsedValue.parsed = parsedValue.parsed[0];
}
if (parsedValue.parsed.type && parsedValue.parsed.type === 'number' && parsedValue.parsed.unit === '') {
parsedValue.value = parsedValue.parsed.value;
}
} catch (e) {
// TODO improve css-parse lib to handle properties like
// `-webkit-animation-timing-function : cubic-bezier(0.25, 0.1, 0.25, 1)
}
}
return parsedValue;
};
var parseCSS = function parseCSS(response, cssProperty) {
var parsedCSS = [];
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _getIterator(response), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var res = _step.value;
parsedCSS.push(parse(res, cssProperty));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (parsedCSS.length === 1) {
return parsedCSS[0];
} else if (parsedCSS.length === 0) {
return null;
}
return parsedCSS;
};
exports['default'] = parseCSS;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oZWxwZXJzL3BhcnNlQ1NTLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7d0JBQXFCLFdBQVc7Ozs7dUJBQ1osU0FBUzs7Ozt3QkFFUixZQUFZOzs7O0FBRWpDLElBQUksS0FBSyxHQUFHLFNBQVIsS0FBSyxDQUFhLGdCQUFnQixFQUFFLFdBQVcsRUFBRTtBQUNqRCxRQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7QUFDOUMsZUFBTyxJQUFJLENBQUE7S0FDZDs7QUFFRCxRQUFJLFdBQVcsR0FBRztBQUNkLGdCQUFRLEVBQUUsV0FBVztBQUNyQixhQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTtLQUNyRCxDQUFBOztBQUVELFFBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFOzs7O0FBSXhDLG1CQUFXLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTs7Ozs7QUFLeEQsWUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQTtBQUM3QixtQkFBVyxDQUFDLE1BQU0sR0FBRywwQkFBUSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDL0MsbUJBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtBQUNqQyxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO0tBQ3hELE1BQU0sSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLGFBQWEsRUFBRTtBQUMvQyxZQUFJLElBQUksR0FBRywyQkFBUyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMzQyxZQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFBO0FBQzlCLFlBQUksS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLHNCQUFTLEdBQUcsQ0FBQyxDQUFBOztBQUUvRCxtQkFBVyxDQUFDLEtBQUssR0FBRyxzQkFBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDakUsbUJBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFOLE1BQU0sRUFBRSxDQUFBO0tBQ3ZELE1BQU07Ozs7QUFJSCxZQUFJO0FBQ0EsdUJBQVcsQ0FBQyxNQUFNLEdBQUcsMkJBQVMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7O0FBRXJELGdCQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNqQywyQkFBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQzdDOztBQUVELGdCQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7QUFDbkcsMkJBQVcsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUE7YUFDL0M7U0FDSixDQUFDLE9BQU8sQ0FBQyxFQUFFOzs7U0FHWDtLQUNKOztBQUVELFdBQU8sV0FBVyxDQUFBO0NBQ3JCLENBQUE7O0FBRUQsSUFBSSxRQUFRLEdBQUcsU0FBWCxRQUFRLENBQWEsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUM1QyxRQUFJLFNBQVMsR0FBRyxFQUFFLENBQUE7Ozs7Ozs7QUFFbEIsMENBQWdCLFFBQVEsNEdBQUU7Z0JBQWpCLEdBQUc7O0FBQ1IscUJBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO1NBQzFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUQsUUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN4QixlQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUN0QixNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDL0IsZUFBTyxJQUFJLENBQUE7S0FDZDs7QUFFRCxXQUFPLFNBQVMsQ0FBQTtDQUNuQixDQUFBOztxQkFFYyxRQUFRIiwiZmlsZSI6InBhcnNlQ1NTLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNzc1ZhbHVlIGZyb20gJ2Nzcy12YWx1ZSdcbmltcG9ydCByZ2IyaGV4IGZyb20gJ3JnYjJoZXgnXG5cbmltcG9ydCBzYW5pdGl6ZSBmcm9tICcuL3Nhbml0aXplJ1xuXG5sZXQgcGFyc2UgPSBmdW5jdGlvbiAoY3NzUHJvcGVydHlWYWx1ZSwgY3NzUHJvcGVydHkpIHtcbiAgICBpZiAoIWNzc1Byb3BlcnR5VmFsdWUgfHwgIWNzc1Byb3BlcnR5VmFsdWUudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBsZXQgcGFyc2VkVmFsdWUgPSB7XG4gICAgICAgIHByb3BlcnR5OiBjc3NQcm9wZXJ0eSxcbiAgICAgICAgdmFsdWU6IGNzc1Byb3BlcnR5VmFsdWUudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKClcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkVmFsdWUudmFsdWUuaW5kZXhPZigncmdiJykgPT09IDApIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlbW92ZSB3aGl0ZXNwYWNlcyBpbiByZ2IgdmFsdWVzXG4gICAgICAgICAqL1xuICAgICAgICBwYXJzZWRWYWx1ZS52YWx1ZSA9IHBhcnNlZFZhbHVlLnZhbHVlLnJlcGxhY2UoL1xccy9nLCAnJylcblxuICAgICAgICAvKipcbiAgICAgICAgICogcGFyc2UgY29sb3IgdmFsdWVzXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgY29sb3IgPSBwYXJzZWRWYWx1ZS52YWx1ZVxuICAgICAgICBwYXJzZWRWYWx1ZS5wYXJzZWQgPSByZ2IyaGV4KHBhcnNlZFZhbHVlLnZhbHVlKVxuICAgICAgICBwYXJzZWRWYWx1ZS5wYXJzZWQudHlwZSA9ICdjb2xvcidcbiAgICAgICAgcGFyc2VkVmFsdWUucGFyc2VkWy9bcmdiYV0rL2cuZXhlYyhjb2xvcilbMF1dID0gY29sb3JcbiAgICB9IGVsc2UgaWYgKHBhcnNlZFZhbHVlLnByb3BlcnR5ID09PSAnZm9udC1mYW1pbHknKSB7XG4gICAgICAgIGxldCBmb250ID0gY3NzVmFsdWUoY3NzUHJvcGVydHlWYWx1ZS52YWx1ZSlcbiAgICAgICAgbGV0IHN0cmluZyA9IHBhcnNlZFZhbHVlLnZhbHVlXG4gICAgICAgIGxldCB2YWx1ZSA9IGNzc1Byb3BlcnR5VmFsdWUudmFsdWUuc3BsaXQoLywvKS5tYXAoc2FuaXRpemUuY3NzKVxuXG4gICAgICAgIHBhcnNlZFZhbHVlLnZhbHVlID0gc2FuaXRpemUuY3NzKGZvbnRbMF0udmFsdWUgfHwgZm9udFswXS5zdHJpbmcpXG4gICAgICAgIHBhcnNlZFZhbHVlLnBhcnNlZCA9IHsgdmFsdWUsIHR5cGU6ICdmb250Jywgc3RyaW5nIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogcGFyc2Ugb3RoZXIgY3NzIHByb3BlcnRpZXNcbiAgICAgICAgICovXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXJzZWRWYWx1ZS5wYXJzZWQgPSBjc3NWYWx1ZShjc3NQcm9wZXJ0eVZhbHVlLnZhbHVlKVxuXG4gICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUucGFyc2VkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlLnBhcnNlZCA9IHBhcnNlZFZhbHVlLnBhcnNlZFswXVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUucGFyc2VkLnR5cGUgJiYgcGFyc2VkVmFsdWUucGFyc2VkLnR5cGUgPT09ICdudW1iZXInICYmIHBhcnNlZFZhbHVlLnBhcnNlZC51bml0ID09PSAnJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlLnZhbHVlID0gcGFyc2VkVmFsdWUucGFyc2VkLnZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gaW1wcm92ZSBjc3MtcGFyc2UgbGliIHRvIGhhbmRsZSBwcm9wZXJ0aWVzIGxpa2VcbiAgICAgICAgICAgIC8vIGAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24gOiAgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRWYWx1ZVxufVxuXG5sZXQgcGFyc2VDU1MgPSBmdW5jdGlvbiAocmVzcG9uc2UsIGNzc1Byb3BlcnR5KSB7XG4gICAgbGV0IHBhcnNlZENTUyA9IFtdXG5cbiAgICBmb3IgKGxldCByZXMgb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgcGFyc2VkQ1NTLnB1c2gocGFyc2UocmVzLCBjc3NQcm9wZXJ0eSkpXG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZENTUy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlZENTU1swXVxuICAgIH0gZWxzZSBpZiAocGFyc2VkQ1NTLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRDU1Ncbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VDU1NcbiJdfQ==