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 "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 |