UNPKG

@jqassistant/ts-lce

Version:

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

53 lines (52 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessorPropertyTraverser = exports.PropertyTraverser = 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"); class PropertyTraverser extends traverser_1.Traverser { static KEY_PROP = "key"; static INITIALIZER_PROP = "initializer"; static DECORATORS_PROP = "decorators"; static TYPE_ANNOTATION_PROP = "type-annotation"; traverseChildren(processingContext, processors) { const { node } = processingContext; const conceptMaps = []; if (node.type === utils_1.AST_NODE_TYPES.PropertyDefinition || node.type === utils_1.AST_NODE_TYPES.Property || node.type === utils_1.AST_NODE_TYPES.TSPropertySignature) { (0, traverser_utils_1.runTraverserForNode)(node.key, { parentPropName: PropertyTraverser.KEY_PROP }, processingContext, processors, conceptMaps); if (node.type === utils_1.AST_NODE_TYPES.PropertyDefinition || node.type === utils_1.AST_NODE_TYPES.TSPropertySignature) { if (node.typeAnnotation) (0, traverser_utils_1.runTraverserForNode)(node.typeAnnotation, { parentPropName: PropertyTraverser.TYPE_ANNOTATION_PROP }, processingContext, processors, conceptMaps); } if (node.type === utils_1.AST_NODE_TYPES.PropertyDefinition || node.type === utils_1.AST_NODE_TYPES.Property) { if (node.value) (0, traverser_utils_1.runTraverserForNode)(node.value, { parentPropName: PropertyTraverser.INITIALIZER_PROP }, processingContext, processors, conceptMaps); if (node.type === utils_1.AST_NODE_TYPES.PropertyDefinition && node.decorators) (0, traverser_utils_1.runTraverserForNodes)(node.decorators, { parentPropName: PropertyTraverser.DECORATORS_PROP }, processingContext, processors, conceptMaps); } } return (0, concept_1.mergeConceptMaps)(...conceptMaps); } } exports.PropertyTraverser = PropertyTraverser; class AccessorPropertyTraverser extends traverser_1.Traverser { static KEY_PROP = "key"; static INITIALIZER_PROP = "initializer"; static DECORATORS_PROP = "decorators"; traverseChildren(processingContext, processors) { const { node } = processingContext; const conceptMaps = []; if (node.type === utils_1.AST_NODE_TYPES.AccessorProperty || node.type === utils_1.AST_NODE_TYPES.TSAbstractAccessorProperty) { (0, traverser_utils_1.runTraverserForNode)(node.key, { parentPropName: AccessorPropertyTraverser.KEY_PROP }, processingContext, processors, conceptMaps); if (node.value) (0, traverser_utils_1.runTraverserForNode)(node.value, { parentPropName: AccessorPropertyTraverser.INITIALIZER_PROP }, processingContext, processors, conceptMaps); if (node.decorators) (0, traverser_utils_1.runTraverserForNodes)(node.decorators, { parentPropName: AccessorPropertyTraverser.DECORATORS_PROP }, processingContext, processors, conceptMaps); } return (0, concept_1.mergeConceptMaps)(...conceptMaps); } } exports.AccessorPropertyTraverser = AccessorPropertyTraverser;