Files
Fulfillment-Frontend/src/modules/modulesFileGen/modulesFileGen.cjs

62 lines
2.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var axios_1 = require("axios");
var fs = require("fs");
// endregion
var OUTPUT_FILE = "./src/modules/modules.tsx";
function camelToConstCase(camelStr) {
return camelStr
.replace(/([a-z])([A-Z])/g, "$1_$2")
.toUpperCase();
}
var writeToFile = function (data) {
try {
fs.writeFileSync(OUTPUT_FILE, data.trim());
console.log("File successfully generated.");
}
catch (error) {
console.error(error);
}
};
var getImports = function (modules) {
var prefix = "import { ";
var postfix = " } from \"@tabler/icons-react\"\n" +
"import ModulesType from \"./types.tsx\";\n" +
"import connectModules from \"./connectModules.tsx\";";
var filteredModules = modules.filter(function (module) { return module.iconName; });
var icons = filteredModules.map(function (module) { return module.iconName; }).join(", ");
return prefix + icons + postfix;
};
var getModuleNames = function (modules) {
return modules.map(function (module) {
return "".concat(camelToConstCase(module.key), " = \"").concat(module.key, "\"");
}).join(",\n\t");
};
var getModules = function (modules) {
return modules.map(function (module) {
var iconStr = "null";
if (module.iconName) {
iconStr = "<" + module.iconName + " />";
}
return "[ModuleNames.".concat(camelToConstCase(module.key), "]: { info: { label: \"").concat(module.label, "\", key: \"").concat(module.key, "\", icon: ").concat(iconStr, " } }");
}).join(",\n\t");
};
var generateRows = function (modules) {
var imports = getImports(modules);
var moduleNames = "\n\nexport enum ModuleNames {\n\t".concat(getModuleNames(modules), "\n}\n");
var modulesStr = "\nconst modules: ModulesType = {\n\t".concat(getModules(modules), "\n};\n");
var connectModules = "\nexport const MODULES = connectModules(modules);";
var result = imports + moduleNames + modulesStr + connectModules;
writeToFile(result);
};
var modulesFileGen = function () {
console.log("Start file generation...");
axios_1.default
.get("http://127.0.0.1:8000/project/modules")
.then(function (response) {
generateRows(response.data.modules);
})
.catch(function (err) { return console.log(err); });
};
modulesFileGen();