frgen 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("json-schema-to-typescript"),o=require("url"),a=require("node:module"),c=require("module"),s="undefined"!=typeof document?document.currentScript:null,i=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},u=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},p=function(e){return e.replace(/[_\-\s]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join("")},l=function(e){return["string"].includes(e)},m=function(e){return["integer","number"].includes(e)},d=function(e){return["boolean"].includes(e)},f=function(e){n.existsSync(e)||n.mkdirSync(e,{recursive:!0})},g=function(e,t,r){n.writeFile(e,t,(function(n){n?console.error("❌ Error writing file ".concat(e,":"),n.message):console.log("✅ ".concat(r))}))},v=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(a){var c,s;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return",null);case 2:if(c=t.join(process.cwd(),a),n.existsSync(c)){e.next=6;break}return console.warn("⚠️ Template not found: ".concat(a)),e.abrupt("return",null);case 6:return e.prev=6,e.next=9,import(o.pathToFileURL(c).href);case 9:return s=e.sent,e.abrupt("return",s.default);case 13:return e.prev=13,e.t0=e.catch(6),console.error("❌ Error loading template ".concat(a,":"),e.t0.message),e.abrupt("return",null);case 17:case"end":return e.stop()}}),r,null,[[6,13]])})));return function(e){return r.apply(this,arguments)}}(),h=function(n){return Object.entries(n).map((function(n){var t=e.slicedToArray(n,2),r=t[0],o=t[1],a={key:r,type:Array.isArray(o.type)?o.type[0]:o.type};return o.format&&["date","date-time"].includes(o.format)&&(a.format=o.format),o.enum&&(a.enum=o.enum),a}))},y=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,o){var a,c,s,l,m,d,h,y,x;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,a=r.title,c="".concat(u(a),".service.ts"),s=i(a),l=u(a),m=p(a),d=t.join(process.cwd(),"src","services",c),h=t.dirname(d),y="",e.next=11,v(o);case 11:x=e.sent,y=x?x({modelName:a,serviceName:s,urlName:l,funcName:m}):"import { ".concat(m,' } from "@typings/model";\nimport { EventSend } from "ezhooks";\n\nconst baseUrl = "http://localhost:3000/api";\n\nexport const ').concat(s,"Url = {\n index: `${baseUrl}/").concat(l,"`,\n view: `${baseUrl}/").concat(l,"/:id`,\n remove: `${baseUrl}/").concat(l,"/:id`,\n};\n\nexport const get").concat(m," = async (event: EventSend): Promise<HttpResponse<").concat(m,"[]>> => {\n let url = ").concat(s,"Url.index;\n const params = new URLSearchParams(event.params);\n \n if (params.size > 0) {\n url += `?${params.toString()}`;\n }\n \n const resp = await fetch(url, {\n signal: event.ctr?.signal,\n });\n \n return resp.json();\n};\n\nexport const get").concat(m,"ID = (id: number) => async (event: EventSend): Promise<HttpResponse<").concat(m,">> => {\n const res = await fetch(").concat(s,"Url.view.replace(':id', String(id)), {\n signal: event.ctr?.signal,\n });\n return res.json();\n};\n\nexport const post").concat(m," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "POST",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const put').concat(m," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "PUT",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const delete').concat(m," = async (event: EventSend) => {\n return fetch(").concat(s,"Url.remove.replace(':id', event.params.id), {\n method: \"DELETE\",\n signal: event.ctr?.signal,\n });\n};\n"),f(h),g(d,y,"Service ".concat(c," created")),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(0),console.error("❌ Error generating service for ".concat(r.title,":"),e.t0.message);case 20:case"end":return e.stop()}}),n,null,[[0,17]])})));return function(e,t){return n.apply(this,arguments)}}(),x=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,o,a){var c,s,i,p,l,m,d,y;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,c=r.title,s=r.properties,i="".concat(a,".page.tsx"),p=t.join(process.cwd(),"src","pages",u(c),i),l=t.dirname(p),m="",e.next=8,v(o);case 8:(d=e.sent)&&(y="index"===a||"view"===a?{modelName:c,columns:h(s)}:{modelName:c,jsonSchema:r},m=d(y)),f(l),g(p,m,"".concat(c," ").concat(i," created")),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ Error generating ".concat(a," page for ").concat(r.title,":"),e.t0.message);case 17:case"end":return e.stop()}}),n,null,[[0,14]])})));return function(e,t,r){return n.apply(this,arguments)}}(),w=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"index");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),b=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"view");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),S=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"create");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),R=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"update");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),j=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r){var o,a,c,s,i,p,l,m=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=m.length>2?m[2]:void 0,e.prev=2,a=r.title,c="Form.tsx",s=t.join(process.cwd(),"src","pages",u(a),"partial",c),i=t.dirname(s),p="",e.next=10,v(o);case 10:(l=e.sent)&&(p=l({modelName:a,jsonSchema:r})),f(i),g(s,p,"".concat(a," ").concat(c," created")),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(2),console.error("❌ Error generating form for ".concat(r.title,":"),e.t0.message);case 19:case"end":return e.stop()}}),n,null,[[2,16]])})));return function(e){return n.apply(this,arguments)}}(),T=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){var i,u,p,l,m;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=[t.resolve("regen.config.ts"),t.resolve("regen.config.js")],u=i.find((function(e){return n.existsSync(e)}))){e.next=4;break}return e.abrupt("return",{templateDir:void 0});case 4:if(e.prev=4,!u.endsWith(".ts")){e.next=22;break}e.prev=6,a.register("tsx",o.pathToFileURL("./")),e.next=22;break;case 10:e.prev=10,e.t0=e.catch(6),e.prev=12,c.createRequire("undefined"==typeof document?require("url").pathToFileURL(__filename).href:s&&"SCRIPT"===s.tagName.toUpperCase()&&s.src||new URL("react/mui.gen.js",document.baseURI).href)("ts-node/register"),e.next=22;break;case 17:return e.prev=17,e.t1=e.catch(12),console.error("⚠️ TypeScript config found but tsx/ts-node not installed."),console.log(" Install with: npm install -D tsx or npm install -D ts-node"),e.abrupt("return",{templateDir:void 0});case 22:return l=o.pathToFileURL(u).href,e.next=25,import(l);case 25:return m=e.sent,e.abrupt("return",JSON.parse(JSON.stringify(null!==(p=m.default)&&void 0!==p?p:{})));case 29:return e.prev=29,e.t2=e.catch(4),console.error("⚠️ Error loading config file:",e.t2.message),e.abrupt("return",{templateDir:void 0});case 33:case"end":return e.stop()}}),r,null,[[4,29],[6,10],[12,17]])})));return function(){return r.apply(this,arguments)}}();exports.generateCreatePage=S,exports.generateDummy=function(r){try{var o=r.title,a=r.properties,c=t.join(process.cwd(),"src","commons","dummy.ts"),s="Input".concat(p(o),"Schema"),i="import { ".concat(s," } from '@schemas/").concat(u(o),".schema';"),f=Object.entries(a).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).map((function(n){var t,r=e.slicedToArray(n,2),o=r[0],a=r[1],c=Array.isArray(a.type)?a.type:[a.type],s=c[0];return t=void 0!==a.default?a.default:c.includes("null")?null:a.enum?"'".concat(a.enum[0],"'"):l(s)?"''":m(s)?0:!!d(s)||"''"," ".concat(o,": ").concat(t)})),g="\nexport const input".concat(p(o),": ").concat(s," = {\n").concat(f.join(",\n"),"\n};\n"),v=n.existsSync(c)?n.readFileSync(c,"utf8"):"";v.includes(i)||(v=i+"\n"+v),v.includes("input".concat(p(o)))||(v+="\n"+g),n.writeFileSync(c,v),console.log("✅ Dummy data for ".concat(o," created"))}catch(e){console.error("❌ Error generating dummy data for ".concat(r.title,":"),e.message)}},exports.generateForm=j,exports.generateIndexPage=w,exports.generateRoute=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];try{var n="router.tsx",r=t.join(process.cwd(),"src",n),o=t.dirname(r),a=[{suffix:"Page",file:"index.page",url:""},{suffix:"ViewPage",file:"view.page",url:"/view/:id"},{suffix:"CreatePage",file:"create.page",url:"/create"},{suffix:"UpdatePage",file:"update.page",url:"/update/:id"}],c=[],s=[];e.forEach((function(e){a.forEach((function(n){var t=n.suffix,r=n.file,o=n.url,a="".concat(p(e)).concat(t),i=u(e);c.push("const ".concat(a,' = LoadComponent(() => import("@pages/').concat(i,"/").concat(r,'"));')),s.push(' { path: "'.concat(i).concat(o,'", element: <').concat(a," /> }"))}))}));var i='import { createBrowserRouter } from "react-router";\nimport { loader } from "@services/auth.service";\nimport LoadComponent from "@components/base/LoadComponent/LoadComponent";\n\nconst AppLayouts = LoadComponent(() => import("@components/layouts/AppLayout"));\nconst GuestLayout = LoadComponent(() => import("@components/layouts/GuestLayout"));\nconst NotFoundPage = LoadComponent(() => import("@pages/error/PageNotFound"));\nconst SignInPage = LoadComponent(() => import("@pages/auth/LoginPage"));\nconst RegisterPage = LoadComponent(() => import("@pages/auth/RegisterPage"));\nconst VerificationPage = LoadComponent(() => import("@pages/auth/VerificationPage"));\n\n'.concat(c.join("\n"),'\n\nconst router = createBrowserRouter(\n [\n {\n path: "/login",\n element: <SignInPage />,\n },\n {\n element: <GuestLayout />,\n children: [\n { path: "/register", element: <RegisterPage /> },\n { path: "/verification", element: <VerificationPage /> },\n ],\n },\n {\n id: "root",\n path: "/",\n loader,\n element: <AppLayouts />,\n hydrateFallbackElement: <span>loading...</span>,\n children: [\n').concat(s.join(",\n"),'\n ],\n },\n {\n path: "*",\n element: <NotFoundPage />,\n },\n ],\n {\n future: {\n v7_relativeSplatPath: true,\n v7_partialHydration: true,\n v7_skipActionErrorRevalidation: true,\n v7_fetcherPersist: true,\n v7_startTransition: true,\n },\n }\n);\n\nexport default router;\n');f(o),g(r,i,"Router ".concat(n," created"))}catch(e){console.error("❌ Error generating routes:",e.message)}},exports.generateService=y,exports.generateUpdatePage=R,exports.generateValidation=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'import * as zod from "zod";';try{var o=n.title,a=n.properties,c=n.required,s=void 0===c?[]:c,i="".concat(u(o),".schema.ts"),v=t.join(process.cwd(),"src","schemas",i),h=t.dirname(v),y=[],x=[];Object.entries(a).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).forEach((function(n){var t=e.slicedToArray(n,2),r=t[0],o=t[1],a=["zod"],c=Array.isArray(o.type)?o.type:[o.type],i=c[0];if(o.enum)a.push("enum([".concat(o.enum.map((function(e){return"'".concat(e,"'")})).join(", "),"])"));else if(l(i))a.push("string()"),s.includes(r)&&a.push("nonempty()");else if(m(i))a.push("number()");else if(d(i))a.push("boolean()");else if("array"===i){var f;if(null!==(f=o.items)&&void 0!==f&&f.$ref){var g=o.items.$ref.split("/").pop();y.push("import { input".concat(p(g),"Schema } from './").concat(u(g),".schema'")),a.push("array(input".concat(p(g),"Schema)"))}else a.push("array(zod.any())")}else a.push("any()");if(c.includes("null")&&(a.push("optional()"),a.push("nullish()")),void 0!==o.default){var v=l(o.default)?"'".concat(o.default,"'"):o.default;a.push("default(".concat(v,")"))}x.push(" ".concat(r,": ").concat(a.join(".")))}));var w="input".concat(p(o),"Schema"),b="".concat(r,"\n").concat(y.join(";\n"),"\n\nexport const ").concat(w," = zod.object({\n").concat(x.join(",\n"),"\n});\n\nexport type ").concat(p(w)," = zod.infer<typeof ").concat(w,">;\n");f(h),g(v,b,"Validation ".concat(i," created"))}catch(e){console.error("❌ Error generating validation for ".concat(n.title,":"),e.message)}},exports.generateViewPage=b,exports.isBoolean=d,exports.isNumber=m,exports.isString=l,exports.jsonToTS=function(e){r.compileFromFile(e,{inferStringEnumKeysFromValues:!0,bannerComment:"/* eslint-disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND.\n */"}).then((function(e){var r=t.join(process.cwd(),"src","typings","model","index.d.ts"),o=t.dirname(r);f(o),n.writeFileSync(r,e),console.log("✅ TypeScript types generated")})).catch((function(e){console.error("❌ Error generating TypeScript types:",e.message)}))},exports.loadRegenConfig=T,exports.toCamelCase=i,exports.toKebabCase=u,exports.toPascalCase=p;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("json-schema-to-typescript"),a=require("url"),o=require("node:module"),c=require("module"),s="undefined"!=typeof document?document.currentScript:null,i=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},u=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},p=function(e){return e.replace(/[_\-\s]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join("")},l=function(e){return["string"].includes(e)},f=function(e){return["integer","number"].includes(e)},m=function(e){return["boolean"].includes(e)},d=function(e){n.existsSync(e)||n.mkdirSync(e,{recursive:!0})},g=function(e,t,r){n.writeFile(e,t,(function(n){n?console.error("❌ Error writing file ".concat(e,":"),n.message):console.log("✅ ".concat(r))}))},v=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(o){var c,s;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o){e.next=2;break}return e.abrupt("return",null);case 2:if(c=t.join(process.cwd(),o),n.existsSync(c)){e.next=6;break}return console.warn("⚠️ Template not found: ".concat(o)),e.abrupt("return",null);case 6:return e.prev=6,e.next=9,import(a.pathToFileURL(c).href);case 9:return s=e.sent,e.abrupt("return",s.default);case 13:return e.prev=13,e.t0=e.catch(6),console.error("❌ Error loading template ".concat(o,":"),e.t0.message),e.abrupt("return",null);case 17:case"end":return e.stop()}}),r,null,[[6,13]])})));return function(e){return r.apply(this,arguments)}}(),y=function(n){return Object.entries(n).map((function(n){var t=e.slicedToArray(n,2),r=t[0],a=t[1],o={key:r,type:Array.isArray(a.type)?a.type[0]:a.type};return a.format&&["date","date-time"].includes(a.format)&&(o.format=a.format),a.enum&&(o.enum=a.enum),o}))},h=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,a){var o,c,s,l,f,m,y,h,x;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,o=r.title,c="".concat(u(o),".service.ts"),s=i(o),l=u(o),f=p(o),m=t.join(process.cwd(),"src","services",c),y=t.dirname(m),h="",e.next=11,v(a);case 11:x=e.sent,h=x?x({modelName:o,serviceName:s,urlName:l,funcName:f}):"import { ".concat(f,' } from "@typings/model";\nimport { EventSend } from "ezhooks";\n\nconst baseUrl = "http://localhost:3000/api";\n\nexport const ').concat(s,"Url = {\n index: `${baseUrl}/").concat(l,"`,\n view: `${baseUrl}/").concat(l,"/:id`,\n remove: `${baseUrl}/").concat(l,"/:id`,\n};\n\nexport const get").concat(f," = async (event: EventSend): Promise<HttpResponse<").concat(f,"[]>> => {\n let url = ").concat(s,"Url.index;\n const params = new URLSearchParams(event.params);\n \n if (params.size > 0) {\n url += `?${params.toString()}`;\n }\n \n const resp = await fetch(url, {\n signal: event.ctr?.signal,\n });\n \n return resp.json();\n};\n\nexport const get").concat(f,"ID = (id: number) => async (event: EventSend): Promise<HttpResponse<").concat(f,">> => {\n const res = await fetch(").concat(s,"Url.view.replace(':id', String(id)), {\n signal: event.ctr?.signal,\n });\n return res.json();\n};\n\nexport const post").concat(f," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "POST",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const put').concat(f," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "PUT",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const delete').concat(f," = async (event: EventSend) => {\n return fetch(").concat(s,"Url.remove.replace(':id', event.params.id), {\n method: \"DELETE\",\n signal: event.ctr?.signal,\n });\n};\n"),d(y),g(m,h,"Service ".concat(c," created")),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(0),console.error("❌ Error generating service for ".concat(r.title,":"),e.t0.message);case 20:case"end":return e.stop()}}),n,null,[[0,17]])})));return function(e,t){return n.apply(this,arguments)}}(),x=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,a,o){var c,s,i,p,l,f,m,h;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,c=r.title,s=r.properties,i="".concat(o,".page.tsx"),p=t.join(process.cwd(),"src","pages",u(c),i),l=t.dirname(p),f="",e.next=8,v(a);case 8:(m=e.sent)&&(h="index"===o||"view"===o?{modelName:c,columns:y(s)}:{modelName:c,jsonSchema:r},f=m(h)),d(l),g(p,f,"".concat(c," ").concat(i," created")),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ Error generating ".concat(o," page for ").concat(r.title,":"),e.t0.message);case 17:case"end":return e.stop()}}),n,null,[[0,14]])})));return function(e,t,r){return n.apply(this,arguments)}}(),S=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"index");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),b=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"view");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),w=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"create");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),R=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"update");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),j=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r){var a,o,c,s,i,p,l,f=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=f.length>2?f[2]:void 0,e.prev=2,o=r.title,c="Form.tsx",s=t.join(process.cwd(),"src","pages",u(o),"partial",c),i=t.dirname(s),p="",e.next=10,v(a);case 10:(l=e.sent)&&(p=l({modelName:o,jsonSchema:r})),d(i),g(s,p,"".concat(o," ").concat(c," created")),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(2),console.error("❌ Error generating form for ".concat(r.title,":"),e.t0.message);case 19:case"end":return e.stop()}}),n,null,[[2,16]])})));return function(e){return n.apply(this,arguments)}}(),k=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(o){var c,s,i,p,l,f,m,g,v,y,h,x,S,b,w;return e.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(s=JSON.parse(n.readFileSync(o,"utf8")),i=null!==(c=s.definitions)&&void 0!==c?c:{},0!==(p=Object.entries(i)).length){a.next=6;break}return console.warn("⚠️ No definitions found in schema file."),a.abrupt("return");case 6:l={inferStringEnumKeysFromValues:!0,bannerComment:"/* eslint-disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND.\n */"},f=0,m=p;case 8:if(!(f<m.length)){a.next=29;break}return g=e.slicedToArray(m[f],2),v=g[0],y=g[1],a.prev=10,h=e.objectSpread2(e.objectSpread2({title:v},y),{},{definitions:i}),a.next=14,r.compile(h,v,l);case 14:x=a.sent,S="".concat(u(v),".type.ts"),b=t.join(process.cwd(),"src","typings",S),w=t.dirname(b),d(w),n.writeFileSync(b,x),console.log("✅ TypeScript types generated: ".concat(S)),a.next=26;break;case 23:a.prev=23,a.t0=a.catch(10),console.error("❌ Error generating types for ".concat(v,":"),a.t0.message);case 26:f++,a.next=8;break;case 29:case"end":return a.stop()}}),a,null,[[10,23]])})));return function(e){return a.apply(this,arguments)}}(),T=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){var i,u,p,l,f;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=[t.resolve("regen.config.ts"),t.resolve("regen.config.js")],u=i.find((function(e){return n.existsSync(e)}))){e.next=4;break}return e.abrupt("return",{templateDir:void 0});case 4:if(e.prev=4,!u.endsWith(".ts")){e.next=22;break}e.prev=6,o.register("tsx",a.pathToFileURL("./")),e.next=22;break;case 10:e.prev=10,e.t0=e.catch(6),e.prev=12,c.createRequire("undefined"==typeof document?require("url").pathToFileURL(__filename).href:s&&"SCRIPT"===s.tagName.toUpperCase()&&s.src||new URL("react/mui.gen.js",document.baseURI).href)("ts-node/register"),e.next=22;break;case 17:return e.prev=17,e.t1=e.catch(12),console.error("⚠️ TypeScript config found but tsx/ts-node not installed."),console.log(" Install with: npm install -D tsx or npm install -D ts-node"),e.abrupt("return",{templateDir:void 0});case 22:return l=a.pathToFileURL(u).href,e.next=25,import(l);case 25:return f=e.sent,e.abrupt("return",JSON.parse(JSON.stringify(null!==(p=f.default)&&void 0!==p?p:{})));case 29:return e.prev=29,e.t2=e.catch(4),console.error("⚠️ Error loading config file:",e.t2.message),e.abrupt("return",{templateDir:void 0});case 33:case"end":return e.stop()}}),r,null,[[4,29],[6,10],[12,17]])})));return function(){return r.apply(this,arguments)}}();exports.generateCreatePage=w,exports.generateDummy=function(r){try{var a=r.title,o=r.properties,c=t.join(process.cwd(),"src","commons","dummy.ts"),s="Input".concat(p(a),"Schema"),i="import { ".concat(s," } from '@schemas/").concat(u(a),".schema';"),d=Object.entries(o).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).map((function(n){var t,r=e.slicedToArray(n,2),a=r[0],o=r[1],c=Array.isArray(o.type)?o.type:[o.type],s=c[0];return t=void 0!==o.default?o.default:c.includes("null")?null:o.enum?"'".concat(o.enum[0],"'"):l(s)?"''":f(s)?0:!!m(s)||"''"," ".concat(a,": ").concat(t)})),g="\nexport const input".concat(p(a),": ").concat(s," = {\n").concat(d.join(",\n"),"\n};\n"),v=n.existsSync(c)?n.readFileSync(c,"utf8"):"";v.includes(i)||(v=i+"\n"+v),v.includes("input".concat(p(a)))||(v+="\n"+g),n.writeFileSync(c,v),console.log("✅ Dummy data for ".concat(a," created"))}catch(e){console.error("❌ Error generating dummy data for ".concat(r.title,":"),e.message)}},exports.generateForm=j,exports.generateIndexPage=S,exports.generateRoute=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];try{var n="router.tsx",r=t.join(process.cwd(),"src",n),a=t.dirname(r),o=[{suffix:"Page",file:"index.page",url:""},{suffix:"ViewPage",file:"view.page",url:"/view/:id"},{suffix:"CreatePage",file:"create.page",url:"/create"},{suffix:"UpdatePage",file:"update.page",url:"/update/:id"}],c=[],s=[];e.forEach((function(e){o.forEach((function(n){var t=n.suffix,r=n.file,a=n.url,o="".concat(p(e)).concat(t),i=u(e);c.push("const ".concat(o,' = React.lazy(() => import("@pages/').concat(i,"/").concat(r,'"));')),s.push(' { path: "'.concat(i).concat(a,'", element: <Suspense fallback={<span>loading...</span>}><').concat(o," /></Suspense> }"))}))}));var i='import React, { Suspense } from "react";\nimport { createBrowserRouter } from "react-router";\nimport { loader } from "@services/auth.service";\n\nconst AppLayouts = React.lazy(() => import("@components/layouts/AppLayout"));\nconst GuestLayout = React.lazy(() => import("@components/layouts/GuestLayout"));\nconst NotFoundPage = React.lazy(() => import("@pages/error/PageNotFound"));\nconst SignInPage = React.lazy(() => import("@pages/auth/LoginPage"));\nconst RegisterPage = React.lazy(() => import("@pages/auth/RegisterPage"));\nconst VerificationPage = React.lazy(() => import("@pages/auth/VerificationPage"));\n\n'.concat(c.join("\n"),'\n\nconst router = createBrowserRouter(\n [\n {\n path: "/login",\n element: <Suspense fallback={<span>loading...</span>}><SignInPage /></Suspense>,\n },\n {\n element: <Suspense fallback={<span>loading...</span>}><GuestLayout /></Suspense>,\n children: [\n { path: "/register", element: <Suspense fallback={<span>loading...</span>}><RegisterPage /></Suspense> },\n { path: "/verification", element: <Suspense fallback={<span>loading...</span>}><VerificationPage /></Suspense> },\n ],\n },\n {\n id: "root",\n path: "/",\n loader,\n element: <Suspense fallback={<span>loading...</span>}><AppLayouts /></Suspense>,\n hydrateFallbackElement: <span>loading...</span>,\n children: [\n').concat(s.join(",\n"),'\n ],\n },\n {\n path: "*",\n element: <Suspense fallback={<span>loading...</span>}><NotFoundPage /></Suspense>,\n },\n ],\n {\n future: {\n v7_relativeSplatPath: true,\n v7_partialHydration: true,\n v7_skipActionErrorRevalidation: true,\n v7_fetcherPersist: true,\n v7_startTransition: true,\n },\n }\n);\n\nexport default router;\n');d(a),g(r,i,"Router ".concat(n," created"))}catch(e){console.error("❌ Error generating routes:",e.message)}},exports.generateService=h,exports.generateUpdatePage=R,exports.generateValidation=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'import * as zod from "zod";';try{var a=n.title,o=n.properties,c=n.required,s=void 0===c?[]:c,i="".concat(u(a),".schema.ts"),v=t.join(process.cwd(),"src","schemas",i),y=t.dirname(v),h=[],x=[];Object.entries(o).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).forEach((function(n){var t=e.slicedToArray(n,2),r=t[0],a=t[1],o=["zod"],c=Array.isArray(a.type)?a.type:[a.type],i=c[0];if(a.enum)o.push("enum([".concat(a.enum.map((function(e){return"'".concat(e,"'")})).join(", "),"])"));else if(l(i))o.push("string()"),s.includes(r)&&o.push("nonempty()");else if(f(i))o.push("number()");else if(m(i))o.push("boolean()");else if("array"===i){var d;if(null!==(d=a.items)&&void 0!==d&&d.$ref){var g=a.items.$ref.split("/").pop();h.push("import { input".concat(p(g),"Schema } from './").concat(u(g),".schema'")),o.push("array(input".concat(p(g),"Schema)"))}else o.push("array(zod.any())")}else o.push("any()");if(c.includes("null")&&(o.push("optional()"),o.push("nullish()")),void 0!==a.default){var v=l(a.default)?"'".concat(a.default,"'"):a.default;o.push("default(".concat(v,")"))}x.push(" ".concat(r,": ").concat(o.join(".")))}));var S="input".concat(p(a),"Schema"),b="".concat(r,"\n").concat(h.join(";\n"),"\n\nexport const ").concat(S," = zod.object({\n").concat(x.join(",\n"),"\n});\n\nexport type ").concat(p(S)," = zod.infer<typeof ").concat(S,">;\n");d(y),g(v,b,"Validation ".concat(i," created"))}catch(e){console.error("❌ Error generating validation for ".concat(n.title,":"),e.message)}},exports.generateViewPage=b,exports.isBoolean=m,exports.isNumber=f,exports.isString=l,exports.jsonToTS=k,exports.loadRegenConfig=T,exports.toCamelCase=i,exports.toKebabCase=u,exports.toPascalCase=p;
package/lib/regen.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),t=require("fs"),a=require("path"),r=require("./react/mui.gen.js"),n=e.toArray(process.argv);n[0],n[1];var l=n[2],o=n.slice(3),i={file:a.join(process.cwd(),"json-schema.json"),indexTemplate:void 0,formTemplate:void 0,viewTemplate:void 0,createTemplate:void 0,updateTemplate:void 0,serviceTemplate:void 0,templateDir:void 0,ignoreTemplate:[]};function m(t){var a,r=e.objectSpread2({},i),n=e.createForOfIteratorHelper(t);try{for(n.s();!(a=n.n()).done;){var l=a.value.split("="),o=e.slicedToArray(l,2),m=o[0],p=o[1];switch(m){case"--file":r.file=p;break;case"--index-template":r.indexTemplate=p;break;case"--form-template":r.formTemplate=p;break;case"--view-template":r.viewTemplate=p;break;case"--create-template":r.createTemplate=p;break;case"--update-template":r.updateTemplate=p;break;case"--service-template":r.serviceTemplate=p;break;case"--template":r.templateDir=p,r.indexTemplate="".concat(p,"/index-template.js"),r.formTemplate="".concat(p,"/form-template.js"),r.viewTemplate="".concat(p,"/view-template.js"),r.createTemplate="".concat(p,"/create-template.js"),r.updateTemplate="".concat(p,"/update-template.js"),r.serviceTemplate="".concat(p,"/service-template.js");break;case"--ignore":r.ignoreTemplate=p.split(",")}}}catch(e){n.e(e)}finally{n.f()}return r}function p(t,a){var r=e.objectSpread2({},a);return null!=t&&t.templateDir&&!a.templateDir&&(r.indexTemplate||(r.indexTemplate="".concat(t.templateDir,"/index-template.js")),r.formTemplate||(r.formTemplate="".concat(t.templateDir,"/form-template.js")),r.viewTemplate||(r.viewTemplate="".concat(t.templateDir,"/view-template.js")),r.createTemplate||(r.createTemplate="".concat(t.templateDir,"/create-template.js")),r.updateTemplate||(r.updateTemplate="".concat(t.templateDir,"/update-template.js")),r.serviceTemplate||(r.serviceTemplate="".concat(t.templateDir,"/service-template.js"))),null!=t&&t.ignoreTemplate&&0===a.ignoreTemplate.length&&(r.ignoreTemplate=t.ignoreTemplate),null!=t&&t.jsonSchemaFile&&a.file===i.file&&(r.file=t.jsonSchemaFile),null!=t&&t.schemaImportStatement&&(r.schemaImportStatement=t.schemaImportStatement),r}function c(t,a,n,l){var o=e.objectSpread2({title:t},a);l.ignoreTemplate.includes("service")||r.generateService(o,l.serviceTemplate),l.ignoreTemplate.includes("validation")||r.generateValidation(o,l.schemaImportStatement),l.ignoreTemplate.includes("form")||r.generateForm(o,n,l.formTemplate),l.ignoreTemplate.includes("index")||r.generateIndexPage(o,l.indexTemplate),l.ignoreTemplate.includes("create")||r.generateCreatePage(o,l.createTemplate),l.ignoreTemplate.includes("update")||r.generateUpdatePage(o,l.updateTemplate),l.ignoreTemplate.includes("view")||r.generateViewPage(o,l.viewTemplate),l.ignoreTemplate.includes("dummy")||r.generateDummy(o)}function s(e,t,a){return u.apply(this,arguments)}function u(){return u=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,n,l){var o;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=Object.entries(n.definitions),t.t0=a,t.next="make:page"===t.t0?4:"make:dummy"===t.t0?8:"make:route"===t.t0?11:"make:validation"===t.t0?14:"make:service"===t.t0?17:"make:form"===t.t0?21:24;break;case 4:return o.forEach((function(t){var a=e.slicedToArray(t,2);c(a[0],a[1],n.definitions,l)})),r.jsonToTS(l.file),console.log("✅ Pages generated successfully!"),t.abrupt("break",26);case 8:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],l=a[1];r.generateDummy(e.objectSpread2({title:n},l))})),console.log("✅ Dummy data generated successfully!"),t.abrupt("break",26);case 11:return r.generateRoute(o.map((function(t){return e.slicedToArray(t,1)[0]}))),console.log("✅ Routes generated successfully!"),t.abrupt("break",26);case 14:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];r.generateValidation(e.objectSpread2({title:n},o)),l.schemaImportStatement})),console.log("✅ Validation files generated successfully!"),t.abrupt("break",26);case 17:return t.next=19,Promise.all(o.map((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];return r.generateService(e.objectSpread2({title:n},o),l.serviceTemplate)})));case 19:return console.log("✅ Service files generated successfully!"),t.abrupt("break",26);case 21:return o.forEach((function(t){var a=e.slicedToArray(t,2),l=a[0],o=a[1];r.generateForm(e.objectSpread2({title:l},o),n.definitions)})),console.log("✅ Form components generated successfully!"),t.abrupt("break",26);case 24:console.error("❌ Unknown action: ".concat(a)),process.exit(1);case 26:case"end":return t.stop()}}),t)}))),u.apply(this,arguments)}function d(){return(d=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(){var n,i,c,u,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,l||(console.error("❌ Action undefined."),console.log("Run 'npx regen --help' for usage information."),process.exit(1)),"--help"===l&&(console.log("\nUsage: npx regen <action> [options]\n\nActions:\n make:page Generate all pages and services\n make:dummy Generate dummy data\n make:route Generate route file\n make:validation Generate validation files\n make:form Generate form components\n --help Show this help message\n\nOptions:\n --file=<path> Path to JSON schema file (default: ./json-schema.json)\n --mui Use MUI templates\n --index-template=<path> Custom index page template\n --form-template=<path> Custom form component template\n --view-template=<path> Custom view page template\n --create-template=<path> Custom create page template\n --update-template=<path> Custom update page template\n --service-template=<path> Custom service template\n --template=<dir> Directory containing all templates\n --ignore=<templates> Templates to ignore (comma-separated)\n Options: create, update, view, form, index, service, validation, dummy\n\nExamples:\n npx regen make:page\n npx regen make:page --file=./schema.json\n npx regen make:page --template=./templates\n npx regen make:page --ignore=dummy,validation\n "),process.exit(0)),n=m(o),e.next=6,r.loadRegenConfig();case 6:return i=e.sent,c=p(i,n),u=t.readFileSync(c.file,{encoding:"utf-8"}),d=JSON.parse(u),e.next=12,s(l,d,c);case 12:e.next=18;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ ERROR:",e.t0.message),process.exit(1);case 18:case"end":return e.stop()}}),a,null,[[0,14]])})))).apply(this,arguments)}!function(){d.apply(this,arguments)}();
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),t=require("fs"),a=require("path"),r=require("./react/mui.gen.js"),n=e.toArray(process.argv);n[0],n[1];var l=n[2],o=n.slice(3),i={file:a.join(process.cwd(),"json-schema.json"),indexTemplate:void 0,formTemplate:void 0,viewTemplate:void 0,createTemplate:void 0,updateTemplate:void 0,serviceTemplate:void 0,templateDir:void 0,ignoreTemplate:[]};function m(t){var a,r=e.objectSpread2({},i),n=e.createForOfIteratorHelper(t);try{for(n.s();!(a=n.n()).done;){var l=a.value.split("="),o=e.slicedToArray(l,2),m=o[0],p=o[1];switch(m){case"--file":r.file=p;break;case"--index-template":r.indexTemplate=p;break;case"--form-template":r.formTemplate=p;break;case"--view-template":r.viewTemplate=p;break;case"--create-template":r.createTemplate=p;break;case"--update-template":r.updateTemplate=p;break;case"--service-template":r.serviceTemplate=p;break;case"--template":r.templateDir=p,r.indexTemplate="".concat(p,"/index-template.js"),r.formTemplate="".concat(p,"/form-template.js"),r.viewTemplate="".concat(p,"/view-template.js"),r.createTemplate="".concat(p,"/create-template.js"),r.updateTemplate="".concat(p,"/update-template.js"),r.serviceTemplate="".concat(p,"/service-template.js");break;case"--ignore":r.ignoreTemplate=p.split(",")}}}catch(e){n.e(e)}finally{n.f()}return r}function p(t,a){var r=e.objectSpread2({},a);return null!=t&&t.templateDir&&!a.templateDir&&(r.indexTemplate||(r.indexTemplate="".concat(t.templateDir,"/index-template.js")),r.formTemplate||(r.formTemplate="".concat(t.templateDir,"/form-template.js")),r.viewTemplate||(r.viewTemplate="".concat(t.templateDir,"/view-template.js")),r.createTemplate||(r.createTemplate="".concat(t.templateDir,"/create-template.js")),r.updateTemplate||(r.updateTemplate="".concat(t.templateDir,"/update-template.js")),r.serviceTemplate||(r.serviceTemplate="".concat(t.templateDir,"/service-template.js"))),null!=t&&t.ignoreTemplate&&0===a.ignoreTemplate.length&&(r.ignoreTemplate=t.ignoreTemplate),null!=t&&t.jsonSchemaFile&&a.file===i.file&&(r.file=t.jsonSchemaFile),null!=t&&t.schemaImportStatement&&(r.schemaImportStatement=t.schemaImportStatement),r}function c(t,a,n,l){var o=e.objectSpread2({title:t},a);l.ignoreTemplate.includes("service")||r.generateService(o,l.serviceTemplate),l.ignoreTemplate.includes("validation")||r.generateValidation(o,l.schemaImportStatement),l.ignoreTemplate.includes("form")||r.generateForm(o,n,l.formTemplate),l.ignoreTemplate.includes("index")||r.generateIndexPage(o,l.indexTemplate),l.ignoreTemplate.includes("create")||r.generateCreatePage(o,l.createTemplate),l.ignoreTemplate.includes("update")||r.generateUpdatePage(o,l.updateTemplate),l.ignoreTemplate.includes("view")||r.generateViewPage(o,l.viewTemplate),l.ignoreTemplate.includes("dummy")||r.generateDummy(o)}function s(e,t,a){return u.apply(this,arguments)}function u(){return u=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,n,l){var o;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=Object.entries(n.definitions),t.t0=a,t.next="make:page"===t.t0?4:"make:dummy"===t.t0?9:"make:route"===t.t0?12:"make:validation"===t.t0?15:"make:service"===t.t0?18:"make:form"===t.t0?22:25;break;case 4:return o.forEach((function(t){var a=e.slicedToArray(t,2);c(a[0],a[1],n.definitions,l)})),t.next=7,r.jsonToTS(l.file);case 7:return console.log("✅ Pages generated successfully!"),t.abrupt("break",27);case 9:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],l=a[1];r.generateDummy(e.objectSpread2({title:n},l))})),console.log("✅ Dummy data generated successfully!"),t.abrupt("break",27);case 12:return r.generateRoute(o.map((function(t){return e.slicedToArray(t,1)[0]}))),console.log("✅ Routes generated successfully!"),t.abrupt("break",27);case 15:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];r.generateValidation(e.objectSpread2({title:n},o)),l.schemaImportStatement})),console.log("✅ Validation files generated successfully!"),t.abrupt("break",27);case 18:return t.next=20,Promise.all(o.map((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];return r.generateService(e.objectSpread2({title:n},o),l.serviceTemplate)})));case 20:return console.log("✅ Service files generated successfully!"),t.abrupt("break",27);case 22:return o.forEach((function(t){var a=e.slicedToArray(t,2),l=a[0],o=a[1];r.generateForm(e.objectSpread2({title:l},o),n.definitions)})),console.log("✅ Form components generated successfully!"),t.abrupt("break",27);case 25:console.error("❌ Unknown action: ".concat(a)),process.exit(1);case 27:case"end":return t.stop()}}),t)}))),u.apply(this,arguments)}function d(){return(d=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(){var n,i,c,u,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,l||(console.error("❌ Action undefined."),console.log("Run 'npx regen --help' for usage information."),process.exit(1)),"--help"===l&&(console.log("\nUsage: npx regen <action> [options]\n\nActions:\n make:page Generate all pages and services\n make:dummy Generate dummy data\n make:route Generate route file\n make:validation Generate validation files\n make:form Generate form components\n --help Show this help message\n\nOptions:\n --file=<path> Path to JSON schema file (default: ./json-schema.json)\n --mui Use MUI templates\n --index-template=<path> Custom index page template\n --form-template=<path> Custom form component template\n --view-template=<path> Custom view page template\n --create-template=<path> Custom create page template\n --update-template=<path> Custom update page template\n --service-template=<path> Custom service template\n --template=<dir> Directory containing all templates\n --ignore=<templates> Templates to ignore (comma-separated)\n Options: create, update, view, form, index, service, validation, dummy\n\nExamples:\n npx regen make:page\n npx regen make:page --file=./schema.json\n npx regen make:page --template=./templates\n npx regen make:page --ignore=dummy,validation\n "),process.exit(0)),n=m(o),e.next=6,r.loadRegenConfig();case 6:return i=e.sent,c=p(i,n),u=t.readFileSync(c.file,{encoding:"utf-8"}),d=JSON.parse(u),e.next=12,s(l,d,c);case 12:e.next=18;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ ERROR:",e.t0.message),process.exit(1);case 18:case"end":return e.stop()}}),a,null,[[0,14]])})))).apply(this,arguments)}!function(){d.apply(this,arguments)}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frgen",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "helper generator",
5
5
  "main": "lib/main.jss",
6
6
  "types": "lib/index.d.ts",