katax-cli 1.1.3 → 1.2.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.
Files changed (34) hide show
  1. package/dist/commands/add-endpoint.d.ts.map +1 -1
  2. package/dist/commands/add-endpoint.js +121 -97
  3. package/dist/commands/add-endpoint.js.map +1 -1
  4. package/dist/commands/deploy.d.ts +3 -0
  5. package/dist/commands/deploy.d.ts.map +1 -1
  6. package/dist/commands/deploy.js +287 -153
  7. package/dist/commands/deploy.js.map +1 -1
  8. package/dist/commands/generate-crud.d.ts.map +1 -1
  9. package/dist/commands/generate-crud.js +60 -56
  10. package/dist/commands/generate-crud.js.map +1 -1
  11. package/dist/commands/generate-docs.d.ts +8 -0
  12. package/dist/commands/generate-docs.d.ts.map +1 -0
  13. package/dist/commands/generate-docs.js +159 -0
  14. package/dist/commands/generate-docs.js.map +1 -0
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +506 -244
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/index.js +83 -69
  19. package/dist/index.js.map +1 -1
  20. package/dist/services/openapi-generator.service.d.ts +37 -0
  21. package/dist/services/openapi-generator.service.d.ts.map +1 -0
  22. package/dist/services/openapi-generator.service.js +333 -0
  23. package/dist/services/openapi-generator.service.js.map +1 -0
  24. package/dist/services/project-structure-generator.d.ts +1 -1
  25. package/dist/services/project-structure-generator.d.ts.map +1 -1
  26. package/dist/services/project-structure-generator.js +443 -445
  27. package/dist/services/project-structure-generator.js.map +1 -1
  28. package/dist/templates/generators/swagger-template.d.ts +3 -0
  29. package/dist/templates/generators/swagger-template.d.ts.map +1 -0
  30. package/dist/templates/generators/swagger-template.js +117 -0
  31. package/dist/templates/generators/swagger-template.js.map +1 -0
  32. package/dist/types/index.d.ts +19 -10
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,333 @@
1
+ import { readFileSync, readdirSync, statSync } from "fs";
2
+ import path from "path";
3
+ export class OpenAPIGenerator {
4
+ projectPath;
5
+ endpoints = [];
6
+ schemas = {};
7
+ constructor(projectPath) {
8
+ this.projectPath = projectPath;
9
+ }
10
+ async generate() {
11
+ await this.scanRoutes();
12
+ await this.scanValidators();
13
+ return this.buildOpenAPISpec();
14
+ }
15
+ async scanRoutes() {
16
+ const apiPath = path.join(this.projectPath, "src", "api");
17
+ if (!this.directoryExists(apiPath)) {
18
+ return;
19
+ }
20
+ const resources = readdirSync(apiPath);
21
+ for (const resource of resources) {
22
+ const resourcePath = path.join(apiPath, resource);
23
+ const stat = statSync(resourcePath);
24
+ if (stat.isDirectory()) {
25
+ await this.scanResourceRoutes(resource, resourcePath);
26
+ }
27
+ }
28
+ }
29
+ async scanResourceRoutes(resourceName, resourcePath) {
30
+ const routesFile = path.join(resourcePath, `${resourceName}.routes.ts`);
31
+ if (!this.fileExists(routesFile)) {
32
+ return;
33
+ }
34
+ const content = readFileSync(routesFile, "utf-8");
35
+ const routePatterns = [
36
+ { regex: /router\.get\s*\(\s*['"`]([^'"`]+)['"`]/g, method: "get" },
37
+ { regex: /router\.post\s*\(\s*['"`]([^'"`]+)['"`]/g, method: "post" },
38
+ { regex: /router\.put\s*\(\s*['"`]([^'"`]+)['"`]/g, method: "put" },
39
+ { regex: /router\.patch\s*\(\s*['"`]([^'"`]+)['"`]/g, method: "patch" },
40
+ { regex: /router\.delete\s*\(\s*['"`]([^'"`]+)['"`]/g, method: "delete" },
41
+ ];
42
+ for (const { regex, method } of routePatterns) {
43
+ let match;
44
+ while ((match = regex.exec(content)) !== null) {
45
+ const routePath = match[1];
46
+ const fullPath = `/api/${resourceName}${routePath === "/" ? "" : routePath}`;
47
+ this.endpoints.push({
48
+ path: fullPath,
49
+ method: method.toUpperCase(),
50
+ summary: this.generateSummary(method, resourceName, routePath),
51
+ tags: [resourceName],
52
+ ...this.extractEndpointDetails(content, match.index, method, resourceName),
53
+ });
54
+ }
55
+ }
56
+ }
57
+ extractEndpointDetails(content, matchIndex, method, resource) {
58
+ const result = {};
59
+ const beforeRoute = content.substring(Math.max(0, matchIndex - 200), matchIndex);
60
+ const commentMatch = beforeRoute.match(/\/\*\*[\s\S]*?\*\/|\/\/.*$/m);
61
+ if (commentMatch) {
62
+ result.description = commentMatch[0]
63
+ .replace(/\/\*\*|\*\/|\/\/|\*/g, "")
64
+ .trim();
65
+ }
66
+ const afterRoute = content.substring(matchIndex, matchIndex + 300);
67
+ const hasValidation = afterRoute.includes("validate(");
68
+ if (hasValidation) {
69
+ const validatorMatch = afterRoute.match(/validate\s*\(\s*(\w+)Validator/);
70
+ if (validatorMatch) {
71
+ const validatorName = validatorMatch[1];
72
+ result.requestBody = {
73
+ required: true,
74
+ content: {
75
+ "application/json": {
76
+ schema: {
77
+ $ref: `#/components/schemas/${this.capitalize(validatorName)}`,
78
+ },
79
+ },
80
+ },
81
+ };
82
+ }
83
+ }
84
+ const pathMatch = content
85
+ .substring(matchIndex, matchIndex + 100)
86
+ .match(/['"`]([^'"`]*:(\w+)[^'"`]*)['"`]/);
87
+ if (pathMatch) {
88
+ const params = pathMatch[0].match(/:(\w+)/g);
89
+ if (params) {
90
+ result.parameters = params.map((p) => ({
91
+ name: p.substring(1),
92
+ in: "path",
93
+ required: true,
94
+ schema: { type: "string" },
95
+ description: `${this.capitalize(p.substring(1))} identifier`,
96
+ }));
97
+ }
98
+ }
99
+ result.responses = this.generateResponses(method);
100
+ return result;
101
+ }
102
+ async scanValidators() {
103
+ const apiPath = path.join(this.projectPath, "src", "api");
104
+ if (!this.directoryExists(apiPath)) {
105
+ return;
106
+ }
107
+ const resources = readdirSync(apiPath);
108
+ for (const resource of resources) {
109
+ const validatorFile = path.join(apiPath, resource, `${resource}.validator.ts`);
110
+ if (this.fileExists(validatorFile)) {
111
+ await this.extractSchemaFromValidator(resource, validatorFile);
112
+ }
113
+ }
114
+ }
115
+ async extractSchemaFromValidator(resource, validatorPath) {
116
+ const content = readFileSync(validatorPath, "utf-8");
117
+ const schemaPattern = /(\w+):\s*k\.(string|number|boolean|object|array)\([^)]*\)/g;
118
+ const properties = {};
119
+ const required = [];
120
+ let match;
121
+ while ((match = schemaPattern.exec(content)) !== null) {
122
+ const [, fieldName, fieldType] = match;
123
+ const fieldContext = content.substring(match.index, content.indexOf("\n", match.index));
124
+ const isOptional = fieldContext.includes(".optional()");
125
+ if (!isOptional) {
126
+ required.push(fieldName);
127
+ }
128
+ properties[fieldName] = this.mapKataxTypeToOpenAPI(fieldType, fieldContext);
129
+ }
130
+ if (Object.keys(properties).length > 0) {
131
+ this.schemas[this.capitalize(resource)] = {
132
+ type: "object",
133
+ properties,
134
+ required: required.length > 0 ? required : undefined,
135
+ };
136
+ }
137
+ }
138
+ mapKataxTypeToOpenAPI(kataxType, context) {
139
+ const baseMapping = {
140
+ string: { type: "string" },
141
+ number: { type: "number" },
142
+ boolean: { type: "boolean" },
143
+ object: { type: "object" },
144
+ array: { type: "array", items: { type: "string" } },
145
+ };
146
+ const result = { ...(baseMapping[kataxType] || { type: "string" }) };
147
+ if (context.includes(".email()")) {
148
+ result.format = "email";
149
+ }
150
+ if (context.includes(".uuid()")) {
151
+ result.format = "uuid";
152
+ }
153
+ if (context.includes(".min(")) {
154
+ const minMatch = context.match(/\.min\((\d+)\)/);
155
+ if (minMatch) {
156
+ result.minimum = parseInt(minMatch[1]);
157
+ }
158
+ }
159
+ if (context.includes(".max(")) {
160
+ const maxMatch = context.match(/\.max\((\d+)\)/);
161
+ if (maxMatch) {
162
+ result.maximum = parseInt(maxMatch[1]);
163
+ }
164
+ }
165
+ return result;
166
+ }
167
+ buildOpenAPISpec() {
168
+ const paths = {};
169
+ for (const endpoint of this.endpoints) {
170
+ if (!paths[endpoint.path]) {
171
+ paths[endpoint.path] = {};
172
+ }
173
+ paths[endpoint.path][endpoint.method.toLowerCase()] = {
174
+ tags: endpoint.tags,
175
+ summary: endpoint.summary,
176
+ description: endpoint.description,
177
+ parameters: endpoint.parameters,
178
+ requestBody: endpoint.requestBody,
179
+ responses: endpoint.responses,
180
+ };
181
+ }
182
+ return {
183
+ openapi: "3.0.0",
184
+ info: {
185
+ title: "API Documentation",
186
+ version: "1.0.0",
187
+ description: "Auto-generated API documentation by Katax CLI",
188
+ },
189
+ servers: [
190
+ {
191
+ url: "http://localhost:3000",
192
+ description: "Development server",
193
+ },
194
+ {
195
+ url: "https://api.example.com",
196
+ description: "Production server",
197
+ },
198
+ ],
199
+ paths,
200
+ components: {
201
+ schemas: this.schemas,
202
+ },
203
+ };
204
+ }
205
+ generateResponses(method) {
206
+ const baseResponses = {
207
+ "400": {
208
+ description: "Bad Request - Invalid input",
209
+ content: {
210
+ "application/json": {
211
+ schema: {
212
+ type: "object",
213
+ properties: {
214
+ success: { type: "boolean", example: false },
215
+ message: { type: "string" },
216
+ errors: { type: "array", items: { type: "string" } },
217
+ },
218
+ },
219
+ },
220
+ },
221
+ },
222
+ "500": {
223
+ description: "Internal Server Error",
224
+ content: {
225
+ "application/json": {
226
+ schema: {
227
+ type: "object",
228
+ properties: {
229
+ success: { type: "boolean", example: false },
230
+ message: { type: "string", example: "Internal server error" },
231
+ },
232
+ },
233
+ },
234
+ },
235
+ },
236
+ };
237
+ switch (method.toLowerCase()) {
238
+ case "post":
239
+ return {
240
+ "201": {
241
+ description: "Created successfully",
242
+ content: {
243
+ "application/json": {
244
+ schema: {
245
+ type: "object",
246
+ properties: {
247
+ success: { type: "boolean", example: true },
248
+ data: { type: "object" },
249
+ },
250
+ },
251
+ },
252
+ },
253
+ },
254
+ ...baseResponses,
255
+ };
256
+ case "delete":
257
+ return {
258
+ "200": {
259
+ description: "Deleted successfully",
260
+ content: {
261
+ "application/json": {
262
+ schema: {
263
+ type: "object",
264
+ properties: {
265
+ success: { type: "boolean", example: true },
266
+ message: { type: "string" },
267
+ },
268
+ },
269
+ },
270
+ },
271
+ },
272
+ "404": {
273
+ description: "Resource not found",
274
+ },
275
+ ...baseResponses,
276
+ };
277
+ default:
278
+ return {
279
+ "200": {
280
+ description: "Successful operation",
281
+ content: {
282
+ "application/json": {
283
+ schema: {
284
+ type: "object",
285
+ properties: {
286
+ success: { type: "boolean", example: true },
287
+ data: { type: "object" },
288
+ },
289
+ },
290
+ },
291
+ },
292
+ },
293
+ ...baseResponses,
294
+ };
295
+ }
296
+ }
297
+ generateSummary(method, resource, path) {
298
+ const hasId = path.includes(":id");
299
+ switch (method.toLowerCase()) {
300
+ case "get":
301
+ return hasId ? `Get ${resource} by ID` : `Get all ${resource}`;
302
+ case "post":
303
+ return `Create new ${resource}`;
304
+ case "put":
305
+ case "patch":
306
+ return `Update ${resource}`;
307
+ case "delete":
308
+ return `Delete ${resource}`;
309
+ default:
310
+ return `${method.toUpperCase()} ${resource}`;
311
+ }
312
+ }
313
+ directoryExists(dir) {
314
+ try {
315
+ return statSync(dir).isDirectory();
316
+ }
317
+ catch {
318
+ return false;
319
+ }
320
+ }
321
+ fileExists(file) {
322
+ try {
323
+ return statSync(file).isFile();
324
+ }
325
+ catch {
326
+ return false;
327
+ }
328
+ }
329
+ capitalize(str) {
330
+ return str.charAt(0).toUpperCase() + str.slice(1);
331
+ }
332
+ }
333
+ //# sourceMappingURL=openapi-generator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-generator.service.js","sourceRoot":"","sources":["../../src/services/openapi-generator.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ProjectConfig } from '../types/index.js';
1
+ import { ProjectConfig } from "../types/index.js";
2
2
  export declare class ProjectStructureGenerator {
3
3
  private projectPath;
4
4
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"project-structure-generator.d.ts","sourceRoot":"","sources":["../../src/services/project-structure-generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,qBAAa,yBAAyB;IACxB,OAAO,CAAC,WAAW;IAAU,OAAO,CAAC,MAAM;gBAAnC,WAAW,EAAE,MAAM,EAAU,MAAM,EAAE,aAAa;IAKhE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAiDjB,iBAAiB;YAqBjB,iBAAiB;YA4BjB,eAAe;YA2Cf,kBAAkB;YAwBlB,mBAAmB;YAkCnB,kBAAkB;YAwClB,mBAAmB;YA8BnB,qBAAqB;YAYrB,mBAAmB;YAoDnB,gBAAgB;YAyChB,eAAe;YAkCf,iBAAiB;YAejB,qBAAqB;YAarB,kBAAkB;YA2BlB,oBAAoB;YAkDpB,uBAAuB;YA+BvB,wBAAwB;YAkCxB,gBAAgB;YA0ChB,0BAA0B;YAiO1B,mBAAmB;YAiBnB,oBAAoB;YAkHpB,mBAAmB;CA4DlC"}
1
+ {"version":3,"file":"project-structure-generator.d.ts","sourceRoot":"","sources":["../../src/services/project-structure-generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,qBAAa,yBAAyB;IAElC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa;IAMzB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAiDjB,iBAAiB;YAqBjB,iBAAiB;YAgCjB,eAAe;YAwCf,kBAAkB;YAwBlB,mBAAmB;YAoCnB,kBAAkB;YA0ClB,mBAAmB;YA8BnB,qBAAqB;YAarB,mBAAmB;YAwDnB,gBAAgB;YAuChB,eAAe;YAqCf,iBAAiB;YAejB,qBAAqB;YAarB,kBAAkB;YA2BlB,oBAAoB;YAoDpB,uBAAuB;YAiCvB,wBAAwB;YAkCxB,gBAAgB;YA0ChB,0BAA0B;YAiS1B,mBAAmB;YAgBnB,oBAAoB;YAkHpB,mBAAmB;CAgElC"}