ngrx-uml
Version:
NGRX to Plant UML diagram
37 lines (36 loc) • 1.75 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.printAstVariablesInProgram = void 0;
const chalk_1 = __importDefault(require("chalk"));
const loglevel_1 = __importDefault(require("loglevel"));
const typescript_1 = __importDefault(require("typescript"));
const glob_1 = require("../utils/glob");
const tsutils_1 = require("../utils/tsutils");
function recursivelyPrintVariableDeclarations(node, sourceFile, typeChecker) {
if (typescript_1.default.isVariableDeclaration(node)) {
const kind = typescript_1.default.SyntaxKind[node.kind];
const type = typeChecker.getTypeAtLocation(node);
const typeName = typeChecker.typeToString(type, node);
loglevel_1.default.info(`${chalk_1.default.yellow(kind)} : (${typeName})`);
}
node.forEachChild(child => recursivelyPrintVariableDeclarations(child, sourceFile, typeChecker));
}
exports.printAstVariablesInProgram = (source, baseDir, configName) => {
loglevel_1.default.info('printAstInProgram', source, baseDir, configName);
const files = glob_1.globSync(source, {});
if (!files || files.length < 1) {
loglevel_1.default.info('No files found');
return;
}
const program = tsutils_1.createTsProgram(files, baseDir, configName);
const fileName = files[0];
loglevel_1.default.info(`File: ${chalk_1.default.yellow(fileName)}`);
const sourceFile = program.getSourceFile(fileName);
const typeChecker = program.getTypeChecker();
if (sourceFile) {
recursivelyPrintVariableDeclarations(sourceFile, sourceFile, typeChecker);
}
};
;