@zintrust/core 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +214 -0
  2. package/package.json +4 -34
  3. package/public/index.html +535 -0
  4. package/src/builder/BundleOptimizer.d.ts.map +1 -1
  5. package/src/builder/BundleOptimizer.js +20 -26
  6. package/src/cache/Cache.d.ts.map +1 -1
  7. package/src/cache/Cache.js +4 -2
  8. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  9. package/src/cache/drivers/KVDriver.js +2 -1
  10. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  11. package/src/cache/drivers/MemoryDriver.js +5 -0
  12. package/src/cli/CLI.d.ts.map +1 -1
  13. package/src/cli/CLI.js +11 -14
  14. package/src/cli/ErrorHandler.d.ts.map +1 -1
  15. package/src/cli/ErrorHandler.js +2 -4
  16. package/src/cli/commands/AddCommand.d.ts +81 -0
  17. package/src/cli/commands/AddCommand.d.ts.map +1 -1
  18. package/src/cli/commands/AddCommand.js +23 -4
  19. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  20. package/src/cli/commands/ConfigCommand.js +27 -23
  21. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  22. package/src/cli/commands/D1MigrateCommand.js +3 -2
  23. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  24. package/src/cli/commands/FixCommand.js +1 -0
  25. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  26. package/src/cli/commands/LogsCommand.js +3 -5
  27. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  28. package/src/cli/commands/MigrateCommand.js +3 -3
  29. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  30. package/src/cli/commands/NewCommand.js +3 -1
  31. package/src/cli/commands/QACommand.d.ts.map +1 -1
  32. package/src/cli/commands/QACommand.js +5 -6
  33. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  34. package/src/cli/scaffolding/ControllerGenerator.js +10 -9
  35. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
  36. package/src/cli/scaffolding/MigrationGenerator.js +10 -9
  37. package/src/cli/scaffolding/ModelGenerator.d.ts.map +1 -1
  38. package/src/cli/scaffolding/ModelGenerator.js +10 -9
  39. package/src/cli/scaffolding/ProjectScaffolder.js +1 -1
  40. package/src/cli/scaffolding/ResponseFactoryGenerator.js +1 -1
  41. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
  42. package/src/cli/scaffolding/RouteGenerator.js +14 -13
  43. package/src/cli/scaffolding/SeederGenerator.js +1 -1
  44. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +1 -1
  45. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +6 -5
  46. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +1 -1
  47. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +1 -1
  48. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +2 -2
  49. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  50. package/src/cli/scaffolding/ServiceScaffolder.js +11 -10
  51. package/src/cli/scaffolding/TemplateEngine.d.ts +10 -3
  52. package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -1
  53. package/src/cli/scaffolding/TemplateEngine.js +15 -285
  54. package/src/config/SecretsManager.d.ts.map +1 -1
  55. package/src/config/SecretsManager.js +11 -11
  56. package/src/functions/lambda.d.ts.map +1 -1
  57. package/src/functions/lambda.js +6 -1
  58. package/src/http/Request.d.ts +1 -1
  59. package/src/http/Request.d.ts.map +1 -1
  60. package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -1
  61. package/src/microservices/MicroserviceBootstrap.js +6 -5
  62. package/src/microservices/MicroserviceManager.d.ts.map +1 -1
  63. package/src/microservices/MicroserviceManager.js +9 -10
  64. package/src/microservices/PostgresAdapter.d.ts.map +1 -1
  65. package/src/microservices/PostgresAdapter.js +4 -3
  66. package/src/microservices/ServiceBundler.js +3 -3
  67. package/src/microservices/ServiceHealthMonitor.d.ts.map +1 -1
  68. package/src/microservices/ServiceHealthMonitor.js +6 -2
  69. package/src/performance/Benchmark.d.ts.map +1 -1
  70. package/src/performance/Benchmark.js +3 -0
  71. package/src/performance/Optimizer.d.ts.map +1 -1
  72. package/src/performance/Optimizer.js +7 -5
  73. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  74. package/src/runtime/RuntimeDetector.js +1 -0
  75. package/src/runtime/adapters/DenoAdapter.js +9 -7
  76. package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -1
  77. package/src/runtime/adapters/FargateAdapter.js +4 -4
  78. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  79. package/src/runtime/adapters/NodeServerAdapter.js +7 -7
  80. package/src/templates/project/basic/config/SecretsManager.ts.tpl +22 -14
