cannabis
Version:
TypeScript AST Query library
161 lines • 6.54 kB
JavaScript
;
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