@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.
- package/README.md +39 -127
- package/dist/features/definitions/api.d.ts.map +1 -1
- package/dist/features/definitions/api.js +1 -11
- package/dist/features/definitions/api.js.map +1 -1
- package/dist/features/definitions/ci.d.ts.map +1 -1
- package/dist/features/definitions/ci.js +0 -11
- package/dist/features/definitions/ci.js.map +1 -1
- package/dist/features/definitions/core.d.ts.map +1 -1
- package/dist/features/definitions/core.js +2 -15
- package/dist/features/definitions/core.js.map +1 -1
- package/dist/features/definitions/devtools.d.ts.map +1 -1
- package/dist/features/definitions/devtools.js +1 -15
- package/dist/features/definitions/devtools.js.map +1 -1
- package/dist/features/definitions/forms.d.ts.map +1 -1
- package/dist/features/definitions/forms.js +1 -10
- package/dist/features/definitions/forms.js.map +1 -1
- package/dist/features/definitions/i18n.d.ts.map +1 -1
- package/dist/features/definitions/i18n.js +2 -15
- package/dist/features/definitions/i18n.js.map +1 -1
- package/dist/features/definitions/mobile.d.ts.map +1 -1
- package/dist/features/definitions/mobile.js +0 -10
- package/dist/features/definitions/mobile.js.map +1 -1
- package/dist/features/definitions/observability.d.ts.map +1 -1
- package/dist/features/definitions/observability.js +2 -13
- package/dist/features/definitions/observability.js.map +1 -1
- package/dist/features/definitions/performance.d.ts.map +1 -1
- package/dist/features/definitions/performance.js +2 -14
- package/dist/features/definitions/performance.js.map +1 -1
- package/dist/features/definitions/routing.d.ts.map +1 -1
- package/dist/features/definitions/routing.js +1 -10
- package/dist/features/definitions/routing.js.map +1 -1
- package/dist/features/definitions/state.d.ts.map +1 -1
- package/dist/features/definitions/state.js +1 -12
- package/dist/features/definitions/state.js.map +1 -1
- package/dist/features/definitions/testing.d.ts.map +1 -1
- package/dist/features/definitions/testing.js +1 -17
- package/dist/features/definitions/testing.js.map +1 -1
- package/dist/features/definitions/theming.d.ts.map +1 -1
- package/dist/features/definitions/theming.js +0 -9
- package/dist/features/definitions/theming.js.map +1 -1
- package/dist/features/definitions/ui.d.ts.map +1 -1
- package/dist/features/definitions/ui.js +2 -16
- package/dist/features/definitions/ui.js.map +1 -1
- package/dist/features/types.d.ts +2 -4
- package/dist/features/types.d.ts.map +1 -1
- package/dist/server.js +6 -6
- package/dist/tools/add-features.d.ts +44 -0
- package/dist/tools/add-features.d.ts.map +1 -0
- package/dist/tools/add-features.js +157 -0
- package/dist/tools/add-features.js.map +1 -0
- package/dist/tools/add-features.test.d.ts +5 -0
- package/dist/tools/add-features.test.d.ts.map +1 -0
- package/dist/tools/add-features.test.js +170 -0
- package/dist/tools/add-features.test.js.map +1 -0
- package/dist/tools/get-features.d.ts +1 -2
- package/dist/tools/get-features.d.ts.map +1 -1
- package/dist/tools/get-features.js +1 -2
- package/dist/tools/get-features.js.map +1 -1
- package/dist/tools/get-features.test.js +6 -2
- package/dist/tools/get-features.test.js.map +1 -1
- package/dist/tools/get-file.d.ts +1 -1
- package/dist/tools/get-file.d.ts.map +1 -1
- package/dist/tools/get-file.js +12 -8
- package/dist/tools/get-file.js.map +1 -1
- package/dist/tools/get-scaffold.d.ts +3 -4
- package/dist/tools/get-scaffold.d.ts.map +1 -1
- package/dist/tools/get-scaffold.js +58 -29
- package/dist/tools/get-scaffold.js.map +1 -1
- package/dist/tools/get-scaffold.test.js +25 -10
- package/dist/tools/get-scaffold.test.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.js +8 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/scaffold/compute.js +1 -1
- package/dist/utils/scaffold/compute.js.map +1 -1
- package/dist/utils/scaffold/dependencies.d.ts +15 -2
- package/dist/utils/scaffold/dependencies.d.ts.map +1 -1
- package/dist/utils/scaffold/dependencies.js +15 -8
- package/dist/utils/scaffold/dependencies.js.map +1 -1
- package/dist/utils/scaffold/file-structure.d.ts +12 -0
- package/dist/utils/scaffold/file-structure.d.ts.map +1 -1
- package/dist/utils/scaffold/file-structure.js +23 -0
- package/dist/utils/scaffold/file-structure.js.map +1 -1
- package/dist/utils/scaffold/generators.d.ts.map +1 -1
- package/dist/utils/scaffold/generators.js +10 -0
- package/dist/utils/scaffold/generators.js.map +1 -1
- package/dist/utils/scaffold/index.d.ts +3 -2
- package/dist/utils/scaffold/index.d.ts.map +1 -1
- package/dist/utils/scaffold/index.js +1 -1
- package/dist/utils/scaffold/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/e2e/tests/language.spec.ts +2 -1
- package/templates/src/contexts/queryContext.tsx +1 -2
- package/templates/src/lib/storage.ts +1 -1
- package/dist/tools/get-example.d.ts +0 -38
- package/dist/tools/get-example.d.ts.map +0 -1
- package/dist/tools/get-example.js +0 -83
- package/dist/tools/get-example.js.map +0 -1
- package/dist/tools/get-example.test.d.ts +0 -5
- package/dist/tools/get-example.test.d.ts.map +0 -1
- package/dist/tools/get-example.test.js +0 -63
- package/dist/tools/get-example.test.js.map +0 -1
- package/dist/utils/examples/api-patterns.d.ts +0 -3
- package/dist/utils/examples/api-patterns.d.ts.map +0 -1
- package/dist/utils/examples/api-patterns.js +0 -19
- package/dist/utils/examples/api-patterns.js.map +0 -1
- package/dist/utils/examples/component-patterns.d.ts +0 -3
- package/dist/utils/examples/component-patterns.d.ts.map +0 -1
- package/dist/utils/examples/component-patterns.js +0 -71
- package/dist/utils/examples/component-patterns.js.map +0 -1
- package/dist/utils/examples/context-patterns.d.ts +0 -3
- package/dist/utils/examples/context-patterns.d.ts.map +0 -1
- package/dist/utils/examples/context-patterns.js +0 -32
- package/dist/utils/examples/context-patterns.js.map +0 -1
- package/dist/utils/examples/hook-patterns.d.ts +0 -3
- package/dist/utils/examples/hook-patterns.d.ts.map +0 -1
- package/dist/utils/examples/hook-patterns.js +0 -55
- package/dist/utils/examples/hook-patterns.js.map +0 -1
- package/dist/utils/examples/i18n-patterns.d.ts +0 -3
- package/dist/utils/examples/i18n-patterns.d.ts.map +0 -1
- package/dist/utils/examples/i18n-patterns.js +0 -43
- package/dist/utils/examples/i18n-patterns.js.map +0 -1
- package/dist/utils/examples/index.d.ts +0 -12
- package/dist/utils/examples/index.d.ts.map +0 -1
- package/dist/utils/examples/index.js +0 -65
- package/dist/utils/examples/index.js.map +0 -1
- package/dist/utils/examples/mobile-patterns.d.ts +0 -3
- package/dist/utils/examples/mobile-patterns.d.ts.map +0 -1
- package/dist/utils/examples/mobile-patterns.js +0 -38
- package/dist/utils/examples/mobile-patterns.js.map +0 -1
- package/dist/utils/examples/page-patterns.d.ts +0 -3
- package/dist/utils/examples/page-patterns.d.ts.map +0 -1
- package/dist/utils/examples/page-patterns.js +0 -34
- package/dist/utils/examples/page-patterns.js.map +0 -1
- package/dist/utils/examples/patterns.test.d.ts +0 -6
- package/dist/utils/examples/patterns.test.d.ts.map +0 -1
- package/dist/utils/examples/patterns.test.js +0 -75
- package/dist/utils/examples/patterns.test.js.map +0 -1
- package/dist/utils/examples/store-patterns.d.ts +0 -3
- package/dist/utils/examples/store-patterns.d.ts.map +0 -1
- package/dist/utils/examples/store-patterns.js +0 -40
- package/dist/utils/examples/store-patterns.js.map +0 -1
- package/dist/utils/examples/test-patterns.d.ts +0 -3
- package/dist/utils/examples/test-patterns.d.ts.map +0 -1
- package/dist/utils/examples/test-patterns.js +0 -58
- package/dist/utils/examples/test-patterns.js.map +0 -1
- package/dist/utils/examples/types.d.ts +0 -17
- package/dist/utils/examples/types.d.ts.map +0 -1
- package/dist/utils/examples/types.js +0 -2
- package/dist/utils/examples/types.js.map +0 -1
- package/dist/utils/examples/utility-patterns.d.ts +0 -3
- package/dist/utils/examples/utility-patterns.d.ts.map +0 -1
- package/dist/utils/examples/utility-patterns.js +0 -77
- package/dist/utils/examples/utility-patterns.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,24 +4,24 @@
|
|
|
4
4
|

