Skip to content

Commit 6fe182a

Browse files
committed
Add no-load rule
1 parent dd7390b commit 6fe182a

File tree

4 files changed

+59
-0
lines changed

4 files changed

+59
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Add `jquery` to the plugins section of your `.eslintrc` configuration file. You
4949
"jquery/no-html": 2,
5050
"jquery/no-in-array": 2,
5151
"jquery/no-is": 2,
52+
"jquery/no-load": 2,
5253
"jquery/no-map": 2,
5354
"jquery/no-merge": 2,
5455
"jquery/no-param": 2,

index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = {
2323
'no-html': require('./rules/no-html'),
2424
'no-in-array': require('./rules/no-in-array'),
2525
'no-is': require('./rules/no-is'),
26+
'no-load': require('./rules/no-load'),
2627
'no-map': require('./rules/no-map'),
2728
'no-merge': require('./rules/no-merge'),
2829
'no-param': require('./rules/no-param'),
@@ -70,6 +71,7 @@ module.exports = {
7071
"jquery/no-html": 2,
7172
"jquery/no-in-array": 2,
7273
"jquery/no-is": 2,
74+
"jquery/no-load": 2,
7375
"jquery/no-map": 2,
7476
"jquery/no-merge": 2,
7577
"jquery/no-param": 2,
@@ -100,6 +102,7 @@ module.exports = {
100102
"jquery/no-animate": 2,
101103
"jquery/no-fade": 2,
102104
"jquery/no-hide": 2,
105+
"jquery/no-load": 2,
103106
"jquery/no-param": 2,
104107
"jquery/no-serialize": 2,
105108
"jquery/no-show": 2,

rules/no-load.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const utils = require('./utils.js')
4+
5+
module.exports = function(context) {
6+
return {
7+
CallExpression: function(node) {
8+
if (node.callee.type !== 'MemberExpression') return
9+
if (node.callee.property.name !== 'load') return
10+
11+
if (utils.isjQuery(node)) {
12+
context.report({
13+
node: node,
14+
message: 'Prefer fetch to $.load'
15+
})
16+
}
17+
}
18+
}
19+
}
20+
21+
module.exports.schema = []

tests/no-load.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
const rule = require('../rules/no-load')
4+
const RuleTester = require('eslint').RuleTester
5+
6+
const error = 'Prefer fetch to $.load'
7+
8+
const ruleTester = new RuleTester()
9+
ruleTester.run('no-load', rule, {
10+
valid: [
11+
'load()',
12+
'[].load()',
13+
'div.load()',
14+
'div.load'
15+
],
16+
invalid: [
17+
{
18+
code: '$("div").load()',
19+
errors: [{message: error, type: 'CallExpression'}]
20+
},
21+
{
22+
code: '$div.load()',
23+
errors: [{message: error, type: 'CallExpression'}]
24+
},
25+
{
26+
code: '$("div").first().load()',
27+
errors: [{message: error, type: 'CallExpression'}]
28+
},
29+
{
30+
code: '$("div").append($("input").load())',
31+
errors: [{message: error, type: 'CallExpression'}]
32+
}
33+
]
34+
})

0 commit comments

Comments
 (0)