frgen 0.4.3 → 0.4.5
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.
- package/lib/db.js +1 -1
- package/lib/express/make_controller.js +2 -0
- package/lib/express/make_crud.js +2 -0
- package/lib/express/make_model.js +2 -0
- package/lib/express/make_resource.js +2 -0
- package/lib/express/make_service.js +2 -0
- package/lib/express/make_validation.js +2 -0
- package/lib/express/utils.js +2 -0
- package/lib/main.js +1 -1
- package/lib/react/mui.gen.js +2 -0
- package/lib/regen.js +1 -1
- package/package.json +2 -2
- package/lib/file.gen.js +0 -2
- package/lib/make_controller.js +0 -2
- package/lib/make_crud.js +0 -2
- package/lib/make_model.js +0 -2
- package/lib/make_resource.js +0 -2
- package/lib/make_service.js +0 -2
- package/lib/make_validation.js +0 -2
- package/lib/mui.gen.js +0 -2
- package/lib/utils.js +0 -2
package/lib/db.js
CHANGED
|
@@ -45,7 +45,7 @@ function createPool() {
|
|
|
45
45
|
const mysql = require("mysql2/promise");
|
|
46
46
|
|
|
47
47
|
// ✅ GUNAKAN langsung mysql.createPool()
|
|
48
|
-
pool = mysql.createPool({
|
|
48
|
+
pool = mysql.default.createPool({
|
|
49
49
|
user: process.env.DB_USER,
|
|
50
50
|
host: process.env.DB_HOST,
|
|
51
51
|
database: process.env.DB_NAME,
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),t=require("fs"),n=require("path"),r=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o){var s,i,u,l,p,d,x,m,q,f,v,w,y,R,b,g;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:try{c||(console.error("table name undefined"),process.exit(1)),s=r.removePluralSuffix(c),i="".concat(r.toPascalCase(s),"Resource"),u="".concat(r.toKebabCase(s),".resource"),l="".concat(r.toKebabCase(s),".service"),p="".concat(r.toKebabCase(s),".validation"),d="create".concat(r.toPascalCase(s),"Schema"),x="update".concat(r.toPascalCase(s),"Schema"),m="".concat(r.toPascalCase(s),"Controller"),q=r.toPascalCase(s),f="const validated = await req.validation(".concat(x,");"),v="const validated = await req.validation(".concat(d,");"),w="".concat(r.toKebabCase(s),".controller.ts"),y=r.toKebabCase(s),R=n.join(process.cwd(),"src","app","http","controller",w),"default"!==o&&(R=n.join(process.cwd(),o,w)),b='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, get'.concat(q,"ID, create").concat(q,", update").concat(q,", delete").concat(q,'} from "@service/').concat(l,'";\nimport ').concat(i,' from "@resource/').concat(u,'";\nimport { ').concat(d,",").concat(x,' } from "@validation/').concat(p,'";\n\n@Controller("/').concat(y,'")\nexport class ').concat(m,' {\n\n @Get("/")\n async get').concat(q,"Paginate(req: Request, res: Response, next: NextFunction){\n try {\n const results = await getPaginate(req.query);\n res.json(").concat(i,'.paginate(results));\n } catch (error) {\n next(error);\n }\n };\n\n @Get("/:id")\n async get').concat(q,"View(req: Request, res: Response, next: NextFunction){\n try {\n const result = await get").concat(q,"ID(+req.params.id)\n res.json(new ").concat(i,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Post("/")\n async create').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n ").concat(v,"\n const result = await create").concat(q,"(validated);\n res.json(new ").concat(i,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Put("/")\n async update').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n ").concat(f,"\n const result = await update").concat(q,"(validated);\n res.json(new ").concat(i,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Delete("/:id")\n async delete$').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n await delete").concat(q,"(+req.params.id)\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n };\n}\n"),g=n.dirname(R),t.existsSync(g)||t.mkdirSync(g,{recursive:!0}),t.writeFile(R,b,(function(e){e?console.error("err: ",e):console.log("File ".concat(w," has been created"))}))}catch(e){console.error("err::",e)}case 1:case"end":return e.stop()}}),a)})));return function(e,t){return a.apply(this,arguments)}}();module.exports=a;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),r=require("./make_controller.js"),t=require("./make_model.js"),a=require("./make_resource.js"),n=require("./make_service.js"),c=require("./make_validation.js"),s=require("./utils.js"),u=function(){var u=e.asyncToGenerator(e.regeneratorRuntime().mark((function u(l,o,i,f,v){var d,p,x,m,k,b,_;return e.regeneratorRuntime().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.prev=0,u.next=3,s.getTables(o,i,v);case 3:d=u.sent,console.log("Generating CRUD for ".concat(d.length," tables...")),p=e.createForOfIteratorHelper(d),u.prev=6,p.s();case 8:if((x=p.n()).done){u.next=25;break}return k=x.value,b=null!==(m=k.table_name)&&void 0!==m?m:k.TABLE_NAME,u.next=13,r(b,"default"!==l?"".concat(l,"/controller"):"default");case 13:return u.next=15,n(b,"default"!==l?"".concat(l,"/service"):"default",f);case 15:return u.next=17,c(b,o,i,v,"default"!==l?"".concat(l,"/validation"):"default");case 17:return u.next=19,a(b,o,i,v,"default"!==l?"".concat(l,"/resource"):"default");case 19:if(f){u.next=23;break}return _=s.toPascalCase(s.removePluralSuffix(b)),u.next=23,t(_,b,o,i,v);case 23:u.next=8;break;case 25:u.next=30;break;case 27:u.prev=27,u.t0=u.catch(6),p.e(u.t0);case 30:return u.prev=30,p.f(),u.finish(30);case 33:u.next=38;break;case 35:u.prev=35,u.t1=u.catch(0),console.log(u.t1);case 38:return u.prev=38,u.finish(38);case 40:case"end":return u.stop()}}),u,null,[[0,35,38,40],[6,27,30,33]])})));return function(e,r,t,a,n){return u.apply(this,arguments)}}();module.exports=u;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js");function a(n){return Array.from(new Set(Object.entries(n).map((function(n){var t=e.slicedToArray(n,2);t[0];var a=t[1].relatedTable;return"import ".concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a)))," from './").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a))),"';")})))).join("\n")}function o(n,t){var a=Object.entries(n).map((function(n){var a=e.slicedToArray(n,2),o=a[0],c=a[1],i=c.relation,l=c.relatedTable,s=c.foreignKey,u=c.localKey;return"\n ".concat(o,": {\n relation: Model.").concat(i,",\n modelClass: ").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(l))),",\n join: {\n ").concat("ManyToManyRelation"===i?"\n from: '".concat(u,"',\n through: {\n from: '").concat(s,"',\n to: '").concat(s,"'\n },\n to: '").concat(u,"'"):"\n from: '".concat(t,".").concat(s,"',\n to: '").concat(l,".").concat(u,"'"),"\n }\n }")})).join(",");return"\nstatic get relationMappings() {\nreturn {".concat(a,"\n};\n}")}var c=function(){var c=e.asyncToGenerator(e.regeneratorRuntime().mark((function c(i,l,s){var u,m,p,d,f,b,g,v,y,h,x,C,j,M=arguments;return e.regeneratorRuntime().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return u=M.length>3&&void 0!==M[3]?M[3]:"public",m=M.length>4&&void 0!==M[4]?M[4]:"pg",c.prev=2,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),p="".concat(i,".ts"),d=t.join(process.cwd(),"src","app","model",p),c.next=9,r.getTableColumns(s,null!=l?l:i.toLowerCase()+"s",u,m);case 9:return f=c.sent,b=Object.fromEntries(f.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),c.next=13,r.getTableRelations(s,l,u,m);case 13:g=c.sent,v=Object.entries(b).map((function(n){var t,a=e.slicedToArray(n,2),o=a[0],c=a[1],i=r.toCamelCase(o),l=(t=c.type,["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(t)?"number":["varchar","text","string","char","character varying","uuid"].includes(t)?"string":["boolean"].includes(t)?"boolean":["date","datetime","timestamp","timestamp with time zone"].includes(t)?"Date":"any");return" public ".concat(i,": ").concat(l,";")})).join("\n"),y='\n static get tableName() {\n return "'.concat(i.toLowerCase(),'s";\n }\n '),l&&(y='\n static get tableName() {\n return "'.concat(l,'";\n }\n ')),h=g?a(g):"",x=g?o(g,l):"",C='\n import Model from "@lib/Model";\n import { snakeCaseMappers } from "objection";\n '.concat(h,"\n \n export default class ").concat(i," extends Model {\n \n ").concat(v,"\n \n ").concat(y,'\n \n static get idColumn() {\n return "id";\n }\n \n static get columnNameMappers() {\n return snakeCaseMappers();\n }\n \n ').concat(x,"\n }"),j=t.dirname(d),n.existsSync(j)||n.mkdirSync(j,{recursive:!0}),n.writeFile(d,C,(function(e){e?console.error("err::",e):console.log("File ".concat(p," has been created"))})),c.next=28;break;case 25:c.prev=25,c.t0=c.catch(2),console.error("err::",c.t0);case 28:return c.prev=28,c.finish(28);case 30:case"end":return c.stop()}}),c,null,[[2,25,28,30]])})));return function(e,n,t){return c.apply(this,arguments)}}();module.exports=c;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),r=require("fs"),n=require("path"),t=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(o,c,u,s,l){var i,p,d,m,f,v,_,b,x;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,o||(console.error("table name undefined"),process.exit(1)),i=t.removePluralSuffix(o),p="".concat(t.toKebabCase(i),".resource.ts"),d="".concat(t.toPascalCase(i),"Resource"),m=n.join(process.cwd(),"src","app","http","resource",p),"default"!==l&&(m=n.join(process.cwd(),l,p)),e.next=9,t.getTableColumns(c,o,u,s);case 9:f=e.sent,v=Object.fromEntries(f.map((function(e){var r,n,t,a,o;return[null!==(r=e.column_name)&&void 0!==r?r:e.COLUMN_NAME,{defaultValue:null!==(n=e.column_default)&&void 0!==n?n:e.COLUMN_DEFAULT,type:null!==(t=e.data_type)&&void 0!==t?t:e.DATA_TYPE,maxLength:null!==(a=e.character_maximum_length)&&void 0!==a?a:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(o=e.is_nullable)&&void 0!==o?o:e.IS_NULLABLE)}]}))),_=Object.keys(v).filter((function(e){return"created_at"!==e&&"updated_at"!==e})).map((function(e){return"".concat(t.toCamelCase(e),": this.").concat(t.toCamelCase(e))})).join(",\n"),b='\nimport Resource from "frexp/lib/Resource";\n\nexport default class '.concat(d," extends Resource {\n toArray() {\n return {\n").concat(_,"\n };\n }\n}"),x=n.dirname(m),r.existsSync(x)||r.mkdirSync(x,{recursive:!0}),r.writeFile(m,b,(function(e){e?console.error("err:",e):console.log("File ".concat(p," has been created"))})),e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),console.error("err::",e.t0);case 21:return e.prev=21,e.finish(21);case 23:case"end":return e.stop()}}),a,null,[[0,18,21,23]])})));return function(e,r,n,t,o){return a.apply(this,arguments)}}();module.exports=a;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),a=require("./utils.js"),o=function(){var o=e.asyncToGenerator(e.regeneratorRuntime().mark((function o(c,r,i){var s,d,u,p,l,m,y,f,w,h,q,x,g,v,b,C,F,P;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:try{c||(console.error("table name undefined"),process.exit(1)),s=a.removePluralSuffix(c),d=a.toPascalCase(s),u=a.toCamelCase(s),p=a.toPascalCase(s),l="".concat(a.toKebabCase(s),".service.ts"),m=t.join(process.cwd(),"src","app","http","service",l),"default"!==r&&(m=t.join(process.cwd(),r,l)),y="async",f="".concat(d,".query().findById(id)"),w="".concat(d,".query().insertAndFetch(payload)"),h="\n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;'),q=" \n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().delete();'),x="return ".concat(d,'.query().page(req.getQuery("page", 0), req.getQuery("perPage", 10));'),g="import ".concat(d,' from "@model/').concat(d,'";'),v="Create".concat(a.toPascalCase(s),"Schema"),b="Update".concat(a.toPascalCase(s),"Schema"),C="".concat(a.toKebabCase(s),".validation"),i&&(y="",f="prisma.".concat(u,".findFirst({where : {id}})"),w="prisma.".concat(u,".create({ data: payload })"),h="return prisma.".concat(u,".update({where: {id: +id!}, data: payload})"),q="return prisma.".concat(u,".delete({where: {id}})"),x="\n const count = await prisma.".concat(u,".count();\n const results = await prisma.").concat(u,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) })\n return { total: count, data: results };\n "),g='import prisma from "@config/db";'),F="\n".concat(g,'\nimport NotFoundException from "@exception/notfound.exception";\nimport {').concat(v,", ").concat(b,'} from "@validation/').concat(C,'";\n\nexport const getPaginate = async (qs: Record<string, any>) => {\n ').concat(x,"\n};\n\nexport const get").concat(p,"ID = async (id:number) => {\n const model = await ").concat(f,';\n if (!model) {\n throw new NotFoundException("Record")\n }\n return model;\n};\n\nexport const create').concat(p," = (payload:").concat(v,") => {\n return ").concat(w,";\n};\n\nexport const update").concat(p," = ").concat(y," ({id, ...payload}:").concat(b,") => {\n ").concat(h,"\n};\n\nexport const delete").concat(p," = ").concat(y," (id:number) => {\n ").concat(q,"\n};\n"),P=t.dirname(m),n.existsSync(P)||n.mkdirSync(P,{recursive:!0}),n.writeFile(m,F,(function(e){e?console.error("err: ",e):console.log("File ".concat(s,".service.ts has been created"))}))}catch(e){console.error("err::",e)}case 1:case"end":return e.stop()}}),o)})));return function(e,n,t){return o.apply(this,arguments)}}();module.exports=o;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js"),a=["int","integer","bigint","smallint","tinyint","numeric","decimal","float"],c=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"],o=["boolean"];function i(n,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],l=t.type,s=t.nullable,d=t.defaultValue,p=["z"],m=a.includes(l),f=c.includes(l),v=o.includes(l),h=u.map((function(e){return e.column_name})).includes(n);if(m)p.push("coerce.number()");else if(f)p.push("string()");else if(v)p.push("boolean()");else if(h){var y=u.find((function(e){return e.column_name===n}));y&&p.push("enum(Object.values(".concat(y.enum_name,") as [string, ...string[]])"))}else p.push("any()");var g=i.includes(n);s&&(p.push("optional()"),p.push("nullish()"));var _=["CURRENT_TIMESTAMP"].includes(d);if(d&&!_&&!g){var b;if(m)b=parseInt(d);else if(h){var A=u.find((function(e){return e.column_name===n}));A&&(b="".concat(A.enum_name,".").concat(r.extractEnumValue(d)))}else b=v?d:"'".concat(d,"'");void 0!==e.typeof(b)&&p.push("default(".concat(b,")"))}return"".concat(r.toCamelCase(n),":").concat(p.join("."))}function u(e,n){var t=n.type,i=["z"],u=a.includes(t),l=c.includes(t),s=o.includes(t);return u?i.push("coerce.number().int().nonoptional()"):l?i.push("string().nonempty().nonoptional()"):s?i.push("boolean()"):i.push("any()"),"".concat(r.toCamelCase(e),":").concat(i.join("."))}function l(e){return!["created_at","updated_at","createdAt","updatedAt"].includes(e)}var s=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o){var s,d,p,m,f,v,h,y,g,_,b,A,C,x,T,j,E,S,P,z,L=arguments;return e.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return s=L.length>2&&void 0!==L[2]?L[2]:"public",d=L.length>3&&void 0!==L[3]?L[3]:"pg",p=L.length>4&&void 0!==L[4]?L[4]:"default",a.prev=3,c||(console.error("table name undefined"),process.exit(1)),m=r.removePluralSuffix(c),f="".concat(r.toKebabCase(m),".validation.ts"),v="Create".concat(r.toPascalCase(m),"Schema"),h="Update".concat(r.toPascalCase(m),"Schema"),y="create".concat(r.toPascalCase(m),"Schema"),g="update".concat(r.toPascalCase(m),"Schema"),_=t.join(process.cwd(),"src","app","http","validation",f),"default"!==p&&(_=t.join(process.cwd(),p,f)),a.next=15,r.getTableColumns(o,c,s,d);case 15:return b=a.sent,A=Object.fromEntries(b.map((function(e){var n,t,r,a,c;return[null!==(n=e.column_name)&&void 0!==n?n:e.COLUMN_NAME,{defaultValue:null!==(t=e.column_default)&&void 0!==t?t:e.COLUMN_DEFAULT,type:null!==(r=e.data_type)&&void 0!==r?r:e.DATA_TYPE,maxLength:null!==(a=e.character_maximum_length)&&void 0!==a?a:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(c=e.is_nullable)&&void 0!==c?c:e.IS_NULLABLE)}]}))),a.next=19,r.getPrimaryKeys(o,c,s,d);case 19:return C=a.sent,a.next=22,r.getEnumFieldsAndValues(o,c,s,d);case 22:x=a.sent,T=Object.entries(A).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return!C.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),i(a,c,C,x)]})),j=Object.entries(A).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return C.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),u(a,c)]})),E="",x.length&&(S=x.map((function(e){return e.enum_name})).join(","),E="import { ".concat(S,' } from "@generated/prisma";')),P='\nimport * as z from "zod";\n'.concat(E,"\n\nexport const ").concat(y," = z.object({\n ").concat(T.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n});\n\nexport type ").concat(v," = z.infer<typeof ").concat(y,">;\n\nexport const ").concat(g," = ").concat(y,".extend({\n ").concat(j.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n});\n\nexport type ").concat(h," = z.infer<typeof ").concat(g,">;\n"),z=t.dirname(_),n.existsSync(z)||n.mkdirSync(z,{recursive:!0}),n.writeFile(_,P,(function(e){e?console.error("err: ",e):console.log("File ".concat(f," has been created"))})),a.next=36;break;case 33:a.prev=33,a.t0=a.catch(3),console.error("err:",a.t0);case 36:return a.prev=36,a.finish(36);case 38:case"end":return a.stop()}}),a,null,[[3,33,36,38]])})));return function(e,n){return a.apply(this,arguments)}}();module.exports=s;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js");require("path");var n=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.query("SELECT 1");case 3:console.log("Connection success"),e.next=10;break;case 6:e.prev=6,e.t0=e.catch(0),console.error("Gagal terhubung ke database:",e.t0),process.exit(1);case 10:case"end":return e.stop()}}),n,null,[[0,6]])})));return function(e){return n.apply(this,arguments)}}(),t=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_catalog = current_database()\n AND table_name = $1\n AND table_schema = $2\n ",s=[a,r]):(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,e.abrupt("return",m.length?m:_);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Gagal mengambil informasi tabel:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e,t){return n.apply(this,arguments)}}(),a=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>2&&void 0!==p[2]?p[2]:"public",o=p.length>3&&void 0!==p[3]?p[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT a.attname as column_name\n FROM pg_index i\n JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)\n JOIN pg_class c ON c.oid = i.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE i.indisprimary = true\n AND c.relname = $1\n AND n.nspname = $2\n ",s=[a,r]):(c="\n SELECT COLUMN_NAME AS column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND CONSTRAINT_NAME = 'PRIMARY'\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,E=m.length?m:_,e.abrupt("return",E.map((function(e){return e.column_name})));case 15:throw e.prev=15,e.t0=e.catch(2),console.error("Error fetching primary keys:",e.t0),e.t0;case 19:case"end":return e.stop()}}),n,null,[[2,15]])})));return function(e,t){return n.apply(this,arguments)}}(),r=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",n.next=7,t.query("\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{column_name:e.COLUMN_NAME,enum_name:e.COLUMN_NAME,values:e.COLUMN_TYPE.replace(/^enum\((.*)\)$/,"$1").split(",").map((function(e){return e.trim().replace(/^'|'$/g,"")}))}})));case 13:return"\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",n.next=16,t.query("\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",[r,a]);case 16:if(0!==(i=n.sent).rows.length){n.next=19;break}return n.abrupt("return",[]);case 19:return m=i.rows.map((function(e){return e.udt_name})),"\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",n.next=23,t.query("\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",[m]);case 23:return l=n.sent,_=l.rows.reduce((function(e,n){return e[n.enum_name]=e[n.enum_name]||[],e[n.enum_name].push(n.value),e}),{}),n.abrupt("return",i.rows.map((function(e){return{column_name:e.column_name,enum_name:e.udt_name,values:_[e.udt_name]||[]}})));case 26:n.next=32;break;case 28:throw n.prev=28,n.t0=n.catch(2),console.error("Error fetching ENUM fields:",n.t0),n.t0;case 32:case"end":return n.stop()}}),n,null,[[2,28]])})));return function(e,t){return n.apply(this,arguments)}}(),o=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p,N,f,A,g,h,b,O=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=O.length>2&&void 0!==O[2]?O[2]:"public",o=O.length>3&&void 0!==O[3]?O[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",n.next=7,t.query("\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{relation:"BelongsToOneRelation",relatedTable:e.foreign_table_name,foreignKey:e.COLUMN_NAME,localKey:e.foreign_column_name}})));case 13:return"\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",i="\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND ccu.table_name = $1\n AND tc.table_schema = $2\n ",n.next=17,t.query("\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",[a,r]);case 17:return m=n.sent,l=m.rows,n.next=21,t.query(i,[a,r]);case 21:_=n.sent,E=_.rows,p={},N=e.createForOfIteratorHelper(l);try{for(N.s();!(f=N.n()).done;)A=f.value,p[A.foreign_table_name]={relation:"BelongsToOneRelation",relatedTable:A.foreign_table_name,foreignKey:A.column_name,localKey:A.foreign_column_name}}catch(e){N.e(e)}finally{N.f()}g=e.createForOfIteratorHelper(E);try{for(g.s();!(h=g.n()).done;)b=h.value,p[b.table_name]={relation:"HasManyRelation",relatedTable:b.table_name,foreignKey:b.foreign_column_name,localKey:b.column_name}}catch(e){g.e(e)}finally{g.f()}return n.abrupt("return",p);case 29:n.next=35;break;case 31:throw n.prev=31,n.t0=n.catch(2),console.error("Error fetching table relations:",n.t0),n.t0;case 35:case"end":return n.stop()}}),n,null,[[2,31]])})));return function(e,t){return n.apply(this,arguments)}}(),c=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){var a,r,o,c,s,u,i,m,l,_=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=_.length>1&&void 0!==_[1]?_[1]:"public",r=_.length>2&&void 0!==_[2]?_[2]:"pg",e.prev=2,"mysql"===r?(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = ?\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations')\n ",c=[a]):(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_schema NOT IN ('information_schema', 'pg_catalog')\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations', 'migrations_lock')\n ",c=[a]),e.next=6,t.query(o,c);case 6:return s=e.sent,u=s.rows,i=void 0===u?[]:u,m=s[0],l=void 0===m?[]:m,e.abrupt("return",i.length?i:l);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Error fetching tables:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e){return n.apply(this,arguments)}}();exports.capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},exports.checkDatabaseConnection=n,exports.extractEnumValue=function(e){if(!e)return null;var n=e.match(/^'(.+?)'::/);return n?n[1]:e},exports.getEnumFieldsAndValues=r,exports.getPrimaryKeys=a,exports.getTableColumns=t,exports.getTableRelations=o,exports.getTables=c,exports.removePluralSuffix=function(e){var n={children:"child",men:"man",women:"woman",mice:"mouse",geese:"goose",feet:"foot",teeth:"tooth",people:"person",data:"datum",criteria:"criterion",fungi:"fungus",nuclei:"nucleus",cacti:"cactus"};return n[e.toLowerCase()]?n[e.toLowerCase()]:/(ies)$/.test(e)?e.replace(/ies$/,"y"):/(ves)$/.test(e)?e.replace(/ves$/,"f"):/(oes|xes|ses|shes|ches|zes)$/.test(e)?e.replace(/(oes|xes|ses|shes|ches|zes)$/,""):/(s)$/.test(e)&&!/(ss)$/.test(e)?e.replace(/s$/,""):e},exports.toCamelCase=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},exports.toKebabCase=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},exports.toPascalCase=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("")};
|
package/lib/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e,r=require("./_virtual/_rollupPluginBabelHelpers.js"),a=require("./utils.js"),t=require("./make_model.js"),n=require("./make_resource.js"),s=require("./make_controller.js"),c=require("./make_crud.js"),o=require("./make_validation.js"),l=require("./make_service.js"),i=require("./db.js"),u=r.toArray(process.argv);u[0],u[1];var p=u[2],m=u.slice(3);p||(console.error("❌ action undefined."),process.exit(1));var
|
|
2
|
+
"use strict";var e,r=require("./_virtual/_rollupPluginBabelHelpers.js"),a=require("./express/utils.js"),t=require("./express/make_model.js"),n=require("./express/make_resource.js"),s=require("./express/make_controller.js"),c=require("./express/make_crud.js"),o=require("./express/make_validation.js"),l=require("./express/make_service.js"),i=require("./db.js"),u=r.toArray(process.argv);u[0],u[1];var p=u[2],m=u.slice(3);p||(console.error("❌ action undefined."),process.exit(1));var v="",d="default",f=null!==(e=process.env.DB_SCHEMA)&&void 0!==e?e:"public",k=process.env.DB_CLIENT||"pg",x=!1,b=!1;if(m.length>0){var h,y=r.createForOfIteratorHelper(m);try{for(y.s();!(h=y.n()).done;){var g=h.value.split("="),q=r.slicedToArray(g,2),_=q[0],j=q[1];"--schema"===_&&(f=j),"--path"===_&&(d=j),"--prisma"===_&&(x=!0),"--mysql"===_&&(k="mysql"),"--pg"===_&&(k="pg"),"--skip-controller"===_&&!0,"--controller-only"===_&&(b=!0),"--table"===_&&(v=j)}}catch(e){y.e(e)}finally{y.f()}v||"make:crud"===p||(console.error("❌ table undefined."),process.exit(1))}if("--help"===p&&(console.log("\n Usage:npx frgen <action> [options]\n \n Actions:\n make:model Generate model file\n make:resource Generate resource file\n make:controller Generate controller, service, validation, and resource files\n make:crud Generate all files for CRUD operations\n make:validation Generate validation files\n make:service Generate service files\n --help Show this help message\n\n Options:\n --table=<table_name> Specify the table name (required)\n --schema=<schema_name> Specify the database schema (default: public)\n --path=<output_path> Specify the output path (default: default)\n --prisma Generate Prisma-compatible service files\n --mysql Use MySQL as the database client\n --pg Use PostgreSQL as the database client\n "),process.exit(0)),"make:crud"===p){var C=r.toArray(process.argv);C[0],C[1],C[2];var G=C.slice(3);if(G.length>0){var S,A=r.createForOfIteratorHelper(G);try{for(A.s();!(S=A.n()).done;){var D=S.value.split("="),P=r.slicedToArray(D,2),R=P[0],B=P[1];"--schema"===R&&(f=B),"--prisma"===R&&(x=!0),"--pg"===R&&(k="pg"),"--mysql"===R&&(k="mysql",f=process.env.DB_NAME)}}catch(e){A.e(e)}finally{A.f()}}}(function(){var e=r.asyncToGenerator(r.regeneratorRuntime().mark((function e(){var u,m,h,y,g,q,_,j,C,G;return r.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,process.env.DB_CLIENT=k,e.next=4,i.createPool();case 4:return u=e.sent,e.next=7,a.checkDatabaseConnection(u);case 7:e.t0=p,e.next="make:model"===e.t0?10:"make:resource"===e.t0?14:"make:controller"===e.t0?17:"make:crud"===e.t0?33:"make:validation"===e.t0?36:"make:service"===e.t0?39:42;break;case 10:return m="".concat(a.toPascalCase(a.removePluralSuffix(v)),"Controller"),e.next=13,t(m,v,u,f,k);case 13:return e.abrupt("break",44);case 14:return e.next=16,n(v,u,f,k,d);case 16:return e.abrupt("break",44);case 17:return h=d.endsWith("/")?d.slice(0,-1):d,y=h.includes("controller"),g=y?h:"".concat(h,"/controller"),q=y?h.replace("controller","service"):"".concat(h,"/service"),_=y?h.replace("controller","validation"):"".concat(h,"/validation"),j=y?h.replace("controller","resource"):"".concat(h,"/resource"),e.next=25,s(v,g);case 25:if(b){e.next=32;break}return e.next=28,l(v,q,x);case 28:return e.next=30,o(v,u,f,k,_);case 30:return e.next=32,n(v,u,f,k,j);case 32:return e.abrupt("break",44);case 33:return e.next=35,c(d,u,f,x,k);case 35:return e.abrupt("break",44);case 36:return e.next=38,o(v,u,f,k,d);case 38:return e.abrupt("break",44);case 39:return e.next=41,l(v,d,x);case 41:return e.abrupt("break",44);case 42:console.error("❌ Unknown action: ".concat(p)),process.exit(1);case 44:e.next=50;break;case 46:e.prev=46,e.t1=e.catch(0),console.error("❌ ERROR:",e.t1),process.exit(1);case 50:if(e.prev=50,null===(C=u)||void 0===C||!C.end){e.next=56;break}return e.next=54,u.end();case 54:e.next=59;break;case 56:if(null===(G=u)||void 0===G||!G.releaseConnection){e.next=59;break}return e.next=59,u.releaseConnection();case 59:return e.finish(50);case 60:case"end":return e.stop()}}),e,null,[[0,46,50,60]])})));return function(){return e.apply(this,arguments)}})()();
|
|
@@ -0,0 +1,2 @@
|
|
|
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,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)}}(),x=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,y(t,r,"index");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,y(t,r,"view");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,y(t,r,"create");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,y(t,r,"update");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(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)}}(),j=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=b,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=R,exports.generateIndexPage=x,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=function(e){try{var n=e.title,r="".concat(u(n),".service.ts"),o=i(n),a=u(n),c=p(n),s=t.join(process.cwd(),"src","services",r),l=t.dirname(s),m="import { ".concat(c,' } from "@typings/model";\nimport { EventSend } from "ezhooks";\n\nconst baseUrl = "http://localhost:3000/api";\n\nexport const ').concat(o,"Url = {\n index: `${baseUrl}/").concat(a,"`,\n view: `${baseUrl}/").concat(a,"/:id`,\n remove: `${baseUrl}/").concat(a,"/:id`,\n};\n\nexport const get").concat(c," = async (event: EventSend): Promise<HttpResponse<").concat(c,"[]>> => {\n let url = ").concat(o,"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(c,"ID = (id: number) => async (event: EventSend): Promise<HttpResponse<").concat(c,">> => {\n const res = await fetch(").concat(o,"Url.view.replace(':id', String(id)), {\n signal: event.ctr?.signal,\n });\n return res.json();\n};\n\nexport const post").concat(c," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(o,'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(c," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(o,'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(c," = async (event: EventSend) => {\n return fetch(").concat(o,"Url.remove.replace(':id', event.params.id), {\n method: \"DELETE\",\n signal: event.ctr?.signal,\n });\n};\n");f(l),g(s,m,"Service ".concat(r," created"))}catch(n){console.error("❌ Error generating service for ".concat(e.title,":"),n.message)}},exports.generateUpdatePage=S,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=w,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=j,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"),n=require("./mui.gen.js"),r=e.toArray(process.argv);r[0],r[1];var o=r[2],l=r.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,templateDir:void 0,ignoreTemplate:[]};function m(t){var a,n=e.objectSpread2({},i),r=e.createForOfIteratorHelper(t);try{for(r.s();!(a=r.n()).done;){var o=a.value.split("="),l=e.slicedToArray(o,2),m=l[0],p=l[1];switch(m){case"--file":n.file=p;break;case"--index-template":n.indexTemplate=p;break;case"--form-template":n.formTemplate=p;break;case"--view-template":n.viewTemplate=p;break;case"--create-template":n.createTemplate=p;break;case"--update-template":n.updateTemplate=p;break;case"--template":n.templateDir=p,n.indexTemplate="".concat(p,"/index-template.js"),n.formTemplate="".concat(p,"/form-template.js"),n.viewTemplate="".concat(p,"/view-template.js"),n.createTemplate="".concat(p,"/create-template.js"),n.updateTemplate="".concat(p,"/update-template.js");break;case"--ignore":n.ignoreTemplate=p.split(",")}}}catch(e){r.e(e)}finally{r.f()}return n}function p(t,a){var n=e.objectSpread2({},a);return null!=t&&t.templateDir&&!a.templateDir&&(n.indexTemplate||(n.indexTemplate="".concat(t.templateDir,"/index-template.js")),n.formTemplate||(n.formTemplate="".concat(t.templateDir,"/form-template.js")),n.viewTemplate||(n.viewTemplate="".concat(t.templateDir,"/view-template.js")),n.createTemplate||(n.createTemplate="".concat(t.templateDir,"/create-template.js")),n.updateTemplate||(n.updateTemplate="".concat(t.templateDir,"/update-template.js"))),null!=t&&t.ignoreTemplate&&0===a.ignoreTemplate.length&&(n.ignoreTemplate=t.ignoreTemplate),null!=t&&t.jsonSchemaFile&&a.file===i.file&&(n.file=t.jsonSchemaFile),null!=t&&t.schemaImportStatement&&(n.schemaImportStatement=t.schemaImportStatement),n}function c(t,a,r,o){var l=e.objectSpread2({title:t},a);o.ignoreTemplate.includes("service")||n.generateService(l),o.ignoreTemplate.includes("validation")||n.generateValidation(l,o.schemaImportStatement),o.ignoreTemplate.includes("form")||n.generateForm(l,r,o.formTemplate),o.ignoreTemplate.includes("index")||n.generateIndexPage(l,o.indexTemplate),o.ignoreTemplate.includes("create")||n.generateCreatePage(l,o.createTemplate),o.ignoreTemplate.includes("update")||n.generateUpdatePage(l,o.updateTemplate),o.ignoreTemplate.includes("view")||n.generateViewPage(l,o.viewTemplate),o.ignoreTemplate.includes("dummy")||n.generateDummy(l)}function s(e,t,a){return u.apply(this,arguments)}function u(){return u=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,r,o){var l;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:l=Object.entries(r.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:form"===t.t0?17:20;break;case 4:return l.forEach((function(t){var a=e.slicedToArray(t,2);c(a[0],a[1],r.definitions,o)})),n.jsonToTS(o.file),console.log("✅ Pages generated successfully!"),t.abrupt("break",22);case 8:return l.forEach((function(t){var a=e.slicedToArray(t,2),r=a[0],o=a[1];n.generateDummy(e.objectSpread2({title:r},o))})),console.log("✅ Dummy data generated successfully!"),t.abrupt("break",22);case 11:return n.generateRoute(l.map((function(t){return e.slicedToArray(t,1)[0]}))),console.log("✅ Routes generated successfully!"),t.abrupt("break",22);case 14:return l.forEach((function(t){var a=e.slicedToArray(t,2),r=a[0],l=a[1];n.generateValidation(e.objectSpread2({title:r},l)),o.schemaImportStatement})),console.log("✅ Validation files generated successfully!"),t.abrupt("break",22);case 17:return l.forEach((function(t){var a=e.slicedToArray(t,2),o=a[0],l=a[1];n.generateForm(e.objectSpread2({title:o},l),r.definitions)})),console.log("✅ Form components generated successfully!"),t.abrupt("break",22);case 20:console.error("❌ Unknown action: ".concat(a)),process.exit(1);case 22:case"end":return t.stop()}}),t)}))),u.apply(this,arguments)}function d(){return(d=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(){var r,i,c,u,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,o||(console.error("❌ Action undefined."),console.log("Run 'npx regen --help' for usage information."),process.exit(1)),"--help"===o&&(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 --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)),r=m(l),e.next=6,n.loadRegenConfig();case 6:return i=e.sent,c=p(i,r),u=t.readFileSync(c.file,{encoding:"utf-8"}),d=JSON.parse(u),e.next=12,s(o,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"),n=require("./react/mui.gen.js"),r=e.toArray(process.argv);r[0],r[1];var o=r[2],l=r.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,templateDir:void 0,ignoreTemplate:[]};function m(t){var a,n=e.objectSpread2({},i),r=e.createForOfIteratorHelper(t);try{for(r.s();!(a=r.n()).done;){var o=a.value.split("="),l=e.slicedToArray(o,2),m=l[0],p=l[1];switch(m){case"--file":n.file=p;break;case"--index-template":n.indexTemplate=p;break;case"--form-template":n.formTemplate=p;break;case"--view-template":n.viewTemplate=p;break;case"--create-template":n.createTemplate=p;break;case"--update-template":n.updateTemplate=p;break;case"--template":n.templateDir=p,n.indexTemplate="".concat(p,"/index-template.js"),n.formTemplate="".concat(p,"/form-template.js"),n.viewTemplate="".concat(p,"/view-template.js"),n.createTemplate="".concat(p,"/create-template.js"),n.updateTemplate="".concat(p,"/update-template.js");break;case"--ignore":n.ignoreTemplate=p.split(",")}}}catch(e){r.e(e)}finally{r.f()}return n}function p(t,a){var n=e.objectSpread2({},a);return null!=t&&t.templateDir&&!a.templateDir&&(n.indexTemplate||(n.indexTemplate="".concat(t.templateDir,"/index-template.js")),n.formTemplate||(n.formTemplate="".concat(t.templateDir,"/form-template.js")),n.viewTemplate||(n.viewTemplate="".concat(t.templateDir,"/view-template.js")),n.createTemplate||(n.createTemplate="".concat(t.templateDir,"/create-template.js")),n.updateTemplate||(n.updateTemplate="".concat(t.templateDir,"/update-template.js"))),null!=t&&t.ignoreTemplate&&0===a.ignoreTemplate.length&&(n.ignoreTemplate=t.ignoreTemplate),null!=t&&t.jsonSchemaFile&&a.file===i.file&&(n.file=t.jsonSchemaFile),null!=t&&t.schemaImportStatement&&(n.schemaImportStatement=t.schemaImportStatement),n}function c(t,a,r,o){var l=e.objectSpread2({title:t},a);o.ignoreTemplate.includes("service")||n.generateService(l),o.ignoreTemplate.includes("validation")||n.generateValidation(l,o.schemaImportStatement),o.ignoreTemplate.includes("form")||n.generateForm(l,r,o.formTemplate),o.ignoreTemplate.includes("index")||n.generateIndexPage(l,o.indexTemplate),o.ignoreTemplate.includes("create")||n.generateCreatePage(l,o.createTemplate),o.ignoreTemplate.includes("update")||n.generateUpdatePage(l,o.updateTemplate),o.ignoreTemplate.includes("view")||n.generateViewPage(l,o.viewTemplate),o.ignoreTemplate.includes("dummy")||n.generateDummy(l)}function s(e,t,a){return u.apply(this,arguments)}function u(){return u=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,r,o){var l;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:l=Object.entries(r.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:form"===t.t0?17:20;break;case 4:return l.forEach((function(t){var a=e.slicedToArray(t,2);c(a[0],a[1],r.definitions,o)})),n.jsonToTS(o.file),console.log("✅ Pages generated successfully!"),t.abrupt("break",22);case 8:return l.forEach((function(t){var a=e.slicedToArray(t,2),r=a[0],o=a[1];n.generateDummy(e.objectSpread2({title:r},o))})),console.log("✅ Dummy data generated successfully!"),t.abrupt("break",22);case 11:return n.generateRoute(l.map((function(t){return e.slicedToArray(t,1)[0]}))),console.log("✅ Routes generated successfully!"),t.abrupt("break",22);case 14:return l.forEach((function(t){var a=e.slicedToArray(t,2),r=a[0],l=a[1];n.generateValidation(e.objectSpread2({title:r},l)),o.schemaImportStatement})),console.log("✅ Validation files generated successfully!"),t.abrupt("break",22);case 17:return l.forEach((function(t){var a=e.slicedToArray(t,2),o=a[0],l=a[1];n.generateForm(e.objectSpread2({title:o},l),r.definitions)})),console.log("✅ Form components generated successfully!"),t.abrupt("break",22);case 20:console.error("❌ Unknown action: ".concat(a)),process.exit(1);case 22:case"end":return t.stop()}}),t)}))),u.apply(this,arguments)}function d(){return(d=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(){var r,i,c,u,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,o||(console.error("❌ Action undefined."),console.log("Run 'npx regen --help' for usage information."),process.exit(1)),"--help"===o&&(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 --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)),r=m(l),e.next=6,n.loadRegenConfig();case 6:return i=e.sent,c=p(i,r),u=t.readFileSync(c.file,{encoding:"utf-8"}),d=JSON.parse(u),e.next=12,s(o,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,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "frgen",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "helper generator",
|
|
5
5
|
"main": "lib/main.jss",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
9
|
-
"build": "rollup -c",
|
|
9
|
+
"build": "rollup -c && chmod +x lib/main.js lib/regen.js",
|
|
10
10
|
"rebuild": "rollup -c"
|
|
11
11
|
},
|
|
12
12
|
"bin": {
|
package/lib/file.gen.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./_virtual/_rollupPluginBabelHelpers.js"),t=require("./mui.gen.js"),a=require("path");require("fs");exports.generateIndexPage=function(r){try{var c=r.title,o=(t.toPascalCase(c),"".concat(t.toKebabCase(c),".service"),t.toPascalCase(c),a.join(process.cwd(),"src","pages",t.toKebabCase(c),"index.page.tsx")),n=(a.dirname(o),Object.entries(r.properties).map((function(a){var r=e.slicedToArray(a,2),c=r[0],o=r[1],n=Array.isArray(o.type)?o.type.at(0):o.type,l=['label: "'.concat(t.toPascalWithSpace(c),'"'),'sortKey: "'.concat(c,'"'),"value: (v) => v.".concat(c)],s=['type: "text"','value: table.query("'.concat(c,'", "")'),'options: { placeholder: "Find '.concat(t.toPascalWithSpace(c),'..." }'),"onChange: (e) => table.setQuery({ ".concat(c,": e.target.value })")],u=[],i={label:c,typeData:n};return t.isString(n)||(t.isNumber(n)?s[3]="onChange: (e) => table.setQuery({ ".concat(c,": +e.target.value })"):t.isBoolean(n)&&(s[0]='type: "select"',s[1]='value: table.query("'.concat(c,'", "00")'),s[3]="onChange: (e) => {table.setQuery({ ".concat(c,': e.target.value === "00" ? "" : e.target.value })}'),s.splice(1,0,'items: [{ primary: "Yes", value: true },{ primary: "No", value: false }]'))),o.format&&["date","date-time"].includes(o.format)&&(s[0]='type: "date"',s=s.filter((function(e,t){return 2!==t}))),o.enum&&(s[0]='type: "select"',s[1]='value: table.query("'.concat(c,'", "00")'),s[3]="onChange: (e) => {table.setQuery({ ".concat(c,': e.target.value === "00" ? "" : e.target.value })}'),s.splice(1,0,"items: [".concat(o.enum.map((function(e){return'{ primary: "'.concat(t.toPascalWithSpace(e),'", value: "').concat(e,'" }')})).join(", "),"]"))),l.push("filter:{".concat(s.join(", "),"}")),u.push(i),u})));console.log("Generate Page:",n)}catch(e){console.log("err::",e)}};
|
package/lib/make_controller.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o){var s,i,l,u,d,p,m,x,q,f,v,w,y,R,b,g;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:try{c||(console.error("table name undefined"),process.exit(1)),s=r.removePluralSuffix(c),i="".concat(r.toPascalCase(s),"Resource"),l="".concat(r.toKebabCase(s),".resource"),u="".concat(r.toKebabCase(s),".service"),d="".concat(r.toKebabCase(s),".validation"),p="create".concat(r.toPascalCase(s),"Schema"),m="update".concat(r.toPascalCase(s),"Schema"),x="".concat(r.toPascalCase(s),"Controller"),q=r.toPascalCase(s),f="const validated = await req.validation(".concat(m,");"),v="const validated = await req.validation(".concat(p,");"),w="".concat(r.toKebabCase(s),".controller.ts"),y=r.toKebabCase(s),R=t.join(process.cwd(),"src","app","http","controller",w),"default"!==o&&(R=t.join(process.cwd(),o,w)),b='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, get'.concat(q,"ID, create").concat(q,", update").concat(q,", delete").concat(q,'} from "@service/').concat(u,'";\nimport ').concat(i,' from "@resource/').concat(l,'";\nimport { ').concat(p,",").concat(m,' } from "@validation/').concat(d,'";\n\n@Controller("/').concat(y,'")\nexport class ').concat(x,' {\n\n @Get("/")\n async get').concat(q,"Paginate(req: Request, res: Response, next: NextFunction){\n try {\n const results = await getPaginate(req.query);\n res.json(").concat(i,'.paginate(results));\n } catch (error) {\n next(error);\n }\n };\n\n @Get("/:id")\n async get').concat(q,"View(req: Request, res: Response, next: NextFunction){\n try {\n const model = await get").concat(q,"ID(+req.params.id)\n res.json(new ").concat(i,'(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Post("/")\n async create').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n ").concat(v,"\n const model = await create").concat(q,"(validated);\n res.json(new ").concat(i,'(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Put("/")\n async update').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n ").concat(f,"\n const model = await update").concat(q,"(validated);\n res.json(new ").concat(i,'(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Delete("/:id")\n async delete$').concat(q,"(req: Request, res: Response, next: NextFunction){\n try {\n await delete").concat(q,"(+req.params.id)\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n };\n}\n"),g=t.dirname(R),n.existsSync(g)||n.mkdirSync(g,{recursive:!0}),n.writeFile(R,b,(function(e){e?console.error("err: ",e):console.log("File ".concat(w," has been created"))}))}catch(e){console.error("err::",e)}case 1:case"end":return e.stop()}}),a)})));return function(e,n){return a.apply(this,arguments)}}();module.exports=a;
|
package/lib/make_crud.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("./make_controller.js"),t=require("./make_model.js"),a=require("./make_service.js"),n=require("./make_validation.js"),s=require("./utils.js"),u=function(){var u=e.asyncToGenerator(e.regeneratorRuntime().mark((function u(c,o,i,l,p){var v,x,f,m,k,b,_;return e.regeneratorRuntime().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.prev=0,u.next=3,s.getTables(o,i,p);case 3:v=u.sent,x=e.createForOfIteratorHelper(v),u.prev=5,x.s();case 7:if((f=x.n()).done){u.next=24;break}return k=f.value,b=null!==(m=k.table_name)&&void 0!==m?m:k.TABLE_NAME,u.next=12,r(b,c);case 12:return u.next=14,a(b,c,l);case 14:return u.next=16,n(b,pool,i,p,c);case 16:return u.next=18,t(b,pool,i,p,c);case 18:if(l){u.next=22;break}return _=s.toPascalCase(s.removePluralSuffix(b)),u.next=22,t(_,b,o,i,p);case 22:u.next=7;break;case 24:u.next=29;break;case 26:u.prev=26,u.t0=u.catch(5),x.e(u.t0);case 29:return u.prev=29,x.f(),u.finish(29);case 32:u.next=37;break;case 34:u.prev=34,u.t1=u.catch(0),console.log(u.t1);case 37:return u.prev=37,u.finish(37);case 39:case"end":return u.stop()}}),u,null,[[0,34,37,39],[5,26,29,32]])})));return function(e,r,t,a,n){return u.apply(this,arguments)}}();module.exports=u;
|
package/lib/make_model.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js");function a(n){return Array.from(new Set(Object.entries(n).map((function(n){var t=e.slicedToArray(n,2);t[0];var a=t[1].relatedTable;return"import ".concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a)))," from './").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a))),"';")})))).join("\n")}function o(n,t){var a=Object.entries(n).map((function(n){var a=e.slicedToArray(n,2),o=a[0],c=a[1],i=c.relation,l=c.relatedTable,s=c.foreignKey,u=c.localKey;return"\n ".concat(o,": {\n relation: Model.").concat(i,",\n modelClass: ").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(l))),",\n join: {\n ").concat("ManyToManyRelation"===i?"\n from: '".concat(u,"',\n through: {\n from: '").concat(s,"',\n to: '").concat(s,"'\n },\n to: '").concat(u,"'"):"\n from: '".concat(t,".").concat(s,"',\n to: '").concat(l,".").concat(u,"'"),"\n }\n }")})).join(",");return"\nstatic get relationMappings() {\nreturn {".concat(a,"\n};\n}")}var c=function(){var c=e.asyncToGenerator(e.regeneratorRuntime().mark((function c(i,l,s){var u,m,p,d,f,b,g,v,y,h,x,C,j,M=arguments;return e.regeneratorRuntime().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return u=M.length>3&&void 0!==M[3]?M[3]:"public",m=M.length>4&&void 0!==M[4]?M[4]:"pg",c.prev=2,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),p="".concat(i,".ts"),d=t.join(process.cwd(),"src","app","model",p),c.next=9,r.getTableColumns(s,null!=l?l:i.toLowerCase()+"s",u,m);case 9:return f=c.sent,b=Object.fromEntries(f.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),c.next=13,r.getTableRelations(s,l,u,m);case 13:g=c.sent,v=Object.entries(b).map((function(n){var t,a=e.slicedToArray(n,2),o=a[0],c=a[1],i=r.toCamelCase(o),l=(t=c.type,["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(t)?"number":["varchar","text","string","char","character varying","uuid"].includes(t)?"string":["boolean"].includes(t)?"boolean":["date","datetime","timestamp","timestamp with time zone"].includes(t)?"Date":"any");return" public ".concat(i,": ").concat(l,";")})).join("\n"),y='\n static get tableName() {\n return "'.concat(i.toLowerCase(),'s";\n }\n '),l&&(y='\n static get tableName() {\n return "'.concat(l,'";\n }\n ')),h=g?a(g):"",x=g?o(g,l):"",C='\n import Model from "@lib/Model";\n import { snakeCaseMappers } from "objection";\n '.concat(h,"\n \n export default class ").concat(i," extends Model {\n \n ").concat(v,"\n \n ").concat(y,'\n \n static get idColumn() {\n return "id";\n }\n \n static get columnNameMappers() {\n return snakeCaseMappers();\n }\n \n ').concat(x,"\n }"),j=t.dirname(d),n.existsSync(j)||n.mkdirSync(j,{recursive:!0}),n.writeFile(d,C,(function(e){e?console.error("err::",e):console.log("File ".concat(p," has been created"))})),c.next=28;break;case 25:c.prev=25,c.t0=c.catch(2),console.error("err::",c.t0);case 28:return c.prev=28,c.finish(28);case 30:case"end":return c.stop()}}),c,null,[[2,25,28,30]])})));return function(e,n,t){return c.apply(this,arguments)}}();module.exports=c;
|
package/lib/make_resource.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("fs"),n=require("path"),t=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(o,c,u,s,l){var i,p,d,m,f,v,_,b,x;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,o||(console.error("table name undefined"),process.exit(1)),i=t.removePluralSuffix(o),p="".concat(t.toKebabCase(i),".resource.ts"),d="".concat(t.toPascalCase(i),"Resource"),m=n.join(process.cwd(),"src","app","http","resource",p),"default"!==l&&(m=n.join(process.cwd(),l,p)),e.next=9,t.getTableColumns(c,o,u,s);case 9:f=e.sent,v=Object.fromEntries(f.map((function(e){var r,n,t,a,o;return[null!==(r=e.column_name)&&void 0!==r?r:e.COLUMN_NAME,{defaultValue:null!==(n=e.column_default)&&void 0!==n?n:e.COLUMN_DEFAULT,type:null!==(t=e.data_type)&&void 0!==t?t:e.DATA_TYPE,maxLength:null!==(a=e.character_maximum_length)&&void 0!==a?a:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(o=e.is_nullable)&&void 0!==o?o:e.IS_NULLABLE)}]}))),_=Object.keys(v).filter((function(e){return"created_at"!==e&&"updated_at"!==e})).map((function(e){return"".concat(t.toCamelCase(e),": this.").concat(t.toCamelCase(e))})).join(",\n"),b='\nimport Resource from "frexp/lib/Resource";\n\nexport default class '.concat(d," extends Resource {\n toArray() {\n return {\n").concat(_,"\n };\n }\n}"),x=n.dirname(m),r.existsSync(x)||r.mkdirSync(x,{recursive:!0}),r.writeFile(m,b,(function(e){e?console.error("err:",e):console.log("File ".concat(p," has been created"))})),e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),console.error("err::",e.t0);case 21:return e.prev=21,e.finish(21);case 23:case"end":return e.stop()}}),a,null,[[0,18,21,23]])})));return function(e,r,n,t,o){return a.apply(this,arguments)}}();module.exports=a;
|
package/lib/make_service.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var n=require("./_virtual/_rollupPluginBabelHelpers.js"),e=require("fs"),t=require("path"),a=require("./utils.js"),o=function(){var o=n.asyncToGenerator(n.regeneratorRuntime().mark((function o(c,r,i){var s,d,u,p,l,m,y,f,w,h,q,x,g,v,b,F,C,P;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:try{c||(console.error("table name undefined"),process.exit(1)),s=a.removePluralSuffix(c),d=a.toPascalCase(s),u=a.toCamelCase(s),p=a.toPascalCase(s),l="".concat(a.toKebabCase(s),".service.ts"),m=t.join(process.cwd(),"src","app","http","service",l),"default"!==r&&(m=t.join(process.cwd(),r,l)),y="async",f="".concat(d,".query().findById(id)"),w="".concat(d,".query().insertAndFetch(payload)"),h="\n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;'),q=" \n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().delete();'),x="return ".concat(d,'.query().page(req.getQuery("page", 0), req.getQuery("perPage", 10));'),g="import ".concat(d,' from "@model/').concat(d,'";'),v="Create".concat(a.toPascalCase(s),"Schema"),b="Update".concat(a.toPascalCase(s),"Schema"),F="".concat(a.toKebabCase(s),".validation"),i&&(y="",f="prisma.".concat(u,".findFirst({where : {id}})"),w="prisma.".concat(u,".create({ data: payload })"),h="return prisma.".concat(u,".update({where: {id: +id!}, data: payload})"),q="return prisma.".concat(u,".delete({where: {id}})"),x="\n const count = await prisma.".concat(u,".count();\n const results = await prisma.").concat(u,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) })\n return { total: count, data: results };\n "),g='import prisma from "@config/db";'),C="\n".concat(g,'\nimport NotFoundException from "@exception/notFound.exception";\nimport {').concat(v,", ").concat(b,'} from "@validation/').concat(F,'";\n\nexport const getPaginate = async (qs: Record<string, any>) => {\n ').concat(x,"\n};\n\nexport const get").concat(p,"ID = async (id:number) => {\n const model = await ").concat(f,';\n if (!model) {\n throw new NotFoundException("Record")\n }\n return model;\n};\n\nexport const create').concat(p," = (payload:").concat(v,") => {\n return ").concat(w,";\n};\n\nexport const update").concat(p," = ").concat(y," ({id, ...payload}:").concat(b,") => {\n ").concat(h,"\n};\n\nexport const delete").concat(p," = ").concat(y," (id:number) => {\n ").concat(q,"\n};\n"),P=t.dirname(m),e.existsSync(P)||e.mkdirSync(P,{recursive:!0}),e.writeFile(m,C,(function(n){n?console.error("err: ",n):console.log("File ".concat(s,".ts has been "))}))}catch(n){console.error("err::",n)}case 1:case"end":return n.stop()}}),o)})));return function(n,e,t){return o.apply(this,arguments)}}();module.exports=o;
|
package/lib/make_validation.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js"),a=["int","integer","bigint","smallint","tinyint","numeric","decimal","float"],c=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"],o=["boolean"];function i(n,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],l=t.type,s=t.nullable,d=t.defaultValue,p=["z"],m=a.includes(l),f=c.includes(l),v=o.includes(l),h=u.map((function(e){return e.column_name})).includes(n);if(m)p.push("coerce.number()");else if(f)p.push("string()");else if(v)p.push("boolean()");else if(h){var y=u.find((function(e){return e.column_name===n}));y&&p.push("enum(Object.values(".concat(y.enum_name,") as [string, ...string[]])"))}else p.push("any()");var g=i.includes(n);s&&(p.push("optional()"),p.push("nullish()"));var _=["CURRENT_TIMESTAMP"].includes(d);if(d&&!_&&!g){var b;if(m)b=parseInt(d);else if(h){var A=u.find((function(e){return e.column_name===n}));A&&(b="".concat(A.enum_name,".").concat(r.extractEnumValue(d)))}else b=v?d:"'".concat(d,"'");void 0!==e.typeof(b)&&p.push("default(".concat(b,")"))}return"".concat(r.toCamelCase(n),":").concat(p.join("."))}function u(e,n){var t=n.type,i=["z"],u=a.includes(t),l=c.includes(t),s=o.includes(t);return u?i.push("coerce.number().int().nonoptional()"):l?i.push("string().nonempty().nonoptional()"):s?i.push("boolean()"):i.push("any()"),"".concat(r.toCamelCase(e),":").concat(i.join("."))}function l(e){return!["created_at","updated_at","createdAt","updatedAt"].includes(e)}var s=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o){var s,d,p,m,f,v,h,y,g,_,b,A,C,x,T,j,E,S,P,z,L=arguments;return e.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return s=L.length>2&&void 0!==L[2]?L[2]:"public",d=L.length>3&&void 0!==L[3]?L[3]:"pg",p=L.length>4&&void 0!==L[4]?L[4]:"default",a.prev=3,c||(console.error("table name undefined"),process.exit(1)),m=r.removePluralSuffix(c),f="".concat(r.toKebabCase(m),".validation.ts"),v="Create".concat(r.toPascalCase(m),"Schema"),h="Update".concat(r.toPascalCase(m),"Schema"),y="create".concat(r.toPascalCase(m),"Schema"),g="update".concat(r.toPascalCase(m),"Schema"),_=t.join(process.cwd(),"src","app","http","validation",f),"default"!==p&&(_=t.join(process.cwd(),p,f)),a.next=15,r.getTableColumns(o,c,s,d);case 15:return b=a.sent,A=Object.fromEntries(b.map((function(e){var n,t,r,a,c;return[null!==(n=e.column_name)&&void 0!==n?n:e.COLUMN_NAME,{defaultValue:null!==(t=e.column_default)&&void 0!==t?t:e.COLUMN_DEFAULT,type:null!==(r=e.data_type)&&void 0!==r?r:e.DATA_TYPE,maxLength:null!==(a=e.character_maximum_length)&&void 0!==a?a:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(c=e.is_nullable)&&void 0!==c?c:e.IS_NULLABLE)}]}))),a.next=19,r.getPrimaryKeys(o,c,s,d);case 19:return C=a.sent,a.next=22,r.getEnumFieldsAndValues(o,c,s,d);case 22:x=a.sent,T=Object.entries(A).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return!C.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),i(a,c,C,x)]})),j=Object.entries(A).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return C.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),u(a,c)]})),E="",x.length&&(S=x.map((function(e){return e.enum_name})).join(","),E="import { ".concat(S,' } from "@generated/prisma";')),P='\nimport * as z from "zod";\n'.concat(E,"\n\nexport const ").concat(y," = z.object({\n ").concat(T.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n});\n\nexport type ").concat(v," = z.infer<typeof ").concat(y,">;\n\nexport const ").concat(g," = ").concat(y,".extend({\n ").concat(j.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n});\n\nexport type ").concat(h," = z.infer<typeof ").concat(g,">;\n"),z=t.dirname(_),n.existsSync(z)||n.mkdirSync(z,{recursive:!0}),n.writeFile(_,P,(function(e){e?console.error("err: ",e):console.log("File ".concat(f," has been created"))})),a.next=36;break;case 33:a.prev=33,a.t0=a.catch(3),console.error("err:",a.t0);case 36:return a.prev=36,a.finish(36);case 38:case"end":return a.stop()}}),a,null,[[3,33,36,38]])})));return function(e,n){return a.apply(this,arguments)}}();module.exports=s;
|
package/lib/mui.gen.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
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,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)}}(),x=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,y(t,r,"index");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,y(t,r,"view");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,y(t,r,"create");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,y(t,r,"update");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(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)}}(),j=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("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=b,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=R,exports.generateIndexPage=x,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=function(e){try{var n=e.title,r="".concat(u(n),".service.ts"),o=i(n),a=u(n),c=p(n),s=t.join(process.cwd(),"src","services",r),l=t.dirname(s),m="import { ".concat(c,' } from "@typings/model";\nimport { EventSend } from "ezhooks";\n\nconst baseUrl = "http://localhost:3000/api";\n\nexport const ').concat(o,"Url = {\n index: `${baseUrl}/").concat(a,"`,\n view: `${baseUrl}/").concat(a,"/:id`,\n remove: `${baseUrl}/").concat(a,"/:id`,\n};\n\nexport const get").concat(c," = async (event: EventSend): Promise<HttpResponse<").concat(c,"[]>> => {\n let url = ").concat(o,"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(c,"ID = (id: number) => async (event: EventSend): Promise<HttpResponse<").concat(c,">> => {\n const res = await fetch(").concat(o,"Url.view.replace(':id', String(id)), {\n signal: event.ctr?.signal,\n });\n return res.json();\n};\n\nexport const post").concat(c," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(o,'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(c," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(o,'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(c," = async (event: EventSend) => {\n return fetch(").concat(o,"Url.remove.replace(':id', event.params.id), {\n method: \"DELETE\",\n signal: event.ctr?.signal,\n });\n};\n");f(l),g(s,m,"Service ".concat(r," created"))}catch(n){console.error("❌ Error generating service for ".concat(e.title,":"),n.message)}},exports.generateUpdatePage=S,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=w,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=j,exports.toCamelCase=i,exports.toKebabCase=u,exports.toPascalCase=p;
|
package/lib/utils.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./_virtual/_rollupPluginBabelHelpers.js");require("path");var n=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.query("SELECT 1");case 3:console.log("Connection success"),e.next=10;break;case 6:e.prev=6,e.t0=e.catch(0),console.error("Gagal terhubung ke database:",e.t0),process.exit(1);case 10:case"end":return e.stop()}}),n,null,[[0,6]])})));return function(e){return n.apply(this,arguments)}}(),t=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_catalog = current_database()\n AND table_name = $1\n AND table_schema = $2\n ",s=[a,r]):(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,e.abrupt("return",m.length?m:_);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Gagal mengambil informasi tabel:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e,t){return n.apply(this,arguments)}}(),a=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>2&&void 0!==p[2]?p[2]:"public",o=p.length>3&&void 0!==p[3]?p[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT a.attname as column_name\n FROM pg_index i\n JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)\n JOIN pg_class c ON c.oid = i.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE i.indisprimary = true\n AND c.relname = $1\n AND n.nspname = $2\n ",s=[a,r]):(c="\n SELECT COLUMN_NAME AS column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND CONSTRAINT_NAME = 'PRIMARY'\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,E=m.length?m:_,e.abrupt("return",E.map((function(e){return e.column_name})));case 15:throw e.prev=15,e.t0=e.catch(2),console.error("Error fetching primary keys:",e.t0),e.t0;case 19:case"end":return e.stop()}}),n,null,[[2,15]])})));return function(e,t){return n.apply(this,arguments)}}(),r=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",n.next=7,t.query("\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{column_name:e.COLUMN_NAME,enum_name:e.COLUMN_NAME,values:e.COLUMN_TYPE.replace(/^enum\((.*)\)$/,"$1").split(",").map((function(e){return e.trim().replace(/^'|'$/g,"")}))}})));case 13:return"\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",n.next=16,t.query("\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",[r,a]);case 16:if(0!==(i=n.sent).rows.length){n.next=19;break}return n.abrupt("return",[]);case 19:return m=i.rows.map((function(e){return e.udt_name})),"\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",n.next=23,t.query("\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",[m]);case 23:return l=n.sent,_=l.rows.reduce((function(e,n){return e[n.enum_name]=e[n.enum_name]||[],e[n.enum_name].push(n.value),e}),{}),n.abrupt("return",i.rows.map((function(e){return{column_name:e.column_name,enum_name:e.udt_name,values:_[e.udt_name]||[]}})));case 26:n.next=32;break;case 28:throw n.prev=28,n.t0=n.catch(2),console.error("Error fetching ENUM fields:",n.t0),n.t0;case 32:case"end":return n.stop()}}),n,null,[[2,28]])})));return function(e,t){return n.apply(this,arguments)}}(),o=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p,N,f,A,g,h,b,O=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=O.length>2&&void 0!==O[2]?O[2]:"public",o=O.length>3&&void 0!==O[3]?O[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",n.next=7,t.query("\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{relation:"BelongsToOneRelation",relatedTable:e.foreign_table_name,foreignKey:e.COLUMN_NAME,localKey:e.foreign_column_name}})));case 13:return"\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",i="\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND ccu.table_name = $1\n AND tc.table_schema = $2\n ",n.next=17,t.query("\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",[a,r]);case 17:return m=n.sent,l=m.rows,n.next=21,t.query(i,[a,r]);case 21:_=n.sent,E=_.rows,p={},N=e.createForOfIteratorHelper(l);try{for(N.s();!(f=N.n()).done;)A=f.value,p[A.foreign_table_name]={relation:"BelongsToOneRelation",relatedTable:A.foreign_table_name,foreignKey:A.column_name,localKey:A.foreign_column_name}}catch(e){N.e(e)}finally{N.f()}g=e.createForOfIteratorHelper(E);try{for(g.s();!(h=g.n()).done;)b=h.value,p[b.table_name]={relation:"HasManyRelation",relatedTable:b.table_name,foreignKey:b.foreign_column_name,localKey:b.column_name}}catch(e){g.e(e)}finally{g.f()}return n.abrupt("return",p);case 29:n.next=35;break;case 31:throw n.prev=31,n.t0=n.catch(2),console.error("Error fetching table relations:",n.t0),n.t0;case 35:case"end":return n.stop()}}),n,null,[[2,31]])})));return function(e,t){return n.apply(this,arguments)}}(),c=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){var a,r,o,c,s,u,i,m,l,_=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=_.length>1&&void 0!==_[1]?_[1]:"public",r=_.length>2&&void 0!==_[2]?_[2]:"pg",e.prev=2,"mysql"===r?(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = ?\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations')\n ",c=[a]):(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_schema NOT IN ('information_schema', 'pg_catalog')\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations', 'migrations_lock')\n ",c=[a]),e.next=6,t.query(o,c);case 6:return s=e.sent,u=s.rows,i=void 0===u?[]:u,m=s[0],l=void 0===m?[]:m,e.abrupt("return",i.length?i:l);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Error fetching tables:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e){return n.apply(this,arguments)}}();exports.capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},exports.checkDatabaseConnection=n,exports.extractEnumValue=function(e){if(!e)return null;var n=e.match(/^'(.+?)'::/);return n?n[1]:e},exports.getEnumFieldsAndValues=r,exports.getPrimaryKeys=a,exports.getTableColumns=t,exports.getTableRelations=o,exports.getTables=c,exports.removePluralSuffix=function(e){var n={children:"child",men:"man",women:"woman",mice:"mouse",geese:"goose",feet:"foot",teeth:"tooth",people:"person",data:"datum",criteria:"criterion",fungi:"fungus",nuclei:"nucleus",cacti:"cactus"};return n[e.toLowerCase()]?n[e.toLowerCase()]:/(ies)$/.test(e)?e.replace(/ies$/,"y"):/(ves)$/.test(e)?e.replace(/ves$/,"f"):/(oes|xes|ses|shes|ches|zes)$/.test(e)?e.replace(/(oes|xes|ses|shes|ches|zes)$/,""):/(s)$/.test(e)&&!/(ss)$/.test(e)?e.replace(/s$/,""):e},exports.toCamelCase=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},exports.toKebabCase=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},exports.toPascalCase=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("")};
|