@veloxts/cli 0.4.14 → 0.6.23

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 (203) hide show
  1. package/README.md +2 -48
  2. package/dist/cli.d.ts +5 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +7 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/dev.d.ts.map +1 -1
  7. package/dist/commands/dev.js +71 -7
  8. package/dist/commands/dev.js.map +1 -1
  9. package/dist/commands/introspect.d.ts +16 -0
  10. package/dist/commands/introspect.d.ts.map +1 -0
  11. package/dist/commands/introspect.js +559 -0
  12. package/dist/commands/introspect.js.map +1 -0
  13. package/dist/commands/make.d.ts.map +1 -1
  14. package/dist/commands/make.js +18 -8
  15. package/dist/commands/make.js.map +1 -1
  16. package/dist/commands/procedures.d.ts.map +1 -1
  17. package/dist/commands/procedures.js +16 -0
  18. package/dist/commands/procedures.js.map +1 -1
  19. package/dist/dev/error-parser.d.ts.map +1 -1
  20. package/dist/dev/error-parser.js +24 -8
  21. package/dist/dev/error-parser.js.map +1 -1
  22. package/dist/dev/hmr-runner.d.ts.map +1 -1
  23. package/dist/dev/hmr-runner.js +6 -1
  24. package/dist/dev/hmr-runner.js.map +1 -1
  25. package/dist/dev/index.d.ts +3 -3
  26. package/dist/dev/index.d.ts.map +1 -1
  27. package/dist/dev/index.js +3 -3
  28. package/dist/dev/index.js.map +1 -1
  29. package/dist/dev/reload-reporter.d.ts +2 -2
  30. package/dist/dev/reload-reporter.d.ts.map +1 -1
  31. package/dist/dev/reload-reporter.js +2 -2
  32. package/dist/dev/reload-reporter.js.map +1 -1
  33. package/dist/errors/catalog.d.ts +48 -0
  34. package/dist/errors/catalog.d.ts.map +1 -0
  35. package/dist/errors/catalog.js +421 -0
  36. package/dist/errors/catalog.js.map +1 -0
  37. package/dist/errors/index.d.ts +26 -0
  38. package/dist/errors/index.d.ts.map +1 -0
  39. package/dist/errors/index.js +28 -0
  40. package/dist/errors/index.js.map +1 -0
  41. package/dist/errors/velox-error.d.ts +122 -0
  42. package/dist/errors/velox-error.d.ts.map +1 -0
  43. package/dist/errors/velox-error.js +216 -0
  44. package/dist/errors/velox-error.js.map +1 -0
  45. package/dist/generators/base.d.ts.map +1 -1
  46. package/dist/generators/base.js +26 -0
  47. package/dist/generators/base.js.map +1 -1
  48. package/dist/generators/fields/__tests__/helpers.d.ts +66 -0
  49. package/dist/generators/fields/__tests__/helpers.d.ts.map +1 -0
  50. package/dist/generators/fields/__tests__/helpers.js +142 -0
  51. package/dist/generators/fields/__tests__/helpers.js.map +1 -0
  52. package/dist/generators/fields/actions.d.ts +58 -0
  53. package/dist/generators/fields/actions.d.ts.map +1 -0
  54. package/dist/generators/fields/actions.js +230 -0
  55. package/dist/generators/fields/actions.js.map +1 -0
  56. package/dist/generators/fields/display.d.ts +28 -0
  57. package/dist/generators/fields/display.d.ts.map +1 -0
  58. package/dist/generators/fields/display.js +214 -0
  59. package/dist/generators/fields/display.js.map +1 -0
  60. package/dist/generators/fields/index.d.ts +12 -0
  61. package/dist/generators/fields/index.d.ts.map +1 -0
  62. package/dist/generators/fields/index.js +12 -0
  63. package/dist/generators/fields/index.js.map +1 -0
  64. package/dist/generators/fields/prompts.d.ts +31 -0
  65. package/dist/generators/fields/prompts.d.ts.map +1 -0
  66. package/dist/generators/fields/prompts.js +366 -0
  67. package/dist/generators/fields/prompts.js.map +1 -0
  68. package/dist/generators/fields/templates.d.ts +49 -0
  69. package/dist/generators/fields/templates.d.ts.map +1 -0
  70. package/dist/generators/fields/templates.js +230 -0
  71. package/dist/generators/fields/templates.js.map +1 -0
  72. package/dist/generators/fields/types.d.ts +95 -0
  73. package/dist/generators/fields/types.d.ts.map +1 -0
  74. package/dist/generators/fields/types.js +150 -0
  75. package/dist/generators/fields/types.js.map +1 -0
  76. package/dist/generators/generators/action.d.ts +37 -0
  77. package/dist/generators/generators/action.d.ts.map +1 -0
  78. package/dist/generators/generators/action.js +109 -0
  79. package/dist/generators/generators/action.js.map +1 -0
  80. package/dist/generators/generators/exception.d.ts +38 -0
  81. package/dist/generators/generators/exception.d.ts.map +1 -0
  82. package/dist/generators/generators/exception.js +109 -0
  83. package/dist/generators/generators/exception.js.map +1 -0
  84. package/dist/generators/generators/guard.d.ts +38 -0
  85. package/dist/generators/generators/guard.d.ts.map +1 -0
  86. package/dist/generators/generators/guard.js +109 -0
  87. package/dist/generators/generators/guard.js.map +1 -0
  88. package/dist/generators/generators/index.d.ts +8 -0
  89. package/dist/generators/generators/index.d.ts.map +1 -1
  90. package/dist/generators/generators/index.js +27 -0
  91. package/dist/generators/generators/index.js.map +1 -1
  92. package/dist/generators/generators/layout.d.ts +36 -0
  93. package/dist/generators/generators/layout.d.ts.map +1 -0
  94. package/dist/generators/generators/layout.js +111 -0
  95. package/dist/generators/generators/layout.js.map +1 -0
  96. package/dist/generators/generators/middleware.d.ts +38 -0
  97. package/dist/generators/generators/middleware.d.ts.map +1 -0
  98. package/dist/generators/generators/middleware.js +109 -0
  99. package/dist/generators/generators/middleware.js.map +1 -0
  100. package/dist/generators/generators/model.d.ts +16 -4
  101. package/dist/generators/generators/model.d.ts.map +1 -1
  102. package/dist/generators/generators/model.js +88 -7
  103. package/dist/generators/generators/model.js.map +1 -1
  104. package/dist/generators/generators/page.d.ts +36 -0
  105. package/dist/generators/generators/page.d.ts.map +1 -0
  106. package/dist/generators/generators/page.js +112 -0
  107. package/dist/generators/generators/page.js.map +1 -0
  108. package/dist/generators/generators/policy.d.ts +37 -0
  109. package/dist/generators/generators/policy.d.ts.map +1 -0
  110. package/dist/generators/generators/policy.js +100 -0
  111. package/dist/generators/generators/policy.js.map +1 -0
  112. package/dist/generators/generators/resource.d.ts +42 -4
  113. package/dist/generators/generators/resource.d.ts.map +1 -1
  114. package/dist/generators/generators/resource.js +450 -9
  115. package/dist/generators/generators/resource.js.map +1 -1
  116. package/dist/generators/generators/service.d.ts +38 -0
  117. package/dist/generators/generators/service.d.ts.map +1 -0
  118. package/dist/generators/generators/service.js +109 -0
  119. package/dist/generators/generators/service.js.map +1 -0
  120. package/dist/generators/registry.d.ts.map +1 -1
  121. package/dist/generators/registry.js +10 -1
  122. package/dist/generators/registry.js.map +1 -1
  123. package/dist/generators/templates/action.d.ts +28 -0
  124. package/dist/generators/templates/action.d.ts.map +1 -0
  125. package/dist/generators/templates/action.js +359 -0
  126. package/dist/generators/templates/action.js.map +1 -0
  127. package/dist/generators/templates/exception.d.ts +26 -0
  128. package/dist/generators/templates/exception.d.ts.map +1 -0
  129. package/dist/generators/templates/exception.js +671 -0
  130. package/dist/generators/templates/exception.js.map +1 -0
  131. package/dist/generators/templates/guard.d.ts +26 -0
  132. package/dist/generators/templates/guard.d.ts.map +1 -0
  133. package/dist/generators/templates/guard.js +555 -0
  134. package/dist/generators/templates/guard.js.map +1 -0
  135. package/dist/generators/templates/layout.d.ts +28 -0
  136. package/dist/generators/templates/layout.d.ts.map +1 -0
  137. package/dist/generators/templates/layout.js +147 -0
  138. package/dist/generators/templates/layout.js.map +1 -0
  139. package/dist/generators/templates/middleware.d.ts +26 -0
  140. package/dist/generators/templates/middleware.d.ts.map +1 -0
  141. package/dist/generators/templates/middleware.js +411 -0
  142. package/dist/generators/templates/middleware.js.map +1 -0
  143. package/dist/generators/templates/model.d.ts +3 -0
  144. package/dist/generators/templates/model.d.ts.map +1 -1
  145. package/dist/generators/templates/model.js +183 -28
  146. package/dist/generators/templates/model.js.map +1 -1
  147. package/dist/generators/templates/page.d.ts +36 -0
  148. package/dist/generators/templates/page.d.ts.map +1 -0
  149. package/dist/generators/templates/page.js +147 -0
  150. package/dist/generators/templates/page.js.map +1 -0
  151. package/dist/generators/templates/policy.d.ts +24 -0
  152. package/dist/generators/templates/policy.d.ts.map +1 -0
  153. package/dist/generators/templates/policy.js +499 -0
  154. package/dist/generators/templates/policy.js.map +1 -0
  155. package/dist/generators/templates/resource.d.ts +65 -0
  156. package/dist/generators/templates/resource.d.ts.map +1 -1
  157. package/dist/generators/templates/resource.js +228 -43
  158. package/dist/generators/templates/resource.js.map +1 -1
  159. package/dist/generators/templates/service.d.ts +26 -0
  160. package/dist/generators/templates/service.d.ts.map +1 -0
  161. package/dist/generators/templates/service.js +511 -0
  162. package/dist/generators/templates/service.js.map +1 -0
  163. package/dist/generators/types.d.ts +26 -14
  164. package/dist/generators/types.d.ts.map +1 -1
  165. package/dist/generators/types.js +8 -25
  166. package/dist/generators/types.js.map +1 -1
  167. package/dist/generators/utils/ast-helpers.d.ts +147 -0
  168. package/dist/generators/utils/ast-helpers.d.ts.map +1 -0
  169. package/dist/generators/utils/ast-helpers.js +350 -0
  170. package/dist/generators/utils/ast-helpers.js.map +1 -0
  171. package/dist/generators/utils/prisma-migration.d.ts +59 -0
  172. package/dist/generators/utils/prisma-migration.d.ts.map +1 -0
  173. package/dist/generators/utils/prisma-migration.js +161 -0
  174. package/dist/generators/utils/prisma-migration.js.map +1 -0
  175. package/dist/generators/utils/prisma-schema.d.ts +97 -0
  176. package/dist/generators/utils/prisma-schema.d.ts.map +1 -0
  177. package/dist/generators/utils/prisma-schema.js +235 -0
  178. package/dist/generators/utils/prisma-schema.js.map +1 -0
  179. package/dist/generators/utils/router-integration.d.ts +70 -0
  180. package/dist/generators/utils/router-integration.d.ts.map +1 -0
  181. package/dist/generators/utils/router-integration.js +305 -0
  182. package/dist/generators/utils/router-integration.js.map +1 -0
  183. package/dist/generators/utils/snapshot.d.ts +93 -0
  184. package/dist/generators/utils/snapshot.d.ts.map +1 -0
  185. package/dist/generators/utils/snapshot.js +178 -0
  186. package/dist/generators/utils/snapshot.js.map +1 -0
  187. package/dist/index.d.ts +6 -0
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +6 -0
  190. package/dist/index.js.map +1 -1
  191. package/dist/seeding/errors.d.ts +11 -24
  192. package/dist/seeding/errors.d.ts.map +1 -1
  193. package/dist/seeding/errors.js +11 -50
  194. package/dist/seeding/errors.js.map +1 -1
  195. package/dist/utils/paths.d.ts +19 -0
  196. package/dist/utils/paths.d.ts.map +1 -1
  197. package/dist/utils/paths.js +45 -0
  198. package/dist/utils/paths.js.map +1 -1
  199. package/dist/utils/schema-patterns.d.ts +26 -0
  200. package/dist/utils/schema-patterns.d.ts.map +1 -0
  201. package/dist/utils/schema-patterns.js +40 -0
  202. package/dist/utils/schema-patterns.js.map +1 -0
  203. package/package.json +12 -10
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Guard Generator
3
+ *
4
+ * Scaffolds auth guard files for VeloxTS applications.
5
+ *
6
+ * Usage:
7
+ * velox make guard <name> [options]
8
+ *
9
+ * Examples:
10
+ * velox make guard subscriber # Simple guard
11
+ * velox make guard admin --role # Role-based guard
12
+ * velox make guard post --permission # Permission-based guard
13
+ * velox make guard document --owner # Ownership guard
14
+ * velox make guard access --composite # Composite guards
15
+ */
16
+ import { BaseGenerator } from '../base.js';
17
+ import { getGuardInstructions, getGuardPath, guardTemplate, } from '../templates/guard.js';
18
+ // ============================================================================
19
+ // Generator Implementation
20
+ // ============================================================================
21
+ /**
22
+ * Guard generator - creates auth guard files
23
+ */
24
+ export class GuardGenerator extends BaseGenerator {
25
+ metadata = {
26
+ name: 'guard',
27
+ description: 'Generate authentication guard definitions',
28
+ longDescription: `
29
+ Scaffold authentication guards for VeloxTS procedures.
30
+
31
+ Guards protect procedures by checking user authentication, roles,
32
+ permissions, or custom conditions before allowing execution.
33
+
34
+ Examples:
35
+ velox make guard subscriber # Simple guard
36
+ velox make guard admin --role # Role-based guard
37
+ velox make guard post --permission # Permission-based guard
38
+ velox make guard document --owner # Ownership guard
39
+ velox make guard access --composite # Composite guards
40
+ `,
41
+ aliases: ['g', 'grd'],
42
+ category: 'auth',
43
+ };
44
+ options = [
45
+ {
46
+ name: 'role',
47
+ short: 'r',
48
+ description: 'Generate role-based guard',
49
+ type: 'boolean',
50
+ default: false,
51
+ },
52
+ {
53
+ name: 'permission',
54
+ short: 'p',
55
+ description: 'Generate permission-based guard',
56
+ type: 'boolean',
57
+ default: false,
58
+ },
59
+ {
60
+ name: 'owner',
61
+ short: 'o',
62
+ description: 'Generate ownership guard',
63
+ type: 'boolean',
64
+ default: false,
65
+ },
66
+ {
67
+ name: 'composite',
68
+ short: 'c',
69
+ description: 'Generate composite guard utilities',
70
+ type: 'boolean',
71
+ default: false,
72
+ },
73
+ ];
74
+ /**
75
+ * Validate and transform raw options
76
+ */
77
+ validateOptions(raw) {
78
+ return {
79
+ role: Boolean(raw.role ?? false),
80
+ permission: Boolean(raw.permission ?? false),
81
+ ownership: Boolean(raw.owner ?? false),
82
+ composite: Boolean(raw.composite ?? false),
83
+ };
84
+ }
85
+ /**
86
+ * Generate guard files
87
+ */
88
+ async generate(config) {
89
+ const context = this.createContext(config);
90
+ const files = [];
91
+ // Generate guard file
92
+ const guardContent = guardTemplate(context);
93
+ files.push({
94
+ path: getGuardPath(config.entityName, config.project),
95
+ content: guardContent,
96
+ });
97
+ return {
98
+ files,
99
+ postInstructions: getGuardInstructions(config.entityName, config.options),
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Factory function for creating a GuardGenerator instance
105
+ */
106
+ export function createGuardGenerator() {
107
+ return new GuardGenerator();
108
+ }
109
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/generators/generators/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAS/B,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,aAA2B;IACpD,QAAQ,GAAsB;QACrC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2CAA2C;QACxD,eAAe,EAAE;;;;;;;;;;;;CAYpB;QACG,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,MAAM;KACjB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,iCAAiC;YAC9C,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YAChC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC;YAC5C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAqC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,sBAAsB;QACtB,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YACrD,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,cAAc,EAAE,CAAC;AAC9B,CAAC"}
@@ -3,13 +3,21 @@
3
3
  *
4
4
  * Re-exports all built-in generators and provides auto-registration.
5
5
  */
6
+ export { ActionGenerator, createActionGenerator } from './action.js';
7
+ export { createExceptionGenerator, ExceptionGenerator } from './exception.js';
6
8
  export { createFactoryGenerator, FactoryGenerator } from './factory.js';
9
+ export { createGuardGenerator, GuardGenerator } from './guard.js';
10
+ export { createLayoutGenerator, LayoutGenerator } from './layout.js';
11
+ export { createMiddlewareGenerator, MiddlewareGenerator } from './middleware.js';
7
12
  export { createMigrationGenerator, MigrationGenerator } from './migration.js';
8
13
  export { createModelGenerator, ModelGenerator } from './model.js';
14
+ export { createPageGenerator, PageGenerator } from './page.js';
15
+ export { createPolicyGenerator, PolicyGenerator } from './policy.js';
9
16
  export { createProcedureGenerator, ProcedureGenerator } from './procedure.js';
10
17
  export { createResourceGenerator, ResourceGenerator } from './resource.js';
11
18
  export { createSchemaGenerator, SchemaGenerator } from './schema.js';
12
19
  export { createSeederGenerator, SeederGenerator } from './seeder.js';
20
+ export { createServiceGenerator, ServiceGenerator } from './service.js';
13
21
  export { createTestGenerator, TestGenerator } from './test.js';
14
22
  /**
15
23
  * Register all built-in generators with the global registry.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAM/D;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAwBhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAM/D;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAsChD"}
@@ -4,24 +4,40 @@
4
4
  * Re-exports all built-in generators and provides auto-registration.
5
5
  */
6
6
  import { registerGenerator } from '../registry.js';
7
+ import { createActionGenerator } from './action.js';
8
+ import { createExceptionGenerator } from './exception.js';
7
9
  import { createFactoryGenerator } from './factory.js';
10
+ import { createGuardGenerator } from './guard.js';
11
+ import { createLayoutGenerator } from './layout.js';
12
+ import { createMiddlewareGenerator } from './middleware.js';
8
13
  import { createMigrationGenerator } from './migration.js';
9
14
  import { createModelGenerator } from './model.js';
15
+ import { createPageGenerator } from './page.js';
16
+ import { createPolicyGenerator } from './policy.js';
10
17
  import { createProcedureGenerator } from './procedure.js';
11
18
  import { createResourceGenerator } from './resource.js';
12
19
  import { createSchemaGenerator } from './schema.js';
13
20
  import { createSeederGenerator } from './seeder.js';
21
+ import { createServiceGenerator } from './service.js';
14
22
  import { createTestGenerator } from './test.js';
15
23
  // ============================================================================
16
24
  // Generator Exports
17
25
  // ============================================================================
26
+ export { ActionGenerator, createActionGenerator } from './action.js';
27
+ export { createExceptionGenerator, ExceptionGenerator } from './exception.js';
18
28
  export { createFactoryGenerator, FactoryGenerator } from './factory.js';
29
+ export { createGuardGenerator, GuardGenerator } from './guard.js';
30
+ export { createLayoutGenerator, LayoutGenerator } from './layout.js';
31
+ export { createMiddlewareGenerator, MiddlewareGenerator } from './middleware.js';
19
32
  export { createMigrationGenerator, MigrationGenerator } from './migration.js';
20
33
  export { createModelGenerator, ModelGenerator } from './model.js';
34
+ export { createPageGenerator, PageGenerator } from './page.js';
35
+ export { createPolicyGenerator, PolicyGenerator } from './policy.js';
21
36
  export { createProcedureGenerator, ProcedureGenerator } from './procedure.js';
22
37
  export { createResourceGenerator, ResourceGenerator } from './resource.js';
23
38
  export { createSchemaGenerator, SchemaGenerator } from './schema.js';
24
39
  export { createSeederGenerator, SeederGenerator } from './seeder.js';
40
+ export { createServiceGenerator, ServiceGenerator } from './service.js';
25
41
  export { createTestGenerator, TestGenerator } from './test.js';
26
42
  // ============================================================================
27
43
  // Auto-Registration
@@ -47,5 +63,16 @@ export function registerBuiltinGenerators() {
47
63
  registerGenerator(createSeederGenerator());
48
64
  // Register factory generator
49
65
  registerGenerator(createFactoryGenerator());
66
+ // Register RSC generators (for full-stack projects)
67
+ registerGenerator(createPageGenerator());
68
+ registerGenerator(createLayoutGenerator());
69
+ registerGenerator(createActionGenerator());
70
+ // Register infrastructure generators
71
+ registerGenerator(createMiddlewareGenerator());
72
+ registerGenerator(createServiceGenerator());
73
+ registerGenerator(createExceptionGenerator());
74
+ // Register auth generators
75
+ registerGenerator(createGuardGenerator());
76
+ registerGenerator(createPolicyGenerator());
50
77
  }
51
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/D,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,2BAA2B;IAC3B,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Layout Generator
3
+ *
4
+ * Scaffolds RSC layout files for VeloxTS full-stack applications.
5
+ *
6
+ * Usage:
7
+ * velox make layout <name> [options]
8
+ *
9
+ * Examples:
10
+ * velox make layout root --root # Root layout with html/body
11
+ * velox make layout dashboard --sidebar # Layout with sidebar nav
12
+ * velox make layout admin --header --footer
13
+ */
14
+ import { BaseGenerator } from '../base.js';
15
+ import { type LayoutOptions } from '../templates/layout.js';
16
+ import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
17
+ /**
18
+ * Layout generator - creates RSC layout files
19
+ */
20
+ export declare class LayoutGenerator extends BaseGenerator<LayoutOptions> {
21
+ readonly metadata: GeneratorMetadata;
22
+ readonly options: ReadonlyArray<GeneratorOption>;
23
+ /**
24
+ * Validate and transform raw options
25
+ */
26
+ validateOptions(raw: Record<string, unknown>): LayoutOptions;
27
+ /**
28
+ * Generate layout files
29
+ */
30
+ generate(config: GeneratorConfig<LayoutOptions>): Promise<GeneratorOutput>;
31
+ }
32
+ /**
33
+ * Factory function for creating a LayoutGenerator instance
34
+ */
35
+ export declare function createLayoutGenerator(): LayoutGenerator;
36
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAEV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAiBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA6B9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAS5D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAyBjF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Layout Generator
3
+ *
4
+ * Scaffolds RSC layout files for VeloxTS full-stack applications.
5
+ *
6
+ * Usage:
7
+ * velox make layout <name> [options]
8
+ *
9
+ * Examples:
10
+ * velox make layout root --root # Root layout with html/body
11
+ * velox make layout dashboard --sidebar # Layout with sidebar nav
12
+ * velox make layout admin --header --footer
13
+ */
14
+ import { BaseGenerator } from '../base.js';
15
+ import { getLayoutInstructions, getLayoutPath, layoutTemplate, } from '../templates/layout.js';
16
+ import { GeneratorError, GeneratorErrorCode } from '../types.js';
17
+ // ============================================================================
18
+ // Generator Implementation
19
+ // ============================================================================
20
+ /**
21
+ * Layout generator - creates RSC layout files
22
+ */
23
+ export class LayoutGenerator extends BaseGenerator {
24
+ metadata = {
25
+ name: 'layout',
26
+ description: 'Generate an RSC layout component',
27
+ longDescription: `
28
+ Scaffold a React Server Component layout for VeloxTS full-stack applications.
29
+
30
+ Layouts wrap pages and can be nested. Use --root for the root layout that
31
+ includes <html> and <body> tags. Use --sidebar, --header, or --footer to
32
+ include common UI elements.
33
+
34
+ Examples:
35
+ velox make layout root --root # Root layout with html/body
36
+ velox make layout dashboard --sidebar # Layout with sidebar navigation
37
+ velox make layout admin --header --footer
38
+ `,
39
+ aliases: ['l', 'lay'],
40
+ category: 'resource',
41
+ };
42
+ options = [
43
+ {
44
+ name: 'root',
45
+ short: 'r',
46
+ description: 'Generate root layout with html/body tags',
47
+ type: 'boolean',
48
+ default: false,
49
+ },
50
+ {
51
+ name: 'header',
52
+ short: 'H',
53
+ description: 'Include header navigation',
54
+ type: 'boolean',
55
+ default: false,
56
+ },
57
+ {
58
+ name: 'footer',
59
+ short: 'F',
60
+ description: 'Include footer',
61
+ type: 'boolean',
62
+ default: false,
63
+ },
64
+ {
65
+ name: 'sidebar',
66
+ short: 's',
67
+ description: 'Include sidebar navigation',
68
+ type: 'boolean',
69
+ default: false,
70
+ },
71
+ ];
72
+ /**
73
+ * Validate and transform raw options
74
+ */
75
+ validateOptions(raw) {
76
+ return {
77
+ root: Boolean(raw.root ?? false),
78
+ header: Boolean(raw.header ?? false),
79
+ footer: Boolean(raw.footer ?? false),
80
+ sidebar: Boolean(raw.sidebar ?? false),
81
+ };
82
+ }
83
+ /**
84
+ * Generate layout files
85
+ */
86
+ async generate(config) {
87
+ // Check if this is a full-stack project
88
+ if (config.project.projectType !== 'fullstack') {
89
+ throw new GeneratorError(GeneratorErrorCode.PROJECT_STRUCTURE, 'Layout generator requires a full-stack VeloxTS project.', 'Create a full-stack project with: npx create-velox-app my-app --full-stack');
90
+ }
91
+ const context = this.createContext(config);
92
+ const files = [];
93
+ // Generate layout file
94
+ const layoutContent = layoutTemplate(context);
95
+ files.push({
96
+ path: getLayoutPath(config.entityName, config.project),
97
+ content: layoutContent,
98
+ });
99
+ return {
100
+ files,
101
+ postInstructions: getLayoutInstructions(config.entityName, config.options),
102
+ };
103
+ }
104
+ }
105
+ /**
106
+ * Factory function for creating a LayoutGenerator instance
107
+ */
108
+ export function createLayoutGenerator() {
109
+ return new LayoutGenerator();
110
+ }
111
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/generators/generators/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,aAAa,EAEb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAA4B;IACtD,QAAQ,GAAsB;QACrC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;QAC/C,eAAe,EAAE;;;;;;;;;;;CAWpB;QACG,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0CAA0C;YACvD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsC;QACnD,wCAAwC;QACxC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,iBAAiB,EACpC,yDAAyD,EACzD,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,uBAAuB;QACvB,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YACtD,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC3E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Middleware Generator
3
+ *
4
+ * Scaffolds middleware files for VeloxTS applications.
5
+ *
6
+ * Usage:
7
+ * velox make middleware <name> [options]
8
+ *
9
+ * Examples:
10
+ * velox make middleware request-logger # Custom middleware
11
+ * velox make middleware timing --timing # Request timing
12
+ * velox make middleware logger --logging # Structured logging
13
+ * velox make middleware limiter --rate # Rate limiting
14
+ * velox make middleware cors --cors # CORS handling
15
+ */
16
+ import { BaseGenerator } from '../base.js';
17
+ import { type MiddlewareOptions } from '../templates/middleware.js';
18
+ import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
19
+ /**
20
+ * Middleware generator - creates middleware files
21
+ */
22
+ export declare class MiddlewareGenerator extends BaseGenerator<MiddlewareOptions> {
23
+ readonly metadata: GeneratorMetadata;
24
+ readonly options: ReadonlyArray<GeneratorOption>;
25
+ /**
26
+ * Validate and transform raw options
27
+ */
28
+ validateOptions(raw: Record<string, unknown>): MiddlewareOptions;
29
+ /**
30
+ * Generate middleware files
31
+ */
32
+ generate(config: GeneratorConfig<MiddlewareOptions>): Promise<GeneratorOutput>;
33
+ }
34
+ /**
35
+ * Factory function for creating a MiddlewareGenerator instance
36
+ */
37
+ export declare function createMiddlewareGenerator(): MiddlewareGenerator;
38
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAEV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAkBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA6B9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB;IAShE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAgBrF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Middleware Generator
3
+ *
4
+ * Scaffolds middleware files for VeloxTS applications.
5
+ *
6
+ * Usage:
7
+ * velox make middleware <name> [options]
8
+ *
9
+ * Examples:
10
+ * velox make middleware request-logger # Custom middleware
11
+ * velox make middleware timing --timing # Request timing
12
+ * velox make middleware logger --logging # Structured logging
13
+ * velox make middleware limiter --rate # Rate limiting
14
+ * velox make middleware cors --cors # CORS handling
15
+ */
16
+ import { BaseGenerator } from '../base.js';
17
+ import { getMiddlewareInstructions, getMiddlewarePath, middlewareTemplate, } from '../templates/middleware.js';
18
+ // ============================================================================
19
+ // Generator Implementation
20
+ // ============================================================================
21
+ /**
22
+ * Middleware generator - creates middleware files
23
+ */
24
+ export class MiddlewareGenerator extends BaseGenerator {
25
+ metadata = {
26
+ name: 'middleware',
27
+ description: 'Generate Fastify middleware plugins',
28
+ longDescription: `
29
+ Scaffold middleware for VeloxTS applications.
30
+
31
+ Middleware runs on every request and can modify the request/response
32
+ or perform side effects like logging, rate limiting, and CORS handling.
33
+
34
+ Examples:
35
+ velox make middleware request-logger # Custom middleware
36
+ velox make middleware timing --timing # Request timing
37
+ velox make middleware logger --logging # Structured logging
38
+ velox make middleware limiter --rate # Rate limiting
39
+ velox make middleware cors --cors # CORS handling
40
+ `,
41
+ aliases: ['mw', 'mid'],
42
+ category: 'infrastructure',
43
+ };
44
+ options = [
45
+ {
46
+ name: 'timing',
47
+ short: 't',
48
+ description: 'Generate request timing middleware',
49
+ type: 'boolean',
50
+ default: false,
51
+ },
52
+ {
53
+ name: 'logging',
54
+ short: 'l',
55
+ description: 'Generate structured logging middleware',
56
+ type: 'boolean',
57
+ default: false,
58
+ },
59
+ {
60
+ name: 'rate',
61
+ short: 'r',
62
+ description: 'Generate rate limiting middleware',
63
+ type: 'boolean',
64
+ default: false,
65
+ },
66
+ {
67
+ name: 'cors',
68
+ short: 'c',
69
+ description: 'Generate CORS middleware',
70
+ type: 'boolean',
71
+ default: false,
72
+ },
73
+ ];
74
+ /**
75
+ * Validate and transform raw options
76
+ */
77
+ validateOptions(raw) {
78
+ return {
79
+ timing: Boolean(raw.timing ?? false),
80
+ logging: Boolean(raw.logging ?? false),
81
+ rateLimit: Boolean(raw.rate ?? false),
82
+ cors: Boolean(raw.cors ?? false),
83
+ };
84
+ }
85
+ /**
86
+ * Generate middleware files
87
+ */
88
+ async generate(config) {
89
+ const context = this.createContext(config);
90
+ const files = [];
91
+ // Generate middleware file
92
+ const middlewareContent = middlewareTemplate(context);
93
+ files.push({
94
+ path: getMiddlewarePath(config.entityName, config.project),
95
+ content: middlewareContent,
96
+ });
97
+ return {
98
+ files,
99
+ postInstructions: getMiddlewareInstructions(config.entityName, config.options),
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Factory function for creating a MiddlewareGenerator instance
105
+ */
106
+ export function createMiddlewareGenerator() {
107
+ return new MiddlewareGenerator();
108
+ }
109
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/generators/generators/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAEjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AASpC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAgC;IAC9D,QAAQ,GAAsB;QACrC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,qCAAqC;QAClD,eAAe,EAAE;;;;;;;;;;;;CAYpB;QACG,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QACtB,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,wCAAwC;YACrD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,mCAAmC;YAChD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YACrC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAA0C;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YAC1D,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC/E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC"}
@@ -16,23 +16,35 @@
16
16
  import { BaseGenerator } from '../base.js';
17
17
  import { type ModelOptions } from '../templates/model.js';
18
18
  import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
19
+ /**
20
+ * CLI options including interactive flags (extends ModelOptions for template)
21
+ */
22
+ interface ModelCliOptions extends ModelOptions {
23
+ interactive: boolean;
24
+ skipFields: boolean;
25
+ }
19
26
  /**
20
27
  * Model generator - creates Prisma model, Zod schema, and procedures
21
28
  */
22
- export declare class ModelGenerator extends BaseGenerator<ModelOptions> {
29
+ export declare class ModelGenerator extends BaseGenerator<ModelCliOptions> {
23
30
  readonly metadata: GeneratorMetadata;
24
31
  readonly options: ReadonlyArray<GeneratorOption>;
25
32
  /**
26
33
  * Validate and transform raw options
27
34
  */
28
- validateOptions(raw: Record<string, unknown>): ModelOptions;
35
+ validateOptions(raw: Record<string, unknown>): ModelCliOptions;
36
+ /**
37
+ * Generate model files with optional interactive field collection
38
+ */
39
+ generate(config: GeneratorConfig<ModelCliOptions>): Promise<GeneratorOutput>;
29
40
  /**
30
- * Generate model files
41
+ * Collect fields interactively from user
31
42
  */
32
- generate(config: GeneratorConfig<ModelOptions>): Promise<GeneratorOutput>;
43
+ private collectFieldsInteractively;
33
44
  }
34
45
  /**
35
46
  * Create a new model generator instance
36
47
  */
37
48
  export declare function createModelGenerator(): ModelGenerator;
49
+ export {};
38
50
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAiBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA6B9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IAS3D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAchF;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,UAAU,eAAgB,SAAQ,YAAY;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,eAAe,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAiBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA0C9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAW9D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAkElF;;OAEG;YACW,0BAA0B;CAuBzC;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}