@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
@@ -3,32 +3,84 @@
3
3
  *
4
4
  * Generates Prisma model, Zod schema, and optionally procedures.
5
5
  */
6
+ import { FIELD_TYPES } from '../fields/types.js';
6
7
  // ============================================================================
7
8
  // Prisma Model Template
8
9
  // ============================================================================
10
+ /**
11
+ * Helper: Convert field to Prisma syntax
12
+ */
13
+ function fieldToPrisma(field) {
14
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
15
+ let prismaType = typeInfo?.prismaType ?? 'String';
16
+ // Handle enum type specially
17
+ if (field.type === 'enum' && field.enumDef) {
18
+ prismaType = field.enumDef.name;
19
+ }
20
+ // Build attributes
21
+ const attributes = [];
22
+ if (field.attributes.unique)
23
+ attributes.push('@unique');
24
+ if (field.attributes.hasDefault && field.attributes.defaultValue) {
25
+ attributes.push(`@default(${field.attributes.defaultValue})`);
26
+ }
27
+ // Optional fields get ? suffix
28
+ const optional = field.attributes.optional ? '?' : '';
29
+ const attrStr = attributes.length > 0 ? ` ${attributes.join(' ')}` : '';
30
+ return ` ${field.name.padEnd(10)} ${prismaType}${optional}${attrStr}`;
31
+ }
32
+ /**
33
+ * Helper: Generate Prisma enums
34
+ */
35
+ function generatePrismaEnums(fields) {
36
+ const enumFields = fields.filter((f) => f.type === 'enum' && f.enumDef);
37
+ if (enumFields.length === 0)
38
+ return '';
39
+ const enums = enumFields.map((f) => {
40
+ const enumDef = f.enumDef;
41
+ if (!enumDef)
42
+ return '';
43
+ const values = enumDef.values.map((v) => ` ${v}`).join('\n');
44
+ return `enum ${enumDef.name} {\n${values}\n}`;
45
+ });
46
+ return `\n${enums.join('\n\n')}\n`;
47
+ }
9
48
  /**
10
49
  * Generate Prisma model definition
11
50
  */
