@auto-engineer/frontend-generator-react-graphql 0.11.15 → 0.11.17

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 (33) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/shadcn-starter/package.json +1 -2
  3. package/dist/src/commands/generate-client.d.ts.map +1 -1
  4. package/dist/src/commands/generate-client.js +4 -1
  5. package/dist/src/commands/generate-client.js.map +1 -1
  6. package/dist/src/generator/generateComponents.d.ts +1 -1
  7. package/dist/src/generator/generateComponents.d.ts.map +1 -1
  8. package/dist/src/generator/generateComponents.js +80 -15
  9. package/dist/src/generator/generateComponents.js.map +1 -1
  10. package/dist/src/generator/templates/component.ejs +125 -3
  11. package/dist/src/generator/templates/component.ejs.specs.d.ts +2 -0
  12. package/dist/src/generator/templates/component.ejs.specs.d.ts.map +1 -0
  13. package/dist/src/generator/templates/component.ejs.specs.js +407 -0
  14. package/dist/src/generator/templates/component.ejs.specs.js.map +1 -0
  15. package/dist/src/generator/templates/component.ejs.specs.ts +448 -0
  16. package/dist/src/generator/templates/page.ejs +97 -0
  17. package/dist/src/generator/templates/page.ejs.specs.d.ts +2 -0
  18. package/dist/src/generator/templates/page.ejs.specs.d.ts.map +1 -0
  19. package/dist/src/generator/templates/page.ejs.specs.js +284 -0
  20. package/dist/src/generator/templates/page.ejs.specs.js.map +1 -0
  21. package/dist/src/generator/templates/page.ejs.specs.ts +315 -0
  22. package/dist/src/generator/type-guidance-builder.d.ts +12 -0
  23. package/dist/src/generator/type-guidance-builder.d.ts.map +1 -0
  24. package/dist/src/generator/type-guidance-builder.js +212 -0
  25. package/dist/src/generator/type-guidance-builder.js.map +1 -0
  26. package/dist/src/graphql-type-extractor.d.ts +16 -0
  27. package/dist/src/graphql-type-extractor.d.ts.map +1 -0
  28. package/dist/src/graphql-type-extractor.js +144 -0
  29. package/dist/src/graphql-type-extractor.js.map +1 -0
  30. package/dist/src/types.d.ts +1 -0
  31. package/dist/src/types.d.ts.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +4 -4
