mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Build: improve specificity of eslint config; add ecma versions
- also added no-implicit-globals rule outside of tests, but including dist Close gh-5504
This commit is contained in:
parent
efa1e0a131
commit
82169df010
173
eslint.config.js
173
eslint.config.js
@ -15,30 +15,11 @@ module.exports = [
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"eslint.config.js",
|
||||
"Gruntfile.js",
|
||||
"test/node_smoke_tests/**",
|
||||
"test/promises_aplus_adapters/**",
|
||||
"test/middleware-mockserver.js"
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node
|
||||
},
|
||||
sourceType: "commonjs"
|
||||
},
|
||||
rules: {
|
||||
...jqueryConfig.rules,
|
||||
strict: [ "error", "global" ]
|
||||
}
|
||||
},
|
||||
|
||||
// Source
|
||||
{
|
||||
files: [ "src/**" ],
|
||||
languageOptions: {
|
||||
ecmaVersion: 2015,
|
||||
|
||||
// The browser env is not enabled on purpose so that code takes
|
||||
// all browser-only globals from window instead of assuming
|
||||
@ -65,6 +46,7 @@ module.exports = [
|
||||
]
|
||||
}
|
||||
],
|
||||
"no-implicit-globals": "error",
|
||||
"one-var": [ "error", { var: "always" } ],
|
||||
strict: [ "error", "function" ]
|
||||
}
|
||||
@ -117,7 +99,10 @@ module.exports = [
|
||||
// Tests
|
||||
{
|
||||
files: [
|
||||
"test/**"
|
||||
"test/*",
|
||||
"test/data/**",
|
||||
"test/integration/**",
|
||||
"test/unit/**"
|
||||
],
|
||||
ignores: [
|
||||
"test/data/jquery-3.7.1.js",
|
||||
@ -128,11 +113,11 @@ module.exports = [
|
||||
"test/data/core/jquery-iterability-transpiled.js"
|
||||
],
|
||||
languageOptions: {
|
||||
ecmaVersion: 2015,
|
||||
sourceType: "script",
|
||||
globals: {
|
||||
...globals.browser,
|
||||
require: false,
|
||||
Promise: false,
|
||||
Symbol: false,
|
||||
trustedTypes: false,
|
||||
QUnit: false,
|
||||
ajaxTest: false,
|
||||
@ -144,32 +129,54 @@ module.exports = [
|
||||
moduleTeardown: false,
|
||||
url: false,
|
||||
q: false,
|
||||
jQuery: true,
|
||||
sinon: true,
|
||||
amdDefined: true,
|
||||
fireNative: true,
|
||||
Globals: true,
|
||||
hasPHP: true,
|
||||
isLocal: true,
|
||||
supportjQuery: true,
|
||||
originaljQuery: true,
|
||||
$: true,
|
||||
original$: true,
|
||||
baseURL: true,
|
||||
externalHost: true
|
||||
jQuery: false,
|
||||
$: false,
|
||||
sinon: false,
|
||||
amdDefined: false,
|
||||
fireNative: false,
|
||||
Globals: false,
|
||||
hasPHP: false,
|
||||
isLocal: false,
|
||||
supportjQuery: false,
|
||||
originaljQuery: false,
|
||||
original$: false,
|
||||
baseURL: false,
|
||||
externalHost: false
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...jqueryConfig.rules,
|
||||
strict: [ "error", "function" ],
|
||||
|
||||
// See https://github.com/eslint/eslint/issues/2342
|
||||
"no-unused-vars": "off",
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{ args: "after-used", argsIgnorePattern: "^_" }
|
||||
],
|
||||
|
||||
// Too many errors
|
||||
"max-len": "off",
|
||||
camelcase: "off",
|
||||
"one-var": "off"
|
||||
camelcase: "off"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"test/jquery.js"
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
loadTests: false
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"test/unit/core.js"
|
||||
],
|
||||
rules: {
|
||||
|
||||
// Core has several cases where unused vars are expected
|
||||
"no-unused-vars": "off"
|
||||
}
|
||||
},
|
||||
|
||||
@ -178,13 +185,14 @@ module.exports = [
|
||||
"test/runner/**/*.js"
|
||||
],
|
||||
languageOptions: {
|
||||
ecmaVersion: "latest",
|
||||
globals: {
|
||||
...globals.node
|
||||
},
|
||||
sourceType: "module"
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...jqueryConfig.rules
|
||||
...jqueryConfig.rules,
|
||||
"no-implicit-globals": "error"
|
||||
}
|
||||
},
|
||||
|
||||
@ -192,17 +200,40 @@ module.exports = [
|
||||
files: [ "test/runner/listeners.js" ],
|
||||
languageOptions: {
|
||||
ecmaVersion: 5,
|
||||
sourceType: "script"
|
||||
sourceType: "script",
|
||||
globals: {
|
||||
...globals.browser,
|
||||
QUnit: false,
|
||||
Symbol: false
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"test/data/testinit.js",
|
||||
"test/data/testrunner.js",
|
||||
"test/data/core/jquery-iterability-transpiled-es6.js"
|
||||
],
|
||||
languageOptions: {
|
||||
sourceType: "script"
|
||||
ecmaVersion: 2015,
|
||||
sourceType: "script",
|
||||
globals: {
|
||||
...globals.browser
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...jqueryConfig.rules,
|
||||
strict: [ "error", "function" ]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"test/data/testinit.js"
|
||||
],
|
||||
rules: {
|
||||
strict: [ "error", "global" ]
|
||||
}
|
||||
},
|
||||
|
||||
@ -219,45 +250,34 @@ module.exports = [
|
||||
|
||||
{
|
||||
files: [
|
||||
"build/**",
|
||||
"eslint.config.js",
|
||||
"test/node_smoke_tests/**",
|
||||
"test/bundler_smoke_tests/**/*",
|
||||
"test/promises_aplus_adapters/**",
|
||||
"test/middleware-mockserver.js"
|
||||
],
|
||||
languageOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "commonjs",
|
||||
globals: {
|
||||
...globals.node,
|
||||
...globals.es2021
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
strict: [ "error", "global" ]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"build/**",
|
||||
"test/data/testinit.js"
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...globals.es2021
|
||||
...globals.browser,
|
||||
...globals.node
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...jqueryConfig.rules,
|
||||
"no-implicit-globals": "error",
|
||||
strict: [ "error", "global" ]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"build/**/*.js",
|
||||
"test/data/testinit.js"
|
||||
"**/*.mjs"
|
||||
],
|
||||
languageOptions: {
|
||||
sourceType: "commonjs"
|
||||
sourceType: "module"
|
||||
}
|
||||
},
|
||||
|
||||
@ -266,20 +286,19 @@ module.exports = [
|
||||
"dist/jquery.js",
|
||||
"dist/jquery.slim.js"
|
||||
],
|
||||
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.es2021,
|
||||
define: false,
|
||||
module: false,
|
||||
Symbol: false
|
||||
Symbol: false,
|
||||
window: false
|
||||
}
|
||||
},
|
||||
|
||||
rules: {
|
||||
...jqueryConfig.rules,
|
||||
|
||||
"no-implicit-globals": "error",
|
||||
|
||||
// That is okay for the built version
|
||||
"no-multiple-empty-lines": "off",
|
||||
|
||||
@ -288,5 +307,15 @@ module.exports = [
|
||||
"max-len": "off",
|
||||
"one-var": "off"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
files: [
|
||||
"dist/**"
|
||||
],
|
||||
languageOptions: {
|
||||
ecmaVersion: 5,
|
||||
sourceType: "script"
|
||||
}
|
||||
}
|
||||
];
|
||||
|
@ -1,5 +1,3 @@
|
||||
/* global startIframeTest */
|
||||
|
||||
jQuery( function() {
|
||||
$( "body" ).append( "<script nonce='jquery+hardcoded+nonce' src='csp-nonce.js'></script>" );
|
||||
} );
|
||||
|
@ -1,5 +1,3 @@
|
||||
/* global startIframeTest */
|
||||
|
||||
jQuery( function() {
|
||||
$.globalEval( "startIframeTest()", { nonce: "jquery+hardcoded+nonce" } );
|
||||
} );
|
||||
|
@ -1,5 +1,3 @@
|
||||
/* global startIframeTest */
|
||||
|
||||
jQuery( function() {
|
||||
var script = document.createElement( "script" );
|
||||
script.setAttribute( "nonce", "jquery+hardcoded+nonce" );
|
||||
|
2
test/jquery.js
vendored
2
test/jquery.js
vendored
@ -1,7 +1,5 @@
|
||||
// Use the right jQuery source on the test page (and iframes)
|
||||
( function() {
|
||||
/* global loadTests: false */
|
||||
|
||||
var config, src,
|
||||
parentUrl = window.location.protocol + "//" + window.location.host,
|
||||
QUnit = window.QUnit,
|
||||
|
@ -261,7 +261,7 @@ QUnit.test( "attr(String, Object)", function( assert ) {
|
||||
|
||||
var $input, $text, $details,
|
||||
attributeNode, commentNode, textNode, obj,
|
||||
table, td, j, type,
|
||||
table, td, j,
|
||||
check, thrown, button, $radio, $radios, $svg,
|
||||
div = jQuery( "#qunit-fixture div" ).attr( "foo", "bar" ),
|
||||
i = 0,
|
||||
@ -418,7 +418,6 @@ QUnit.test( "attr(String, Object)", function( assert ) {
|
||||
j.removeAttr( "name" );
|
||||
|
||||
// Type
|
||||
type = jQuery( "#check2" ).attr( "type" );
|
||||
try {
|
||||
jQuery( "#check2" ).attr( "type", "hidden" );
|
||||
assert.ok( true, "No exception thrown on input type change" );
|
||||
|
@ -7,7 +7,7 @@ QUnit.test( "css(String|Hash)", function( assert ) {
|
||||
|
||||
assert.equal( jQuery( "#qunit-fixture" ).css( "display" ), "block", "Check for css property \"display\"" );
|
||||
|
||||
var $child, div, div2, width, height, child, prctval, checkval, old;
|
||||
var $child, div, div2, child, prctval, checkval, old;
|
||||
|
||||
$child = jQuery( "#nothiddendivchild" ).css( { "width": "20%", "height": "20%" } );
|
||||
assert.notEqual( $child.css( "width" ), "20px", "Retrieving a width percentage on the child of a hidden div returns percentage" );
|
||||
@ -36,8 +36,6 @@ QUnit.test( "css(String|Hash)", function( assert ) {
|
||||
// handle negative numbers by setting to zero trac-11604
|
||||
jQuery( "#nothiddendiv" ).css( { "width": 1, "height": 1 } );
|
||||
|
||||
width = parseFloat( jQuery( "#nothiddendiv" ).css( "width" ) );
|
||||
height = parseFloat( jQuery( "#nothiddendiv" ).css( "height" ) );
|
||||
jQuery( "#nothiddendiv" ).css( { "overflow": "hidden", "width": -1, "height": -1 } );
|
||||
assert.equal( parseFloat( jQuery( "#nothiddendiv" ).css( "width" ) ), 0, "Test negative width set to 0" );
|
||||
assert.equal( parseFloat( jQuery( "#nothiddendiv" ).css( "height" ) ), 0, "Test negative height set to 0" );
|
||||
@ -274,8 +272,7 @@ QUnit.test( "css() non-px relative values (gh-1711)", function( assert ) {
|
||||
QUnit.test( "css() mismatched relative values with bounded styles (gh-2144)", function( assert ) {
|
||||
assert.expect( 1 );
|
||||
|
||||
var right,
|
||||
$container = jQuery( "<div></div>" )
|
||||
var $container = jQuery( "<div></div>" )
|
||||
.css( { position: "absolute", width: "400px", fontSize: "4px" } )
|
||||
.appendTo( "#qunit-fixture" ),
|
||||
$el = jQuery( "<div></div>" )
|
||||
|
@ -317,6 +317,7 @@ QUnit.test( "data-* attributes", function( assert ) {
|
||||
|
||||
assert.equal( num, check.length, "Make sure that the right number of properties came through." );
|
||||
|
||||
/* eslint-disable-next-line no-unused-vars */
|
||||
for ( prop in obj2 ) {
|
||||
num2++;
|
||||
}
|
||||
|
@ -861,11 +861,11 @@ QUnit.test( "jQuery.when(nonThenable) - like Promise.resolve", function( assert
|
||||
done = assert.async( 20 );
|
||||
|
||||
jQuery.when()
|
||||
.done( function( resolveValue ) {
|
||||
.done( function() {
|
||||
assert.strictEqual( arguments.length, 0, "Resolved .done with no arguments" );
|
||||
assert.strictEqual( this, defaultContext, "Default .done context with no arguments" );
|
||||
} )
|
||||
.then( function( resolveValue ) {
|
||||
.then( function() {
|
||||
assert.strictEqual( arguments.length, 0, "Resolved .then with no arguments" );
|
||||
assert.strictEqual( this, defaultContext, "Default .then context with no arguments" );
|
||||
} );
|
||||
|
15
test/unit/effects.js
vendored
15
test/unit/effects.js
vendored
@ -1162,21 +1162,15 @@ QUnit.test( "jQuery.show('fast') doesn't clear radio buttons (bug trac-1095)", f
|
||||
QUnit.test( "interrupt toggle", function( assert ) {
|
||||
assert.expect( 24 );
|
||||
|
||||
var env = this,
|
||||
longDuration = 2000,
|
||||
var longDuration = 2000,
|
||||
shortDuration = 500,
|
||||
remaining = 0,
|
||||
$elems = jQuery( ".chain-test" ),
|
||||
clock = this.clock,
|
||||
finish = function() {
|
||||
};
|
||||
finish = function() {};
|
||||
|
||||
jQuery.each( { slideToggle: "height", fadeToggle: "opacity", toggle: "width" }, function( method, prop ) {
|
||||
var $methodElems = $elems.filter( "[id^='" + method.toLowerCase() + "']" ).each( function() {
|
||||
|
||||
// Don't end test until we're done with this element
|
||||
remaining++;
|
||||
|
||||
// Save original property value for comparison
|
||||
jQuery.data( this, "startVal", jQuery( this ).css( prop ) );
|
||||
} );
|
||||
@ -1596,7 +1590,7 @@ QUnit.test( "User supplied callback called after show when fx off (trac-8892)",
|
||||
QUnit.test( "animate should set display for disconnected nodes", function( assert ) {
|
||||
assert.expect( 20 );
|
||||
|
||||
var env = this,
|
||||
var clock = this.clock,
|
||||
showMethods = {
|
||||
fadeIn: [],
|
||||
fadeTo: [ "fast", 0.5 ],
|
||||
@ -1613,8 +1607,7 @@ QUnit.test( "animate should set display for disconnected nodes", function( asser
|
||||
$divNone = jQuery( "<div style='display: none;'></div>" ),
|
||||
$divInline = jQuery( "<div style='display: inline;'></div>" ),
|
||||
nullParentDisplay = $divEmpty.css( "display" ),
|
||||
underFragmentDisplay = $divTest.css( "display" ),
|
||||
clock = this.clock;
|
||||
underFragmentDisplay = $divTest.css( "display" );
|
||||
|
||||
assert.strictEqual( $divEmpty[ 0 ].parentNode, null, "Setup: element with null parentNode" );
|
||||
assert.strictEqual( ( $divTest[ 0 ].parentNode || {} ).nodeType, 11, "Setup: element under fragment" );
|
||||
|
@ -2676,7 +2676,6 @@ testIframe(
|
||||
assert.expect( 1 );
|
||||
|
||||
var done = assert.async(),
|
||||
focus = false,
|
||||
input = jQuery( frameDoc ).find( "#frame-input" );
|
||||
|
||||
// Create a focusin handler on the parent; shouldn't affect the iframe's fate
|
||||
@ -2692,7 +2691,6 @@ testIframe(
|
||||
} );
|
||||
|
||||
input.on( "focusin", function() {
|
||||
focus = true;
|
||||
assert.ok( true, "fired a focusin event in the iframe" );
|
||||
} );
|
||||
|
||||
@ -3091,11 +3089,11 @@ QUnit.test(
|
||||
spy.immediate = sinon.stub( event.originalEvent, "stopImmediatePropagation" );
|
||||
event.stopImmediatePropagation();
|
||||
} )
|
||||
.on( "simulated", function( event ) {
|
||||
.on( "simulated", function() {
|
||||
assert.ok( false, "simulated event immediate propagation stopped" );
|
||||
} );
|
||||
outer
|
||||
.on( "simulated", function( event ) {
|
||||
.on( "simulated", function() {
|
||||
assert.ok( false, "simulated event propagation stopped" );
|
||||
} );
|
||||
|
||||
|
@ -1369,7 +1369,7 @@ QUnit.test( "Empty replaceWith (trac-13401; trac-13596; gh-2204)", function( ass
|
||||
return input;
|
||||
} );
|
||||
assert.strictEqual( $el.html(), "", "replaceWith(function returning " + label + ")" );
|
||||
$el.html( "<i></i>" ).children().replaceWith( function( i ) {
|
||||
$el.html( "<i></i>" ).children().replaceWith( function() {
|
||||
return input;
|
||||
} );
|
||||
assert.strictEqual( $el.html(), "", "replaceWith(other function returning " + label + ")" );
|
||||
@ -2679,8 +2679,6 @@ QUnit.test( "insertAfter, insertBefore, etc do not work when destination is orig
|
||||
|
||||
assert.expect( 10 );
|
||||
|
||||
var elems;
|
||||
|
||||
jQuery.each( [
|
||||
"appendTo",
|
||||
"prependTo",
|
||||
@ -2688,7 +2686,7 @@ QUnit.test( "insertAfter, insertBefore, etc do not work when destination is orig
|
||||
"insertAfter",
|
||||
"replaceAll"
|
||||
], function( index, name ) {
|
||||
elems = jQuery( [
|
||||
jQuery( [
|
||||
"<ul id='test4087-complex'><li class='test4087'><div>c1</div>h1</li><li><div>c2</div>h2</li></ul>",
|
||||
"<div id='test4087-simple'><div class='test4087-1'>1<div class='test4087-2'>2</div><div class='test4087-3'>3</div></div></div>",
|
||||
"<div id='test4087-multiple'><div class='test4087-multiple'>1</div><div class='test4087-multiple'>2</div></div>"
|
||||
@ -2971,7 +2969,7 @@ QUnit.test( "Ignore content from unsuccessful responses (gh-4126)", function( as
|
||||
assert.expect( 1 );
|
||||
|
||||
var globalEval = jQuery.globalEval;
|
||||
jQuery.globalEval = function( code ) {
|
||||
jQuery.globalEval = function( _code ) {
|
||||
assert.ok( false, "no attempt to evaluate code from an unsuccessful response" );
|
||||
};
|
||||
|
||||
@ -2989,7 +2987,7 @@ QUnit.test( "Ignore content from unsuccessful responses (gh-4126)", function( as
|
||||
testIframe(
|
||||
"Check if CSP nonce is preserved",
|
||||
"mock.php?action=cspNonce",
|
||||
function( assert, jQuery, window, document ) {
|
||||
function( assert ) {
|
||||
var done = assert.async();
|
||||
|
||||
assert.expect( 1 );
|
||||
@ -3012,7 +3010,7 @@ testIframe(
|
||||
testIframe(
|
||||
"Check if CSP nonce is preserved for external scripts with src attribute",
|
||||
"mock.php?action=cspNonce&test=external",
|
||||
function( assert, jQuery, window, document ) {
|
||||
function( assert ) {
|
||||
var done = assert.async();
|
||||
|
||||
assert.expect( 1 );
|
||||
@ -3036,7 +3034,7 @@ testIframe(
|
||||
testIframe(
|
||||
"jQuery.globalEval supports nonce",
|
||||
"mock.php?action=cspNonce&test=globaleval",
|
||||
function( assert, jQuery, window, document ) {
|
||||
function( assert ) {
|
||||
var done = assert.async();
|
||||
|
||||
assert.expect( 1 );
|
||||
|
@ -4,7 +4,7 @@ if ( !includesModule( "offset" ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var supportsFixedPosition, supportsScroll, alwaysScrollable,
|
||||
var alwaysScrollable,
|
||||
forceScroll = supportjQuery( "<div></div>" ).css( { width: 2000, height: 2000 } ),
|
||||
checkSupport = function( assert ) {
|
||||
|
||||
@ -14,13 +14,13 @@ var supportsFixedPosition, supportsScroll, alwaysScrollable,
|
||||
var checkFixed = supportjQuery( "<div/>" )
|
||||
.css( { position: "fixed", top: "20px" } )
|
||||
.appendTo( "#qunit-fixture" );
|
||||
supportsFixedPosition = checkFixed[ 0 ].offsetTop === 20;
|
||||
window.supportsFixedPosition = checkFixed[ 0 ].offsetTop === 20;
|
||||
checkFixed.remove();
|
||||
|
||||
// Append forceScroll to the body instead of #qunit-fixture because the latter is hidden
|
||||
forceScroll.appendTo( "body" );
|
||||
window.scrollTo( 200, 200 );
|
||||
supportsScroll = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
window.supportsScroll = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
forceScroll.detach();
|
||||
|
||||
// Support: iOS <=7
|
||||
|
@ -1497,8 +1497,9 @@ QUnit.test( "pseudo - a:(dis|en)abled", function( assert ) {
|
||||
assert.expect( 2 );
|
||||
|
||||
var enabled, disabled,
|
||||
container = jQuery( "<div/>" ),
|
||||
anchor = jQuery( "<a href='#'>Link</a>" );
|
||||
container = jQuery( "<div/>" );
|
||||
|
||||
jQuery( "<a href='#'>Link</a>" ).appendTo( container );
|
||||
|
||||
container.appendTo( "#qunit-fixture" );
|
||||
|
||||
|
@ -849,7 +849,7 @@ QUnit[ "content" in document.createElement( "template" ) ? "test" : "skip" ]( "c
|
||||
"</template>"
|
||||
);
|
||||
|
||||
var content = jQuery( "#template" ).contents();
|
||||
jQuery( "#template" ).contents();
|
||||
|
||||
assert.strictEqual( window.testScript, true, "script in template isn't executed" );
|
||||
assert.strictEqual( window.testImgOnload, true, "onload of image in template isn't executed" );
|
||||
|
Loading…
Reference in New Issue
Block a user