@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,230 @@
1
+ /**
2
+ * Interactive Menu Actions for Field Definition
3
+ *
4
+ * Handles the main menu and action selection for the interactive
5
+ * field definition workflow.
6
+ */
7
+ import * as p from '@clack/prompts';
8
+ import pc from 'picocolors';
9
+ import { displayFieldsSummary } from './display.js';
10
+ import { cloneTemplateFields, getTemplate, getTemplateOptions } from './templates.js';
11
+ import { FIELD_TYPES } from './types.js';
12
+ // ============================================================================
13
+ // Main Menu
14
+ // ============================================================================
15
+ /**
16
+ * Prompt for main menu action
17
+ */
18
+ export async function promptMainMenu(fieldCount) {
19
+ const options = [];
20
+ if (fieldCount === 0) {
21
+ options.push({ value: 'add', label: 'Add your first field', hint: 'Define a custom field' }, { value: 'template', label: 'Use a field template', hint: 'Quick add common patterns' }, { value: 'skip', label: 'Skip fields', hint: 'Generate skeleton only' });
22
+ }
23
+ else {
24
+ options.push({ value: 'add', label: 'Add another field', hint: 'Define a new field' }, { value: 'edit', label: 'Edit a field', hint: 'Modify existing field' }, { value: 'remove', label: 'Remove a field', hint: 'Delete a field' }, { value: 'template', label: 'Use a field template', hint: 'Quick add multiple fields' }, { value: 'done', label: "I'm done", hint: 'Generate the code' });
25
+ }
26
+ const result = await p.select({
27
+ message: 'What would you like to do?',
28
+ options,
29
+ initialValue: fieldCount === 0 ? 'add' : 'done',
30
+ });
31
+ if (p.isCancel(result)) {
32
+ return result;
33
+ }
34
+ return result;
35
+ }
36
+ // ============================================================================
37
+ // Field Selection
38
+ // ============================================================================
39
+ /**
40
+ * Select a field for editing or removal
41
+ */
42
+ export async function selectField(fields, purpose) {
43
+ if (fields.length === 0) {
44
+ p.log.warning('No fields to select.');
45
+ return null;
46
+ }
47
+ const options = fields.map((field, index) => {
48
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
49
+ const typeName = typeInfo?.label ?? field.type;
50
+ return {
51
+ value: index,
52
+ label: `${index + 1}. ${field.name}`,
53
+ hint: typeName,
54
+ };
55
+ });
56
+ options.push({
57
+ value: -1,
58
+ label: 'Cancel',
59
+ hint: 'Go back to main menu',
60
+ });
61
+ const message = purpose === 'edit' ? 'Select field to edit:' : 'Select field to remove:';
62
+ const result = await p.select({
63
+ message,
64
+ options,
65
+ });
66
+ if (p.isCancel(result) || result === -1) {
67
+ return null;
68
+ }
69
+ return result;
70
+ }
71
+ // ============================================================================
72
+ // Template Selection
73
+ // ============================================================================
74
+ /**
75
+ * Select and apply a field template
76
+ * Returns the fields to add, or null if cancelled
77
+ */
78
+ export async function selectAndApplyTemplate() {
79
+ const templateOptions = getTemplateOptions();
80
+ templateOptions.push({
81
+ value: 'cancel',
82
+ label: 'Cancel',
83
+ hint: 'Go back to main menu',
84
+ });
85
+ const result = await p.select({
86
+ message: 'Choose a template to add pre-configured fields:',
87
+ options: templateOptions,
88
+ });
89
+ if (p.isCancel(result) || result === 'cancel') {
90
+ return null;
91
+ }
92
+ const template = getTemplate(result);
93
+ if (!template) {
94
+ p.log.error('Template not found.');
95
+ return null;
96
+ }
97
+ // Show preview of template fields
98
+ console.log();
99
+ console.log(pc.bold(`Template: ${template.name}`));
100
+ console.log(pc.dim('Fields that will be added:'));
101
+ for (const field of template.fields) {
102
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
103
+ const typeName = typeInfo?.label ?? field.type;
104
+ const attrs = [];
105
+ if (field.attributes.optional)
106
+ attrs.push('optional');
107
+ if (field.attributes.unique)
108
+ attrs.push('unique');
109
+ if (field.attributes.hasDefault)
110
+ attrs.push(`default: ${field.attributes.defaultValue}`);
111
+ if (field.enumDef)
112
+ attrs.push(field.enumDef.name);
113
+ const attrStr = attrs.length > 0 ? pc.dim(` [${attrs.join(', ')}]`) : '';
114
+ console.log(` ${pc.cyan(field.name)}: ${typeName}${attrStr}`);
115
+ }
116
+ console.log();
117
+ const confirm = await p.confirm({
118
+ message: `Apply template "${template.name}" (${template.fields.length} fields)?`,
119
+ initialValue: true,
120
+ });
121
+ if (p.isCancel(confirm) || !confirm) {
122
+ return null;
123
+ }
124
+ return cloneTemplateFields(template);
125
+ }
126
+ // ============================================================================
127
+ // Confirmation
128
+ // ============================================================================
129
+ /**
130
+ * Confirm before finalizing fields
131
+ */
132
+ export async function confirmFieldsComplete(fields) {
133
+ if (fields.length === 0) {
134
+ const confirm = await p.confirm({
135
+ message: 'Generate resource without custom fields (skeleton only)?',
136
+ initialValue: false,
137
+ });
138
+ return !p.isCancel(confirm) && confirm;
139
+ }
140
+ displayFieldsSummary(fields);
141
+ const confirm = await p.confirm({
142
+ message: `Generate resource with ${fields.length} field${fields.length === 1 ? '' : 's'}?`,
143
+ initialValue: true,
144
+ });
145
+ return !p.isCancel(confirm) && confirm;
146
+ }
147
+ /**
148
+ * Confirm before removing a field
149
+ */
150
+ export async function confirmRemoveField(field) {
151
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
152
+ const typeName = typeInfo?.label ?? field.type;
153
+ const confirm = await p.confirm({
154
+ message: `Remove field "${field.name}" (${typeName})?`,
155
+ initialValue: false,
156
+ });
157
+ return !p.isCancel(confirm) && confirm;
158
+ }
159
+ /**
160
+ * Confirm cancellation
161
+ */
162
+ export async function confirmCancel() {
163
+ const confirm = await p.confirm({
164
+ message: 'Are you sure you want to cancel? All fields will be lost.',
165
+ initialValue: false,
166
+ });
167
+ return !p.isCancel(confirm) && confirm;
168
+ }
169
+ // ============================================================================
170
+ // Template Conflict Handling
171
+ // ============================================================================
172
+ /**
173
+ * Check for and handle template field conflicts
174
+ * Returns the fields that can be added (non-conflicting)
175
+ */
176
+ export async function handleTemplateConflicts(templateFields, existingNames) {
177
+ const conflicts = templateFields.filter((f) => existingNames.has(f.name));
178
+ const nonConflicting = templateFields.filter((f) => !existingNames.has(f.name));
179
+ if (conflicts.length === 0) {
180
+ return templateFields;
181
+ }
182
+ if (nonConflicting.length === 0) {
183
+ p.log.warning(`All template fields conflict with existing fields.`);
184
+ p.log.info(`Conflicting: ${conflicts.map((f) => f.name).join(', ')}`);
185
+ return null;
186
+ }
187
+ p.log.warning(`Some template fields conflict with existing fields.`);
188
+ p.log.info(`Conflicting: ${conflicts.map((f) => f.name).join(', ')}`);
189
+ p.log.info(`Will add: ${nonConflicting.map((f) => f.name).join(', ')}`);
190
+ const confirm = await p.confirm({
191
+ message: `Add ${nonConflicting.length} non-conflicting fields? (skip ${conflicts.length} conflicting)`,
192
+ initialValue: true,
193
+ });
194
+ if (p.isCancel(confirm) || !confirm) {
195
+ return null;
196
+ }
197
+ return nonConflicting;
198
+ }
199
+ // ============================================================================
200
+ // Success Messages
201
+ // ============================================================================
202
+ /**
203
+ * Show success message for added field
204
+ */
205
+ export function showFieldAdded(field) {
206
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
207
+ const typeName = typeInfo?.label ?? field.type;
208
+ p.log.success(`Added: ${pc.cyan(field.name)} (${typeName})`);
209
+ }
210
+ /**
211
+ * Show success message for updated field
212
+ */
213
+ export function showFieldUpdated(field) {
214
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
215
+ const typeName = typeInfo?.label ?? field.type;
216
+ p.log.success(`Updated: ${pc.cyan(field.name)} (${typeName})`);
217
+ }
218
+ /**
219
+ * Show success message for removed field
220
+ */
221
+ export function showFieldRemoved(fieldName) {
222
+ p.log.success(`Removed: ${pc.cyan(fieldName)}`);
223
+ }
224
+ /**
225
+ * Show success message for applied template
226
+ */
227
+ export function showTemplateApplied(count, templateName) {
228
+ p.log.success(`Applied template: ${templateName} (${count} field${count === 1 ? '' : 's'} added)`);
229
+ }
230
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/generators/fields/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Display utilities for interactive field prompts
3
+ *
4
+ * Provides table rendering, formatting, and visual feedback functions
5
+ * for the field definition workflow.
6
+ */
7
+ import type { FieldDefinition } from './types.js';
8
+ /**
9
+ * Display fields in a formatted ASCII table with color-coded types
10
+ */
11
+ export declare function displayFieldsTable(fields: FieldDefinition[], resourceName?: string): void;
12
+ /**
13
+ * Clear screen and display fields table
14
+ */
15
+ export declare function clearAndDisplay(fields: FieldDefinition[], resourceName?: string): void;
16
+ /**
17
+ * Display a field count badge
18
+ */
19
+ export declare function displayFieldCount(count: number): string;
20
+ /**
21
+ * Display Prisma enum preview
22
+ */
23
+ export declare function displayEnumPreview(enumName: string, values: string[]): void;
24
+ /**
25
+ * Display a summary of all fields before generation
26
+ */
27
+ export declare function displayFieldsSummary(fields: FieldDefinition[]): void;
28
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/generators/fields/display.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAsDzF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAkB3E;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAmBpE"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Display utilities for interactive field prompts
3
+ *
4
+ * Provides table rendering, formatting, and visual feedback functions
5
+ * for the field definition workflow.
6
+ */
7
+ import pc from 'picocolors';
8
+ import { FIELD_TYPES } from './types.js';
9
+ // ============================================================================
10
+ // Table Display
11
+ // ============================================================================
12
+ /**
13
+ * Display fields in a formatted ASCII table with color-coded types
14
+ */
15
+ export function displayFieldsTable(fields, resourceName) {
16
+ // Header with resource name and field count
17
+ const header = resourceName ? `Building ${resourceName} Model` : 'Field Definition';
18
+ const badge = fields.length > 0 ? `[${fields.length} field${fields.length === 1 ? '' : 's'}]` : '';
19
+ console.log();
20
+ console.log(pc.bold(header) + (badge ? ` ${pc.dim(badge)}` : ''));
21
+ console.log();
22
+ if (fields.length === 0) {
23
+ console.log(pc.dim(' No fields defined yet.'));
24
+ console.log(pc.dim(' Add fields using the menu below.'));
25
+ console.log();
26
+ return;
27
+ }
28
+ // Calculate column widths
29
+ const nameWidth = Math.max(12, ...fields.map((f) => f.name.length)) + 2;
30
+ const typeWidth = 14;
31
+ const attrWidth = 28;
32
+ // Table header
33
+ console.log(pc.dim('Current Fields:'));
34
+ console.log(makeTableBorder('top', nameWidth, typeWidth, attrWidth));
35
+ console.log(makeTableRow('#', 'Field Name', 'Type', 'Attributes', nameWidth, typeWidth, attrWidth, true));
36
+ console.log(makeTableBorder('middle', nameWidth, typeWidth, attrWidth));
37
+ // Table rows
38
+ for (let i = 0; i < fields.length; i++) {
39
+ const field = fields[i];
40
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
41
+ const typeName = typeInfo?.label ?? field.type;
42
+ const attrs = formatAttributesForTable(field);
43
+ console.log(makeTableRow(String(i + 1), pc.cyan(field.name), colorType(typeName), attrs, nameWidth, typeWidth, attrWidth));
44
+ }
45
+ // Table footer
46
+ console.log(makeTableBorder('bottom', nameWidth, typeWidth, attrWidth));
47
+ console.log(pc.dim(' Auto-generated: id, createdAt, updatedAt'));
48
+ console.log();
49
+ }
50
+ /**
51
+ * Clear screen and display fields table
52
+ */
53
+ export function clearAndDisplay(fields, resourceName) {
54
+ console.clear();
55
+ displayFieldsTable(fields, resourceName);
56
+ }
57
+ /**
58
+ * Display a field count badge
59
+ */
60
+ export function displayFieldCount(count) {
61
+ if (count === 0)
62
+ return pc.dim('[no fields]');
63
+ return pc.dim(`[${count} field${count === 1 ? '' : 's'}]`);
64
+ }
65
+ // ============================================================================
66
+ // Enum Preview
67
+ // ============================================================================
68
+ /**
69
+ * Display Prisma enum preview
70
+ */
71
+ export function displayEnumPreview(enumName, values) {
72
+ console.log();
73
+ console.log(pc.dim('Preview of generated Prisma enum:'));
74
+ console.log(pc.dim(`┌${'─'.repeat(50)}┐`));
75
+ console.log(pc.dim('│ ') +
76
+ pc.magenta(`enum ${enumName} {`) +
77
+ ' '.repeat(Math.max(0, 48 - enumName.length - 7)) +
78
+ pc.dim(' │'));
79
+ for (const value of values) {
80
+ console.log(pc.dim('│ ') + pc.yellow(value) + ' '.repeat(Math.max(0, 46 - value.length)) + pc.dim(' │'));
81
+ }
82
+ console.log(pc.dim('│ ') + pc.magenta('}') + ' '.repeat(47) + pc.dim(' │'));
83
+ console.log(pc.dim(`└${'─'.repeat(50)}┘`));
84
+ console.log();
85
+ }
86
+ // ============================================================================
87
+ // Field Summary (for final confirmation)
88
+ // ============================================================================
89
+ /**
90
+ * Display a summary of all fields before generation
91
+ */
92
+ export function displayFieldsSummary(fields) {
93
+ console.log();
94
+ console.log(pc.bold('Fields to generate:'));
95
+ console.log(pc.dim('─'.repeat(50)));
96
+ for (const field of fields) {
97
+ const typeInfo = FIELD_TYPES.find((t) => t.type === field.type);
98
+ const typeName = typeInfo?.label ?? field.type;
99
+ const attrs = formatAttributesInline(field);
100
+ const enumInfo = field.enumDef
101
+ ? pc.dim(` -> ${field.enumDef.name}(${field.enumDef.values.join(', ')})`)
102
+ : '';
103
+ console.log(` ${pc.cyan(field.name)}: ${colorType(typeName)}${attrs}${enumInfo}`);
104
+ }
105
+ console.log(pc.dim('─'.repeat(50)));
106
+ console.log(pc.dim(' + id, createdAt, updatedAt (auto-generated)'));
107
+ console.log();
108
+ }
109
+ function makeTableBorder(position, nameWidth, typeWidth, attrWidth) {
110
+ const corners = {
111
+ top: { left: '┌', middle: '┬', right: '┐' },
112
+ middle: { left: '├', middle: '┼', right: '┤' },
113
+ bottom: { left: '└', middle: '┴', right: '┘' },
114
+ };
115
+ const c = corners[position];
116
+ return pc.dim(c.left +
117
+ '─'.repeat(4) +
118
+ c.middle +
119
+ '─'.repeat(nameWidth) +
120
+ c.middle +
121
+ '─'.repeat(typeWidth) +
122
+ c.middle +
123
+ '─'.repeat(attrWidth) +
124
+ c.right);
125
+ }
126
+ function makeTableRow(num, name, type, attrs, nameWidth, typeWidth, attrWidth, isHeader = false) {
127
+ const numCol = isHeader ? pc.dim(' # ') : ` ${num.padStart(2, ' ')} `;
128
+ const nameCol = padStringWithAnsi(isHeader ? pc.dim(name) : name, nameWidth - 1);
129
+ const typeCol = padStringWithAnsi(isHeader ? pc.dim(type) : type, typeWidth - 1);
130
+ const attrCol = padStringWithAnsi(isHeader ? pc.dim(attrs) : attrs, attrWidth - 1);
131
+ return (pc.dim('│') +
132
+ numCol +
133
+ pc.dim('│ ') +
134
+ nameCol +
135
+ pc.dim('│ ') +
136
+ typeCol +
137
+ pc.dim('│ ') +
138
+ attrCol +
139
+ pc.dim('│'));
140
+ }
141
+ // ============================================================================
142
+ // Formatting Helpers
143
+ // ============================================================================
144
+ /**
145
+ * Format attributes for table display using icons
146
+ */
147
+ function formatAttributesForTable(field) {
148
+ const parts = [];
149
+ const attrs = field.attributes;
150
+ if (attrs.unique)
151
+ parts.push(pc.yellow('*'));
152
+ if (attrs.optional)
153
+ parts.push(pc.dim('?'));
154
+ if (attrs.hasDefault && attrs.defaultValue !== undefined) {
155
+ parts.push(pc.green(`=${truncate(attrs.defaultValue, 8)}`));
156
+ }
157
+ if (field.enumDef) {
158
+ parts.push(pc.magenta(`[${field.enumDef.name}]`));
159
+ }
160
+ return parts.join(' ');
161
+ }
162
+ /**
163
+ * Format attributes inline (for summary view)
164
+ */
165
+ function formatAttributesInline(field) {
166
+ const parts = [];
167
+ const attrs = field.attributes;
168
+ if (attrs.optional)
169
+ parts.push('optional');
170
+ if (attrs.unique)
171
+ parts.push('unique');
172
+ if (attrs.hasDefault && attrs.defaultValue !== undefined) {
173
+ parts.push(`default: ${attrs.defaultValue}`);
174
+ }
175
+ return parts.length > 0 ? pc.dim(` [${parts.join(', ')}]`) : '';
176
+ }
177
+ /**
178
+ * Color-code field type
179
+ */
180
+ function colorType(typeName) {
181
+ const lower = typeName.toLowerCase();
182
+ if (lower === 'string' || lower === 'text (long)')
183
+ return pc.green(typeName);
184
+ if (lower === 'integer' || lower === 'float')
185
+ return pc.yellow(typeName);
186
+ if (lower === 'datetime')
187
+ return pc.magenta(typeName);
188
+ if (lower === 'enum' || lower === 'json')
189
+ return pc.blue(typeName);
190
+ if (lower === 'boolean')
191
+ return pc.white(typeName);
192
+ return typeName;
193
+ }
194
+ // ANSI escape sequence pattern for stripping color codes
195
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: Required for ANSI escape sequence matching
196
+ const ANSI_PATTERN = /\u001b\[[0-9;]*m/g;
197
+ /**
198
+ * Pad string to width, accounting for ANSI color codes
199
+ */
200
+ function padStringWithAnsi(str, width) {
201
+ // Remove ANSI codes to calculate visible length
202
+ const plainLength = str.replace(ANSI_PATTERN, '').length;
203
+ const padding = Math.max(0, width - plainLength);
204
+ return `${str}${' '.repeat(padding)}`;
205
+ }
206
+ /**
207
+ * Truncate string with ellipsis
208
+ */
209
+ function truncate(str, maxLength) {
210
+ if (str.length <= maxLength)
211
+ return str;
212
+ return `${str.slice(0, maxLength - 1)}...`;
213
+ }
214
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/generators/fields/display.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB,EAAE,YAAqB;IACjF,4CAA4C;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACpF,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAC7F,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAExE,aAAa;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CACT,YAAY,CACV,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EACb,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EACnB,SAAS,CAAC,QAAQ,CAAC,EACnB,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,CACV,CACF,CAAC;IACJ,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,YAAqB;IAC9E,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,MAAgB;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACV,EAAE,CAAC,OAAO,CAAC,QAAQ,QAAQ,IAAI,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CACf,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO;YAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACzE,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAQD,SAAS,eAAe,CACtB,QAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,OAAO,GAA4E;QACvF,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;KAC/C,CAAC;IACF,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,EAAE,CAAC,GAAG,CACX,CAAC,CAAC,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,MAAM;QACR,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC,CAAC,MAAM;QACR,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC,CAAC,MAAM;QACR,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC,CAAC,KAAK,CACV,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,GAAW,EACX,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,QAAQ,GAAG,KAAK;IAEhB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACtE,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAEnF,OAAO,CACL,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QACX,MAAM;QACN,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACZ,OAAO;QACP,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACZ,OAAO;QACP,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACZ,OAAO;QACP,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CACZ,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,wBAAwB,CAAC,KAAsB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IAE/B,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,KAAsB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IAE/B,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,QAAgB;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yDAAyD;AACzD,sGAAsG;AACtG,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa;IACnD,gDAAgD;IAChD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;IACjD,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,SAAiB;IAC9C,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fields Module
3
+ *
4
+ * Interactive field collection and type definitions for resource generation.
5
+ * Features a menu-driven workflow with add/edit/remove capabilities and templates.
6
+ */
7
+ export * from './actions.js';
8
+ export * from './display.js';
9
+ export * from './prompts.js';
10
+ export * from './templates.js';
11
+ export * from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/fields/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fields Module
3
+ *
4
+ * Interactive field collection and type definitions for resource generation.
5
+ * Features a menu-driven workflow with add/edit/remove capabilities and templates.
6
+ */
7
+ export * from './actions.js';
8
+ export * from './display.js';
9
+ export * from './prompts.js';
10
+ export * from './templates.js';
11
+ export * from './types.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/fields/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Field Prompts Module
3
+ *
4
+ * Interactive prompts for collecting field definitions using @clack/prompts.
5
+ * Features an interactive menu-driven workflow with add/edit/remove capabilities.
6
+ */
7
+ import { type FieldDefinition } from './types.js';
8
+ /**
9
+ * Options for field collection
10
+ */
11
+ export interface CollectFieldsOptions {
12
+ /** Resource name for context in prompts */
13
+ resourceName: string;
14
+ /** Minimum number of fields required (default: 0) */
15
+ minFields?: number;
16
+ }
17
+ /**
18
+ * Result of field collection
19
+ */
20
+ export interface CollectFieldsResult {
21
+ /** Collected field definitions */
22
+ fields: FieldDefinition[];
23
+ /** Whether user cancelled the prompts */
24
+ cancelled: boolean;
25
+ }
26
+ /**
27
+ * Collect field definitions interactively from the user
28
+ * Uses a menu-driven workflow with add/edit/remove capabilities
29
+ */
30
+ export declare function collectFields(options: CollectFieldsOptions): Promise<CollectFieldsResult>;
31
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/generators/fields/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,EAGL,KAAK,eAAe,EAMrB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0G/F"}