mycontext-cli 4.2.7 → 4.2.10

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 (98) hide show
  1. package/dist/commands/agent.d.ts.map +1 -1
  2. package/dist/commands/agent.js +10 -1
  3. package/dist/commands/agent.js.map +1 -1
  4. package/dist/commands/generate.d.ts.map +1 -1
  5. package/dist/commands/generate.js +19 -60
  6. package/dist/commands/generate.js.map +1 -1
  7. package/dist/commands/init-interactive.d.ts +20 -0
  8. package/dist/commands/init-interactive.d.ts.map +1 -1
  9. package/dist/commands/init-interactive.js +168 -5
  10. package/dist/commands/init-interactive.js.map +1 -1
  11. package/dist/config/shadcn-catalog.json +93 -0
  12. package/dist/core/brain/BrainClient.d.ts +1 -1
  13. package/dist/core/brain/BrainClient.d.ts.map +1 -1
  14. package/dist/core/brain/BrainClient.js +5 -5
  15. package/dist/core/brain/BrainClient.js.map +1 -1
  16. package/dist/doctor/DoctorEngine.d.ts.map +1 -1
  17. package/dist/doctor/DoctorEngine.js +21 -11
  18. package/dist/doctor/DoctorEngine.js.map +1 -1
  19. package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -1
  20. package/dist/doctor/rules/dead-code-rules.js +33 -0
  21. package/dist/doctor/rules/dead-code-rules.js.map +1 -1
  22. package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -1
  23. package/dist/doctor/rules/instantdb-rules.js +278 -69
  24. package/dist/doctor/rules/instantdb-rules.js.map +1 -1
  25. package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -1
  26. package/dist/doctor/rules/nextjs-rules.js +53 -3
  27. package/dist/doctor/rules/nextjs-rules.js.map +1 -1
  28. package/dist/package.json +4 -2
  29. package/dist/services/ComponentInferenceEngine.d.ts +66 -0
  30. package/dist/services/ComponentInferenceEngine.d.ts.map +1 -0
  31. package/dist/services/ComponentInferenceEngine.js +302 -0
  32. package/dist/services/ComponentInferenceEngine.js.map +1 -0
  33. package/dist/services/ComponentRegistry.d.ts +61 -0
  34. package/dist/services/ComponentRegistry.d.ts.map +1 -0
  35. package/dist/services/ComponentRegistry.js +128 -0
  36. package/dist/services/ComponentRegistry.js.map +1 -0
  37. package/dist/services/InferenceEngine.js +1 -1
  38. package/dist/services/ProjectScanner.d.ts.map +1 -1
  39. package/dist/services/ProjectScanner.js +18 -1
  40. package/dist/services/ProjectScanner.js.map +1 -1
  41. package/dist/services/ScaffoldEngine.d.ts +87 -0
  42. package/dist/services/ScaffoldEngine.d.ts.map +1 -0
  43. package/dist/services/ScaffoldEngine.js +409 -0
  44. package/dist/services/ScaffoldEngine.js.map +1 -0
  45. package/dist/services/ScaffoldPreview.d.ts +62 -0
  46. package/dist/services/ScaffoldPreview.d.ts.map +1 -0
  47. package/dist/services/ScaffoldPreview.js +292 -0
  48. package/dist/services/ScaffoldPreview.js.map +1 -0
  49. package/dist/services/TemplateEngine.d.ts +136 -0
  50. package/dist/services/TemplateEngine.d.ts.map +1 -0
  51. package/dist/services/TemplateEngine.js +483 -0
  52. package/dist/services/TemplateEngine.js.map +1 -0
  53. package/dist/services/TemplateHelpers.d.ts +9 -0
  54. package/dist/services/TemplateHelpers.d.ts.map +1 -0
  55. package/dist/services/TemplateHelpers.js +212 -0
  56. package/dist/services/TemplateHelpers.js.map +1 -0
  57. package/dist/templates/actions/auth-actions.ts.hbs +140 -0
  58. package/dist/templates/actions/crud-actions.ts.hbs +113 -0
  59. package/dist/templates/components/auth/login-form.tsx.hbs +67 -0
  60. package/dist/templates/components/auth/login-skeleton.tsx.hbs +24 -0
  61. package/dist/templates/components/auth/register-form.tsx.hbs +116 -0
  62. package/dist/templates/components/crud/entity-card.tsx.hbs +71 -0
  63. package/dist/templates/components/crud/entity-form.tsx.hbs +158 -0
  64. package/dist/templates/components/crud/entity-skeleton.tsx.hbs +90 -0
  65. package/dist/templates/components/crud/entity-table.tsx.hbs +129 -0
  66. package/dist/templates/components/ui/button.tsx.hbs +53 -0
  67. package/dist/templates/components/ui/card.tsx.hbs +68 -0
  68. package/dist/templates/components/ui/input.tsx.hbs +33 -0
  69. package/dist/templates/components/ui/label.tsx.hbs +20 -0
  70. package/dist/templates/components/ui/skeleton.tsx.hbs +15 -0
  71. package/dist/templates/components/ui/theme-provider.tsx.hbs +66 -0
  72. package/dist/templates/components/ui/theme-toggle.tsx.hbs +30 -0
  73. package/dist/templates/config/app.css.hbs +150 -0
  74. package/dist/templates/layouts/dashboard-layout.tsx.hbs +69 -0
  75. package/dist/templates/layouts/error.tsx.hbs +51 -0
  76. package/dist/templates/layouts/loading.tsx.hbs +22 -0
  77. package/dist/templates/layouts/not-found.tsx.hbs +24 -0
  78. package/dist/templates/layouts/root-layout.tsx.hbs +40 -0
  79. package/dist/templates/lib/instant.ts.hbs +19 -0
  80. package/dist/templates/lib/utils.ts.hbs +24 -0
  81. package/dist/templates/pages/auth/login-page.tsx.hbs +30 -0
  82. package/dist/templates/pages/auth/register-page.tsx.hbs +38 -0
  83. package/dist/templates/pages/crud/create-page.tsx.hbs +42 -0
  84. package/dist/templates/pages/crud/detail-page.tsx.hbs +90 -0
  85. package/dist/templates/pages/crud/list-page.tsx.hbs +60 -0
  86. package/dist/templates/pages/crud/loading.tsx.hbs +13 -0
  87. package/dist/templates/pages/landing-page.tsx.hbs +111 -0
  88. package/dist/types/asl.d.ts +1 -1
  89. package/dist/types/asl.d.ts.map +1 -1
  90. package/dist/types/living-context.d.ts +1 -1
  91. package/dist/types/living-context.d.ts.map +1 -1
  92. package/dist/utils/FileGenerator.js +3 -3
  93. package/dist/utils/FileGenerator.js.map +1 -1
  94. package/dist/utils/generateTypesFromSchema.d.ts +47 -0
  95. package/dist/utils/generateTypesFromSchema.d.ts.map +1 -0
  96. package/dist/utils/generateTypesFromSchema.js +298 -0
  97. package/dist/utils/generateTypesFromSchema.js.map +1 -0
  98. package/package.json +4 -2
