ui5plugin-parser
Version:
131 lines (130 loc) • 5.39 kB
JavaScript
;
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 = {};