UNPKG

@jqassistant/ts-lce

Version:

Tool to extract language concepts from a TypeScript codebase and export them to a JSON file.

37 lines (36 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FunctionTraverser = void 0; const utils_1 = require("@typescript-eslint/utils"); const concept_1 = require("../concept"); const traverser_1 = require("../traverser"); const traverser_utils_1 = require("../utils/traverser.utils"); /** * Traversal of function declarations and expressions. * * Note: see also combined use with method declarations in `MethodTraverser` */ class FunctionTraverser extends traverser_1.Traverser { static TYPE_PARAMETERS_PROP = "type-parameters"; static PARAMETERS_PROP = "parameters"; static BODY_PROP = "body"; static RETURN_TYPE_PROP = "return-type"; traverseChildren(processingContext, processors) { const { node } = processingContext; const conceptMaps = []; if (node.type === utils_1.AST_NODE_TYPES.FunctionDeclaration || node.type === utils_1.AST_NODE_TYPES.FunctionExpression || node.type === utils_1.AST_NODE_TYPES.TSDeclareFunction || node.type === utils_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression) { if (node.typeParameters) (0, traverser_utils_1.runTraverserForNode)(node.typeParameters, { parentPropName: FunctionTraverser.TYPE_PARAMETERS_PROP }, processingContext, processors, conceptMaps); (0, traverser_utils_1.runTraverserForNodes)(node.params, { parentPropName: FunctionTraverser.PARAMETERS_PROP }, processingContext, processors, conceptMaps); if (node.body) (0, traverser_utils_1.runTraverserForNode)(node.body, { parentPropName: FunctionTraverser.BODY_PROP }, processingContext, processors, conceptMaps); if (node.returnType) (0, traverser_utils_1.runTraverserForNode)(node.returnType, { parentPropName: FunctionTraverser.RETURN_TYPE_PROP }, processingContext, processors, conceptMaps); } return (0, concept_1.mergeConceptMaps)(...conceptMaps); } } exports.FunctionTraverser = FunctionTraverser;