@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.
- package/README.md +2 -48
- package/dist/cli.d.ts +5 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +71 -7
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/introspect.d.ts +16 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/introspect.js +559 -0
- package/dist/commands/introspect.js.map +1 -0
- package/dist/commands/make.d.ts.map +1 -1
- package/dist/commands/make.js +18 -8
- package/dist/commands/make.js.map +1 -1
- package/dist/commands/procedures.d.ts.map +1 -1
- package/dist/commands/procedures.js +16 -0
- package/dist/commands/procedures.js.map +1 -1
- package/dist/dev/error-parser.d.ts.map +1 -1
- package/dist/dev/error-parser.js +24 -8
- package/dist/dev/error-parser.js.map +1 -1
- package/dist/dev/hmr-runner.d.ts.map +1 -1
- package/dist/dev/hmr-runner.js +6 -1
- package/dist/dev/hmr-runner.js.map +1 -1
- package/dist/dev/index.d.ts +3 -3
- package/dist/dev/index.d.ts.map +1 -1
- package/dist/dev/index.js +3 -3
- package/dist/dev/index.js.map +1 -1
- package/dist/dev/reload-reporter.d.ts +2 -2
- package/dist/dev/reload-reporter.d.ts.map +1 -1
- package/dist/dev/reload-reporter.js +2 -2
- package/dist/dev/reload-reporter.js.map +1 -1
- package/dist/errors/catalog.d.ts +48 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/catalog.js +421 -0
- package/dist/errors/catalog.js.map +1 -0
- package/dist/errors/index.d.ts +26 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +28 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/velox-error.d.ts +122 -0
- package/dist/errors/velox-error.d.ts.map +1 -0
- package/dist/errors/velox-error.js +216 -0
- package/dist/errors/velox-error.js.map +1 -0
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/base.js +26 -0
- package/dist/generators/base.js.map +1 -1
- package/dist/generators/fields/__tests__/helpers.d.ts +66 -0
- package/dist/generators/fields/__tests__/helpers.d.ts.map +1 -0
- package/dist/generators/fields/__tests__/helpers.js +142 -0
- package/dist/generators/fields/__tests__/helpers.js.map +1 -0
- package/dist/generators/fields/actions.d.ts +58 -0
- package/dist/generators/fields/actions.d.ts.map +1 -0
- package/dist/generators/fields/actions.js +230 -0
- package/dist/generators/fields/actions.js.map +1 -0
- package/dist/generators/fields/display.d.ts +28 -0
- package/dist/generators/fields/display.d.ts.map +1 -0
- package/dist/generators/fields/display.js +214 -0
- package/dist/generators/fields/display.js.map +1 -0
- package/dist/generators/fields/index.d.ts +12 -0
- package/dist/generators/fields/index.d.ts.map +1 -0
- package/dist/generators/fields/index.js +12 -0
- package/dist/generators/fields/index.js.map +1 -0
- package/dist/generators/fields/prompts.d.ts +31 -0
- package/dist/generators/fields/prompts.d.ts.map +1 -0
- package/dist/generators/fields/prompts.js +366 -0
- package/dist/generators/fields/prompts.js.map +1 -0
- package/dist/generators/fields/templates.d.ts +49 -0
- package/dist/generators/fields/templates.d.ts.map +1 -0
- package/dist/generators/fields/templates.js +230 -0
- package/dist/generators/fields/templates.js.map +1 -0
- package/dist/generators/fields/types.d.ts +95 -0
- package/dist/generators/fields/types.d.ts.map +1 -0
- package/dist/generators/fields/types.js +150 -0
- package/dist/generators/fields/types.js.map +1 -0
- package/dist/generators/generators/action.d.ts +37 -0
- package/dist/generators/generators/action.d.ts.map +1 -0
- package/dist/generators/generators/action.js +109 -0
- package/dist/generators/generators/action.js.map +1 -0
- package/dist/generators/generators/exception.d.ts +38 -0
- package/dist/generators/generators/exception.d.ts.map +1 -0
- package/dist/generators/generators/exception.js +109 -0
- package/dist/generators/generators/exception.js.map +1 -0
- package/dist/generators/generators/guard.d.ts +38 -0
- package/dist/generators/generators/guard.d.ts.map +1 -0
- package/dist/generators/generators/guard.js +109 -0
- package/dist/generators/generators/guard.js.map +1 -0
- package/dist/generators/generators/index.d.ts +8 -0
- package/dist/generators/generators/index.d.ts.map +1 -1
- package/dist/generators/generators/index.js +27 -0
- package/dist/generators/generators/index.js.map +1 -1
- package/dist/generators/generators/layout.d.ts +36 -0
- package/dist/generators/generators/layout.d.ts.map +1 -0
- package/dist/generators/generators/layout.js +111 -0
- package/dist/generators/generators/layout.js.map +1 -0
- package/dist/generators/generators/middleware.d.ts +38 -0
- package/dist/generators/generators/middleware.d.ts.map +1 -0
- package/dist/generators/generators/middleware.js +109 -0
- package/dist/generators/generators/middleware.js.map +1 -0
- package/dist/generators/generators/model.d.ts +16 -4
- package/dist/generators/generators/model.d.ts.map +1 -1
- package/dist/generators/generators/model.js +88 -7
- package/dist/generators/generators/model.js.map +1 -1
- package/dist/generators/generators/page.d.ts +36 -0
- package/dist/generators/generators/page.d.ts.map +1 -0
- package/dist/generators/generators/page.js +112 -0
- package/dist/generators/generators/page.js.map +1 -0
- package/dist/generators/generators/policy.d.ts +37 -0
- package/dist/generators/generators/policy.d.ts.map +1 -0
- package/dist/generators/generators/policy.js +100 -0
- package/dist/generators/generators/policy.js.map +1 -0
- package/dist/generators/generators/resource.d.ts +42 -4
- package/dist/generators/generators/resource.d.ts.map +1 -1
- package/dist/generators/generators/resource.js +450 -9
- package/dist/generators/generators/resource.js.map +1 -1
- package/dist/generators/generators/service.d.ts +38 -0
- package/dist/generators/generators/service.d.ts.map +1 -0
- package/dist/generators/generators/service.js +109 -0
- package/dist/generators/generators/service.js.map +1 -0
- package/dist/generators/registry.d.ts.map +1 -1
- package/dist/generators/registry.js +10 -1
- package/dist/generators/registry.js.map +1 -1
- package/dist/generators/templates/action.d.ts +28 -0
- package/dist/generators/templates/action.d.ts.map +1 -0
- package/dist/generators/templates/action.js +359 -0
- package/dist/generators/templates/action.js.map +1 -0
- package/dist/generators/templates/exception.d.ts +26 -0
- package/dist/generators/templates/exception.d.ts.map +1 -0
- package/dist/generators/templates/exception.js +671 -0
- package/dist/generators/templates/exception.js.map +1 -0
- package/dist/generators/templates/guard.d.ts +26 -0
- package/dist/generators/templates/guard.d.ts.map +1 -0
- package/dist/generators/templates/guard.js +555 -0
- package/dist/generators/templates/guard.js.map +1 -0
- package/dist/generators/templates/layout.d.ts +28 -0
- package/dist/generators/templates/layout.d.ts.map +1 -0
- package/dist/generators/templates/layout.js +147 -0
- package/dist/generators/templates/layout.js.map +1 -0
- package/dist/generators/templates/middleware.d.ts +26 -0
- package/dist/generators/templates/middleware.d.ts.map +1 -0
- package/dist/generators/templates/middleware.js +411 -0
- package/dist/generators/templates/middleware.js.map +1 -0
- package/dist/generators/templates/model.d.ts +3 -0
- package/dist/generators/templates/model.d.ts.map +1 -1
- package/dist/generators/templates/model.js +183 -28
- package/dist/generators/templates/model.js.map +1 -1
- package/dist/generators/templates/page.d.ts +36 -0
- package/dist/generators/templates/page.d.ts.map +1 -0
- package/dist/generators/templates/page.js +147 -0
- package/dist/generators/templates/page.js.map +1 -0
- package/dist/generators/templates/policy.d.ts +24 -0
- package/dist/generators/templates/policy.d.ts.map +1 -0
- package/dist/generators/templates/policy.js +499 -0
- package/dist/generators/templates/policy.js.map +1 -0
- package/dist/generators/templates/resource.d.ts +65 -0
- package/dist/generators/templates/resource.d.ts.map +1 -1
- package/dist/generators/templates/resource.js +228 -43
- package/dist/generators/templates/resource.js.map +1 -1
- package/dist/generators/templates/service.d.ts +26 -0
- package/dist/generators/templates/service.d.ts.map +1 -0
- package/dist/generators/templates/service.js +511 -0
- package/dist/generators/templates/service.js.map +1 -0
- package/dist/generators/types.d.ts +26 -14
- package/dist/generators/types.d.ts.map +1 -1
- package/dist/generators/types.js +8 -25
- package/dist/generators/types.js.map +1 -1
- package/dist/generators/utils/ast-helpers.d.ts +147 -0
- package/dist/generators/utils/ast-helpers.d.ts.map +1 -0
- package/dist/generators/utils/ast-helpers.js +350 -0
- package/dist/generators/utils/ast-helpers.js.map +1 -0
- package/dist/generators/utils/prisma-migration.d.ts +59 -0
- package/dist/generators/utils/prisma-migration.d.ts.map +1 -0
- package/dist/generators/utils/prisma-migration.js +161 -0
- package/dist/generators/utils/prisma-migration.js.map +1 -0
- package/dist/generators/utils/prisma-schema.d.ts +97 -0
- package/dist/generators/utils/prisma-schema.d.ts.map +1 -0
- package/dist/generators/utils/prisma-schema.js +235 -0
- package/dist/generators/utils/prisma-schema.js.map +1 -0
- package/dist/generators/utils/router-integration.d.ts +70 -0
- package/dist/generators/utils/router-integration.d.ts.map +1 -0
- package/dist/generators/utils/router-integration.js +305 -0
- package/dist/generators/utils/router-integration.js.map +1 -0
- package/dist/generators/utils/snapshot.d.ts +93 -0
- package/dist/generators/utils/snapshot.d.ts.map +1 -0
- package/dist/generators/utils/snapshot.js +178 -0
- package/dist/generators/utils/snapshot.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/seeding/errors.d.ts +11 -24
- package/dist/seeding/errors.d.ts.map +1 -1
- package/dist/seeding/errors.js +11 -50
- package/dist/seeding/errors.js.map +1 -1
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +45 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/schema-patterns.d.ts +26 -0
- package/dist/utils/schema-patterns.d.ts.map +1 -0
- package/dist/utils/schema-patterns.js +40 -0
- package/dist/utils/schema-patterns.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|