UNPKG

cannabis

Version:
161 lines 6.54 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); var misc_utils_of_mine_generic_1 = require("misc-utils-of-mine-generic"); var ts_simple_ast_extra_1 = require("ts-simple-ast-extra"); var config_1 = require("../query/config"); var astNode_1 = require("./astNode"); function getASTNodeType(node) { var propName = 'nodeType'; if (config_1.getConfig('cacheNodeType')) { var cached = astNode_1.getNodeProperty(node, propName); if (typeof cached !== 'undefined') { return cached; } } var value = misc_utils_of_mine_generic_1.tryTo(function () { return ts_simple_ast_extra_1.isNode(node) && node.getType(); }, null) || null; if (config_1.getConfig('cacheNodeType')) { astNode_1.setNodeProperty(node, propName, value); } return value; } exports.getASTNodeType = getASTNodeType; function getASTNodeTypeAsString(n) { //TODO: cache this one too? var t = getASTNodeType(n); var value = t ? t.getText() || '' : ''; return value; } exports.getASTNodeTypeAsString = getASTNodeTypeAsString; function getReturnType(n) { if (!ts_simple_ast_extra_1.isNode(n)) { return null; } var f; if (ts_simple_ast_extra_1.tsMorph.TypeGuards.isIdentifier(n)) { f = n.getDefinitionNodes().find(ts_simple_ast_extra_1.tsMorph.TypeGuards.isFunctionLikeDeclaration); } else if (ts_simple_ast_extra_1.tsMorph.TypeGuards.isFunctionLikeDeclaration(n)) { f = n; } else { return null; } if (!f) { return null; } return f.getReturnType() || null; } exports.getReturnType = getReturnType; function findReferences(n) { var propName = 'findReferences'; if (config_1.getConfig('cacheReferences')) { var cached = astNode_1.getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = ts_simple_ast_extra_1.isNode(n) && ts_simple_ast_extra_1.tsMorph.TypeGuards.isReferenceFindableNode(n) ? misc_utils_of_mine_generic_1.tryTo(function () { return n.findReferencesAsNodes(); }) : []; if (config_1.getConfig('cacheReferences')) { astNode_1.setNodeProperty(n, propName, value); } return value; } exports.findReferences = findReferences; function getExtended(n) { var propName = 'extended'; if (config_1.getConfig('cacheExtended')) { var cached = astNode_1.getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = []; if (ts_simple_ast_extra_1.tsMorph.TypeGuards.isClassDeclaration(n) || ts_simple_ast_extra_1.tsMorph.TypeGuards.isInterfaceDeclaration(n)) { value = __spreadArrays(ts_simple_ast_extra_1.getExtendsRecursively(n) .map(function (m) { return m.getFirstChildByKind(ts_simple_ast_extra_1.tsMorph.SyntaxKind.Identifier); })).map(function (i) { return ts_simple_ast_extra_1.tsMorph.TypeGuards.isIdentifier(i) ? ts_simple_ast_extra_1.getDefinitionsOf(i) : [undefined]; }) .flat() .filter(misc_utils_of_mine_generic_1.notUndefined); } if (config_1.getConfig('cacheExtended')) { astNode_1.setNodeProperty(n, propName, value); } return value; } exports.getExtended = getExtended; function getExtendedNames(n) { return getExtended(n).map(astNode_1.getASTNodeName); } exports.getExtendedNames = getExtendedNames; function getImplemented(n) { var propName = 'implemented'; if (config_1.getConfig('cacheImplemented')) { var cached = astNode_1.getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = ts_simple_ast_extra_1.tsMorph.TypeGuards.isClassDeclaration(n) ? ts_simple_ast_extra_1.getImplementsAll(n) : []; if (config_1.getConfig('cacheImplemented')) { astNode_1.setNodeProperty(n, propName, value); } return value; } exports.getImplemented = getImplemented; function getDerivedClasses(n) { var propName = 'derivedClasses'; if (config_1.getConfig('cacheDerivedClasses')) { var cached = astNode_1.getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = ts_simple_ast_extra_1.tsMorph.TypeGuards.isClassDeclaration(n) ? n.getDerivedClasses() : []; if (config_1.getConfig('cacheDerivedClasses')) { astNode_1.setNodeProperty(n, propName, value); } return value; } exports.getDerivedClasses = getDerivedClasses; function getImplementations(n) { var propName = 'implementations'; if (config_1.getConfig('cacheImplementations')) { var cached = astNode_1.getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = ts_simple_ast_extra_1.tsMorph.TypeGuards.isIdentifier(n) ? n.getImplementations().map(function (r) { return r.getNode(); }).filter(misc_utils_of_mine_generic_1.notUndefined) : []; if (config_1.getConfig('cacheImplementations')) { astNode_1.setNodeProperty(n, propName, value); } return value; } exports.getImplementations = getImplementations; function getImplementedNames(node) { return getImplemented(node).map(astNode_1.getASTNodeName); } exports.getImplementedNames = getImplementedNames; function localNames(n) { return misc_utils_of_mine_generic_1.tryTo(function () { return ts_simple_ast_extra_1.getNodeLocalNames(n); }); } exports.localNames = localNames; function localNamesNotReferencing(n, target) { return misc_utils_of_mine_generic_1.tryTo(function () { return ts_simple_ast_extra_1.getNodeLocalNamesNotReferencing(n, target); }) || []; } exports.localNamesNotReferencing = localNamesNotReferencing; function locals(n) { return misc_utils_of_mine_generic_1.tryTo(function () { return ts_simple_ast_extra_1.getLocals(n); }); } exports.locals = locals; function localsDeclarations(n) { return misc_utils_of_mine_generic_1.tryTo(function () { return ts_simple_ast_extra_1.getNodeLocalsDeclarations(n); }) || []; } exports.localsDeclarations = localsDeclarations; //# sourceMappingURL=astNodeType.js.map