postcss-reduce-transforms
Advanced tools
Comparing version
@@ -1,193 +0,251 @@ | ||
'use strict'; | ||
"use strict"; | ||
exports.__esModule = true; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _has = require('has'); | ||
var _has = _interopRequireDefault(require("has")); | ||
var _has2 = _interopRequireDefault(_has); | ||
var _postcss = _interopRequireDefault(require("postcss")); | ||
var _postcss = require('postcss'); | ||
var _postcssValueParser = _interopRequireWildcard(require("postcss-value-parser")); | ||
var _postcss2 = _interopRequireDefault(_postcss); | ||
var _cssnanoUtils = require("cssnano-utils"); | ||
var _postcssValueParser = require('postcss-value-parser'); | ||
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } | ||
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser); | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function getValues(list, _ref, index) { | ||
var value = _ref.value; | ||
function getValues(list, node, index) { | ||
if (index % 2 === 0) { | ||
let value = NaN; | ||
if (index % 2 === 0) { | ||
return [].concat(list, [parseFloat(value)]); | ||
if (node.type === 'function' && (node.value === 'var' || node.value === 'env') && node.nodes.length === 1) { | ||
value = (0, _postcssValueParser.stringify)(node.nodes); | ||
} else if (node.type === 'word') { | ||
value = parseFloat(node.value); | ||
} | ||
return list; | ||
return [...list, value]; | ||
} | ||
return list; | ||
} | ||
function matrix3d(node, values) { | ||
// matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1) => matrix(a, b, c, d, tx, ty) | ||
if (values[15] && values[2] === 0 && values[3] === 0 && values[6] === 0 && values[7] === 0 && values[8] === 0 && values[9] === 0 && values[10] === 1 && values[11] === 0 && values[14] === 0 && values[15] === 1) { | ||
var nodes = node.nodes; | ||
if (values.length !== 16) { | ||
return; | ||
} // matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1) => matrix(a, b, c, d, tx, ty) | ||
node.value = 'matrix'; | ||
node.nodes = [nodes[0], // a | ||
nodes[1], // , | ||
nodes[2], // b | ||
nodes[3], // , | ||
nodes[8], // c | ||
nodes[9], // , | ||
nodes[10], // d | ||
nodes[11], // , | ||
nodes[24], // tx | ||
nodes[25], // , | ||
nodes[26]]; | ||
} | ||
if (values[15] && values[2] === 0 && values[3] === 0 && values[6] === 0 && values[7] === 0 && values[8] === 0 && values[9] === 0 && values[10] === 1 && values[11] === 0 && values[14] === 0 && values[15] === 1) { | ||
const { | ||
nodes | ||
} = node; | ||
node.value = 'matrix'; | ||
node.nodes = [nodes[0], // a | ||
nodes[1], // , | ||
nodes[2], // b | ||
nodes[3], // , | ||
nodes[8], // c | ||
nodes[9], // , | ||
nodes[10], // d | ||
nodes[11], // , | ||
nodes[24], // tx | ||
nodes[25], // , | ||
nodes[26] // ty | ||
]; | ||
} | ||
} | ||
var rotate3dMappings = [['rotateX', [1, 0, 0]], // rotate3d(1, 0, 0, a) => rotateX(a) | ||
const rotate3dMappings = [['rotateX', [1, 0, 0]], // rotate3d(1, 0, 0, a) => rotateX(a) | ||
['rotateY', [0, 1, 0]], // rotate3d(0, 1, 0, a) => rotateY(a) | ||
['rotate', [0, 0, 1]]]; | ||
['rotate', [0, 0, 1]] // rotate3d(0, 0, 1, a) => rotate(a) | ||
]; | ||
const rotate3dMatch = (0, _cssnanoUtils.getMatch)(rotate3dMappings); | ||
function rotate3dMatch(values) { | ||
return values.reduce(function (list, arg, i) { | ||
return list.filter(function (value) { | ||
return value[1][i] === arg; | ||
}); | ||
}, rotate3dMappings); | ||
} | ||
function rotate3d(node, values) { | ||
var nodes = node.nodes; | ||
if (values.length !== 4) { | ||
return; | ||
} | ||
if (!nodes[6]) { | ||
return; | ||
} | ||
var match = rotate3dMatch(values.slice(0, 3)); | ||
if (match.length) { | ||
node.value = match[0][0]; | ||
node.nodes = [nodes[6]]; | ||
} | ||
const { | ||
nodes | ||
} = node; | ||
const match = rotate3dMatch(values.slice(0, 3)); | ||
if (match.length) { | ||
node.value = match; | ||
node.nodes = [nodes[6]]; | ||
} | ||
} | ||
function rotateZ(node) { | ||
// rotateZ(rz) => rotate(rz) | ||
node.value = 'rotate'; | ||
function rotateZ(node, values) { | ||
if (values.length !== 1) { | ||
return; | ||
} // rotateZ(rz) => rotate(rz) | ||
node.value = 'rotate'; | ||
} | ||
function scale(node, values) { | ||
var nodes = node.nodes; | ||
if (values.length !== 2) { | ||
return; | ||
} | ||
if (!nodes[2]) { | ||
return; | ||
} | ||
var first = values[0]; | ||
var second = values[1]; | ||
// scale(sx, sy) => scale(sx) | ||
const { | ||
nodes | ||
} = node; | ||
const [first, second] = values; // scale(sx, sy) => scale(sx) | ||
if (first === second) { | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} | ||
// scale(sx, 1) => scaleX(sx) | ||
if (second === 1) { | ||
node.value = 'scaleX'; | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} | ||
// scale(1, sy) => scaleY(sy) | ||
if (first === 1) { | ||
node.value = 'scaleY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} | ||
if (first === second) { | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} // scale(sx, 1) => scaleX(sx) | ||
if (second === 1) { | ||
node.value = 'scaleX'; | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} // scale(1, sy) => scaleY(sy) | ||
if (first === 1) { | ||
node.value = 'scaleY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} | ||
} | ||
function scale3d(node, values) { | ||
var nodes = node.nodes; | ||
if (values.length !== 3) { | ||
return; | ||
} | ||
if (!nodes[4]) { | ||
return; | ||
} | ||
var first = values[0]; | ||
var second = values[1]; | ||
var third = values[2]; | ||
// scale3d(sx, 1, 1) => scaleX(sx) | ||
const { | ||
nodes | ||
} = node; | ||
const [first, second, third] = values; // scale3d(sx, 1, 1) => scaleX(sx) | ||
if (second === 1 && third === 1) { | ||
node.value = 'scaleX'; | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} | ||
// scale3d(1, sy, 1) => scaleY(sy) | ||
if (first === 1 && third === 1) { | ||
node.value = 'scaleY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} | ||
// scale3d(1, 1, sz) => scaleZ(sz) | ||
if (first === 1 && second === 1) { | ||
node.value = 'scaleZ'; | ||
node.nodes = [nodes[4]]; | ||
return; | ||
} | ||
if (second === 1 && third === 1) { | ||
node.value = 'scaleX'; | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} // scale3d(1, sy, 1) => scaleY(sy) | ||
if (first === 1 && third === 1) { | ||
node.value = 'scaleY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} // scale3d(1, 1, sz) => scaleZ(sz) | ||
if (first === 1 && second === 1) { | ||
node.value = 'scaleZ'; | ||
node.nodes = [nodes[4]]; | ||
return; | ||
} | ||
} | ||
function translate(node, values) { | ||
var nodes = node.nodes; | ||
if (values.length !== 2) { | ||
return; | ||
} | ||
if (!nodes[2]) { | ||
return; | ||
} | ||
// translate(tx, 0) => translate(tx) | ||
if (values[1] === 0) { | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} | ||
// translate(0, ty) => translateY(ty) | ||
if (values[0] === 0) { | ||
node.value = 'translateY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} | ||
const { | ||
nodes | ||
} = node; // translate(tx, 0) => translate(tx) | ||
if (values[1] === 0) { | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} // translate(0, ty) => translateY(ty) | ||
if (values[0] === 0) { | ||
node.value = 'translateY'; | ||
node.nodes = [nodes[2]]; | ||
return; | ||
} | ||
} | ||
function translate3d(node, values) { | ||
var nodes = node.nodes; | ||
// translate3d(0, 0, tz) => translateZ(tz) | ||
if (values.length !== 3) { | ||
return; | ||
} | ||
if (nodes[4] && values[0] === 0 && values[1] === 0) { | ||
node.value = 'translateZ'; | ||
node.nodes = [nodes[4]]; | ||
} | ||
const { | ||
nodes | ||
} = node; // translate3d(0, 0, tz) => translateZ(tz) | ||
if (values[0] === 0 && values[1] === 0) { | ||
node.value = 'translateZ'; | ||
node.nodes = [nodes[4]]; | ||
} | ||
} | ||
var reducers = { | ||
matrix3d: matrix3d, | ||
rotate3d: rotate3d, | ||
rotateZ: rotateZ, | ||
scale: scale, | ||
scale3d: scale3d, | ||
translate: translate, | ||
translate3d: translate3d | ||
const reducers = { | ||
matrix3d, | ||
rotate3d, | ||
rotateZ, | ||
scale, | ||
scale3d, | ||
translate, | ||
translate3d | ||
}; | ||
function normalizeReducerName(name) { | ||
const lowerCasedName = name.toLowerCase(); | ||
if (lowerCasedName === 'rotatez') { | ||
return 'rotateZ'; | ||
} | ||
return lowerCasedName; | ||
} | ||
function reduce(node) { | ||
var nodes = node.nodes; | ||
var type = node.type; | ||
var value = node.value; | ||
const { | ||
nodes, | ||
type, | ||
value | ||
} = node; | ||
const normalizedReducerName = normalizeReducerName(value); | ||
if (type === 'function' && (0, _has2.default)(reducers, value)) { | ||
reducers[value](node, nodes.reduce(getValues, [])); | ||
} | ||
return false; | ||
if (type === 'function' && (0, _has.default)(reducers, normalizedReducerName)) { | ||
reducers[normalizedReducerName](node, nodes.reduce(getValues, [])); | ||
} | ||
return false; | ||
} | ||
exports.default = _postcss2.default.plugin('postcss-reduce-transforms', function () { | ||
return function (css) { | ||
css.walkDecls(/transform$/, function (decl) { | ||
decl.value = (0, _postcssValueParser2.default)(decl.value).walk(reduce).toString(); | ||
}); | ||
}; | ||
var _default = _postcss.default.plugin('postcss-reduce-transforms', () => { | ||
return css => { | ||
const cache = {}; | ||
css.walkDecls(/transform$/i, decl => { | ||
const value = decl.value; | ||
if (!value) { | ||
return; | ||
} | ||
if (cache[value]) { | ||
decl.value = cache[value]; | ||
return; | ||
} | ||
const result = (0, _postcssValueParser.default)(value).walk(reduce).toString(); | ||
decl.value = result; | ||
cache[value] = result; | ||
}); | ||
}; | ||
}); | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports.default; |
{ | ||
"name": "postcss-reduce-transforms", | ||
"version": "1.0.4", | ||
"version": "4.0.0-nightly.2020.1.9", | ||
"description": "Reduce transform functions with PostCSS.", | ||
"main": "dist/index.js", | ||
"scripts": { | ||
"pretest": "eslint src", | ||
"prepublish": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/", | ||
"test": "ava src/__tests__", | ||
"test-012": "ava src/__tests__" | ||
"prebuild": "", | ||
"build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.js --out-dir dist --ignore \"**/__tests__/\"", | ||
"prepublish": "" | ||
}, | ||
@@ -17,18 +16,3 @@ "files": [ | ||
"license": "MIT", | ||
"devDependencies": { | ||
"ava": "^0.16.0", | ||
"babel-cli": "^6.3.17", | ||
"babel-core": "^6.3.26", | ||
"babel-plugin-add-module-exports": "^0.2.1", | ||
"babel-preset-es2015": "^6.3.13", | ||
"babel-preset-es2015-loose": "^7.0.0", | ||
"babel-preset-stage-0": "^6.3.13", | ||
"babel-register": "^6.9.0", | ||
"del-cli": "^0.2.0", | ||
"eslint": "^3.0.0", | ||
"eslint-config-cssnano": "^3.0.0", | ||
"eslint-plugin-babel": "^3.3.0", | ||
"eslint-plugin-import": "^2.0.1" | ||
}, | ||
"homepage": "https://github.com/ben-eb/postcss-reduce-transforms", | ||
"homepage": "https://github.com/cssnano/cssnano", | ||
"author": { | ||
@@ -39,14 +23,15 @@ "name": "Ben Briggs", | ||
}, | ||
"repository": "ben-eb/postcss-reduce-transforms", | ||
"repository": "cssnano/cssnano", | ||
"dependencies": { | ||
"has": "^1.0.1", | ||
"postcss": "^5.0.8", | ||
"postcss-value-parser": "^3.0.1" | ||
"cssnano-utils": "nightly", | ||
"has": "^1.0.3", | ||
"postcss": "^7.0.16", | ||
"postcss-value-parser": "^3.3.1" | ||
}, | ||
"ava": { | ||
"require": "babel-register" | ||
"bugs": { | ||
"url": "https://github.com/cssnano/cssnano/issues" | ||
}, | ||
"eslintConfig": { | ||
"extends": "cssnano" | ||
"engines": { | ||
"node": ">=10.13.0" | ||
} | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
# [postcss][postcss]-reduce-transforms [][ci] [][npm] [][deps] | ||
# [postcss][postcss]-reduce-transforms | ||
@@ -39,6 +39,5 @@ > Reduce transform functions with PostCSS. | ||
## Contributing | ||
## Contributors | ||
Pull requests are welcome. If you add functionality, then please add unit tests | ||
to cover it. | ||
See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md). | ||
@@ -49,5 +48,2 @@ ## License | ||
[ci]: https://travis-ci.org/ben-eb/postcss-reduce-transforms | ||
[deps]: https://gemnasium.com/ben-eb/postcss-reduce-transforms | ||
[npm]: http://badge.fury.io/js/postcss-reduce-transforms | ||
[postcss]: https://github.com/postcss/postcss |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
8794
0.31%0
-100%196
21.74%0
-100%4
33.33%4
-20%48
-7.69%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated