UNPKG

2.38 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = isReferenced;
7
8function isReferenced(node, parent, grandparent) {
9 switch (parent.type) {
10 case "MemberExpression":
11 case "JSXMemberExpression":
12 case "OptionalMemberExpression":
13 if (parent.property === node) {
14 return !!parent.computed;
15 }
16
17 return parent.object === node;
18
19 case "VariableDeclarator":
20 return parent.init === node;
21
22 case "ArrowFunctionExpression":
23 return parent.body === node;
24
25 case "PrivateName":
26 return false;
27
28 case "ClassMethod":
29 case "ClassPrivateMethod":
30 case "ObjectMethod":
31 if (parent.params.includes(node)) {
32 return false;
33 }
34
35 case "ObjectProperty":
36 case "ClassProperty":
37 case "ClassPrivateProperty":
38 if (parent.key === node) {
39 return !!parent.computed;
40 }
41
42 if (parent.value === node) {
43 return !grandparent || grandparent.type !== "ObjectPattern";
44 }
45
46 return true;
47
48 case "ClassDeclaration":
49 case "ClassExpression":
50 return parent.superClass === node;
51
52 case "AssignmentExpression":
53 return parent.right === node;
54
55 case "AssignmentPattern":
56 return parent.right === node;
57
58 case "LabeledStatement":
59 return false;
60
61 case "CatchClause":
62 return false;
63
64 case "RestElement":
65 return false;
66
67 case "BreakStatement":
68 case "ContinueStatement":
69 return false;
70
71 case "FunctionDeclaration":
72 case "FunctionExpression":
73 return false;
74
75 case "ExportNamespaceSpecifier":
76 case "ExportDefaultSpecifier":
77 return false;
78
79 case "ExportSpecifier":
80 if (grandparent != null && grandparent.source) {
81 return false;
82 }
83
84 return parent.local === node;
85
86 case "ImportDefaultSpecifier":
87 case "ImportNamespaceSpecifier":
88 case "ImportSpecifier":
89 return false;
90
91 case "JSXAttribute":
92 return false;
93
94 case "ObjectPattern":
95 case "ArrayPattern":
96 return false;
97
98 case "MetaProperty":
99 return false;
100
101 case "ObjectTypeProperty":
102 return parent.key !== node;
103
104 case "TSEnumMember":
105 return parent.id !== node;
106
107 case "TSPropertySignature":
108 if (parent.key === node) {
109 return !!parent.computed;
110 }
111
112 return true;
113 }
114
115 return true;
116}
\No newline at end of file