ngrx-uml
Version:
NGRX to Plant UML diagram
69 lines (68 loc) • 3.17 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isSymbol = exports.createTsProgram = exports.getCallExpressionName = exports.syntaxKindText = void 0;
const chalk_1 = __importDefault(require("chalk"));
const loglevel_1 = __importDefault(require("loglevel"));
const typescript_1 = __importDefault(require("typescript"));
function syntaxKindText(element) {
return typescript_1.default.SyntaxKind[element.kind];
}
exports.syntaxKindText = syntaxKindText;
function getCallExpressionName(callExpression) {
return typescript_1.default.isIdentifier(callExpression.expression) ? callExpression.expression.text : undefined;
}
exports.getCallExpressionName = getCallExpressionName;
function readConfigFile(baseDir, configName) {
const configFileName = typescript_1.default.findConfigFile(baseDir, typescript_1.default.sys.fileExists, configName);
if (!configFileName) {
const errMsg = `Can't find ts-config file: '${configName}', baseDir: '${baseDir}'`;
loglevel_1.default.error('Error', chalk_1.default.red(errMsg));
throw new Error(errMsg);
}
loglevel_1.default.info(chalk_1.default.yellow(`Use ts-config file: ${configFileName}`));
return typescript_1.default.readConfigFile(configFileName, typescript_1.default.sys.readFile);
}
function createTsProgram(fileNames, baseDir, configName) {
loglevel_1.default.debug(chalk_1.default.yellowBright('baseDir:'), baseDir, chalk_1.default.yellowBright('configName:'), configName);
const configFileRef = readConfigFile(baseDir, configName);
if (configFileRef.error) {
loglevel_1.default.warn(configFileRef.error.messageText);
}
loglevel_1.default.trace('configFile', configFileRef.config);
const parseConfigHost = {
fileExists: typescript_1.default.sys.fileExists,
readFile: typescript_1.default.sys.readFile,
readDirectory: typescript_1.default.sys.readDirectory,
useCaseSensitiveFileNames: true
};
const compilerOptions = typescript_1.default.parseJsonConfigFileContent(configFileRef.config, parseConfigHost, baseDir);
loglevel_1.default.trace(chalk_1.default.yellow('CompilerOptions:'), compilerOptions.options);
const program = typescript_1.default.createProgram(fileNames, compilerOptions.options);
return program;
}
exports.createTsProgram = createTsProgram;
function isSymbol(object) {
return object.valueDeclaration != null;
}
exports.isSymbol = isSymbol;
function getAliasedSymbol(node, typeChecker) {
let nameSymbol = typeChecker.getSymbolAtLocation(node);
if (nameSymbol && nameSymbol.flags & typescript_1.default.SymbolFlags.AliasExcludes) {
const aliasedSymbol = typeChecker.getAliasedSymbol(nameSymbol);
if (!typeChecker.isUnknownSymbol(aliasedSymbol)) {
nameSymbol = aliasedSymbol;
}
}
return nameSymbol;
}
const tsutils = {
syntaxKindText,
getCallExpressionName,
createTsProgram,
isSymbol,
getAliasedSymbol
};
exports.default = tsutils;
;