UNPKG

eslint-plugin-ecmascript-compat

Version:

ESLint plugin for checking JavaScript code compatibility with target browsers and Node.js versions

53 lines (51 loc) 1.82 kB
const compatData = require('@mdn/browser-compat-data'); const esPlugin = require('eslint-plugin-es-x'); module.exports = [ { ruleConfig: { definition: esPlugin.rules['no-array-string-prototype-at'], options: [{ aggressive: true }], }, compatFeatures: [ compatData.javascript.builtins.Array.at, compatData.javascript.builtins.TypedArray.at, compatData.javascript.builtins.String.at, ], polyfill: '{Array,String,TypedArray}.prototype.at', }, { ruleConfig: { definition: esPlugin.rules['no-class-fields'] }, compatFeatures: [ compatData.javascript.classes.public_class_fields, compatData.javascript.classes.private_class_fields, compatData.javascript.classes.static_class_fields, compatData.javascript.classes.private_class_methods, ], }, { ruleConfig: { definition: esPlugin.rules['no-class-static-block'] }, compatFeatures: [compatData.javascript.classes.static_initialization_blocks], }, { ruleConfig: { definition: esPlugin.rules['no-error-cause'] }, compatFeatures: [compatData.javascript.builtins.Error.Error.options_cause_parameter], polyfill: 'Error.cause', }, { ruleConfig: { definition: esPlugin.rules['no-object-hasown'] }, compatFeatures: [compatData.javascript.builtins.Object.hasOwn], polyfill: 'Object.hasOwn', }, { ruleConfig: { definition: esPlugin.rules['no-private-in'] }, compatFeatures: [compatData.javascript.classes.private_class_fields_in], }, { ruleConfig: { definition: esPlugin.rules['no-regexp-d-flag'] }, compatFeatures: [compatData.javascript.builtins.RegExp.hasIndices], }, { ruleConfig: { definition: esPlugin.rules['no-top-level-await'] }, compatFeatures: [compatData.javascript.operators.await.top_level], }, ];