12
51
  function generatePrismaModel(ctx) {
13
52
  const { entity, options } = ctx;
14
- const fields = [' id String @id @default(uuid())'];
15
- // Add timestamps if enabled
16
- if (options.timestamps) {
17
- fields.push(' createdAt DateTime @default(now())');
18
- fields.push(' updatedAt DateTime @updatedAt');
19
- }
20
- // Add soft delete if enabled
21
- if (options.softDelete) {
22
- fields.push(' deletedAt DateTime?');
53
+ const { softDelete, timestamps, fields = [] } = options;
54
+ const baseFields = [' id String @id @default(uuid())'];
55
+ // Add custom fields or placeholder
56
+ let customFields;
57
+ if (fields.length > 0) {
58
+ customFields = `\n${fields.map((f) => fieldToPrisma(f)).join('\n')}`;
23
59
  }
24
- return `/// ${entity.humanReadable} model
25
- /// Add your fields below the id field
26
- model ${entity.pascal} {
27
- ${fields.join('\n')}
60
+ else {
61
+ customFields = `
28
62
 
29
63
  // TODO: Add your ${entity.humanReadable} fields here
30
64
  // name String
31
- // email String @unique
65
+ // email String @unique`;
66
+ }
67
+ // Add timestamps if enabled
68
+ const timestampFields = timestamps
69
+ ? `
70
+ createdAt DateTime @default(now())
71
+ updatedAt DateTime @updatedAt`
72
+ : '';
73
+ // Add soft delete if enabled
74
+ const softDeleteField = softDelete
75
+ ? `
76
+ deletedAt DateTime?`
77
+ : '';
78
+ // Generate enum definitions if any
79
+ const enumDefs = fields.length > 0 ? generatePrismaEnums(fields) : '';
80
+ return `/// ${entity.humanReadable} model
81
+ /// Add your fields below the id field
82
+ ${enumDefs}model ${entity.pascal} {
83
+ ${baseFields.join('\n')}${customFields}${timestampFields}${softDeleteField}
32
84
 
33
85
  @@map("${entity.snake}")
34
86
  }
@@ -37,21 +89,90 @@ ${fields.join('\n')}
37
89
  // ============================================================================
38
90
  // Zod Schema Template
39
91
  // ============================================================================
92
+ /**
93
+ * Helper: Convert field to Zod schema
94
+ */
95
+ function fieldToZod(field) {
96
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
97
+ let zodType;
98
+ // Handle enum type specially
99
+ if (field.type === 'enum' && field.enumDef) {
100
+ const values = field.enumDef.values.map((v) => `'${v}'`).join(', ');
101
+ zodType = `z.enum([${values}])`;
102
+ }
103
+ else {
104
+ zodType = typeInfo?.zodSchema ?? 'z.string()';
105
+ }
106
+ // Optional (nullable)
107
+ if (field.attributes.optional) {
108
+ zodType += '.nullable()';
109
+ }
110
+ return ` ${field.name}: ${zodType},`;
111
+ }
112
+ /**
113
+ * Helper: Convert field to Zod input schema (for create/update)
114
+ */
115
+ function fieldToZodInput(field, isUpdate) {
116
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
117
+ let zodType;
118
+ // Handle enum type specially
119
+ if (field.type === 'enum' && field.enumDef) {
120
+ const values = field.enumDef.values.map((v) => `'${v}'`).join(', ');
121
+ zodType = `z.enum([${values}])`;
122
+ }
123
+ else {
124
+ zodType = typeInfo?.zodSchema ?? 'z.string()';
125
+ }
126
+ // For update inputs, make all fields optional
127
+ // For create inputs, respect the field's optional attribute
128
+ if (isUpdate || field.attributes.optional) {
129
+ zodType += '.optional()';
130
+ }
131
+ return ` ${field.name}: ${zodType},`;
132
+ }
40
133
  /**
41
134
  * Generate Zod schema file
42
135
  */
43
136
  function generateZodSchema(ctx) {
44
137
  const { entity, options } = ctx;
138
+ const { timestamps, softDelete, fields = [] } = options;
45
139
  const schemaFields = [' id: z.string().uuid(),'];
140
+ // Add custom fields or placeholder comments
141
+ if (fields.length > 0) {
142
+ schemaFields.push(...fields.map((f) => fieldToZod(f)));
143
+ }
46
144
  // Add timestamps if enabled
47
- if (options.timestamps) {
145
+ if (timestamps) {
48
146
  schemaFields.push(' createdAt: z.string().datetime(),');
49
147
  schemaFields.push(' updatedAt: z.string().datetime(),');
50
148
  }
51
149
  // Add soft delete if enabled
52
- if (options.softDelete) {
150
+ if (softDelete) {
53
151
  schemaFields.push(' deletedAt: z.string().datetime().nullable(),');
54
152
  }
153
+ // Generate input fields
154
+ const createInputFields = [];
155
+ const updateInputFields = [];
156
+ if (fields.length > 0) {
157
+ createInputFields.push(...fields.map((f) => fieldToZodInput(f, false)));
158
+ updateInputFields.push(...fields.map((f) => fieldToZodInput(f, true)));
159
+ }
160
+ const createInputPlaceholder = fields.length === 0
161
+ ? ` // TODO: Add required fields for creating a ${entity.humanReadable}
162
+ // name: z.string().min(1).max(100),
163
+ // email: z.string().email(),`
164
+ : '';
165
+ const updateInputPlaceholder = fields.length === 0
166
+ ? ` // TODO: Add optional fields for updating a ${entity.humanReadable}
167
+ // name: z.string().min(1).max(100).optional(),
168
+ // email: z.string().email().optional(),`
169
+ : '';
170
+ const responsePlaceholder = fields.length === 0
171
+ ? ` // TODO: Add your ${entity.humanReadable} fields here
172
+ // name: z.string().min(1).max(100),
173
+ // email: z.string().email(),
174
+ `
175
+ : '';
55
176
  return `/**
56
177
  * ${entity.pascal} Schemas
57
178
  *
@@ -69,10 +190,7 @@ import { z } from '@veloxts/velox';
69
190
  */
70
191
  export const ${entity.pascal}Schema = z.object({
71
192
  ${schemaFields.join('\n')}
72
- // TODO: Add your ${entity.humanReadable} fields here
73
- // name: z.string().min(1).max(100),
74
- // email: z.string().email(),
75
- });
193
+ ${responsePlaceholder}});
76
194
 
77
195
  export type ${entity.pascal} = z.infer<typeof ${entity.pascal}Schema>;
78
196
 
@@ -84,9 +202,7 @@ export type ${entity.pascal} = z.infer<typeof ${entity.pascal}Schema>;
84
202
  * Create ${entity.pascal} input schema
85
203
  */
86
204
  export const Create${entity.pascal}Input = z.object({
87
- // TODO: Add required fields for creating a ${entity.humanReadable}
88
- // name: z.string().min(1).max(100),
89
- // email: z.string().email(),
205
+ ${createInputFields.join('\n')}${createInputPlaceholder}
90
206
  });
91
207
 
92
208
  export type Create${entity.pascal}Data = z.infer<typeof Create${entity.pascal}Input>;
@@ -95,9 +211,7 @@ export type Create${entity.pascal}Data = z.infer<typeof Create${entity.pascal}In
95
211
  * Update ${entity.pascal} input schema
96
212
  */
97
213
  export const Update${entity.pascal}Input = z.object({
98
- // TODO: Add optional fields for updating a ${entity.humanReadable}
99
- // name: z.string().min(1).max(100).optional(),
100
- // email: z.string().email().optional(),
214
+ ${updateInputFields.join('\n')}${updateInputPlaceholder}
101
215
  });
102
216
 
103
217
  export type Update${entity.pascal}Data = z.infer<typeof Update${entity.pascal}Input>;
@@ -152,7 +266,18 @@ function generateProcedures(ctx) {
152
266
  const findWhereClause = options.softDelete
153
267
  ? `{ id: input.id, deletedAt: null }`
154
268
  : `{ id: input.id }`;
269
+ const { fields = [] } = options;
270
+ // Build response fields
155
271
  const responseFields = ['id: item.id,'];
272
+ // Add custom fields
273
+ for (const field of fields) {
274
+ if (field.type === 'datetime') {
275
+ responseFields.push(`${field.name}: item.${field.name}.toISOString(),`);
276
+ }
277
+ else {
278
+ responseFields.push(`${field.name}: item.${field.name},`);
279
+ }
280
+ }
156
281
  if (options.timestamps) {
157
282
  responseFields.push('createdAt: item.createdAt.toISOString(),');
158
283
  responseFields.push('updatedAt: item.updatedAt.toISOString(),');
@@ -160,7 +285,34 @@ function generateProcedures(ctx) {
160
285
  if (options.softDelete) {
161
286
  responseFields.push('deletedAt: item.deletedAt?.toISOString() ?? null,');
162
287
  }
288
+ // Build database interface fields
163
289
  const dbInterfaceFields = ['id: string;'];
290
+ // Add custom fields to interface
291
+ for (const field of fields) {
292
+ let tsType = 'string';
293
+ switch (field.type) {
294
+ case 'int':
295
+ case 'float':
296
+ tsType = 'number';
297
+ break;
298
+ case 'boolean':
299
+ tsType = 'boolean';
300
+ break;
301
+ case 'datetime':
302
+ tsType = 'Date';
303
+ break;
304
+ case 'json':
305
+ tsType = 'unknown';
306
+ break;
307
+ case 'enum':
308
+ tsType = field.enumDef?.name ?? 'string';
309
+ break;
310
+ default:
311
+ tsType = 'string';
312
+ }
313
+ const nullable = field.attributes.optional ? ' | null' : '';
314
+ dbInterfaceFields.push(`${field.name}: ${tsType}${nullable};`);
315
+ }
164
316
  if (options.timestamps) {
165
317
  dbInterfaceFields.push('createdAt: Date;');
166
318
  dbInterfaceFields.push('updatedAt: Date;');
@@ -168,6 +320,9 @@ function generateProcedures(ctx) {
168
320
  if (options.softDelete) {
169
321
  dbInterfaceFields.push('deletedAt: Date | null;');
170
322
  }
323
+ // Build placeholder comments
324
+ const dbInterfacePlaceholder = fields.length === 0 ? '// TODO: Add your fields here' : '';
325
+ const responsePlaceholder = fields.length === 0 ? '// TODO: Map your fields here' : '';
171
326
  return `/**
172
327
  * ${entity.pascal} Procedures
173
328
  *
@@ -189,14 +344,14 @@ import {
189
344
  // Database model type - should match your Prisma schema
190
345
  interface Db${entity.pascal} {
191
346
  ${dbInterfaceFields.join('\n ')}
192
- // TODO: Add your ${entity.humanReadable} fields here
347
+ ${dbInterfacePlaceholder}
193
348
  }
194
349
 
195
350
  // Helper to convert database model to response
196
351
  function toResponse(item: Db${entity.pascal}) {
197
352
  return {
198
353
  ${responseFields.join('\n ')}
199
- // TODO: Map your ${entity.humanReadable} fields here
354
+ ${responsePlaceholder}
200
355
  };
201
356
  }
202
357
 
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/generators/templates/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/generators/templates/model.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoBjD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC;IAElD,6BAA6B;IAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACjE,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAyB;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,QAAQ,OAAO,CAAC,IAAI,OAAO,MAAM,KAAK,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAkC;IAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExD,MAAM,UAAU,GAAa,CAAC,2CAA2C,CAAC,CAAC;IAE3E,mCAAmC;IACnC,IAAI,YAAoB,CAAC;IACzB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,YAAY,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,YAAY,GAAG;;sBAEG,MAAM,CAAC,aAAa;;gCAEV,CAAC;IAC/B,CAAC;IAED,4BAA4B;IAC5B,MAAM,eAAe,GAAG,UAAU;QAChC,CAAC,CAAC;;gCAE0B;QAC5B,CAAC,CAAC,EAAE,CAAC;IAEP,6BAA6B;IAC7B,MAAM,eAAe,GAAG,UAAU;QAChC,CAAC,CAAC;sBACgB;QAClB,CAAC,CAAC,EAAE,CAAC;IAEP,mCAAmC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtE,OAAO,OAAO,MAAM,CAAC,aAAa;;EAElC,QAAQ,SAAS,MAAM,CAAC,MAAM;EAC9B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe;;WAE/D,MAAM,CAAC,KAAK;;CAEtB,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,OAAe,CAAC;IAEpB,6BAA6B;IAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,GAAG,WAAW,MAAM,IAAI,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,QAAQ,EAAE,SAAS,IAAI,YAAY,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,aAAa,CAAC;IAC3B,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAsB,EAAE,QAAiB;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,OAAe,CAAC;IAEpB,6BAA6B;IAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,GAAG,WAAW,MAAM,IAAI,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,QAAQ,EAAE,SAAS,IAAI,YAAY,CAAC;IAChD,CAAC;IAED,8CAA8C;IAC9C,4DAA4D;IAC5D,IAAI,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO,IAAI,aAAa,CAAC;IAC3B,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAkC;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExD,MAAM,YAAY,GAAa,CAAC,0BAA0B,CAAC,CAAC;IAE5D,4CAA4C;IAC5C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,4BAA4B;IAC5B,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACzD,YAAY,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IACtE,CAAC;IAED,wBAAwB;IACxB,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,sBAAsB,GAC1B,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,iDAAiD,MAAM,CAAC,aAAa;;gCAE7C;QAC1B,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,sBAAsB,GAC1B,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,iDAAiD,MAAM,CAAC,aAAa;;2CAElC;QACrC,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,mBAAmB,GACvB,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,uBAAuB,MAAM,CAAC,aAAa;;;CAGlD;QACK,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;KACJ,MAAM,CAAC,MAAM;;gCAEc,MAAM,CAAC,aAAa;;;;;;;;;;KAU/C,MAAM,CAAC,MAAM;;eAEH,MAAM,CAAC,MAAM;EAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;EACvB,mBAAmB;;cAEP,MAAM,CAAC,MAAM,qBAAqB,MAAM,CAAC,MAAM;;;;;;;YAOjD,MAAM,CAAC,MAAM;;qBAEJ,MAAM,CAAC,MAAM;EAChC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB;;;oBAGnC,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,MAAM;;;YAGjE,MAAM,CAAC,MAAM;;qBAEJ,MAAM,CAAC,MAAM;EAChC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB;;;oBAGnC,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,MAAM;CAC5E,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAkC;IAC5D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAEhC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5E,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;QAClC,CAAC,CAAC;wBACkB,MAAM,CAAC,MAAM;;;;;;SAM5B;QACL,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,SAAS,CAAC;IAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;QACjC,CAAC,CAAC;;;QAGE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE;;;iBAGrD,MAAM,CAAC,KAAK,eAAe,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;iBAC9D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;;;;;SAMnE;QACL,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE;mCACpC,MAAM,CAAC,KAAK,aAAa,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oCAC7D,CAAC;IAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU;QACpC,CAAC,CAAC,gBAAgB,MAAM,CAAC,KAAK;;;UAGxB;QACN,CAAC,CAAC,gBAAgB,MAAM,CAAC,KAAK;;UAExB,CAAC;IAET,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU;QACxC,CAAC,CAAC,mCAAmC;QACrC,CAAC,CAAC,kBAAkB,CAAC;IAEvB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEhC,wBAAwB;IACxB,MAAM,cAAc,GAAG,CAAC,cAAc,CAAC,CAAC;IAExC,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,cAAc,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAChE,cAAc,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,cAAc,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC3E,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAC;IAE1C,iCAAiC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,QAAQ,CAAC;QAEtB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK,CAAC;YACX,KAAK,OAAO;gBACV,MAAM,GAAG,QAAQ,CAAC;gBAClB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,SAAS,CAAC;gBACnB,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,GAAG,MAAM,CAAC;gBAChB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,SAAS,CAAC;gBACnB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC;gBACzC,MAAM;YACR;gBACE,MAAM,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC;IAED,6BAA6B;IAC7B,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvF,OAAO;KACJ,MAAM,CAAC,MAAM;;yBAEO,MAAM,CAAC,mBAAmB;;;sCAGb,gBAAgB;;;IAGlD,MAAM,CAAC,MAAM;UACP,MAAM,CAAC,MAAM;UACb,MAAM,CAAC,MAAM;qBACF,MAAM,CAAC,KAAK;;;;;;;cAOnB,MAAM,CAAC,MAAM;IACvB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9B,sBAAsB;;;;8BAII,MAAM,CAAC,MAAM;;MAErC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;MAC7B,mBAAmB;;;;;;;;eAQV,MAAM,CAAC,KAAK,kCAAkC,MAAM,CAAC,MAAM;;oBAEtD,MAAM,CAAC,aAAa;YAC5B,MAAM,CAAC,MAAM;;OAElB,MAAM,CAAC,MAAM;;cAEN,MAAM,CAAC,MAAM;;kCAEO,MAAM,CAAC,KAAK;iBAC7B,eAAe;;;;;;gBAMhB,MAAM,CAAC,mBAAmB;YAC9B,MAAM,CAAC,MAAM;;QAEjB,MAAM,CAAC,YAAY;MACrB,SAAS;cACD,UAAU;;QAEhB,SAAS;;;;oBAIG,MAAM,CAAC,aAAa;aAC3B,MAAM,CAAC,MAAM;;UAEhB,MAAM,CAAC,MAAM;mBACJ,MAAM,CAAC,MAAM;cAClB,MAAM,CAAC,MAAM;;kCAEO,MAAM,CAAC,KAAK;;;;;;;0BAOpB,MAAM,CAAC,aAAa;YAClC,MAAM,CAAC,MAAM;;UAEf,MAAM,CAAC,MAAM;6DACsC,MAAM,CAAC,MAAM;cAC5D,MAAM,CAAC,MAAM;;;kCAGO,MAAM,CAAC,KAAK;;;;;;;;oCAQV,MAAM,CAAC,aAAa;cAC1C,MAAM,CAAC,MAAM;;SAElB,MAAM,CAAC,MAAM;6DACuC,MAAM,CAAC,MAAM;cAC5D,MAAM,CAAC,MAAM;;;kCAGO,MAAM,CAAC,KAAK;;;;;;;;gBAQ9B,MAAM,CAAC,aAAa;eACrB,MAAM,CAAC,MAAM;;UAElB,MAAM,CAAC,MAAM;;;;QAIf,WAAW;;;;CAIlB,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC,CAAC,GAAG,EAAE,EAAE;IACzE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmC,CAAC,GAAG,EAAE,EAAE;IACpE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC,CAAC,GAAG,EAAE,EAAE;IACxE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAkC;IACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAChC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,iBAAiB,MAAM,CAAC,KAAK,SAAS;QAC5C,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC;KAClC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,eAAe,MAAM,CAAC,KAAK,KAAK;QACtC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC;KAChC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,kBAAkB,MAAM,CAAC,MAAM,KAAK;YAC1C,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAkC;IACrE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAEhC,IAAI,YAAY,GAAG;;;yBAGI,MAAM,CAAC,KAAK;;;;;;;;wBAQb,MAAM,CAAC,KAAK;CACnC,CAAC;IAEA,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,YAAY,IAAI;;;;wBAII,MAAM,CAAC,MAAM;;;;;gBAKrB,MAAM,CAAC,KAAK;;iCAEK,MAAM,CAAC,KAAK;CAC5C,CAAC;IACA,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Page Template
3
+ *
4
+ * Generates RSC page files for VeloxTS full-stack applications.
5
+ */
6
+ import type { TemplateContext, TemplateFunction } from '../types.js';
7
+ export interface PageOptions {
8
+ /** Generate a client component with "use client" directive */
9
+ client: boolean;
10
+ /** Include a loading state skeleton */
11
+ loading: boolean;
12
+ /** Include data fetching example */
13
+ fetch: boolean;
14
+ }
15
+ /**
16
+ * Get the path for a page file
17
+ */
18
+ export declare function getPagePath(entityName: string, project: {
19
+ pagesDir?: string;
20
+ }): string;
21
+ /**
22
+ * Get the path for a loading file
23
+ */
24
+ export declare function getLoadingPath(_entityName: string, project: {
25
+ pagesDir?: string;
26
+ }): string;
27
+ /**
28
+ * Generate a loading skeleton
29
+ */
30
+ export declare function loadingTemplate(_ctx: TemplateContext<PageOptions>): string;
31
+ /**
32
+ * Page template function
33
+ */
34
+ export declare const pageTemplate: TemplateFunction<PageOptions>;
35
+ export declare function getPageInstructions(entityName: string, options: PageOptions): string;
36
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMrE,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;CAChB;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAGtF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG1F;AA4ED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,MAAM,CAmB1E;AAMD;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,CAAC,WAAW,CAKtD,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAqBpF"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Page Template
3
+ *
4
+ * Generates RSC page files for VeloxTS full-stack applications.
5
+ */
6
+ // ============================================================================
7
+ // Path Helpers
8
+ // ============================================================================
9
+ /**
10
+ * Get the path for a page file
11
+ */
12
+ export function getPagePath(entityName, project) {
13
+ const pagesDir = project.pagesDir ?? 'app/pages';
14
+ return `${pagesDir}/${entityName.toLowerCase()}.tsx`;
15
+ }
16
+ /**
17
+ * Get the path for a loading file
18
+ */
19
+ export function getLoadingPath(_entityName, project) {
20
+ const pagesDir = project.pagesDir ?? 'app/pages';
21
+ return `${pagesDir}/_loading.tsx`;
22
+ }
23
+ // ============================================================================
24
+ // Templates
25
+ // ============================================================================
26
+ /**
27
+ * Generate a server component page
28
+ */
29
+ function generateServerPage(ctx) {
30
+ const { entity, options } = ctx;
31
+ const imports = options.fetch
32
+ ? `import { db } from '@/lib/db';
33
+
34
+ `
35
+ : '';
36
+ const dataFetch = options.fetch
37
+ ? `
38
+ // Fetch data for this page
39
+ const data = await db.${entity.camel}.findMany();
40
+ `
41
+ : '';
42
+ return `${imports}/**
43
+ * ${entity.pascal} Page
44
+ *
45
+ * Server Component - runs on the server at request time.
46
+ */
47
+ export default async function ${entity.pascal}Page() {${dataFetch}
48
+ return (
49
+ <div className="${entity.kebab}-page">
50
+ <h1>${entity.humanReadable}</h1>
51
+ <p>Welcome to the ${entity.humanReadable} page.</p>
52
+ ${options.fetch ? `{/* Display fetched data */}` : ''}
53
+ </div>
54
+ );
55
+ }
56
+ `;
57
+ }
58
+ /**
59
+ * Generate a client component page
60
+ */
61
+ function generateClientPage(ctx) {
62
+ const { entity } = ctx;
63
+ return `'use client';
64
+
65
+ import { useState } from 'react';
66
+
67
+ /**
68
+ * ${entity.pascal} Page
69
+ *
70
+ * Client Component - hydrated on the client for interactivity.
71
+ */
72
+ export default function ${entity.pascal}Page() {
73
+ const [count, setCount] = useState(0);
74
+
75
+ return (
76
+ <div className="${entity.kebab}-page">
77
+ <h1>${entity.humanReadable}</h1>
78
+ <p>Welcome to the ${entity.humanReadable} page.</p>
79
+
80
+ <div className="counter">
81
+ <button onClick={() => setCount(c => c - 1)}>-</button>
82
+ <span>{count}</span>
83
+ <button onClick={() => setCount(c => c + 1)}>+</button>
84
+ </div>
85
+ </div>
86
+ );
87
+ }
88
+ `;
89
+ }
90
+ /**
91
+ * Generate a loading skeleton
92
+ */
93
+ export function loadingTemplate(_ctx) {
94
+ return `/**
95
+ * Loading Skeleton
96
+ *
97
+ * Displayed while the page is loading via React Suspense.
98
+ */
99
+ export default function Loading() {
100
+ return (
101
+ <div className="loading-skeleton">
102
+ <div className="skeleton-header" />
103
+ <div className="skeleton-content">
104
+ <div className="skeleton-line" />
105
+ <div className="skeleton-line" />
106
+ <div className="skeleton-line short" />
107
+ </div>
108
+ </div>
109
+ );
110
+ }
111
+ `;
112
+ }
113
+ // ============================================================================
114
+ // Main Template
115
+ // ============================================================================
116
+ /**
117
+ * Page template function
118
+ */
119
+ export const pageTemplate = (ctx) => {
120
+ if (ctx.options.client) {
121
+ return generateClientPage(ctx);
122
+ }
123
+ return generateServerPage(ctx);
124
+ };
125
+ // ============================================================================
126
+ // Post-generation Instructions
127
+ // ============================================================================
128
+ export function getPageInstructions(entityName, options) {
129
+ const lines = [
130
+ `Your ${entityName} page has been created.`,
131
+ '',
132
+ 'Next steps:',
133
+ ` 1. Add content to ${getPagePath(entityName, { pagesDir: 'app/pages' })}`,
134
+ ];
135
+ if (options.client) {
136
+ lines.push(' 2. Add state and event handlers for interactivity');
137
+ }
138
+ else {
139
+ lines.push(' 2. Add data fetching if needed');
140
+ }
141
+ if (options.loading) {
142
+ lines.push(' 3. Customize the loading skeleton');
143
+ }
144
+ lines.push(' 4. Add routing links to navigate to this page');
145
+ return lines.join('\n');
146
+ }
147
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/generators/templates/page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Policy Template
3
+ *
4
+ * Generates authorization policy files for VeloxTS applications.
5
+ */
6
+ import type { ProjectContext, TemplateFunction } from '../types.js';
7
+ export interface PolicyOptions {
8
+ /** Generate CRUD policy */
9
+ crud: boolean;
10
+ /** Generate resource-based policy */
11
+ resource: boolean;
12
+ /** Include soft delete policies */
13
+ softDelete: boolean;
14
+ }
15
+ /**
16
+ * Get the path for a policy file
17
+ */
18
+ export declare function getPolicyPath(entityName: string, _project: ProjectContext): string;
19
+ /**
20
+ * Policy template function
21
+ */
22
+ export declare const policyTemplate: TemplateFunction<PolicyOptions>;
23
+ export declare function getPolicyInstructions(entityName: string, options: PolicyOptions): string;
24
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMrF,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CAElF;AAkdD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,aAAa,CAQ1D,CAAC;AAMF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAexF"}