postcss-normalize-url
Advanced tools
Comparing version
@@ -1,101 +0,115 @@ | ||
'use strict'; | ||
"use strict"; | ||
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; }; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _path = require('path'); | ||
var _path = _interopRequireDefault(require("path")); | ||
var _path2 = _interopRequireDefault(_path); | ||
var _postcss = _interopRequireDefault(require("postcss")); | ||
var _postcss = require('postcss'); | ||
var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser")); | ||
var _postcss2 = _interopRequireDefault(_postcss); | ||
var _normalizeUrl = _interopRequireDefault(require("normalize-url")); | ||
var _postcssValueParser = require('postcss-value-parser'); | ||
var _isAbsoluteUrl = _interopRequireDefault(require("is-absolute-url")); | ||
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var _normalizeUrl = require('normalize-url'); | ||
const multiline = /\\[\r\n]/; // eslint-disable-next-line no-useless-escape | ||
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl); | ||
const escapeChars = /([\s\(\)"'])/g; | ||
var _isAbsoluteUrl = require('is-absolute-url'); | ||
function convert(url, options) { | ||
if ((0, _isAbsoluteUrl.default)(url) || url.startsWith('//')) { | ||
let normalizedURL = null; | ||
var _isAbsoluteUrl2 = _interopRequireDefault(_isAbsoluteUrl); | ||
try { | ||
normalizedURL = (0, _normalizeUrl.default)(url, options); | ||
} catch (e) { | ||
normalizedURL = url; | ||
} | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
return normalizedURL; | ||
} // `path.normalize` always returns backslashes on Windows, need replace in `/` | ||
var multiline = /\\[\r\n]/; | ||
var escapeChars = /([\s\(\)"'])/g; | ||
function convert(url, options) { | ||
if ((0, _isAbsoluteUrl2.default)(url) || !url.indexOf('//')) { | ||
return (0, _normalizeUrl2.default)(url, options); | ||
} | ||
return _path2.default.normalize(url).replace(new RegExp('\\' + _path2.default.sep, 'g'), '/'); | ||
return _path.default.normalize(url).replace(new RegExp('\\' + _path.default.sep, 'g'), '/'); | ||
} | ||
function transformNamespace(rule) { | ||
rule.params = (0, _postcssValueParser2.default)(rule.params).walk(function (node) { | ||
if (node.type === 'function' && node.value === 'url' && node.nodes.length) { | ||
node.type = 'string'; | ||
node.quote = node.nodes[0].quote || '"'; | ||
node.value = node.nodes[0].value; | ||
} | ||
if (node.type === 'string') { | ||
node.value = node.value.trim(); | ||
} | ||
return false; | ||
}).toString(); | ||
rule.params = (0, _postcssValueParser.default)(rule.params).walk(node => { | ||
if (node.type === 'function' && node.value.toLowerCase() === 'url' && node.nodes.length) { | ||
node.type = 'string'; | ||
node.quote = node.nodes[0].quote || '"'; | ||
node.value = node.nodes[0].value; | ||
} | ||
if (node.type === 'string') { | ||
node.value = node.value.trim(); | ||
} | ||
return false; | ||
}).toString(); | ||
} | ||
function transformDecl(decl, opts) { | ||
decl.value = (0, _postcssValueParser2.default)(decl.value).walk(function (node) { | ||
if (node.type !== 'function' || node.value !== 'url' || !node.nodes.length) { | ||
return false; | ||
} | ||
decl.value = (0, _postcssValueParser.default)(decl.value).walk(node => { | ||
if (node.type !== 'function' || node.value.toLowerCase() !== 'url' || !node.nodes.length) { | ||
return false; | ||
} | ||
var url = node.nodes[0]; | ||
var escaped = void 0; | ||
let url = node.nodes[0]; | ||
let escaped; | ||
node.before = node.after = ''; | ||
url.value = url.value.trim().replace(multiline, ''); // Skip empty URLs | ||
// Empty URL function equals request to current stylesheet where it is declared | ||
node.before = node.after = ''; | ||
url.value = url.value.trim().replace(multiline, ''); | ||
if (url.value.length === 0) { | ||
url.quote = ''; | ||
return false; | ||
} | ||
if (~url.value.indexOf('data:image/') || ~url.value.indexOf('data:application/') || ~url.value.indexOf('data:font/')) { | ||
return false; | ||
} | ||
if (/^data:(.*)?,/i.test(url.value)) { | ||
return false; | ||
} | ||
if (!~url.value.indexOf('chrome-extension')) { | ||
url.value = convert(url.value, opts); | ||
} | ||
if (!/^.+-extension:\//i.test(url.value)) { | ||
url.value = convert(url.value, opts); | ||
} | ||
if (escapeChars.test(url.value)) { | ||
escaped = url.value.replace(escapeChars, '\\$1'); | ||
if (escaped.length < url.value.length + (url.type === 'string' ? 2 : 0)) { | ||
url.value = escaped; | ||
url.type = 'word'; | ||
} | ||
} else { | ||
url.type = 'word'; | ||
} | ||
if (escapeChars.test(url.value) && url.type === 'string') { | ||
escaped = url.value.replace(escapeChars, '\\$1'); | ||
return false; | ||
}).toString(); | ||
if (escaped.length < url.value.length + 2) { | ||
url.value = escaped; | ||
url.type = 'word'; | ||
} | ||
} else { | ||
url.type = 'word'; | ||
} | ||
return false; | ||
}).toString(); | ||
} | ||
module.exports = _postcss2.default.plugin('postcss-normalize-url', function (opts) { | ||
opts = _extends({ | ||
normalizeProtocol: false, | ||
stripFragment: false, | ||
stripWWW: true | ||
}, opts); | ||
var _default = _postcss.default.plugin('postcss-normalize-url', opts => { | ||
opts = Object.assign({}, { | ||
normalizeProtocol: false, | ||
stripFragment: false, | ||
stripWWW: false | ||
}, opts); | ||
return css => { | ||
css.walk(node => { | ||
if (node.type === 'decl') { | ||
return transformDecl(node, opts); | ||
} else if (node.type === 'atrule' && node.name.toLowerCase() === 'namespace') { | ||
return transformNamespace(node); | ||
} | ||
}); | ||
}; | ||
}); | ||
return function (css) { | ||
css.walk(function (node) { | ||
if (node.type === 'decl') { | ||
return transformDecl(node, opts); | ||
} else if (node.type === 'atrule' && node.name === 'namespace') { | ||
return transformNamespace(node); | ||
} | ||
}); | ||
}; | ||
}); | ||
exports.default = _default; | ||
module.exports = exports.default; |
{ | ||
"name": "postcss-normalize-url", | ||
"version": "3.0.8", | ||
"version": "4.0.0-nightly.2020.1.9", | ||
"description": "Normalize URLs with PostCSS", | ||
@@ -11,6 +11,5 @@ "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": "" | ||
}, | ||
@@ -28,23 +27,8 @@ "keywords": [ | ||
"dependencies": { | ||
"is-absolute-url": "^2.0.0", | ||
"normalize-url": "^1.4.0", | ||
"postcss": "^5.0.14", | ||
"postcss-value-parser": "^3.2.3" | ||
"is-absolute-url": "^2.1.0", | ||
"normalize-url": "^3.3.0", | ||
"postcss": "^7.0.16", | ||
"postcss-value-parser": "^3.3.1" | ||
}, | ||
"devDependencies": { | ||
"ava": "^0.17.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-normalize-url", | ||
"homepage": "https://github.com/cssnano/cssnano", | ||
"author": { | ||
@@ -55,9 +39,9 @@ "name": "Ben Briggs", | ||
}, | ||
"repository": "ben-eb/postcss-normalize-url", | ||
"eslintConfig": { | ||
"extends": "cssnano" | ||
"repository": "cssnano/cssnano", | ||
"bugs": { | ||
"url": "https://github.com/cssnano/cssnano/issues" | ||
}, | ||
"ava": { | ||
"require": "babel-register" | ||
"engines": { | ||
"node": ">=10.13.0" | ||
} | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
# [postcss][postcss]-normalize-url [][ci] [][npm] [][deps] | ||
# [postcss][postcss]-normalize-url | ||
@@ -44,8 +44,7 @@ > [Normalize URLs](https://github.com/sindresorhus/normalize-url) with PostCSS. | ||
Please see the [normalize-url documentation][docs]. By default, | ||
`normalizeProtocol` & `stripFragment` are set to `false`; `stripWWW` to `true`. | ||
`normalizeProtocol`, `stripFragment` & `stripWWW` are set to `false`. | ||
## 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). | ||
@@ -57,6 +56,2 @@ ## License | ||
[docs]: https://github.com/sindresorhus/normalize-url#options | ||
[ci]: https://travis-ci.org/ben-eb/postcss-normalize-url | ||
[deps]: https://gemnasium.com/ben-eb/postcss-normalize-url | ||
[npm]: http://badge.fury.io/js/postcss-normalize-url | ||
[postcss]: https://github.com/postcss/postcss |
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
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
0
-100%87
14.47%0
-100%6376
-32.87%4
-20%56
-8.2%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated