UNPKG

magen

Version:

Magen, generate react apps with module architecture

91 lines (90 loc) 4.24 kB
"use strict"; 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;