postcss-discard-comments
Advanced tools
Comparing version
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _postcss = require("postcss"); | ||
var _commentRemover = _interopRequireDefault(require("./lib/commentRemover")); | ||
var _commentRemover = require("./lib/commentRemover"); | ||
var _commentParser = _interopRequireDefault(require("./lib/commentParser")); | ||
var _commentRemover2 = _interopRequireDefault(_commentRemover); | ||
var _commentParser = require("./lib/commentParser"); | ||
var _commentParser2 = _interopRequireDefault(_commentParser); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const { space } = _postcss.list; | ||
function pluginCreator(opts = {}) { | ||
const remover = new _commentRemover.default(opts); | ||
const matcherCache = {}; | ||
const replacerCache = {}; | ||
exports.default = (0, _postcss.plugin)("postcss-discard-comments", (opts = {}) => { | ||
const remover = new _commentRemover2.default(opts); | ||
const matcherCache = {}; | ||
const replacerCache = {}; | ||
function matchesComments(source) { | ||
if (matcherCache[source]) { | ||
return matcherCache[source]; | ||
} | ||
function matchesComments(source) { | ||
if (matcherCache[source]) { | ||
return matcherCache[source]; | ||
} | ||
const result = (0, _commentParser.default)(source).filter(([type]) => type); | ||
matcherCache[source] = result; | ||
return result; | ||
} | ||
const result = (0, _commentParser2.default)(source).filter(([type]) => type); | ||
function replaceComments(source, space, separator = ' ') { | ||
const key = source + '@|@' + separator; | ||
matcherCache[source] = result; | ||
return result; | ||
if (replacerCache[key]) { | ||
return replacerCache[key]; | ||
} | ||
function replaceComments(source, separator = " ") { | ||
const key = source + "@|@" + separator; | ||
const parsed = (0, _commentParser.default)(source).reduce((value, [type, start, end]) => { | ||
const contents = source.slice(start, end); | ||
if (replacerCache[key]) { | ||
return replacerCache[key]; | ||
} | ||
if (!type) { | ||
return value + contents; | ||
} | ||
const parsed = (0, _commentParser2.default)(source).reduce((value, [type, start, end]) => { | ||
const contents = source.slice(start, end); | ||
if (remover.canRemove(contents)) { | ||
return value + separator; | ||
} | ||
if (!type) { | ||
return value + contents; | ||
} | ||
return `${value}/*${contents}*/`; | ||
}, ''); | ||
const result = space(parsed).join(' '); | ||
replacerCache[key] = result; | ||
return result; | ||
} | ||
if (remover.canRemove(contents)) { | ||
return value + separator; | ||
} | ||
return { | ||
postcssPlugin: 'postcss-discard-comments', | ||
return `${value}/*${contents}*/`; | ||
}, ""); | ||
OnceExit(css, { | ||
list | ||
}) { | ||
css.walk(node => { | ||
if (node.type === 'comment' && remover.canRemove(node.text)) { | ||
node.remove(); | ||
return; | ||
} | ||
const result = space(parsed).join(" "); | ||
if (node.raws.between) { | ||
node.raws.between = replaceComments(node.raws.between, list.space); | ||
} | ||
replacerCache[key] = result; | ||
return result; | ||
} | ||
return css => { | ||
css.walk(node => { | ||
if (node.type === "comment" && remover.canRemove(node.text)) { | ||
node.remove(); | ||
return; | ||
if (node.type === 'decl') { | ||
if (node.raws.value && node.raws.value.raw) { | ||
if (node.raws.value.value === node.value) { | ||
node.value = replaceComments(node.raws.value.raw, list.space); | ||
} else { | ||
node.value = replaceComments(node.value, list.space); | ||
} | ||
if (node.raws.between) { | ||
node.raws.between = replaceComments(node.raws.between); | ||
} | ||
node.raws.value = null; | ||
} | ||
if (node.type === "decl") { | ||
if (node.raws.value && node.raws.value.raw) { | ||
if (node.raws.value.value === node.value) { | ||
node.value = replaceComments(node.raws.value.raw); | ||
} else { | ||
node.value = replaceComments(node.value); | ||
} | ||
if (node.raws.important) { | ||
node.raws.important = replaceComments(node.raws.important, list.space); | ||
const b = matchesComments(node.raws.important); | ||
node.raws.important = b.length ? node.raws.important : '!important'; | ||
} | ||
node.raws.value = null; | ||
} | ||
return; | ||
} | ||
if (node.raws.important) { | ||
node.raws.important = replaceComments(node.raws.important); | ||
if (node.type === 'rule' && node.raws.selector && node.raws.selector.raw) { | ||
node.raws.selector.raw = replaceComments(node.raws.selector.raw, list.space, ''); | ||
return; | ||
} | ||
const b = matchesComments(node.raws.important); | ||
if (node.type === 'atrule') { | ||
if (node.raws.afterName) { | ||
const commentsReplaced = replaceComments(node.raws.afterName, list.space); | ||
node.raws.important = b.length ? node.raws.important : "!important"; | ||
} | ||
return; | ||
if (!commentsReplaced.length) { | ||
node.raws.afterName = commentsReplaced + ' '; | ||
} else { | ||
node.raws.afterName = ' ' + commentsReplaced + ' '; | ||
} | ||
} | ||
if (node.type === "rule" && node.raws.selector && node.raws.selector.raw) { | ||
node.raws.selector.raw = replaceComments(node.raws.selector.raw, ""); | ||
if (node.raws.params && node.raws.params.raw) { | ||
node.raws.params.raw = replaceComments(node.raws.params.raw, list.space); | ||
} | ||
} | ||
}); | ||
} | ||
return; | ||
} | ||
}; | ||
} | ||
if (node.type === "atrule") { | ||
if (node.raws.afterName) { | ||
const commentsReplaced = replaceComments(node.raws.afterName); | ||
if (!commentsReplaced.length) { | ||
node.raws.afterName = commentsReplaced + " "; | ||
} else { | ||
node.raws.afterName = " " + commentsReplaced + " "; | ||
} | ||
} | ||
if (node.raws.params && node.raws.params.raw) { | ||
node.raws.params.raw = replaceComments(node.raws.params.raw); | ||
} | ||
} | ||
}); | ||
}; | ||
}); | ||
module.exports = exports["default"]; | ||
pluginCreator.postcss = true; | ||
var _default = pluginCreator; | ||
exports.default = _default; | ||
module.exports = exports.default; |
@@ -1,31 +0,32 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = commentParser; | ||
function commentParser(input) { | ||
const tokens = []; | ||
const length = input.length; | ||
let pos = 0; | ||
let next; | ||
const tokens = []; | ||
const length = input.length; | ||
let pos = 0; | ||
let next; | ||
while (pos < length) { | ||
next = input.indexOf('/*', pos); | ||
while (pos < length) { | ||
next = input.indexOf('/*', pos); | ||
if (~next) { | ||
tokens.push([0, pos, next]); | ||
pos = next; | ||
next = input.indexOf('*/', pos + 2); | ||
tokens.push([1, pos + 2, next]); | ||
pos = next + 2; | ||
} else { | ||
tokens.push([0, pos, length]); | ||
pos = length; | ||
} | ||
if (~next) { | ||
tokens.push([0, pos, next]); | ||
pos = next; | ||
next = input.indexOf('*/', pos + 2); | ||
tokens.push([1, pos + 2, next]); | ||
pos = next + 2; | ||
} else { | ||
tokens.push([0, pos, length]); | ||
pos = length; | ||
} | ||
} | ||
return tokens; | ||
}; | ||
module.exports = exports['default']; | ||
return tokens; | ||
} | ||
module.exports = exports.default; |
@@ -1,32 +0,35 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
function CommentRemover(options) { | ||
this.options = options; | ||
this.options = options; | ||
} | ||
CommentRemover.prototype.canRemove = function (comment) { | ||
const remove = this.options.remove; | ||
const remove = this.options.remove; | ||
if (remove) { | ||
return remove(comment); | ||
} else { | ||
const isImportant = comment.indexOf('!') === 0; | ||
if (remove) { | ||
return remove(comment); | ||
} else { | ||
const isImportant = comment.indexOf('!') === 0; | ||
if (!isImportant) { | ||
return true; | ||
} | ||
if (!isImportant) { | ||
return true; | ||
} | ||
if (this.options.removeAll || this._hasFirst) { | ||
return true; | ||
} else if (this.options.removeAllButFirst && !this._hasFirst) { | ||
this._hasFirst = true; | ||
return false; | ||
} | ||
if (this.options.removeAll || this._hasFirst) { | ||
return true; | ||
} else if (this.options.removeAllButFirst && !this._hasFirst) { | ||
this._hasFirst = true; | ||
return false; | ||
} | ||
} | ||
}; | ||
exports.default = CommentRemover; | ||
module.exports = exports['default']; | ||
var _default = CommentRemover; | ||
exports.default = _default; | ||
module.exports = exports.default; |
{ | ||
"name": "postcss-discard-comments", | ||
"version": "4.0.2", | ||
"version": "5.0.0-alpha.0", | ||
"description": "Discard comments in your CSS files with PostCSS.", | ||
@@ -11,3 +11,5 @@ "main": "dist/index.js", | ||
"scripts": { | ||
"prepublish": "cross-env BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/" | ||
"prebuild": "del-cli dist", | ||
"build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.js --out-dir dist --ignore \"**/__tests__/\"", | ||
"prepublish": "yarn build" | ||
}, | ||
@@ -21,8 +23,2 @@ "keywords": [ | ||
"license": "MIT", | ||
"devDependencies": { | ||
"babel-cli": "^6.0.0", | ||
"cross-env": "^5.0.0", | ||
"postcss-scss": "^2.0.0", | ||
"postcss-simple-vars": "^5.0.1" | ||
}, | ||
"homepage": "https://github.com/cssnano/cssnano", | ||
@@ -35,5 +31,2 @@ "author": { | ||
"repository": "cssnano/cssnano", | ||
"dependencies": { | ||
"postcss": "^7.0.0" | ||
}, | ||
"bugs": { | ||
@@ -43,4 +36,11 @@ "url": "https://github.com/cssnano/cssnano/issues" | ||
"engines": { | ||
"node": ">=6.9.0" | ||
} | ||
"node": "^10 || ^12 || >=14.0" | ||
}, | ||
"devDependencies": { | ||
"postcss": "^8.2.1" | ||
}, | ||
"peerDependencies": { | ||
"postcss": "^8.2.1" | ||
}, | ||
"gitHead": "023c532464a06ccea2951fd6e5d2949b3b29e7bd" | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a 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
10453
10.65%1
-75%7
16.67%144
5.11%1
Infinity%1
Infinity%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed