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.
		
		
		
		
		
			
		
			
				
					
					
						
							124 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							124 lines
						
					
					
						
							3.6 KiB
						
					
					
				"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"]; |