create-fluxstack 1.10.1 → 1.12.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/.dockerignore +1 -2
- package/Dockerfile +8 -8
- package/LLMD/INDEX.md +64 -0
- package/LLMD/MAINTENANCE.md +197 -0
- package/LLMD/MIGRATION.md +156 -0
- package/LLMD/config/.gitkeep +1 -0
- package/LLMD/config/declarative-system.md +268 -0
- package/LLMD/config/environment-vars.md +327 -0
- package/LLMD/config/runtime-reload.md +401 -0
- package/LLMD/core/.gitkeep +1 -0
- package/LLMD/core/build-system.md +599 -0
- package/LLMD/core/framework-lifecycle.md +229 -0
- package/LLMD/core/plugin-system.md +451 -0
- package/LLMD/patterns/.gitkeep +1 -0
- package/LLMD/patterns/anti-patterns.md +297 -0
- package/LLMD/patterns/project-structure.md +264 -0
- package/LLMD/patterns/type-safety.md +440 -0
- package/LLMD/reference/.gitkeep +1 -0
- package/LLMD/reference/cli-commands.md +250 -0
- package/LLMD/reference/plugin-hooks.md +357 -0
- package/LLMD/reference/routing.md +39 -0
- package/LLMD/reference/troubleshooting.md +364 -0
- package/LLMD/resources/.gitkeep +1 -0
- package/LLMD/resources/controllers.md +465 -0
- package/LLMD/resources/live-components.md +703 -0
- package/LLMD/resources/live-rooms.md +482 -0
- package/LLMD/resources/live-upload.md +130 -0
- package/LLMD/resources/plugins-external.md +617 -0
- package/LLMD/resources/routes-eden.md +254 -0
- package/README.md +37 -17
- package/app/client/index.html +0 -1
- package/app/client/src/App.tsx +107 -150
- package/app/client/src/components/AppLayout.tsx +68 -0
- package/app/client/src/components/BackButton.tsx +13 -0
- package/app/client/src/components/DemoPage.tsx +20 -0
- package/app/client/src/components/LiveUploadWidget.tsx +204 -0
- package/app/client/src/lib/eden-api.ts +85 -60
- package/app/client/src/live/ChatDemo.tsx +107 -0
- package/app/client/src/live/CounterDemo.tsx +206 -0
- package/app/client/src/live/FormDemo.tsx +119 -0
- package/app/client/src/live/RoomChatDemo.tsx +242 -0
- package/app/client/src/live/UploadDemo.tsx +21 -0
- package/app/client/src/main.tsx +4 -1
- package/app/client/src/pages/ApiTestPage.tsx +108 -0
- package/app/client/src/pages/HomePage.tsx +76 -0
- package/app/server/app.ts +1 -4
- package/app/server/controllers/users.controller.ts +36 -44
- package/app/server/index.ts +25 -35
- package/app/server/live/LiveChat.ts +77 -0
- package/app/server/live/LiveCounter.ts +67 -0
- package/app/server/live/LiveForm.ts +63 -0
- package/app/server/live/LiveLocalCounter.ts +32 -0
- package/app/server/live/LiveRoomChat.ts +285 -0
- package/app/server/live/LiveUpload.ts +81 -0
- package/app/server/routes/index.ts +3 -1
- package/app/server/routes/room.routes.ts +117 -0
- package/app/server/routes/users.routes.ts +35 -27
- package/app/shared/types/index.ts +14 -2
- package/config/app.config.ts +2 -62
- package/config/client.config.ts +2 -95
- package/config/database.config.ts +2 -99
- package/config/fluxstack.config.ts +25 -45
- package/config/index.ts +57 -38
- package/config/monitoring.config.ts +2 -114
- package/config/plugins.config.ts +2 -80
- package/config/server.config.ts +2 -68
- package/config/services.config.ts +2 -130
- package/config/system/app.config.ts +29 -0
- package/config/system/build.config.ts +49 -0
- package/config/system/client.config.ts +68 -0
- package/config/system/database.config.ts +17 -0
- package/config/system/fluxstack.config.ts +114 -0
- package/config/{logger.config.ts → system/logger.config.ts} +3 -1
- package/config/system/monitoring.config.ts +114 -0
- package/config/system/plugins.config.ts +84 -0
- package/config/{runtime.config.ts → system/runtime.config.ts} +1 -1
- package/config/system/server.config.ts +68 -0
- package/config/system/services.config.ts +46 -0
- package/config/{system.config.ts → system/system.config.ts} +1 -1
- package/core/build/flux-plugins-generator.ts +325 -325
- package/core/build/index.ts +39 -27
- package/core/build/live-components-generator.ts +3 -3
- package/core/build/optimizer.ts +235 -235
- package/core/cli/command-registry.ts +6 -4
- package/core/cli/commands/build.ts +79 -0
- package/core/cli/commands/create.ts +54 -0
- package/core/cli/commands/dev.ts +101 -0
- package/core/cli/commands/help.ts +34 -0
- package/core/cli/commands/index.ts +34 -0
- package/core/cli/commands/make-plugin.ts +90 -0
- package/core/cli/commands/plugin-add.ts +197 -0
- package/core/cli/commands/plugin-deps.ts +2 -2
- package/core/cli/commands/plugin-list.ts +208 -0
- package/core/cli/commands/plugin-remove.ts +170 -0
- package/core/cli/generators/component.ts +769 -769
- package/core/cli/generators/controller.ts +1 -1
- package/core/cli/generators/index.ts +146 -146
- package/core/cli/generators/interactive.ts +227 -227
- package/core/cli/generators/plugin.ts +2 -2
- package/core/cli/generators/prompts.ts +82 -82
- package/core/cli/generators/route.ts +6 -6
- package/core/cli/generators/service.ts +2 -2
- package/core/cli/generators/template-engine.ts +4 -3
- package/core/cli/generators/types.ts +2 -2
- package/core/cli/generators/utils.ts +191 -191
- package/core/cli/index.ts +115 -686
- package/core/cli/plugin-discovery.ts +2 -2
- package/core/client/LiveComponentsProvider.tsx +60 -8
- package/core/client/api/eden.ts +183 -0
- package/core/client/api/index.ts +11 -0
- package/core/client/components/Live.tsx +104 -0
- package/core/client/fluxstack.ts +1 -9
- package/core/client/hooks/AdaptiveChunkSizer.ts +215 -215
- package/core/client/hooks/state-validator.ts +1 -1
- package/core/client/hooks/useAuth.ts +48 -48
- package/core/client/hooks/useChunkedUpload.ts +85 -35
- package/core/client/hooks/useLiveChunkedUpload.ts +87 -0
- package/core/client/hooks/useLiveComponent.ts +800 -0
- package/core/client/hooks/useLiveUpload.ts +71 -0
- package/core/client/hooks/useRoom.ts +409 -0
- package/core/client/hooks/useRoomProxy.ts +382 -0
- package/core/client/index.ts +17 -68
- package/core/client/standalone-entry.ts +8 -0
- package/core/client/standalone.ts +74 -53
- package/core/client/state/createStore.ts +192 -192
- package/core/client/state/index.ts +14 -14
- package/core/config/index.ts +70 -291
- package/core/config/schema.ts +42 -723
- package/core/framework/client.ts +131 -131
- package/core/framework/index.ts +7 -7
- package/core/framework/server.ts +47 -40
- package/core/framework/types.ts +2 -2
- package/core/index.ts +23 -4
- package/core/live/ComponentRegistry.ts +3 -3
- package/core/live/types.ts +77 -0
- package/core/plugins/built-in/index.ts +134 -134
- package/core/plugins/built-in/live-components/commands/create-live-component.ts +242 -1066
- package/core/plugins/built-in/live-components/index.ts +1 -1
- package/core/plugins/built-in/monitoring/index.ts +111 -47
- package/core/plugins/built-in/static/index.ts +1 -1
- package/core/plugins/built-in/swagger/index.ts +68 -265
- package/core/plugins/built-in/vite/index.ts +85 -185
- package/core/plugins/built-in/vite/vite-dev.ts +10 -16
- package/core/plugins/config.ts +9 -7
- package/core/plugins/dependency-manager.ts +31 -1
- package/core/plugins/discovery.ts +19 -7
- package/core/plugins/executor.ts +2 -2
- package/core/plugins/index.ts +203 -203
- package/core/plugins/manager.ts +27 -39
- package/core/plugins/module-resolver.ts +19 -8
- package/core/plugins/registry.ts +255 -19
- package/core/plugins/types.ts +20 -53
- package/core/server/framework.ts +66 -43
- package/core/server/index.ts +15 -15
- package/core/server/live/ComponentRegistry.ts +78 -71
- package/core/server/live/FileUploadManager.ts +23 -10
- package/core/server/live/LiveComponentPerformanceMonitor.ts +1 -1
- package/core/server/live/LiveRoomManager.ts +261 -0
- package/core/server/live/RoomEventBus.ts +234 -0
- package/core/server/live/RoomStateManager.ts +172 -0
- package/core/server/live/StateSignature.ts +643 -643
- package/core/server/live/WebSocketConnectionManager.ts +30 -19
- package/core/server/live/auto-generated-components.ts +21 -9
- package/core/server/live/index.ts +14 -0
- package/core/server/live/websocket-plugin.ts +214 -67
- package/core/server/middleware/elysia-helpers.ts +7 -2
- package/core/server/middleware/errorHandling.ts +1 -1
- package/core/server/middleware/index.ts +31 -31
- package/core/server/plugins/database.ts +180 -180
- package/core/server/plugins/static-files-plugin.ts +69 -69
- package/core/server/plugins/swagger.ts +1 -1
- package/core/server/rooms/RoomBroadcaster.ts +357 -0
- package/core/server/rooms/RoomSystem.ts +463 -0
- package/core/server/rooms/index.ts +13 -0
- package/core/server/services/BaseService.ts +1 -1
- package/core/server/services/ServiceContainer.ts +1 -1
- package/core/server/services/index.ts +8 -8
- package/core/templates/create-project.ts +12 -12
- package/core/testing/index.ts +9 -9
- package/core/testing/setup.ts +73 -73
- package/core/types/api.ts +168 -168
- package/core/types/build.ts +219 -219
- package/core/types/config.ts +56 -26
- package/core/types/index.ts +4 -4
- package/core/types/plugin.ts +107 -107
- package/core/types/types.ts +353 -14
- package/core/utils/build-logger.ts +324 -324
- package/core/utils/config-schema.ts +480 -480
- package/core/utils/env.ts +2 -8
- package/core/utils/errors/codes.ts +114 -114
- package/core/utils/errors/handlers.ts +36 -1
- package/core/utils/errors/index.ts +49 -5
- package/core/utils/errors/middleware.ts +113 -113
- package/core/utils/helpers.ts +6 -16
- package/core/utils/index.ts +17 -17
- package/core/utils/logger/colors.ts +114 -114
- package/core/utils/logger/config.ts +13 -9
- package/core/utils/logger/formatter.ts +82 -82
- package/core/utils/logger/group-logger.ts +101 -101
- package/core/utils/logger/index.ts +6 -1
- package/core/utils/logger/stack-trace.ts +3 -1
- package/core/utils/logger/startup-banner.ts +82 -82
- package/core/utils/logger/winston-logger.ts +152 -152
- package/core/utils/monitoring/index.ts +211 -211
- package/core/utils/sync-version.ts +66 -66
- package/core/utils/version.ts +1 -1
- package/create-fluxstack.ts +8 -7
- package/package.json +12 -13
- package/plugins/crypto-auth/cli/make-protected-route.command.ts +1 -1
- package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
- package/plugins/crypto-auth/client/components/index.ts +11 -11
- package/plugins/crypto-auth/client/index.ts +11 -11
- package/plugins/crypto-auth/config/index.ts +1 -1
- package/plugins/crypto-auth/index.ts +4 -4
- package/plugins/crypto-auth/package.json +65 -65
- package/plugins/crypto-auth/server/AuthMiddleware.ts +1 -1
- package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
- package/plugins/crypto-auth/server/index.ts +21 -21
- package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +3 -3
- package/plugins/crypto-auth/server/middlewares/cryptoAuthOptional.ts +1 -1
- package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +2 -2
- package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +2 -2
- package/plugins/crypto-auth/server/middlewares/helpers.ts +1 -1
- package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
- package/tsconfig.api-strict.json +16 -0
- package/tsconfig.json +48 -52
- package/{app/client/tsconfig.node.json → tsconfig.node.json} +25 -25
- package/types/global.d.ts +29 -29
- package/types/vitest.d.ts +8 -8
- package/vite.config.ts +38 -62
- package/vitest.config.live.ts +10 -9
- package/vitest.config.ts +29 -17
- package/app/client/README.md +0 -69
- package/app/client/SIMPLIFICATION.md +0 -140
- package/app/client/frontend-only.ts +0 -12
- package/app/client/src/live/FileUploadExample.tsx +0 -359
- package/app/client/src/live/MinimalLiveClock.tsx +0 -47
- package/app/client/src/live/QuickUploadTest.tsx +0 -193
- package/app/client/tsconfig.app.json +0 -45
- package/app/client/tsconfig.json +0 -7
- package/app/client/zustand-setup.md +0 -65
- package/app/server/backend-only.ts +0 -18
- package/app/server/live/LiveClockComponent.ts +0 -215
- package/app/server/live/LiveFileUploadComponent.ts +0 -77
- package/app/server/routes/env-test.ts +0 -110
- package/core/client/hooks/index.ts +0 -7
- package/core/client/hooks/useHybridLiveComponent.ts +0 -685
- package/core/client/hooks/useTypedLiveComponent.ts +0 -133
- package/core/client/hooks/useWebSocket.ts +0 -361
- package/core/config/env.ts +0 -546
- package/core/config/loader.ts +0 -522
- package/core/config/runtime-config.ts +0 -327
- package/core/config/validator.ts +0 -540
- package/core/server/backend-entry.ts +0 -51
- package/core/server/standalone.ts +0 -106
- package/core/utils/regenerate-files.ts +0 -69
- package/fluxstack.config.ts +0 -354
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
**Version:** 1.11.0 | **Updated:** 2025-02-08
|
|
4
|
+
|
|
5
|
+
## Quick Facts
|
|
6
|
+
|
|
7
|
+
- Most issues: missing response schemas, wrong imports, or port conflicts
|
|
8
|
+
- Always run `bunx tsc --noEmit` to check types first
|
|
9
|
+
- Development URLs: Backend :3000, Frontend :5173, Swagger :3000/swagger
|
|
10
|
+
|
|
11
|
+
## Diagnostic Commands
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Check APIs
|
|
15
|
+
curl http://localhost:3000/api/health
|
|
16
|
+
|
|
17
|
+
# Check TypeScript
|
|
18
|
+
bunx tsc --noEmit
|
|
19
|
+
|
|
20
|
+
# Check tests
|
|
21
|
+
bun run test
|
|
22
|
+
|
|
23
|
+
# Check build
|
|
24
|
+
bun run build
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Type Inference Issues
|
|
28
|
+
|
|
29
|
+
### Problem: Eden Treaty Returns `unknown`
|
|
30
|
+
|
|
31
|
+
**Symptom:**
|
|
32
|
+
```typescript
|
|
33
|
+
const { data, error } = await api.users.get()
|
|
34
|
+
// data is 'unknown' instead of { users: User[] }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Cause:** Missing response schema in route definition.
|
|
38
|
+
|
|
39
|
+
**Solution:**
|
|
40
|
+
```typescript
|
|
41
|
+
// Add response schema to route
|
|
42
|
+
export const usersRoutes = new Elysia()
|
|
43
|
+
.get("/", handler, {
|
|
44
|
+
response: t.Object({
|
|
45
|
+
users: t.Array(t.Object({
|
|
46
|
+
id: t.Number(),
|
|
47
|
+
name: t.String(),
|
|
48
|
+
email: t.String()
|
|
49
|
+
}))
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Problem: TypeScript Doesn't See Type Changes
|
|
55
|
+
|
|
56
|
+
**Solution:**
|
|
57
|
+
```bash
|
|
58
|
+
# 1. Restart TS Server (VS Code)
|
|
59
|
+
Ctrl+Shift+P → "TypeScript: Restart TS Server"
|
|
60
|
+
|
|
61
|
+
# 2. Or clear cache
|
|
62
|
+
rm -rf node_modules/.cache
|
|
63
|
+
bun install
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Server Issues
|
|
67
|
+
|
|
68
|
+
### Problem: Port Already in Use
|
|
69
|
+
|
|
70
|
+
**Symptom:** `Error: EADDRINUSE: address already in use :::3000`
|
|
71
|
+
|
|
72
|
+
**Solution:**
|
|
73
|
+
```bash
|
|
74
|
+
# Find process (Linux/Mac)
|
|
75
|
+
lsof -i :3000
|
|
76
|
+
kill -9 <PID>
|
|
77
|
+
|
|
78
|
+
# Find process (Windows)
|
|
79
|
+
netstat -ano | findstr :3000
|
|
80
|
+
taskkill /F /PID <PID>
|
|
81
|
+
|
|
82
|
+
# Or use different port
|
|
83
|
+
PORT=3001 bun run dev
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Problem: Hot Reload Not Working
|
|
87
|
+
|
|
88
|
+
**Solution:**
|
|
89
|
+
```bash
|
|
90
|
+
# Kill all node/bun processes
|
|
91
|
+
pkill -f bun # Mac/Linux
|
|
92
|
+
taskkill /F /IM bun.exe # Windows
|
|
93
|
+
|
|
94
|
+
# Restart
|
|
95
|
+
bun run dev
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Problem: Vite Module Runner Error
|
|
99
|
+
|
|
100
|
+
**Symptom:** `Cannot find module 'vite/module-runner'`
|
|
101
|
+
|
|
102
|
+
**Cause:** Vite being imported in production mode.
|
|
103
|
+
|
|
104
|
+
**Solution:**
|
|
105
|
+
```bash
|
|
106
|
+
# Ensure NODE_ENV is set correctly
|
|
107
|
+
export NODE_ENV=development
|
|
108
|
+
bun run dev
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## API/Request Issues
|
|
112
|
+
|
|
113
|
+
### Problem: CORS Errors
|
|
114
|
+
|
|
115
|
+
**Symptom:** Browser console shows CORS policy errors.
|
|
116
|
+
|
|
117
|
+
**Note:** CORS is expected when frontend (5173) calls backend (3000).
|
|
118
|
+
|
|
119
|
+
**Verify API works:**
|
|
120
|
+
```bash
|
|
121
|
+
curl http://localhost:3000/api/health
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**If CORS config needed:**
|
|
125
|
+
```typescript
|
|
126
|
+
// config/server.config.ts
|
|
127
|
+
export const serverConfig = defineConfig({
|
|
128
|
+
cors: {
|
|
129
|
+
origins: config.array('CORS_ORIGINS', ['http://localhost:5173']),
|
|
130
|
+
credentials: config.boolean('CORS_CREDENTIALS', true)
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Problem: 404 Not Found
|
|
136
|
+
|
|
137
|
+
**Check 1:** Route registration
|
|
138
|
+
```typescript
|
|
139
|
+
// Ensure route is registered in app/server/routes/index.ts
|
|
140
|
+
export const apiRoutes = new Elysia({ prefix: "/api" })
|
|
141
|
+
.use(usersRoutes) // ← Must be registered
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Check 2:** Prefix stacking
|
|
145
|
+
```typescript
|
|
146
|
+
// If usersRoutes has prefix "/users"
|
|
147
|
+
// And apiRoutes has prefix "/api"
|
|
148
|
+
// Final URL is: /api/users
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Problem: Validation Errors
|
|
152
|
+
|
|
153
|
+
**Symptom:** `Body validation failed`
|
|
154
|
+
|
|
155
|
+
**Solution:** Verify request matches schema:
|
|
156
|
+
```typescript
|
|
157
|
+
// Route expects:
|
|
158
|
+
body: t.Object({
|
|
159
|
+
name: t.String({ minLength: 2 }),
|
|
160
|
+
email: t.String({ format: "email" })
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
// Request must provide:
|
|
164
|
+
await api.users.post({
|
|
165
|
+
name: "Jo", // ← At least 2 chars
|
|
166
|
+
email: "jo@x.com" // ← Valid email format
|
|
167
|
+
})
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Build Issues
|
|
171
|
+
|
|
172
|
+
### Problem: Build Fails with Import Errors
|
|
173
|
+
|
|
174
|
+
**Symptom:** `Cannot resolve './../../something'`
|
|
175
|
+
|
|
176
|
+
**Solution:** Use path aliases:
|
|
177
|
+
```typescript
|
|
178
|
+
// ❌ Wrong
|
|
179
|
+
import { api } from '../../../lib/eden-api'
|
|
180
|
+
|
|
181
|
+
// ✅ Correct
|
|
182
|
+
import { api } from '@client/lib/eden-api'
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Problem: Build Type Errors
|
|
186
|
+
|
|
187
|
+
**Solution:**
|
|
188
|
+
```bash
|
|
189
|
+
# Check types before build
|
|
190
|
+
bunx tsc --noEmit
|
|
191
|
+
|
|
192
|
+
# Clear and rebuild
|
|
193
|
+
rm -rf dist/
|
|
194
|
+
bun run build
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Problem: Assets Not Loading in Production
|
|
198
|
+
|
|
199
|
+
**Solution:** Use public/ folder for static assets:
|
|
200
|
+
```typescript
|
|
201
|
+
// ❌ Wrong - bundler might not include
|
|
202
|
+
import logo from '../assets/logo.png'
|
|
203
|
+
|
|
204
|
+
// ✅ Correct - serve from public/
|
|
205
|
+
<img src="/logo.png" /> // File at public/logo.png
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Plugin Issues
|
|
209
|
+
|
|
210
|
+
### Problem: Plugin Not Loading
|
|
211
|
+
|
|
212
|
+
**Check 1:** NPM plugins require whitelist
|
|
213
|
+
```bash
|
|
214
|
+
# .env
|
|
215
|
+
PLUGINS_DISCOVER_NPM=true
|
|
216
|
+
PLUGINS_ALLOWED=plugin-name
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Check 2:** Project plugins auto-discover
|
|
220
|
+
```bash
|
|
221
|
+
# Must be in plugins/ directory
|
|
222
|
+
plugins/my-plugin/index.ts
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Check 3:** Plugin exports correctly
|
|
226
|
+
```typescript
|
|
227
|
+
// plugins/my-plugin/index.ts
|
|
228
|
+
export default {
|
|
229
|
+
name: 'my-plugin',
|
|
230
|
+
setup: async (ctx) => { /* ... */ }
|
|
231
|
+
} satisfies FluxStack.Plugin
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Problem: Plugin Blocked by Security
|
|
235
|
+
|
|
236
|
+
**Symptom:** Log shows `Plugin blocked: not in whitelist`
|
|
237
|
+
|
|
238
|
+
**Solution:**
|
|
239
|
+
```bash
|
|
240
|
+
# Add to whitelist
|
|
241
|
+
bun run flux plugin:add plugin-name
|
|
242
|
+
|
|
243
|
+
# Or manually in .env
|
|
244
|
+
PLUGINS_ALLOWED=existing-plugins,new-plugin
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Frontend/React Issues
|
|
248
|
+
|
|
249
|
+
### Problem: State Not Updating After API Call
|
|
250
|
+
|
|
251
|
+
**Solution:** Ensure state setter is called:
|
|
252
|
+
```typescript
|
|
253
|
+
const createUser = async (userData) => {
|
|
254
|
+
const { data, error } = await api.users.post(userData)
|
|
255
|
+
|
|
256
|
+
if (!error && data.success) {
|
|
257
|
+
setUsers(prev => [...prev, data.user]) // ← Don't forget!
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Problem: Infinite Re-renders
|
|
263
|
+
|
|
264
|
+
**Cause:** useEffect without dependency array.
|
|
265
|
+
|
|
266
|
+
**Solution:**
|
|
267
|
+
```typescript
|
|
268
|
+
// ❌ Wrong - runs every render
|
|
269
|
+
useEffect(() => {
|
|
270
|
+
loadUsers()
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
// ✅ Correct - runs once
|
|
274
|
+
useEffect(() => {
|
|
275
|
+
loadUsers()
|
|
276
|
+
}, [])
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Problem: Memory Leak Warning
|
|
280
|
+
|
|
281
|
+
**Symptom:** `Can't perform state update on unmounted component`
|
|
282
|
+
|
|
283
|
+
**Solution:** Add cleanup:
|
|
284
|
+
```typescript
|
|
285
|
+
useEffect(() => {
|
|
286
|
+
let mounted = true
|
|
287
|
+
|
|
288
|
+
const loadData = async () => {
|
|
289
|
+
const { data, error } = await api.users.get()
|
|
290
|
+
if (mounted && !error) {
|
|
291
|
+
setUsers(data.users)
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
loadData()
|
|
296
|
+
return () => { mounted = false }
|
|
297
|
+
}, [])
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Docker Issues
|
|
301
|
+
|
|
302
|
+
### Problem: Container Won't Start
|
|
303
|
+
|
|
304
|
+
**Check logs:**
|
|
305
|
+
```bash
|
|
306
|
+
docker logs <container-id>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**Common causes:**
|
|
310
|
+
1. Missing env vars → Check docker-compose.yml
|
|
311
|
+
2. Port conflict → Change exposed ports
|
|
312
|
+
3. Build failure → Rebuild image
|
|
313
|
+
|
|
314
|
+
### Problem: Docker Build Fails
|
|
315
|
+
|
|
316
|
+
**Check .dockerignore doesn't exclude:**
|
|
317
|
+
- `package.json`
|
|
318
|
+
- `bun.lockb`
|
|
319
|
+
- `tsconfig.json`
|
|
320
|
+
|
|
321
|
+
## Testing Issues
|
|
322
|
+
|
|
323
|
+
### Problem: Tests Can't Find Module
|
|
324
|
+
|
|
325
|
+
**Solution:** Ensure test config matches main tsconfig paths:
|
|
326
|
+
```typescript
|
|
327
|
+
// vitest.config.ts
|
|
328
|
+
export default defineConfig({
|
|
329
|
+
resolve: {
|
|
330
|
+
alias: {
|
|
331
|
+
'@client': './app/client/src',
|
|
332
|
+
'@server': './app/server',
|
|
333
|
+
'@shared': './app/shared'
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
})
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Problem: Mocks Not Applied
|
|
340
|
+
|
|
341
|
+
**Solution:** Import order matters:
|
|
342
|
+
```typescript
|
|
343
|
+
// ✅ Correct order
|
|
344
|
+
import { vi } from 'vitest'
|
|
345
|
+
vi.mock('@client/lib/eden-api')
|
|
346
|
+
import { Component } from './Component'
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Quick Checklist
|
|
350
|
+
|
|
351
|
+
When something breaks:
|
|
352
|
+
|
|
353
|
+
1. **Check types:** `bunx tsc --noEmit`
|
|
354
|
+
2. **Check ports:** Are 3000/5173 free?
|
|
355
|
+
3. **Check schemas:** Response schemas defined?
|
|
356
|
+
4. **Check imports:** Using path aliases?
|
|
357
|
+
5. **Restart:** `bun run dev` fresh
|
|
358
|
+
6. **Clean:** `rm -rf node_modules && bun install`
|
|
359
|
+
|
|
360
|
+
## Related
|
|
361
|
+
|
|
362
|
+
- [Type Safety](../patterns/type-safety.md)
|
|
363
|
+
- [Anti-Patterns](../patterns/anti-patterns.md)
|
|
364
|
+
- [Routes with Eden Treaty](../resources/routes-eden.md)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Resources documentation directory
|