ngrx-uml
Version:
NGRX to Plant UML diagram
38 lines (37 loc) • 1.76 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.printAst = exports.printAstRecursiveFrom = void 0;
const chalk_1 = __importDefault(require("chalk"));
const fs_1 = require("fs");
const loglevel_1 = __importDefault(require("loglevel"));
const os_1 = require("os");
const typescript_1 = __importDefault(require("typescript"));
const glob_1 = require("../utils/glob");
function printAstRecursiveFrom(node, sourceFile, indentLevel, lines) {
if (!typescript_1.default.isSourceFile(node)) {
const indentation = ' '.repeat(indentLevel);
const syntaxKind = typescript_1.default.SyntaxKind[node.kind];
const nodeText = node.getText(sourceFile);
lines.push(`${indentation}${chalk_1.default.yellow(syntaxKind)}: ${nodeText}`);
}
node.forEachChild(child => printAstRecursiveFrom(child, sourceFile, indentLevel + 1, lines));
}
exports.printAstRecursiveFrom = printAstRecursiveFrom;
function iterateFiles(fileNames) {
fileNames.forEach(fileName => {
loglevel_1.default.info('File:', fileName);
const sourceFile = typescript_1.default.createSourceFile(fileName, fs_1.readFileSync(fileName).toString(), typescript_1.default.ScriptTarget.ES2015);
loglevel_1.default.info(chalk_1.default.blue('FILE: ', fileName));
const lines = [];
printAstRecursiveFrom(sourceFile, sourceFile, 0, lines);
loglevel_1.default.info(lines.join(os_1.EOL));
});
}
exports.printAst = (source) => {
loglevel_1.default.info('printAst', source);
const files = glob_1.globSync(source, {});
iterateFiles(files);
};
;