simpledi-app-generator 0.0.6 → 0.0.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"create_module.d.ts","sourceRoot":"","sources":["../src/create_module.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuajE"}
1
+ {"version":3,"file":"create_module.d.ts","sourceRoot":"","sources":["../src/create_module.ts"],"names":[],"mappings":"AAaA,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ajE"}
@@ -2,6 +2,7 @@ import { mkdir, writeFile, readFile } from 'fs/promises';
2
2
  import { join, resolve } from 'path';
3
3
  import { existsSync } from 'fs';
4
4
  import { toPascalCase, toCamelCase, toKebabCase, toSnakeCase, toUpperSnakeCase, pluralize, } from './lib/stringUtils.js';
5
+ import { generateCrudUseCases } from './generate_crud_use_cases.js';
5
6
  export async function createModule(rawName) {
6
7
  if (!rawName) {
7
8
  throw new Error('Entity name is required');
@@ -403,5 +404,7 @@ describe('${EntityName}Repository', () => {
403
404
  console.warn('Warning: src/core/CoreModule.ts not found');
404
405
  }
405
406
  console.log('\n✅ Module generation complete!');
407
+ // Generate CRUD use cases
408
+ await generateCrudUseCases(EntityName, entityName, kebabName, srcDir);
406
409
  }
407
410
  //# sourceMappingURL=create_module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create_module.js","sourceRoot":"","sources":["../src/create_module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_module.js","sourceRoot":"","sources":["../src/create_module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function generateCrudUseCases(EntityName: string, entityName: string, kebabName: string, srcDir: string): Promise<void>;
2
+ //# sourceMappingURL=generate_crud_use_cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_crud_use_cases.d.ts","sourceRoot":"","sources":["../src/generate_crud_use_cases.ts"],"names":[],"mappings":"AAoBA,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,709 @@
1
+ import { mkdir, writeFile, readFile } from 'fs/promises';
2
+ import { join, resolve } from 'path';
3
+ import { existsSync } from 'fs';
4
+ import { toPascalCase, toCamelCase, toKebabCase, toUpperSnakeCase, pluralize, } from './lib/stringUtils.js';
5
+ export async function generateCrudUseCases(EntityName, entityName, kebabName, srcDir) {
6
+ const TOKEN_BASE = toUpperSnakeCase(entityName);
7
+ const pluralKebab = pluralize(kebabName);
8
+ const pluralPascal = toPascalCase(pluralKebab);
9
+ const config = {
10
+ EntityName,
11
+ entityName,
12
+ kebabName,
13
+ TOKEN_BASE,
14
+ pluralKebab,
15
+ pluralPascal,
16
+ };
17
+ const useCaseBaseDir = resolve(srcDir, 'use-case', kebabName);
18
+ await mkdir(useCaseBaseDir, { recursive: true });
19
+ // Generate each CRUD use case
20
+ await generateCreateUseCase(useCaseBaseDir, config);
21
+ await generateUpdateUseCase(useCaseBaseDir, config);
22
+ await generateGetUseCase(useCaseBaseDir, config);
23
+ await generateListUseCase(useCaseBaseDir, config);
24
+ await generateDeleteUseCase(useCaseBaseDir, config);
25
+ // Generate aggregator module
26
+ await generateUseCaseAggregatorModule(useCaseBaseDir, config);
27
+ // Auto-register in UseCaseModule.ts and main.routes.ts
28
+ await registerInUseCaseModule(srcDir, config);
29
+ await registerRoutes(srcDir, config);
30
+ console.log(`\n✅ CRUD use cases generated for ${EntityName}!`);
31
+ }
32
+ // ============ CREATE USE CASE ============
33
+ async function generateCreateUseCase(baseDir, config) {
34
+ const { EntityName, entityName, kebabName, TOKEN_BASE } = config;
35
+ const useCaseName = `Create${EntityName}`;
36
+ const useCaseDir = join(baseDir, `create-${kebabName}`);
37
+ const inputsDir = join(useCaseDir, 'inputs');
38
+ const outputsDir = join(useCaseDir, 'outputs');
39
+ await mkdir(useCaseDir, { recursive: true });
40
+ await mkdir(inputsDir, { recursive: true });
41
+ await mkdir(outputsDir, { recursive: true });
42
+ // Input
43
+ const inputContent = `import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
44
+
45
+ export type ${useCaseName}Input = Omit<${EntityName}Interface, 'id' | 'createdAt' | 'updatedAt' | 'deleted' | 'deletedAt'>;
46
+ `;
47
+ // Success Output
48
+ const successContent = `import { SuccessfullOperation } from '@root/lib';
49
+ import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
50
+
51
+ export type ${useCaseName}Payload = ${EntityName}Interface;
52
+
53
+ export class ${useCaseName}Success extends SuccessfullOperation {
54
+ constructor(
55
+ result: ${useCaseName}Payload,
56
+ message: string = '${EntityName} created successfully',
57
+ ) {
58
+ super(message);
59
+ this.result = result;
60
+ }
61
+ }
62
+ `;
63
+ // Failure Output
64
+ const failureContent = `import { FailedOperation } from '@root/lib';
65
+
66
+ export class ${useCaseName}Failure extends FailedOperation {
67
+ constructor(message: string = 'Failed to create ${EntityName}') {
68
+ super(message);
69
+ }
70
+ }
71
+ `;
72
+ // Use Case
73
+ const useCaseContent = `import { Inject, Module, Service } from '@kanian77/simple-di';
74
+ import { ${useCaseName}Success, type ${useCaseName}Payload } from './outputs/${useCaseName}Success';
75
+ import type { IUseCase } from '../../IUseCase';
76
+ import type { ${useCaseName}Input } from './inputs/${useCaseName}Input';
77
+ import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
78
+ import { ${TOKEN_BASE}_SERVICE_INTERFACE, type I${EntityName}Service } from '@root/core/${kebabName}/I${EntityName}Service';
79
+
80
+ export const ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN = '${toUpperSnakeCase(useCaseName)}_USE_CASE';
81
+
82
+ @Service({
83
+ token: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
84
+ lifecycle: 'transient',
85
+ })
86
+ export class ${useCaseName} implements IUseCase {
87
+ constructor(
88
+ @Inject(${TOKEN_BASE}_SERVICE_INTERFACE)
89
+ private readonly ${entityName}Service: I${EntityName}Service,
90
+ ) {}
91
+
92
+ async execute(input: ${useCaseName}Input): Promise<${useCaseName}Success> {
93
+ const created = await this.${entityName}Service.create(input);
94
+ return new ${useCaseName}Success(created as ${useCaseName}Payload);
95
+ }
96
+ }
97
+
98
+ export const ${useCaseName}Module = new Module({
99
+ imports: [${EntityName}Module],
100
+ providers: [
101
+ {
102
+ provide: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
103
+ useClass: ${useCaseName},
104
+ },
105
+ ],
106
+ });
107
+ `;
108
+ // Routes
109
+ const routesContent = `import { Hono } from 'hono';
110
+ import { StatusCodes } from 'http-status-codes';
111
+ import { inject } from '@kanian77/simple-di';
112
+ import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
113
+ import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
114
+ import type { ${useCaseName}Input } from './inputs/${useCaseName}Input';
115
+
116
+ const ${toCamelCase(useCaseName)}Routes = new Hono();
117
+
118
+ ${toCamelCase(useCaseName)}Routes.post('/', async (c) => {
119
+ try {
120
+ const input = await c.req.json<${useCaseName}Input>();
121
+ const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
122
+ const result = await useCase.execute(input);
123
+ return c.json(result, StatusCodes.CREATED);
124
+ } catch (e) {
125
+ console.error('Error in ${toCamelCase(useCaseName)}Routes:', e);
126
+ return c.json(
127
+ new ${useCaseName}Failure('Internal Server Error'),
128
+ StatusCodes.INTERNAL_SERVER_ERROR,
129
+ );
130
+ }
131
+ });
132
+
133
+ const ${toCamelCase(useCaseName)}RoutesPath = '/';
134
+
135
+ export { ${toCamelCase(useCaseName)}Routes, ${toCamelCase(useCaseName)}RoutesPath };
136
+ `;
137
+ await writeFile(join(inputsDir, `${useCaseName}Input.ts`), inputContent);
138
+ await writeFile(join(outputsDir, `${useCaseName}Success.ts`), successContent);
139
+ await writeFile(join(outputsDir, `${useCaseName}Failure.ts`), failureContent);
140
+ await writeFile(join(useCaseDir, `${useCaseName}.ts`), useCaseContent);
141
+ await writeFile(join(useCaseDir, `${toCamelCase(useCaseName)}Routes.ts`), routesContent);
142
+ console.log(`Created: create-${kebabName}/ use case`);
143
+ }
144
+ // ============ UPDATE USE CASE ============
145
+ async function generateUpdateUseCase(baseDir, config) {
146
+ const { EntityName, entityName, kebabName, TOKEN_BASE } = config;
147
+ const useCaseName = `Update${EntityName}`;
148
+ const useCaseDir = join(baseDir, `update-${kebabName}`);
149
+ const inputsDir = join(useCaseDir, 'inputs');
150
+ const outputsDir = join(useCaseDir, 'outputs');
151
+ await mkdir(useCaseDir, { recursive: true });
152
+ await mkdir(inputsDir, { recursive: true });
153
+ await mkdir(outputsDir, { recursive: true });
154
+ // Input
155
+ const inputContent = `import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
156
+
157
+ export interface ${useCaseName}Input {
158
+ id: string;
159
+ data: Partial<Omit<${EntityName}Interface, 'id' | 'createdAt' | 'updatedAt'>>;
160
+ }
161
+ `;
162
+ // Success Output
163
+ const successContent = `import { SuccessfullOperation } from '@root/lib';
164
+ import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
165
+
166
+ export type ${useCaseName}Payload = ${EntityName}Interface;
167
+
168
+ export class ${useCaseName}Success extends SuccessfullOperation {
169
+ constructor(
170
+ result: ${useCaseName}Payload,
171
+ message: string = '${EntityName} updated successfully',
172
+ ) {
173
+ super(message);
174
+ this.result = result;
175
+ }
176
+ }
177
+ `;
178
+ // Failure Output
179
+ const failureContent = `import { FailedOperation } from '@root/lib';
180
+
181
+ export class ${useCaseName}Failure extends FailedOperation {
182
+ constructor(message: string = 'Failed to update ${EntityName}') {
183
+ super(message);
184
+ }
185
+ }
186
+ `;
187
+ // Use Case
188
+ const useCaseContent = `import { Inject, Module, Service } from '@kanian77/simple-di';
189
+ import { ${useCaseName}Success, type ${useCaseName}Payload } from './outputs/${useCaseName}Success';
190
+ import type { IUseCase } from '../../IUseCase';
191
+ import type { ${useCaseName}Input } from './inputs/${useCaseName}Input';
192
+ import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
193
+ import { ${TOKEN_BASE}_SERVICE_INTERFACE, type I${EntityName}Service } from '@root/core/${kebabName}/I${EntityName}Service';
194
+
195
+ export const ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN = '${toUpperSnakeCase(useCaseName)}_USE_CASE';
196
+
197
+ @Service({
198
+ token: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
199
+ lifecycle: 'transient',
200
+ })
201
+ export class ${useCaseName} implements IUseCase {
202
+ constructor(
203
+ @Inject(${TOKEN_BASE}_SERVICE_INTERFACE)
204
+ private readonly ${entityName}Service: I${EntityName}Service,
205
+ ) {}
206
+
207
+ async execute(input: ${useCaseName}Input): Promise<${useCaseName}Success> {
208
+ const updated = await this.${entityName}Service.update(input.id, input.data);
209
+ return new ${useCaseName}Success(updated as ${useCaseName}Payload);
210
+ }
211
+ }
212
+
213
+ export const ${useCaseName}Module = new Module({
214
+ imports: [${EntityName}Module],
215
+ providers: [
216
+ {
217
+ provide: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
218
+ useClass: ${useCaseName},
219
+ },
220
+ ],
221
+ });
222
+ `;
223
+ // Routes
224
+ const routesContent = `import { Hono } from 'hono';
225
+ import { StatusCodes } from 'http-status-codes';
226
+ import { inject } from '@kanian77/simple-di';
227
+ import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
228
+ import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
229
+ import type { ${useCaseName}Input } from './inputs/${useCaseName}Input';
230
+
231
+ const ${toCamelCase(useCaseName)}Routes = new Hono();
232
+
233
+ ${toCamelCase(useCaseName)}Routes.put('/:id', async (c) => {
234
+ try {
235
+ const id = c.req.param('id');
236
+ const data = await c.req.json();
237
+ const input: ${useCaseName}Input = { id, data };
238
+ const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
239
+ const result = await useCase.execute(input);
240
+ return c.json(result, StatusCodes.OK);
241
+ } catch (e) {
242
+ console.error('Error in ${toCamelCase(useCaseName)}Routes:', e);
243
+ return c.json(
244
+ new ${useCaseName}Failure('Internal Server Error'),
245
+ StatusCodes.INTERNAL_SERVER_ERROR,
246
+ );
247
+ }
248
+ });
249
+
250
+ const ${toCamelCase(useCaseName)}RoutesPath = '/';
251
+
252
+ export { ${toCamelCase(useCaseName)}Routes, ${toCamelCase(useCaseName)}RoutesPath };
253
+ `;
254
+ await writeFile(join(inputsDir, `${useCaseName}Input.ts`), inputContent);
255
+ await writeFile(join(outputsDir, `${useCaseName}Success.ts`), successContent);
256
+ await writeFile(join(outputsDir, `${useCaseName}Failure.ts`), failureContent);
257
+ await writeFile(join(useCaseDir, `${useCaseName}.ts`), useCaseContent);
258
+ await writeFile(join(useCaseDir, `${toCamelCase(useCaseName)}Routes.ts`), routesContent);
259
+ console.log(`Created: update-${kebabName}/ use case`);
260
+ }
261
+ // ============ GET USE CASE ============
262
+ async function generateGetUseCase(baseDir, config) {
263
+ const { EntityName, entityName, kebabName, TOKEN_BASE } = config;
264
+ const useCaseName = `Get${EntityName}`;
265
+ const useCaseDir = join(baseDir, `get-${kebabName}`);
266
+ const outputsDir = join(useCaseDir, 'outputs');
267
+ await mkdir(useCaseDir, { recursive: true });
268
+ await mkdir(outputsDir, { recursive: true });
269
+ // Success Output
270
+ const successContent = `import { SuccessfullOperation } from '@root/lib';
271
+ import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
272
+
273
+ export type ${useCaseName}Payload = ${EntityName}Interface;
274
+
275
+ export class ${useCaseName}Success extends SuccessfullOperation {
276
+ constructor(
277
+ result: ${useCaseName}Payload,
278
+ message: string = '${EntityName} retrieved successfully',
279
+ ) {
280
+ super(message);
281
+ this.result = result;
282
+ }
283
+ }
284
+ `;
285
+ // Failure Output
286
+ const failureContent = `import { FailedOperation } from '@root/lib';
287
+
288
+ export class ${useCaseName}Failure extends FailedOperation {
289
+ constructor(message: string = 'Failed to get ${EntityName}') {
290
+ super(message);
291
+ }
292
+ }
293
+ `;
294
+ // Use Case
295
+ const useCaseContent = `import { Inject, Module, Service } from '@kanian77/simple-di';
296
+ import { ${useCaseName}Success, type ${useCaseName}Payload } from './outputs/${useCaseName}Success';
297
+ import type { IUseCase } from '../../IUseCase';
298
+ import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
299
+ import { ${TOKEN_BASE}_SERVICE_INTERFACE, type I${EntityName}Service } from '@root/core/${kebabName}/I${EntityName}Service';
300
+
301
+ export const ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN = '${toUpperSnakeCase(useCaseName)}_USE_CASE';
302
+
303
+ @Service({
304
+ token: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
305
+ lifecycle: 'transient',
306
+ })
307
+ export class ${useCaseName} implements IUseCase {
308
+ constructor(
309
+ @Inject(${TOKEN_BASE}_SERVICE_INTERFACE)
310
+ private readonly ${entityName}Service: I${EntityName}Service,
311
+ ) {}
312
+
313
+ async execute(id: string): Promise<${useCaseName}Success> {
314
+ const entity = await this.${entityName}Service.findById(id);
315
+ return new ${useCaseName}Success(entity as ${useCaseName}Payload);
316
+ }
317
+ }
318
+
319
+ export const ${useCaseName}Module = new Module({
320
+ imports: [${EntityName}Module],
321
+ providers: [
322
+ {
323
+ provide: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
324
+ useClass: ${useCaseName},
325
+ },
326
+ ],
327
+ });
328
+ `;
329
+ // Routes
330
+ const routesContent = `import { Hono } from 'hono';
331
+ import { StatusCodes } from 'http-status-codes';
332
+ import { inject } from '@kanian77/simple-di';
333
+ import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
334
+ import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
335
+
336
+ const ${toCamelCase(useCaseName)}Routes = new Hono();
337
+
338
+ ${toCamelCase(useCaseName)}Routes.get('/:id', async (c) => {
339
+ try {
340
+ const id = c.req.param('id');
341
+ const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
342
+ const result = await useCase.execute(id);
343
+ return c.json(result, StatusCodes.OK);
344
+ } catch (e) {
345
+ console.error('Error in ${toCamelCase(useCaseName)}Routes:', e);
346
+ return c.json(
347
+ new ${useCaseName}Failure('Internal Server Error'),
348
+ StatusCodes.INTERNAL_SERVER_ERROR,
349
+ );
350
+ }
351
+ });
352
+
353
+ const ${toCamelCase(useCaseName)}RoutesPath = '/';
354
+
355
+ export { ${toCamelCase(useCaseName)}Routes, ${toCamelCase(useCaseName)}RoutesPath };
356
+ `;
357
+ await writeFile(join(outputsDir, `${useCaseName}Success.ts`), successContent);
358
+ await writeFile(join(outputsDir, `${useCaseName}Failure.ts`), failureContent);
359
+ await writeFile(join(useCaseDir, `${useCaseName}.ts`), useCaseContent);
360
+ await writeFile(join(useCaseDir, `${toCamelCase(useCaseName)}Routes.ts`), routesContent);
361
+ console.log(`Created: get-${kebabName}/ use case`);
362
+ }
363
+ // ============ LIST USE CASE ============
364
+ async function generateListUseCase(baseDir, config) {
365
+ const { EntityName, entityName, kebabName, TOKEN_BASE, pluralPascal } = config;
366
+ const useCaseName = `List${pluralPascal}`;
367
+ const useCaseDir = join(baseDir, `list-${config.pluralKebab}`);
368
+ const outputsDir = join(useCaseDir, 'outputs');
369
+ await mkdir(useCaseDir, { recursive: true });
370
+ await mkdir(outputsDir, { recursive: true });
371
+ // Success Output
372
+ const successContent = `import { SuccessfullOperation } from '@root/lib';
373
+ import type { ${EntityName}Interface } from '@root/core/${kebabName}/baseZod${EntityName}Schema';
374
+
375
+ export type ${useCaseName}Payload = ${EntityName}Interface[];
376
+
377
+ export class ${useCaseName}Success extends SuccessfullOperation {
378
+ constructor(
379
+ result: ${useCaseName}Payload,
380
+ message: string = '${pluralPascal} retrieved successfully',
381
+ ) {
382
+ super(message);
383
+ this.result = result;
384
+ }
385
+ }
386
+ `;
387
+ // Failure Output
388
+ const failureContent = `import { FailedOperation } from '@root/lib';
389
+
390
+ export class ${useCaseName}Failure extends FailedOperation {
391
+ constructor(message: string = 'Failed to list ${pluralPascal}') {
392
+ super(message);
393
+ }
394
+ }
395
+ `;
396
+ // Use Case
397
+ const useCaseContent = `import { Inject, Module, Service } from '@kanian77/simple-di';
398
+ import { ${useCaseName}Success, type ${useCaseName}Payload } from './outputs/${useCaseName}Success';
399
+ import type { IUseCase } from '../../IUseCase';
400
+ import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
401
+ import { ${TOKEN_BASE}_SERVICE_INTERFACE, type I${EntityName}Service } from '@root/core/${kebabName}/I${EntityName}Service';
402
+
403
+ export const ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN = '${toUpperSnakeCase(useCaseName)}_USE_CASE';
404
+
405
+ @Service({
406
+ token: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
407
+ lifecycle: 'transient',
408
+ })
409
+ export class ${useCaseName} implements IUseCase {
410
+ constructor(
411
+ @Inject(${TOKEN_BASE}_SERVICE_INTERFACE)
412
+ private readonly ${entityName}Service: I${EntityName}Service,
413
+ ) {}
414
+
415
+ async execute(): Promise<${useCaseName}Success> {
416
+ const entities = await this.${entityName}Service.findAll();
417
+ return new ${useCaseName}Success(entities as ${useCaseName}Payload);
418
+ }
419
+ }
420
+
421
+ export const ${useCaseName}Module = new Module({
422
+ imports: [${EntityName}Module],
423
+ providers: [
424
+ {
425
+ provide: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
426
+ useClass: ${useCaseName},
427
+ },
428
+ ],
429
+ });
430
+ `;
431
+ // Routes
432
+ const routesContent = `import { Hono } from 'hono';
433
+ import { StatusCodes } from 'http-status-codes';
434
+ import { inject } from '@kanian77/simple-di';
435
+ import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
436
+ import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
437
+
438
+ const ${toCamelCase(useCaseName)}Routes = new Hono();
439
+
440
+ ${toCamelCase(useCaseName)}Routes.get('/', async (c) => {
441
+ try {
442
+ const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
443
+ const result = await useCase.execute();
444
+ return c.json(result, StatusCodes.OK);
445
+ } catch (e) {
446
+ console.error('Error in ${toCamelCase(useCaseName)}Routes:', e);
447
+ return c.json(
448
+ new ${useCaseName}Failure('Internal Server Error'),
449
+ StatusCodes.INTERNAL_SERVER_ERROR,
450
+ );
451
+ }
452
+ });
453
+
454
+ const ${toCamelCase(useCaseName)}RoutesPath = '/';
455
+
456
+ export { ${toCamelCase(useCaseName)}Routes, ${toCamelCase(useCaseName)}RoutesPath };
457
+ `;
458
+ await writeFile(join(outputsDir, `${useCaseName}Success.ts`), successContent);
459
+ await writeFile(join(outputsDir, `${useCaseName}Failure.ts`), failureContent);
460
+ await writeFile(join(useCaseDir, `${useCaseName}.ts`), useCaseContent);
461
+ await writeFile(join(useCaseDir, `${toCamelCase(useCaseName)}Routes.ts`), routesContent);
462
+ console.log(`Created: list-${config.pluralKebab}/ use case`);
463
+ }
464
+ // ============ DELETE USE CASE ============
465
+ async function generateDeleteUseCase(baseDir, config) {
466
+ const { EntityName, entityName, kebabName, TOKEN_BASE } = config;
467
+ const useCaseName = `Delete${EntityName}`;
468
+ const useCaseDir = join(baseDir, `delete-${kebabName}`);
469
+ const outputsDir = join(useCaseDir, 'outputs');
470
+ await mkdir(useCaseDir, { recursive: true });
471
+ await mkdir(outputsDir, { recursive: true });
472
+ // Success Output
473
+ const successContent = `import { SuccessfullOperation } from '@root/lib';
474
+
475
+ export type ${useCaseName}Payload = { id: string; deleted: boolean };
476
+
477
+ export class ${useCaseName}Success extends SuccessfullOperation {
478
+ constructor(
479
+ result: ${useCaseName}Payload,
480
+ message: string = '${EntityName} deleted successfully',
481
+ ) {
482
+ super(message);
483
+ this.result = result;
484
+ }
485
+ }
486
+ `;
487
+ // Failure Output
488
+ const failureContent = `import { FailedOperation } from '@root/lib';
489
+
490
+ export class ${useCaseName}Failure extends FailedOperation {
491
+ constructor(message: string = 'Failed to delete ${EntityName}') {
492
+ super(message);
493
+ }
494
+ }
495
+ `;
496
+ // Use Case
497
+ const useCaseContent = `import { Inject, Module, Service } from '@kanian77/simple-di';
498
+ import { ${useCaseName}Success, type ${useCaseName}Payload } from './outputs/${useCaseName}Success';
499
+ import type { IUseCase } from '../../IUseCase';
500
+ import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
501
+ import { ${TOKEN_BASE}_SERVICE_INTERFACE, type I${EntityName}Service } from '@root/core/${kebabName}/I${EntityName}Service';
502
+
503
+ export const ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN = '${toUpperSnakeCase(useCaseName)}_USE_CASE';
504
+
505
+ @Service({
506
+ token: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
507
+ lifecycle: 'transient',
508
+ })
509
+ export class ${useCaseName} implements IUseCase {
510
+ constructor(
511
+ @Inject(${TOKEN_BASE}_SERVICE_INTERFACE)
512
+ private readonly ${entityName}Service: I${EntityName}Service,
513
+ ) {}
514
+
515
+ async execute(id: string): Promise<${useCaseName}Success> {
516
+ await this.${entityName}Service.delete(id);
517
+ const result: ${useCaseName}Payload = { id, deleted: true };
518
+ return new ${useCaseName}Success(result);
519
+ }
520
+ }
521
+
522
+ export const ${useCaseName}Module = new Module({
523
+ imports: [${EntityName}Module],
524
+ providers: [
525
+ {
526
+ provide: ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN,
527
+ useClass: ${useCaseName},
528
+ },
529
+ ],
530
+ });
531
+ `;
532
+ // Routes
533
+ const routesContent = `import { Hono } from 'hono';
534
+ import { StatusCodes } from 'http-status-codes';
535
+ import { inject } from '@kanian77/simple-di';
536
+ import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
537
+ import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
538
+
539
+ const ${toCamelCase(useCaseName)}Routes = new Hono();
540
+
541
+ ${toCamelCase(useCaseName)}Routes.delete('/:id', async (c) => {
542
+ try {
543
+ const id = c.req.param('id');
544
+ const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
545
+ const result = await useCase.execute(id);
546
+ return c.json(result, StatusCodes.OK);
547
+ } catch (e) {
548
+ console.error('Error in ${toCamelCase(useCaseName)}Routes:', e);
549
+ return c.json(
550
+ new ${useCaseName}Failure('Internal Server Error'),
551
+ StatusCodes.INTERNAL_SERVER_ERROR,
552
+ );
553
+ }
554
+ });
555
+
556
+ const ${toCamelCase(useCaseName)}RoutesPath = '/';
557
+
558
+ export { ${toCamelCase(useCaseName)}Routes, ${toCamelCase(useCaseName)}RoutesPath };
559
+ `;
560
+ await writeFile(join(outputsDir, `${useCaseName}Success.ts`), successContent);
561
+ await writeFile(join(outputsDir, `${useCaseName}Failure.ts`), failureContent);
562
+ await writeFile(join(useCaseDir, `${useCaseName}.ts`), useCaseContent);
563
+ await writeFile(join(useCaseDir, `${toCamelCase(useCaseName)}Routes.ts`), routesContent);
564
+ console.log(`Created: delete-${kebabName}/ use case`);
565
+ }
566
+ // ============ AGGREGATOR MODULE ============
567
+ async function generateUseCaseAggregatorModule(baseDir, config) {
568
+ const { EntityName, kebabName, pluralPascal, pluralKebab } = config;
569
+ const content = `import { Module } from '@kanian77/simple-di';
570
+ import { Create${EntityName}Module } from './create-${kebabName}/Create${EntityName}';
571
+ import { Update${EntityName}Module } from './update-${kebabName}/Update${EntityName}';
572
+ import { Get${EntityName}Module } from './get-${kebabName}/Get${EntityName}';
573
+ import { List${pluralPascal}Module } from './list-${pluralKebab}/List${pluralPascal}';
574
+ import { Delete${EntityName}Module } from './delete-${kebabName}/Delete${EntityName}';
575
+
576
+ export const ${EntityName}UseCaseModule = new Module({
577
+ imports: [
578
+ Create${EntityName}Module,
579
+ Update${EntityName}Module,
580
+ Get${EntityName}Module,
581
+ List${pluralPascal}Module,
582
+ Delete${EntityName}Module,
583
+ ],
584
+ });
585
+ `;
586
+ await writeFile(join(baseDir, `${EntityName}UseCaseModule.ts`), content);
587
+ console.log(`Created: ${kebabName}/${EntityName}UseCaseModule.ts`);
588
+ }
589
+ // ============ REGISTER IN UseCaseModule.ts ============
590
+ async function registerInUseCaseModule(srcDir, config) {
591
+ const { EntityName, kebabName } = config;
592
+ const useCaseModulePath = join(srcDir, 'use-case', 'UseCaseModule.ts');
593
+ if (!existsSync(useCaseModulePath)) {
594
+ console.warn('Warning: src/use-case/UseCaseModule.ts not found');
595
+ return;
596
+ }
597
+ let content = await readFile(useCaseModulePath, 'utf8');
598
+ const importStatement = `import { ${EntityName}UseCaseModule } from './${kebabName}/${EntityName}UseCaseModule';`;
599
+ if (content.includes(`${EntityName}UseCaseModule`)) {
600
+ return; // Already registered
601
+ }
602
+ // Add import after last import
603
+ const lastImportIndex = content.lastIndexOf('import ');
604
+ if (lastImportIndex !== -1) {
605
+ const nextLineIndex = content.indexOf('\n', lastImportIndex);
606
+ content =
607
+ content.slice(0, nextLineIndex + 1) +
608
+ importStatement +
609
+ '\n' +
610
+ content.slice(nextLineIndex + 1);
611
+ }
612
+ else {
613
+ content = importStatement + '\n' + content;
614
+ }
615
+ // Add to imports array
616
+ const importsRegex = /imports:\s*\[/g;
617
+ const match = importsRegex.exec(content);
618
+ if (match) {
619
+ const arrayStart = match.index + match[0].length;
620
+ let depth = 1;
621
+ let endIndex = -1;
622
+ for (let i = arrayStart; i < content.length; i++) {
623
+ if (content[i] === '[')
624
+ depth++;
625
+ if (content[i] === ']')
626
+ depth--;
627
+ if (depth === 0) {
628
+ endIndex = i;
629
+ break;
630
+ }
631
+ }
632
+ if (endIndex !== -1) {
633
+ const arrayContent = content.slice(arrayStart, endIndex);
634
+ if (!arrayContent.includes(`${EntityName}UseCaseModule`)) {
635
+ const trimmed = arrayContent.trim();
636
+ const hasTrailingComma = trimmed.endsWith(',');
637
+ const separator = trimmed.length > 0 && !hasTrailingComma ? ', ' : '';
638
+ const insertion = `${separator}${EntityName}UseCaseModule`;
639
+ content =
640
+ content.slice(0, endIndex) + insertion + content.slice(endIndex);
641
+ }
642
+ }
643
+ }
644
+ await writeFile(useCaseModulePath, content);
645
+ console.log(`Updated: src/use-case/UseCaseModule.ts`);
646
+ }
647
+ // ============ REGISTER ROUTES ============
648
+ async function registerRoutes(srcDir, config) {
649
+ const { EntityName, entityName, kebabName, pluralPascal, pluralKebab } = config;
650
+ const mainRoutesPath = join(srcDir, 'main.routes.ts');
651
+ if (!existsSync(mainRoutesPath)) {
652
+ console.warn('Warning: src/main.routes.ts not found');
653
+ return;
654
+ }
655
+ let content = await readFile(mainRoutesPath, 'utf8');
656
+ // Import all route handlers
657
+ const routeImports = `import { create${EntityName}Routes } from './use-case/${kebabName}/create-${kebabName}/create${EntityName}Routes';
658
+ import { update${EntityName}Routes } from './use-case/${kebabName}/update-${kebabName}/update${EntityName}Routes';
659
+ import { get${EntityName}Routes } from './use-case/${kebabName}/get-${kebabName}/get${EntityName}Routes';
660
+ import { list${pluralPascal}Routes } from './use-case/${kebabName}/list-${pluralKebab}/list${pluralPascal}Routes';
661
+ import { delete${EntityName}Routes } from './use-case/${kebabName}/delete-${kebabName}/delete${EntityName}Routes';`;
662
+ if (content.includes(`create${EntityName}Routes`)) {
663
+ return; // Already registered
664
+ }
665
+ // Add imports after last import
666
+ const lastImportIndex = content.lastIndexOf('import ');
667
+ if (lastImportIndex !== -1) {
668
+ let searchPos = lastImportIndex;
669
+ while (searchPos < content.length) {
670
+ if (content[searchPos] === ';') {
671
+ content =
672
+ content.slice(0, searchPos + 1) +
673
+ '\n' +
674
+ routeImports +
675
+ content.slice(searchPos + 1);
676
+ break;
677
+ }
678
+ searchPos++;
679
+ }
680
+ }
681
+ // Add route registrations before export
682
+ const routeRegistrations = `
683
+ // ${EntityName} CRUD routes
684
+ const ${entityName}Routes = new Hono();
685
+ ${entityName}Routes.route('/', create${EntityName}Routes);
686
+ ${entityName}Routes.route('/', update${EntityName}Routes);
687
+ ${entityName}Routes.route('/', get${EntityName}Routes);
688
+ ${entityName}Routes.route('/', list${pluralPascal}Routes);
689
+ ${entityName}Routes.route('/', delete${EntityName}Routes);
690
+ mainRoutes.route('/${pluralKebab}', ${entityName}Routes);
691
+ `;
692
+ const exportIndex = content.indexOf('export { mainRoutes }');
693
+ if (exportIndex !== -1) {
694
+ content =
695
+ content.slice(0, exportIndex) +
696
+ routeRegistrations +
697
+ '\n' +
698
+ content.slice(exportIndex);
699
+ }
700
+ // Check if Hono is imported
701
+ if (!content.includes('import { Hono }') &&
702
+ !content.includes('import {Hono}')) {
703
+ // Add Hono import at top if not present
704
+ content = "import { Hono } from 'hono';\n" + content;
705
+ }
706
+ await writeFile(mainRoutesPath, content);
707
+ console.log(`Updated: src/main.routes.ts with ${EntityName} CRUD routes`);
708
+ }
709
+ //# sourceMappingURL=generate_crud_use_cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_crud_use_cases.js","sourceRoot":"","sources":["../src/generate_crud_use_cases.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simpledi-app-generator",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "generates a @kanian77/simple-di app",
5
5
  "author": {
6
6
  "name": "Patrick Assoa Adou",