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