UNPKG

1.22 kBJavaScriptView Raw
1/**
2 * @fileoverview Prevent variables used in JSX to be marked as unused
3 * @author Yannick Croissant
4 */
5
6'use strict';
7
8const docsUrl = require('../util/docsUrl');
9
10// ------------------------------------------------------------------------------
11// Rule Definition
12// ------------------------------------------------------------------------------
13
14module.exports = {
15 meta: {
16 docs: {
17 description: 'Prevent variables used in JSX to be marked as unused',
18 category: 'Best Practices',
19 recommended: true,
20 url: docsUrl('jsx-uses-vars')
21 },
22 schema: []
23 },
24
25 create(context) {
26 return {
27 JSXOpeningElement(node) {
28 let name;
29 if (node.name.namespace && node.name.namespace.name) {
30 // <Foo:Bar>
31 name = node.name.namespace.name;
32 } else if (node.name.name) {
33 // <Foo>
34 name = node.name.name;
35 } else if (node.name.object) {
36 // <Foo...Bar>
37 let parent = node.name.object;
38 while (parent.object) {
39 parent = parent.object;
40 }
41 name = parent.name;
42 } else {
43 return;
44 }
45
46 context.markVariableAsUsed(name);
47 }
48
49 };
50 }
51};