magen
Version:
Magen, generate react apps with module architecture
91 lines (90 loc) • 4.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.routerContent = exports.schemaContent = exports.contextContent = exports.formHookContent = exports.formContent = exports.hookContent = exports.viewContent = exports.lowerFirstLetter = exports.snakeCase = exports.TEMPLATES_PATH = void 0;
const fs = require("fs");
const path = require("path");
exports.TEMPLATES_PATH = path.join(__dirname, "templates");
// convert string to snake_case
const snakeCase = (string) => {
return string
.replace(/\W+/g, " ")
.split(/ |\B(?=[A-Z])/)
.map((word) => word.toLowerCase())
.join("_");
};
exports.snakeCase = snakeCase;
// convert first letter to lower case
const lowerFirstLetter = (string) => {
return string.charAt(0).toLowerCase() + string.slice(1);
};
exports.lowerFirstLetter = lowerFirstLetter;
const viewContent = (sectionName) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/view.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
};
exports.viewContent = viewContent;
const hookContent = (sectionName) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/hook.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
};
exports.hookContent = hookContent;
const formContent = (sectionName) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/form.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
};
exports.formContent = formContent;
const formHookContent = ({ sectionName, schemaPath, }) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/formHook.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName))
.replace(/{{schemaPath}}/g, schemaPath);
};
exports.formHookContent = formHookContent;
const contextContent = (sectionName) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/context.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
};
exports.contextContent = contextContent;
const schemaContent = (sectionName) => {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/schema.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
};
exports.schemaContent = schemaContent;
const routerContent = ({ sectionName, routerType, }) => {
if (routerType === "None of the above") {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/generalRouter.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
}
if (routerType === "React Query") {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/reactQueryRouter.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
}
if (routerType === "tRPC") {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/trpcRouter.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
}
if (routerType === "Axios") {
const file = fs.readFileSync(`${exports.TEMPLATES_PATH}/axiosRouter.txt`, "utf8");
return file
.replace(/{{sectionName}}/g, sectionName)
.replace(/{{lowerFirstLetterSectionName}}/g, (0, exports.lowerFirstLetter)(sectionName));
}
};
exports.routerContent = routerContent;