|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
> **TL;DR:** An MCP server that provides knowledge
|
|
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
|
-
- `
|
|
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
|
|
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
|
|
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
|
-
### `
|
|
149
|
+
### `get_file`
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
Fetch content of ANY file from templates.
|
|
152
152
|
|
|
153
153
|
```typescript
|
|
154
|
-
const result = await client.callTool('
|
|
155
|
-
|
|
154
|
+
const result = await client.callTool('get_file', {
|
|
155
|
+
path: 'src/App.tsx', // or 'vite.config.ts', 'docs/ARCHITECTURE.md'
|
|
156
156
|
});
|
|
157
|
-
// Returns: {
|
|
157
|
+
// Returns: { path, content }
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
201
|
+
// Returns: packageJson, fileStructure paths, configFiles paths, docs paths
|
|
279
202
|
```
|
|
280
203
|
|
|
281
|
-
**Step 3:
|
|
204
|
+
**Step 3: Fetch each file**
|
|
282
205
|
|
|
283
206
|
```typescript
|
|
284
|
-
|
|
285
|
-
|
|
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
|
|
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
|
-
→
|
|
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
|
-
|
|
390
|
-
|
|
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. **
|
|
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
|
-
|
|
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
|
|
442
|
-
|
|
|
443
|
-
| "File not found"
|
|
444
|
-
| Tools not appearing
|
|
445
|
-
| Type errors after changes
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
6
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
6
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
6
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
6
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|