UNPKG

ngrx-uml

Version:
37 lines (36 loc) 1.75 kB
"use strict"; 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); } };