-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathno-other-methods.js
119 lines (115 loc) · 1.65 KB
/
no-other-methods.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
'use strict';
const utils = require( '../utils.js' );
const methodsWithRules = [
'addClass',
'ajaxComplete',
'ajaxError',
'ajaxSend',
'ajaxStart',
'ajaxStop',
'ajaxSuccess',
'animate',
'attr',
'bind',
'blur',
'change',
'click',
'clone',
'closest',
'contextmenu',
'css',
'data',
'dblclick',
'delegate',
'die',
'each',
'fadeIn',
'fadeOut',
'fadeTo',
'fadeToggle',
'filter',
'find',
'focus',
'focusin',
'focusout',
'has',
'hasClass',
'hide',
'hover',
'html',
'is',
'keydown',
'keypress',
'keyup',
'live',
'load',
'map',
'mousedown',
'mouseenter',
'mouseleave',
'mousemove',
'mouseout',
'mouseover',
'mouseup',
'parent',
'parents',
'prop',
'ready',
'removeAttr',
'removeClass',
'removeData',
'removeProp',
'resize',
'scroll',
'select',
'serialize',
'serializeArray',
'show',
'size',
'slideDown',
'slideToggle',
'slideUp',
'submit',
'text',
'toggle',
'toggleClass',
'trigger',
'unbind',
'undelegate',
'unwrap',
'val',
'wrap',
'wrapAll',
'wrapInner'
];
module.exports = {
meta: {
type: 'suggestion',
docs: {
description: 'Disallows all methods not covered by more specific rules.'
},
schema: []
},
create: ( context ) => ( {
'CallExpression:exit': ( node ) => {
if ( node.callee.type !== 'MemberExpression' ) {
return;
}
const name = node.callee.property.name;
if (
!name ||
methodsWithRules.includes( name ) ||
utils.isjQueryConstructor( context, node.callee.object.name )
) {
return;
}
if ( utils.isjQuery( context, node.callee ) ) {
context.report( {
node,
message: '.{{name}} is not allowed',
data: { name }
} );
}
}
} )
};