@@ -0,0 +1,62 @@
1
+ import { ASL } from "../types/asl";
2
+ export interface ScaffoldManifest {
3
+ fileTree: string;
4
+ componentsSummary: {
5
+ shadcn: string[];
6
+ custom: number;
7
+ };
8
+ features: string[];
9
+ totalFiles: number;
10
+ estimatedTime: string;
11
+ }
12
+ /**
13
+ * ScaffoldPreview - Generate human-readable preview of scaffold output
14
+ *
15
+ * Shows users exactly what will be generated before running scaffold:
16
+ * - Complete file tree with descriptions
17
+ * - Component counts and types
18
+ * - Feature list
19
+ * - Estimated generation time
20
+ */
21
+ export declare class ScaffoldPreview {
22
+ private asl;
23
+ private componentInference;
24
+ constructor(asl: ASL);
25
+ /**
26
+ * Generate complete scaffold manifest for user review
27
+ */
28
+ generateManifest(): ScaffoldManifest;
29
+ /**
30
+ * Build visual file tree showing all generated files
31
+ */
32
+ private buildFileTree;
33
+ /**
34
+ * Summarize shadCN and custom components
35
+ */
36
+ private summarizeComponents;
37
+ /**
38
+ * List all features that will be generated
39
+ */
40
+ private listFeatures;
41
+ /**
42
+ * Count total files that will be generated
43
+ */
44
+ private countFiles;
45
+ /**
46
+ * Count custom components (non-shadCN)
47
+ */
48
+ private countCustomComponents;
49
+ /**
50
+ * Estimate generation time based on complexity
51
+ */
52
+ private estimateTime;
53
+ /**
54
+ * Check if a page path is an entity page
55
+ */
56
+ private isEntityPage;
57
+ /**
58
+ * Format and display the complete preview
59
+ */
60
+ display(): void;
61
+ }
62
+ //# sourceMappingURL=ScaffoldPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScaffoldPreview.d.ts","sourceRoot":"","sources":["../../src/services/ScaffoldPreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwC,MAAM,cAAc,CAAC;AAIzE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,kBAAkB,CAA2B;gBAEjC,GAAG,EAAE,GAAG;IAI5B;;OAEG;IACH,gBAAgB,IAAI,gBAAgB;IAgBpC;;OAEG;IACH,OAAO,CAAC,aAAa;IA6HrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,OAAO,CAAC,UAAU;IA6ClB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAehB"}
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ScaffoldPreview = void 0;
7
+ const ComponentInferenceEngine_1 = require("./ComponentInferenceEngine");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ /**
10
+ * ScaffoldPreview - Generate human-readable preview of scaffold output
11
+ *
12
+ * Shows users exactly what will be generated before running scaffold:
13
+ * - Complete file tree with descriptions
14
+ * - Component counts and types
15
+ * - Feature list
16
+ * - Estimated generation time
17
+ */
18
+ class ScaffoldPreview {
19
+ constructor(asl) {
20
+ this.asl = asl;
21
+ this.componentInference = new ComponentInferenceEngine_1.ComponentInferenceEngine();
22
+ }
23
+ /**
24
+ * Generate complete scaffold manifest for user review
25
+ */
26
+ generateManifest() {
27
+ const fileTree = this.buildFileTree();
28
+ const componentsSummary = this.summarizeComponents();
29
+ const features = this.listFeatures();
30
+ const totalFiles = this.countFiles();
31
+ const estimatedTime = this.estimateTime();
32
+ return {
33
+ fileTree,
34
+ componentsSummary,
35
+ features,
36
+ totalFiles,
37
+ estimatedTime
38
+ };
39
+ }
40
+ /**
41
+ * Build visual file tree showing all generated files
42
+ */
43
+ buildFileTree() {
44
+ const lines = [];
45
+ lines.push(`Project Structure (${this.countFiles()} files):`);
46
+ lines.push('├── app/');
47
+ // Auth routes (if auth configured)
48
+ if (this.asl.auth) {
49
+ const providerText = Array.isArray(this.asl.auth.provider)
50
+ ? this.asl.auth.provider.join(' + ')
51
+ : this.asl.auth.provider;
52
+ lines.push('│ ├── (auth)/');
53
+ lines.push('│ │ ├── login/page.tsx ' + chalk_1.default.gray('[Auth form with ' + providerText + ' provider]'));
54
+ lines.push('│ │ └── register/page.tsx ' + chalk_1.default.gray('[Registration flow]'));
55
+ }
56
+ // Dashboard routes (protected)
57
+ lines.push('│ ├── (dashboard)/');
58
+ lines.push('│ │ ├── layout.tsx ' + chalk_1.default.gray('[Protected layout with RBAC]'));
59
+ // Entity routes
60
+ if (this.asl.entities) {
61
+ const entityEntries = Object.entries(this.asl.entities);
62
+ entityEntries.forEach(([entityName, entity], index) => {
63
+ const entityLower = entityName.toLowerCase();
64
+ const isLast = index === entityEntries.length - 1;
65
+ const prefix = isLast ? '│ │ └── ' : '│ │ ├── ';
66
+ lines.push(prefix + entityLower + 's/');
67
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '├── page.tsx ' + chalk_1.default.gray(`[${entityName}List with table]`));
68
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '├── [id]/page.tsx ' + chalk_1.default.gray(`[${entityName}Detail view]`));
69
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '└── new/page.tsx ' + chalk_1.default.gray(`[${entityName}Form]`));
70
+ });
71
+ }
72
+ // Additional pages
73
+ const customPages = this.asl.pages.filter(p => !this.isEntityPage(p.path) && p.path !== '/' && p.path !== '/dashboard');
74
+ customPages.forEach((page, index) => {
75
+ const isLast = index === customPages.length - 1;
76
+ const prefix = isLast ? '│ │ └── ' : '│ │ ├── ';
77
+ lines.push(prefix + page.path.substring(1) + '/page.tsx ' + chalk_1.default.gray(`[${page.name}]`));
78
+ });
79
+ lines.push('│ └── page.tsx ' + chalk_1.default.gray('[Public landing page]'));
80
+ // Components
81
+ lines.push('├── components/');
82
+ // shadCN components
83
+ const shadcnComps = this.componentInference.inferNeededComponents(this.asl);
84
+ lines.push('│ ├── ui/ ' + chalk_1.default.gray(`[${shadcnComps.length} shadCN components]`));
85
+ shadcnComps.slice(0, 5).forEach((comp, index) => {
86
+ lines.push('│ │ ├── ' + comp + '.tsx');
87
+ });
88
+ if (shadcnComps.length > 5) {
89
+ lines.push('│ │ └── ... (' + (shadcnComps.length - 5) + ' more)');
90
+ }
91
+ // Auth components
92
+ if (this.asl.auth) {
93
+ lines.push('│ ├── auth/');
94
+ lines.push('│ │ ├── LoginForm.tsx ' + chalk_1.default.gray('[Email/password form]'));
95
+ lines.push('│ │ └── RegisterForm.tsx');
96
+ }
97
+ // Entity components
98
+ if (this.asl.entities) {
99
+ const entityEntries = Object.entries(this.asl.entities);
100
+ entityEntries.forEach(([entityName, entity], index) => {
101
+ const entityLower = entityName.toLowerCase();
102
+ const isLast = index === entityEntries.length - 1;
103
+ const prefix = isLast ? '│ └── ' : '│ ├── ';
104
+ lines.push(prefix + entityLower + 's/');
105
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '├── ' + entityName + 'Card.tsx');
106
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '├── ' + entityName + 'Form.tsx');
107
+ lines.push(prefix.replace('└── ', ' ').replace('├── ', '│ ') + '└── ' + entityName + 'List.tsx');
108
+ });
109
+ }
110
+ // Actions
111
+ lines.push('├── actions/');
112
+ if (this.asl.auth) {
113
+ lines.push('│ ├── auth.ts ' + chalk_1.default.gray('[login, register, logout]'));
114
+ }
115
+ if (this.asl.entities) {
116
+ const entityEntries = Object.entries(this.asl.entities);
117
+ entityEntries.forEach(([entityName, entity], index) => {
118
+ const entityLower = entityName.toLowerCase();
119
+ const isLast = index === entityEntries.length - 1 && !this.asl.auth;
120
+ const prefix = isLast ? '│ └── ' : '│ ├── ';
121
+ lines.push(prefix + entityLower + 's.ts ' + chalk_1.default.gray('[CRUD with RBAC checks]'));
122
+ });
123
+ }
124
+ // Lib
125
+ lines.push('├── lib/');
126
+ if (this.asl.permissions && this.asl.permissions.length > 0) {
127
+ lines.push('│ ├── guards/');
128
+ lines.push('│ │ ├── withAuth.tsx ' + chalk_1.default.gray('[Protected route HOC]'));
129
+ lines.push('│ │ └── withRole.tsx ' + chalk_1.default.gray('[Role-based access]'));
130
+ lines.push('│ ├── instant.ts ' + chalk_1.default.gray('[InstantDB client]'));
131
+ lines.push('│ └── permissions.ts ' + chalk_1.default.gray('[RBAC helpers]'));
132
+ }
133
+ else {
134
+ lines.push('│ └── instant.ts ' + chalk_1.default.gray('[InstantDB client]'));
135
+ }
136
+ // Types
137
+ lines.push('├── types/');
138
+ lines.push('│ └── schema.ts ' + chalk_1.default.gray('[TypeScript types from schema]'));
139
+ // Root files
140
+ const entityCount = this.asl.entities ? Object.keys(this.asl.entities).length : 0;
141
+ lines.push('├── instant.schema.ts ' + chalk_1.default.gray(`[InstantDB schema - ${entityCount} entities]`));
142
+ if (this.asl.permissions && this.asl.permissions.length > 0) {
143
+ lines.push('├── middleware.ts ' + chalk_1.default.gray('[Route protection]'));
144
+ }
145
+ lines.push('└── .env.local.example ' + chalk_1.default.gray('[InstantDB + auth keys]'));
146
+ return lines.join('\n');
147
+ }
148
+ /**
149
+ * Summarize shadCN and custom components
150
+ */
151
+ summarizeComponents() {
152
+ const shadcnComps = this.componentInference.inferNeededComponents(this.asl);
153
+ const customComps = this.countCustomComponents();
154
+ return {
155
+ shadcn: shadcnComps,
156
+ custom: customComps
157
+ };
158
+ }
159
+ /**
160
+ * List all features that will be generated
161
+ */
162
+ listFeatures() {
163
+ const features = [];
164
+ // Auth
165
+ if (this.asl.auth) {
166
+ const providers = Array.isArray(this.asl.auth.provider)
167
+ ? this.asl.auth.provider.map(p => p === 'email' ? 'Email/password' : p.replace('-', ' ')).join(', ')
168
+ : (this.asl.auth.provider === 'email' ? 'Email/password' : this.asl.auth.provider.replace('-', ' '));
169
+ features.push(`✓ ${providers} authentication`);
170
+ }
171
+ // RBAC
172
+ if (this.asl.permissions && this.asl.permissions.length > 0) {
173
+ const roles = [...new Set(this.asl.permissions.map(p => p.role))];
174
+ features.push(`✓ Role-based access control (${roles.join(', ')})`);
175
+ }
176
+ // CRUD
177
+ features.push(`✓ CRUD operations for all entities`);
178
+ // Route protection
179
+ if (this.asl.permissions && this.asl.permissions.length > 0) {
180
+ features.push(`✓ Protected routes with middleware`);
181
+ }
182
+ // Type safety
183
+ features.push(`✓ Type-safe database operations`);
184
+ // Server actions
185
+ features.push(`✓ Server actions with permissions`);
186
+ return features;
187
+ }
188
+ /**
189
+ * Count total files that will be generated
190
+ */
191
+ countFiles() {
192
+ let count = 0;
193
+ // Base structure
194
+ count += 3; // instant.schema.ts, .env.example, middleware.ts (if RBAC)
195
+ // Auth pages
196
+ if (this.asl.auth) {
197
+ count += 2; // login, register
198
+ count += 2; // LoginForm, RegisterForm
199
+ count += 1; // auth actions
200
+ }
201
+ // Entity pages and components
202
+ if (this.asl.entities) {
203
+ const entityCount = Object.keys(this.asl.entities).length;
204
+ count += entityCount * 7; // 3 pages + 3 components + 1 actions file per entity
205
+ }
206
+ // Custom pages
207
+ const customPages = this.asl.pages.filter(p => !this.isEntityPage(p.path) && p.path !== '/' && p.path !== '/dashboard');
208
+ count += customPages.length;
209
+ // Guards and lib
210
+ if (this.asl.permissions && this.asl.permissions.length > 0) {
211
+ count += 3; // withAuth, withRole, permissions.ts
212
+ }
213
+ count += 1; // instant.ts
214
+ // Types
215
+ count += 1; // schema.ts
216
+ // shadCN components
217
+ const shadcnComps = this.componentInference.inferNeededComponents(this.asl);
218
+ count += shadcnComps.length;
219
+ // Layouts
220
+ count += 1; // dashboard layout
221
+ count += 1; // landing page
222
+ return count;
223
+ }
224
+ /**
225
+ * Count custom components (non-shadCN)
226
+ */
227
+ countCustomComponents() {
228
+ let count = 0;
229
+ // Auth components
230
+ if (this.asl.auth) {
231
+ count += 2; // LoginForm, RegisterForm
232
+ }
233
+ // Entity components (Card, Form, List per entity)
234
+ if (this.asl.entities) {
235
+ count += Object.keys(this.asl.entities).length * 3;
236
+ }
237
+ return count;
238
+ }
239
+ /**
240
+ * Estimate generation time based on complexity
241
+ */
242
+ estimateTime() {
243
+ // Base time: 30 seconds
244
+ let seconds = 30;
245
+ // Auth adds 20 seconds
246
+ if (this.asl.auth) {
247
+ seconds += 20;
248
+ }
249
+ // Each entity adds 10 seconds
250
+ if (this.asl.entities) {
251
+ seconds += Object.keys(this.asl.entities).length * 10;
252
+ }
253
+ // shadCN components add 2 seconds each
254
+ const shadcnComps = this.componentInference.inferNeededComponents(this.asl);
255
+ seconds += shadcnComps.length * 2;
256
+ if (seconds < 60) {
257
+ return `~${seconds} seconds`;
258
+ }
259
+ else {
260
+ const minutes = Math.ceil(seconds / 60);
261
+ return `~${minutes} minute${minutes > 1 ? 's' : ''}`;
262
+ }
263
+ }
264
+ /**
265
+ * Check if a page path is an entity page
266
+ */
267
+ isEntityPage(path) {
268
+ if (!this.asl.entities)
269
+ return false;
270
+ const entityNames = Object.keys(this.asl.entities).map(name => '/' + name.toLowerCase() + 's');
271
+ return entityNames.some(name => path.startsWith(name));
272
+ }
273
+ /**
274
+ * Format and display the complete preview
275
+ */
276
+ display() {
277
+ const manifest = this.generateManifest();
278
+ console.log('\n' + chalk_1.default.blue('📋 Scaffold Preview - ' + this.asl.project.name));
279
+ console.log(chalk_1.default.gray('━'.repeat(60)));
280
+ console.log('\n' + manifest.fileTree);
281
+ console.log('\n' + chalk_1.default.bold('Components Summary:'));
282
+ console.log(manifest.componentsSummary);
283
+ console.log('\n' + chalk_1.default.bold('Features:'));
284
+ manifest.features.forEach(feature => {
285
+ console.log(' • ' + feature);
286
+ });
287
+ console.log('\n' + chalk_1.default.gray(`Estimated time: ${manifest.estimatedTime}`));
288
+ console.log(chalk_1.default.gray('━'.repeat(60)) + '\n');
289
+ }
290
+ }
291
+ exports.ScaffoldPreview = ScaffoldPreview;
292
+ //# sourceMappingURL=ScaffoldPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScaffoldPreview.js","sourceRoot":"","sources":["../../src/services/ScaffoldPreview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { AuthSpec, PermissionSpec } from "../types/asl";
2
+ /**
3
+ * TemplateEngine - Generate code from templates
4
+ *
5
+ * Uses Handlebars templates to generate production-ready:
6
+ * - Auth pages and components
7
+ * - RBAC guards and middleware
8
+ * - Entity CRUD pages and components
9
+ * - UI components with CVA variants
10
+ * - Server Actions with validation
11
+ *
12
+ * Templates are in src/templates/ directory
13
+ */
14
+ export declare class TemplateEngine {
15
+ private helpers;
16
+ private templatesDir;
17
+ constructor();
18
+ /**
19
+ * Generate authentication pages (login, register)
20
+ */
21
+ generateAuthPages(projectPath: string, auth: AuthSpec): Promise<void>;
22
+ /**
23
+ * Generate auth components (LoginForm, RegisterForm)
24
+ */
25
+ private generateAuthComponents;
26
+ /**
27
+ * Generate RBAC guards (withAuth, withRole)
28
+ */
29
+ generateGuards(projectPath: string, permissions: PermissionSpec[]): Promise<void>;
30
+ /**
31
+ * Generate route protection middleware
32
+ */
33
+ generateMiddleware(projectPath: string, permissions: PermissionSpec[]): Promise<void>;
34
+ private generateLoginPage;
35
+ private generateRegisterPage;
36
+ private generateLoginForm;
37
+ private generateWithAuthGuard;
38
+ private generateWithRoleGuard;
39
+ private generateMiddlewareCode;
40
+ /**
41
+ * Generate root layout with font optimization and theme provider
42
+ */
43
+ generateRootLayout(projectPath: string, projectName: string, projectDescription: string): Promise<void>;
44
+ /**
45
+ * Generate utility files (utils.ts with cn helper)
46
+ */
47
+ generateUtils(projectPath: string): Promise<void>;
48
+ /**
49
+ * Generate InstantDB client setup
50
+ */
51
+ generateInstantClient(projectPath: string): Promise<void>;
52
+ /**
53
+ * Generate global CSS with Tailwind v4 and design tokens
54
+ */
55
+ generateGlobalCSS(projectPath: string): Promise<void>;
56
+ /**
57
+ * Generate theme provider component
58
+ */
59
+ generateThemeProvider(projectPath: string): Promise<void>;
60
+ /**
61
+ * Generate button component with CVA variants
62
+ */
63
+ generateButton(projectPath: string): Promise<void>;
64
+ /**
65
+ * Generate all UI components (Card, Input, Label, Skeleton, ThemeToggle)
66
+ */
67
+ generateUIComponents(projectPath: string): Promise<void>;
68
+ /**
69
+ * Generate production login page with Suspense
70
+ */
71
+ generateProductionLoginPage(projectPath: string): Promise<void>;
72
+ /**
73
+ * Generate production login form with useTransition
74
+ */
75
+ generateProductionLoginForm(projectPath: string): Promise<void>;
76
+ /**
77
+ * Generate login skeleton component
78
+ */
79
+ generateLoginSkeleton(projectPath: string): Promise<void>;
80
+ /**
81
+ * Generate register page
82
+ */
83
+ generateProductionRegisterPage(projectPath: string): Promise<void>;
84
+ /**
85
+ * Generate register form component
86
+ */
87
+ generateRegisterForm(projectPath: string): Promise<void>;
88
+ /**
89
+ * Generate auth Server Actions
90
+ */
91
+ generateAuthActions(projectPath: string): Promise<void>;
92
+ /**
93
+ * Generate dashboard layout with navigation
94
+ */
95
+ generateDashboardLayout(projectPath: string, projectName: string, entities: Array<{
96
+ name: string;
97
+ }>): Promise<void>;
98
+ /**
99
+ * Generate error boundary
100
+ */
101
+ generateErrorBoundary(projectPath: string): Promise<void>;
102
+ /**
103
+ * Generate loading boundary
104
+ */
105
+ generateLoadingBoundary(projectPath: string): Promise<void>;
106
+ /**
107
+ * Generate not-found page
108
+ */
109
+ generateNotFoundPage(projectPath: string): Promise<void>;
110
+ /**
111
+ * Generate landing page
112
+ */
113
+ generateLandingPage(projectPath: string, projectName: string, projectDescription: string): Promise<void>;
114
+ /**
115
+ * Generate CRUD pages for an entity
116
+ */
117
+ generateEntityCRUDPages(projectPath: string, entityName: string, fields: Array<{
118
+ name: string;
119
+ type: string;
120
+ required?: boolean;
121
+ label?: string;
122
+ }>): Promise<void>;
123
+ /**
124
+ * Generate CRUD Server Actions for an entity
125
+ */
126
+ generateEntityActions(projectPath: string, entityName: string, fields: Array<{
127
+ name: string;
128
+ type: string;
129
+ required?: boolean;
130
+ }>): Promise<void>;
131
+ /**
132
+ * Generate CRUD components for an entity
133
+ */
134
+ generateEntityComponents(projectPath: string, entityName: string): Promise<void>;
135
+ }
136
+ //# sourceMappingURL=TemplateEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../src/services/TemplateEngine.ts"],"names":[],"mappings":"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"}