UNPKG

cannabis

Version:
140 lines 5.4 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 file_1 = require("../query/file"); /** * Returns immediate children. In case of Nodes, children are obtained using forEachChild or getChildren according to * given getChildren parameter or to global config */ function getASTNodeChildren(f, getChildren) { if (getChildren === void 0) { getChildren = config_1.getConfig('getChildren'); } return !f ? [] : ts_simple_ast_extra_1.isDirectory(f) ? f.getDirectories().concat(f.getSourceFiles()).filter(function (f) { return config_1.getConfig('includeFilesInNodeModules') || !getASTNodeFilePath(f).includes('node_modules'); }) : f ? getChildren ? f.getChildren() : f.forEachChildAsArray() : []; } exports.getASTNodeChildren = getASTNodeChildren; function getASTNodeParent(f) { return !f ? undefined : ts_simple_ast_extra_1.isDirectory(f) ? (f.getParent() && f.getParent().isDescendantOf(file_1.getASTRoot().getRootDirectory()) ? f.getParent() : undefined) : ts_simple_ast_extra_1.isSourceFile(f) ? f.getDirectory() : f.getParent(); } exports.getASTNodeParent = getASTNodeParent; function getASTNodeSiblings(n) { if (ts_simple_ast_extra_1.isSourceFile(n)) { var p = n.getDirectory(); if (p && p !== n) { return p.getSourceFiles().filter(function (f) { return f !== n; }); } } else if (ts_simple_ast_extra_1.isDirectory(n)) { var p = n.getParent(); if (p && p !== n) { return p.getDirectories().filter(function (f) { return f !== n; }); } } else { return __spreadArrays(n.getNextSiblings(), n.getPreviousSiblings()); } return []; } exports.getASTNodeSiblings = getASTNodeSiblings; function getASTNodeAncestors(n) { var propName = 'ancestors'; if (config_1.getConfig('cacheAncestors')) { var cached = getNodeProperty(n, propName); if (typeof cached !== 'undefined') { return cached; } } var value = []; var b = n; while ((b = getASTNodeParent(b)) && b !== n) { value.push(b); } if (config_1.getConfig('cacheAncestors')) { setNodeProperty(n, propName, value); } return value; } exports.getASTNodeAncestors = getASTNodeAncestors; /** * Gets a ASTNode that represents the SourceFile of given node, or undefined if it doesn't apply (i.e, given node is a directory). */ function getASTSourceFile(f) { return !f ? undefined : ts_simple_ast_extra_1.isDirectory(f) ? undefined : ts_simple_ast_extra_1.isSourceFile(f) ? f : f.getSourceFile(); } exports.getASTSourceFile = getASTSourceFile; function isASTNode(f) { return f && (ts_simple_ast_extra_1.isNode(f) || ts_simple_ast_extra_1.isDirectory(f)); } exports.isASTNode = isASTNode; function getASTNodeKindName(n) { return !n ? '' : ts_simple_ast_extra_1.isNode(n) ? n.getKindName() : 'Directory'; } exports.getASTNodeKindName = getASTNodeKindName; function getASTNodeName(node) { if (ts_simple_ast_extra_1.isDirectory(node) || ts_simple_ast_extra_1.isSourceFile(node)) { return node.getBaseName() || ''; } else { return ts_simple_ast_extra_1.getName(node) || ''; } } exports.getASTNodeName = getASTNodeName; function setNodeProperty(n, path, value) { ts_simple_ast_extra_1.setNodeProperty(n, __spreadArrays(['cannabis'], misc_utils_of_mine_generic_1.asArray(path)), value); } exports.setNodeProperty = setNodeProperty; function getNodeProperty(n, path) { return ts_simple_ast_extra_1.getNodeProperty(n, __spreadArrays(['cannabis'], misc_utils_of_mine_generic_1.asArray(path))); } exports.getNodeProperty = getNodeProperty; function getASTNodeText(n) { return !n ? '' : ts_simple_ast_extra_1.isDirectory(n) ? n.getPath() : ts_simple_ast_extra_1.isNode(n) ? n.getText() : ''; } exports.getASTNodeText = getASTNodeText; function getASTNodeFilePath(n) { return ts_simple_ast_extra_1.isDirectory(n) ? n.getPath() : n ? n.getSourceFile().getFilePath() : ''; } exports.getASTNodeFilePath = getASTNodeFilePath; function visit(n, v, childrenFirst, parent, level) { if (childrenFirst === void 0) { childrenFirst = config_1.getConfig('visitChildrenFirst'); } if (level === void 0) { level = 0; } if (!n) { return; } if (!childrenFirst && v(n, parent, level)) { return true; } getASTNodeChildren(n).forEach(function (c) { visit(c, v, childrenFirst, n, level + 1); }); return childrenFirst && v(n, parent, level); } exports.visit = visit; function getASTNodeDescendants(node) { var a = []; visit(node, function (n) { a.push(n); return false; }); return a; } exports.getASTNodeDescendants = getASTNodeDescendants; //# sourceMappingURL=astNode.js.map