katax-cli 1.4.3 → 1.4.4

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.
@@ -5,7 +5,41 @@ import fs from "fs/promises";
5
5
  import { success, error, warning, gray, title, info } from "../utils/logger.js";
6
6
  import { fileExists, writeFile, ensureDir, toPascalCase, toCamelCase, } from "../utils/file-utils.js";
7
7
  import { autoRegenerateDocs } from "./generate-docs.js";
8
+ function getSrcRelativePrefix(resource) {
9
+ return "../".repeat(resource.segments.length + 1);
10
+ }
11
+ function getSharedImportPath(resource) {
12
+ return `${getSrcRelativePrefix(resource)}shared/api.utils.js`;
13
+ }
14
+ function getMiddlewareImportPath(resource) {
15
+ return `${getSrcRelativePrefix(resource)}middleware/rate-limit.middleware.js`;
16
+ }
17
+ function resolveResourceNaming(input) {
18
+ const segments = input
19
+ .split("/")
20
+ .map((segment) => segment.trim().toLowerCase())
21
+ .filter(Boolean);
22
+ if (segments.length === 0) {
23
+ throw new Error("Resource name is required");
24
+ }
25
+ const lowerName = segments[segments.length - 1];
26
+ const joinedForCase = segments.join("-");
27
+ const camelName = toCamelCase(joinedForCase);
28
+ const pascalName = toPascalCase(joinedForCase);
29
+ const routerIdentifier = `${camelName}Router`;
30
+ return {
31
+ segments,
32
+ basePath: path.join(process.cwd(), "src", "api", ...segments),
33
+ lowerName,
34
+ camelName,
35
+ pascalName,
36
+ routePath: segments.join("/"),
37
+ importPath: `./${segments.join("/")}/${lowerName}.routes.js`,
38
+ routerIdentifier,
39
+ };
40
+ }
8
41
  export async function generateCrudCommand(resourceName, options = {}) {
42
+ const resource = resolveResourceNaming(resourceName);
9
43
  title(`šŸ”§ Generate CRUD: ${resourceName}`);
10
44
  if (!fileExists(path.join(process.cwd(), "package.json"))) {
11
45
  error("Not in a project directory!");
@@ -56,6 +90,28 @@ export async function generateCrudCommand(resourceName, options = {}) {
56
90
  default: options.auth !== false,
57
91
  },
58
92
  ]);
93
+ const { addLimiter } = await inquirer.prompt([
94
+ {
95
+ type: "confirm",
96
+ name: "addLimiter",
97
+ message: "Add rate limiter to generated routes?",
98
+ default: options.limiter ?? false,
99
+ },
100
+ ]);
101
+ if (addLimiter) {
102
+ const packageJsonPath = path.join(process.cwd(), "package.json");
103
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
104
+ const hasRateLimit = packageJson.dependencies?.["express-rate-limit"] ||
105
+ packageJson.devDependencies?.["express-rate-limit"];
106
+ if (!hasRateLimit) {
107
+ const installSpinner = ora("Installing express-rate-limit...").start();
108
+ const { execa } = await import("execa");
109
+ await execa("npm", ["install", "express-rate-limit"], {
110
+ cwd: process.cwd(),
111
+ });
112
+ installSpinner.succeed("express-rate-limit installed");
113
+ }
114
+ }
59
115
  info("\nDefine fields for the resource:");
60
116
  const fields = [];
61
117
  let addingFields = true;
@@ -110,29 +166,29 @@ export async function generateCrudCommand(resourceName, options = {}) {
110
166
  }
111
167
  const spinner = ora("Generating CRUD endpoints...").start();
112
168
  try {
113
- await generateCRUDFiles(resourceName, selectedMethods, fields, addAuth);
169
+ await generateCRUDFiles(resource, selectedMethods, fields, addAuth, addLimiter);
114
170
  spinner.succeed("CRUD endpoints generated");
115
171
  success(`\n✨ CRUD for "${resourceName}" created successfully!\n`);
116
172
  info("Generated files:");
117
- gray(` src/api/${resourceName.toLowerCase()}/${resourceName.toLowerCase()}.validator.ts`);
118
- gray(` src/api/${resourceName.toLowerCase()}/${resourceName.toLowerCase()}.controller.ts`);
119
- gray(` src/api/${resourceName.toLowerCase()}/${resourceName.toLowerCase()}.handler.ts`);
120
- gray(` src/api/${resourceName.toLowerCase()}/${resourceName.toLowerCase()}.routes.ts`);
173
+ gray(` src/api/${resource.routePath}/${resource.lowerName}.validator.ts`);
174
+ gray(` src/api/${resource.routePath}/${resource.lowerName}.controller.ts`);
175
+ gray(` src/api/${resource.routePath}/${resource.lowerName}.handler.ts`);
176
+ gray(` src/api/${resource.routePath}/${resource.lowerName}.routes.ts`);
121
177
  gray(` Updated: src/api/routes.ts\n`);
122
178
  info("Generated endpoints:");
123
179
  selectedMethods.forEach((method) => {
124
180
  if (method === "GET") {
125
- gray(` GET /api/${resourceName.toLowerCase()} - List all`);
126
- gray(` GET /api/${resourceName.toLowerCase()}/:id - Get by ID`);
181
+ gray(` GET /api/${resource.routePath} - List all`);
182
+ gray(` GET /api/${resource.routePath}/:id - Get by ID`);
127
183
  }
128
184
  else if (method === "POST") {
129
- gray(` POST /api/${resourceName.toLowerCase()} - Create`);
185
+ gray(` POST /api/${resource.routePath} - Create`);
130
186
  }
131
187
  else if (method === "PUT" || method === "PATCH") {
132
- gray(` ${method.padEnd(6)} /api/${resourceName.toLowerCase()}/:id - Update`);
188
+ gray(` ${method.padEnd(6)} /api/${resource.routePath}/:id - Update`);
133
189
  }
134
190
  else if (method === "DELETE") {
135
- gray(` DELETE /api/${resourceName.toLowerCase()}/:id - Delete`);
191
+ gray(` DELETE /api/${resource.routePath}/:id - Delete`);
136
192
  }
137
193
  });
138
194
  console.log();
@@ -148,22 +204,25 @@ export async function generateCrudCommand(resourceName, options = {}) {
148
204
  process.exit(1);
149
205
  }
150
206
  }
