4
4
'use strict' ;
5
5
6
6
const { get } = require ( '../utils/get' ) ;
7
+ const JQUERY_ALIASES = [ '$' , 'jQuery' ] ;
7
8
8
9
function getMessage ( blackListName ) {
9
10
return `The use of jQuery's ${ blackListName } method has been deprecated.` ;
10
11
}
11
12
12
13
function isJQueryCaller ( node , name = null ) {
13
- let pName = get ( node , 'object.callee.property.name' ) === '$' ;
14
- let cName = get ( node , 'object.callee.name' ) === '$' ;
15
- let lName = get ( node , 'object.name' ) === name ;
14
+ const calleePropertyNameisJquery = get ( node , 'object.callee.property.name' ) === '$' ;
15
+ const calleeNameIsJquery = get ( node , 'object.callee.name' ) === '$' ;
16
+ const calleeNameIsLocalJquery = get ( node , 'object.callee.name' ) === name ;
17
+ const ObjectNameisLocalJquery = get ( node , 'object.name' ) === name ;
16
18
17
- return pName || cName || lName ;
19
+ return calleePropertyNameisJquery
20
+ || calleeNameIsJquery
21
+ || calleeNameIsLocalJquery
22
+ || ObjectNameisLocalJquery ;
18
23
}
19
24
20
25
function getLocalImportName ( node , sourceName ) {
@@ -36,7 +41,6 @@ module.exports = {
36
41
create ( context ) {
37
42
const BLACKLIST = context . options [ 0 ] || [ ] ;
38
43
let jQueryLocalName = null ;
39
- let varDecIDName = null ;
40
44
41
45
return {
42
46
@@ -48,8 +52,17 @@ module.exports = {
48
52
} ,
49
53
50
54
VariableDeclarator ( node ) {
51
- varDecIDName = get ( node , 'id.name' ) ;
52
- jQueryLocalName = jQueryLocalName === get ( node , 'init.name' ) ? varDecIDName : null ;
55
+ const varDecIDName = get ( node , 'id.name' ) ;
56
+ // Get the name of what was assigned to the variable.
57
+ const varAssignment = get ( node , 'init.callee.property.name' )
58
+ || get ( node , 'init.property.name' )
59
+ || get ( node , 'init.name' )
60
+ || '' ;
61
+ const varAssignmentIsJquery = JQUERY_ALIASES . includes ( varAssignment ) ;
62
+
63
+ if ( varAssignmentIsJquery ) {
64
+ jQueryLocalName = varDecIDName ;
65
+ }
53
66
} ,
54
67
55
68
CallExpression ( node ) {
@@ -69,8 +82,6 @@ module.exports = {
69
82
let blackListName = BLACKLIST . includes ( propertyName ) ? propertyName : false ;
70
83
let isThisExpression = get ( node , 'object.type' ) . includes ( 'ThisExpression' ) ;
71
84
72
- jQueryLocalName = isThisExpression && propertyName . includes ( '$' ) ? varDecIDName : jQueryLocalName ;
73
-
74
85
if ( ! isThisExpression && blackListName && isJQueryCaller ( node , jQueryLocalName ) ) {
75
86
context . report ( { node : node . property , message : getMessage ( blackListName ) } ) ;
76
87
}
0 commit comments