UNPKG

ui5plugin-parser

Version:
131 lines (130 loc) 5.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PackageParserConfigHandler = exports.Support = void 0; const fs = require("fs"); const path_1 = require("path"); const rc_config_loader_1 = require("rc-config-loader"); const HTTPHandler_1 = require("../http/HTTPHandler"); const AbstractFileReader_1 = require("../parsing/util/filereader/AbstractFileReader"); var Support; (function (Support) { Support["Maintenance"] = "Maintenance"; Support["OutOfMaintenance"] = "Out of maintenance"; Support["Skipped"] = "Skipped"; })(Support || (exports.Support = Support = {})); class PackageParserConfigHandler { static setGlobalConfigPath(fsPath) { this._globalConfig = JSON.parse(fs.readFileSync(fsPath, "utf8")) || {}; } static async loadVersionInfo(dataSource) { this._versionInfo = await HTTPHandler_1.HTTPHandler.get(`${dataSource}versionoverview.json`); } constructor(packagePath = (0, path_1.join)(process.cwd(), "/package.json")) { this.packagePath = (0, AbstractFileReader_1.toNative)(packagePath); this.loadCache(); } getProxyWorkspaces() { this.loadCache(); return (this._config.ui5?.ui5parser?.proxyWorkspaces ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.proxyWorkspaces); } loadCache() { try { if (PackageParserConfigHandler.configCache[this.packagePath]) { this._config = PackageParserConfigHandler.configCache[this.packagePath]; } else { const cwd = (0, path_1.dirname)(this.packagePath); const { config, filePath } = (0, rc_config_loader_1.rcFile)("ui5plugin", { cwd: cwd, packageJSON: { fieldName: "ui5" } }) ?? { config: {} }; if (filePath && (0, AbstractFileReader_1.toNative)((0, path_1.dirname)(filePath)) === (0, AbstractFileReader_1.toNative)(cwd)) { this._config = filePath?.endsWith("package.json") ? { ui5: config } : config; PackageParserConfigHandler.configCache[this.packagePath] = this._config; this.configPath = filePath; } else { this._config = {}; } } } catch (error) { this._config = {}; } } getAdditionalWorkspaces() { return (this._config.ui5?.ui5parser?.additionalWorkspaces ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.additionalWorkspaces ?? []); } getUI5Version() { const version = this._config?.ui5?.ui5parser?.ui5version ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.ui5version ?? "1.120"; const hasNoPatch = version.split(".").length === 2; let fullVersion; if (hasNoPatch) { fullVersion = this._findLatestVersionFor(version); } else { fullVersion = version; } return fullVersion; } _findLatestVersionFor(version) { if (version.split(".").length === 3) { return version; } const patches = PackageParserConfigHandler._versionInfo?.patches.filter(patch => patch.version.startsWith(`${version}.`)); patches?.sort((patchA, patchB) => { const patchANumber = patchA.version.split(".").at(2) ?? "0"; const patchBNumber = patchB.version.split(".").at(2) ?? "0"; return parseInt(patchBNumber, 10) - parseInt(patchANumber, 10); }); return patches?.at(0)?.version ?? `${version}.0`; } getExcludeFolderPatterns() { const userExclusions = this._config?.ui5?.ui5parser?.excludeFolderPatterns ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.excludeFolderPatterns ?? []; userExclusions.push("**/resources/**", "**/dist/**", "**/node_modules/**"); return userExclusions; } getDataSource() { return (this._config?.ui5?.ui5parser?.dataSource ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.dataSource ?? "https://ui5.sap.com/"); } getRejectUnauthorized() { return (this._config?.ui5?.ui5parser?.rejectUnauthorized ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.rejectUnauthorized ?? true); } getLibsToLoad() { const additionalLibsToLoad = this._config?.ui5?.ui5parser?.libsToLoad ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.libsToLoad ?? []; return [ "sap.m", "sap.ui.comp", "sap.f", "sap.ui.core", "sap.ui.commons", "sap.ui.export", "sap.ui.layout", "sap.ui.support", "sap.ui.table", "sap.ui.unified", "sap.ushell", "sap.tnt", "sap.suite.ui.microchart" ].concat(additionalLibsToLoad); } getNodeProjects() { return (this._config?.ui5?.ui5parser?.nodeProjects ?? PackageParserConfigHandler._globalConfig?.ui5?.ui5parser?.nodeProjects ?? []); } } exports.PackageParserConfigHandler = PackageParserConfigHandler; PackageParserConfigHandler.configCache = {};