"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;