jquery-migrate
Version:
Migrate older jQuery code to jQuery 3.0+
202 lines (186 loc) • 3.8 kB
JavaScript
import jqueryConfig from "eslint-config-jquery";
import importPlugin from "eslint-plugin-import";
import globals from "globals";
export default [
{
// Only global ignores will bypass the parser
// and avoid JS parsing errors
// See https://github.com/eslint/eslint/discussions/17412
ignores: [ "external", "null.json", "simple.json" ]
},
{
files: [ "eslint.config.js", "build/**" ],
languageOptions: {
ecmaVersion: "latest",
globals: {
...globals.node
}
},
rules: jqueryConfig.rules
},
{
files: [ "src/**" ],
plugins: {
import: importPlugin
},
languageOptions: {
ecmaVersion: 2015,
// The browser env is not enabled on purpose so that code takes
// all browser-only globals from window instead of assuming
// they're available as globals. This makes it possible to use
// jQuery with tools like jsdom which provide a custom window
// implementation.
globals: {
jQuery: false,
window: false
}
},
rules: {
...jqueryConfig.rules,
"import/extensions": [ "error", "always" ],
"import/no-cycle": "error",
indent: [
"error",
"tab",
{
outerIIFEBody: 0,
// This makes it so code within if statements checking
// for jQuery features is not indented.
ignoredNodes: [ "Program > IfStatement > *" ]
}
],
"one-var": [ "error", { var: "always" } ],
strict: [ "error", "function" ]
}
},
{
files: [ "src/wrapper.js" ],
languageOptions: {
sourceType: "script",
globals: {
jQuery: false,
define: false,
module: false
}
},
rules: {
"no-unused-vars": "off",
indent: [
"error",
"tab",
{
// This makes it so code within the wrapper is not indented.
ignoredNodes: [
"Program > ExpressionStatement > CallExpression > :last-child > *"
]
}
]
}
},
{
files: [ "test/unit/**" ],
languageOptions: {
ecmaVersion: 2015,
sourceType: "script",
globals: {
...globals.browser,
jQuery: false,
QUnit: false,
url: false,
expectWarning: false,
expectNoWarning: false,
compareVersions: false,
jQueryVersionSince: false,
startIframeTest: false,
TestManager: false
}
},
rules: {
...jqueryConfig.rules,
"no-unused-vars": [
"error",
{ args: "after-used", argsIgnorePattern: "^_" }
]
}
},
{
files: [ "test/data/**" ],
ignores: [ "test/data/jquery-*.js", "test/data/qunit-start.js" ],
languageOptions: {
ecmaVersion: 2015,
sourceType: "script",
globals: {
...globals.browser,
global: false,
jQuery: false,
QUnit: false,
url: true,
compareVersions: true,
expectWarning: true,
expectNoWarning: true,
startIframeTest: true,
TestManager: true
}
},
rules: {
...jqueryConfig.rules,
strict: [ "error", "global" ]
}
},
{
files: [ "test/runner/**" ],
languageOptions: {
ecmaVersion: "latest",
globals: {
...globals.node
},
sourceType: "module"
},
rules: {
...jqueryConfig.rules
}
},
{
files: [ "test/runner/listeners.js" ],
languageOptions: {
ecmaVersion: 5,
globals: {
...globals.browser,
QUnit: false,
Symbol: false
},
sourceType: "script"
},
rules: {
...jqueryConfig.rules,
strict: [ "error", "function" ]
}
},
{
files: [ "dist/jquery-migrate.js" ],
languageOptions: {
globals: {
define: false,
jQuery: false,
module: false,
Proxy: false,
Reflect: false,
window: false
}
},
rules: {
...jqueryConfig.rules,
strict: [ "error", "function" ],
// These are fine for the built version
"no-multiple-empty-lines": "off",
"one-var": "off"
}
},
{
files: [ "dist/**" ],
languageOptions: {
ecmaVersion: 5,
sourceType: "script"
}
}
];