@@ -0,0 +1,407 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import ejs from 'ejs';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+ const componentTemplate = fs.readFileSync(path.resolve(__dirname, 'component.ejs'), 'utf-8');
9
+ describe('component.ejs', () => {
10
+ describe('Molecules', () => {
11
+ it('should generate a basic molecule with atoms and no type guidance', () => {
12
+ const content = ejs.render(componentTemplate, {
13
+ name: 'TaskCard',
14
+ description: 'Card displaying task information',
15
+ atoms: ['Button', 'Badge'],
16
+ molecules: [],
17
+ specs: [],
18
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
19
+ });
20
+ expect(content).toContain('// 🎨 REQUIRED ATOM COMPONENTS:');
21
+ expect(content).toContain('// Button, Badge');
22
+ expect(content).toContain('// Card displaying task information');
23
+ expect(content).toContain('export function TaskCard()');
24
+ expect(content).not.toContain('IMPLEMENTATION GUIDE');
25
+ });
26
+ it('should generate a molecule with atoms and specs', () => {
27
+ const content = ejs.render(componentTemplate, {
28
+ name: 'UserProfile',
29
+ description: 'User profile card with avatar and details',
30
+ atoms: ['Avatar', 'Text', 'Button'],
31
+ molecules: [],
32
+ specs: [
33
+ 'display user avatar with fallback initials',
34
+ 'show user name and email',
35
+ 'provide edit button for authorized users',
36
+ ],
37
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
38
+ });
39
+ expect(content).toContain('// Specs:');
40
+ expect(content).toContain('// - display user avatar with fallback initials');
41
+ expect(content).toContain('// - show user name and email');
42
+ expect(content).toContain('export function UserProfile()');
43
+ });
44
+ it('should generate a molecule with empty atoms array', () => {
45
+ const content = ejs.render(componentTemplate, {
46
+ name: 'EmptyMolecule',
47
+ description: 'Molecule with no atoms',
48
+ atoms: [],
49
+ molecules: [],
50
+ specs: [],
51
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
52
+ });
53
+ expect(content).toContain('// Molecule with no atoms');
54
+ expect(content).toContain('export function EmptyMolecule()');
55
+ expect(content).not.toContain('🎨 REQUIRED ATOM COMPONENTS');
56
+ });
57
+ });
58
+ describe('Organisms', () => {
59
+ it('should generate a basic organism with molecules and no type guidance', () => {
60
+ const content = ejs.render(componentTemplate, {
61
+ name: 'TaskList',
62
+ description: 'List of task cards with filtering',
63
+ atoms: [],
64
+ molecules: ['TaskCard', 'FilterBar'],
65
+ specs: [],
66
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
67
+ moleculeSpecs: {},
68
+ });
69
+ expect(content).toContain('import { TaskCard } from "@/components/molecules/TaskCard";');
70
+ expect(content).toContain('import { FilterBar } from "@/components/molecules/FilterBar";');
71
+ expect(content).toContain('// List of task cards with filtering');
72
+ expect(content).toContain('IMPLEMENTATION GUIDE');
73
+ expect(content).toContain('export function TaskList()');
74
+ });
75
+ it('should generate an organism with molecules and specs', () => {
76
+ const content = ejs.render(componentTemplate, {
77
+ name: 'CommentSection',
78
+ description: 'Comment section with add/edit/delete functionality',
79
+ atoms: [],
80
+ molecules: ['CommentCard', 'CommentForm'],
81
+ specs: [
82
+ 'display comments in chronological order',
83
+ 'allow users to add new comments',
84
+ 'allow users to edit their own comments',
85
+ 'allow users to delete their own comments',
86
+ ],
87
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
88
+ moleculeSpecs: {},
89
+ });
90
+ expect(content).toContain('// Specs:');
91
+ expect(content).toContain('// - display comments in chronological order');
92
+ expect(content).toContain('IMPLEMENTATION GUIDE');
93
+ expect(content).toContain('export function CommentSection()');
94
+ });
95
+ it('should generate an organism with comprehensive molecule (all specs covered)', () => {
96
+ const content = ejs.render(componentTemplate, {
97
+ name: 'StatisticsDashboard',
98
+ description: 'Dashboard showing task statistics',
99
+ atoms: [],
100
+ molecules: ['ProgressRing', 'StatCard'],
101
+ specs: ['show total tasks count', 'display completion percentage', 'show breakdown by status'],
102
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
103
+ moleculeSpecs: {
104
+ StatCard: ['show total tasks count', 'display completion percentage', 'show breakdown by status'],
105
+ ProgressRing: ['display circular progress'],
106
+ },
107
+ });
108
+ expect(content).toContain('IMPLEMENTATION GUIDE');
109
+ expect(content).toContain('Spec Coverage:');
110
+ expect(content).toContain('[✓] show total tasks count ← StatCard');
111
+ expect(content).toContain('[✓] display completion percentage ← StatCard');
112
+ expect(content).toContain('[✓] show breakdown by status ← StatCard');
113
+ expect(content).toContain('StatCard implements ALL ✓ specs');
114
+ expect(content).toContain('ProgressRing: Helper component');
115
+ expect(content).toContain('CRITICAL: NO grids/arrays for single comprehensive components');
116
+ expect(content).toContain('// <ProgressRing />');
117
+ expect(content).toContain('// <StatCard />');
118
+ });
119
+ it('should generate an organism with partial spec coverage', () => {
120
+ const content = ejs.render(componentTemplate, {
121
+ name: 'UserDashboard',
122
+ description: 'Dashboard with user info',
123
+ atoms: [],
124
+ molecules: ['UserCard', 'ActivityFeed'],
125
+ specs: ['display user profile', 'show recent activity', 'display settings button'],
126
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
127
+ moleculeSpecs: {
128
+ UserCard: ['display user profile'],
129
+ ActivityFeed: ['show recent activity'],
130
+ },
131
+ });
132
+ expect(content).toContain('Spec Coverage:');
133
+ expect(content).toContain('[✓] display user profile ← UserCard');
134
+ expect(content).toContain('[✓] show recent activity ← ActivityFeed');
135
+ expect(content).toContain('[ ] display settings button');
136
+ expect(content).not.toContain('implements ALL ✓ specs');
137
+ expect(content).toContain('UserCard: 1 capabilities');
138
+ expect(content).toContain('ActivityFeed: 1 capabilities');
139
+ });
140
+ it('should generate an organism with full type guidance (queries, mutations, enums)', () => {
141
+ const content = ejs.render(componentTemplate, {
142
+ name: 'TodoManager',
143
+ description: 'Todo management with CRUD operations',
144
+ atoms: [],
145
+ molecules: ['TodoCard', 'TodoForm'],
146
+ specs: ['manage todo items', 'support status transitions'],
147
+ typeGuidance: {
148
+ imports: [
149
+ 'TodoState',
150
+ 'TodoStateStatus',
151
+ 'MarkTodoInProgressMutationVariables',
152
+ 'MarkTodoCompleteMutationVariables',
153
+ ],
154
+ queryGuidance: [
155
+ "Query - AllTodos:\n Import: import { AllTodos } from '@/graphql/queries'\n Returns: data?.todos → TodoState[]\n Usage: const { data } = useQuery(AllTodos)",
156
+ ],
157
+ mutationGuidance: [
158
+ "Mutation - MarkTodoInProgress:\n Import: import { MarkTodoInProgress } from '@/graphql/mutations'\n Variables: MarkTodoInProgressMutationVariables\n Input: { todoId: string }\n Usage: const [mutate] = useMutation(MarkTodoInProgress)\n Call: mutate({ variables: { input: {...} } })",
159
+ ],
160
+ enumGuidance: [
161
+ "Enum - TodoStateStatus:\n Import: import { TodoStateStatus } from '@/gql/graphql'\n Values:\n TodoStateStatus.Pending = 'PENDING'\n TodoStateStatus.InProgress = 'IN_PROGRESS'\n TodoStateStatus.Completed = 'COMPLETED'",
162
+ ],
163
+ },
164
+ moleculeSpecs: {},
165
+ });
166
+ expect(content).toContain('CRITICAL - TYPE GUIDANCE');
167
+ expect(content).toContain('Query - AllTodos:');
168
+ expect(content).toContain('Mutation - MarkTodoInProgress:');
169
+ expect(content).toContain('Enum - TodoStateStatus:');
170
+ expect(content).toContain('PROHIBITED PATTERNS');
171
+ expect(content).toContain('MUTATION ERROR HANDLING PATTERN');
172
+ expect(content).toContain('IMPLEMENTATION GUIDE');
173
+ });
174
+ it('should generate an organism with type field guidance', () => {
175
+ const content = ejs.render(componentTemplate, {
176
+ name: 'UserDashboard',
177
+ description: 'Dashboard displaying user information',
178
+ atoms: [],
179
+ molecules: ['UserCard'],
180
+ specs: ['display user details', 'show activity history'],
181
+ typeGuidance: {
182
+ imports: ['User'],
183
+ queryGuidance: [
184
+ "Query - GetUser:\n Import: import { GetUser } from '@/graphql/queries'\n Returns: data?.user → User\n Usage: const { data } = useQuery(GetUser)",
185
+ ],
186
+ mutationGuidance: [],
187
+ typeFieldGuidance: [
188
+ 'Type - User:\n Fields: {\n userId: string\n name: string\n email: string\n }',
189
+ ],
190
+ enumGuidance: [],
191
+ },
192
+ moleculeSpecs: {},
193
+ });
194
+ expect(content).toContain('Type - User:');
195
+ expect(content).toContain('Fields: {');
196
+ expect(content).toContain('userId: string');
197
+ });
198
+ it('should generate an organism with NO spec coverage (molecules cover none)', () => {
199
+ const content = ejs.render(componentTemplate, {
200
+ name: 'ShoppingCart',
201
+ description: 'Shopping cart with items and checkout',
202
+ atoms: [],
203
+ molecules: ['CartItem', 'CheckoutButton'],
204
+ specs: ['display cart total', 'allow quantity updates', 'show promo code input'],
205
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
206
+ moleculeSpecs: {
207
+ CartItem: ['display item details', 'show item price'],
208
+ CheckoutButton: ['handle checkout flow'],
209
+ },
210
+ });
211
+ expect(content).toContain('Spec Coverage:');
212
+ expect(content).toContain('[ ] display cart total');
213
+ expect(content).toContain('[ ] allow quantity updates');
214
+ expect(content).toContain('[ ] show promo code input');
215
+ expect(content).not.toContain('implements ALL ✓ specs');
216
+ expect(content).toContain('CartItem: 2 capabilities');
217
+ expect(content).toContain('CheckoutButton: 1 capabilities');
218
+ });
219
+ it('should generate an organism with multiple comprehensive molecules', () => {
220
+ const content = ejs.render(componentTemplate, {
221
+ name: 'DualDashboard',
222
+ description: 'Dashboard with two independent sections',
223
+ atoms: [],
224
+ molecules: ['LeftPanel', 'RightPanel'],
225
+ specs: ['show user metrics', 'show system health'],
226
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
227
+ moleculeSpecs: {
228
+ LeftPanel: ['show user metrics'],
229
+ RightPanel: ['show system health'],
230
+ },
231
+ });
232
+ expect(content).toContain('[✓] show user metrics ← LeftPanel');
233
+ expect(content).toContain('[✓] show system health ← RightPanel');
234
+ expect(content).not.toContain('implements ALL ✓ specs');
235
+ expect(content).toContain('LeftPanel: 1 capabilities');
236
+ expect(content).toContain('RightPanel: 1 capabilities');
237
+ });
238
+ it('should generate an organism with only mutation guidance (no queries)', () => {
239
+ const content = ejs.render(componentTemplate, {
240
+ name: 'CreateItemForm',
241
+ description: 'Form to create new item',
242
+ atoms: [],
243
+ molecules: ['FormField', 'SubmitButton'],
244
+ specs: ['collect item data', 'submit to server'],
245
+ typeGuidance: {
246
+ imports: ['CreateItemMutationVariables'],
247
+ queryGuidance: [],
248
+ mutationGuidance: [
249
+ "Mutation - CreateItem:\n Import: import { CreateItem } from '@/graphql/mutations'\n Variables: CreateItemMutationVariables\n Usage: const [mutate] = useMutation(CreateItem)",
250
+ ],
251
+ enumGuidance: [],
252
+ },
253
+ moleculeSpecs: {},
254
+ });
255
+ expect(content).toContain('CRITICAL - TYPE GUIDANCE');
256
+ expect(content).toContain('Mutation - CreateItem:');
257
+ expect(content).toContain('MUTATION ERROR HANDLING PATTERN');
258
+ expect(content).not.toContain('Query -');
259
+ });
260
+ it('should generate an organism with only enum guidance', () => {
261
+ const content = ejs.render(componentTemplate, {
262
+ name: 'PriorityFilter',
263
+ description: 'Filter by priority level',
264
+ atoms: [],
265
+ molecules: ['Dropdown'],
266
+ specs: ['allow priority selection'],
267
+ typeGuidance: {
268
+ imports: ['Priority'],
269
+ queryGuidance: [],
270
+ mutationGuidance: [],
271
+ enumGuidance: [
272
+ "Enum - Priority:\n Import: import { Priority } from '@/gql/graphql'\n Values:\n Priority.High = 'HIGH'\n Priority.Medium = 'MEDIUM'\n Priority.Low = 'LOW'",
273
+ ],
274
+ },
275
+ moleculeSpecs: {},
276
+ });
277
+ expect(content).toContain('CRITICAL - TYPE GUIDANCE');
278
+ expect(content).toContain('Enum - Priority:');
279
+ expect(content).not.toContain('Query -');
280
+ expect(content).not.toContain('Mutation -');
281
+ expect(content).not.toContain('MUTATION ERROR HANDLING');
282
+ });
283
+ it('should generate an organism with atoms AND molecules (mixed)', () => {
284
+ const content = ejs.render(componentTemplate, {
285
+ name: 'SearchBar',
286
+ description: 'Search bar with filters',
287
+ atoms: ['Input', 'Button'],
288
+ molecules: ['FilterPanel'],
289
+ specs: ['accept search input', 'show filter options'],
290
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
291
+ moleculeSpecs: {
292
+ FilterPanel: ['show filter options'],
293
+ },
294
+ });
295
+ expect(content).toContain('// 🎨 REQUIRED ATOM COMPONENTS:');
296
+ expect(content).toContain('// Input, Button');
297
+ expect(content).toContain('import { FilterPanel } from "@/components/molecules/FilterPanel";');
298
+ expect(content).toContain('IMPLEMENTATION GUIDE');
299
+ expect(content).toContain('[✓] show filter options ← FilterPanel');
300
+ expect(content).toContain('[ ] accept search input');
301
+ });
302
+ it('should generate an organism with empty moleculeSpecs for some molecules', () => {
303
+ const content = ejs.render(componentTemplate, {
304
+ name: 'MixedPanel',
305
+ description: 'Panel with documented and undocumented molecules',
306
+ atoms: [],
307
+ molecules: ['DocumentedCard', 'UndocumentedCard'],
308
+ specs: ['show data', 'allow interactions'],
309
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
310
+ moleculeSpecs: {
311
+ DocumentedCard: ['show data'],
312
+ },
313
+ });
314
+ expect(content).toContain('[✓] show data ← DocumentedCard');
315
+ expect(content).toContain('[ ] allow interactions');
316
+ expect(content).toContain('DocumentedCard: 1 capabilities');
317
+ expect(content).toContain('UndocumentedCard: 0 capabilities');
318
+ });
319
+ it('should handle organism with specs but molecules have empty arrays in moleculeSpecs', () => {
320
+ const content = ejs.render(componentTemplate, {
321
+ name: 'EmptySpecPanel',
322
+ description: 'Panel where molecules have no documented specs',
323
+ atoms: [],
324
+ molecules: ['Card1', 'Card2'],
325
+ specs: ['display content', 'handle clicks'],
326
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
327
+ moleculeSpecs: {
328
+ Card1: [],
329
+ Card2: [],
330
+ },
331
+ });
332
+ expect(content).toContain('[ ] display content');
333
+ expect(content).toContain('[ ] handle clicks');
334
+ expect(content).toContain('Card1: 0 capabilities');
335
+ expect(content).toContain('Card2: 0 capabilities');
336
+ });
337
+ it('should generate molecule with type guidance (molecules can have GraphQL)', () => {
338
+ const content = ejs.render(componentTemplate, {
339
+ name: 'UserCard',
340
+ description: 'Card showing user information',
341
+ atoms: ['Avatar', 'Text'],
342
+ molecules: [],
343
+ specs: ['display user name', 'show user avatar'],
344
+ typeGuidance: {
345
+ imports: ['User'],
346
+ queryGuidance: [
347
+ "Query - GetCurrentUser:\n Import: import { GetCurrentUser } from '@/graphql/queries'\n Returns: data?.currentUser → User",
348
+ ],
349
+ mutationGuidance: [],
350
+ enumGuidance: [],
351
+ },
352
+ });
353
+ expect(content).toContain('CRITICAL - TYPE GUIDANCE');
354
+ expect(content).toContain('Query - GetCurrentUser:');
355
+ expect(content).not.toContain('IMPLEMENTATION GUIDE');
356
+ });
357
+ });
358
+ describe('Edge Cases', () => {
359
+ it('should handle undefined specs gracefully', () => {
360
+ const content = ejs.render(componentTemplate, {
361
+ name: 'NoSpecs',
362
+ description: 'Component without specs',
363
+ atoms: [],
364
+ molecules: ['Helper'],
365
+ specs: undefined,
366
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
367
+ moleculeSpecs: {},
368
+ });
369
+ expect(content).toContain('IMPLEMENTATION GUIDE');
370
+ expect(content).not.toContain('Spec Coverage:');
371
+ expect(content).toContain('export function NoSpecs()');
372
+ });
373
+ it('should handle empty arrays vs undefined consistently', () => {
374
+ const content = ejs.render(componentTemplate, {
375
+ name: 'Consistent',
376
+ description: 'Test consistency',
377
+ atoms: [],
378
+ molecules: [],
379
+ specs: [],
380
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
381
+ });
382
+ expect(content).not.toContain('IMPLEMENTATION GUIDE');
383
+ expect(content).toContain('export function Consistent()');
384
+ });
385
+ it('should handle organism with single comprehensive molecule and helper', () => {
386
+ const content = ejs.render(componentTemplate, {
387
+ name: 'ProfilePage',
388
+ description: 'User profile page',
389
+ atoms: [],
390
+ molecules: ['ProfileCard', 'EditButton'],
391
+ specs: ['show user profile', 'show user stats', 'allow editing'],
392
+ typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
393
+ moleculeSpecs: {
394
+ ProfileCard: ['show user profile', 'show user stats'],
395
+ EditButton: [],
396
+ },
397
+ });
398
+ expect(content).toContain('[✓] show user profile ← ProfileCard');
399
+ expect(content).toContain('[✓] show user stats ← ProfileCard');
400
+ expect(content).toContain('[ ] allow editing');
401
+ expect(content).not.toContain('implements ALL ✓ specs');
402
+ expect(content).toContain('ProfileCard: 2 capabilities');
403
+ expect(content).toContain('EditButton: 0 capabilities');
404
+ });
405
+ });
406
+ });
407
+ //# sourceMappingURL=component.ejs.specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.ejs.specs.js","sourceRoot":"","sources":["../../../../src/generator/templates/component.ejs.specs.ts"],"names":[],"mappings":"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"}