frgen 0.4.6 → 0.4.7

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/README.md CHANGED
@@ -1,7 +1,17 @@
1
1
  # 🧰 FRGEN and Regen — CLI CRUD Generator
2
2
 
3
3
  #### Backend
4
- `frgen` is a **Command Line Tool** that automatically generates boilerplate files such as **models**, **controllers**, **services**, **validations**, and **resources** based on your database table structure.
4
+ `frgen` is a **Command Line Tool** that automatically generates boilerplate files such as **models**, **controllers**, **services**, **repositories**, **validations**, and **resources** based on your database table structure.
5
+
6
+ When using `--prisma`, frgen follows a **repository pattern**:
7
+
8
+ ```
9
+ controller → service → repository → prisma
10
+ ```
11
+
12
+ - **Repository** — only layer that touches Prisma directly
13
+ - **Service** — delegates all DB operations to the repository
14
+ - **Controller** — handles HTTP request/response, calls service
5
15
 
6
16
  ---
7
17
 
@@ -20,7 +30,7 @@ npm install frgen --save-dev
20
30
  | `--table=<table_name>` | The table name used as the generation base | `--table=users` |
21
31
  | `--schema=<schema_name>` | (Optional) Database schema, default `public` | `--schema=my_schema` |
22
32
  | `--path=<output_folder>` | (Optional) Output file path | `--path=modules/user` |
23
- | `--prisma` | Use Prisma ORM | `--prisma` |
33
+ | `--prisma` | Use Prisma ORM (repository pattern) | `--prisma` |
24
34
  | `--pg` | Use PostgreSQL client | `--pg` |
25
35
  | `--mysql` | Use MySQL client | `--mysql` |
26
36
 
@@ -54,39 +64,67 @@ npx frgen make:resource --table=products
54
64
  ### 3. `make:controller`
55
65
  Generates a complete set of files including:
56
66
  - Controller
57
- - Service
67
+ - Service (delegates to repository when `--prisma`)
68
+ - Repository (only when `--prisma`)
58
69
  - Validation
59
70
  - Resource
60
71
 
61
72
  ```bash
62
- npx frgen make:controller --table=users --path=modules/users
73
+ npx frgen make:controller --table=users --path=modules/users --prisma
63
74
  ```
64
75
 
65
76
  **Steps performed:**
66
77
  1. `generateController()`
67
- 2. `generateService()`
68
- 3. `generateValidation()`
69
- 4. `generateContent()`
78
+ 2. `generateRepository()` *(if `--prisma`)*
79
+ 3. `generateService()`
80
+ 4. `generateValidation()`
81
+ 5. `generateContent()`
70
82
 
71
83
  ---
72
84
 
73
85
  ### 4. `make:crud`
74
86
  Generates a full CRUD structure at once, including:
75
- - Model
76
- - Controller
77
- - Service
78
- - Validation
79
- - Resource
87
+ - Model *(non-prisma only)*
88
+ - Controller
89
+ - Service
90
+ - Repository *(if `--prisma`)*
91
+ - Validation
92
+ - Resource
80
93
 
81
94
  ```bash
82
- npx frgen make:crud --pg --schema=public
95
+ npx frgen make:crud --pg --prisma --schema=public
83
96
  ```
84
97
 
85
98
  **Use this to generate the full CRUD boilerplate automatically.**
86
99
 
87
100
  ---
88
101
 
89
- ### 5. `make:validation`
102
+ ### 5. `make:module`
103
+ Generates all files for a single table **co-located inside one folder**. Imports between files use relative paths.
104
+
105
+ Includes:
106
+ - Controller
107
+ - Service
108
+ - Repository *(if `--prisma`)*
109
+ - Validation
110
+
111
+ ```bash
112
+ npx frgen make:module --table=users --prisma
113
+ ```
114
+
115
+ Default output: `src/http/module/user/`
116
+
117
+ ```
118
+ src/http/module/user/
119
+ user.controller.ts
120
+ user.service.ts
121
+ user.repository.ts
122
+ user.validation.ts
123
+ ```
124
+
125
+ ---
126
+
127
+ ### 6. `make:validation`
90
128
  Generates an automatic **validation** file based on table structure.
91
129
 
92
130
  ```bash
@@ -95,13 +133,24 @@ npx frgen make:validation --table=orders
95
133
 
96
134
  ---
97
135
 
98
- ### 6. `make:service`
99
- Generates a **service layer** file for business logic.
136
+ ### 7. `make:service`
137
+ Generates a **service layer** file. When `--prisma`, the service delegates to the repository instead of calling Prisma directly.
138
+
139
+ ```bash
140
+ npx frgen make:service --table=users --prisma --path=modules/users
141
+ ```
142
+
143
+ ---
144
+
145
+ ### 8. `make:repository`
146
+ Generates a **repository** file — the only layer that interacts with Prisma.
100
147
 
101
148
  ```bash
102
- npx frgen make:service --table=users --path=modules/users
149
+ npx frgen make:repository --table=users --prisma
103
150
  ```
104
151
 
152
+ Default output: `src/http/repository/`
153
+
105
154
  ---
106
155
 
107
156
  ## 🧠 Internal Explanation
@@ -115,7 +164,7 @@ npx frgen make:service --table=users --path=modules/users
115
164
  | `_path` | Output path for generated files |
116
165
  | `schema` | Database schema (default: `public`) |
117
166
  | `client` | Database client (`pg` or `mysql`) |
118
- | `prisma` | Boolean, whether Prisma ORM is used |
167
+ | `prisma` | Boolean, whether Prisma ORM + repository pattern is used |
119
168
  | `pool` | Active database connection |
120
169
 
121
170
  ---
@@ -128,7 +177,9 @@ npx frgen make:service --table=users --path=modules/users
128
177
  4. Check database connectivity with `checkDatabaseConnection()`
129
178
  5. Execute action based on the command:
130
179
  - `make:model` → `generateModelContent()`
131
- - `make:controller` → `generateController()`, `generateService()`, etc.
180
+ - `make:controller` → `generateController()`, `generateRepository()` *(prisma)*, `generateService()`, etc.
181
+ - `make:module` → all files co-located in one folder
182
+ - `make:repository` → `generateRepository()`
132
183
  - `make:crud` → `generateAll()`
133
184
  6. Close the database connection (`pool.end()` / `pool.releaseConnection()`)
134
185
 
@@ -146,9 +197,12 @@ npx frgen make:controller --table=users --schema=public --pg --path=modules/user
146
197
  npx frgen make:crud --mysql --path=modules/user
147
198
  ```
148
199
 
149
- ### With Prisma
200
+ ### With Prisma (repository pattern)
150
201
  ```bash
151
- npx frgen make:service --table=products --path=modules/products --prisma
202
+ npx frgen make:controller --table=users --schema=public --pg --prisma --path=src/http
203
+ npx frgen make:module --table=users --pg --prisma
204
+ npx frgen make:repository --table=products --pg --prisma --path=src/http/repository
205
+ npx frgen make:service --table=products --pg --prisma --path=src/http/service
152
206
  ```
153
207
 
154
208
  ---
@@ -161,7 +215,9 @@ npx frgen make:service --table=products --path=modules/products --prisma
161
215
  | `./utils.js` | Utility functions: `checkDatabaseConnection`, `removePluralSuffix`, `toPascalCase` |
162
216
  | `./make:model.js` | Model generator |
163
217
  | `./make:controller.js` | Controller generator |
164
- | `./make:service.js` | Service generator |
218
+ | `./make:service.js` | Service generator (delegates to repository when Prisma) |
219
+ | `./make:repository.js` | Repository generator (Prisma only) |
220
+ | `./make:module.js` | Module folder generator (co-located files) |
165
221
  | `./make:validation.js` | Validation generator |
166
222
  | `./make:resource.js` | Resource generator |
167
223
  | `./make:crud.js` | Full CRUD generator |
@@ -291,7 +347,16 @@ npx regen make:form
291
347
 
292
348
  ---
293
349
 
294
- ### **6. `--help`**
350
+ ### **6. `make:service`**
351
+ Generates service files only.
352
+
353
+ ```bash
354
+ npx regen make:service
355
+ ```
356
+
357
+ ---
358
+
359
+ ### **7. `--help`**
295
360
  Shows help message.
296
361
 
297
362
  ```bash
@@ -331,6 +396,7 @@ npx regen make:page --mui
331
396
  | `--view-template=<path>` | Custom view template |
332
397
  | `--create-template=<path>` | Custom create page template |
333
398
  | `--update-template=<path>` | Custom update page template |
399
+ | `--service-template=<path>` | Custom service template |
334
400
  | `--template=<dir>` | Directory containing all templates |
335
401
 
336
402
  Example:
@@ -348,6 +414,7 @@ custom-templates/
348
414
  view-template.js
349
415
  create-template.js
350
416
  update-template.js
417
+ service-template.js
351
418
  ```
