katax-cli 1.0.0 → 1.1.1

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.
Files changed (137) hide show
  1. package/README.md +241 -29
  2. package/dist/commands/add-endpoint.d.ts +1 -0
  3. package/dist/commands/add-endpoint.d.ts.map +1 -0
  4. package/dist/commands/add-endpoint.js +18 -39
  5. package/dist/commands/add-endpoint.js.map +1 -0
  6. package/dist/commands/deploy.d.ts +14 -0
  7. package/dist/commands/deploy.d.ts.map +1 -0
  8. package/dist/commands/deploy.js +416 -0
  9. package/dist/commands/deploy.js.map +1 -0
  10. package/dist/commands/generate-crud.d.ts +1 -0
  11. package/dist/commands/generate-crud.d.ts.map +1 -0
  12. package/dist/commands/generate-crud.js +1 -8
  13. package/dist/commands/generate-crud.js.map +1 -0
  14. package/dist/commands/generate-crud.refactored.d.ts +6 -0
  15. package/dist/commands/generate-crud.refactored.d.ts.map +1 -0
  16. package/dist/commands/generate-crud.refactored.js +139 -0
  17. package/dist/commands/generate-crud.refactored.js.map +1 -0
  18. package/dist/commands/info.d.ts +1 -0
  19. package/dist/commands/info.d.ts.map +1 -0
  20. package/dist/commands/info.js +1 -5
  21. package/dist/commands/info.js.map +1 -0
  22. package/dist/commands/init.d.ts +1 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +9 -40
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/init.refactored.d.ts +6 -0
  27. package/dist/commands/init.refactored.d.ts.map +1 -0
  28. package/dist/commands/init.refactored.js +224 -0
  29. package/dist/commands/init.refactored.js.map +1 -0
  30. package/dist/core/errors.d.ts +77 -0
  31. package/dist/core/errors.d.ts.map +1 -0
  32. package/dist/core/errors.js +130 -0
  33. package/dist/core/errors.js.map +1 -0
  34. package/dist/core/index.d.ts +3 -0
  35. package/dist/core/index.d.ts.map +1 -0
  36. package/dist/core/index.js +3 -0
  37. package/dist/core/index.js.map +1 -0
  38. package/dist/core/result.d.ts +26 -0
  39. package/dist/core/result.d.ts.map +1 -0
  40. package/dist/core/result.js +76 -0
  41. package/dist/core/result.js.map +1 -0
  42. package/dist/generators/controller-generator.d.ts +1 -0
  43. package/dist/generators/controller-generator.d.ts.map +1 -0
  44. package/dist/generators/controller-generator.js +1 -2
  45. package/dist/generators/controller-generator.js.map +1 -0
  46. package/dist/generators/handler-generator.d.ts +1 -0
  47. package/dist/generators/handler-generator.d.ts.map +1 -0
  48. package/dist/generators/handler-generator.js +35 -22
  49. package/dist/generators/handler-generator.js.map +1 -0
  50. package/dist/generators/route-generator.d.ts +1 -0
  51. package/dist/generators/route-generator.d.ts.map +1 -0
  52. package/dist/generators/route-generator.js +1 -2
  53. package/dist/generators/route-generator.js.map +1 -0
  54. package/dist/generators/router-updater.d.ts +1 -0
  55. package/dist/generators/router-updater.d.ts.map +1 -0
  56. package/dist/generators/router-updater.js +1 -6
  57. package/dist/generators/router-updater.js.map +1 -0
  58. package/dist/generators/validator-generator.d.ts +1 -0
  59. package/dist/generators/validator-generator.d.ts.map +1 -0
  60. package/dist/generators/validator-generator.improved.d.ts +3 -0
  61. package/dist/generators/validator-generator.improved.d.ts.map +1 -0
  62. package/dist/generators/validator-generator.improved.js +184 -0
  63. package/dist/generators/validator-generator.improved.js.map +1 -0
  64. package/dist/generators/validator-generator.js +1 -10
  65. package/dist/generators/validator-generator.js.map +1 -0
  66. package/dist/index.d.ts +1 -6
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +37 -19
  69. package/dist/index.js.map +1 -0
  70. package/dist/services/ast-router-updater.d.ts +16 -0
  71. package/dist/services/ast-router-updater.d.ts.map +1 -0
  72. package/dist/services/ast-router-updater.js +130 -0
  73. package/dist/services/ast-router-updater.js.map +1 -0
  74. package/dist/services/code-generation.service.d.ts +15 -0
  75. package/dist/services/code-generation.service.d.ts.map +1 -0
  76. package/dist/services/code-generation.service.js +110 -0
  77. package/dist/services/code-generation.service.js.map +1 -0
  78. package/dist/services/index.d.ts +4 -0
  79. package/dist/services/index.d.ts.map +1 -0
  80. package/dist/services/index.js +4 -0
  81. package/dist/services/index.js.map +1 -0
  82. package/dist/services/project-structure-generator.d.ts +30 -0
  83. package/dist/services/project-structure-generator.d.ts.map +1 -0
  84. package/dist/services/project-structure-generator.js +884 -0
  85. package/dist/services/project-structure-generator.js.map +1 -0
  86. package/dist/templates/base/code-builder.d.ts +34 -0
  87. package/dist/templates/base/code-builder.d.ts.map +1 -0
  88. package/dist/templates/base/code-builder.js +154 -0
  89. package/dist/templates/base/code-builder.js.map +1 -0
  90. package/dist/templates/base/template-engine.d.ts +28 -0
  91. package/dist/templates/base/template-engine.d.ts.map +1 -0
  92. package/dist/templates/base/template-engine.js +47 -0
  93. package/dist/templates/base/template-engine.js.map +1 -0
  94. package/dist/templates/generators/controller-template.d.ts +15 -0
  95. package/dist/templates/generators/controller-template.d.ts.map +1 -0
  96. package/dist/templates/generators/controller-template.js +185 -0
  97. package/dist/templates/generators/controller-template.js.map +1 -0
  98. package/dist/templates/generators/di-container.d.ts +6 -0
  99. package/dist/templates/generators/di-container.d.ts.map +1 -0
  100. package/dist/templates/generators/di-container.js +121 -0
  101. package/dist/templates/generators/di-container.js.map +1 -0
  102. package/dist/templates/generators/handler-template.d.ts +15 -0
  103. package/dist/templates/generators/handler-template.d.ts.map +1 -0
  104. package/dist/templates/generators/handler-template.js +208 -0
  105. package/dist/templates/generators/handler-template.js.map +1 -0
  106. package/dist/templates/generators/repository-template.d.ts +23 -0
  107. package/dist/templates/generators/repository-template.d.ts.map +1 -0
  108. package/dist/templates/generators/repository-template.js +237 -0
  109. package/dist/templates/generators/repository-template.js.map +1 -0
  110. package/dist/templates/generators/response-utils-template.d.ts +2 -0
  111. package/dist/templates/generators/response-utils-template.d.ts.map +1 -0
  112. package/dist/templates/generators/response-utils-template.js +112 -0
  113. package/dist/templates/generators/response-utils-template.js.map +1 -0
  114. package/dist/templates/generators/test-generator.d.ts +11 -0
  115. package/dist/templates/generators/test-generator.d.ts.map +1 -0
  116. package/dist/templates/generators/test-generator.js +206 -0
  117. package/dist/templates/generators/test-generator.js.map +1 -0
  118. package/dist/templates/index.d.ts +8 -0
  119. package/dist/templates/index.d.ts.map +1 -0
  120. package/dist/templates/index.js +8 -0
  121. package/dist/templates/index.js.map +1 -0
  122. package/dist/types/index.d.ts +1 -0
  123. package/dist/types/index.d.ts.map +1 -0
  124. package/dist/types/index.js +1 -0
  125. package/dist/types/index.js.map +1 -0
  126. package/dist/utils/file-utils.d.ts +1 -30
  127. package/dist/utils/file-utils.d.ts.map +1 -0
  128. package/dist/utils/file-utils.js +1 -32
  129. package/dist/utils/file-utils.js.map +1 -0
  130. package/dist/utils/logger.d.ts +1 -0
  131. package/dist/utils/logger.d.ts.map +1 -0
  132. package/dist/utils/logger.js +1 -0
  133. package/dist/utils/logger.js.map +1 -0
  134. package/package.json +4 -4
  135. package/dist/database/mongodb.ts +0 -46
  136. package/dist/database/mysql.ts +0 -26
  137. package/dist/database/postgresql.ts +0 -52
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Katax CLI
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@katax/cli.svg)](https://www.npmjs.com/package/@katax/cli)
3
+ [![npm version](https://img.shields.io/npm/v/katax-cli.svg)](https://www.npmjs.com/package/katax-cli)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
6
  🚀 CLI tool to generate Express REST APIs with TypeScript and [katax-core](https://github.com/LOPIN6FARRIER/katax-core) validation.
@@ -12,6 +12,7 @@
12
12
  - 🔧 **Code Generation** - Generate endpoints, CRUD operations, and routes
13
13
  - 📦 **Database Support** - PostgreSQL, MySQL, MongoDB, or none
14
14
  - 🔐 **JWT Authentication** - Optional JWT auth scaffolding
15
+ - 🚀 **PM2 Deployment** - Deploy to Ubuntu VPS with PM2 integration
15
16
  - 📝 **TypeScript First** - Full type safety and IntelliSense support
16
17
  - 🎨 **Interactive CLI** - Beautiful prompts and feedback
17
18
 
@@ -19,10 +20,10 @@
19
20
 
20
21
  ```bash
21
22
  # Global installation
22
- npm install -g @katax/cli
23
+ npm install -g katax-cli
23
24
 
24
25
  # Or use with npx (no installation needed)
25
- npx @katax/cli init my-api
26
+ npx katax-cli init my-api
26
27
  ```
27
28
 
28
29
  ## 🚀 Quick Start
@@ -54,50 +55,261 @@ Interactive prompts will guide you through:
54
55
  - Request fields and validation rules
55
56
  - Async validators (unique checks, etc.)
56
57
 
57
- [![npm version](https://img.shields.io/npm/v/@katax/cli.svg)](https://www.npmjs.com/package/@katax/cli)
58
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
58
+ This generates:
59
+ - `users.validator.ts` - katax-core validation schemas
60
+ - `users.controller.ts` - Business logic
61
+ - `users.handler.ts` - Express handlers with sendResponse
62
+ - `users.routes.ts` - Express routes
63
+ - Updates main router automatically
59
64
 
60
- 🚀 CLI tool to generate Express REST APIs with TypeScript and [katax-core](https://github.com/LOPIN6FARRIER/katax-core) validation.
65
+ ### 3. Generate CRUD Resource
61
66
 
62
- - 🔧 **Code Generation** - Generate endpoints, CRUD operations, and routes
63
- - 📦 **Database Support** - PostgreSQL, MySQL, MongoDB, or none
64
- - 🔐 **JWT Authentication** - Optional JWT auth scaffolding
65
- - 📝 **TypeScript First** - Full type safety and IntelliSense support
66
- - 🎨 **Interactive CLI** - Beautiful prompts and feedback
67
+ ```bash
68
+ katax generate crud products
69
+ ```
67
70
 
68
- ## 📦 Installation
71
+ Creates a complete CRUD API with 5 endpoints:
72
+ - `GET /api/products` - List all
73
+ - `GET /api/products/:id` - Get one
74
+ - `POST /api/products` - Create
75
+ - `PUT /api/products/:id` - Update
76
+ - `DELETE /api/products/:id` - Delete
77
+
78
+ ### 4. Deploy to Ubuntu VPS with PM2
69
79
 
70
80
  ```bash
71
- # Global installation
72
- npm install -g katax-cli
81
+ # On your Ubuntu VPS
82
+ katax deploy init
73
83
 
74
- # Or use with npx (no installation needed)
75
- npx katax-cli init my-api
84
+ # When you have updates
85
+ katax deploy update
86
+
87
+ # Monitor your app
88
+ katax deploy status
89
+ katax deploy logs -f
76
90
  ```
77
91
 
78
- ## 🚀 Quick Start
92
+ See [DEPLOY_GUIDE.md](./DEPLOY_GUIDE.md) for complete deployment documentation.
79
93
 
80
- ### 1. Create a New API Project
94
+ ## 📖 Commands
81
95
 
96
+ ### `katax init [project-name]`
97
+
98
+ Initialize a new Express API project.
99
+
100
+ **Options:**
101
+ - `-f, --force` - Overwrite existing directory
102
+
103
+ **Example:**
82
104
  ```bash
83
- katax init my-api
105
+ katax init my-awesome-api
84
106
  ```
85
107
 
86
- This will:
87
- - Create project structure
88
- - Setup TypeScript + Express
89
- - Install dependencies
90
- - Configure katax-core validation
91
- - Add database connection (optional)
92
- - Setup JWT authentication (optional)
108
+ ### `katax add endpoint <name>`
93
109
 
94
- ### 2. Add an Endpoint
110
+ Add a new endpoint with validation.
111
+
112
+ **Options:**
113
+ - `-m, --method <method>` - HTTP method (GET, POST, PUT, DELETE)
114
+ - `-p, --path <path>` - Route path
95
115
 
116
+ **Example:**
96
117
  ```bash
97
- cd my-api
98
- katax add endpoint users
118
+ katax add endpoint users -m POST -p /api/users
119
+ ```
120
+
121
+ ### `katax generate crud <resource-name>`
122
+
123
+ Generate a complete CRUD resource.
124
+
125
+ **Options:**
126
+ - `--no-auth` - Skip authentication middleware
127
+
128
+ **Example:**
129
+ ```bash
130
+ katax generate crud products
131
+ ```
132
+
133
+ ### `katax info`
134
+
135
+ Show current project structure and routes.
136
+
137
+ **Aliases:** `status`, `ls`
138
+
139
+ **Example:**
140
+ ```bash
141
+ katax info
142
+ ```
143
+
144
+ ### `katax deploy init`
145
+
146
+ Initial deployment to Ubuntu VPS - Clone repo and setup PM2.
147
+
148
+ **Example:**
149
+ ```bash
150
+ katax deploy init
151
+ ```
152
+
153
+ ### `katax deploy update`
154
+
155
+ Update existing deployment - Pull changes and restart.
156
+
157
+ **Options:**
158
+ - `-b, --branch <branch>` - Branch to deploy
159
+ - `--hard` - Hard reset (discard local changes)
160
+
161
+ **Example:**
162
+ ```bash
163
+ katax deploy update --hard
164
+ ```
165
+
166
+ ### `katax deploy rollback`
167
+
168
+ Rollback to previous version.
169
+
170
+ **Options:**
171
+ - `-c, --commits <number>` - Number of commits to rollback
172
+
173
+ **Example:**
174
+ ```bash
175
+ katax deploy rollback -c 2
176
+ ```
177
+
178
+ ### `katax deploy logs`
179
+
180
+ View PM2 application logs.
181
+
182
+ **Options:**
183
+ - `-l, --lines <number>` - Number of lines to display
184
+ - `-f, --follow` - Follow log output
185
+
186
+ **Example:**
187
+ ```bash
188
+ katax deploy logs -f
189
+ ```
190
+
191
+ ### `katax deploy status`
192
+
193
+ Show PM2 applications status.
194
+
195
+ **Example:**
196
+ ```bash
197
+ katax deploy status
198
+ ```
199
+
200
+ ## 🎯 Generated Code Example
201
+
202
+ When you run `katax add endpoint users`, it generates:
203
+
204
+ **users.validator.ts:**
205
+ ```typescript
206
+ import { k, kataxInfer } from 'katax-core';
207
+
208
+ export const userSchema = k.object({
209
+ username: k.string()
210
+ .minLength(3, 'Username must be at least 3 characters')
211
+ .maxLength(50, 'Username cannot exceed 50 characters'),
212
+ email: k.string().email('Must be a valid email'),
213
+ age: k.number().min(0, 'Age must be positive').optional()
214
+ });
215
+
216
+ export type UserData = kataxInfer<typeof userSchema>;
217
+
218
+ export async function validateUser(data: unknown) {
219
+ return await userSchema.safeParse(data);
220
+ }
221
+ ```
222
+
223
+ **users.handler.ts:**
224
+ ```typescript
225
+ import { Request, Response } from 'express';
226
+ import { validateUser } from './users.validator.js';
227
+ import { createUser } from './users.controller.js';
228
+ import { sendResponse } from '../../shared/response.utils.js';
229
+
230
+ export async function createUserHandler(req: Request, res: Response): Promise<void> {
231
+ await sendResponse(req, res, {
232
+ validator: validateUser,
233
+ controller: (data) => createUser(data),
234
+ dataSource: 'body',
235
+ successStatus: 201
236
+ });
237
+ }
238
+ ```
239
+
240
+ ## 🗂️ Project Structure
241
+
242
+ ```
243
+ my-api/
244
+ ├── src/
245
+ │ ├── index.ts # Entry point
246
+ │ ├── routes/
247
+ │ │ ├── index.ts # Main router
248
+ │ │ └── users/
249
+ │ │ ├── users.validator.ts
250
+ │ │ ├── users.controller.ts
251
+ │ │ ├── users.handler.ts
252
+ │ │ └── users.routes.ts
253
+ │ ├── shared/
254
+ │ │ ├── response.utils.ts # sendResponse utilities
255
+ │ │ ├── api.utils.ts # API utilities
256
+ │ │ └── jwt.utils.ts # JWT utilities (optional)
257
+ │ ├── database/
258
+ │ │ └── connection.ts # Database connection
259
+ │ └── config/
260
+ │ └── di-container.ts # Dependency injection
261
+ ├── package.json
262
+ ├── tsconfig.json
263
+ ├── ecosystem.config.cjs # PM2 configuration (after deploy)
264
+ └── .env
99
265
  ```
100
266
 
267
+ ## 🔧 Development
268
+
269
+ Run development server:
270
+
271
+ ```bash
272
+ npm run dev
273
+ ```
274
+
275
+ Build and start:
276
+
277
+ ```bash
278
+ npm run build
279
+ npm start
280
+ ```
281
+
282
+ ## 🚀 Deployment Workflow
283
+
284
+ 1. **Develop locally** - `katax init` + `katax add endpoint`
285
+ 2. **Push to GitHub** - Commit and push your code
286
+ 3. **SSH to VPS** - `ssh ubuntu@your-vps-ip`
287
+ 4. **Initial deploy** - `katax deploy init`
288
+ 5. **Make changes** - Update code, commit, push
289
+ 6. **Redeploy** - `katax deploy update`
290
+
291
+ See [DEPLOY_GUIDE.md](./DEPLOY_GUIDE.md) for detailed deployment instructions.
292
+
293
+ ## 📚 Documentation
294
+
295
+ - [Deployment Guide](./DEPLOY_GUIDE.md) - Complete PM2 deployment workflow
296
+ - [katax-core](https://github.com/LOPIN6FARRIER/katax-core) - Validation library
297
+
298
+ ## 🤝 Contributing
299
+
300
+ Contributions are welcome! Please feel free to submit a Pull Request.
301
+
302
+ ## 📝 License
303
+
304
+ MIT © Vinicio Esparza
305
+
306
+ ## 🔗 Links
307
+
308
+ - Repository: https://github.com/LOPIN6FARRIER/katax-cli
309
+ - katax-core: https://github.com/LOPIN6FARRIER/katax-core
310
+ - Issues: https://github.com/LOPIN6FARRIER/katax-cli/issues
311
+
312
+
101
313
  Interactive prompts will guide you through:
102
314
  - HTTP method (GET, POST, PUT, DELETE)
103
315
  - Route path
@@ -4,3 +4,4 @@ interface AddEndpointOptions {
4
4
  }
5
5
  export declare function addEndpointCommand(name: string, options?: AddEndpointOptions): Promise<void>;
6
6
  export {};
7
+ //# sourceMappingURL=add-endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-endpoint.d.ts","sourceRoot":"","sources":["../../src/commands/add-endpoint.ts"],"names":[],"mappings":"AAoBA,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,iBA2OtF"}
@@ -2,21 +2,15 @@ import inquirer from 'inquirer';
2
2
  import ora from 'ora';
3
3
  import path from 'path';
4
4
  import { success, error, warning, gray, title, info } from '../utils/logger.js';
5
- import { fileExists, writeFile } from '../utils/file-utils.js';
6
- import { generateValidator } from '../generators/validator-generator.js';
7
- import { generateController } from '../generators/controller-generator.js';
8
- import { generateHandler } from '../generators/handler-generator.js';
9
- import { generateRoute } from '../generators/route-generator.js';
10
- import { updateMainRouter } from '../generators/router-updater.js';
5
+ import { fileExists } from '../utils/file-utils.js';
6
+ import { codeGenerationService } from '../services/code-generation.service.js';
11
7
  export async function addEndpointCommand(name, options = {}) {
12
8
  title(`🎯 Add Endpoint: ${name}`);
13
- // Check if we're in a Katax project
14
9
  if (!fileExists(path.join(process.cwd(), 'package.json'))) {
15
10
  error('Not in a project directory!');
16
11
  gray('Run this command from your project root\n');
17
12
  process.exit(1);
18
13
  }
19
- // Check if katax-core is installed
20
14
  const packageJsonPath = path.join(process.cwd(), 'package.json');
21
15
  const packageJson = JSON.parse(await import('fs').then(fs => fs.promises.readFile(packageJsonPath, 'utf-8')));
22
16
  const hasKataxCore = packageJson.dependencies?.['katax-core'];
@@ -34,13 +28,11 @@ export async function addEndpointCommand(name, options = {}) {
34
28
  error('Cannot create endpoint without validation library');
35
29
  process.exit(1);
36
30
  }
37
- // Install katax-core
38
31
  const spinner = ora('Installing katax-core...').start();
39
32
  const { execa } = await import('execa');
40
33
  await execa('npm', ['install', 'katax-core'], { cwd: process.cwd() });
41
34
  spinner.succeed('katax-core installed');
42
35
  }
43
- // Interactive prompts
44
36
  const answers = await inquirer.prompt([
45
37
  {
46
38
  type: 'list',
@@ -79,7 +71,6 @@ export async function addEndpointCommand(name, options = {}) {
79
71
  addAsyncValidators: false,
80
72
  dbOperations: []
81
73
  };
82
- // If validation is enabled, collect fields
83
74
  if (config.addValidation && config.method !== 'GET' && config.method !== 'DELETE') {
84
75
  info('\nDefine request body fields:');
85
76
  let addingFields = true;
@@ -121,7 +112,6 @@ export async function addEndpointCommand(name, options = {}) {
121
112
  required: fieldConfig.required,
122
113
  rules: []
123
114
  };
124
- // Add type-specific rules
125
115
  if (fieldConfig.type === 'string' || fieldConfig.type === 'email') {
126
116
  const stringRules = await inquirer.prompt([
127
117
  {
@@ -181,34 +171,22 @@ export async function addEndpointCommand(name, options = {}) {
181
171
  config.addAsyncValidators = addAsync;
182
172
  }
183
173
  }
184
- // Generate files
185
174
  const spinner = ora('Generating endpoint files...').start();
186
175
  try {
187
- const basePath = path.join(process.cwd(), 'src', 'api', name.toLowerCase());
188
- // Generate validator
189
- if (config.addValidation) {
190
- const validatorPath = path.join(basePath, `${name.toLowerCase()}.validator.ts`);
191
- const validatorContent = generateValidator(config);
192
- await writeFile(validatorPath, validatorContent);
193
- spinner.text = `Generated ${name.toLowerCase()}.validator.ts`;
176
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
177
+ let database;
178
+ try {
179
+ const packageJson = JSON.parse(await import('fs').then(fs => fs.promises.readFile(packageJsonPath, 'utf-8')));
180
+ if (packageJson.dependencies?.pg)
181
+ database = 'postgresql';
182
+ else if (packageJson.dependencies?.mysql2)
183
+ database = 'mysql';
184
+ else if (packageJson.dependencies?.mongodb)
185
+ database = 'mongodb';
194
186
  }
195
- // Generate controller
196
- const controllerPath = path.join(basePath, `${name.toLowerCase()}.controller.ts`);
197
- const controllerContent = generateController(config);
198
- await writeFile(controllerPath, controllerContent);
199
- spinner.text = `Generated ${name.toLowerCase()}.controller.ts`;
200
- // Generate handler
201
- const handlerPath = path.join(basePath, `${name.toLowerCase()}.handler.ts`);
202
- const handlerContent = generateHandler(config);
203
- await writeFile(handlerPath, handlerContent);
204
- spinner.text = `Generated ${name.toLowerCase()}.handler.ts`;
205
- // Generate route
206
- const routePath = path.join(basePath, `${name.toLowerCase()}.routes.ts`);
207
- const routeContent = generateRoute(config);
208
- await writeFile(routePath, routeContent);
209
- spinner.text = `Generated ${name.toLowerCase()}.routes.ts`;
210
- // Update main router
211
- await updateMainRouter(name, config);
187
+ catch (err) {
188
+ }
189
+ const files = await codeGenerationService.generateEndpoint(config, process.cwd(), database);
212
190
  spinner.succeed('Endpoint files generated');
213
191
  success(`\n✨ Endpoint "${name}" created successfully!\n`);
214
192
  info('Generated files:');
@@ -222,8 +200,9 @@ export async function addEndpointCommand(name, options = {}) {
222
200
  gray(` ${config.method} ${config.path}\n`);
223
201
  }
224
202
  catch (err) {
225
- spinner.fail('Failed to generate endpoint');
226
- error(err instanceof Error ? err.message : 'Unknown error');
203
+ error('Failed to add endpoint');
204
+ console.error(err);
227
205
  process.exit(1);
228
206
  }
229
207
  }
208
+ //# sourceMappingURL=add-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-endpoint.js","sourceRoot":"","sources":["../../src/commands/add-endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function deployInitCommand(): Promise<void>;
2
+ export declare function deployUpdateCommand(options: {
3
+ branch?: string;
4
+ hard?: boolean;
5
+ }): Promise<void>;
6
+ export declare function deployRollbackCommand(options: {
7
+ commits?: number;
8
+ }): Promise<void>;
9
+ export declare function deployLogsCommand(options: {
10
+ lines?: number;
11
+ follow?: boolean;
12
+ }): Promise<void>;
13
+ export declare function deployStatusCommand(): Promise<void>;
14
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAuBA,wBAAsB,iBAAiB,kBAgHtC;AAKD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAqDrF;AAKD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,iBA8BxE;AAKD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBAoBpF;AAKD,wBAAsB,mBAAmB,kBASxC"}