UNPKG

autouml

Version:

Autogenerate UML diagrams using d2

90 lines (89 loc) 3.42 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildUML = void 0; var ts = __importStar(require("typescript")); var errors_1 = require("./errors"); var FileMapper_1 = require("../ast/FileMapper"); var codegen_1 = require("../d2/codegen"); var fs = __importStar(require("fs")); var path = __importStar(require("path")); var util = __importStar(require("node:util")); var VERBOSE = false; function verbose(msg) { if (VERBOSE) { console.log(msg); } } function inspect(a) { return util.inspect(a, false, null); } function tsconfigOptions(options) { var tsconfigName = ts.findConfigFile(options.baseDir, ts.sys.fileExists, options.tsconfigFileName); if (tsconfigName === undefined) { throw new errors_1.tsconfigFileNotFoundError(options.baseDir, options.tsconfigFileName); } var configFile = ts.readConfigFile(tsconfigName, ts.sys.readFile); var compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, "./"); return compilerOptions; } function buildUML(options) { if (options.verbose) { VERBOSE = true; } //find tsconfig verbose("Finding tsconfig"); var tsconfig = tsconfigOptions(options); verbose("Found tsconfig"); // get map of the project verbose("Constructing mapper"); // TODO: dont hardcode this var mapper = new FileMapper_1.FileMapper( // [ // ...tsconfig.fileNames, // `${options.baseDir}/typings/**.ts`, // ], tsconfig, options); verbose("Mapping files"); var _a = mapper.mapFiles(), programMap = _a[0], programConnectors = _a[1]; // verbose(inspect(mapper.getRelations())); // compile to target verbose("Selecting code generator"); var visitor; switch (options.target) { default: visitor = new codegen_1.d2Codegen(); } // write to file verbose("Generating code"); var code = visitor.visit(programMap, programConnectors); verbose("Writing code to ".concat(path.resolve(options.outPath))); fs.writeFileSync(options.outPath, code); if (options.debugASTPath !== "") { verbose("Writing AST to ".concat(path.resolve(options.debugASTPath))); fs.writeFileSync(options.debugASTPath, "// SCOPES\n".concat(inspect(programMap), "\n// CONNECTIONS\n").concat(inspect(programConnectors))); } } exports.buildUML = buildUML;