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.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							66 lines
						
					
					
						
							1.5 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
    value: true | 
						|
}); | 
						|
exports.default = plugin; | 
						|
function plugin(targets, nodeTypes, detect) { | 
						|
    class Plugin { | 
						|
        constructor(result) { | 
						|
            this.nodes = []; | 
						|
            this.result = result; | 
						|
            this.targets = targets; | 
						|
            this.nodeTypes = nodeTypes; | 
						|
        } | 
						|
 | 
						|
        push(node, metadata) { | 
						|
            node._stylehacks = Object.assign({}, metadata, { | 
						|
                message: `Bad ${metadata.identifier}: ${metadata.hack}`, | 
						|
                browsers: this.targets | 
						|
            }); | 
						|
 | 
						|
            this.nodes.push(node); | 
						|
        } | 
						|
 | 
						|
        any(node) { | 
						|
            if (~this.nodeTypes.indexOf(node.type)) { | 
						|
                detect.apply(this, arguments); | 
						|
 | 
						|
                return !!node._stylehacks; | 
						|
            } | 
						|
 | 
						|
            return false; | 
						|
        } | 
						|
 | 
						|
        detectAndResolve(...args) { | 
						|
            this.nodes = []; | 
						|
 | 
						|
            detect.apply(this, args); | 
						|
 | 
						|
            return this.resolve(); | 
						|
        } | 
						|
 | 
						|
        detectAndWarn(...args) { | 
						|
            this.nodes = []; | 
						|
 | 
						|
            detect.apply(this, args); | 
						|
 | 
						|
            return this.warn(); | 
						|
        } | 
						|
 | 
						|
        resolve() { | 
						|
            return this.nodes.forEach(node => node.remove()); | 
						|
        } | 
						|
 | 
						|
        warn() { | 
						|
            return this.nodes.forEach(node => { | 
						|
                const { message, browsers, identifier, hack } = node._stylehacks; | 
						|
 | 
						|
                return node.warn(this.result, message, { browsers, identifier, hack }); | 
						|
            }); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    return Plugin; | 
						|
} | 
						|
module.exports = exports["default"]; |