katax-cli 1.3.0 → 1.3.2

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.
@@ -4,12 +4,15 @@ export class OpenAPIGenerator {
4
4
  projectPath;
5
5
  endpoints = [];
6
6
  schemas = {};
7
- constructor(projectPath) {
7
+ validatorSchemaMap = {};
8
+ options;
9
+ constructor(projectPath, options = {}) {
8
10
  this.projectPath = projectPath;
11
+ this.options = options;
9
12
  }
10
13
  async generate() {
11
- await this.scanRoutes();
12
14
  await this.scanValidators();
15
+ await this.scanRoutes();
13
16
  return this.buildOpenAPISpec();
14
17
  }
15
18
  async scanRoutes() {
@@ -33,68 +36,133 @@ export class OpenAPIGenerator {
33
36
  }
34
37
  const content = readFileSync(routesFile, "utf-8");
35
38
  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" },
39
+ {
40
+ regex: /router\.get\s*\(\s*['"`]([^'"`]+)['"`]\s*,\s*([\s\S]*?)\);/g,
41
+ method: "get",
42
+ },
43
+ {
44
+ regex: /router\.post\s*\(\s*['"`]([^'"`]+)['"`]\s*,\s*([\s\S]*?)\);/g,
45
+ method: "post",
46
+ },
47
+ {
48
+ regex: /router\.put\s*\(\s*['"`]([^'"`]+)['"`]\s*,\s*([\s\S]*?)\);/g,
49
+ method: "put",
50
+ },
51
+ {
52
+ regex: /router\.patch\s*\(\s*['"`]([^'"`]+)['"`]\s*,\s*([\s\S]*?)\);/g,
53
+ method: "patch",
54
+ },
55
+ {
56
+ regex: /router\.delete\s*\(\s*['"`]([^'"`]+)['"`]\s*,\s*([\s\S]*?)\);/g,
57
+ method: "delete",
58
+ },
41
59
  ];
42
60
  for (const { regex, method } of routePatterns) {
43
61
  let match;
44
62
  while ((match = regex.exec(content)) !== null) {
45
63
  const routePath = match[1];
64
+ const handlerArgs = match[2] || "";
65
+ const handlerName = this.extractHandlerName(handlerArgs);
46
66
  const fullPath = `/api/${resourceName}${routePath === "/" ? "" : routePath}`;
47
67
  this.endpoints.push({
48
68
  path: fullPath,
49
69
  method: method.toUpperCase(),
50
70
  summary: this.generateSummary(method, resourceName, routePath),
51
71
  tags: [resourceName],
52
- ...this.extractEndpointDetails(content, match.index, method, resourceName),
72
+ handlerName,
73
+ ...this.extractEndpointDetails(content, resourcePath, resourceName, routePath, handlerName, match.index, method),
53
74
  });
54
75
  }
55
76
  }
56
77
  }
57
- extractEndpointDetails(content, matchIndex, method, resource) {
78
+ extractEndpointDetails(routesContent, resourcePath, resourceName, routePath, handlerName, matchIndex, method) {
58
79
  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];
80
+ const commentBlock = this.extractRouteCommentBlock(routesContent, matchIndex);
81
+ const annotations = this.parseRouteAnnotations(commentBlock);
82
+ if (annotations.desc) {
83
+ result.description = annotations.desc;
84
+ }
85
+ if (annotations.desc) {
86
+ result.summary = annotations.desc;
87
+ }
88
+ const parameters = [];
89
+ const pathParams = routePath.match(/:(\w+)/g) ?? [];
90
+ for (const rawParam of pathParams) {
91
+ const paramName = rawParam.slice(1);
92
+ parameters.push({
93
+ name: paramName,
94
+ in: "path",
95
+ required: true,
96
+ schema: { type: "string" },
97
+ description: `${this.capitalize(paramName)} identifier`,
98
+ });
99
+ }
100
+ const handlerValidation = handlerName
101
+ ? this.extractHandlerValidation(resourcePath, resourceName, handlerName)
102
+ : null;
103
+ if (handlerValidation?.paramsValidator) {
104
+ const schemaName = this.validatorSchemaMap[handlerValidation.paramsValidator];
105
+ parameters.push(...this.schemaToParameters(schemaName, "path", true));
106
+ }
107
+ if (handlerValidation?.queryValidator) {
108
+ const schemaName = this.validatorSchemaMap[handlerValidation.queryValidator];
109
+ parameters.push(...this.schemaToParameters(schemaName, "query", false));
110
+ }
111
+ if (annotations.queryFields.length > 0) {
112
+ for (const field of annotations.queryFields) {
113
+ if (!parameters.some((param) => param.name === field && param.in === "query")) {
114
+ parameters.push({
115
+ name: field,
116
+ in: "query",
117
+ required: false,
118
+ schema: { type: "string" },
119
+ });
120
+ }
121
+ }
122
+ }
123
+ if (annotations.paramsFields.length > 0) {
124
+ for (const field of annotations.paramsFields) {
125
+ if (!parameters.some((param) => param.name === field && param.in === "path")) {
126
+ parameters.push({
127
+ name: field,
128
+ in: "path",
129
+ required: true,
130
+ schema: { type: "string" },
131
+ });
132
+ }
133
+ }
134
+ }
135
+ if (parameters.length > 0) {
136
+ result.parameters = this.deduplicateParameters(parameters);
137
+ }
138
+ if (handlerValidation?.bodyValidator) {
139
+ const schemaName = this.validatorSchemaMap[handlerValidation.bodyValidator];
140
+ if (schemaName) {
72
141
  result.requestBody = {
73
142
  required: true,
74
143
  content: {
75
144
  "application/json": {
76
145
  schema: {
77
- $ref: `#/components/schemas/${this.capitalize(validatorName)}`,
146
+ $ref: `#/components/schemas/${schemaName}`,
78
147
  },
79
148
  },
80
149
  },
81
150
  };
82
151
  }
83
152
  }
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
- }
153
+ if (!result.requestBody && annotations.bodyFields.length > 0) {
154
+ result.requestBody = {
155
+ required: true,
156
+ content: {
157
+ "application/json": {
158
+ schema: {
159
+ type: "object",
160
+ properties: Object.fromEntries(annotations.bodyFields.map((field) => [field, { type: "string" }])),
161
+ required: annotations.bodyFields,
162
+ },
163
+ },
164
+ },
165
+ };
98
166
  }
99
167
  result.responses = this.generateResponses(method);
100
168
  return result;
@@ -108,62 +176,196 @@ export class OpenAPIGenerator {
108
176
  for (const resource of resources) {
109
177
  const validatorFile = path.join(apiPath, resource, `${resource}.validator.ts`);
110
178
  if (this.fileExists(validatorFile)) {
111
- await this.extractSchemaFromValidator(resource, validatorFile);
179
+ await this.extractSchemaFromValidator(validatorFile);
112
180
  }
113
181
  }
114
182
  }
115
- async extractSchemaFromValidator(resource, validatorPath) {
183
+ async extractSchemaFromValidator(validatorPath) {
116
184
  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);
185
+ const validatorFnPattern = /export\s+async\s+function\s+(validate\w+)\s*\([^)]*\)\s*:\s*Promise<[^>]*>\s*\{[\s\S]*?const\s+result\s*=\s*(\w+)\.safeParse\(/g;
186
+ let validatorMatch;
187
+ while ((validatorMatch = validatorFnPattern.exec(content)) !== null) {
188
+ const validatorName = validatorMatch[1];
189
+ const schemaName = validatorMatch[2];
190
+ this.validatorSchemaMap[validatorName] = schemaName;
129
191
  }
130
- if (Object.keys(properties).length > 0) {
131
- this.schemas[this.capitalize(resource)] = {
192
+ const objectSchemaPattern = /export\s+const\s+(\w+)\s*=\s*k\.object\s*\(\s*\{([\s\S]*?)\}\s*\);/g;
193
+ let schemaMatch;
194
+ while ((schemaMatch = objectSchemaPattern.exec(content)) !== null) {
195
+ const schemaName = schemaMatch[1];
196
+ const schemaBody = schemaMatch[2];
197
+ const properties = {};
198
+ const required = [];
199
+ const fieldPattern = /^\s*(\w+)\s*:\s*([^,\n]+(?:\([^\)]*\))?(?:\.[^,\n]+)*)\s*,?$/gm;
200
+ let fieldMatch;
201
+ while ((fieldMatch = fieldPattern.exec(schemaBody)) !== null) {
202
+ const fieldName = fieldMatch[1];
203
+ const expression = fieldMatch[2].trim();
204
+ const mappedSchema = this.mapKataxExpressionToOpenAPI(expression);
205
+ properties[fieldName] = mappedSchema;
206
+ if (!expression.includes(".optional()")) {
207
+ required.push(fieldName);
208
+ }
209
+ }
210
+ this.schemas[schemaName] = {
132
211
  type: "object",
133
212
  properties,
134
- required: required.length > 0 ? required : undefined,
213
+ ...(required.length > 0 ? { required } : {}),
135
214
  };
136
215
  }
137
216
  }
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()")) {
217
+ mapKataxExpressionToOpenAPI(expression) {
218
+ const normalized = expression.replace(/\s+/g, "");
219
+ const result = { type: "string" };
220
+ if (normalized.includes("k.number(")) {
221
+ result.type = "number";
222
+ }
223
+ else if (normalized.includes("k.boolean(")) {
224
+ result.type = "boolean";
225
+ }
226
+ else if (normalized.includes("k.array(")) {
227
+ result.type = "array";
228
+ result.items = { type: "string" };
229
+ }
230
+ else if (normalized.includes("k.object(")) {
231
+ result.type = "object";
232
+ }
233
+ else if (normalized.includes("k.date(")) {
234
+ result.type = "string";
235
+ result.format = "date-time";
236
+ }
237
+ else {
238
+ result.type = "string";
239
+ }
240
+ if (normalized.includes(".email()")) {
148
241
  result.format = "email";
149
242
  }
150
- if (context.includes(".uuid()")) {
243
+ if (normalized.includes(".uuid()")) {
151
244
  result.format = "uuid";
152
245
  }
153
- if (context.includes(".min(")) {
154
- const minMatch = context.match(/\.min\((\d+)\)/);
246
+ if (normalized.includes(".min(")) {
247
+ const minMatch = normalized.match(/\.min\((\d+)\)/);
155
248
  if (minMatch) {
156
249
  result.minimum = parseInt(minMatch[1]);
157
250
  }
158
251
  }
159
- if (context.includes(".max(")) {
160
- const maxMatch = context.match(/\.max\((\d+)\)/);
252
+ if (normalized.includes(".max(")) {
253
+ const maxMatch = normalized.match(/\.max\((\d+)\)/);
161
254
  if (maxMatch) {
162
255
  result.maximum = parseInt(maxMatch[1]);
163
256
  }
164
257
  }
258
+ if (normalized.includes(".minLength(")) {
259
+ const minLengthMatch = normalized.match(/\.minLength\((\d+)\)/);
260
+ if (minLengthMatch) {
261
+ result.minLength = parseInt(minLengthMatch[1]);
262
+ }
263
+ }
264
+ if (normalized.includes(".maxLength(")) {
265
+ const maxLengthMatch = normalized.match(/\.maxLength\((\d+)\)/);
266
+ if (maxLengthMatch) {
267
+ result.maxLength = parseInt(maxLengthMatch[1]);
268
+ }
269
+ }
165
270
  return result;
166
271
  }
272
+ extractHandlerName(handlerArgs) {
273
+ const tokens = handlerArgs.match(/[A-Za-z_][A-Za-z0-9_]*/g) ?? [];
274
+ const candidate = [...tokens].reverse().find((token) => /Handler$/.test(token));
275
+ return candidate;
276
+ }
277
+ extractRouteCommentBlock(content, matchIndex) {
278
+ const beforeRoute = content.substring(0, matchIndex);
279
+ const commentStart = beforeRoute.lastIndexOf("/**");
280
+ const commentEnd = beforeRoute.lastIndexOf("*/");
281
+ if (commentStart === -1 || commentEnd === -1 || commentEnd < commentStart) {
282
+ return "";
283
+ }
284
+ const between = beforeRoute.slice(commentEnd + 2).trim();
285
+ if (between.length > 0 && between.split("\n").length > 2) {
286
+ return "";
287
+ }
288
+ return beforeRoute.slice(commentStart, commentEnd + 2);
289
+ }
290
+ parseRouteAnnotations(commentBlock) {
291
+ const descMatch = commentBlock.match(/@desc\s+([^\n\r*]+)/i);
292
+ return {
293
+ desc: descMatch?.[1]?.trim(),
294
+ bodyFields: this.extractAnnotationFields(commentBlock, "body"),
295
+ queryFields: this.extractAnnotationFields(commentBlock, "query"),
296
+ paramsFields: this.extractAnnotationFields(commentBlock, "params"),
297
+ };
298
+ }
299
+ extractAnnotationFields(commentBlock, tag) {
300
+ const regex = new RegExp(`@${tag}\\s*\\{([^}]*)\\}`, "i");
301
+ const match = commentBlock.match(regex);
302
+ if (!match?.[1]) {
303
+ return [];
304
+ }
305
+ return match[1]
306
+ .split(",")
307
+ .map((field) => field.trim())
308
+ .filter(Boolean);
309
+ }
310
+ extractHandlerValidation(resourcePath, resourceName, handlerName) {
311
+ const handlerPath = path.join(resourcePath, `${resourceName}.handler.ts`);
312
+ if (!this.fileExists(handlerPath)) {
313
+ return null;
314
+ }
315
+ const content = readFileSync(handlerPath, "utf-8");
316
+ const functionStart = content.indexOf(`function ${handlerName}`);
317
+ if (functionStart === -1) {
318
+ return null;
319
+ }
320
+ const nextFunctionStart = content.indexOf("export async function", functionStart + 1);
321
+ const functionBlock = nextFunctionStart === -1
322
+ ? content.slice(functionStart)
323
+ : content.slice(functionStart, nextFunctionStart);
324
+ const validationPattern = /(validate\w+)\s*\(\s*req\.(body|query|params)\s*\)/g;
325
+ const result = {};
326
+ let match;
327
+ while ((match = validationPattern.exec(functionBlock)) !== null) {
328
+ const validatorFn = match[1];
329
+ const source = match[2];
330
+ if (source === "body") {
331
+ result.bodyValidator = validatorFn;
332
+ }
333
+ else if (source === "query") {
334
+ result.queryValidator = validatorFn;
335
+ }
336
+ else if (source === "params") {
337
+ result.paramsValidator = validatorFn;
338
+ }
339
+ }
340
+ return result;
341
+ }
342
+ schemaToParameters(schemaName, location, requiredByDefault) {
343
+ if (!schemaName) {
344
+ return [];
345
+ }
346
+ const schema = this.schemas[schemaName];
347
+ if (!schema?.properties) {
348
+ return [];
349
+ }
350
+ const requiredList = schema.required ?? [];
351
+ return Object.entries(schema.properties).map(([name, propertySchema]) => ({
352
+ name,
353
+ in: location,
354
+ required: location === "path" ? true : requiredByDefault || requiredList.includes(name),
355
+ schema: propertySchema?.type
356
+ ? propertySchema
357
+ : {
358
+ type: "string",
359
+ },
360
+ }));
361
+ }
362
+ deduplicateParameters(parameters) {
363
+ const unique = new Map();
364
+ for (const parameter of parameters) {
365
+ unique.set(`${parameter.in}:${parameter.name}`, parameter);
366
+ }
367
+ return Array.from(unique.values());
368
+ }
167
369
  buildOpenAPISpec() {
168
370
  const paths = {};
169
371
  for (const endpoint of this.endpoints) {
@@ -179,6 +381,20 @@ export class OpenAPIGenerator {
179
381
  responses: endpoint.responses,
180
382
  };
181
383
  }
384
+ const port = this.options.port || "3000";
385
+ const productionUrl = this.options.productionUrl;
386
+ const servers = [
387
+ {
388
+ url: `http://localhost:${port}`,
389
+ description: "Development server",
390
+ },
391
+ ];
392
+ if (productionUrl) {
393
+ servers.push({
394
+ url: productionUrl,
395
+ description: "Production server",
396
+ });
397
+ }
182
398
  return {
183
399
  openapi: "3.0.0",
184
400
  info: {
@@ -186,16 +402,7 @@ export class OpenAPIGenerator {
186
402
  version: "1.0.0",
187
403
  description: "Auto-generated API documentation by Katax CLI",
188
404
  },
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
- ],
405
+ servers,
199
406
  paths,
200
407
  components: {
201
408
  schemas: this.schemas,
@@ -1 +1 @@
1
- {"version":3,"file":"openapi-generator.service.js","sourceRoot":"","sources":["../../src/services/openapi-generator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi-generator.service.js","sourceRoot":"","sources":["../../src/services/openapi-generator.service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export declare function generateSwaggerSetup(): string;
2
- export declare function generateSwaggerReadme(): string;
1
+ export declare function generateSwaggerSetup(defaultPort?: string): string;
2
+ export declare function generateSwaggerReadme(defaultPort?: string): string;
3
3
  //# sourceMappingURL=swagger-template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-template.d.ts","sourceRoot":"","sources":["../../../src/templates/generators/swagger-template.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,IAAI,MAAM,CAgD7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAuE9C"}
1
+ {"version":3,"file":"swagger-template.d.ts","sourceRoot":"","sources":["../../../src/templates/generators/swagger-template.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAe,GAAG,MAAM,CAmDzE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,GAAE,MAAe,GAAG,MAAM,CAuE1E"}
@@ -1,4 +1,4 @@
1
- export function generateSwaggerSetup() {
1
+ export function generateSwaggerSetup(defaultPort = "3000") {
2
2
  return `import swaggerUi from 'swagger-ui-express';
3
3
  import { Express } from 'express';
4
4
  import fs from 'fs';
@@ -40,22 +40,25 @@ export function setupSwagger(app: Express): void {
40
40
  res.send(swaggerDocument);
41
41
  });
42
42
 
43
- console.log('📖 API Documentation available at: http://localhost:3000/docs');
43
+ const configuredServer = swaggerDocument?.servers?.[0]?.url as string | undefined;
44
+ const configuredPortMatch = configuredServer?.match(/localhost:(\\d+)/);
45
+ const port = process.env.PORT || configuredPortMatch?.[1] || '${defaultPort}';
46
+ console.log(\`📖 API Documentation available at: http://localhost:\${port}/docs\`);
44
47
  } catch (error) {
45
48
  console.error('Failed to setup Swagger:', error);
46
49
  }
47
50
  }
48
51
  `;
49
52
  }
50
- export function generateSwaggerReadme() {
53
+ export function generateSwaggerReadme(defaultPort = "3000") {
51
54
  return `# API Documentation
52
55
 
53
56
  ## Swagger UI
54
57
 
55
58
  Interactive API documentation is available at:
56
59
 
57
- - **Development**: http://localhost:3000/docs
58
- - **OpenAPI Spec**: http://localhost:3000/openapi.json
60
+ - **Development**: http://localhost:${defaultPort}/docs
61
+ - **OpenAPI Spec**: http://localhost:${defaultPort}/openapi.json
59
62
 
60
63
  ## Features
61
64
 
@@ -74,7 +77,7 @@ Interactive API documentation is available at:
74
77
  npm run dev
75
78
 
76
79
  # Open browser
77
- open http://localhost:3000/docs
80
+ open http://localhost:${defaultPort}/docs
78
81
  \`\`\`
79
82
 
80
83
  ### Regenerate Documentation
@@ -91,7 +94,7 @@ katax generate docs --force
91
94
 
92
95
  ### Export to Postman
93
96
 
94
- 1. Open http://localhost:3000/openapi.json
97
+ 1. Open http://localhost:${defaultPort}/openapi.json
95
98
  2. Copy the JSON
96
99
  3. In Postman: File → Import → Raw Text → Paste
97
100
  4. ✅ All endpoints imported!
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-template.js","sourceRoot":"","sources":["../../../src/templates/generators/swagger-template.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqER,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"swagger-template.js","sourceRoot":"","sources":["../../../src/templates/generators/swagger-template.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB,CAAC,cAAsB,MAAM;IAC/D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEA2C2D,WAAW;;;;;;CAM9E,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,cAAsB,MAAM;IAChE,OAAO;;;;;;sCAM6B,WAAW;uCACV,WAAW;;;;;;;;;;;;;;;;;;;wBAmB1B,WAAW;;;;;;;;;;;;;;;;;2BAiBR,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BrC,CAAC;AACF,CAAC"}
@@ -10,10 +10,15 @@ export interface ProjectConfig {
10
10
  orm?: "none" | "prisma" | "typeorm";
11
11
  port: number;
12
12
  useKataxServiceManager?: boolean;
13
+ kataxMode?: "singleton" | "instance";
13
14
  useRedis?: boolean;
14
15
  useWebSocket?: boolean;
15
16
  useSeparateSocketPort?: boolean;
16
17
  socketPort?: number;
18
+ useRegistry?: boolean;
19
+ registryMode?: "none" | "url" | "handler";
20
+ registryUrl?: string;
21
+ useLifecycleHooks?: boolean;
17
22
  initGit?: boolean;
18
23
  redisConfig?: {
19
24
  host?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvD,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAChC,UAAU,EAAE,YAAY,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9E,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,WAAW,GACX,WAAW,GACX,KAAK,GACL,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;IACb,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "katax-cli",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "CLI tool to generate Express APIs with TypeScript and katax-core validation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",