@@ -43,15 +43,16 @@ export function validateOptions(options) {
43
43
  /**
44
44
  * Generate controller file
45
45
  */
46
- export async function generateController(options) {
46
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
47
+ export function generateController(options) {
47
48
  const validation = validateOptions(options);
48
49
  if (validation.valid === false) {
49
- return {
50
+ return Promise.resolve({
50
51
  success: false,
51
52
  controllerName: options.name,
52
53
  controllerFile: '',
53
54
  message: `Validation failed: ${validation.errors.join(', ')}`,
54
- };
55
+ });
55
56
  }
56
57
  try {
57
58
  const controllerType = options.type ?? 'resource';
@@ -59,29 +60,29 @@ export async function generateController(options) {
59
60
  const controllerFile = path.join(options.controllerPath, `${options.name}.ts`);
60
61
  const created = FileGenerator.writeFile(controllerFile, controllerContent);
61
62
  if (created === false) {
62
- return {
63
+ return Promise.resolve({
63
64
  success: false,
64
65
  controllerName: options.name,
65
66
  controllerFile,
66
67
  message: `Failed to create controller file`,
67
- };
68
+ });
68
69
  }
69
70
  Logger.info(`✅ Generated controller: ${options.name}`);
70
- return {
71
+ return Promise.resolve({
71
72
  success: true,
72
73
  controllerName: options.name,
73
74
  controllerFile,
74
75
  message: `Controller ${options.name} created successfully`,
75
- };
76
+ });
76
77
  }
77
78
  catch (error) {
78
79
  Logger.error(`Failed to generate controller: ${error.message}`);
79
- return {
80
+ return Promise.resolve({
80
81
  success: false,
81
82
  controllerName: options.name,
82
83
  controllerFile: '',
83
84
  message: `Error: ${error.message}`,
84
- };
85
+ });
85
86
  }
86
87
  }
87
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/MigrationGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmB/F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAwDlC;AAqLD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;EAG7B,CAAC"}
1
+ {"version":3,"file":"MigrationGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/MigrationGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmB/F;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAwD7F;AAqLD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;EAG7B,CAAC"}
@@ -28,17 +28,18 @@ export function validateOptions(options) {
28
28
  /**
29
29
  * Generate migration file
30
30
  */
31
- export async function generateMigration(options) {
31
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
32
+ export function generateMigration(options) {
32
33
  try {
33
34
  // Validate options
34
35
  const validation = validateOptions(options);
35
36
  if (!validation.valid) {
36
- return {
37
+ return Promise.resolve({
37
38
  success: false,
38
39
  migrationName: options.name,
39
40
  filePath: '',
40
41
  message: `Validation failed: ${validation.errors.join(', ')}`,
41
- };
42
+ });
42
43
  }
43
44
  // Generate migration filename with timestamp
44
45
  const timestamp = new Date()
@@ -49,12 +50,12 @@ export async function generateMigration(options) {
49
50
  const filePath = path.join(options.migrationsPath, filename);
50
51
  // Check if migration already exists
51
52
  if (FileGenerator.fileExists(filePath)) {
52
- return {
53
+ return Promise.resolve({
53
54
  success: false,
54
55
  migrationName: options.name,
55
56
  filePath,
56
57
  message: `Migration file already exists: ${filePath}`,
57
- };
58
+ });
58
59
  }
59
60
  // Generate migration content based on type
60
61
  const type = options.type ?? detectType(options.name);
@@ -62,22 +63,22 @@ export async function generateMigration(options) {
62
63
  // Write migration file
63
64
  FileGenerator.writeFile(filePath, content);
64
65
  Logger.info(`✅ Created migration: ${filename}`);
65
- return {
66
+ return Promise.resolve({
66
67
  success: true,
67
68
  migrationName: options.name,
68
69
  filePath,
69
70
  message: `Migration '${options.name}' created successfully`,
70
- };
71
+ });
71
72
  }
72
73
  catch (error) {
73
74
  Logger.error('Migration generation error:', error);
74
75
  const errorMsg = error instanceof Error ? error.message : String(error);
75
- return {
76
+ return Promise.resolve({
76
77
  success: false,
77
78
  migrationName: options.name,
78
79
  filePath: '',
79
80
  message: `Failed to create migration: ${errorMsg}`,
80
- };
81
+ });
81
82
  }
82
83
  }
83
84
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ModelGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ModelGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GACV,MAAM,GACN,EAAE,CAAC;AAEP,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAsB3F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0CxF;AA+HD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,EAAE,CAW5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,EAAE,CAU5C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAU7C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
1
+ {"version":3,"file":"ModelGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ModelGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GACV,MAAM,GACN,EAAE,CAAC;AAEP,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAsB3F;AAED;;GAEG;AAEH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0ClF;AA+HD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,EAAE,CAW5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,EAAE,CAU5C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAU7C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
@@ -31,44 +31,45 @@ export function validateOptions(options) {
31
31
  /**
32
32
  * Generate model file
33
33
  */
34
- export async function generateModel(options) {
34
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
35
+ export function generateModel(options) {
35
36
  const validation = validateOptions(options);
36
37
  if (validation.valid === false) {
37
- return {
38
+ return Promise.resolve({
38
39
  success: false,
39
40
  modelName: options.name,
40
41
  modelFile: '',
41
42
  message: `Validation failed: ${validation.errors.join(', ')}`,
42
- };
43
+ });
43
44
  }
44
45
  try {
45
46
  const modelContent = buildModelCode(options);
46
47
  const modelFile = path.join(options.modelPath, `${options.name}.ts`);
47
48
  const created = FileGenerator.writeFile(modelFile, modelContent);
48
49
  if (created === false) {
49
- return {
50
+ return Promise.resolve({
50
51
  success: false,
51
52
  modelName: options.name,
52
53
  modelFile,
53
54
  message: `Failed to create model file`,
54
- };
55
+ });
55
56
  }
56
57
  Logger.info(`✅ Generated model: ${options.name}`);
57
- return {
58
+ return Promise.resolve({
58
59
  success: true,
59
60
  modelName: options.name,
60
61
  modelFile,
61
62
  message: `Model ${options.name} created successfully`,
62
- };
63
+ });
63
64
  }
64
65
  catch (error) {
65
66
  Logger.error('Model generation failed', error);
66
- return {
67
+ return Promise.resolve({
67
68
  success: false,
68
69
  modelName: options.name,
69
70
  modelFile: '',
70
71
  message: `Error: ${error.message}`,
71
- };
72
+ });
72
73
  }
73
74
  }
74
75
  /**
@@ -4,8 +4,8 @@
4
4
  */
5
5
  import { Logger } from '../../config/logger';
6
6
  import fs from '../../node-singletons/fs';
7
+ import { fileURLToPath } from '../../node-singletons/url';
7
8
  import * as path from 'node:path';
8
- import { fileURLToPath } from 'node:url';
9
9
  const createDirectories = (projectPath, directories) => {
10
10
  let count = 0;
11
11
  if (!fs.existsSync(projectPath)) {
@@ -240,7 +240,7 @@ export default ${options.responseName};
240
240
  `;
241
241
  FileGenerator.writeFile(dtoPath, dtoCode);
242
242
  Logger.info(`✅ Generated response DTO: ${options.responseName}`);
243
- return dtoPath;
243
+ return Promise.resolve(dtoPath);
244
244
  }
245
245
  /**
246
246
  * Generate field assignments for the factory
@@ -1 +1 @@
1
- {"version":3,"file":"RouteGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/RouteGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2CzF;AA+HD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,EAAE,CAsCpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,EAAE,CA6BjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CA+BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAEhD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
1
+ {"version":3,"file":"RouteGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/RouteGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB3F;AAED;;GAEG;AAEH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2CnF;AA+HD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,EAAE,CAsCpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,EAAE,CA6BjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CA+BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAEhD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
@@ -29,15 +29,16 @@ export function validateOptions(options) {
29
29
  /**
30
30
  * Generate route file
31
31
  */
32
- export async function generateRoutes(options) {
32
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
33
+ export function generateRoutes(options) {
33
34
  const validation = validateOptions(options);
34
35
  if (!validation.valid) {
35
- return {
36
+ return Promise.resolve({
36
37
  success: false,
37
38
  routeFile: '',
38
39
  routeCount: 0,
39
40
  message: `Validation failed: ${validation.errors.join(', ')}`,
40
- };
41
+ });
41
42
  }
42
43
  try {
43
44
  const routeContent = buildRouteWrapper(options);
@@ -45,29 +46,29 @@ export async function generateRoutes(options) {
45
46
  const routeFile = path.join(options.routesPath, `${groupName}.ts`);
46
47
  const created = FileGenerator.writeFile(routeFile, routeContent);
47
48
  if (!created) {
48
- return {
49
+ return Promise.resolve({
49
50
  success: false,
50
51
  routeFile,
51
52
  routeCount: 0,
52
53
  message: `Failed to create route file`,
53
- };
54
+ });
54
55
  }
55
56
  Logger.info(`✅ Generated routes: ${routeFile} (${options.routes.length} routes)`);
56
- return {
57
+ return Promise.resolve({
57
58
  success: true,
58
59
  routeFile,
59
60
  routeCount: options.routes.length,
60
61
  message: `Routes created successfully`,
61
- };
62
+ });
62
63
  }
63
64
  catch (error) {
64
65
  Logger.error('Route generation failed', error);
65
- return {
66
+ return Promise.resolve({
66
67
  success: false,
67
68
  routeFile: '',
68
69
  routeCount: 0,
69
70
  message: `Error: ${error.message}`,
70
- };
71
+ });
71
72
  }
72
73
  }
73
74
  /**
@@ -152,7 +153,7 @@ function buildRouteCode(route, router) {
152
153
  */
153
154
  function buildMethodRoute(route, router) {
154
155
  const method = route.method;
155
- const path = route.path;
156
+ const routePath = route.path;
156
157
  const controller = route.controller;
157
158
  const action = route.action ?? 'handle';
158
159
  const middleware = route.middleware === undefined
@@ -161,13 +162,13 @@ function buildMethodRoute(route, router) {
161
162
  const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
162
163
  return `, { middleware: [${middlewareList}] }`;
163
164
  })();
164
- return ` ${router}.${method}('${path}', [${controller}, '${action}']${middleware});\n`;
165
+ return ` ${router}.${method}('${routePath}', [${controller}, '${action}']${middleware});\n`;
165
166
  }
166
167
  /**
167
168
  * Build resource route (RESTful CRUD)
168
169
  */
169
170
  function buildResourceRoute(route, router) {
170
- const path = route.path;
171
+ const routePath = route.path;
171
172
  const controller = route.controller;
172
173
  const middleware = route.middleware === undefined
173
174
  ? ''
@@ -175,7 +176,7 @@ function buildResourceRoute(route, router) {
175
176
  const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
176
177
  return `, { middleware: [${middlewareList}] }`;
177
178
  })();
178
- return ` ${router}.resource('${path}', ${controller}${middleware});\n`;
179
+ return ` ${router}.resource('${routePath}', ${controller}${middleware});\n`;
179
180
  }
180
181
  /**
181
182
  * Generate common API routes (User CRUD example)
@@ -8,7 +8,7 @@ import { CommonUtils } from '../../common/index';
8
8
  import { Logger } from '../../config/logger';
9
9
  import { ErrorFactory } from '../../exceptions/ZintrustError';
10
10
  import { fsPromises as fs } from '../../node-singletons/fs';
11
- import * as path from 'node:path';
11
+ import * as path from '../../node-singletons/path';
12
12
  /**
13
13
  * Seeder Generator - Creates database seeders using factory classes
14
14
  * Enables rapid database population for development and staging
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceIntegrationTestGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceIntegrationTestGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAuBA;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAuBvC;AA4ND,eAAO,MAAM,+BAA+B;;;EAG1C,CAAC"}
1
+ {"version":3,"file":"ServiceIntegrationTestGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceIntegrationTestGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAuBA;AAED;;GAEG;AAEH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAuBvC;AA4ND,eAAO,MAAM,+BAA+B;;;EAG1C,CAAC"}
@@ -34,26 +34,27 @@ export function validateOptions(options) {
34
34
  /**
35
35
  * Generate service integration tests
36
36
  */
37
- export async function generateIntegrationTest(options) {
37
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
38
+ export function generateIntegrationTest(options) {
38
39
  try {
39
40
  const testCode = buildTestCode(options);
40
41
  const fileName = `${CommonUtils.camelCase(options.name)}.test.ts`;
41
42
  const filePath = path.join(options.testPath, fileName);
42
43
  FileGenerator.writeFile(filePath, testCode, { overwrite: true });
43
44
  Logger.info(`✅ Created service integration test: ${fileName}`);
44
- return {
45
+ return Promise.resolve({
45
46
  success: true,
46
47
  testFile: filePath,
47
48
  message: `Service integration test '${options.name}' created successfully`,
48
- };
49
+ });
49
50
  }
50
51
  catch (error) {
51
52
  Logger.error('Service integration test generation failed', error);
52
- return {
53
+ return Promise.resolve({
53
54
  success: false,
54
55
  testFile: '',
55
56
  message: error.message,
56
- };
57
+ });
57
58
  }
58
59
  }
59
60
  /**
@@ -37,7 +37,7 @@ export declare function validateOptions(options: ServiceRequestOptions): {
37
37
  /**
38
38
  * Generate request factory file
39
39
  */
40
- export declare function generateRequestFactory(options: ServiceRequestOptions): Promise<ServiceRequestFactoryResult>;
40
+ export declare function generateRequestFactory(options: ServiceRequestOptions): ServiceRequestFactoryResult;
41
41
  export declare const ServiceRequestFactoryGenerator: Readonly<{
42
42
  validateOptions: typeof validateOptions;
43
43
  generateRequestFactory: typeof generateRequestFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceRequestFactoryGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceRequestFactoryGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG;IAC/D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CAkCtC;AA8WD,eAAO,MAAM,8BAA8B;;;EAGzC,CAAC"}
1
+ {"version":3,"file":"ServiceRequestFactoryGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceRequestFactoryGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG;IAC/D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,qBAAqB,GAC7B,2BAA2B,CAkC7B;AA8WD,eAAO,MAAM,8BAA8B;;;EAGzC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  import { FileGenerator } from '../scaffolding/FileGenerator';
6
6
  import { CommonUtils } from '../../common/index';
7
7
  import { Logger } from '../../config/logger';
8
- import * as path from 'node:path';
8
+ import * as path from '../../node-singletons/path';
9
9
  /**
10
10
  * Validate options
11
11
  */
@@ -34,7 +34,7 @@ export function validateOptions(options) {
34
34
  /**
35
35
  * Generate request factory file
36
36
  */
37
- export async function generateRequestFactory(options) {
37
+ export function generateRequestFactory(options) {
38
38
  const validation = validateOptions(options);
39
39
  if (!validation.valid) {
40
40
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAuB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAGnF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,qBAAqB,CAAC,CA+ChC;AA4SD,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC"}
1
+ {"version":3,"file":"ServiceScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAuB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAGnF;AAED;;GAEG;AAEH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,qBAAqB,CAAC,CA+ChC;AA4SD,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC"}
@@ -40,49 +40,50 @@ export function getServicePath(projectRoot, options) {
40
40
  /**
41
41
  * Generate service structure
42
42
  */
43
- export async function scaffold(projectRoot, options) {
43
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
44
+ export function scaffold(projectRoot, options) {
44
45
  try {
45
46
  // Validate options
46
47
  const validation = validateOptions(options);
47
48
  if (!validation.valid) {
48
- return {
49
+ return Promise.resolve({
49
50
  success: false,
50
51
  serviceName: options.name,
51
52
  servicePath: '',
52
53
  filesCreated: [],
53
54
  message: `Validation failed: ${validation.errors.join(', ')}`,
54
- };
55
+ });
55
56
  }
56
57
  const servicePath = getServicePath(projectRoot, options);
57
58
  // Check if service already exists
58
59
  if (FileGenerator.directoryExists(servicePath)) {
59
- return {
60
+ return Promise.resolve({
60
61
  success: false,
61
62
  serviceName: options.name,
62
63
  servicePath,
63
64
  filesCreated: [],
64
65
  message: `Service '${options.name}' already exists at ${servicePath}`,
65
- };
66
+ });
66
67
  }
67
68
  createServiceDirectories(servicePath);
68
69
  const filesCreated = createServiceFiles(servicePath, options);
69
- return {
70
+ return Promise.resolve({
70
71
  success: true,
71
72
  serviceName: options.name,
72
73
  servicePath,
73
74
  filesCreated,
74
75
  message: `Service '${options.name}' scaffolded successfully`,
75
- };
76
+ });
76
77
  }
77
78
  catch (error) {
78
79
  Logger.error('Service scaffolding failed', error);
79
- return {
80
+ return Promise.resolve({
80
81
  success: false,
81
82
  serviceName: options.name,
82
83
  servicePath: '',
83
84
  filesCreated: [],
84
85
  message: error.message,
85
- };
86
+ });
86
87
  }
87
88
  }
88
89
  /**
@@ -289,7 +290,7 @@ DATABASE_CONNECTION=${options.database === 'isolated' ? 'postgresql' : 'shared'}
289
290
  ${options.database === 'isolated' ? `${options.name?.toUpperCase()}_DB_HOST=localhost\n${options.name?.toUpperCase()}_DB_DATABASE=${options.name}\n${options.name?.toUpperCase()}_DB_USER=postgres\n${options.name?.toUpperCase()}_DB_PASSWORD=postgres` : ''}
290
291
 
291
292
  # Authentication
292
- SERVICE_AUTH_STRATEGY=${options.auth || 'api-key'}
293
+ SERVICE_AUTH_STRATEGY=${options.auth ?? 'api-key'}
293
294
  SERVICE_AUTH_KEY=your-auth-key-here
294
295
 
295
296
  # Tracing
@@ -12,9 +12,14 @@ export interface Template {
12
12
  files: TemplateFile[];
13
13
  directories: string[];
14
14
  }
15
+ /**
16
+ * A file that will be copied from a template source into the generated project.
17
+ * `path` -> destination path in the generated project
18
+ * `source` -> template file path (relative to the template root directory)
19
+ */
15
20
  export interface TemplateFile {
16
21
  path: string;
17
- content: string;
22
+ source: string;
18
23
  isTemplate?: boolean;
19
24
  }
20
25
  /**
@@ -22,14 +27,16 @@ export interface TemplateFile {
22
27
  */
23
28
  export declare const TemplateEngine: Readonly<{
24
29
  render: (content: string, variables: TemplateVariables) => string;
25
- renderPath: (path: string, variables: TemplateVariables) => string;
26
30
  renderContent: (content: string, variables: TemplateVariables) => string;
31
+ renderPath: (content: string, variables: TemplateVariables) => string;
27
32
  mergeVariables: (custom: TemplateVariables, defaults: TemplateVariables) => TemplateVariables;
28
33
  hasVariables: (content: string) => boolean;
29
34
  extractVariables: (content: string) => string[];
30
35
  }>;
31
36
  /**
32
- * Built-in template definitions
37
+ * Built-in template definitions (file-based; no inline contents)
38
+ *
39
+ * `source` paths are relative to your template root directory (wherever the CLI loader reads from).
33
40
  */
34
41
  export declare const BUILT_IN_TEMPLATES: Record<string, Template>;
35
42
  //# sourceMappingURL=TemplateEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/TemplateEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAiED;;GAEG;AACH,eAAO,MAAM,cAAc;sBA/DM,MAAM,aAAa,iBAAiB,KAAG,MAAM;uBAgB5C,MAAM,aAAa,iBAAiB,KAAG,MAAM;6BAOvC,MAAM,aAAa,iBAAiB,KAAG,MAAM;6BAQ3E,iBAAiB,YACf,iBAAiB,KAC1B,iBAAiB;4BASmB,MAAM,KAAG,OAAO;gCASZ,MAAM,KAAG,MAAM,EAAE;EAmB1D,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAmTvD,CAAC"}
1
+ {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/TemplateEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmDD;;GAEG;AACH,eAAO,MAAM,cAAc;sBAjDM,MAAM,aAAa,iBAAiB,KAAG,MAAM;6BAA7C,MAAM,aAAa,iBAAiB,KAAG,MAAM;0BAA7C,MAAM,aAAa,iBAAiB,KAAG,MAAM;6BAiBpE,iBAAiB,YACf,iBAAiB,KAC1B,iBAAiB;4BASmB,MAAM,KAAG,OAAO;gCASZ,MAAM,KAAG,MAAM,EAAE;EAmB1D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAgDvD,CAAC"}