@react-spa-scaffold/mcp 1.2.1 → 2.1.0

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 (161) hide show
  1. package/README.md +39 -127
  2. package/dist/features/definitions/api.d.ts.map +1 -1
  3. package/dist/features/definitions/api.js +1 -11
  4. package/dist/features/definitions/api.js.map +1 -1
  5. package/dist/features/definitions/ci.d.ts.map +1 -1
  6. package/dist/features/definitions/ci.js +0 -11
  7. package/dist/features/definitions/ci.js.map +1 -1
  8. package/dist/features/definitions/core.d.ts.map +1 -1
  9. package/dist/features/definitions/core.js +2 -15
  10. package/dist/features/definitions/core.js.map +1 -1
  11. package/dist/features/definitions/devtools.d.ts.map +1 -1
  12. package/dist/features/definitions/devtools.js +1 -15
  13. package/dist/features/definitions/devtools.js.map +1 -1
  14. package/dist/features/definitions/forms.d.ts.map +1 -1
  15. package/dist/features/definitions/forms.js +1 -10
  16. package/dist/features/definitions/forms.js.map +1 -1
  17. package/dist/features/definitions/i18n.d.ts.map +1 -1
  18. package/dist/features/definitions/i18n.js +2 -15
  19. package/dist/features/definitions/i18n.js.map +1 -1
  20. package/dist/features/definitions/mobile.d.ts.map +1 -1
  21. package/dist/features/definitions/mobile.js +0 -10
  22. package/dist/features/definitions/mobile.js.map +1 -1
  23. package/dist/features/definitions/observability.d.ts.map +1 -1
  24. package/dist/features/definitions/observability.js +2 -13
  25. package/dist/features/definitions/observability.js.map +1 -1
  26. package/dist/features/definitions/performance.d.ts.map +1 -1
  27. package/dist/features/definitions/performance.js +2 -14
  28. package/dist/features/definitions/performance.js.map +1 -1
  29. package/dist/features/definitions/routing.d.ts.map +1 -1
  30. package/dist/features/definitions/routing.js +1 -10
  31. package/dist/features/definitions/routing.js.map +1 -1
  32. package/dist/features/definitions/state.d.ts.map +1 -1
  33. package/dist/features/definitions/state.js +1 -12
  34. package/dist/features/definitions/state.js.map +1 -1
  35. package/dist/features/definitions/testing.d.ts.map +1 -1
  36. package/dist/features/definitions/testing.js +1 -17
  37. package/dist/features/definitions/testing.js.map +1 -1
  38. package/dist/features/definitions/theming.d.ts.map +1 -1
  39. package/dist/features/definitions/theming.js +0 -9
  40. package/dist/features/definitions/theming.js.map +1 -1
  41. package/dist/features/definitions/ui.d.ts.map +1 -1
  42. package/dist/features/definitions/ui.js +2 -16
  43. package/dist/features/definitions/ui.js.map +1 -1
  44. package/dist/features/types.d.ts +2 -4
  45. package/dist/features/types.d.ts.map +1 -1
  46. package/dist/server.js +6 -6
  47. package/dist/tools/add-features.d.ts +44 -0
  48. package/dist/tools/add-features.d.ts.map +1 -0
  49. package/dist/tools/add-features.js +157 -0
  50. package/dist/tools/add-features.js.map +1 -0
  51. package/dist/tools/add-features.test.d.ts +5 -0
  52. package/dist/tools/add-features.test.d.ts.map +1 -0
  53. package/dist/tools/add-features.test.js +170 -0
  54. package/dist/tools/add-features.test.js.map +1 -0
  55. package/dist/tools/get-features.d.ts +1 -2
  56. package/dist/tools/get-features.d.ts.map +1 -1
  57. package/dist/tools/get-features.js +1 -2
  58. package/dist/tools/get-features.js.map +1 -1
  59. package/dist/tools/get-features.test.js +6 -2
  60. package/dist/tools/get-features.test.js.map +1 -1
  61. package/dist/tools/get-file.d.ts +1 -1
  62. package/dist/tools/get-file.d.ts.map +1 -1
  63. package/dist/tools/get-file.js +12 -8
  64. package/dist/tools/get-file.js.map +1 -1
  65. package/dist/tools/get-scaffold.d.ts +3 -4
  66. package/dist/tools/get-scaffold.d.ts.map +1 -1
  67. package/dist/tools/get-scaffold.js +58 -29
  68. package/dist/tools/get-scaffold.js.map +1 -1
  69. package/dist/tools/get-scaffold.test.js +25 -10
  70. package/dist/tools/get-scaffold.test.js.map +1 -1
  71. package/dist/tools/index.d.ts +2 -1
  72. package/dist/tools/index.d.ts.map +1 -1
  73. package/dist/tools/index.js +2 -1
  74. package/dist/tools/index.js.map +1 -1
  75. package/dist/tools/registry.js +8 -8
  76. package/dist/tools/registry.js.map +1 -1
  77. package/dist/utils/index.d.ts +0 -1
  78. package/dist/utils/index.d.ts.map +1 -1
  79. package/dist/utils/index.js +0 -1
  80. package/dist/utils/index.js.map +1 -1
  81. package/dist/utils/scaffold/compute.js +1 -1
  82. package/dist/utils/scaffold/compute.js.map +1 -1
  83. package/dist/utils/scaffold/dependencies.d.ts +15 -2
  84. package/dist/utils/scaffold/dependencies.d.ts.map +1 -1
  85. package/dist/utils/scaffold/dependencies.js +15 -8
  86. package/dist/utils/scaffold/dependencies.js.map +1 -1
  87. package/dist/utils/scaffold/file-structure.d.ts +12 -0
  88. package/dist/utils/scaffold/file-structure.d.ts.map +1 -1
  89. package/dist/utils/scaffold/file-structure.js +23 -0
  90. package/dist/utils/scaffold/file-structure.js.map +1 -1
  91. package/dist/utils/scaffold/generators.d.ts.map +1 -1
  92. package/dist/utils/scaffold/generators.js +10 -0
  93. package/dist/utils/scaffold/generators.js.map +1 -1
  94. package/dist/utils/scaffold/index.d.ts +3 -2
  95. package/dist/utils/scaffold/index.d.ts.map +1 -1
  96. package/dist/utils/scaffold/index.js +1 -1
  97. package/dist/utils/scaffold/index.js.map +1 -1
  98. package/package.json +1 -1
  99. package/templates/e2e/tests/language.spec.ts +2 -1
  100. package/templates/src/contexts/queryContext.tsx +1 -2
  101. package/templates/src/lib/storage.ts +1 -1
  102. package/dist/tools/get-example.d.ts +0 -38
  103. package/dist/tools/get-example.d.ts.map +0 -1
  104. package/dist/tools/get-example.js +0 -83
  105. package/dist/tools/get-example.js.map +0 -1
  106. package/dist/tools/get-example.test.d.ts +0 -5
  107. package/dist/tools/get-example.test.d.ts.map +0 -1
  108. package/dist/tools/get-example.test.js +0 -63
  109. package/dist/tools/get-example.test.js.map +0 -1
  110. package/dist/utils/examples/api-patterns.d.ts +0 -3
  111. package/dist/utils/examples/api-patterns.d.ts.map +0 -1
  112. package/dist/utils/examples/api-patterns.js +0 -19
  113. package/dist/utils/examples/api-patterns.js.map +0 -1
  114. package/dist/utils/examples/component-patterns.d.ts +0 -3
  115. package/dist/utils/examples/component-patterns.d.ts.map +0 -1
  116. package/dist/utils/examples/component-patterns.js +0 -71
  117. package/dist/utils/examples/component-patterns.js.map +0 -1
  118. package/dist/utils/examples/context-patterns.d.ts +0 -3
  119. package/dist/utils/examples/context-patterns.d.ts.map +0 -1
  120. package/dist/utils/examples/context-patterns.js +0 -32
  121. package/dist/utils/examples/context-patterns.js.map +0 -1
  122. package/dist/utils/examples/hook-patterns.d.ts +0 -3
  123. package/dist/utils/examples/hook-patterns.d.ts.map +0 -1
  124. package/dist/utils/examples/hook-patterns.js +0 -55
  125. package/dist/utils/examples/hook-patterns.js.map +0 -1
  126. package/dist/utils/examples/i18n-patterns.d.ts +0 -3
  127. package/dist/utils/examples/i18n-patterns.d.ts.map +0 -1
  128. package/dist/utils/examples/i18n-patterns.js +0 -43
  129. package/dist/utils/examples/i18n-patterns.js.map +0 -1
  130. package/dist/utils/examples/index.d.ts +0 -12
  131. package/dist/utils/examples/index.d.ts.map +0 -1
  132. package/dist/utils/examples/index.js +0 -65
  133. package/dist/utils/examples/index.js.map +0 -1
  134. package/dist/utils/examples/mobile-patterns.d.ts +0 -3
  135. package/dist/utils/examples/mobile-patterns.d.ts.map +0 -1
  136. package/dist/utils/examples/mobile-patterns.js +0 -38
  137. package/dist/utils/examples/mobile-patterns.js.map +0 -1
  138. package/dist/utils/examples/page-patterns.d.ts +0 -3
  139. package/dist/utils/examples/page-patterns.d.ts.map +0 -1
  140. package/dist/utils/examples/page-patterns.js +0 -34
  141. package/dist/utils/examples/page-patterns.js.map +0 -1
  142. package/dist/utils/examples/patterns.test.d.ts +0 -6
  143. package/dist/utils/examples/patterns.test.d.ts.map +0 -1
  144. package/dist/utils/examples/patterns.test.js +0 -75
  145. package/dist/utils/examples/patterns.test.js.map +0 -1
  146. package/dist/utils/examples/store-patterns.d.ts +0 -3
  147. package/dist/utils/examples/store-patterns.d.ts.map +0 -1
  148. package/dist/utils/examples/store-patterns.js +0 -40
  149. package/dist/utils/examples/store-patterns.js.map +0 -1
  150. package/dist/utils/examples/test-patterns.d.ts +0 -3
  151. package/dist/utils/examples/test-patterns.d.ts.map +0 -1
  152. package/dist/utils/examples/test-patterns.js +0 -58
  153. package/dist/utils/examples/test-patterns.js.map +0 -1
  154. package/dist/utils/examples/types.d.ts +0 -17
  155. package/dist/utils/examples/types.d.ts.map +0 -1
  156. package/dist/utils/examples/types.js +0 -2
  157. package/dist/utils/examples/types.js.map +0 -1
  158. package/dist/utils/examples/utility-patterns.d.ts +0 -3
  159. package/dist/utils/examples/utility-patterns.d.ts.map +0 -1
  160. package/dist/utils/examples/utility-patterns.js +0 -77
  161. package/dist/utils/examples/utility-patterns.js.map +0 -1
