Build: Test on iOS 18, no longer test on iOS 15
[jquery.git] / eslint.config.js
blob575c93fa4b0dec5f6f1a80cbee5dbb58c2c9dcb9
1 import jqueryConfig from "eslint-config-jquery";
2 import importPlugin from "eslint-plugin-import";
3 import globals from "globals";
5 export default [
8 // Only global ignores will bypass the parser
9 // and avoid JS parsing errors
10 // See https://github.com/eslint/eslint/discussions/17412
11 ignores: [
12 "external",
13 "tmp",
14 "test/data/json_obj.js",
15 "test/data/jquery-*.js"
19 // Source
21 files: [ "src/**" ],
22 plugins: {
23 import: importPlugin
25 languageOptions: {
26 ecmaVersion: 2015,
28 // The browser env is not enabled on purpose so that code takes
29 // all browser-only globals from window instead of assuming
30 // they're available as globals. This makes it possible to use
31 // jQuery with tools like jsdom which provide a custom window
32 // implementation.
33 globals: {
34 window: false
37 rules: {
38 ...jqueryConfig.rules,
39 "import/extensions": [ "error", "always" ],
40 "import/no-cycle": "error",
42 // TODO: Enable this rule when eslint-plugin-import supports
43 // it when using flat config.
44 // See https://github.com/import-js/eslint-plugin-import/issues/2556
46 // "import/no-unused-modules": [
47 // "error",
48 // {
49 // unusedExports: true,
51 // // When run via WebStorm, the root path against which these paths
52 // // are resolved is the path where this ESLint config file lies,
53 // // i.e. `src`. When run via the command line, it's usually the root
54 // // folder of the jQuery repository. This pattern intends to catch both.
55 // // Note that we cannot specify two patterns here:
56 // // [ "src/*.js", "*.js" ]
57 // // as they're analyzed individually and the rule crashes if a pattern
58 // // cannot be matched.
59 // ignoreExports: [ "{src/,}*.js" ]
60 // }
61 // ],
62 indent: [
63 "error",
64 "tab",
66 outerIIFEBody: 0
69 "no-implicit-globals": "error",
70 "no-unused-vars": [
71 "error",
72 { caughtErrorsIgnorePattern: "^_" }
74 "one-var": [ "error", { var: "always" } ],
75 strict: [ "error", "function" ]
80 files: [
81 "src/wrapper.js",
82 "src/wrapper-esm.js",
83 "src/wrapper-factory.js",
84 "src/wrapper-factory-esm.js"
86 languageOptions: {
87 globals: {
88 jQuery: false
91 rules: {
92 "no-unused-vars": "off",
93 indent: [
94 "error",
95 "tab",
98 // This makes it so code within the wrapper is not indented.
99 ignoredNodes: [
100 "Program > FunctionDeclaration > *"
108 files: [
109 "src/wrapper.js",
110 "src/wrapper-factory.js"
112 languageOptions: {
113 sourceType: "script",
114 globals: {
115 module: false
121 files: [ "src/wrapper.js" ],
122 rules: {
123 indent: [
124 "error",
125 "tab",
128 // This makes it so code within the wrapper is not indented.
129 ignoredNodes: [
130 "Program > ExpressionStatement > CallExpression > :last-child > *"
138 files: [ "src/exports/amd.js" ],
139 languageOptions: {
140 globals: {
141 define: false
146 // Tests
148 files: [
149 "test/*",
150 "test/data/**",
151 "test/integration/**",
152 "test/unit/**"
154 ignores: [
155 "test/data/badcall.js",
156 "test/data/badjson.js",
157 "test/data/support/csp.js",
158 "test/data/support/getComputedSupport.js",
159 "test/data/core/jquery-iterability-transpiled.js"
161 languageOptions: {
162 ecmaVersion: 5,
163 sourceType: "script",
164 globals: {
165 ...globals.browser,
166 require: false,
167 Promise: false,
168 Symbol: false,
169 trustedTypes: false,
170 QUnit: false,
171 ajaxTest: false,
172 testIframe: false,
173 createDashboardXML: false,
174 createWithFriesXML: false,
175 createXMLFragment: false,
176 includesModule: false,
177 moduleTeardown: false,
178 url: false,
179 q: false,
180 jQuery: false,
181 $: false,
182 sinon: false,
183 amdDefined: false,
184 fireNative: false,
185 Globals: false,
186 hasPHP: false,
187 isLocal: false,
188 supportjQuery: false,
189 originaljQuery: false,
190 original$: false,
191 baseURL: false,
192 externalHost: false
195 rules: {
196 ...jqueryConfig.rules,
198 "no-unused-vars": [
199 "error",
200 { args: "after-used", argsIgnorePattern: "^_" }
203 // Too many errors
204 "max-len": "off",
205 camelcase: "off"
210 files: [
211 "test/unit/core.js"
213 rules: {
215 // Core has several cases where unused vars are expected
216 "no-unused-vars": "off"
221 files: [
222 "test/runner/**/*.js"
224 languageOptions: {
225 ecmaVersion: "latest",
226 globals: {
227 ...globals.node
230 rules: {
231 ...jqueryConfig.rules
236 files: [ "test/runner/listeners.js" ],
237 languageOptions: {
238 ecmaVersion: 5,
239 sourceType: "script",
240 globals: {
241 ...globals.browser,
242 QUnit: false,
243 Symbol: false
249 files: [
250 "test/data/testinit.js",
251 "test/data/testrunner.js",
252 "test/data/core/jquery-iterability-transpiled-es6.js"
254 languageOptions: {
255 ecmaVersion: 2015,
256 sourceType: "script",
257 globals: {
258 ...globals.browser
261 rules: {
262 ...jqueryConfig.rules,
263 strict: [ "error", "function" ]
268 files: [
269 "test/data/testinit.js"
271 rules: {
272 strict: [ "error", "global" ]
277 files: [
278 "test/unit/deferred.js"
280 rules: {
282 // Deferred tests set strict mode for certain tests
283 strict: "off"
288 files: [
289 "eslint.config.js",
290 ".release-it.cjs",
291 "build/**",
292 "test/node_smoke_tests/**",
293 "test/bundler_smoke_tests/**/*",
294 "test/promises_aplus_adapters/**",
295 "test/middleware-mockserver.cjs"
297 languageOptions: {
298 ecmaVersion: "latest",
299 globals: {
300 ...globals.browser,
301 ...globals.node
304 rules: {
305 ...jqueryConfig.rules,
306 "no-implicit-globals": "error",
307 "no-unused-vars": [
308 "error",
309 { caughtErrorsIgnorePattern: "^_" }
311 strict: [ "error", "global" ]
316 files: [
317 "dist/jquery.js",
318 "dist/jquery.slim.js",
319 "dist/jquery.factory.js",
320 "dist/jquery.factory.slim.js",
321 "dist-module/jquery.module.js",
322 "dist-module/jquery.slim.module.js",
323 "dist-module/jquery.factory.module.js",
324 "dist-module/jquery.factory.slim.module.js",
325 "dist/wrappers/*.js",
326 "dist-module/wrappers/*.js"
328 languageOptions: {
329 ecmaVersion: 2015,
330 globals: {
331 define: false,
332 module: false,
333 Symbol: false,
334 window: false
337 rules: {
338 ...jqueryConfig.rules,
340 "no-implicit-globals": "error",
342 // That is okay for the built version
343 "no-multiple-empty-lines": "off",
345 "no-unused-vars": [
346 "error",
347 { caughtErrorsIgnorePattern: "^_" }
350 // When custom compilation is used, the version string
351 // can get large. Accept that in the built version.
352 "max-len": "off",
353 "one-var": "off"
358 files: [
359 "dist/jquery.slim.js",
360 "dist/jquery.factory.slim.js",
361 "dist-module/jquery.slim.module.js",
362 "dist-module/jquery.factory.slim.module.js"
364 rules: {
366 // Rollup is now smart enough to remove the use
367 // of parameters if the argument is not passed
368 // anywhere in the build.
369 // The removal of effects in the slim build
370 // results in some parameters not being used,
371 // which can be safely ignored.
372 "no-unused-vars": [
373 "error",
374 { args: "none" }
380 files: [
381 "src/wrapper.js",
382 "src/wrapper-factory.js",
383 "dist/jquery.factory.js",
384 "dist/jquery.factory.slim.js",
385 "test/middleware-mockserver.cjs"
387 rules: {
388 "no-implicit-globals": "off"
393 files: [
394 "dist/**"
396 languageOptions: {
397 ecmaVersion: 5,
398 sourceType: "script"
403 files: [
404 "dist-module/**"
406 languageOptions: {
407 ecmaVersion: 2015,
408 sourceType: "module"
413 files: [
414 "dist/wrappers/*.js"
416 languageOptions: {
417 ecmaVersion: 2015,
418 sourceType: "commonjs"