katax-cli 1.0.0 ā 1.1.0
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 +241 -29
- package/dist/commands/add-endpoint.d.ts +1 -0
- package/dist/commands/add-endpoint.d.ts.map +1 -0
- package/dist/commands/add-endpoint.js +18 -39
- package/dist/commands/add-endpoint.js.map +1 -0
- package/dist/commands/deploy.d.ts +14 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +416 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/generate-crud.d.ts +1 -0
- package/dist/commands/generate-crud.d.ts.map +1 -0
- package/dist/commands/generate-crud.js +1 -8
- package/dist/commands/generate-crud.js.map +1 -0
- package/dist/commands/generate-crud.refactored.d.ts +6 -0
- package/dist/commands/generate-crud.refactored.d.ts.map +1 -0
- package/dist/commands/generate-crud.refactored.js +139 -0
- package/dist/commands/generate-crud.refactored.js.map +1 -0
- package/dist/commands/info.d.ts +1 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +1 -5
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +9 -40
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.refactored.d.ts +6 -0
- package/dist/commands/init.refactored.d.ts.map +1 -0
- package/dist/commands/init.refactored.js +224 -0
- package/dist/commands/init.refactored.js.map +1 -0
- package/dist/core/errors.d.ts +77 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +130 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/result.d.ts +26 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +76 -0
- package/dist/core/result.js.map +1 -0
- package/dist/generators/controller-generator.d.ts +1 -0
- package/dist/generators/controller-generator.d.ts.map +1 -0
- package/dist/generators/controller-generator.js +1 -2
- package/dist/generators/controller-generator.js.map +1 -0
- package/dist/generators/handler-generator.d.ts +1 -0
- package/dist/generators/handler-generator.d.ts.map +1 -0
- package/dist/generators/handler-generator.js +35 -22
- package/dist/generators/handler-generator.js.map +1 -0
- package/dist/generators/route-generator.d.ts +1 -0
- package/dist/generators/route-generator.d.ts.map +1 -0
- package/dist/generators/route-generator.js +1 -2
- package/dist/generators/route-generator.js.map +1 -0
- package/dist/generators/router-updater.d.ts +1 -0
- package/dist/generators/router-updater.d.ts.map +1 -0
- package/dist/generators/router-updater.js +1 -6
- package/dist/generators/router-updater.js.map +1 -0
- package/dist/generators/validator-generator.d.ts +1 -0
- package/dist/generators/validator-generator.d.ts.map +1 -0
- package/dist/generators/validator-generator.improved.d.ts +3 -0
- package/dist/generators/validator-generator.improved.d.ts.map +1 -0
- package/dist/generators/validator-generator.improved.js +184 -0
- package/dist/generators/validator-generator.improved.js.map +1 -0
- package/dist/generators/validator-generator.js +1 -10
- package/dist/generators/validator-generator.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -19
- package/dist/index.js.map +1 -0
- package/dist/services/ast-router-updater.d.ts +16 -0
- package/dist/services/ast-router-updater.d.ts.map +1 -0
- package/dist/services/ast-router-updater.js +130 -0
- package/dist/services/ast-router-updater.js.map +1 -0
- package/dist/services/code-generation.service.d.ts +15 -0
- package/dist/services/code-generation.service.d.ts.map +1 -0
- package/dist/services/code-generation.service.js +110 -0
- package/dist/services/code-generation.service.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +4 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/project-structure-generator.d.ts +30 -0
- package/dist/services/project-structure-generator.d.ts.map +1 -0
- package/dist/services/project-structure-generator.js +884 -0
- package/dist/services/project-structure-generator.js.map +1 -0
- package/dist/templates/base/code-builder.d.ts +34 -0
- package/dist/templates/base/code-builder.d.ts.map +1 -0
- package/dist/templates/base/code-builder.js +154 -0
- package/dist/templates/base/code-builder.js.map +1 -0
- package/dist/templates/base/template-engine.d.ts +28 -0
- package/dist/templates/base/template-engine.d.ts.map +1 -0
- package/dist/templates/base/template-engine.js +47 -0
- package/dist/templates/base/template-engine.js.map +1 -0
- package/dist/templates/generators/controller-template.d.ts +15 -0
- package/dist/templates/generators/controller-template.d.ts.map +1 -0
- package/dist/templates/generators/controller-template.js +185 -0
- package/dist/templates/generators/controller-template.js.map +1 -0
- package/dist/templates/generators/di-container.d.ts +6 -0
- package/dist/templates/generators/di-container.d.ts.map +1 -0
- package/dist/templates/generators/di-container.js +121 -0
- package/dist/templates/generators/di-container.js.map +1 -0
- package/dist/templates/generators/handler-template.d.ts +15 -0
- package/dist/templates/generators/handler-template.d.ts.map +1 -0
- package/dist/templates/generators/handler-template.js +208 -0
- package/dist/templates/generators/handler-template.js.map +1 -0
- package/dist/templates/generators/repository-template.d.ts +23 -0
- package/dist/templates/generators/repository-template.d.ts.map +1 -0
- package/dist/templates/generators/repository-template.js +237 -0
- package/dist/templates/generators/repository-template.js.map +1 -0
- package/dist/templates/generators/response-utils-template.d.ts +2 -0
- package/dist/templates/generators/response-utils-template.d.ts.map +1 -0
- package/dist/templates/generators/response-utils-template.js +112 -0
- package/dist/templates/generators/response-utils-template.js.map +1 -0
- package/dist/templates/generators/test-generator.d.ts +11 -0
- package/dist/templates/generators/test-generator.d.ts.map +1 -0
- package/dist/templates/generators/test-generator.js +206 -0
- package/dist/templates/generators/test-generator.js.map +1 -0
- package/dist/templates/index.d.ts +8 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +8 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/file-utils.d.ts +1 -30
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +1 -32
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +1 -1
- package/dist/database/mongodb.ts +0 -46
- package/dist/database/mysql.ts +0 -26
- package/dist/database/postgresql.ts +0 -52
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-crud.refactored.js","sourceRoot":"","sources":["../../src/commands/generate-crud.refactored.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/info.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,kBAyChC"}
|
package/dist/commands/info.js
CHANGED
|
@@ -3,26 +3,22 @@ import { title, info, gray, error, warning } from '../utils/logger.js';
|
|
|
3
3
|
import { fileExists } from '../utils/file-utils.js';
|
|
4
4
|
export async function infoCommand() {
|
|
5
5
|
title('š Project Information');
|
|
6
|
-
// Check if in project
|
|
7
6
|
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
8
7
|
if (!fileExists(packageJsonPath)) {
|
|
9
8
|
error('Not in a project directory!');
|
|
10
9
|
process.exit(1);
|
|
11
10
|
}
|
|
12
|
-
// Read package.json
|
|
13
11
|
const fs = await import('fs');
|
|
14
12
|
const packageJson = JSON.parse(await fs.promises.readFile(packageJsonPath, 'utf-8'));
|
|
15
13
|
info('Project Details:');
|
|
16
14
|
gray(` Name: ${packageJson.name}`);
|
|
17
15
|
gray(` Version: ${packageJson.version}`);
|
|
18
16
|
gray(` Description: ${packageJson.description || 'N/A'}\n`);
|
|
19
|
-
// Check for katax-core
|
|
20
17
|
const hasKataxCore = packageJson.dependencies?.['katax-core'];
|
|
21
18
|
info('Dependencies:');
|
|
22
19
|
gray(` katax-core: ${hasKataxCore ? 'ā
Installed' : 'ā Not installed'}`);
|
|
23
20
|
gray(` express: ${packageJson.dependencies?.express ? 'ā
Installed' : 'ā Not installed'}`);
|
|
24
21
|
gray(` TypeScript: ${packageJson.devDependencies?.typescript ? 'ā
Installed' : 'ā Not installed'}\n`);
|
|
25
|
-
// Scan for API routes
|
|
26
22
|
const apiPath = path.join(process.cwd(), 'src', 'api');
|
|
27
23
|
if (await dirExists(apiPath)) {
|
|
28
24
|
info('API Routes:');
|
|
@@ -64,7 +60,6 @@ async function scanRoutes(apiPath) {
|
|
|
64
60
|
}
|
|
65
61
|
}
|
|
66
62
|
catch (err) {
|
|
67
|
-
// Ignore errors
|
|
68
63
|
}
|
|
69
64
|
return routes;
|
|
70
65
|
}
|
|
@@ -78,3 +73,4 @@ async function fileExistsAsync(filePath) {
|
|
|
78
73
|
return false;
|
|
79
74
|
}
|
|
80
75
|
}
|
|
76
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,iBA4OhF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -7,7 +7,6 @@ import { success, error, gray, title, info } from '../utils/logger.js';
|
|
|
7
7
|
import { directoryExists, ensureDir, writeFile } from '../utils/file-utils.js';
|
|
8
8
|
export async function initCommand(projectName, options = {}) {
|
|
9
9
|
title('š Katax CLI - Initialize API Project');
|
|
10
|
-
// Determine project name
|
|
11
10
|
let finalProjectName = projectName || '';
|
|
12
11
|
if (!finalProjectName) {
|
|
13
12
|
const answer = await inquirer.prompt([
|
|
@@ -27,13 +26,11 @@ export async function initCommand(projectName, options = {}) {
|
|
|
27
26
|
finalProjectName = answer.projectName;
|
|
28
27
|
}
|
|
29
28
|
const projectPath = path.join(process.cwd(), finalProjectName);
|
|
30
|
-
// Check if directory exists
|
|
31
29
|
if (directoryExists(projectPath) && !options.force) {
|
|
32
30
|
error(`Directory "${finalProjectName}" already exists!`);
|
|
33
31
|
gray('Use --force to overwrite\n');
|
|
34
32
|
process.exit(1);
|
|
35
33
|
}
|
|
36
|
-
// Interactive configuration
|
|
37
34
|
const answers = await inquirer.prompt([
|
|
38
35
|
{
|
|
39
36
|
type: 'input',
|
|
@@ -83,7 +80,6 @@ export async function initCommand(projectName, options = {}) {
|
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
82
|
]);
|
|
86
|
-
// Ask for database credentials if database is selected
|
|
87
83
|
let dbConfig = {};
|
|
88
84
|
if (answers.database !== 'none') {
|
|
89
85
|
const dbQuestions = [];
|
|
@@ -139,7 +135,6 @@ export async function initCommand(projectName, options = {}) {
|
|
|
139
135
|
});
|
|
140
136
|
}
|
|
141
137
|
dbConfig = await inquirer.prompt(dbQuestions);
|
|
142
|
-
// Ask for MongoDB credentials if authentication is enabled
|
|
143
138
|
if (answers.database === 'mongodb' && dbConfig.useAuth) {
|
|
144
139
|
const authConfig = await inquirer.prompt([
|
|
145
140
|
{
|
|
@@ -171,7 +166,6 @@ export async function initCommand(projectName, options = {}) {
|
|
|
171
166
|
port: parseInt(answers.port),
|
|
172
167
|
dbConfig
|
|
173
168
|
};
|
|
174
|
-
// Ask for JWT secret generation if JWT is enabled
|
|
175
169
|
let generateJwtSecrets = false;
|
|
176
170
|
if (config.authentication === 'jwt') {
|
|
177
171
|
const jwtAnswer = await inquirer.prompt([
|
|
@@ -184,7 +178,6 @@ export async function initCommand(projectName, options = {}) {
|
|
|
184
178
|
]);
|
|
185
179
|
generateJwtSecrets = jwtAnswer.generate;
|
|
186
180
|
}
|
|
187
|
-
// Display configuration
|
|
188
181
|
gray('\nš Project Configuration:');
|
|
189
182
|
gray(` Name: ${config.name}`);
|
|
190
183
|
gray(` Database: ${config.database}`);
|
|
@@ -193,10 +186,8 @@ export async function initCommand(projectName, options = {}) {
|
|
|
193
186
|
gray(` Port: ${config.port}\n`);
|
|
194
187
|
const spinner = ora('Creating project structure...').start();
|
|
195
188
|
try {
|
|
196
|
-
// Create project structure
|
|
197
189
|
await createProjectStructure(projectPath, config, generateJwtSecrets);
|
|
198
190
|
spinner.succeed('Project structure created');
|
|
199
|
-
// Install dependencies
|
|
200
191
|
spinner.start('Installing dependencies...');
|
|
201
192
|
await installDependencies(projectPath);
|
|
202
193
|
spinner.succeed('Dependencies installed');
|
|
@@ -359,7 +350,6 @@ async function createDatabaseConnection(projectPath, config) {
|
|
|
359
350
|
await writeFile(destPath, content);
|
|
360
351
|
}
|
|
361
352
|
async function createProjectStructure(projectPath, config, generateJwtSecrets) {
|
|
362
|
-
// Create directories
|
|
363
353
|
const dirs = [
|
|
364
354
|
'src',
|
|
365
355
|
'src/api',
|
|
@@ -371,12 +361,10 @@ async function createProjectStructure(projectPath, config, generateJwtSecrets) {
|
|
|
371
361
|
if (config.database !== 'none') {
|
|
372
362
|
dirs.push('src/database');
|
|
373
363
|
}
|
|
374
|
-
// Add default hello endpoint
|
|
375
364
|
dirs.push('src/api/hello');
|
|
376
365
|
for (const dir of dirs) {
|
|
377
366
|
await ensureDir(path.join(projectPath, dir));
|
|
378
367
|
}
|
|
379
|
-
// Create package.json
|
|
380
368
|
const packageJson = {
|
|
381
369
|
name: config.name,
|
|
382
370
|
version: '1.0.0',
|
|
@@ -427,28 +415,29 @@ async function createProjectStructure(projectPath, config, generateJwtSecrets) {
|
|
|
427
415
|
}
|
|
428
416
|
};
|
|
429
417
|
await writeFile(path.join(projectPath, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
430
|
-
// Create tsconfig.json - ESM optimized for Linux/Ubuntu deployment
|
|
431
418
|
const tsConfig = {
|
|
432
419
|
compilerOptions: {
|
|
433
420
|
target: 'ES2022',
|
|
434
|
-
module: '
|
|
421
|
+
module: 'ESNext',
|
|
435
422
|
lib: ['ES2022'],
|
|
436
423
|
moduleResolution: 'node',
|
|
437
|
-
sourceMap: true,
|
|
438
|
-
outDir: './dist',
|
|
439
|
-
rootDir: './src',
|
|
440
424
|
esModuleInterop: true,
|
|
425
|
+
allowSyntheticDefaultImports: true,
|
|
441
426
|
forceConsistentCasingInFileNames: true,
|
|
442
427
|
strict: true,
|
|
443
428
|
skipLibCheck: true,
|
|
444
429
|
resolveJsonModule: true,
|
|
445
|
-
declaration: true
|
|
430
|
+
declaration: true,
|
|
431
|
+
declarationMap: true,
|
|
432
|
+
sourceMap: true,
|
|
433
|
+
removeComments: true,
|
|
434
|
+
outDir: './dist',
|
|
435
|
+
rootDir: './src'
|
|
446
436
|
},
|
|
447
437
|
include: ['src/**/*'],
|
|
448
438
|
exclude: ['node_modules', 'dist']
|
|
449
439
|
};
|
|
450
440
|
await writeFile(path.join(projectPath, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2));
|
|
451
|
-
// Create .env.example and .env
|
|
452
441
|
let databaseUrl = '';
|
|
453
442
|
let dbEnvVars = '';
|
|
454
443
|
if (config.database === 'postgresql' && config.dbConfig) {
|
|
@@ -486,7 +475,6 @@ DB_PORT=${port}
|
|
|
486
475
|
DB_NAME=${database}`;
|
|
487
476
|
}
|
|
488
477
|
}
|
|
489
|
-
// Generate JWT secrets if needed
|
|
490
478
|
let jwtConfig = '';
|
|
491
479
|
if (config.authentication === 'jwt') {
|
|
492
480
|
if (generateJwtSecrets) {
|
|
@@ -521,7 +509,6 @@ ${jwtConfig}
|
|
|
521
509
|
`;
|
|
522
510
|
await writeFile(path.join(projectPath, '.env.example'), envContent);
|
|
523
511
|
await writeFile(path.join(projectPath, '.env'), envContent);
|
|
524
|
-
// Create .gitignore
|
|
525
512
|
const gitignoreContent = `node_modules/
|
|
526
513
|
dist/
|
|
527
514
|
.env
|
|
@@ -531,7 +518,6 @@ coverage/
|
|
|
531
518
|
.vscode/
|
|
532
519
|
`;
|
|
533
520
|
await writeFile(path.join(projectPath, '.gitignore'), gitignoreContent);
|
|
534
|
-
// Create .gitattributes for consistent line endings across Windows/Linux
|
|
535
521
|
const gitattributesContent = `# Auto normalize line endings to LF on checkout (critical for Ubuntu deployment)
|
|
536
522
|
* text=auto eol=lf
|
|
537
523
|
|
|
@@ -552,7 +538,6 @@ coverage/
|
|
|
552
538
|
*.pdf binary
|
|
553
539
|
`;
|
|
554
540
|
await writeFile(path.join(projectPath, '.gitattributes'), gitattributesContent);
|
|
555
|
-
// Create index.ts
|
|
556
541
|
const indexContent = `import app from './app.js';
|
|
557
542
|
import dotenv from 'dotenv';
|
|
558
543
|
import { logger } from './shared/logger.utils.js';
|
|
@@ -572,7 +557,6 @@ app.listen(PORT, () => {
|
|
|
572
557
|
});
|
|
573
558
|
`;
|
|
574
559
|
await writeFile(path.join(projectPath, 'src/index.ts'), indexContent);
|
|
575
|
-
// Create app.ts
|
|
576
560
|
const appContent = `import express from 'express';
|
|
577
561
|
import cors from 'cors';
|
|
578
562
|
import router from './api/routes.js';
|
|
@@ -606,7 +590,6 @@ app.use(errorMiddleware);
|
|
|
606
590
|
export default app;
|
|
607
591
|
`;
|
|
608
592
|
await writeFile(path.join(projectPath, 'src/app.ts'), appContent);
|
|
609
|
-
// Create routes.ts
|
|
610
593
|
const routesContent = `import { Router } from 'express';
|
|
611
594
|
import helloRouter from './hello/hello.routes.js';
|
|
612
595
|
import { healthCheckHandler } from './health/health.handler.js';
|
|
@@ -622,7 +605,6 @@ router.use('/hello', helloRouter);
|
|
|
622
605
|
export default router;
|
|
623
606
|
`;
|
|
624
607
|
await writeFile(path.join(projectPath, 'src/api/routes.ts'), routesContent);
|
|
625
|
-
// Create error middleware
|
|
626
608
|
const errorMiddlewareContent = `import { Request, Response, NextFunction } from 'express';
|
|
627
609
|
import { logger } from '../shared/logger.utils.js';
|
|
628
610
|
|
|
@@ -657,11 +639,9 @@ export function errorMiddleware(
|
|
|
657
639
|
}
|
|
658
640
|
`;
|
|
659
641
|
await writeFile(path.join(projectPath, 'src/middleware/error.middleware.ts'), errorMiddlewareContent);
|
|
660
|
-
// Create database connection if database is selected
|
|
661
642
|
if (config.database !== 'none') {
|
|
662
643
|
await createDatabaseConnection(projectPath, config);
|
|
663
644
|
}
|
|
664
|
-
// Create shared utilities
|
|
665
645
|
if (config.validation === 'katax-core') {
|
|
666
646
|
const apiUtilsContent = `import { Request, Response } from 'express';
|
|
667
647
|
import { logger } from './logger.utils.js';
|
|
@@ -763,7 +743,6 @@ export async function sendResponse<TValidation = any, TResponse = any>(
|
|
|
763
743
|
`;
|
|
764
744
|
await writeFile(path.join(projectPath, 'src/shared/api.utils.ts'), apiUtilsContent);
|
|
765
745
|
}
|
|
766
|
-
// Create JWT utilities if JWT authentication is selected
|
|
767
746
|
if (config.authentication === 'jwt') {
|
|
768
747
|
const jwtUtilsContent = `import jwt from 'jsonwebtoken';
|
|
769
748
|
import { Request, Response, NextFunction } from 'express';
|
|
@@ -920,7 +899,6 @@ export function requireRole(...roles: string[]) {
|
|
|
920
899
|
`;
|
|
921
900
|
await writeFile(path.join(projectPath, 'src/shared/jwt.utils.ts'), jwtUtilsContent);
|
|
922
901
|
}
|
|
923
|
-
// Create logger utility with pino
|
|
924
902
|
const loggerUtilsContent = `import pino from 'pino';
|
|
925
903
|
|
|
926
904
|
const isDevelopment = process.env.NODE_ENV !== 'production';
|
|
@@ -993,7 +971,6 @@ export function logDebug(message: string, data?: Record<string, any>): void {
|
|
|
993
971
|
}
|
|
994
972
|
`;
|
|
995
973
|
await writeFile(path.join(projectPath, 'src/shared/logger.utils.ts'), loggerUtilsContent);
|
|
996
|
-
// Create logger middleware
|
|
997
974
|
const loggerMiddlewareContent = `import { Request, Response, NextFunction } from 'express';
|
|
998
975
|
import { logRequest } from '../shared/logger.utils.js';
|
|
999
976
|
|
|
@@ -1013,7 +990,6 @@ export function requestLogger(req: Request, res: Response, next: NextFunction):
|
|
|
1013
990
|
}
|
|
1014
991
|
`;
|
|
1015
992
|
await writeFile(path.join(projectPath, 'src/middleware/logger.middleware.ts'), loggerMiddlewareContent);
|
|
1016
|
-
// Create CORS configuration
|
|
1017
993
|
const corsConfigContent = `import { CorsOptions } from 'cors';
|
|
1018
994
|
|
|
1019
995
|
const allowedOrigins = process.env.ALLOWED_ORIGINS
|
|
@@ -1038,7 +1014,6 @@ export const corsOptions: CorsOptions = {
|
|
|
1038
1014
|
};
|
|
1039
1015
|
`;
|
|
1040
1016
|
await writeFile(path.join(projectPath, 'src/config/cors.config.ts'), corsConfigContent);
|
|
1041
|
-
// Create environment validator
|
|
1042
1017
|
const envValidatorContent = `import { logger } from '../shared/logger.utils.js';
|
|
1043
1018
|
|
|
1044
1019
|
interface RequiredEnvVars {
|
|
@@ -1073,7 +1048,6 @@ ${config.database !== 'none' ? ` // Database variables\n required.DATABASE_URL
|
|
|
1073
1048
|
}
|
|
1074
1049
|
`;
|
|
1075
1050
|
await writeFile(path.join(projectPath, 'src/config/env.validator.ts'), envValidatorContent);
|
|
1076
|
-
// Create health check handler
|
|
1077
1051
|
const healthHandlerContent = `import { Request, Response } from 'express';
|
|
1078
1052
|
import os from 'os';
|
|
1079
1053
|
|
|
@@ -1148,7 +1122,6 @@ function formatBytes(bytes: number): string {
|
|
|
1148
1122
|
`;
|
|
1149
1123
|
await ensureDir(path.join(projectPath, 'src/api/health'));
|
|
1150
1124
|
await writeFile(path.join(projectPath, 'src/api/health/health.handler.ts'), healthHandlerContent);
|
|
1151
|
-
// Create README.md
|
|
1152
1125
|
const readmeContent = `# ${config.name}
|
|
1153
1126
|
|
|
1154
1127
|
${config.description}
|
|
@@ -1211,12 +1184,10 @@ katax generate crud products
|
|
|
1211
1184
|
MIT
|
|
1212
1185
|
`;
|
|
1213
1186
|
await writeFile(path.join(projectPath, 'README.md'), readmeContent);
|
|
1214
|
-
// Create default hello endpoint
|
|
1215
1187
|
await createHelloEndpoint(projectPath, config);
|
|
1216
1188
|
}
|
|
1217
1189
|
async function createHelloEndpoint(projectPath, config) {
|
|
1218
1190
|
const helloPath = path.join(projectPath, 'src/api/hello');
|
|
1219
|
-
// hello.controller.ts
|
|
1220
1191
|
const controllerContent = [
|
|
1221
1192
|
"import { ControllerResult, createSuccessResult, createErrorResult } from '../../shared/api.utils.js';",
|
|
1222
1193
|
"import { HelloQuery } from './hello.validator.js';",
|
|
@@ -1248,7 +1219,6 @@ async function createHelloEndpoint(projectPath, config) {
|
|
|
1248
1219
|
"}"
|
|
1249
1220
|
].join('\n');
|
|
1250
1221
|
await writeFile(path.join(helloPath, 'hello.controller.ts'), controllerContent);
|
|
1251
|
-
// hello.handler.ts
|
|
1252
1222
|
const handlerContent = [
|
|
1253
1223
|
"import { Request, Response } from 'express';",
|
|
1254
1224
|
"import { getHello } from './hello.controller.js';",
|
|
@@ -1273,7 +1243,6 @@ async function createHelloEndpoint(projectPath, config) {
|
|
|
1273
1243
|
"}"
|
|
1274
1244
|
].join('\n');
|
|
1275
1245
|
await writeFile(path.join(helloPath, 'hello.handler.ts'), handlerContent);
|
|
1276
|
-
// hello.routes.ts
|
|
1277
1246
|
const routesContent = [
|
|
1278
1247
|
"import { Router } from 'express';",
|
|
1279
1248
|
"import { getHelloHandler } from './hello.handler.js';",
|
|
@@ -1291,7 +1260,6 @@ async function createHelloEndpoint(projectPath, config) {
|
|
|
1291
1260
|
"export default router;"
|
|
1292
1261
|
].join('\n');
|
|
1293
1262
|
await writeFile(path.join(helloPath, 'hello.routes.ts'), routesContent);
|
|
1294
|
-
// Only create validator if katax-core is enabled
|
|
1295
1263
|
if (config.validation === 'katax-core') {
|
|
1296
1264
|
const validatorContent = [
|
|
1297
1265
|
"import { k, kataxInfer } from 'katax-core';",
|
|
@@ -1338,3 +1306,4 @@ async function createHelloEndpoint(projectPath, config) {
|
|
|
1338
1306
|
await writeFile(path.join(helloPath, 'hello.validator.ts'), validatorContent);
|
|
1339
1307
|
}
|
|
1340
1308
|
}
|
|
1309
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.refactored.d.ts","sourceRoot":"","sources":["../../src/commands/init.refactored.ts"],"names":[],"mappings":"AAwBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,iBAkIhF"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { success, error, gray, title, info } from '../utils/logger.js';
|
|
6
|
+
import { directoryExists } from '../utils/file-utils.js';
|
|
7
|
+
import { ProjectStructureGenerator } from '../services/project-structure-generator.js';
|
|
8
|
+
export async function initCommand(projectName, options = {}) {
|
|
9
|
+
title('š Katax CLI - Initialize API Project');
|
|
10
|
+
let finalProjectName = projectName || '';
|
|
11
|
+
if (!finalProjectName) {
|
|
12
|
+
const answer = await inquirer.prompt([
|
|
13
|
+
{
|
|
14
|
+
type: 'input',
|
|
15
|
+
name: 'projectName',
|
|
16
|
+
message: 'Project name:',
|
|
17
|
+
default: 'my-api',
|
|
18
|
+
validate: (input) => {
|
|
19
|
+
if (!/^[a-z0-9-_]+$/i.test(input)) {
|
|
20
|
+
return 'Project name can only contain letters, numbers, hyphens, and underscores';
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]);
|
|
26
|
+
finalProjectName = answer.projectName;
|
|
27
|
+
}
|
|
28
|
+
const projectPath = path.join(process.cwd(), finalProjectName);
|
|
29
|
+
if (directoryExists(projectPath) && !options.force) {
|
|
30
|
+
error(`Directory "${finalProjectName}" already exists!`);
|
|
31
|
+
gray('Use --force to overwrite\n');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const answers = await inquirer.prompt([
|
|
35
|
+
{
|
|
36
|
+
type: 'input',
|
|
37
|
+
name: 'description',
|
|
38
|
+
message: 'Project description:',
|
|
39
|
+
default: 'REST API built with Express and TypeScript'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'list',
|
|
43
|
+
name: 'database',
|
|
44
|
+
message: 'Select database:',
|
|
45
|
+
choices: [
|
|
46
|
+
{ name: 'PostgreSQL', value: 'postgresql' },
|
|
47
|
+
{ name: 'MySQL', value: 'mysql' },
|
|
48
|
+
{ name: 'MongoDB', value: 'mongodb' },
|
|
49
|
+
{ name: 'None (no database)', value: 'none' }
|
|
50
|
+
],
|
|
51
|
+
default: 'postgresql'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'list',
|
|
55
|
+
name: 'authentication',
|
|
56
|
+
message: 'Add authentication?',
|
|
57
|
+
choices: [
|
|
58
|
+
{ name: 'JWT Authentication', value: 'jwt' },
|
|
59
|
+
{ name: 'None', value: 'none' }
|
|
60
|
+
],
|
|
61
|
+
default: 'jwt'
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
type: 'confirm',
|
|
65
|
+
name: 'validation',
|
|
66
|
+
message: 'Use katax-core for validation?',
|
|
67
|
+
default: true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: 'input',
|
|
71
|
+
name: 'port',
|
|
72
|
+
message: 'Server port:',
|
|
73
|
+
default: '3000',
|
|
74
|
+
validate: (input) => {
|
|
75
|
+
const port = parseInt(input);
|
|
76
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
77
|
+
return 'Port must be a number between 1 and 65535';
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
]);
|
|
83
|
+
let dbConfig = {};
|
|
84
|
+
if (answers.database !== 'none') {
|
|
85
|
+
dbConfig = await collectDatabaseConfig(answers.database, finalProjectName);
|
|
86
|
+
}
|
|
87
|
+
const config = {
|
|
88
|
+
name: finalProjectName,
|
|
89
|
+
description: answers.description,
|
|
90
|
+
type: 'rest-api',
|
|
91
|
+
typescript: true,
|
|
92
|
+
database: answers.database,
|
|
93
|
+
authentication: answers.authentication,
|
|
94
|
+
validation: answers.validation ? 'katax-core' : 'none',
|
|
95
|
+
orm: 'none',
|
|
96
|
+
port: parseInt(answers.port),
|
|
97
|
+
dbConfig
|
|
98
|
+
};
|
|
99
|
+
displayConfiguration(config);
|
|
100
|
+
const spinner = ora('Creating project structure...').start();
|
|
101
|
+
try {
|
|
102
|
+
const generator = new ProjectStructureGenerator(projectPath, config);
|
|
103
|
+
await generator.generate();
|
|
104
|
+
spinner.succeed('Project structure created');
|
|
105
|
+
spinner.start('Installing dependencies...');
|
|
106
|
+
await installDependencies(projectPath);
|
|
107
|
+
spinner.succeed('Dependencies installed');
|
|
108
|
+
success(`\n⨠Project "${finalProjectName}" created successfully!\n`);
|
|
109
|
+
displayNextSteps(finalProjectName);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
spinner.fail('Failed to create project');
|
|
113
|
+
error(err instanceof Error ? err.message : 'Unknown error');
|
|
114
|
+
if (err instanceof Error && err.stack) {
|
|
115
|
+
gray(err.stack);
|
|
116
|
+
}
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function collectDatabaseConfig(database, projectName) {
|
|
121
|
+
const dbQuestions = [];
|
|
122
|
+
if (database === 'postgresql' || database === 'mysql') {
|
|
123
|
+
dbQuestions.push({
|
|
124
|
+
type: 'input',
|
|
125
|
+
name: 'host',
|
|
126
|
+
message: `${database === 'postgresql' ? 'PostgreSQL' : 'MySQL'} host:`,
|
|
127
|
+
default: 'localhost'
|
|
128
|
+
}, {
|
|
129
|
+
type: 'input',
|
|
130
|
+
name: 'port',
|
|
131
|
+
message: `${database === 'postgresql' ? 'PostgreSQL' : 'MySQL'} port:`,
|
|
132
|
+
default: database === 'postgresql' ? '5432' : '3306'
|
|
133
|
+
}, {
|
|
134
|
+
type: 'input',
|
|
135
|
+
name: 'user',
|
|
136
|
+
message: 'Database user:',
|
|
137
|
+
default: database === 'postgresql' ? 'postgres' : 'root'
|
|
138
|
+
}, {
|
|
139
|
+
type: 'password',
|
|
140
|
+
name: 'password',
|
|
141
|
+
message: 'Database password:',
|
|
142
|
+
default: 'password'
|
|
143
|
+
}, {
|
|
144
|
+
type: 'input',
|
|
145
|
+
name: 'database',
|
|
146
|
+
message: 'Database name:',
|
|
147
|
+
default: projectName.toLowerCase().replace(/-/g, '_')
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else if (database === 'mongodb') {
|
|
151
|
+
dbQuestions.push({
|
|
152
|
+
type: 'input',
|
|
153
|
+
name: 'host',
|
|
154
|
+
message: 'MongoDB host:',
|
|
155
|
+
default: 'localhost'
|
|
156
|
+
}, {
|
|
157
|
+
type: 'input',
|
|
158
|
+
name: 'port',
|
|
159
|
+
message: 'MongoDB port:',
|
|
160
|
+
default: '27017'
|
|
161
|
+
}, {
|
|
162
|
+
type: 'input',
|
|
163
|
+
name: 'database',
|
|
164
|
+
message: 'Database name:',
|
|
165
|
+
default: projectName.toLowerCase().replace(/-/g, '_')
|
|
166
|
+
}, {
|
|
167
|
+
type: 'confirm',
|
|
168
|
+
name: 'useAuth',
|
|
169
|
+
message: 'Use authentication?',
|
|
170
|
+
default: false
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
const config = await inquirer.prompt(dbQuestions);
|
|
174
|
+
if (database === 'mongodb' && config.useAuth) {
|
|
175
|
+
const authConfig = await inquirer.prompt([
|
|
176
|
+
{
|
|
177
|
+
type: 'input',
|
|
178
|
+
name: 'user',
|
|
179
|
+
message: 'MongoDB user:',
|
|
180
|
+
default: 'admin'
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'password',
|
|
184
|
+
name: 'password',
|
|
185
|
+
message: 'MongoDB password:',
|
|
186
|
+
default: 'password'
|
|
187
|
+
}
|
|
188
|
+
]);
|
|
189
|
+
config.user = authConfig.user;
|
|
190
|
+
config.password = authConfig.password;
|
|
191
|
+
}
|
|
192
|
+
return config;
|
|
193
|
+
}
|
|
194
|
+
function displayConfiguration(config) {
|
|
195
|
+
gray('\nš Project Configuration:');
|
|
196
|
+
gray(` Name: ${config.name}`);
|
|
197
|
+
gray(` Database: ${config.database}`);
|
|
198
|
+
gray(` Auth: ${config.authentication}`);
|
|
199
|
+
gray(` Validation: ${config.validation}`);
|
|
200
|
+
gray(` Port: ${config.port}\n`);
|
|
201
|
+
}
|
|
202
|
+
function displayNextSteps(projectName) {
|
|
203
|
+
info('Next steps:');
|
|
204
|
+
gray(` cd ${projectName}`);
|
|
205
|
+
gray(` npm run dev\n`);
|
|
206
|
+
info('Available commands:');
|
|
207
|
+
gray(` katax add endpoint <name> - Add a new endpoint`);
|
|
208
|
+
gray(` katax generate crud <name> - Generate CRUD resource`);
|
|
209
|
+
gray(` katax info - Show project structure\n`);
|
|
210
|
+
info('Generated with:');
|
|
211
|
+
gray(` ā
Result pattern for type-safe error handling`);
|
|
212
|
+
gray(` ā
Repository pattern for database abstraction`);
|
|
213
|
+
gray(` ā
Dependency injection ready`);
|
|
214
|
+
gray(` ā
Structured logging with Pino`);
|
|
215
|
+
gray(` ā
Health check endpoint`);
|
|
216
|
+
gray(` ā
Hello example endpoint\n`);
|
|
217
|
+
}
|
|
218
|
+
async function installDependencies(projectPath) {
|
|
219
|
+
await execa('npm', ['install'], {
|
|
220
|
+
cwd: projectPath,
|
|
221
|
+
stdio: 'ignore'
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=init.refactored.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.refactored.js","sourceRoot":"","sources":["../../src/commands/init.refactored.ts"],"names":[],"mappings":"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"}
|