package/README.md CHANGED
@@ -4,24 +4,24 @@
4
4
  ![MCP](https://img.shields.io/badge/MCP-1.0-blue)
5
5
  ![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen)
6
6
 
7
- > **TL;DR:** An MCP server that provides knowledge and patterns for AI agents to scaffold React projects. The AI asks what you need, this server provides the info, and the AI generates your project.
7
+ > **TL;DR:** An MCP server that provides knowledge for AI agents to scaffold React projects. The AI asks what you need, this server provides the info, and the AI generates your project.
8
8
 
9
9
  **3 Tools:**
10
10
 
11
11
  - `get_features` — List available feature modules
12
12
  - `get_scaffold` — Get dependencies and file structure for selected features
13
- - `get_example` — Get real code patterns from react-spa-scaffold
13
+ - `get_file` — Fetch ANY file content (config, docs, source files)
14
14
 
15
15
  ## Philosophy
16
16
 
17
17
  **MCP provides knowledge, AI provides execution.**
18
18
 
19
- | MCP Server Does | AI Agent Does |
20
- | ------------------------ | ------------------------ |
21
- | Lists available features | Decides which to include |
22
- | Reports dependencies | Writes package.json |
23
- | Provides code patterns | Generates actual files |
24
- | Documents conventions | Follows the patterns |
19
+ | MCP Server Does | AI Agent Does |
20
+ | ------------------------ | ---------------------------- |
21
+ | Lists available features | Decides which to include |
22
+ | Reports dependencies | Writes package.json |
23
+ | Provides file content | Adapts for selected features |
24
+ | Documents conventions | Follows the patterns |
25
25
 
26
26
  ## Quick Start
27
27
 
@@ -130,7 +130,7 @@ List all available feature modules.
130
130
 
131
131
  ```typescript
132
132
  const result = await client.callTool('get_features', {});
133
- // Returns: { id, name, description, required, includes }[]
133
+ // Returns: { id, name, description, required }[]
134
134
  ```
135
135
 
136
136
  ### `get_scaffold`
@@ -141,106 +141,29 @@ Get complete scaffold information for selected features.
141
141
  const result = await client.callTool('get_scaffold', {
142
142
  features: ['routing', 'ui', 'forms', 'testing'],
143
143
  projectName: 'my-app',
144
- includeExamples: false,
145
144
  });
146
- // Returns: { packageJson, fileStructure, configFiles, setupCommands, instructions }
145
+ // Returns: { packageJson, fileStructure, configFiles, docs, setupCommands, instructions }
146
+ // Note: All paths are lazy-loaded via get_file
147
147
  ```
148
148
 
149
- ### `get_example`
149
+ ### `get_file`
150
150
 
151
- Get real code from react-spa-scaffold for a specific pattern.
151
+ Fetch content of ANY file from templates.
152
152
 
153
153
  ```typescript
154
- const result = await client.callTool('get_example', {
155
- pattern: 'component-shared',
154
+ const result = await client.callTool('get_file', {
155
+ path: 'src/App.tsx', // or 'vite.config.ts', 'docs/ARCHITECTURE.md'
156
156
  });
157
- // Returns: { pattern, description, filePath, keyPoints, code, usage }
157
+ // Returns: { path, content }
158
158
  ```
159
159
 
160
- ## Available Patterns
161
-
162
- | Category | Patterns |
163
- | ---------- | ---------------------------------------------------------- |
164
- | Components | `component-ui`, `component-shared`, `component-layout` |
165
- | Hooks | `hook-state`, `hook-query`, `hook-form`, `hook-effect` |
166
- | State | `zustand-store` |
167
- | Pages | `page-component`, `lazy-page` |
168
- | Context | `context-provider`, `query-provider` |
169
- | API | `api-client` |
170
- | Testing | `test-component`, `test-hook`, `test-store`, `msw-handler` |
171
- | i18n | `trans-component`, `t-function`, `use-language-hook` |
172
- | Utilities | `zod-schema`, `storage-utility` |
173
- | Mobile | `mobile-context`, `use-media-query`, `use-touch-sizes` |
174
- | UI | `seo-component` |
175
- | Theming | `theme-toggle` |
160
+ Use paths from `get_scaffold` response:
176
161
 
177
- <details>
178
- <summary>Full Pattern Reference</summary>
179
-
180
- **Components:**
181
-
182
- - `component-ui` — Shadcn/UI component with CVA variants
183
- - `component-shared` — Feature component with store integration
184
- - `component-layout` — Layout component for page structure
185
-
186
- **Hooks:**
187
-
188
- - `hook-state` — State hook with browser API
189
- - `hook-query` — TanStack Query data fetching
190
- - `hook-form` — React Hook Form + Zod
191
- - `hook-effect` — Effect-only hook
192
- - `use-language-hook` — Language/locale management
193
-
194
- **State:**
195
-
196
- - `zustand-store` — Store with persistence and devtools
197
-
198
- **Pages:**
199
-
200
- - `page-component` — Page with i18n
201
- - `lazy-page` — Lazy loading pattern
202
-
203
- **Context:**
204
-
205
- - `context-provider` — React Context with provider
206
- - `query-provider` — TanStack Query setup
207
-
208
- **API:**
209
-
210
- - `api-client` — Typed API client
211
-
212
- **Testing:**
213
-
214
- - `test-component` — Component test
215
- - `test-hook` — Hook test with renderHook
216
- - `test-store` — Zustand store test
217
- - `msw-handler` — MSW request handler
218
-
219
- **i18n:**
162
+ - `configFiles`: config file paths
163
+ - `docs`: documentation paths
164
+ - `fileStructure`: ALL source file paths
220
165
 
221
- - `trans-component` i18n Trans usage
222
- - `t-function` — i18n t() usage
223
-
224
- **Utilities:**
225
-
226
- - `zod-schema` — Validation schema
227
- - `storage-utility` — localStorage utilities
228
-
229
- **Mobile:**
230
-
231
- - `mobile-context` — Viewport detection context
232
- - `use-media-query` — Media query hook with breakpoints
233
- - `use-touch-sizes` — Touch-aware sizing hook
234
-
235
- **UI:**
236
-
237
- - `seo-component` — SEO meta tags
238
-
239
- **Theming:**
240
-
241
- - `theme-toggle` — Theme toggle component
242
-
243
- </details>
166
+ **IMPORTANT**: Fetch content for EVERY file, then strip code for unselected features.
244
167
 
245
168
  ## Resources
246
169
 
@@ -258,7 +181,7 @@ Documentation resources read from actual files (auto-synced):
258
181
  ## Example Workflow
259
182
 
260
183
  ```
261
- User Request → get_features() → Select → get_scaffold() → Create → get_example() → Generate
184
+ get_features() → choose features → get_scaffold() → get_file() for each path write project
262
185
  ```
263
186
 
264
187
  **Step 1: Query features**
@@ -275,22 +198,24 @@ const scaffold = await mcp.callTool('get_scaffold', {
275
198
  features: ['routing', 'ui', 'forms'],
276
199
  projectName: 'my-app',
277
200
  });
278
- // Returns: dependencies, file structure, setup commands
201
+ // Returns: packageJson, fileStructure paths, configFiles paths, docs paths
279
202
  ```
280
203
 
281
- **Step 3: Get patterns**
204
+ **Step 3: Fetch each file**
282
205
 
283
206
  ```typescript
284
- const example = await mcp.callTool('get_example', { pattern: 'hook-form' });
285
- // Returns: actual code from react-spa-scaffold
207
+ // Fetch ALL files from fileStructure, configFiles, and docs
208
+ const appContent = await mcp.callTool('get_file', { path: 'src/App.tsx' });
209
+ const viteConfig = await mcp.callTool('get_file', { path: 'vite.config.ts' });
210
+ // ... fetch every file path
286
211
  ```
287
212
 
288
- **Step 4: AI generates project**
213
+ **Step 4: AI writes project**
289
214
 
290
215
  ```
291
216
  mkdir my-app && cd my-app
292
217
  → Write package.json from scaffold.packageJson
293
- Generate files following patterns
218
+ Write each file (strip code for unselected features)
294
219
  → npm install && npm run build
295
220
  ```
296
221
 
@@ -386,11 +311,9 @@ export const myFeature: Feature = {
386
311
  name: 'My Feature',
387
312
  description: 'Description shown to users',
388
313
  required: false,
389
- includes: ['Thing 1', 'Thing 2'],
390
- dependencyNames: ['some-package'],
391
- devDependencyNames: ['some-dev-package'],
314
+ dependencies: ['some-package'],
315
+ devDependencies: ['some-dev-package'],
392
316
  files: ['src/lib/myFeature.ts'],
393
- patterns: ['my-feature-pattern'],
394
317
  scripts: { 'my-script': 'some-command' },
395
318
  };
396
319
  ```
@@ -399,19 +322,9 @@ export const myFeature: Feature = {
399
322
 
400
323
  3. **Add to** `src/features/registry.ts` FEATURES object
401
324
 
402
- 4. **Add patterns** in `src/utils/examples/utility-patterns.ts` (or appropriate category):
403
-
404
- ```
405
- 'my-feature-pattern': {
406
- file: 'src/lib/myFeature.ts',
407
- description: 'My feature implementation',
408
- keyPoints: ['Key point 1', 'Key point 2'],
409
- },
410
- ```
411
-
412
- 5. **Create actual files** in react-spa-scaffold's `src/`
325
+ 4. **Create actual files** in react-spa-scaffold's `src/`
413
326
 
414
- 6. **Rebuild**: `npm run build`
327
+ 5. **Rebuild**: `npm run build`
415
328
 
416
329
  </details>
417
330
 
@@ -438,12 +351,11 @@ Resources read files at runtime — content updates without rebuilding.
438
351
 
439
352
  ## Troubleshooting
440
353
 
441
- | Problem | Solution |
442
- | ---------------------------- | --------------------------------------------------------- |
443
- | "File not found" in examples | Run from monorepo: `cd packages/mcp && npm start` |
444
- | Tools not appearing | Check config path, run `npm run build`, check stderr logs |
445
- | Type errors after changes | Run `npm run typecheck`, then rebuild |
446
- | Patterns returning empty | Ensure referenced file exists in `src/` or `tests/` |
354
+ | Problem | Solution |
355
+ | ------------------------- | --------------------------------------------------------- |
356
+ | "File not found" | Run from monorepo: `cd packages/mcp && npm start` |
357
+ | Tools not appearing | Check config path, run `npm run build`, check stderr logs |
358
+ | Type errors after changes | Run `npm run typecheck`, then rebuild |
447
359
 
448
360
  ## License
449
361
 
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,GAAG,EAAE,OAkBjB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,GAAG,EAAE,OAQjB,CAAC"}
@@ -2,19 +2,9 @@ export const api = {
2
2
  name: 'API',
3
3
  description: 'TanStack Query + typed API client',
4
4
  required: false,
5
- includes: [
6
- 'TanStack Query v5',
7
- 'QueryProvider with optimized defaults (staleTime, gcTime, retry)',
8
- 'Typed API client with methods (get/post/put/patch/delete)',
9
- 'ApiClientError class with status and code',
10
- 'Request timeout handling',
11
- 'Example useExampleQuery hook',
12
- 'API types (Todo, PaginatedResponse, etc.)',
13
- ],
14
- dependencyNames: ['@tanstack/react-query'],
5
+ dependencies: ['@tanstack/react-query'],
15
6
  files: ['src/lib/api.ts', 'src/contexts/queryContext.tsx', 'src/hooks/useExampleQuery.ts', 'src/types/api.ts'],
16
7
  testFiles: ['src/lib/api.test.ts', 'src/hooks/useExampleQuery.test.tsx'],
17
- patterns: ['query-provider', 'use-query-hook', 'api-client'],
18
8
  scripts: {},
19
9
  };
20
10
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,mBAAmB;QACnB,kEAAkE;QAClE,2DAA2D;QAC3D,2CAA2C;QAC3C,0BAA0B;QAC1B,8BAA8B;QAC9B,2CAA2C;KAC5C;IACD,eAAe,EAAE,CAAC,uBAAuB,CAAC;IAC1C,KAAK,EAAE,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,kBAAkB,CAAC;IAC9G,SAAS,EAAE,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;IACxE,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC;IAC5D,OAAO,EAAE,EAAE;CACZ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,uBAAuB,CAAC;IACvC,KAAK,EAAE,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,kBAAkB,CAAC;IAC9G,SAAS,EAAE,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;IACxE,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,OAuBhB,CAAC"}
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,OAYhB,CAAC"}
@@ -2,23 +2,12 @@ export const ci = {
2
2
  name: 'CI/CD',
3
3
  description: 'GitHub Actions + Performance Testing + Dependabot',
4
4
  required: false,
5
- includes: [
6
- 'GitHub Actions CI workflow',
7
- 'Parallel jobs: lint, typecheck, security audit, build, unit tests, e2e tests, performance tests',
8
- 'Performance testing with react-performance-tracking (React Profiler, Lighthouse, Web Vitals)',
9
- 'Dependabot with grouped updates by category',
10
- 'PR template',
11
- 'Artifact uploads (dist, coverage, performance reports)',
12
- 'Dependency caching for faster builds',
13
- 'Custom setup-node-deps action',
14
- ],
15
5
  files: [
16
6
  '.github/workflows/ci.yml',
17
7
  '.github/actions/setup-node-deps/action.yml',
18
8
  '.github/dependabot.yml',
19
9
  '.github/PULL_REQUEST_TEMPLATE.md',
20
10
  ],
21
- patterns: [],
22
11
  scripts: {},
23
12
  configFiles: [],
24
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,4BAA4B;QAC5B,iGAAiG;QACjG,8FAA8F;QAC9F,6CAA6C;QAC7C,aAAa;QACb,wDAAwD;QACxD,sCAAsC;QACtC,+BAA+B;KAChC;IACD,KAAK,EAAE;QACL,0BAA0B;QAC1B,4CAA4C;QAC5C,wBAAwB;QACxB,kCAAkC;KACnC;IACD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE;QACL,0BAA0B;QAC1B,4CAA4C;QAC5C,wBAAwB;QACxB,kCAAkC;KACnC;IACD,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OA0ElB,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OA6DlB,CAAC"}
@@ -2,20 +2,8 @@ export const core = {
2
2
  name: 'Core',
3
3
  description: 'React 19 + TypeScript + Vite 7 + Tailwind CSS v4',
4
4
  required: true,
5
- includes: [
6
- 'React 19 with TypeScript (~5.9.0)',
7
- 'Vite 7 build system',
8
- 'Tailwind CSS v4 with Vite plugin',
9
- 'Inter variable font (@fontsource-variable/inter)',
10
- 'Environment validation with Zod (src/lib/env.ts)',
11
- 'cn() class merge utility (clsx + tailwind-merge)',
12
- 'Basic SEO component (React 19 native head hoisting)',
13
- 'App configuration (src/lib/config.ts)',
14
- 'Type definitions',
15
- 'ErrorBoundary component with reset functionality',
16
- ],
17
- dependencyNames: ['@fontsource-variable/inter', 'clsx', 'react', 'react-dom', 'tailwind-merge', 'zod'],
18
- devDependencyNames: [
5
+ dependencies: ['@fontsource-variable/inter', 'clsx', 'react', 'react-dom', 'tailwind-merge', 'zod'],
6
+ devDependencies: [
19
7
  '@tailwindcss/vite',
20
8
  '@types/node',
21
9
  '@types/react',
@@ -57,7 +45,6 @@ export const core = {
57
45
  'src/components/shared/ErrorBoundary/ErrorBoundary.test.tsx',
58
46
  'e2e/tests/home.spec.ts',
59
47
  ],
60
- patterns: ['component-shared', 'hook-effect', 'error-boundary', 'seo-component'],
61
48
  scripts: {
62
49
  dev: 'vite',
63
50
  build: 'tsc -b && vite build',
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE;QACR,mCAAmC;QACnC,qBAAqB;QACrB,kCAAkC;QAClC,kDAAkD;QAClD,kDAAkD;QAClD,kDAAkD;QAClD,qDAAqD;QACrD,uCAAuC;QACvC,kBAAkB;QAClB,kDAAkD;KACnD;IACD,eAAe,EAAE,CAAC,4BAA4B,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC;IACtG,kBAAkB,EAAE;QAClB,mBAAmB;QACnB,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,sBAAsB;QACtB,8BAA8B;QAC9B,aAAa;QACb,YAAY;QACZ,MAAM;KACP;IACD,KAAK,EAAE;QACL,cAAc;QACd,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,mCAAmC;QACnC,oCAAoC;QACpC,uDAAuD;QACvD,8CAA8C;QAC9C,gCAAgC;QAChC,YAAY;QACZ,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,cAAc;QACd,YAAY;QACZ,oBAAoB;KACrB;IACD,SAAS,EAAE;QACT,uBAAuB;QACvB,wCAAwC;QACxC,4DAA4D;QAC5D,wBAAwB;KACzB;IACD,QAAQ,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,CAAC;IAChF,OAAO,EAAE;QACP,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,cAAc;KAC1B;IACD,WAAW,EAAE;QACX,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,YAAY;QACZ,eAAe;KAChB;CACF,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,CAAC,4BAA4B,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC;IACnG,eAAe,EAAE;QACf,mBAAmB;QACnB,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,sBAAsB;QACtB,8BAA8B;QAC9B,aAAa;QACb,YAAY;QACZ,MAAM;KACP;IACD,KAAK,EAAE;QACL,cAAc;QACd,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,mCAAmC;QACnC,oCAAoC;QACpC,uDAAuD;QACvD,8CAA8C;QAC9C,gCAAgC;QAChC,YAAY;QACZ,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,cAAc;QACd,YAAY;QACZ,oBAAoB;KACrB;IACD,SAAS,EAAE;QACT,uBAAuB;QACvB,wCAAwC;QACxC,4DAA4D;QAC5D,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,cAAc;KAC1B;IACD,WAAW,EAAE;QACX,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,YAAY;QACZ,eAAe;KAChB;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,OAmDtB,CAAC"}
1
+ {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,OAqCtB,CAAC"}
@@ -2,20 +2,7 @@ export const devtools = {
2
2
  name: 'Developer Tooling',
3
3
  description: 'ESLint + Prettier + Husky + Commitlint (using @react-spa-scaffold shared configs)',
4
4
  required: false,
5
- includes: [
6
- '@react-spa-scaffold/eslint-config (React + TypeScript + LinguiJS)',
7
- '@react-spa-scaffold/prettier-config (with Tailwind plugin)',
8
- 'ESLint with TypeScript and React Hooks plugins',
9
- 'eslint-plugin-react-refresh for HMR',
10
- 'Prettier with Tailwind CSS plugin',
11
- 'Husky for git hooks',
12
- 'lint-staged for pre-commit linting',
13
- 'Commitlint for conventional commits',
14
- '.nvmrc for Node.js version (22)',
15
- 'Pre-commit hook: typecheck + lint-staged',
16
- 'Commit-msg hook: commitlint',
17
- ],
18
- devDependencyNames: [
5
+ devDependencies: [
19
6
  '@commitlint/config-conventional',
20
7
  '@eslint/js',
21
8
  '@react-spa-scaffold/eslint-config',
@@ -40,7 +27,6 @@ export const devtools = {
40
27
  '.husky/commit-msg',
41
28
  '.nvmrc',
42
29
  ],
43
- patterns: [],
44
30
  scripts: {
45
31
  lint: 'eslint .',
46
32
  'lint:fix': 'eslint . --fix',
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mFAAmF;IAChG,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,mEAAmE;QACnE,4DAA4D;QAC5D,gDAAgD;QAChD,qCAAqC;QACrC,mCAAmC;QACnC,qBAAqB;QACrB,oCAAoC;QACpC,qCAAqC;QACrC,iCAAiC;QACjC,0CAA0C;QAC1C,6BAA6B;KAC9B;IACD,kBAAkB,EAAE;QAClB,iCAAiC;QACjC,YAAY;QACZ,mCAAmC;QACnC,qCAAqC;QACrC,YAAY;QACZ,QAAQ;QACR,wBAAwB;QACxB,sBAAsB;QACtB,2BAA2B;QAC3B,6BAA6B;QAC7B,OAAO;QACP,aAAa;QACb,UAAU;QACV,6BAA6B;QAC7B,mBAAmB;KACpB;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,mBAAmB;QACnB,mBAAmB;QACnB,QAAQ;KACT;IACD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,oBAAoB;QAC5B,cAAc,EAAE,oBAAoB;QACpC,OAAO,EAAE,OAAO;KACjB;IACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;CAChF,CAAC"}
1
+ {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mFAAmF;IAChG,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE;QACf,iCAAiC;QACjC,YAAY;QACZ,mCAAmC;QACnC,qCAAqC;QACrC,YAAY;QACZ,QAAQ;QACR,wBAAwB;QACxB,sBAAsB;QACtB,2BAA2B;QAC3B,6BAA6B;QAC7B,OAAO;QACP,aAAa;QACb,UAAU;QACV,6BAA6B;QAC7B,mBAAmB;KACpB;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,mBAAmB;QACnB,mBAAmB;QACnB,QAAQ;KACT;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,oBAAoB;QAC5B,cAAc,EAAE,oBAAoB;QACpC,OAAO,EAAE,OAAO;KACjB;IACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;CAChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,OA8BnB,CAAC"}
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,OAqBnB,CAAC"}
@@ -2,15 +2,7 @@ export const forms = {
2
2
  name: 'Form Handling',
3
3
  description: 'React Hook Form + Zod validation + working demo form',
4
4
  required: false,
5
- includes: [
6
- 'React Hook Form with Zod validation',
7
- '@hookform/resolvers for schema integration',
8
- 'RegisterForm component with validation demo (displayed on HomePage)',
9
- 'Form error components (FieldErrorMessage, FormErrorSummary, RootFormError)',
10
- 'useRegisterForm custom hook pattern',
11
- 'Zod schema with refine() for cross-field validation',
12
- ],
13
- dependencyNames: ['@hookform/resolvers', 'react-hook-form'],
5
+ dependencies: ['@hookform/resolvers', 'react-hook-form'],
14
6
  files: [
15
7
  'src/lib/validations.ts',
16
8
  'src/hooks/useRegisterForm.ts',
@@ -26,7 +18,6 @@ export const forms = {
26
18
  'src/hooks/useRegisterForm.test.tsx',
27
19
  'src/components/shared/RegisterForm/RegisterForm.test.tsx',
28
20
  ],
29
- patterns: ['zod-schema', 'hook-form', 'form-error-component', 'register-form'],
30
21
  scripts: {},
31
22
  };
32
23
  //# sourceMappingURL=forms.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,qCAAqC;QACrC,4CAA4C;QAC5C,qEAAqE;QACrE,4EAA4E;QAC5E,qCAAqC;QACrC,qDAAqD;KACtD;IACD,eAAe,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;IAC3D,KAAK,EAAE;QACL,wBAAwB;QACxB,8BAA8B;QAC9B,kCAAkC;QAClC,6BAA6B;QAC7B,6BAA6B;QAC7B,4BAA4B;QAC5B,qDAAqD;QACrD,6CAA6C;KAC9C;IACD,SAAS,EAAE;QACT,6BAA6B;QAC7B,oCAAoC;QACpC,0DAA0D;KAC3D;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,CAAC;IAC9E,OAAO,EAAE,EAAE;CACZ,CAAC"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;IACxD,KAAK,EAAE;QACL,wBAAwB;QACxB,8BAA8B;QAC9B,kCAAkC;QAClC,6BAA6B;QAC7B,6BAA6B;QAC7B,4BAA4B;QAC5B,qDAAqD;QACrD,6CAA6C;KAC9C;IACD,SAAS,EAAE;QACT,6BAA6B;QAC7B,oCAAoC;QACpC,0DAA0D;KAC3D;IACD,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OAgDlB,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OAmClB,CAAC"}
@@ -2,20 +2,8 @@ export const i18n = {
2
2
  name: 'Internationalization',
3
3
  description: 'LinguiJS with dynamic loading and language detection',
4
4
  required: false,
5
- includes: [
6
- 'LinguiJS (core + react + macro)',
7
- 'Trans component for JSX text',
8
- 't() function for programmatic text',
9
- 'Dynamic catalog loading (code splitting per locale)',
10
- 'Browser language detection',
11
- 'Language switcher component',
12
- 'ESLint rule for translator comments (enforced)',
13
- 'Locale files (.po format) for en, es, de',
14
- 'Vite plugin for compilation',
15
- 'useLanguage hook',
16
- ],
17
- dependencyNames: ['@lingui/core', '@lingui/react'],
18
- devDependencyNames: [
5
+ dependencies: ['@lingui/core', '@lingui/react'],
6
+ devDependencies: [
19
7
  '@lingui/babel-plugin-lingui-macro',
20
8
  '@lingui/cli',
21
9
  '@lingui/vite-plugin',
@@ -42,7 +30,6 @@ export const i18n = {
42
30
  'src/components/shared/LanguageSwitcher/LanguageSwitcher.test.tsx',
43
31
  'e2e/tests/language.spec.ts',
44
32
  ],
45
- patterns: ['i18n-index', 'trans-component', 't-function', 'language-switcher', 'use-language-hook'],
46
33
  scripts: {
47
34
  'i18n:extract': 'lingui extract',
48
35
  },
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,iCAAiC;QACjC,8BAA8B;QAC9B,oCAAoC;QACpC,qDAAqD;QACrD,4BAA4B;QAC5B,6BAA6B;QAC7B,gDAAgD;QAChD,0CAA0C;QAC1C,6BAA6B;QAC7B,kBAAkB;KACnB;IACD,eAAe,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IAClD,kBAAkB,EAAE;QAClB,mCAAmC;QACnC,aAAa;QACb,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;KACvB;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,4BAA4B;QAC5B,yBAAyB;QACzB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,0BAA0B;QAC1B,6DAA6D;QAC7D,iDAAiD;QACjD,kBAAkB;KACnB;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,8BAA8B;QAC9B,gCAAgC;QAChC,kEAAkE;QAClE,4BAA4B;KAC7B;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;IACnG,OAAO,EAAE;QACP,cAAc,EAAE,gBAAgB;KACjC;CACF,CAAC"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IAC/C,eAAe,EAAE;QACf,mCAAmC;QACnC,aAAa;QACb,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;KACvB;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,4BAA4B;QAC5B,yBAAyB;QACzB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,0BAA0B;QAC1B,6DAA6D;QAC7D,iDAAiD;QACjD,kBAAkB;KACnB;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,8BAA8B;QAC9B,gCAAgC;QAChC,kEAAkE;QAClE,4BAA4B;KAC7B;IACD,OAAO,EAAE;QACP,cAAc,EAAE,gBAAgB;KACjC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,MAAM,EAAE,OAiBpB,CAAC"}
1
+ {"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,MAAM,EAAE,OAOpB,CAAC"}
@@ -2,18 +2,8 @@ export const mobile = {
2
2
  name: 'Mobile Support',
3
3
  description: 'Responsive design utilities with viewport detection, breakpoints, and touch-aware sizing',
4
4
  required: false,
5
- includes: [
6
- 'MobileProvider context for viewport detection',
7
- 'useMobileContext hook (isMobile, isTablet, isDesktop, width)',
8
- 'useMediaQuery hook with BREAKPOINTS constants (sm, md, lg, xl)',
9
- 'useIsMobile and useIsDesktop convenience hooks',
10
- 'useTouchSizes hook for touch-aware component sizing',
11
- 'requestAnimationFrame-debounced resize handling',
12
- 'SSR-safe viewport detection with fallbacks',
13
- ],
14
5
  files: ['src/contexts/mobileContext.tsx', 'src/hooks/useMediaQuery.ts', 'src/hooks/useTouchSizes.ts'],
15
6
  testFiles: ['src/contexts/mobileContext.test.tsx', 'src/hooks/useMediaQuery.test.ts'],
16
- patterns: ['mobile-context', 'use-media-query', 'use-touch-sizes'],
17
7
  scripts: {},
18
8
  };
19
9
  //# sourceMappingURL=mobile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0FAA0F;IACvG,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,+CAA+C;QAC/C,8DAA8D;QAC9D,gEAAgE;QAChE,gDAAgD;QAChD,qDAAqD;QACrD,iDAAiD;QACjD,4CAA4C;KAC7C;IACD,KAAK,EAAE,CAAC,gCAAgC,EAAE,4BAA4B,EAAE,4BAA4B,CAAC;IACrG,SAAS,EAAE,CAAC,qCAAqC,EAAE,iCAAiC,CAAC;IACrF,QAAQ,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;IAClE,OAAO,EAAE,EAAE;CACZ,CAAC"}
1
+ {"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0FAA0F;IACvG,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,CAAC,gCAAgC,EAAE,4BAA4B,EAAE,4BAA4B,CAAC;IACrG,SAAS,EAAE,CAAC,qCAAqC,EAAE,iCAAiC,CAAC;IACrF,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,OAmB3B,CAAC"}
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,OAQ3B,CAAC"}
@@ -2,20 +2,9 @@ export const observability = {
2
2
  name: 'Observability',
3
3
  description: 'Sentry error tracking with source maps (opt-out via VITE_SENTRY_ENABLED=false)',
4
4
  required: false,
5
- includes: [
6
- 'Sentry React SDK (@sentry/react)',
7
- 'Lazy-loaded Sentry initialization (non-blocking)',
8
- 'Browser tracing integration',
9
- 'Global error handlers (window.onerror, unhandledrejection)',
10
- 'ErrorBoundary integration with Sentry reporting',
11
- 'Source map upload via Vite plugin (CI/CD)',
12
- 'VITE_SENTRY_ENABLED flag for opt-out',
13
- 'SENTRY_CONFIG in lib/config.ts',
14
- ],
15
- dependencyNames: ['@sentry/react'],
16
- devDependencyNames: ['@sentry/vite-plugin'],
5
+ dependencies: ['@sentry/react'],
6
+ devDependencies: ['@sentry/vite-plugin'],
17
7
  files: ['src/lib/config.ts'],
18
- patterns: ['main-entry', 'lib-config'],
19
8
  scripts: {},
20
9
  };
21
10
  //# sourceMappingURL=observability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,kCAAkC;QAClC,kDAAkD;QAClD,6BAA6B;QAC7B,4DAA4D;QAC5D,iDAAiD;QACjD,2CAA2C;QAC3C,sCAAsC;QACtC,gCAAgC;KACjC;IACD,eAAe,EAAE,CAAC,eAAe,CAAC;IAClC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC;IAC3C,KAAK,EAAE,CAAC,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACtC,OAAO,EAAE,EAAE;CACZ,CAAC"}
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,eAAe,EAAE,CAAC,qBAAqB,CAAC;IACxC,KAAK,EAAE,CAAC,mBAAmB,CAAC;IAC5B,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,OA0BzB,CAAC"}
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,OAczB,CAAC"}
@@ -2,22 +2,10 @@ export const performance = {
2
2
  name: 'Performance Testing',
3
3
  description: 'React Profiler + Lighthouse + Web Vitals via react-performance-tracking',
4
4
  required: false,
5
- includes: [
6
- 'react-performance-tracking for unified performance testing',
7
- 'React Profiler metrics (render duration, re-renders)',
8
- 'Lighthouse audits (performance, accessibility, best practices)',
9
- 'Core Web Vitals (LCP, INP, CLS)',
10
- 'FPS monitoring (Chromium only)',
11
- 'PerformanceProviderWrapper with lazy loading (zero prod overhead)',
12
- 'Safe usePerformance hook (never throws)',
13
- 'Separate Playwright project for performance tests',
14
- 'CI-optimized Chrome flags (--no-sandbox)',
15
- ],
16
- dependencyNames: ['react-performance-tracking'],
17
- devDependencyNames: ['chrome-launcher', 'lighthouse'],
5
+ dependencies: ['react-performance-tracking'],
6
+ devDependencies: ['chrome-launcher', 'lighthouse'],
18
7
  files: ['src/contexts/performanceContext.tsx', 'e2e/performance/setup.ts'],
19
8
  testFiles: ['e2e/performance/home.spec.ts', 'src/contexts/performanceContext.test.tsx'],
20
- patterns: ['performance-context', 'performance-e2e', 'profiler-wrapper'],
21
9
  scripts: {
22
10
  'e2e:perf': 'PERF_TEST=true playwright test --project=performance',
23
11
  'e2e:perf:ui': 'PERF_TEST=true playwright test --project=performance --ui',
@@ -1 +1 @@
1
- {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;IACtF,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACR,4DAA4D;QAC5D,sDAAsD;QACtD,gEAAgE;QAChE,iCAAiC;QACjC,gCAAgC;QAChC,mEAAmE;QACnE,yCAAyC;QACzC,mDAAmD;QACnD,0CAA0C;KAC3C;IACD,eAAe,EAAE,CAAC,4BAA4B,CAAC;IAC/C,kBAAkB,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACrD,KAAK,EAAE,CAAC,qCAAqC,EAAE,0BAA0B,CAAC;IAC1E,SAAS,EAAE,CAAC,8BAA8B,EAAE,0CAA0C,CAAC;IACvF,QAAQ,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;IACxE,OAAO,EAAE;QACP,UAAU,EAAE,sDAAsD;QAClE,aAAa,EAAE,2DAA2D;QAC1E,SAAS,EAAE,gCAAgC;KAC5C;IACD,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;IACtF,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,4BAA4B,CAAC;IAC5C,eAAe,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;IAClD,KAAK,EAAE,CAAC,qCAAqC,EAAE,0BAA0B,CAAC;IAC1E,SAAS,EAAE,CAAC,8BAA8B,EAAE,0CAA0C,CAAC;IACvF,OAAO,EAAE;QACP,UAAU,EAAE,sDAAsD;QAClE,aAAa,EAAE,2DAA2D;QAC1E,SAAS,EAAE,gCAAgC;KAC5C;IACD,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAuBrB,CAAC"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAcrB,CAAC"}
@@ -2,15 +2,7 @@ export const routing = {
2
2
  name: 'Routing',
3
3
  description: 'React Router 7 with lazy loading and route constants',
4
4
  required: false,
5
- includes: [
6
- 'React Router 7',
7
- 'Lazy-loaded pages with React.lazy()',
8
- 'Route constants with TypeScript types (generated based on features)',
9
- '404 Not Found page',
10
- 'App.tsx with Suspense fallback',
11
- 'PageLoading component for transitions',
12
- ],
13
- dependencyNames: ['react-router'],
5
+ dependencies: ['react-router'],
14
6
  files: [
15
7
  'src/pages/Home.tsx',
16
8
  'src/pages/NotFound.tsx',
@@ -19,7 +11,6 @@ export const routing = {
19
11
  'src/components/ui/visually-hidden.tsx',
20
12
  ],
21
13
  testFiles: ['e2e/tests/navigation.spec.ts'],
22
- patterns: ['lazy-page', 'route-constants', 'page-component'],
23
14
  scripts: {},
24
15
  };
25
16
  //# sourceMappingURL=routing.js.map