151
- async function generateCRUDFiles(name, methods, fields, addAuth) {
152
- const basePath = path.join(process.cwd(), "src", "api", name.toLowerCase());
207
+ async function generateCRUDFiles(resource, methods, fields, addAuth, addLimiter) {
208
+ const basePath = resource.basePath;
153
209
  await ensureDir(basePath);
154
- const pascalName = toPascalCase(name);
155
- const camelName = toCamelCase(name);
156
- const lowerName = name.toLowerCase();
157
- await writeFile(path.join(basePath, `${lowerName}.validator.ts`), generateValidator(pascalName, camelName, methods, fields));
158
- await writeFile(path.join(basePath, `${lowerName}.controller.ts`), generateController(pascalName, camelName, methods, fields));
159
- await writeFile(path.join(basePath, `${lowerName}.handler.ts`), generateHandler(pascalName, camelName, lowerName, methods));
160
- await writeFile(path.join(basePath, `${lowerName}.routes.ts`), generateRoutes(pascalName, camelName, lowerName, methods, addAuth));
161
- await updateMainRouter(name);
210
+ const pascalName = resource.pascalName;
211
+ const camelName = resource.camelName;
212
+ const lowerName = resource.lowerName;
213
+ await writeFile(path.join(basePath, `${lowerName}.validator.ts`), generateValidator(pascalName, camelName, methods, fields, resource));
214
+ await writeFile(path.join(basePath, `${lowerName}.controller.ts`), generateController(pascalName, camelName, lowerName, methods, fields, resource));
215
+ await writeFile(path.join(basePath, `${lowerName}.handler.ts`), generateHandler(pascalName, camelName, lowerName, methods, resource));
216
+ await writeFile(path.join(basePath, `${lowerName}.routes.ts`), generateRoutes(pascalName, camelName, lowerName, resource.routePath, methods, addAuth, addLimiter, resource));
217
+ if (addLimiter) {
218
+ await ensureRateLimitMiddlewareFile();
219
+ }
220
+ await updateMainRouter(resource);
162
221
  }
163
- function generateValidator(pascalName, camelName, methods, fields) {
222
+ function generateValidator(pascalName, camelName, methods, fields, resource) {
164
223
  const lines = [
165
224
  "import { k, kataxInfer } from 'katax-core';",
166
- "import { validateSchema, ValidationResult } from '../../shared/api.utils.js';",
225
+ `import { validateSchema, ValidationResult } from '${getSharedImportPath(resource)}';`,
167
226
  "",
168
227
  "// ==================== SCHEMAS ====================",
169
228
  "",
@@ -209,9 +268,9 @@ function generateValidator(pascalName, camelName, methods, fields) {
209
268
  }
210
269
  return lines.join("\n");
211
270
  }
212
- function generateController(pascalName, camelName, methods, fields) {
271
+ function generateController(pascalName, camelName, lowerName, methods, fields, resource) {
213
272
  const lines = [
214
- "import { ControllerResult, createSuccessResult, createErrorResult } from '../../shared/api.utils.js';",
273
+ `import { ControllerResult, createResponse } from '${getSharedImportPath(resource)}';`,
215
274
  ];
216
275
  const types = [];
217
276
  if (methods.includes("GET"))
@@ -227,28 +286,28 @@ function generateController(pascalName, camelName, methods, fields) {
227
286
  types.push(`${pascalName}IdParams`);
228
287
  }
229
288
  if (types.length > 0) {
230
- lines.push(`import { ${types.join(", ")} } from './${camelName}.validator.js';`);
289
+ lines.push(`import { ${types.join(", ")} } from './${lowerName}.validator.js';`);
231
290
  }
232
291
  lines.push("", "// ==================== CONTROLLERS ====================", "");
233
292
  if (methods.includes("GET")) {
234
- lines.push("/**", ` * List all ${camelName}s`, " */", `export async function list${pascalName}s(query: ${pascalName}Query): Promise<ControllerResult<any[]>> {`, " try {", " // TODO: Implement database query", ` const mock${pascalName}s = [`, ` { id: '1', ${fields.length > 0 ? `${fields[0].name}: 'Sample 1',` : ""} createdAt: new Date().toISOString() },`, ` { id: '2', ${fields.length > 0 ? `${fields[0].name}: 'Sample 2',` : ""} createdAt: new Date().toISOString() }`, " ];", "", ` return createSuccessResult('${pascalName}s retrieved', mock${pascalName}s);`, " } catch (error) {", ` return createErrorResult('Failed to list ${camelName}s', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
235
- lines.push("/**", ` * Get ${camelName} by ID`, " */", `export async function get${pascalName}(params: ${pascalName}IdParams): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database query", ` const mock${pascalName} = { id: params.id, ${fields.length > 0 ? `${fields[0].name}: 'Sample',` : ""} createdAt: new Date().toISOString() };`, "", ` return createSuccessResult('${pascalName} retrieved', mock${pascalName});`, " } catch (error) {", ` return createErrorResult('Failed to get ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
293
+ lines.push("/**", ` * List all ${camelName}s`, " */", `export async function list${pascalName}s(query: ${pascalName}Query): Promise<ControllerResult<any[]>> {`, " try {", " // TODO: Implement database query", ` const mock${pascalName}s = [`, ` { id: '1', ${fields.length > 0 ? `${fields[0].name}: 'Sample 1',` : ""} createdAt: new Date().toISOString() },`, ` { id: '2', ${fields.length > 0 ? `${fields[0].name}: 'Sample 2',` : ""} createdAt: new Date().toISOString() }`, " ];", "", ` return createResponse.success('${pascalName}s retrieved', mock${pascalName}s);`, " } catch (error) {", ` return createResponse.error('Failed to list ${camelName}s', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
294
+ lines.push("/**", ` * Get ${camelName} by ID`, " */", `export async function get${pascalName}(params: ${pascalName}IdParams): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database query", ` const mock${pascalName} = { id: params.id, ${fields.length > 0 ? `${fields[0].name}: 'Sample',` : ""} createdAt: new Date().toISOString() };`, "", ` return createResponse.success('${pascalName} retrieved', mock${pascalName});`, " } catch (error) {", ` return createResponse.error('Failed to get ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
236
295
  }
237
296
  if (methods.includes("POST")) {
238
- lines.push("/**", ` * Create ${camelName}`, " */", `export async function create${pascalName}(data: Create${pascalName}Data): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database insertion", ` const new${pascalName} = { id: Math.random().toString(36).substr(2, 9), ...data, createdAt: new Date().toISOString() };`, "", ` return createSuccessResult('${pascalName} created', new${pascalName}, undefined, 201);`, " } catch (error) {", ` return createErrorResult('Failed to create ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
297
+ lines.push("/**", ` * Create ${camelName}`, " */", `export async function create${pascalName}(data: Create${pascalName}Data): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database insertion", ` const new${pascalName} = { id: Math.random().toString(36).slice(2, 11), ...data, createdAt: new Date().toISOString() };`, "", ` return createResponse.success('${pascalName} created', new${pascalName}, 201);`, " } catch (error) {", ` return createResponse.error('Failed to create ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
239
298
  }
240
299
  if (methods.some((m) => ["PUT", "PATCH"].includes(m))) {
241
- lines.push("/**", ` * Update ${camelName}`, " */", `export async function update${pascalName}(params: ${pascalName}IdParams, data: Update${pascalName}Data): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database update", ` const updated${pascalName} = { id: params.id, ...data, updatedAt: new Date().toISOString() };`, "", ` return createSuccessResult('${pascalName} updated', updated${pascalName});`, " } catch (error) {", ` return createErrorResult('Failed to update ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
300
+ lines.push("/**", ` * Update ${camelName}`, " */", `export async function update${pascalName}(params: ${pascalName}IdParams, data: Update${pascalName}Data): Promise<ControllerResult<any>> {`, " try {", " // TODO: Implement database update", ` const updated${pascalName} = { id: params.id, ...data, updatedAt: new Date().toISOString() };`, "", ` return createResponse.success('${pascalName} updated', updated${pascalName});`, " } catch (error) {", ` return createResponse.error('Failed to update ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
242
301
  }
243
302
  if (methods.includes("DELETE")) {
244
- lines.push("/**", ` * Delete ${camelName}`, " */", `export async function delete${pascalName}(params: ${pascalName}IdParams): Promise<ControllerResult<void>> {`, " try {", " // TODO: Implement database deletion", "", ` return createSuccessResult('${pascalName} deleted');`, " } catch (error) {", ` return createErrorResult('Failed to delete ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
303
+ lines.push("/**", ` * Delete ${camelName}`, " */", `export async function delete${pascalName}(params: ${pascalName}IdParams): Promise<ControllerResult<void>> {`, " try {", " // TODO: Implement database deletion", "", ` return createResponse.success('${pascalName} deleted');`, " } catch (error) {", ` return createResponse.error('Failed to delete ${camelName}', error instanceof Error ? error.message : 'Unknown error', 500);`, " }", "}", "");
245
304
  }
246
305
  return lines.join("\n");
247
306
  }
248
- function generateHandler(pascalName, camelName, lowerName, methods) {
307
+ function generateHandler(pascalName, camelName, lowerName, methods, resource) {
249
308
  const lines = [
250
309
  "import { Request, Response } from 'express';",
251
- "import { sendResponse } from '../../shared/api.utils.js';",
310
+ `import { sendResponse } from '${getSharedImportPath(resource)}';`,
252
311
  ];
253
312
  const controllerImports = [];
254
313
  if (methods.includes("GET"))
@@ -284,15 +343,18 @@ function generateHandler(pascalName, camelName, lowerName, methods) {
284
343
  lines.push("/**", ` * Handler for POST /api/${lowerName}`, " */", `export async function create${pascalName}Handler(req: Request, res: Response): Promise<void> {`, " await sendResponse(", " req,", " res,", ` () => validate${pascalName}Create(req.body),`, ` (validData) => create${pascalName}(validData)`, " );", "}", "");
285
344
  }
286
345
  if (methods.some((m) => ["PUT", "PATCH"].includes(m))) {
287
- lines.push("/**", ` * Handler for PUT/PATCH /api/${lowerName}/:id`, " */", `export async function update${pascalName}Handler(req: Request, res: Response): Promise<void> {`, " // First validate params", ` const paramsResult = await validate${pascalName}Id(req.params);`, " if (!paramsResult.isValid) {", " res.status(400).json({", " success: false,", " message: 'Invalid params',", " errors: paramsResult.errors", " });", " return;", " }", "", " // Then validate body and execute", " await sendResponse(", " req,", " res,", ` () => validate${pascalName}Update(req.body),`, ` (validData) => update${pascalName}(paramsResult.data!, validData)`, " );", "}", "");
346
+ lines.push("/**", ` * Handler for PUT/PATCH /api/${lowerName}/:id`, " */", `export async function update${pascalName}Handler(req: Request, res: Response): Promise<void> {`, " // First validate params", ` const paramsResult = await validate${pascalName}Id(req.params);`, " if (!paramsResult.isValid) {", " res.status(422).json({", " success: false,", " message: 'Validation failed',", " error: 'VALIDATION_ERROR',", " details: paramsResult.errors", " });", " return;", " }", "", " // Then validate body and execute", " await sendResponse(", " req,", " res,", ` () => validate${pascalName}Update(req.body),`, ` (validData) => update${pascalName}(paramsResult.data!, validData)`, " );", "}", "");
288
347
  }
289
348
  if (methods.includes("DELETE")) {
290
349
  lines.push("/**", ` * Handler for DELETE /api/${lowerName}/:id`, " */", `export async function delete${pascalName}Handler(req: Request, res: Response): Promise<void> {`, " await sendResponse(", " req,", " res,", ` () => validate${pascalName}Id(req.params),`, ` (validData) => delete${pascalName}(validData)`, " );", "}", "");
291
350
  }
292
351
  return lines.join("\n");
293
352
  }
294
- function generateRoutes(pascalName, camelName, lowerName, methods, addAuth) {
353
+ function generateRoutes(pascalName, camelName, lowerName, routePath, methods, addAuth, addLimiter, resource) {
295
354
  const lines = ["import { Router } from 'express';"];
355
+ if (addLimiter) {
356
+ lines.push(`import { createEndpointLimiter } from '${getMiddlewareImportPath(resource)}';`);
357
+ }
296
358
  const handlerImports = [];
297
359
  if (methods.includes("GET"))
298
360
  handlerImports.push(`list${pascalName}sHandler`, `get${pascalName}Handler`);
@@ -306,32 +368,68 @@ function generateRoutes(pascalName, camelName, lowerName, methods, addAuth) {
306
368
  if (addAuth) {
307
369
  lines.push("// import { requireAuth } from '../../middleware/auth.middleware.js';");
308
370
  }
309
- lines.push("", "const router = Router();", "", "// ==================== ROUTES ====================", "");
371
+ lines.push("", "const router = Router();", ...(addLimiter
372
+ ? [
373
+ "const endpointLimiter = createEndpointLimiter({ windowMs: 15 * 60 * 1000, max: 60 });",
374
+ ]
375
+ : []), "", "// ==================== ROUTES ====================", "");
310
376
  const authMiddleware = addAuth ? "/* requireAuth, */ " : "";
377
+ const limiterMiddleware = addLimiter ? "endpointLimiter, " : "";
378
+ const routeMiddleware = `${limiterMiddleware}${authMiddleware}`;
311
379
  if (methods.includes("GET")) {
312
- lines.push("/**", ` * @route GET /api/${lowerName}`, ` * @desc List all ${lowerName}s`, " */", `router.get('/', ${authMiddleware}list${pascalName}sHandler);`, "", "/**", ` * @route GET /api/${lowerName}/:id`, ` * @desc Get ${lowerName} by ID`, " */", `router.get('/:id', ${authMiddleware}get${pascalName}Handler);`, "");
380
+ lines.push("/**", ` * @route GET /api/${routePath}`, ` * @desc List all ${lowerName}s`, " */", `router.get('/', ${routeMiddleware}list${pascalName}sHandler);`, "", "/**", ` * @route GET /api/${routePath}/:id`, ` * @desc Get ${lowerName} by ID`, " */", `router.get('/:id', ${routeMiddleware}get${pascalName}Handler);`, "");
313
381
  }
314
382
  if (methods.includes("POST")) {
315
- lines.push("/**", ` * @route POST /api/${lowerName}`, ` * @desc Create new ${lowerName}`, " */", `router.post('/', ${authMiddleware}create${pascalName}Handler);`, "");
383
+ lines.push("/**", ` * @route POST /api/${routePath}`, ` * @desc Create new ${lowerName}`, " */", `router.post('/', ${routeMiddleware}create${pascalName}Handler);`, "");
316
384
  }
317
385
  if (methods.includes("PUT")) {
318
- lines.push("/**", ` * @route PUT /api/${lowerName}/:id`, ` * @desc Update ${lowerName}`, " */", `router.put('/:id', ${authMiddleware}update${pascalName}Handler);`, "");
386
+ lines.push("/**", ` * @route PUT /api/${routePath}/:id`, ` * @desc Update ${lowerName}`, " */", `router.put('/:id', ${routeMiddleware}update${pascalName}Handler);`, "");
319
387
  }
320
388
  if (methods.includes("PATCH")) {
321
- lines.push("/**", ` * @route PATCH /api/${lowerName}/:id`, ` * @desc Partial update ${lowerName}`, " */", `router.patch('/:id', ${authMiddleware}update${pascalName}Handler);`, "");
389
+ lines.push("/**", ` * @route PATCH /api/${routePath}/:id`, ` * @desc Partial update ${lowerName}`, " */", `router.patch('/:id', ${routeMiddleware}update${pascalName}Handler);`, "");
322
390
  }
323
391
  if (methods.includes("DELETE")) {
324
- lines.push("/**", ` * @route DELETE /api/${lowerName}/:id`, ` * @desc Delete ${lowerName}`, " */", `router.delete('/:id', ${authMiddleware}delete${pascalName}Handler);`, "");
392
+ lines.push("/**", ` * @route DELETE /api/${routePath}/:id`, ` * @desc Delete ${lowerName}`, " */", `router.delete('/:id', ${routeMiddleware}delete${pascalName}Handler);`, "");
325
393
  }
326
394
  lines.push("export default router;");
327
395
  return lines.join("\n");
328
396
  }
329
- async function updateMainRouter(name) {
397
+ async function ensureRateLimitMiddlewareFile() {
398
+ const middlewarePath = path.join(process.cwd(), "src", "middleware", "rate-limit.middleware.ts");
399
+ if (fileExists(middlewarePath)) {
400
+ return;
401
+ }
402
+ const middlewareContent = `import { rateLimit } from 'express-rate-limit';
403
+
404
+ export interface EndpointLimiterOptions {
405
+ windowMs?: number;
406
+ max?: number;
407
+ }
408
+
409
+ export function createEndpointLimiter(options: EndpointLimiterOptions = {}) {
410
+ const windowMs = options.windowMs ?? 15 * 60 * 1000;
411
+ const max = options.max ?? 60;
412
+
413
+ return rateLimit({
414
+ windowMs,
415
+ max,
416
+ standardHeaders: true,
417
+ legacyHeaders: false,
418
+ message: {
419
+ success: false,
420
+ message: 'Too many requests, please try again later.',
421
+ error: 'RATE_LIMIT_EXCEEDED'
422
+ }
423
+ });
424
+ }
425
+ `;
426
+ await writeFile(middlewarePath, middlewareContent);
427
+ }
428
+ async function updateMainRouter(resource) {
330
429
  const routerPath = path.join(process.cwd(), "src", "api", "routes.ts");
331
- const lowerName = name.toLowerCase();
332
430
  try {
333
431
  let content = await fs.readFile(routerPath, "utf-8");
334
- const importLine = `import ${lowerName}Router from './${lowerName}/${lowerName}.routes.js';`;
432
+ const importLine = `import ${resource.routerIdentifier} from '${resource.importPath}';`;
335
433
  if (!content.includes(importLine)) {
336
434
  const importRegex = /^import\s+.+from\s+.+;$/gm;
337
435
  let lastImportMatch = null;
@@ -348,7 +446,7 @@ async function updateMainRouter(name) {
348
446
  content.slice(insertPos);
349
447
  }
350
448
  }
351
- const useLine = `router.use('/${lowerName}', ${lowerName}Router);`;
449
+ const useLine = `router.use('/${resource.routePath}', ${resource.routerIdentifier});`;
352
450
  if (!content.includes(useLine)) {
353
451
  const exportIndex = content.indexOf("export default router");
354
452
  if (exportIndex !== -1) {
@@ -364,4 +462,13 @@ async function updateMainRouter(name) {
364
462
  catch (err) {
365
463
  }
366
464
  }
465
+ export const __crudTestUtils = {
466
+ resolveResourceNaming,
467
+ generateValidator,
468
+ generateController,
469
+ generateHandler,
470
+ generateRoutes,
471
+ getSharedImportPath,
472
+ getMiddlewareImportPath,
473
+ };
367
474
  //# sourceMappingURL=generate-crud.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-crud.js","sourceRoot":"","sources":["../../src/commands/generate-crud.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQxD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAoB,EACpB,UAA+B,EAAE;IAEjC,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IAG3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAGD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC7C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC3D,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE;aACrD;YACD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,eAAe,GAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAErE,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;oBAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;oBACvD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC3D,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;oBAClE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;iBACpD;gBACD,QAAQ,EAAE,CAAC,KAAe,EAAE,EAAE;oBAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,qCAAqC,CAAC;oBAC/C,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QACH,eAAe,GAAG,OAAO,CAAC;IAC5B,CAAC;IAGD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACxC;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK;SAChC;KACF,CAAC,CAAC;IAGH,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,OAAO,YAAY,EAAE,CAAC;QACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC1C;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,qCAAqC;gBAC9C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,KAAK,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrD,OAAO,uCAAuC,CAAC;oBACjD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,YAAY,GAAG,KAAK,CAAC;YACrB,MAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,aAAa,SAAS,IAAI;gBACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;aAC1D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,SAAS,KAAK,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,iDAAiD,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxE,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAE5C,OAAO,CAAC,iBAAiB,YAAY,2BAA2B,CAAC,CAAC;QAElE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzB,IAAI,CACF,aAAa,YAAY,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,eAAe,CACrF,CAAC;QACF,IAAI,CACF,aAAa,YAAY,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,gBAAgB,CACtF,CAAC;QACF,IAAI,CACF,aAAa,YAAY,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,aAAa,CACnF,CAAC;QACF,IAAI,CACF,aAAa,YAAY,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,YAAY,CAClF,CAAC;QACF,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEvC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7B,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,iBAAiB,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;gBACnE,IAAI,CAAC,iBAAiB,YAAY,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAClD,IAAI,CACF,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,EAAE,eAAe,CACxE,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,iBAAiB,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,oDAAoD,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,IAAY,EACZ,OAAqB,EACrB,MAAqB,EACrB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAGrC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,eAAe,CAAC,EAChD,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAC1D,CAAC;IAEF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,gBAAgB,CAAC,EACjD,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAC3D,CAAC;IAEF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,aAAa,CAAC,EAC9C,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAC3D,CAAC;IAEF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,YAAY,CAAC,EAC7C,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CACnE,CAAC;IAGF,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAkB,EAClB,SAAiB,EACjB,OAAqB,EACrB,MAAqB;IAErB,MAAM,KAAK,GAAa;QACtB,6CAA6C;QAC7C,+EAA+E;QAC/E,EAAE;QACF,sDAAsD;QACtD,EAAE;KACH,CAAC;IAGF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,KAAK,CAAC,IAAI,CACR,KAAK,EACL,iBAAiB,SAAS,YAAY,EACtC,KAAK,EACL,gBAAgB,SAAS,uBAAuB,EAChD,+BAA+B,EAC/B,KAAK,EACL,EAAE,EACF,eAAe,UAAU,gCAAgC,SAAS,YAAY,EAC9E,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,iBAAiB,SAAS,sBAAsB,EAChD,KAAK,EACL,gBAAgB,SAAS,0BAA0B,EACnD,gCAAgC,EAChC,iCAAiC,EACjC,iCAAiC,EACjC,KAAK,EACL,EAAE,EACF,eAAe,UAAU,6BAA6B,SAAS,eAAe,EAC9E,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,0BAA0B,SAAS,EAAE,EACrC,KAAK,EACL,sBAAsB,UAAU,qBAAqB,CACtD,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,MAAM,GACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,MAAM,IAAI,aAAa,CAAC;YAC7C,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CACR,KAAK,EACL,EAAE,EACF,qBAAqB,UAAU,kCAAkC,UAAU,UAAU,EACrF,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,KAAK,EACL,0BAA0B,SAAS,EAAE,EACrC,KAAK,EACL,sBAAsB,UAAU,qBAAqB,CACtD,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,KAAK,OAAO;gBACpB,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,eAAe,CAAC;YACrC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CACR,KAAK,EACL,EAAE,EACF,qBAAqB,UAAU,kCAAkC,UAAU,UAAU,EACrF,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,IAAI,CAAC,yDAAyD,EAAE,EAAE,CAAC,CAAC;IAE1E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,KAAK,CAAC,IAAI,CACR,iCAAiC,UAAU,+CAA+C,UAAU,cAAc,EAClH,2BAA2B,UAAU,aAAa,SAAS,kBAAkB,EAC7E,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,iCAAiC,UAAU,kDAAkD,UAAU,WAAW,EAClH,2BAA2B,UAAU,UAAU,SAAS,qBAAqB,EAC7E,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,iCAAiC,UAAU,yDAAyD,UAAU,UAAU,EACxH,iCAAiC,UAAU,eAAe,UAAU,gBAAgB,EACpF,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,iCAAiC,UAAU,yDAAyD,UAAU,UAAU,EACxH,iCAAiC,UAAU,eAAe,UAAU,gBAAgB,EACpF,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkB,EAClB,SAAiB,EACjB,OAAqB,EACrB,MAAqB;IAErB,MAAM,KAAK,GAAa;QACtB,uGAAuG;KACxG,CAAC;IAGF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,OAAO,EAAE,GAAG,UAAU,UAAU,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,MAAM,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,UAAU,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,UAAU,CAAC,EAAE,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,SAAS,iBAAiB,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,0DAA0D,EAC1D,EAAE,CACH,CAAC;IAGF,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,eAAe,SAAS,GAAG,EAC3B,KAAK,EACL,6BAA6B,UAAU,YAAY,UAAU,4CAA4C,EACzG,SAAS,EACT,uCAAuC,EACvC,iBAAiB,UAAU,OAAO,EAClC,oBAAoB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,yCAAyC,EACtH,oBAAoB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,wCAAwC,EACrH,QAAQ,EACR,EAAE,EACF,mCAAmC,UAAU,qBAAqB,UAAU,KAAK,EACjF,qBAAqB,EACrB,gDAAgD,SAAS,qEAAqE,EAC9H,KAAK,EACL,GAAG,EACH,EAAE,CACH,CAAC;QAGF,KAAK,CAAC,IAAI,CACR,KAAK,EACL,UAAU,SAAS,QAAQ,EAC3B,KAAK,EACL,4BAA4B,UAAU,YAAY,UAAU,6CAA6C,EACzG,SAAS,EACT,uCAAuC,EACvC,iBAAiB,UAAU,uBAAuB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,yCAAyC,EAClJ,EAAE,EACF,mCAAmC,UAAU,oBAAoB,UAAU,IAAI,EAC/E,qBAAqB,EACrB,+CAA+C,SAAS,oEAAoE,EAC5H,KAAK,EACL,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,aAAa,SAAS,EAAE,EACxB,KAAK,EACL,+BAA+B,UAAU,gBAAgB,UAAU,yCAAyC,EAC5G,SAAS,EACT,2CAA2C,EAC3C,gBAAgB,UAAU,mGAAmG,EAC7H,EAAE,EACF,mCAAmC,UAAU,iBAAiB,UAAU,oBAAoB,EAC5F,qBAAqB,EACrB,kDAAkD,SAAS,oEAAoE,EAC/H,KAAK,EACL,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,KAAK,EACL,aAAa,SAAS,EAAE,EACxB,KAAK,EACL,+BAA+B,UAAU,YAAY,UAAU,yBAAyB,UAAU,yCAAyC,EAC3I,SAAS,EACT,wCAAwC,EACxC,oBAAoB,UAAU,qEAAqE,EACnG,EAAE,EACF,mCAAmC,UAAU,qBAAqB,UAAU,IAAI,EAChF,qBAAqB,EACrB,kDAAkD,SAAS,oEAAoE,EAC/H,KAAK,EACL,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,aAAa,SAAS,EAAE,EACxB,KAAK,EACL,+BAA+B,UAAU,YAAY,UAAU,8CAA8C,EAC7G,SAAS,EACT,0CAA0C,EAC1C,EAAE,EACF,mCAAmC,UAAU,aAAa,EAC1D,qBAAqB,EACrB,kDAAkD,SAAS,oEAAoE,EAC/H,KAAK,EACL,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CACtB,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,OAAqB;IAErB,MAAM,KAAK,GAAa;QACtB,8CAA8C;QAC9C,2DAA2D;KAC5D,CAAC;IAGF,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC,OAAO,UAAU,GAAG,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,iBAAiB,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAE9E,KAAK,CAAC,IAAI,CACR,YAAY,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,SAAS,kBAAkB,CAClF,CAAC;IAGF,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,gBAAgB,CAAC,IAAI,CACnB,WAAW,UAAU,OAAO,EAC5B,WAAW,UAAU,IAAI,CAC1B,CAAC;IACJ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC,WAAW,UAAU,QAAQ,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,gBAAgB,CAAC,IAAI,CAAC,WAAW,UAAU,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,UAAU,IAAI,CAAC;YACvD,gBAAgB,CAAC,IAAI,CAAC,WAAW,UAAU,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IACE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,UAAU,IAAI,CAAC,EACrD,CAAC;QACD,gBAAgB,CAAC,IAAI,CAAC,WAAW,UAAU,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,YAAY,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,SAAS,iBAAiB,CAChF,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uDAAuD,EAAE,EAAE,CAAC,CAAC;IAG5E,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,2BAA2B,SAAS,EAAE,EACtC,KAAK,EACL,6BAA6B,UAAU,wDAAwD,EAC/F,uBAAuB,EACvB,UAAU,EACV,UAAU,EACV,qBAAqB,UAAU,mBAAmB,EAClD,0BAA0B,UAAU,cAAc,EAClD,MAAM,EACN,GAAG,EACH,EAAE,CACH,CAAC;QAGF,KAAK,CAAC,IAAI,CACR,KAAK,EACL,2BAA2B,SAAS,MAAM,EAC1C,KAAK,EACL,4BAA4B,UAAU,uDAAuD,EAC7F,uBAAuB,EACvB,UAAU,EACV,UAAU,EACV,qBAAqB,UAAU,iBAAiB,EAChD,yBAAyB,UAAU,aAAa,EAChD,MAAM,EACN,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,4BAA4B,SAAS,EAAE,EACvC,KAAK,EACL,+BAA+B,UAAU,uDAAuD,EAChG,uBAAuB,EACvB,UAAU,EACV,UAAU,EACV,qBAAqB,UAAU,mBAAmB,EAClD,4BAA4B,UAAU,aAAa,EACnD,MAAM,EACN,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,KAAK,EACL,iCAAiC,SAAS,MAAM,EAChD,KAAK,EACL,+BAA+B,UAAU,uDAAuD,EAChG,4BAA4B,EAC5B,wCAAwC,UAAU,iBAAiB,EACnE,gCAAgC,EAChC,4BAA4B,EAC5B,uBAAuB,EACvB,kCAAkC,EAClC,mCAAmC,EACnC,SAAS,EACT,aAAa,EACb,KAAK,EACL,EAAE,EACF,qCAAqC,EACrC,uBAAuB,EACvB,UAAU,EACV,UAAU,EACV,qBAAqB,UAAU,mBAAmB,EAClD,4BAA4B,UAAU,iCAAiC,EACvE,MAAM,EACN,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,8BAA8B,SAAS,MAAM,EAC7C,KAAK,EACL,+BAA+B,UAAU,uDAAuD,EAChG,uBAAuB,EACvB,UAAU,EACV,UAAU,EACV,qBAAqB,UAAU,iBAAiB,EAChD,4BAA4B,UAAU,aAAa,EACnD,MAAM,EACN,GAAG,EACH,EAAE,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CACrB,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,OAAqB,EACrB,OAAgB;IAEhB,MAAM,KAAK,GAAa,CAAC,mCAAmC,CAAC,CAAC;IAG9D,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,OAAO,UAAU,UAAU,EAAE,MAAM,UAAU,SAAS,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,SAAS,UAAU,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,SAAS,UAAU,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5B,cAAc,CAAC,IAAI,CAAC,SAAS,UAAU,SAAS,CAAC,CAAC;IAEpD,KAAK,CAAC,IAAI,CACR,YAAY,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,SAAS,eAAe,CAC5E,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CACR,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,0BAA0B,EAC1B,EAAE,EACF,qDAAqD,EACrD,EAAE,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IAG5D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,sBAAsB,SAAS,EAAE,EACjC,qBAAqB,SAAS,GAAG,EACjC,KAAK,EACL,mBAAmB,cAAc,OAAO,UAAU,YAAY,EAC9D,EAAE,EACF,KAAK,EACL,sBAAsB,SAAS,MAAM,EACrC,gBAAgB,SAAS,QAAQ,EACjC,KAAK,EACL,sBAAsB,cAAc,MAAM,UAAU,WAAW,EAC/D,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,uBAAuB,SAAS,EAAE,EAClC,uBAAuB,SAAS,EAAE,EAClC,KAAK,EACL,oBAAoB,cAAc,SAAS,UAAU,WAAW,EAChE,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,sBAAsB,SAAS,MAAM,EACrC,mBAAmB,SAAS,EAAE,EAC9B,KAAK,EACL,sBAAsB,cAAc,SAAS,UAAU,WAAW,EAClE,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,wBAAwB,SAAS,MAAM,EACvC,2BAA2B,SAAS,EAAE,EACtC,KAAK,EACL,wBAAwB,cAAc,SAAS,UAAU,WAAW,EACpE,EAAE,CACH,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,KAAK,EACL,yBAAyB,SAAS,MAAM,EACxC,mBAAmB,SAAS,EAAE,EAC9B,KAAK,EACL,yBAAyB,cAAc,SAAS,UAAU,WAAW,EACrE,EAAE,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAGrD,MAAM,UAAU,GAAG,UAAU,SAAS,kBAAkB,SAAS,IAAI,SAAS,cAAc,CAAC;QAC7F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAElC,MAAM,WAAW,GAAG,2BAA2B,CAAC;YAChD,IAAI,eAAe,GAA2B,IAAI,CAAC;YACnD,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,eAAe,GAAG,KAAK,CAAC;YAC1B,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpE,OAAO;oBACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;wBAC3B,IAAI;wBACJ,UAAU;wBACV,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAGD,MAAM,OAAO,GAAG,gBAAgB,SAAS,MAAM,SAAS,UAAU,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAC7D,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;wBAC7B,OAAO;wBACP,MAAM;wBACN,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;IAEf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"generate-crud.js","sourceRoot":"","sources":["../../src/commands/generate-crud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ type SupportedDatabase = "postgresql" | "mysql" | "mongodb";
2
+ type IdType = "string" | "number";
3
+ interface GenerateRepositoryOptions {
4
+ database?: SupportedDatabase;
5
+ table?: string;
6
+ collection?: string;
7
+ dbName?: string;
8
+ idType?: IdType;
9
+ }
10
+ interface ResourceNaming {
11
+ segments: string[];
12
+ basePath: string;
13
+ lowerName: string;
14
+ camelName: string;
15
+ pascalName: string;
16
+ relativePath: string;
17
+ }
18
+ declare function resolveResourceNaming(input: string): ResourceNaming;
19
+ declare function detectDatabaseFromPackageJson(pkg: Record<string, unknown>): SupportedDatabase | null;
20
+ declare function generateSqlRepositoryTemplate(config: {
21
+ pascalName: string;
22
+ idType: IdType;
23
+ tableName: string;
24
+ dbName: string;
25
+ isPostgres: boolean;
26
+ }): string;
27
+ declare function generateMongoRepositoryTemplate(config: {
28
+ pascalName: string;
29
+ idType: IdType;
30
+ collectionName: string;
31
+ dbName: string;
32
+ mongoDatabaseName: string;
33
+ }): string;
34
+ export declare function generateRepositoryCommand(name: string, options?: GenerateRepositoryOptions): Promise<void>;
35
+ export declare const __repositoryTestUtils: {
36
+ resolveResourceNaming: typeof resolveResourceNaming;
37
+ detectDatabaseFromPackageJson: typeof detectDatabaseFromPackageJson;
38
+ generateSqlRepositoryTemplate: typeof generateSqlRepositoryTemplate;
39
+ generateMongoRepositoryTemplate: typeof generateMongoRepositoryTemplate;
40
+ };
41
+ export {};
42
+ //# sourceMappingURL=generate-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-repository.d.ts","sourceRoot":"","sources":["../../src/commands/generate-repository.ts"],"names":[],"mappings":"AAaA,KAAK,iBAAiB,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,KAAK,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElC,UAAU,yBAAyB;IACjC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAqB5D;AAED,iBAAS,6BAA6B,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,GAAG,IAAI,CAY1B;AAED,iBAAS,6BAA6B,CAAC,MAAM,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,MAAM,CAwLT;AAED,iBAAS,+BAA+B,CAAC,MAAM,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAqHT;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,yBAA8B,iBAuIxC;AAED,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAC"}