all files / src/optimizations/ RewriteIdents.js

95.65% Statements 22/23
81.82% Branches 9/11
100% Functions 2/2
95.65% Lines 22/23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43          45× 42× 33×   42×                       42×        
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const template_api_1 = require("@opticss/template-api");
const RewriteRuleIdents_1 = require("../Actions/actions/RewriteRuleIdents");
const cssIntrospection_1 = require("../util/cssIntrospection");
class RewriteIdents {
    constructor(options, templateOptions) {
        this.name = "rewriteIdents";
        this.initializers = ["initKnownIdents"];
        this.rewriteOptions = template_api_1.rewriteOptions(options.rewriteIdents, templateOptions.rewriteIdents);
    }
    optimizeAllFiles(pass, _analyses, files) {
        let allIdents = new Array();
        let currentIdents = undefined;
        cssIntrospection_1.eachFileIdent(files, pass.cache, this.rewriteOptions, (node, rule, selector) => {
            if (currentIdents && (currentIdents.rule !== rule) || !currentIdents) {
                if (currentIdents) {
                    allIdents.push(currentIdents);
                }
                currentIdents = {
                    rule,
                    selectors: [selector],
                    idents: [node],
                };
            }
            else {
                let lastSelector = currentIdents.selectors[currentIdents.selectors.length - 1];
                Iif (lastSelector !== selector) {
                    currentIdents.selectors.push(selector);
                }
                currentIdents.idents.push(node);
            }
        });
        Eif (currentIdents) {
            allIdents.push(currentIdents);
        }
        allIdents.forEach(ident => {
            pass.actions.perform(new RewriteRuleIdents_1.RewriteRuleIdents(pass, ident));
        });
    }
}
exports.RewriteIdents = RewriteIdents;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV3cml0ZUlkZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcHRpbWl6YXRpb25zL1Jld3JpdGVJZGVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3REFBOEk7QUFFOUksNEVBQXFGO0FBS3JGLCtEQUF5RDtBQUl6RDtJQUtFLFlBQVksT0FBdUIsRUFBRSxlQUEyQztRQUpoRixTQUFJLEdBQUcsZUFBZSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQThCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUk1RCxJQUFJLENBQUMsY0FBYyxHQUFHLDZCQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUNELGdCQUFnQixDQUNkLElBQXNCLEVBQ3RCLFNBQXVELEVBQ3ZELEtBQXNCO1FBR3RCLElBQUksU0FBUyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDeEMsSUFBSSxhQUFhLEdBQTJCLFNBQVMsQ0FBQztRQUN0RCxnQ0FBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzdFLElBQUksYUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEUsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQy9CO2dCQUNELGFBQWEsR0FBRztvQkFDZCxJQUFJO29CQUNKLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO2lCQUNmLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLFlBQVksR0FDZCxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLFlBQVksS0FBSyxRQUFRLEVBQUU7b0JBQzdCLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN4QztnQkFDRCxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxhQUFhLEVBQUU7WUFDakIsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvQjtRQUVELFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNDRCxzQ0EyQ0MifQ==