analyze-scope.cjs.map
19.7 KB
{"version":3,"names":["Definition","PatternVisitor","OriginalPatternVisitor","Referencer","OriginalReferencer","Scope","ScopeManager","require","getKeys","fallback","visitorKeysMap","getVisitorValues","nodeType","client","FLOW_FLIPPED_ALIAS_KEYS","VISITOR_KEYS","getTypesInfo","flowFlippedAliasKeys","concat","Object","entries","reduce","acc","key","value","includes","propertyTypes","callProperties","type","values","indexers","properties","types","params","argument","elementType","qualification","rest","returnType","typeAnnotation","typeParameters","id","ArrayPattern","node","elements","forEach","visit","ObjectPattern","constructor","options","scopeManager","visitPattern","callback","_checkIdentifierOrVisit","left","processRightHandNodes","visitor","rightHandNodes","visitClass","_visitArray","decorators","typeParamScope","_nestTypeParamScope","_visitTypeAnnotation","implements","superTypeParameters","close","visitFunction","visitProperty","InterfaceDeclaration","_createScopeVariable","extends","body","TypeAlias","right","ClassProperty","_visitClassProperty","ClassPrivateProperty","PropertyDefinition","ClassPrivateMethod","MethodDefinition","DeclareModule","_visitDeclareX","DeclareFunction","DeclareVariable","DeclareClass","OptionalMemberExpression","MemberExpression","name","currentScope","variableScope","__define","parentScope","__currentScope","scope","__nestScope","j","length","apply","arguments","Array","isArray","visitorValues","i","visitorValue","propertyType","nodeProperty","k","loopPropertyNode","l","nodeList","module","exports","analyzeScope","ast","parserOptions","ignoreEval","optimistic","directive","nodejsScope","sourceType","ecmaFeatures","globalReturn","impliedStrict","ecmaVersion","childVisitorKeys","getVisitorKeys","referencer"],"sources":["../src/analyze-scope.cjs"],"sourcesContent":["const {\n Definition,\n PatternVisitor: OriginalPatternVisitor,\n Referencer: OriginalReferencer,\n Scope,\n ScopeManager,\n} = process.env.BABEL_8_BREAKING\n ? require(\"eslint-scope\")\n : require(\"@nicolo-ribaudo/eslint-scope-5-internals\");\nconst { getKeys: fallback } = require(\"eslint-visitor-keys\");\n\nlet visitorKeysMap;\nfunction getVisitorValues(nodeType, client) {\n if (visitorKeysMap) return visitorKeysMap[nodeType];\n\n const { FLOW_FLIPPED_ALIAS_KEYS, VISITOR_KEYS } = client.getTypesInfo();\n\n const flowFlippedAliasKeys = FLOW_FLIPPED_ALIAS_KEYS.concat([\n \"ArrayPattern\",\n \"ClassDeclaration\",\n \"ClassExpression\",\n \"FunctionDeclaration\",\n \"FunctionExpression\",\n \"Identifier\",\n \"ObjectPattern\",\n \"RestElement\",\n ]);\n\n visitorKeysMap = Object.entries(VISITOR_KEYS).reduce((acc, [key, value]) => {\n if (!flowFlippedAliasKeys.includes(value)) {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return visitorKeysMap[nodeType];\n}\n\nconst propertyTypes = {\n // loops\n callProperties: { type: \"loop\", values: [\"value\"] },\n indexers: { type: \"loop\", values: [\"key\", \"value\"] },\n properties: { type: \"loop\", values: [\"argument\", \"value\"] },\n types: { type: \"loop\" },\n params: { type: \"loop\" },\n // single property\n argument: { type: \"single\" },\n elementType: { type: \"single\" },\n qualification: { type: \"single\" },\n rest: { type: \"single\" },\n returnType: { type: \"single\" },\n // others\n typeAnnotation: { type: \"typeAnnotation\" },\n typeParameters: { type: \"typeParameters\" },\n id: { type: \"id\" },\n};\n\nclass PatternVisitor extends OriginalPatternVisitor {\n ArrayPattern(node) {\n node.elements.forEach(this.visit, this);\n }\n\n ObjectPattern(node) {\n node.properties.forEach(this.visit, this);\n }\n}\n\nclass Referencer extends OriginalReferencer {\n #client;\n\n constructor(options, scopeManager, client) {\n super(options, scopeManager);\n this.#client = client;\n }\n\n // inherits.\n visitPattern(node, options, callback) {\n if (!node) {\n return;\n }\n\n // Visit type annotations.\n this._checkIdentifierOrVisit(node.typeAnnotation);\n if (node.type === \"AssignmentPattern\") {\n this._checkIdentifierOrVisit(node.left.typeAnnotation);\n }\n\n // Overwrite `super.visitPattern(node, options, callback)` in order to not visit `ArrayPattern#typeAnnotation` and `ObjectPattern#typeAnnotation`.\n if (typeof options === \"function\") {\n callback = options;\n options = { processRightHandNodes: false };\n }\n\n const visitor = new PatternVisitor(this.options, node, callback);\n visitor.visit(node);\n\n // Process the right hand nodes recursively.\n if (options.processRightHandNodes) {\n visitor.rightHandNodes.forEach(this.visit, this);\n }\n }\n\n // inherits.\n visitClass(node) {\n // Decorators.\n this._visitArray(node.decorators);\n\n // Flow type parameters.\n const typeParamScope = this._nestTypeParamScope(node);\n\n // Flow super types.\n this._visitTypeAnnotation(node.implements);\n this._visitTypeAnnotation(\n node.superTypeParameters && node.superTypeParameters.params,\n );\n\n // Basic.\n super.visitClass(node);\n\n // Close the type parameter scope.\n if (typeParamScope) {\n this.close(node);\n }\n }\n\n // inherits.\n visitFunction(node) {\n const typeParamScope = this._nestTypeParamScope(node);\n\n // Flow return types.\n this._checkIdentifierOrVisit(node.returnType);\n\n // Basic.\n super.visitFunction(node);\n\n // Close the type parameter scope.\n if (typeParamScope) {\n this.close(node);\n }\n }\n\n // inherits.\n visitProperty(node) {\n if (node.value?.type === \"TypeCastExpression\") {\n this._visitTypeAnnotation(node.value);\n }\n this._visitArray(node.decorators);\n super.visitProperty(node);\n }\n\n InterfaceDeclaration(node) {\n this._createScopeVariable(node, node.id);\n\n const typeParamScope = this._nestTypeParamScope(node);\n\n // TODO: Handle mixins\n this._visitArray(node.extends);\n this.visit(node.body);\n\n if (typeParamScope) {\n this.close(node);\n }\n }\n\n TypeAlias(node) {\n this._createScopeVariable(node, node.id);\n\n const typeParamScope = this._nestTypeParamScope(node);\n\n this.visit(node.right);\n\n if (typeParamScope) {\n this.close(node);\n }\n }\n\n ClassProperty(node) {\n this._visitClassProperty(node);\n }\n\n ClassPrivateProperty(node) {\n this._visitClassProperty(node);\n }\n\n PropertyDefinition(node) {\n this._visitClassProperty(node);\n }\n\n // TODO: Update to visit type annotations when TypeScript/Flow support this syntax.\n ClassPrivateMethod(node) {\n super.MethodDefinition(node);\n }\n\n DeclareModule(node) {\n this._visitDeclareX(node);\n }\n\n DeclareFunction(node) {\n this._visitDeclareX(node);\n }\n\n DeclareVariable(node) {\n this._visitDeclareX(node);\n }\n\n DeclareClass(node) {\n this._visitDeclareX(node);\n }\n\n // visit OptionalMemberExpression as a MemberExpression.\n OptionalMemberExpression(node) {\n super.MemberExpression(node);\n }\n\n _visitClassProperty(node) {\n this._visitTypeAnnotation(node.typeAnnotation);\n this.visitProperty(node);\n }\n\n _visitDeclareX(node) {\n if (node.id) {\n this._createScopeVariable(node, node.id);\n }\n\n const typeParamScope = this._nestTypeParamScope(node);\n if (typeParamScope) {\n this.close(node);\n }\n }\n\n _createScopeVariable(node, name) {\n this.currentScope().variableScope.__define(\n name,\n new Definition(\"Variable\", name, node, null, null, null),\n );\n }\n\n _nestTypeParamScope(node) {\n if (!node.typeParameters) {\n return null;\n }\n\n const parentScope = this.scopeManager.__currentScope;\n const scope = new Scope(\n this.scopeManager,\n \"type-parameters\",\n parentScope,\n node,\n false,\n );\n\n this.scopeManager.__nestScope(scope);\n for (let j = 0; j < node.typeParameters.params.length; j++) {\n const name = node.typeParameters.params[j];\n scope.__define(name, new Definition(\"TypeParameter\", name, name));\n if (name.typeAnnotation) {\n this._checkIdentifierOrVisit(name);\n }\n }\n scope.__define = function () {\n return parentScope.__define.apply(parentScope, arguments);\n };\n\n return scope;\n }\n\n _visitTypeAnnotation(node) {\n if (!node) {\n return;\n }\n if (Array.isArray(node)) {\n node.forEach(this._visitTypeAnnotation, this);\n return;\n }\n\n // get property to check (params, id, etc...)\n const visitorValues = getVisitorValues(node.type, this.#client);\n if (!visitorValues) {\n return;\n }\n\n // can have multiple properties\n for (let i = 0; i < visitorValues.length; i++) {\n const visitorValue = visitorValues[i];\n const propertyType = propertyTypes[visitorValue];\n const nodeProperty = node[visitorValue];\n // check if property or type is defined\n if (propertyType == null || nodeProperty == null) {\n continue;\n }\n if (propertyType.type === \"loop\") {\n for (let j = 0; j < nodeProperty.length; j++) {\n if (Array.isArray(propertyType.values)) {\n for (let k = 0; k < propertyType.values.length; k++) {\n const loopPropertyNode = nodeProperty[j][propertyType.values[k]];\n if (loopPropertyNode) {\n this._checkIdentifierOrVisit(loopPropertyNode);\n }\n }\n } else {\n this._checkIdentifierOrVisit(nodeProperty[j]);\n }\n }\n } else if (propertyType.type === \"single\") {\n this._checkIdentifierOrVisit(nodeProperty);\n } else if (propertyType.type === \"typeAnnotation\") {\n this._visitTypeAnnotation(node.typeAnnotation);\n } else if (propertyType.type === \"typeParameters\") {\n for (let l = 0; l < node.typeParameters.params.length; l++) {\n this._checkIdentifierOrVisit(node.typeParameters.params[l]);\n }\n } else if (propertyType.type === \"id\") {\n if (node.id.type === \"Identifier\") {\n this._checkIdentifierOrVisit(node.id);\n } else {\n this._visitTypeAnnotation(node.id);\n }\n }\n }\n }\n\n _checkIdentifierOrVisit(node) {\n if (node?.typeAnnotation) {\n this._visitTypeAnnotation(node.typeAnnotation);\n } else if (node?.type === \"Identifier\") {\n this.visit(node);\n } else {\n this._visitTypeAnnotation(node);\n }\n }\n\n _visitArray(nodeList) {\n if (nodeList) {\n for (const node of nodeList) {\n this.visit(node);\n }\n }\n }\n}\n\nmodule.exports = function analyzeScope(ast, parserOptions, client) {\n const options = {\n ignoreEval: true,\n optimistic: false,\n directive: false,\n nodejsScope:\n ast.sourceType === \"script\" &&\n parserOptions.ecmaFeatures?.globalReturn === true,\n impliedStrict: false,\n sourceType: ast.sourceType,\n ecmaVersion: parserOptions.ecmaVersion,\n fallback,\n };\n\n options.childVisitorKeys = client.getVisitorKeys();\n\n const scopeManager = new ScopeManager(options);\n const referencer = new Referencer(options, scopeManager, client);\n\n referencer.visit(ast);\n\n return scopeManager;\n};\n"],"mappings":"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"}