352
419
 
353
420
  ---
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";function t(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function r(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function e(){e=function(){return r};var t,r={},n=Object.prototype,o=n.hasOwnProperty,i=Object.defineProperty||function(t,r,e){t[r]=e.value},a="function"==typeof Symbol?Symbol:{},u=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",f=a.toStringTag||"@@toStringTag";function l(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{l({},"")}catch(t){l=function(t,r,e){return t[r]=e}}function s(t,r,e,n){var o=r&&r.prototype instanceof b?r:b,a=Object.create(o.prototype),u=new I(n||[]);return i(a,"_invoke",{value:P(t,e,u)}),a}function y(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=s;var h="suspendedStart",p="suspendedYield",v="executing",d="completed",m={};function b(){}function g(){}function w(){}var x={};l(x,u,(function(){return this}));var O=Object.getPrototypeOf,j=O&&O(O(k([])));j&&j!==n&&o.call(j,u)&&(x=j);var L=w.prototype=b.prototype=Object.create(x);function E(t){["next","throw","return"].forEach((function(r){l(t,r,(function(t){return this._invoke(r,t)}))}))}function S(t,r){function e(n,i,a,u){var c=y(t[n],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&o.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(i,i):i()}})}function P(r,e,n){var o=h;return function(i,a){if(o===v)throw Error("Generator is already running");if(o===d){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=A(u,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var f=y(r,e,n);if("normal"===f.type){if(o=n.done?d:p,f.arg===m)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=d,n.method="throw",n.arg=f.arg)}}}function A(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,A(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=y(o,r.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,m;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,m):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,m)}function _(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function T(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}function k(r){if(r||""===r){var e=r[u];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,i=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return i.next=i}}throw new TypeError(typeof r+" is not iterable")}return g.prototype=w,i(L,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:g,configurable:!0}),g.displayName=l(w,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,f,"GeneratorFunction")),t.prototype=Object.create(L),t},r.awrap=function(t){return{__await:t}},E(S.prototype),l(S.prototype,c,(function(){return this})),r.AsyncIterator=S,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new S(s(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(L),l(L,f,"Generator"),l(L,u,(function(){return this})),l(L,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=k,I.prototype={constructor:I,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(T),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),f=o.call(a,"finallyLoc");if(c&&f){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!f)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),m},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),T(e),m}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;T(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:k(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),m}},r}function n(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function o(t){var r=n(t,"string");return"symbol"==typeof r?r:r+""}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function u(t,r,e){return(r=o(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function c(t){if(Array.isArray(t))return t}function f(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function l(t,r){if(t){if("string"==typeof t)return s(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?s(t,r):void 0}}function s(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.arrayLikeToArray=s,exports.arrayWithHoles=c,exports.asyncToGenerator=function(t){return function(){var r=this,e=arguments;return new Promise((function(n,o){var i=t.apply(r,e);function u(t){a(i,n,o,u,c,"next",t)}function c(t){a(i,n,o,u,c,"throw",t)}u(void 0)}))}},exports.createForOfIteratorHelper=function(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=l(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}},exports.defineProperty=u,exports.iterableToArray=f,exports.iterableToArrayLimit=t,exports.nonIterableRest=y,exports.objectSpread2=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach((function(r){u(t,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))}))}return t},exports.regeneratorRuntime=e,exports.slicedToArray=function(r,e){return c(r)||t(r,e)||l(r,e)||y()},exports.toArray=function(t){return c(t)||f(t)||l(t)||y()},exports.toPrimitive=n,exports.toPropertyKey=o,exports.typeof=i,exports.unsupportedIterableToArray=l;
2
+ "use strict";function t(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}function r(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function e(){e=function(){return r};var t,r={},n=Object.prototype,o=n.hasOwnProperty,i=Object.defineProperty||function(t,r,e){t[r]=e.value},a="function"==typeof Symbol?Symbol:{},u=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function f(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{f({},"")}catch(t){f=function(t,r,e){return t[r]=e}}function s(t,r,e,n){var o=r&&r.prototype instanceof b?r:b,a=Object.create(o.prototype),u=new I(n||[]);return i(a,"_invoke",{value:P(t,e,u)}),a}function y(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=s;var h="suspendedStart",p="suspendedYield",v="executing",d="completed",m={};function b(){}function g(){}function w(){}var x={};f(x,u,(function(){return this}));var O=Object.getPrototypeOf,j=O&&O(O(k([])));j&&j!==n&&o.call(j,u)&&(x=j);var L=w.prototype=b.prototype=Object.create(x);function E(t){["next","throw","return"].forEach((function(r){f(t,r,(function(t){return this._invoke(r,t)}))}))}function S(t,r){function e(n,i,a,u){var c=y(t[n],t,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==typeof f&&o.call(f,"__await")?r.resolve(f.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(i,i):i()}})}function P(r,e,n){var o=h;return function(i,a){if(o===v)throw Error("Generator is already running");if(o===d){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=A(u,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var l=y(r,e,n);if("normal"===l.type){if(o=n.done?d:p,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=d,n.method="throw",n.arg=l.arg)}}}function A(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,A(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=y(o,r.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,m;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,m):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,m)}function _(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function T(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}function k(r){if(r||""===r){var e=r[u];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,i=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return i.next=i}}throw new TypeError(typeof r+" is not iterable")}return g.prototype=w,i(L,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:g,configurable:!0}),g.displayName=f(w,l,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,f(t,l,"GeneratorFunction")),t.prototype=Object.create(L),t},r.awrap=function(t){return{__await:t}},E(S.prototype),f(S.prototype,c,(function(){return this})),r.AsyncIterator=S,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new S(s(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(L),f(L,l,"Generator"),f(L,u,(function(){return this})),f(L,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=k,I.prototype={constructor:I,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(T),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),l=o.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),m},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),T(e),m}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;T(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:k(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),m}},r}function n(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function o(t){var r=n(t,"string");return"symbol"==typeof r?r:r+""}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function u(t,r,e){return(r=o(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function c(t){if(Array.isArray(t))return y(t)}function l(t){if(Array.isArray(t))return t}function f(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function s(t,r){if(t){if("string"==typeof t)return y(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?y(t,r):void 0}}function y(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}function h(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.arrayLikeToArray=y,exports.arrayWithHoles=l,exports.arrayWithoutHoles=c,exports.asyncToGenerator=function(t){return function(){var r=this,e=arguments;return new Promise((function(n,o){var i=t.apply(r,e);function u(t){a(i,n,o,u,c,"next",t)}function c(t){a(i,n,o,u,c,"throw",t)}u(void 0)}))}},exports.createForOfIteratorHelper=function(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=s(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}},exports.defineProperty=u,exports.iterableToArray=f,exports.iterableToArrayLimit=t,exports.nonIterableRest=p,exports.nonIterableSpread=h,exports.objectSpread2=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach((function(r){u(t,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))}))}return t},exports.regeneratorRuntime=e,exports.slicedToArray=function(r,e){return l(r)||t(r,e)||s(r,e)||p()},exports.toArray=function(t){return l(t)||f(t)||s(t)||p()},exports.toConsumableArray=function(t){return c(t)||f(t)||s(t)||h()},exports.toPrimitive=n,exports.toPropertyKey=o,exports.typeof=i,exports.unsupportedIterableToArray=s;
@@ -1,2 +1,2 @@
1
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;
2
+ "use strict";var e=require("./utils.js");module.exports=function(t,n){t||(console.error("table name undefined"),process.exit(1));var a=e.removePluralSuffix(t),c="".concat(e.toPascalCase(a),"Resource"),r="".concat(e.toKebabCase(a),".resource"),o="".concat(e.toKebabCase(a),".service"),s="".concat(e.toKebabCase(a),".validation"),i="create".concat(e.toPascalCase(a),"Schema"),l="update".concat(e.toPascalCase(a),"Schema"),u="".concat(e.toPascalCase(a),"Controller"),d=e.toPascalCase(a),p="".concat(e.toKebabCase(a),".controller.ts"),x=e.toKebabCase(a),q=e.resolveOutputPath(["src","app","http","controller"],n,p),m='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, get'.concat(d,"ID, create").concat(d,", update").concat(d,", delete").concat(d,'} from "@service/').concat(o,'";\nimport ').concat(c,' from "@resource/').concat(r,'";\nimport { ').concat(i,",").concat(l,' } from "@validation/').concat(s,'";\n\n@Controller("/').concat(x,'")\nexport class ').concat(u,' {\n\n @Get("/")\n async get').concat(d,"Paginate(req: Request, res: Response, next: NextFunction){\n try {\n const results = await getPaginate(req.query);\n res.json(").concat(c,'.paginate(results));\n } catch (error) {\n next(error);\n }\n };\n\n @Get("/:id")\n async get').concat(d,"View(req: Request, res: Response, next: NextFunction){\n try {\n const result = await get").concat(d,"ID(+req.params.id)\n res.json(new ").concat(c,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Post("/")\n async create').concat(d,"(req: Request, res: Response, next: NextFunction){\n try {\n const validated = await req.validation(").concat(i,");\n const result = await create").concat(d,"(validated);\n res.json(new ").concat(c,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Put("/")\n async update').concat(d,"(req: Request, res: Response, next: NextFunction){\n try {\n const validated = await req.validation(").concat(l,");\n const result = await update").concat(d,"(validated);\n res.json(new ").concat(c,'(result, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Delete("/:id")\n async delete').concat(d,"(req: Request, res: Response, next: NextFunction){\n try {\n await delete").concat(d,"(+req.params.id)\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n };\n}\n");e.writeFileSafe(q,m,p)};
@@ -1,2 +1,2 @@
1
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;
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("./make_repository.js"),u=require("./utils.js"),o=function(){var o=e.asyncToGenerator(e.regeneratorRuntime().mark((function o(l,i,f,v,d){var p,x,k,m,b,_,g;return e.regeneratorRuntime().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,u.getTables(i,f,d);case 3:p=o.sent,console.log("Generating CRUD for ".concat(p.length," tables...")),x=e.createForOfIteratorHelper(p),o.prev=6,x.s();case 8:if((k=x.n()).done){o.next=28;break}return b=k.value,_=null!==(m=b.table_name)&&void 0!==m?m:b.TABLE_NAME,o.next=13,r(_,"default"!==l?"".concat(l,"/controller"):"default");case 13:if(!v){o.next=16;break}return o.next=16,s(_,"default"!==l?"".concat(l,"/repository"):"default");case 16:return o.next=18,n(_,"default"!==l?"".concat(l,"/service"):"default",v);case 18:return o.next=20,c(_,i,f,d,"default"!==l?"".concat(l,"/validation"):"default");case 20:return o.next=22,a(_,i,f,d,"default"!==l?"".concat(l,"/resource"):"default");case 22:if(v){o.next=26;break}return g=u.toPascalCase(u.removePluralSuffix(_)),o.next=26,t(g,_,i,f,d);case 26:o.next=8;break;case 28:o.next=33;break;case 30:o.prev=30,o.t0=o.catch(6),x.e(o.t0);case 33:return o.prev=33,x.f(),o.finish(33);case 36:o.next=41;break;case 38:o.prev=38,o.t1=o.catch(0),console.log(o.t1);case 41:return o.prev=41,o.finish(41);case 43:case"end":return o.stop()}}),o,null,[[0,38,41,43],[6,30,33,36]])})));return function(e,r,t,a,n){return o.apply(this,arguments)}}();module.exports=o;
@@ -1,2 +1,2 @@
1
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;
2
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("./utils.js");function t(t){return Array.from(new Set(Object.entries(t).map((function(t){var a=e.slicedToArray(t,2);a[0];var r=a[1].relatedTable;return"import ".concat(n.capitalize(n.toCamelCase(n.removePluralSuffix(r)))," from './").concat(n.capitalize(n.toCamelCase(n.removePluralSuffix(r))),"';")})))).join("\n")}function a(t,a){var r=Object.entries(t).map((function(t){var r=e.slicedToArray(t,2),o=r[0],c=r[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(n.capitalize(n.toCamelCase(n.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(a,".").concat(s,"',\n to: '").concat(l,".").concat(u,"'"),"\n }\n }")})).join(",");return"\nstatic get relationMappings() {\nreturn {".concat(r,"\n};\n}")}var r=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(o,c,i){var l,s,u,m,p,d,f,b,g,v,C,y,x=arguments;return e.regeneratorRuntime().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return l=x.length>3&&void 0!==x[3]?x[3]:"public",s=x.length>4&&void 0!==x[4]?x[4]:"pg",r.prev=2,o||(console.error("class name undefined"),process.exit(1)),c||(console.error("table name undefined"),process.exit(1)),u="".concat(o,".ts"),m=n.resolveOutputPath(["src","app","model"],"default",u),r.next=9,n.getTableColumns(i,null!=c?c:o.toLowerCase()+"s",l,s);case 9:return p=r.sent,d=Object.fromEntries(p.map(n.normalizeColumn)),r.next=13,n.getTableRelations(i,c,l,s);case 13:f=r.sent,b=Object.entries(d).map((function(t){var a,r=e.slicedToArray(t,2),o=r[0],c=r[1],i=n.toCamelCase(o),l=(a=c.type,["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(a)?"number":["varchar","text","string","char","character varying","uuid"].includes(a)?"string":["boolean"].includes(a)?"boolean":["date","datetime","timestamp","timestamp with time zone"].includes(a)?"Date":"any");return" public ".concat(i,": ").concat(l,";")})).join("\n"),g='\n static get tableName() {\n return "'.concat(o.toLowerCase(),'s";\n }\n '),c&&(g='\n static get tableName() {\n return "'.concat(c,'";\n }\n ')),v=f?t(f):"",C=f?a(f,c):"",y='\n import Model from "@lib/Model";\n import { snakeCaseMappers } from "objection";\n '.concat(v,"\n \n export default class ").concat(o," extends Model {\n \n ").concat(b,"\n \n ").concat(g,'\n \n static get idColumn() {\n return "id";\n }\n \n static get columnNameMappers() {\n return snakeCaseMappers();\n }\n \n ').concat(C,"\n }"),n.writeFileSafe(m,y,u),r.next=26;break;case 23:r.prev=23,r.t0=r.catch(2),console.error("err::",r.t0);case 26:case"end":return r.stop()}}),r,null,[[2,23]])})));return function(e,n,t){return r.apply(this,arguments)}}();module.exports=r;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ "use strict";var n=require("../_virtual/_rollupPluginBabelHelpers.js"),t=require("path"),e=require("./utils.js"),o=["int","integer","bigint","smallint","tinyint","numeric","decimal","float"],c=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"],a=["boolean"];function r(n,t){var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],u=t.type,d=t.nullable,p=t.defaultValue,l=["z"],m=o.includes(u),y=c.includes(u),f=a.includes(u),x=s.find((function(t){return t.column_name===n}));(m?l.push("coerce.number()"):y?l.push("string()"):f?l.push("boolean()"):x?l.push("enum(Object.values(".concat(x.enum_name,") as [string, ...string[]])")):l.push("any()"),d&&(l.push("optional()"),l.push("nullish()")),!p||["CURRENT_TIMESTAMP"].includes(p)||i.includes(n))||void 0!==(r=m?parseInt(p):x?"".concat(x.enum_name,".").concat(e.extractEnumValue(p)):f?p:"'".concat(p,"'"))&&l.push("default(".concat(r,")"));return"".concat(e.toCamelCase(n),":").concat(l.join("."))}var i=["created_at","updated_at","createdAt","updatedAt"],s=function(){var s=n.asyncToGenerator(n.regeneratorRuntime().mark((function s(u,d,p,l,m,y){var f,x,g,h,w,q,v,R,b,j,F,P,C,N,A,I,E,S,T,z,_,B,D,k,O,G,V,M;return n.regeneratorRuntime().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.prev=0,u||(console.error("table name undefined"),process.exit(1)),f=e.removePluralSuffix(u),x=e.toKebabCase(f),g=e.toPascalCase(f),h=e.toCamelCase(f),w=x,q="default"!==d?t.join(process.cwd(),d):t.join(process.cwd(),"src","http","module",x),v="Create".concat(g,"Schema"),R="Update".concat(g,"Schema"),b="create".concat(g,"Schema"),j="update".concat(g,"Schema"),F="".concat(x,".validation.ts"),P="".concat(x,".repository.ts"),C="".concat(x,".service.ts"),N="".concat(x,".controller.ts"),s.next=18,e.getTableColumns(p,u,l,m);case 18:return A=s.sent,I=Object.fromEntries(A.map(e.normalizeColumn)),s.next=22,e.getPrimaryKeys(p,u,l,m);case 22:return E=s.sent,s.next=25,e.getEnumFieldsAndValues(p,u,l,m);case 25:S=s.sent,T=Object.entries(I).filter((function(t){var e=n.slicedToArray(t,1)[0];return!i.includes(e)})).filter((function(t){var e=n.slicedToArray(t,1)[0];return!E.includes(e)})).map((function(t){var e=n.slicedToArray(t,2);return r(e[0],e[1],E,S)})),z=Object.entries(I).filter((function(t){var e=n.slicedToArray(t,1)[0];return!i.includes(e)})).filter((function(t){var e=n.slicedToArray(t,1)[0];return E.includes(e)})).map((function(t){var r,i,s,u=n.slicedToArray(t,2),d=u[0],p=u[1];return r=d,i=p.type,s=["z"],o.includes(i)?s.push("coerce.number().int().nonoptional()"):c.includes(i)?s.push("string().nonempty().nonoptional()"):a.includes(i)?s.push("boolean()"):s.push("any()"),"".concat(e.toCamelCase(r),":").concat(s.join("."))})),_=S.length?"import { ".concat(S.map((function(n){return n.enum_name})).join(", "),' } from "@generated/prisma";'):"",B='\nimport * as z from "zod";\n'.concat(_,"\n\nexport const ").concat(b," = z.object({\n ").concat(T.join(",\n "),"\n});\n\nexport type ").concat(v," = z.infer<typeof ").concat(b,">;\n\nexport const ").concat(j," = ").concat(b,".extend({\n ").concat(z.join(",\n "),"\n});\n\nexport type ").concat(R," = z.infer<typeof ").concat(j,">;\n"),e.writeFileSafe(t.join(q,F),B,F),y&&(D='\nimport prisma from "@config/db";\nimport NotFoundException from "@exception/notfound.exception";\nimport { '.concat(v,", ").concat(R,' } from "./').concat(x,'.validation";\n\nexport const getPaginate').concat(g,"Repository = async (qs: Record<string, any>) => {\n const count = await prisma.").concat(h,".count();\n const results = await prisma.").concat(h,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) });\n return { total: count, data: results };\n};\n\nexport const get").concat(g,"ByIdRepository = async (id: number) => {\n const model = await prisma.").concat(h,'.findFirst({ where: { id } });\n if (!model) {\n throw new NotFoundException("').concat(g,'");\n }\n return model;\n};\n\nexport const create').concat(g,"Repository = (payload: ").concat(v,") => {\n return prisma.").concat(h,".create({ data: payload });\n};\n\nexport const update").concat(g,"Repository = (id: number, payload: Omit<").concat(R,', "id">) => {\n return prisma.').concat(h,".update({ where: { id: +id! }, data: payload });\n};\n\nexport const delete").concat(g,"Repository = (id: number) => {\n return prisma.").concat(h,".delete({ where: { id } });\n};\n"),e.writeFileSafe(t.join(q,P),D,P)),k=y?"\nimport { getPaginate".concat(g,"Repository, get").concat(g,"ByIdRepository, create").concat(g,"Repository, update").concat(g,"Repository, delete").concat(g,'Repository } from "./').concat(x,'.repository";\nimport { ').concat(v,", ").concat(R,' } from "./').concat(x,'.validation";\n\nexport const getPaginate = (qs: Record<string, any>) => {\n return getPaginate').concat(g,"Repository(qs);\n};\n\nexport const get").concat(g,"ID = (id: number) => {\n return get").concat(g,"ByIdRepository(id);\n};\n\nexport const create").concat(g," = (payload: ").concat(v,") => {\n return create").concat(g,"Repository(payload);\n};\n\nexport const update").concat(g," = ({ id, ...payload }: ").concat(R,") => {\n return update").concat(g,"Repository(id, payload);\n};\n\nexport const delete").concat(g," = (id: number) => {\n return delete").concat(g,"Repository(id);\n};\n"):"\nimport ".concat(g,' from "@model/').concat(g,'";\nimport NotFoundException from "@exception/notfound.exception";\nimport { ').concat(v,", ").concat(R,' } from "./').concat(x,'.validation";\n\nexport const getPaginate = (qs: Record<string, any>) => {\n return ').concat(g,".query().page(qs.page ?? 0, qs.perPage ?? 10);\n};\n\nexport const get").concat(g,"ID = async (id: number) => {\n const model = await ").concat(g,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(g,'");\n }\n return model;\n};\n\nexport const create').concat(g," = (payload: ").concat(v,") => {\n return ").concat(g,".query().insertAndFetch(payload);\n};\n\nexport const update").concat(g," = async ({ id, ...payload }: ").concat(R,") => {\n const model = await ").concat(g,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(g,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;\n};\n\nexport const delete').concat(g," = async (id: number) => {\n const model = await ").concat(g,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(g,'");\n }\n await model.$query().delete();\n};\n'),e.writeFileSafe(t.join(q,C),k,C),O="".concat(g,"Resource"),G="".concat(x,".resource"),V="".concat(g,"Controller"),M='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, get'.concat(g,"ID, create").concat(g,", update").concat(g,", delete").concat(g,' } from "./').concat(x,'.service";\nimport ').concat(O,' from "@resource/').concat(G,'";\nimport { ').concat(b,", ").concat(j,' } from "./').concat(x,'.validation";\n\n@Controller("/').concat(w,'")\nexport class ').concat(V,' {\n\n @Get("/")\n async get').concat(g,"Paginate(req: Request, res: Response, next: NextFunction) {\n try {\n const results = await getPaginate(req.query);\n res.json(").concat(O,'.paginate(results));\n } catch (error) {\n next(error);\n }\n }\n\n @Get("/:id")\n async get').concat(g,"View(req: Request, res: Response, next: NextFunction) {\n try {\n const result = await get").concat(g,"ID(+req.params.id);\n res.json(new ").concat(O,'(result, true));\n } catch (error) {\n next(error);\n }\n }\n\n @Post("/")\n async create').concat(g,"(req: Request, res: Response, next: NextFunction) {\n try {\n const validated = await req.validation(").concat(b,");\n const result = await create").concat(g,"(validated);\n res.json(new ").concat(O,'(result, true));\n } catch (error) {\n next(error);\n }\n }\n\n @Put("/")\n async update').concat(g,"(req: Request, res: Response, next: NextFunction) {\n try {\n const validated = await req.validation(").concat(j,");\n const result = await update").concat(g,"(validated);\n res.json(new ").concat(O,'(result, true));\n } catch (error) {\n next(error);\n }\n }\n\n @Delete("/:id")\n async delete').concat(g,"(req: Request, res: Response, next: NextFunction) {\n try {\n await delete").concat(g,"(+req.params.id);\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n }\n}\n"),e.writeFileSafe(t.join(q,N),M,N),s.next=44;break;case 41:s.prev=41,s.t0=s.catch(0),console.error("err::",s.t0);case 44:case"end":return s.stop()}}),s,null,[[0,41]])})));return function(n,t,e,o,c,a){return s.apply(this,arguments)}}();module.exports=s;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ "use strict";var t=require("./utils.js");module.exports=function(n,o){n||(console.error("table name undefined"),process.exit(1));var e=t.removePluralSuffix(n),a=t.toCamelCase(e),c=t.toPascalCase(e),r="".concat(t.toKebabCase(e),".repository.ts"),i=t.resolveOutputPath(["src","http","repository"],o,r),s="Create".concat(c,"Schema"),p="Update".concat(c,"Schema"),d="".concat(t.toKebabCase(e),".validation"),u='\nimport prisma from "@config/db";\nimport NotFoundException from "@exception/notfound.exception";\nimport {'.concat(s,", ").concat(p,'} from "@validation/').concat(d,'";\n\nexport const getPaginate').concat(c,"Repository = async (qs: Record<string, any>) => {\n const count = await prisma.").concat(a,".count();\n const results = await prisma.").concat(a,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) });\n return { total: count, data: results };\n};\n\nexport const get").concat(c,"ByIdRepository = async (id: number) => {\n const model = await prisma.").concat(a,'.findFirst({ where: { id } });\n if (!model) {\n throw new NotFoundException("').concat(t.toPascalCase(e),'");\n }\n return model;\n};\n\nexport const create').concat(c,"Repository = (payload: ").concat(s,") => {\n return prisma.").concat(a,".create({ data: payload });\n};\n\nexport const update").concat(c,"Repository = (id: number, payload: Omit<").concat(p,', "id">) => {\n return prisma.').concat(a,".update({ where: { id: +id! }, data: payload });\n};\n\nexport const delete").concat(c,"Repository = (id: number) => {\n return prisma.").concat(a,".delete({ where: { id } });\n};\n");t.writeFileSafe(i,u,r)};
@@ -1,2 +1,2 @@
1
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;
2
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),r=require("./utils.js"),t=function(){var t=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(n,a,o,c,s){var u,l,i,p,f,m,b,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n||(console.error("table name undefined"),process.exit(1)),u=r.removePluralSuffix(n),l="".concat(r.toKebabCase(u),".resource.ts"),i="".concat(r.toPascalCase(u),"Resource"),p=r.resolveOutputPath(["src","app","http","resource"],s,l),e.next=8,r.getTableColumns(a,n,o,c);case 8:f=e.sent,m=Object.fromEntries(f.map(r.normalizeColumn)),b=Object.keys(m).filter((function(e){return"created_at"!==e&&"updated_at"!==e})).map((function(e){return"".concat(r.toCamelCase(e),": this.").concat(r.toCamelCase(e))})).join(",\n"),d='\nimport Resource from "frexp/lib/Resource";\n\nexport default class '.concat(i," extends Resource {\n toArray() {\n return {\n").concat(b,"\n };\n }\n}"),r.writeFileSafe(p,d,l),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),console.error("err::",e.t0);case 18:case"end":return e.stop()}}),t,null,[[0,15]])})));return function(e,r,n,a,o){return t.apply(this,arguments)}}();module.exports=t;
@@ -1,2 +1,2 @@
1
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;
2
+ "use strict";var n=require("./utils.js");module.exports=function(t,o,e){t||(console.error("table name undefined"),process.exit(1));var c,a=n.removePluralSuffix(t),r=n.toPascalCase(a),i="".concat(n.toKebabCase(a),".service.ts"),d=n.resolveOutputPath(["src","app","http","service"],o,i),p="Create".concat(r,"Schema"),s="Update".concat(r,"Schema"),u="".concat(n.toKebabCase(a),".validation"),y="".concat(n.toKebabCase(a),".repository");c=e?"\nimport { getPaginate".concat(r,"Repository, get").concat(r,"ByIdRepository, create").concat(r,"Repository, update").concat(r,"Repository, delete").concat(r,'Repository } from "@repository/').concat(y,'";\nimport {').concat(p,", ").concat(s,'} from "@validation/').concat(u,'";\n\nexport const getPaginate = (qs: Record<string, any>) => {\n return getPaginate').concat(r,"Repository(qs);\n};\n\nexport const get").concat(r,"ID = (id: number) => {\n return get").concat(r,"ByIdRepository(id);\n};\n\nexport const create").concat(r," = (payload: ").concat(p,") => {\n return create").concat(r,"Repository(payload);\n};\n\nexport const update").concat(r," = ({ id, ...payload }: ").concat(s,") => {\n return update").concat(r,"Repository(id, payload);\n};\n\nexport const delete").concat(r," = (id: number) => {\n return delete").concat(r,"Repository(id);\n};\n"):"\nimport ".concat(r,' from "@model/').concat(r,'";\nimport NotFoundException from "@exception/notfound.exception";\nimport {').concat(p,", ").concat(s,'} from "@validation/').concat(u,'";\n\nexport const getPaginate = (qs: Record<string, any>) => {\n return ').concat(r,".query().page(qs.page ?? 0, qs.perPage ?? 10);\n};\n\nexport const get").concat(r,"ID = async (id: number) => {\n const model = await ").concat(r,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("Record");\n }\n return model;\n};\n\nexport const create').concat(r," = (payload: ").concat(p,") => {\n return ").concat(r,".query().insertAndFetch(payload);\n};\n\nexport const update").concat(r," = async ({ id, ...payload }: ").concat(s,") => {\n const model = await ").concat(r,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(r,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;\n};\n\nexport const delete').concat(r," = async (id: number) => {\n const model = await ").concat(r,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(r,'");\n }\n await model.$query().delete();\n};\n'),n.writeFileSafe(d,c,i)};
@@ -1,2 +1,2 @@
1
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;
2
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("./utils.js"),t=["int","integer","bigint","smallint","tinyint","numeric","decimal","float"],a=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"],r=["boolean"];function c(c,o){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=o.type,l=o.nullable,p=o.defaultValue,m=["z"],d=t.includes(s),f=a.includes(s),v=r.includes(s),h=u.map((function(e){return e.column_name})).includes(c);if(d)m.push("coerce.number()");else if(f)m.push("string()");else if(v)m.push("boolean()");else if(h){var y=u.find((function(e){return e.column_name===c}));y&&m.push("enum(Object.values(".concat(y.enum_name,") as [string, ...string[]])"))}else m.push("any()");var g=i.includes(c);l&&(m.push("optional()"),m.push("nullish()"));var b=["CURRENT_TIMESTAMP"].includes(p);if(p&&!b&&!g){var C;if(d)C=parseInt(p);else if(h){var x=u.find((function(e){return e.column_name===c}));x&&(C="".concat(x.enum_name,".").concat(n.extractEnumValue(p)))}else C=v?p:"'".concat(p,"'");void 0!==e.typeof(C)&&m.push("default(".concat(C,")"))}return"".concat(n.toCamelCase(c),":").concat(m.join("."))}function o(e,c){var o=c.type,i=["z"],u=t.includes(o),s=a.includes(o),l=r.includes(o);return u?i.push("coerce.number().int().nonoptional()"):s?i.push("string().nonempty().nonoptional()"):l?i.push("boolean()"):i.push("any()"),"".concat(n.toCamelCase(e),":").concat(i.join("."))}function i(e){return!["created_at","updated_at","createdAt","updatedAt"].includes(e)}var u=function(){var t=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,r){var u,s,l,p,m,d,f,v,h,y,g,b,C,x,T,j,A,_,z,P=arguments;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return u=P.length>2&&void 0!==P[2]?P[2]:"public",s=P.length>3&&void 0!==P[3]?P[3]:"pg",l=P.length>4&&void 0!==P[4]?P[4]:"default",t.prev=3,a||(console.error("table name undefined"),process.exit(1)),p=n.removePluralSuffix(a),m="".concat(n.toKebabCase(p),".validation.ts"),d="Create".concat(n.toPascalCase(p),"Schema"),f="Update".concat(n.toPascalCase(p),"Schema"),v="create".concat(n.toPascalCase(p),"Schema"),h="update".concat(n.toPascalCase(p),"Schema"),y=n.resolveOutputPath(["src","app","http","validation"],l,m),t.next=14,n.getTableColumns(r,a,u,s);case 14:return g=t.sent,b=Object.fromEntries(g.map(n.normalizeColumn)),t.next=18,n.getPrimaryKeys(r,a,u,s);case 18:return C=t.sent,t.next=21,n.getEnumFieldsAndValues(r,a,u,s);case 21:x=t.sent,T=Object.entries(b).filter((function(n){return i(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return!C.includes(t)})).map((function(t){var a=e.slicedToArray(t,2),r=a[0],o=a[1];return[n.toCamelCase(r),c(r,o,C,x)]})),j=Object.entries(b).filter((function(n){return i(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return C.includes(t)})).map((function(t){var a=e.slicedToArray(t,2),r=a[0],c=a[1];return[n.toCamelCase(r),o(r,c)]})),A="",x.length&&(_=x.map((function(e){return e.enum_name})).join(","),A="import { ".concat(_,' } from "@generated/prisma";')),z='\nimport * as z from "zod";\n'.concat(A,"\n\nexport const ").concat(v," = 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(d," = z.infer<typeof ").concat(v,">;\n\nexport const ").concat(h," = ").concat(v,".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(f," = z.infer<typeof ").concat(h,">;\n"),n.writeFileSafe(y,z,m),t.next=33;break;case 30:t.prev=30,t.t0=t.catch(3),console.error("err:",t.t0);case 33:case"end":return t.stop()}}),t,null,[[3,30]])})));return function(e,n){return t.apply(this,arguments)}}();module.exports=u;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js");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("")};
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),a=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)}}(),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(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)}}(),o=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)}}(),c=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)}}(),s=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,d=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=d.length>2&&void 0!==d[2]?d[2]:"public",o=d.length>3&&void 0!==d[3]?d[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)}}(),u=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=a,exports.extractEnumValue=function(e){if(!e)return null;var n=e.match(/^'(.+?)'::/);return n?n[1]:e},exports.getEnumFieldsAndValues=c,exports.getPrimaryKeys=o,exports.getTableColumns=r,exports.getTableRelations=s,exports.getTables=u,exports.normalizeColumn=function(e){var n,t,a,r,o;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!==(a=e.data_type)&&void 0!==a?a:e.DATA_TYPE,maxLength:null!==(r=e.character_maximum_length)&&void 0!==r?r:e.CHARACTER_MAXIMUM_LENGTH,nullable:"YES"===(null!==(o=e.is_nullable)&&void 0!==o?o:e.IS_NULLABLE)}]},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.resolveOutputPath=function(n,a,r){return"default"!==a?t.join(process.cwd(),a,r):t.join.apply(t,[process.cwd()].concat(e.toConsumableArray(n),[r]))},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("")},exports.writeFileSafe=function(e,a,r){var o=t.dirname(e);n.existsSync(o)||n.mkdirSync(o,{recursive:!0}),n.writeFile(e,a,(function(e){e?console.error("err:",e):console.log("File ".concat(r," has been created"))}))};
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("./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)}})()();
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"),o=require("./express/make_crud.js"),c=require("./express/make_validation.js"),l=require("./express/make_service.js"),i=require("./express/make_repository.js"),u=require("./express/make_module.js"),p=require("./db.js"),m=r.toArray(process.argv);m[0],m[1];var d=m[2],k=m.slice(3);d||(console.error("❌ action undefined."),process.exit(1));var v="",f="default",x=null!==(e=process.env.DB_SCHEMA)&&void 0!==e?e:"public",b=process.env.DB_CLIENT||"pg",h=!1,y=!1;if(k.length>0){var g,q=r.createForOfIteratorHelper(k);try{for(q.s();!(g=q.n()).done;){var _=g.value.split("="),j=r.slicedToArray(_,2),G=j[0],C=j[1];"--schema"===G&&(x=C),"--path"===G&&(f=C),"--prisma"===G&&(h=!0),"--mysql"===G&&(b="mysql"),"--pg"===G&&(b="pg"),"--skip-controller"===G&&!0,"--controller-only"===G&&(y=!0),"--table"===G&&(v=C)}}catch(e){q.e(e)}finally{q.f()}v||"make:crud"===d||(console.error("❌ table undefined."),process.exit(1))}if("--help"===d&&(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 make:repository Generate repository file (Prisma)\n make:module Generate module folder (controller, service, repository, validation)\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"===d){var S=r.toArray(process.argv);S[0],S[1],S[2];var A=S.slice(3);if(A.length>0){var P,D=r.createForOfIteratorHelper(A);try{for(D.s();!(P=D.n()).done;){var R=P.value.split("="),B=r.slicedToArray(R,2),E=B[0],T=B[1];"--schema"===E&&(x=T),"--prisma"===E&&(h=!0),"--pg"===E&&(b="pg"),"--mysql"===E&&(b="mysql",x=process.env.DB_NAME)}}catch(e){D.e(e)}finally{D.f()}}}(function(){var e=r.asyncToGenerator(r.regeneratorRuntime().mark((function e(){var m,k,g,q,_,j,G,C,S,A,P;return r.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,process.env.DB_CLIENT=b,e.next=4,p.createPool();case 4:return m=e.sent,e.next=7,a.checkDatabaseConnection(m);case 7:e.t0=d,e.next="make:model"===e.t0?10:"make:resource"===e.t0?14:"make:controller"===e.t0?17:"make:crud"===e.t0?37:"make:validation"===e.t0?40:"make:service"===e.t0?43:"make:repository"===e.t0?46:"make:module"===e.t0?49:52;break;case 10:return k="".concat(a.toPascalCase(a.removePluralSuffix(v)),"Controller"),e.next=13,t(k,v,m,x,b);case 13:return e.abrupt("break",54);case 14:return e.next=16,n(v,m,x,b,f);case 16:return e.abrupt("break",54);case 17:return g=f.endsWith("/")?f.slice(0,-1):f,q=g.includes("controller"),_=q?g:"".concat(g,"/controller"),j=q?g.replace("controller","service"):"".concat(g,"/service"),G=q?g.replace("controller","validation"):"".concat(g,"/validation"),C=q?g.replace("controller","resource"):"".concat(g,"/resource"),S=q?g.replace("controller","repository"):"".concat(g,"/repository"),e.next=26,s(v,_);case 26:if(y){e.next=36;break}if(!h){e.next=30;break}return e.next=30,i(v,S);case 30:return e.next=32,l(v,j,h);case 32:return e.next=34,c(v,m,x,b,G);case 34:return e.next=36,n(v,m,x,b,C);case 36:return e.abrupt("break",54);case 37:return e.next=39,o(f,m,x,h,b);case 39:return e.abrupt("break",54);case 40:return e.next=42,c(v,m,x,b,f);case 42:return e.abrupt("break",54);case 43:return e.next=45,l(v,f,h);case 45:return e.abrupt("break",54);case 46:return e.next=48,i(v,f);case 48:return e.abrupt("break",54);case 49:return e.next=51,u(v,f,m,x,b,h);case 51:return e.abrupt("break",54);case 52:console.error("❌ Unknown action: ".concat(d)),process.exit(1);case 54:e.next=60;break;case 56:e.prev=56,e.t1=e.catch(0),console.error("❌ ERROR:",e.t1),process.exit(1);case 60:if(e.prev=60,null===(A=m)||void 0===A||!A.end){e.next=66;break}return e.next=64,m.end();case 64:e.next=69;break;case 66:if(null===(P=m)||void 0===P||!P.releaseConnection){e.next=69;break}return e.next=69,m.releaseConnection();case 69:return e.finish(60);case 70:case"end":return e.stop()}}),e,null,[[0,56,60,70]])})));return function(){return e.apply(this,arguments)}})()();
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("json-schema-to-typescript"),o=require("url"),a=require("node:module"),c=require("module"),s="undefined"!=typeof document?document.currentScript:null,i=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},u=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},p=function(e){return e.replace(/[_\-\s]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join("")},l=function(e){return["string"].includes(e)},m=function(e){return["integer","number"].includes(e)},d=function(e){return["boolean"].includes(e)},f=function(e){n.existsSync(e)||n.mkdirSync(e,{recursive:!0})},g=function(e,t,r){n.writeFile(e,t,(function(n){n?console.error("❌ Error writing file ".concat(e,":"),n.message):console.log("✅ ".concat(r))}))},v=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(a){var c,s;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return",null);case 2:if(c=t.join(process.cwd(),a),n.existsSync(c)){e.next=6;break}return console.warn("⚠️ Template not found: ".concat(a)),e.abrupt("return",null);case 6:return e.prev=6,e.next=9,import(o.pathToFileURL(c).href);case 9:return s=e.sent,e.abrupt("return",s.default);case 13:return e.prev=13,e.t0=e.catch(6),console.error("❌ Error loading template ".concat(a,":"),e.t0.message),e.abrupt("return",null);case 17:case"end":return e.stop()}}),r,null,[[6,13]])})));return function(e){return r.apply(this,arguments)}}(),h=function(n){return Object.entries(n).map((function(n){var t=e.slicedToArray(n,2),r=t[0],o=t[1],a={key:r,type:Array.isArray(o.type)?o.type[0]:o.type};return o.format&&["date","date-time"].includes(o.format)&&(a.format=o.format),o.enum&&(a.enum=o.enum),a}))},y=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,o,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;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("json-schema-to-typescript"),o=require("url"),a=require("node:module"),c=require("module"),s="undefined"!=typeof document?document.currentScript:null,i=function(e){return e.replace(/[-_]+(.)?/g,(function(e,n){return n?n.toUpperCase():""})).replace(/^[A-Z]/,(function(e){return e.toLowerCase()}))},u=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()},p=function(e){return e.replace(/[_\-\s]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join("")},l=function(e){return["string"].includes(e)},m=function(e){return["integer","number"].includes(e)},d=function(e){return["boolean"].includes(e)},f=function(e){n.existsSync(e)||n.mkdirSync(e,{recursive:!0})},g=function(e,t,r){n.writeFile(e,t,(function(n){n?console.error("❌ Error writing file ".concat(e,":"),n.message):console.log("✅ ".concat(r))}))},v=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(a){var c,s;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return",null);case 2:if(c=t.join(process.cwd(),a),n.existsSync(c)){e.next=6;break}return console.warn("⚠️ Template not found: ".concat(a)),e.abrupt("return",null);case 6:return e.prev=6,e.next=9,import(o.pathToFileURL(c).href);case 9:return s=e.sent,e.abrupt("return",s.default);case 13:return e.prev=13,e.t0=e.catch(6),console.error("❌ Error loading template ".concat(a,":"),e.t0.message),e.abrupt("return",null);case 17:case"end":return e.stop()}}),r,null,[[6,13]])})));return function(e){return r.apply(this,arguments)}}(),h=function(n){return Object.entries(n).map((function(n){var t=e.slicedToArray(n,2),r=t[0],o=t[1],a={key:r,type:Array.isArray(o.type)?o.type[0]:o.type};return o.format&&["date","date-time"].includes(o.format)&&(a.format=o.format),o.enum&&(a.enum=o.enum),a}))},y=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,o){var a,c,s,l,m,d,h,y,x;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,a=r.title,c="".concat(u(a),".service.ts"),s=i(a),l=u(a),m=p(a),d=t.join(process.cwd(),"src","services",c),h=t.dirname(d),y="",e.next=11,v(o);case 11:x=e.sent,y=x?x({modelName:a,serviceName:s,urlName:l,funcName:m}):"import { ".concat(m,' } from "@typings/model";\nimport { EventSend } from "ezhooks";\n\nconst baseUrl = "http://localhost:3000/api";\n\nexport const ').concat(s,"Url = {\n index: `${baseUrl}/").concat(l,"`,\n view: `${baseUrl}/").concat(l,"/:id`,\n remove: `${baseUrl}/").concat(l,"/:id`,\n};\n\nexport const get").concat(m," = async (event: EventSend): Promise<HttpResponse<").concat(m,"[]>> => {\n let url = ").concat(s,"Url.index;\n const params = new URLSearchParams(event.params);\n \n if (params.size > 0) {\n url += `?${params.toString()}`;\n }\n \n const resp = await fetch(url, {\n signal: event.ctr?.signal,\n });\n \n return resp.json();\n};\n\nexport const get").concat(m,"ID = (id: number) => async (event: EventSend): Promise<HttpResponse<").concat(m,">> => {\n const res = await fetch(").concat(s,"Url.view.replace(':id', String(id)), {\n signal: event.ctr?.signal,\n });\n return res.json();\n};\n\nexport const post").concat(m," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "POST",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const put').concat(m," = async (event: EventSend): Promise<HttpResponse<any>> => {\n const res = await fetch(").concat(s,'Url.index, {\n method: "PUT",\n signal: event.ctr?.signal,\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(event.data?.()),\n });\n return res.json();\n};\n\nexport const delete').concat(m," = async (event: EventSend) => {\n return fetch(").concat(s,"Url.remove.replace(':id', event.params.id), {\n method: \"DELETE\",\n signal: event.ctr?.signal,\n });\n};\n"),f(h),g(d,y,"Service ".concat(c," created")),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(0),console.error("❌ Error generating service for ".concat(r.title,":"),e.t0.message);case 20:case"end":return e.stop()}}),n,null,[[0,17]])})));return function(e,t){return n.apply(this,arguments)}}(),x=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r,o,a){var c,s,i,p,l,m,d,y;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,c=r.title,s=r.properties,i="".concat(a,".page.tsx"),p=t.join(process.cwd(),"src","pages",u(c),i),l=t.dirname(p),m="",e.next=8,v(o);case 8:(d=e.sent)&&(y="index"===a||"view"===a?{modelName:c,columns:h(s)}:{modelName:c,jsonSchema:r},m=d(y)),f(l),g(p,m,"".concat(c," ").concat(i," created")),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ Error generating ".concat(a," page for ").concat(r.title,":"),e.t0.message);case 17:case"end":return e.stop()}}),n,null,[[0,14]])})));return function(e,t,r){return n.apply(this,arguments)}}(),w=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"index");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),b=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"view");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),S=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"create");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),R=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,r){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(t,r,"update");case 2:case"end":return e.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),j=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(r){var o,a,c,s,i,p,l,m=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=m.length>2?m[2]:void 0,e.prev=2,a=r.title,c="Form.tsx",s=t.join(process.cwd(),"src","pages",u(a),"partial",c),i=t.dirname(s),p="",e.next=10,v(o);case 10:(l=e.sent)&&(p=l({modelName:a,jsonSchema:r})),f(i),g(s,p,"".concat(a," ").concat(c," created")),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(2),console.error("❌ Error generating form for ".concat(r.title,":"),e.t0.message);case 19:case"end":return e.stop()}}),n,null,[[2,16]])})));return function(e){return n.apply(this,arguments)}}(),T=function(){var r=e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){var i,u,p,l,m;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=[t.resolve("regen.config.ts"),t.resolve("regen.config.js")],u=i.find((function(e){return n.existsSync(e)}))){e.next=4;break}return e.abrupt("return",{templateDir:void 0});case 4:if(e.prev=4,!u.endsWith(".ts")){e.next=22;break}e.prev=6,a.register("tsx",o.pathToFileURL("./")),e.next=22;break;case 10:e.prev=10,e.t0=e.catch(6),e.prev=12,c.createRequire("undefined"==typeof document?require("url").pathToFileURL(__filename).href:s&&"SCRIPT"===s.tagName.toUpperCase()&&s.src||new URL("react/mui.gen.js",document.baseURI).href)("ts-node/register"),e.next=22;break;case 17:return e.prev=17,e.t1=e.catch(12),console.error("⚠️ TypeScript config found but tsx/ts-node not installed."),console.log(" Install with: npm install -D tsx or npm install -D ts-node"),e.abrupt("return",{templateDir:void 0});case 22:return l=o.pathToFileURL(u).href,e.next=25,import(l);case 25:return m=e.sent,e.abrupt("return",JSON.parse(JSON.stringify(null!==(p=m.default)&&void 0!==p?p:{})));case 29:return e.prev=29,e.t2=e.catch(4),console.error("⚠️ Error loading config file:",e.t2.message),e.abrupt("return",{templateDir:void 0});case 33:case"end":return e.stop()}}),r,null,[[4,29],[6,10],[12,17]])})));return function(){return r.apply(this,arguments)}}();exports.generateCreatePage=S,exports.generateDummy=function(r){try{var o=r.title,a=r.properties,c=t.join(process.cwd(),"src","commons","dummy.ts"),s="Input".concat(p(o),"Schema"),i="import { ".concat(s," } from '@schemas/").concat(u(o),".schema';"),f=Object.entries(a).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).map((function(n){var t,r=e.slicedToArray(n,2),o=r[0],a=r[1],c=Array.isArray(a.type)?a.type:[a.type],s=c[0];return t=void 0!==a.default?a.default:c.includes("null")?null:a.enum?"'".concat(a.enum[0],"'"):l(s)?"''":m(s)?0:!!d(s)||"''"," ".concat(o,": ").concat(t)})),g="\nexport const input".concat(p(o),": ").concat(s," = {\n").concat(f.join(",\n"),"\n};\n"),v=n.existsSync(c)?n.readFileSync(c,"utf8"):"";v.includes(i)||(v=i+"\n"+v),v.includes("input".concat(p(o)))||(v+="\n"+g),n.writeFileSync(c,v),console.log("✅ Dummy data for ".concat(o," created"))}catch(e){console.error("❌ Error generating dummy data for ".concat(r.title,":"),e.message)}},exports.generateForm=j,exports.generateIndexPage=w,exports.generateRoute=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];try{var n="router.tsx",r=t.join(process.cwd(),"src",n),o=t.dirname(r),a=[{suffix:"Page",file:"index.page",url:""},{suffix:"ViewPage",file:"view.page",url:"/view/:id"},{suffix:"CreatePage",file:"create.page",url:"/create"},{suffix:"UpdatePage",file:"update.page",url:"/update/:id"}],c=[],s=[];e.forEach((function(e){a.forEach((function(n){var t=n.suffix,r=n.file,o=n.url,a="".concat(p(e)).concat(t),i=u(e);c.push("const ".concat(a,' = LoadComponent(() => import("@pages/').concat(i,"/").concat(r,'"));')),s.push(' { path: "'.concat(i).concat(o,'", element: <').concat(a," /> }"))}))}));var i='import { createBrowserRouter } from "react-router";\nimport { loader } from "@services/auth.service";\nimport LoadComponent from "@components/base/LoadComponent/LoadComponent";\n\nconst AppLayouts = LoadComponent(() => import("@components/layouts/AppLayout"));\nconst GuestLayout = LoadComponent(() => import("@components/layouts/GuestLayout"));\nconst NotFoundPage = LoadComponent(() => import("@pages/error/PageNotFound"));\nconst SignInPage = LoadComponent(() => import("@pages/auth/LoginPage"));\nconst RegisterPage = LoadComponent(() => import("@pages/auth/RegisterPage"));\nconst VerificationPage = LoadComponent(() => import("@pages/auth/VerificationPage"));\n\n'.concat(c.join("\n"),'\n\nconst router = createBrowserRouter(\n [\n {\n path: "/login",\n element: <SignInPage />,\n },\n {\n element: <GuestLayout />,\n children: [\n { path: "/register", element: <RegisterPage /> },\n { path: "/verification", element: <VerificationPage /> },\n ],\n },\n {\n id: "root",\n path: "/",\n loader,\n element: <AppLayouts />,\n hydrateFallbackElement: <span>loading...</span>,\n children: [\n').concat(s.join(",\n"),'\n ],\n },\n {\n path: "*",\n element: <NotFoundPage />,\n },\n ],\n {\n future: {\n v7_relativeSplatPath: true,\n v7_partialHydration: true,\n v7_skipActionErrorRevalidation: true,\n v7_fetcherPersist: true,\n v7_startTransition: true,\n },\n }\n);\n\nexport default router;\n');f(o),g(r,i,"Router ".concat(n," created"))}catch(e){console.error("❌ Error generating routes:",e.message)}},exports.generateService=y,exports.generateUpdatePage=R,exports.generateValidation=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'import * as zod from "zod";';try{var o=n.title,a=n.properties,c=n.required,s=void 0===c?[]:c,i="".concat(u(o),".schema.ts"),v=t.join(process.cwd(),"src","schemas",i),h=t.dirname(v),y=[],x=[];Object.entries(a).filter((function(n){return"id"!==e.slicedToArray(n,1)[0]})).forEach((function(n){var t=e.slicedToArray(n,2),r=t[0],o=t[1],a=["zod"],c=Array.isArray(o.type)?o.type:[o.type],i=c[0];if(o.enum)a.push("enum([".concat(o.enum.map((function(e){return"'".concat(e,"'")})).join(", "),"])"));else if(l(i))a.push("string()"),s.includes(r)&&a.push("nonempty()");else if(m(i))a.push("number()");else if(d(i))a.push("boolean()");else if("array"===i){var f;if(null!==(f=o.items)&&void 0!==f&&f.$ref){var g=o.items.$ref.split("/").pop();y.push("import { input".concat(p(g),"Schema } from './").concat(u(g),".schema'")),a.push("array(input".concat(p(g),"Schema)"))}else a.push("array(zod.any())")}else a.push("any()");if(c.includes("null")&&(a.push("optional()"),a.push("nullish()")),void 0!==o.default){var v=l(o.default)?"'".concat(o.default,"'"):o.default;a.push("default(".concat(v,")"))}x.push(" ".concat(r,": ").concat(a.join(".")))}));var w="input".concat(p(o),"Schema"),b="".concat(r,"\n").concat(y.join(";\n"),"\n\nexport const ").concat(w," = zod.object({\n").concat(x.join(",\n"),"\n});\n\nexport type ").concat(p(w)," = zod.infer<typeof ").concat(w,">;\n");f(h),g(v,b,"Validation ".concat(i," created"))}catch(e){console.error("❌ Error generating validation for ".concat(n.title,":"),e.message)}},exports.generateViewPage=b,exports.isBoolean=d,exports.isNumber=m,exports.isString=l,exports.jsonToTS=function(e){r.compileFromFile(e,{inferStringEnumKeysFromValues:!0,bannerComment:"/* eslint-disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND.\n */"}).then((function(e){var r=t.join(process.cwd(),"src","typings","model","index.d.ts"),o=t.dirname(r);f(o),n.writeFileSync(r,e),console.log("✅ TypeScript types generated")})).catch((function(e){console.error("❌ Error generating TypeScript types:",e.message)}))},exports.loadRegenConfig=T,exports.toCamelCase=i,exports.toKebabCase=u,exports.toPascalCase=p;
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("./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)}();
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),t=require("fs"),a=require("path"),r=require("./react/mui.gen.js"),n=e.toArray(process.argv);n[0],n[1];var l=n[2],o=n.slice(3),i={file:a.join(process.cwd(),"json-schema.json"),indexTemplate:void 0,formTemplate:void 0,viewTemplate:void 0,createTemplate:void 0,updateTemplate:void 0,serviceTemplate:void 0,templateDir:void 0,ignoreTemplate:[]};function m(t){var a,r=e.objectSpread2({},i),n=e.createForOfIteratorHelper(t);try{for(n.s();!(a=n.n()).done;){var l=a.value.split("="),o=e.slicedToArray(l,2),m=o[0],p=o[1];switch(m){case"--file":r.file=p;break;case"--index-template":r.indexTemplate=p;break;case"--form-template":r.formTemplate=p;break;case"--view-template":r.viewTemplate=p;break;case"--create-template":r.createTemplate=p;break;case"--update-template":r.updateTemplate=p;break;case"--service-template":r.serviceTemplate=p;break;case"--template":r.templateDir=p,r.indexTemplate="".concat(p,"/index-template.js"),r.formTemplate="".concat(p,"/form-template.js"),r.viewTemplate="".concat(p,"/view-template.js"),r.createTemplate="".concat(p,"/create-template.js"),r.updateTemplate="".concat(p,"/update-template.js"),r.serviceTemplate="".concat(p,"/service-template.js");break;case"--ignore":r.ignoreTemplate=p.split(",")}}}catch(e){n.e(e)}finally{n.f()}return r}function p(t,a){var r=e.objectSpread2({},a);return null!=t&&t.templateDir&&!a.templateDir&&(r.indexTemplate||(r.indexTemplate="".concat(t.templateDir,"/index-template.js")),r.formTemplate||(r.formTemplate="".concat(t.templateDir,"/form-template.js")),r.viewTemplate||(r.viewTemplate="".concat(t.templateDir,"/view-template.js")),r.createTemplate||(r.createTemplate="".concat(t.templateDir,"/create-template.js")),r.updateTemplate||(r.updateTemplate="".concat(t.templateDir,"/update-template.js")),r.serviceTemplate||(r.serviceTemplate="".concat(t.templateDir,"/service-template.js"))),null!=t&&t.ignoreTemplate&&0===a.ignoreTemplate.length&&(r.ignoreTemplate=t.ignoreTemplate),null!=t&&t.jsonSchemaFile&&a.file===i.file&&(r.file=t.jsonSchemaFile),null!=t&&t.schemaImportStatement&&(r.schemaImportStatement=t.schemaImportStatement),r}function c(t,a,n,l){var o=e.objectSpread2({title:t},a);l.ignoreTemplate.includes("service")||r.generateService(o,l.serviceTemplate),l.ignoreTemplate.includes("validation")||r.generateValidation(o,l.schemaImportStatement),l.ignoreTemplate.includes("form")||r.generateForm(o,n,l.formTemplate),l.ignoreTemplate.includes("index")||r.generateIndexPage(o,l.indexTemplate),l.ignoreTemplate.includes("create")||r.generateCreatePage(o,l.createTemplate),l.ignoreTemplate.includes("update")||r.generateUpdatePage(o,l.updateTemplate),l.ignoreTemplate.includes("view")||r.generateViewPage(o,l.viewTemplate),l.ignoreTemplate.includes("dummy")||r.generateDummy(o)}function s(e,t,a){return u.apply(this,arguments)}function u(){return u=e.asyncToGenerator(e.regeneratorRuntime().mark((function t(a,n,l){var o;return e.regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=Object.entries(n.definitions),t.t0=a,t.next="make:page"===t.t0?4:"make:dummy"===t.t0?8:"make:route"===t.t0?11:"make:validation"===t.t0?14:"make:service"===t.t0?17:"make:form"===t.t0?21:24;break;case 4:return o.forEach((function(t){var a=e.slicedToArray(t,2);c(a[0],a[1],n.definitions,l)})),r.jsonToTS(l.file),console.log("✅ Pages generated successfully!"),t.abrupt("break",26);case 8:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],l=a[1];r.generateDummy(e.objectSpread2({title:n},l))})),console.log("✅ Dummy data generated successfully!"),t.abrupt("break",26);case 11:return r.generateRoute(o.map((function(t){return e.slicedToArray(t,1)[0]}))),console.log("✅ Routes generated successfully!"),t.abrupt("break",26);case 14:return o.forEach((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];r.generateValidation(e.objectSpread2({title:n},o)),l.schemaImportStatement})),console.log("✅ Validation files generated successfully!"),t.abrupt("break",26);case 17:return t.next=19,Promise.all(o.map((function(t){var a=e.slicedToArray(t,2),n=a[0],o=a[1];return r.generateService(e.objectSpread2({title:n},o),l.serviceTemplate)})));case 19:return console.log("✅ Service files generated successfully!"),t.abrupt("break",26);case 21:return o.forEach((function(t){var a=e.slicedToArray(t,2),l=a[0],o=a[1];r.generateForm(e.objectSpread2({title:l},o),n.definitions)})),console.log("✅ Form components generated successfully!"),t.abrupt("break",26);case 24:console.error("❌ Unknown action: ".concat(a)),process.exit(1);case 26:case"end":return t.stop()}}),t)}))),u.apply(this,arguments)}function d(){return(d=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(){var n,i,c,u,d;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,l||(console.error("❌ Action undefined."),console.log("Run 'npx regen --help' for usage information."),process.exit(1)),"--help"===l&&(console.log("\nUsage: npx regen <action> [options]\n\nActions:\n make:page Generate all pages and services\n make:dummy Generate dummy data\n make:route Generate route file\n make:validation Generate validation files\n make:form Generate form components\n --help Show this help message\n\nOptions:\n --file=<path> Path to JSON schema file (default: ./json-schema.json)\n --mui Use MUI templates\n --index-template=<path> Custom index page template\n --form-template=<path> Custom form component template\n --view-template=<path> Custom view page template\n --create-template=<path> Custom create page template\n --update-template=<path> Custom update page template\n --service-template=<path> Custom service template\n --template=<dir> Directory containing all templates\n --ignore=<templates> Templates to ignore (comma-separated)\n Options: create, update, view, form, index, service, validation, dummy\n\nExamples:\n npx regen make:page\n npx regen make:page --file=./schema.json\n npx regen make:page --template=./templates\n npx regen make:page --ignore=dummy,validation\n "),process.exit(0)),n=m(o),e.next=6,r.loadRegenConfig();case 6:return i=e.sent,c=p(i,n),u=t.readFileSync(c.file,{encoding:"utf-8"}),d=JSON.parse(u),e.next=12,s(l,d,c);case 12:e.next=18;break;case 14:e.prev=14,e.t0=e.catch(0),console.error("❌ ERROR:",e.t0.message),process.exit(1);case 18:case"end":return e.stop()}}),a,null,[[0,14]])})))).apply(this,arguments)}!function(){d.apply(this,arguments)}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frgen",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "helper generator",
5
5
  "main": "lib/main.jss",
6
6
  "types": "lib/index.d.ts",