1 | 'use strict';
|
2 | const getDocumentationUrl = require('./utils/get-documentation-url');
|
3 | const isValueNotUsable = require('./utils/is-value-not-usable');
|
4 | const methodSelector = require('./utils/method-selector');
|
5 | const {notDomNodeSelector} = require('./utils/not-dom-node');
|
6 |
|
7 | const message = 'Prefer `Node#append()` over `Node#appendChild()`.';
|
8 | const selector = [
|
9 | methodSelector({
|
10 | name: 'appendChild',
|
11 | length: 1
|
12 | }),
|
13 | notDomNodeSelector('callee.object'),
|
14 | notDomNodeSelector('arguments.0')
|
15 | ].join('');
|
16 |
|
17 | const create = context => {
|
18 | return {
|
19 | [selector](node) {
|
20 | const fix = isValueNotUsable(node) ?
|
21 | fixer => fixer.replaceText(node.callee.property, 'append') :
|
22 | undefined;
|
23 |
|
24 | context.report({
|
25 | node,
|
26 | message,
|
27 | fix
|
28 | });
|
29 | }
|
30 | };
|
31 | };
|
32 |
|
33 | module.exports = {
|
34 | create,
|
35 | meta: {
|
36 | type: 'suggestion',
|
37 | docs: {
|
38 | url: getDocumentationUrl(__filename)
|
39 | },
|
40 | fixable: 'code'
|
41 | }
|
42 | };
|