isReferenced.js
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 }