UNPKG

eslint-plugin-compat

Version:
70 lines (62 loc) 2.15 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['exports', 'babel-runtime/core-js/set', './providers/index'], factory); } else if (typeof exports !== "undefined") { factory(exports, require('babel-runtime/core-js/set'), require('./providers/index')); } else { var mod = { exports: {} }; factory(mod.exports, global.set, global.index); global.Lint = mod.exports; } })(this, function (exports, _set, _index) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateErrorName = generateErrorName; exports.default = Lint; var _set2 = _interopRequireDefault(_set); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateErrorName(_node) { if (_node.name) return _node.name; if (_node.property) return _node.object + '.' + _node.property + '()'; return _node.object; } /** * Return false if a if a rule fails * * TODO: Eventually, targets will default to 'modern', ('chrome@50', safari@8) * See https://github.com/amilajack/eslint-plugin-compat/wiki#release-200 */ function Lint(eslintNode) { var targets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['chrome', 'firefox', 'safari', 'edge']; var polyfills = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new _set2.default(); // Find the corresponding rules for a eslintNode by it's ASTNodeType var failingRule = _index.rules.filter(function (rule // Validate ASTNodeType ) { return rule.ASTNodeType === eslintNode.type && // Check if polyfill is provided !polyfills.has(rule.id); }) // Find the first failing rule .find(function (rule) { return !rule.isValid(rule, eslintNode, targets); }); return failingRule ? { rule: failingRule, isValid: false, unsupportedTargets: failingRule.getUnsupportedTargets(failingRule, targets) } : { rule: {}, unsupportedTargets: [], isValid: true }; } });