You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _postcss = require("postcss");
var _commentRemover = require("./lib/commentRemover");
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;
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]; }
const result = (0, _commentParser2.default)(source).filter(([type]) => type);
matcherCache[source] = result;
return result; }
function replaceComments(source, separator = " ") { const key = source + "@|@" + separator;
if (replacerCache[key]) { return replacerCache[key]; }
const parsed = (0, _commentParser2.default)(source).reduce((value, [type, start, end]) => { const contents = source.slice(start, end);
if (!type) { return value + contents; }
if (remover.canRemove(contents)) { return value + separator; }
return `${value}/*${contents}*/`; }, "");
const result = space(parsed).join(" ");
replacerCache[key] = result;
return result; }
return css => { css.walk(node => { if (node.type === "comment" && remover.canRemove(node.text)) { node.remove();
return; }
if (node.raws.between) { node.raws.between = replaceComments(node.raws.between); }
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); }
node.raws.value = null; }
if (node.raws.important) { node.raws.important = replaceComments(node.raws.important);
const b = matchesComments(node.raws.important);
node.raws.important = b.length ? node.raws.important : "!important"; }
return; }
if (node.type === "rule" && node.raws.selector && node.raws.selector.raw) { node.raws.selector.raw = replaceComments(node.raws.selector.raw, "");
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"];
|