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.
Files changed (257) hide show
  1. package/.dockerignore +1 -2
  2. package/Dockerfile +8 -8
  3. package/LLMD/INDEX.md +64 -0
  4. package/LLMD/MAINTENANCE.md +197 -0
  5. package/LLMD/MIGRATION.md +156 -0
  6. package/LLMD/config/.gitkeep +1 -0
  7. package/LLMD/config/declarative-system.md +268 -0
  8. package/LLMD/config/environment-vars.md +327 -0
  9. package/LLMD/config/runtime-reload.md +401 -0
  10. package/LLMD/core/.gitkeep +1 -0
  11. package/LLMD/core/build-system.md +599 -0
  12. package/LLMD/core/framework-lifecycle.md +229 -0
  13. package/LLMD/core/plugin-system.md +451 -0
  14. package/LLMD/patterns/.gitkeep +1 -0
  15. package/LLMD/patterns/anti-patterns.md +297 -0
  16. package/LLMD/patterns/project-structure.md +264 -0
  17. package/LLMD/patterns/type-safety.md +440 -0
  18. package/LLMD/reference/.gitkeep +1 -0
  19. package/LLMD/reference/cli-commands.md +250 -0
  20. package/LLMD/reference/plugin-hooks.md +357 -0
  21. package/LLMD/reference/routing.md +39 -0
  22. package/LLMD/reference/troubleshooting.md +364 -0
  23. package/LLMD/resources/.gitkeep +1 -0
  24. package/LLMD/resources/controllers.md +465 -0
  25. package/LLMD/resources/live-components.md +703 -0
  26. package/LLMD/resources/live-rooms.md +482 -0
  27. package/LLMD/resources/live-upload.md +130 -0
  28. package/LLMD/resources/plugins-external.md +617 -0
  29. package/LLMD/resources/routes-eden.md +254 -0
  30. package/README.md +37 -17
  31. package/app/client/index.html +0 -1
  32. package/app/client/src/App.tsx +107 -150
  33. package/app/client/src/components/AppLayout.tsx +68 -0
  34. package/app/client/src/components/BackButton.tsx +13 -0
  35. package/app/client/src/components/DemoPage.tsx +20 -0
  36. package/app/client/src/components/LiveUploadWidget.tsx +204 -0
  37. package/app/client/src/lib/eden-api.ts +85 -60
  38. package/app/client/src/live/ChatDemo.tsx +107 -0
  39. package/app/client/src/live/CounterDemo.tsx +206 -0
  40. package/app/client/src/live/FormDemo.tsx +119 -0
  41. package/app/client/src/live/RoomChatDemo.tsx +242 -0
  42. package/app/client/src/live/UploadDemo.tsx +21 -0
  43. package/app/client/src/main.tsx +4 -1
  44. package/app/client/src/pages/ApiTestPage.tsx +108 -0
  45. package/app/client/src/pages/HomePage.tsx +76 -0
  46. package/app/server/app.ts +1 -4
  47. package/app/server/controllers/users.controller.ts +36 -44
  48. package/app/server/index.ts +25 -35
  49. package/app/server/live/LiveChat.ts +77 -0
  50. package/app/server/live/LiveCounter.ts +67 -0
  51. package/app/server/live/LiveForm.ts +63 -0
  52. package/app/server/live/LiveLocalCounter.ts +32 -0
  53. package/app/server/live/LiveRoomChat.ts +285 -0
  54. package/app/server/live/LiveUpload.ts +81 -0
  55. package/app/server/routes/index.ts +3 -1
  56. package/app/server/routes/room.routes.ts +117 -0
  57. package/app/server/routes/users.routes.ts +35 -27
  58. package/app/shared/types/index.ts +14 -2
  59. package/config/app.config.ts +2 -62
  60. package/config/client.config.ts +2 -95
  61. package/config/database.config.ts +2 -99
  62. package/config/fluxstack.config.ts +25 -45
  63. package/config/index.ts +57 -38
  64. package/config/monitoring.config.ts +2 -114
  65. package/config/plugins.config.ts +2 -80
  66. package/config/server.config.ts +2 -68
  67. package/config/services.config.ts +2 -130
  68. package/config/system/app.config.ts +29 -0
  69. package/config/system/build.config.ts +49 -0
  70. package/config/system/client.config.ts +68 -0
  71. package/config/system/database.config.ts +17 -0
  72. package/config/system/fluxstack.config.ts +114 -0
  73. package/config/{logger.config.ts → system/logger.config.ts} +3 -1
  74. package/config/system/monitoring.config.ts +114 -0
  75. package/config/system/plugins.config.ts +84 -0
  76. package/config/{runtime.config.ts → system/runtime.config.ts} +1 -1
  77. package/config/system/server.config.ts +68 -0
  78. package/config/system/services.config.ts +46 -0
  79. package/config/{system.config.ts → system/system.config.ts} +1 -1
  80. package/core/build/flux-plugins-generator.ts +325 -325
  81. package/core/build/index.ts +39 -27
  82. package/core/build/live-components-generator.ts +3 -3
  83. package/core/build/optimizer.ts +235 -235
  84. package/core/cli/command-registry.ts +6 -4
  85. package/core/cli/commands/build.ts +79 -0
  86. package/core/cli/commands/create.ts +54 -0
  87. package/core/cli/commands/dev.ts +101 -0
  88. package/core/cli/commands/help.ts +34 -0
  89. package/core/cli/commands/index.ts +34 -0
  90. package/core/cli/commands/make-plugin.ts +90 -0
  91. package/core/cli/commands/plugin-add.ts +197 -0
  92. package/core/cli/commands/plugin-deps.ts +2 -2
  93. package/core/cli/commands/plugin-list.ts +208 -0
  94. package/core/cli/commands/plugin-remove.ts +170 -0
  95. package/core/cli/generators/component.ts +769 -769
  96. package/core/cli/generators/controller.ts +1 -1
  97. package/core/cli/generators/index.ts +146 -146
  98. package/core/cli/generators/interactive.ts +227 -227
  99. package/core/cli/generators/plugin.ts +2 -2
  100. package/core/cli/generators/prompts.ts +82 -82
  101. package/core/cli/generators/route.ts +6 -6
  102. package/core/cli/generators/service.ts +2 -2
  103. package/core/cli/generators/template-engine.ts +4 -3
  104. package/core/cli/generators/types.ts +2 -2
  105. package/core/cli/generators/utils.ts +191 -191
  106. package/core/cli/index.ts +115 -686
  107. package/core/cli/plugin-discovery.ts +2 -2
  108. package/core/client/LiveComponentsProvider.tsx +60 -8
  109. package/core/client/api/eden.ts +183 -0
  110. package/core/client/api/index.ts +11 -0
  111. package/core/client/components/Live.tsx +104 -0
  112. package/core/client/fluxstack.ts +1 -9
  113. package/core/client/hooks/AdaptiveChunkSizer.ts +215 -215
  114. package/core/client/hooks/state-validator.ts +1 -1
  115. package/core/client/hooks/useAuth.ts +48 -48
  116. package/core/client/hooks/useChunkedUpload.ts +85 -35
  117. package/core/client/hooks/useLiveChunkedUpload.ts +87 -0
  118. package/core/client/hooks/useLiveComponent.ts +800 -0
  119. package/core/client/hooks/useLiveUpload.ts +71 -0
  120. package/core/client/hooks/useRoom.ts +409 -0
  121. package/core/client/hooks/useRoomProxy.ts +382 -0
  122. package/core/client/index.ts +17 -68
  123. package/core/client/standalone-entry.ts +8 -0
  124. package/core/client/standalone.ts +74 -53
  125. package/core/client/state/createStore.ts +192 -192
  126. package/core/client/state/index.ts +14 -14
  127. package/core/config/index.ts +70 -291
  128. package/core/config/schema.ts +42 -723
  129. package/core/framework/client.ts +131 -131
  130. package/core/framework/index.ts +7 -7
  131. package/core/framework/server.ts +47 -40
  132. package/core/framework/types.ts +2 -2
  133. package/core/index.ts +23 -4
  134. package/core/live/ComponentRegistry.ts +3 -3
  135. package/core/live/types.ts +77 -0
  136. package/core/plugins/built-in/index.ts +134 -134
  137. package/core/plugins/built-in/live-components/commands/create-live-component.ts +242 -1066
  138. package/core/plugins/built-in/live-components/index.ts +1 -1
  139. package/core/plugins/built-in/monitoring/index.ts +111 -47
  140. package/core/plugins/built-in/static/index.ts +1 -1
  141. package/core/plugins/built-in/swagger/index.ts +68 -265
  142. package/core/plugins/built-in/vite/index.ts +85 -185
  143. package/core/plugins/built-in/vite/vite-dev.ts +10 -16
  144. package/core/plugins/config.ts +9 -7
  145. package/core/plugins/dependency-manager.ts +31 -1
  146. package/core/plugins/discovery.ts +19 -7
  147. package/core/plugins/executor.ts +2 -2
  148. package/core/plugins/index.ts +203 -203
  149. package/core/plugins/manager.ts +27 -39
  150. package/core/plugins/module-resolver.ts +19 -8
  151. package/core/plugins/registry.ts +255 -19
  152. package/core/plugins/types.ts +20 -53
  153. package/core/server/framework.ts +66 -43
  154. package/core/server/index.ts +15 -15
  155. package/core/server/live/ComponentRegistry.ts +78 -71
  156. package/core/server/live/FileUploadManager.ts +23 -10
  157. package/core/server/live/LiveComponentPerformanceMonitor.ts +1 -1
  158. package/core/server/live/LiveRoomManager.ts +261 -0
  159. package/core/server/live/RoomEventBus.ts +234 -0
  160. package/core/server/live/RoomStateManager.ts +172 -0
  161. package/core/server/live/StateSignature.ts +643 -643
  162. package/core/server/live/WebSocketConnectionManager.ts +30 -19
  163. package/core/server/live/auto-generated-components.ts +21 -9
  164. package/core/server/live/index.ts +14 -0
  165. package/core/server/live/websocket-plugin.ts +214 -67
  166. package/core/server/middleware/elysia-helpers.ts +7 -2
  167. package/core/server/middleware/errorHandling.ts +1 -1
  168. package/core/server/middleware/index.ts +31 -31
  169. package/core/server/plugins/database.ts +180 -180
  170. package/core/server/plugins/static-files-plugin.ts +69 -69
  171. package/core/server/plugins/swagger.ts +1 -1
  172. package/core/server/rooms/RoomBroadcaster.ts +357 -0
  173. package/core/server/rooms/RoomSystem.ts +463 -0
  174. package/core/server/rooms/index.ts +13 -0
  175. package/core/server/services/BaseService.ts +1 -1
  176. package/core/server/services/ServiceContainer.ts +1 -1
  177. package/core/server/services/index.ts +8 -8
  178. package/core/templates/create-project.ts +12 -12
  179. package/core/testing/index.ts +9 -9
  180. package/core/testing/setup.ts +73 -73
  181. package/core/types/api.ts +168 -168
  182. package/core/types/build.ts +219 -219
  183. package/core/types/config.ts +56 -26
  184. package/core/types/index.ts +4 -4
  185. package/core/types/plugin.ts +107 -107
  186. package/core/types/types.ts +353 -14
  187. package/core/utils/build-logger.ts +324 -324
  188. package/core/utils/config-schema.ts +480 -480
  189. package/core/utils/env.ts +2 -8
  190. package/core/utils/errors/codes.ts +114 -114
  191. package/core/utils/errors/handlers.ts +36 -1
  192. package/core/utils/errors/index.ts +49 -5
  193. package/core/utils/errors/middleware.ts +113 -113
  194. package/core/utils/helpers.ts +6 -16
  195. package/core/utils/index.ts +17 -17
  196. package/core/utils/logger/colors.ts +114 -114
  197. package/core/utils/logger/config.ts +13 -9
  198. package/core/utils/logger/formatter.ts +82 -82
  199. package/core/utils/logger/group-logger.ts +101 -101
  200. package/core/utils/logger/index.ts +6 -1
  201. package/core/utils/logger/stack-trace.ts +3 -1
  202. package/core/utils/logger/startup-banner.ts +82 -82
  203. package/core/utils/logger/winston-logger.ts +152 -152
  204. package/core/utils/monitoring/index.ts +211 -211
  205. package/core/utils/sync-version.ts +66 -66
  206. package/core/utils/version.ts +1 -1
  207. package/create-fluxstack.ts +8 -7
  208. package/package.json +12 -13
  209. package/plugins/crypto-auth/cli/make-protected-route.command.ts +1 -1
  210. package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
  211. package/plugins/crypto-auth/client/components/index.ts +11 -11
  212. package/plugins/crypto-auth/client/index.ts +11 -11
  213. package/plugins/crypto-auth/config/index.ts +1 -1
  214. package/plugins/crypto-auth/index.ts +4 -4
  215. package/plugins/crypto-auth/package.json +65 -65
  216. package/plugins/crypto-auth/server/AuthMiddleware.ts +1 -1
  217. package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
  218. package/plugins/crypto-auth/server/index.ts +21 -21
  219. package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +3 -3
  220. package/plugins/crypto-auth/server/middlewares/cryptoAuthOptional.ts +1 -1
  221. package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +2 -2
  222. package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +2 -2
  223. package/plugins/crypto-auth/server/middlewares/helpers.ts +1 -1
  224. package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
  225. package/tsconfig.api-strict.json +16 -0
  226. package/tsconfig.json +48 -52
  227. package/{app/client/tsconfig.node.json → tsconfig.node.json} +25 -25
  228. package/types/global.d.ts +29 -29
  229. package/types/vitest.d.ts +8 -8
  230. package/vite.config.ts +38 -62
  231. package/vitest.config.live.ts +10 -9
  232. package/vitest.config.ts +29 -17
  233. package/app/client/README.md +0 -69
  234. package/app/client/SIMPLIFICATION.md +0 -140
  235. package/app/client/frontend-only.ts +0 -12
  236. package/app/client/src/live/FileUploadExample.tsx +0 -359
  237. package/app/client/src/live/MinimalLiveClock.tsx +0 -47
  238. package/app/client/src/live/QuickUploadTest.tsx +0 -193
  239. package/app/client/tsconfig.app.json +0 -45
  240. package/app/client/tsconfig.json +0 -7
  241. package/app/client/zustand-setup.md +0 -65
  242. package/app/server/backend-only.ts +0 -18
  243. package/app/server/live/LiveClockComponent.ts +0 -215
  244. package/app/server/live/LiveFileUploadComponent.ts +0 -77
  245. package/app/server/routes/env-test.ts +0 -110
  246. package/core/client/hooks/index.ts +0 -7
  247. package/core/client/hooks/useHybridLiveComponent.ts +0 -685
  248. package/core/client/hooks/useTypedLiveComponent.ts +0 -133
  249. package/core/client/hooks/useWebSocket.ts +0 -361
  250. package/core/config/env.ts +0 -546
  251. package/core/config/loader.ts +0 -522
  252. package/core/config/runtime-config.ts +0 -327
  253. package/core/config/validator.ts +0 -540
  254. package/core/server/backend-entry.ts +0 -51
  255. package/core/server/standalone.ts +0 -106
  256. package/core/utils/regenerate-files.ts +0 -69
  257. package/fluxstack.config.ts +0 -354
@@ -1,62 +1,2 @@
1
- /**
2
- * Application Configuration
3
- * Core application metadata and global settings
4
- */
5
-
6
- import { defineConfig, config } from '@/core/utils/config-schema'
7
- import { FLUXSTACK_VERSION } from '@/core/utils/version'
8
-
9
- /**
10
- * App configuration schema
11
- * Contains only app-level metadata and global feature flags
12
- */
13
- const appConfigSchema = {
14
- // App basics
15
- name: config.string('APP_NAME', 'FluxStack', true),
16
-
17
- version: {
18
- type: 'string' as const,
19
- env: 'APP_VERSION',
20
- default: FLUXSTACK_VERSION,
21
- validate: (value: string) => /^\d+\.\d+\.\d+$/.test(value) || 'Version must be semver format (e.g., 1.0.0)'
22
- },
23
-
24
- description: config.string('APP_DESCRIPTION', 'A FluxStack application'),
25
-
26
- // Environment
27
- env: config.enum('NODE_ENV', ['development', 'production', 'test'] as const, 'development', true),
28
-
29
- // URLs
30
- url: config.string('APP_URL', undefined, false),
31
-
32
- // Security
33
- trustProxy: config.boolean('TRUST_PROXY', false),
34
-
35
- sessionSecret: {
36
- type: 'string' as const,
37
- env: 'SESSION_SECRET',
38
- default: undefined,
39
- required: false,
40
- validate: (value: string) => {
41
- if (!value) return true // Optional
42
- if (value.length < 32) {
43
- return 'Session secret must be at least 32 characters'
44
- }
45
- return true
46
- }
47
- }
48
- } as const
49
-
50
- export const appConfig = defineConfig(appConfigSchema)
51
-
52
- // Export type for use in other files
53
- export type AppConfig = typeof appConfig
54
-
55
- /**
56
- * Type-safe environment type
57
- * Use this when you need the literal type explicitly
58
- */
59
- export type Environment = typeof appConfig.env
60
-
61
- // Export default
62
- export default appConfig
1
+ export { appConfig as default, appConfig } from './system/app.config'
2
+ export type { AppConfig } from './system/app.config'
@@ -1,95 +1,2 @@
1
- /**
2
- * Client & Vite Configuration
3
- * Declarative client, proxy and Vite dev server configuration
4
- */
5
-
6
- import { defineConfig, defineNestedConfig, config } from '@/core/utils/config-schema'
7
- import { env, helpers } from '@/core/utils/env'
8
-
9
- /**
10
- * Vite Dev Server Configuration
11
- */
12
- const viteSchema = {
13
- port: config.number('VITE_PORT', 5173, true),
14
-
15
- host: config.string('VITE_HOST', 'localhost'),
16
-
17
- strictPort: config.boolean('VITE_STRICT_PORT', false),
18
-
19
- open: config.boolean('VITE_OPEN', false),
20
-
21
- enableLogging: config.boolean('ENABLE_VITE_PROXY_LOGS', false)
22
- } as const
23
-
24
- /**
25
- * API Proxy Configuration
26
- */
27
- const proxySchema = {
28
- target: {
29
- type: 'string' as const,
30
- env: 'PROXY_TARGET',
31
- default: helpers.getServerUrl(),
32
- required: false,
33
- validate: (value: string) => {
34
- if (!value) return true
35
- try {
36
- new URL(value)
37
- return true
38
- } catch {
39
- return 'Proxy target must be a valid URL'
40
- }
41
- }
42
- },
43
-
44
- changeOrigin: config.boolean('PROXY_CHANGE_ORIGIN', true),
45
-
46
- secure: config.boolean('PROXY_SECURE', false),
47
-
48
- ws: config.boolean('PROXY_WS', true), // WebSocket support
49
-
50
- rewrite: {
51
- type: 'object' as const,
52
- env: 'PROXY_REWRITE',
53
- default: {},
54
- required: false
55
- }
56
- } as const
57
-
58
- /**
59
- * Client Build Configuration
60
- */
61
- const buildSchema = {
62
- outDir: config.string('CLIENT_OUTDIR', 'dist/client'),
63
-
64
- sourceMaps: config.boolean('CLIENT_SOURCEMAPS', helpers.isDevelopment()),
65
-
66
- minify: config.boolean('CLIENT_MINIFY', helpers.isProduction()),
67
-
68
- target: config.string('CLIENT_TARGET', 'esnext'),
69
-
70
- assetsDir: config.string('CLIENT_ASSETS_DIR', 'assets'),
71
-
72
- cssCodeSplit: config.boolean('CLIENT_CSS_CODE_SPLIT', true),
73
-
74
- chunkSizeWarningLimit: config.number('CLIENT_CHUNK_SIZE_WARNING', 500), // KB
75
-
76
- emptyOutDir: config.boolean('CLIENT_EMPTY_OUTDIR', true)
77
- } as const
78
-
79
- /**
80
- * Client Configuration (nested)
81
- */
82
- export const clientConfig = defineNestedConfig({
83
- vite: viteSchema,
84
- proxy: proxySchema,
85
- build: buildSchema
86
- })
87
-
88
- // Export types
89
- export type ViteConfig = typeof clientConfig.vite
90
- export type ProxyConfig = typeof clientConfig.proxy
91
- export type ClientBuildConfig = typeof clientConfig.build
92
- export type ClientConfig = typeof clientConfig
93
-
94
- // Export default
95
- export default clientConfig
1
+ export { clientConfig as default, clientConfig } from './system/client.config'
2
+ export type { ClientConfig, ViteConfig, ClientBuildConfig } from './system/client.config'
@@ -1,99 +1,2 @@
1
- /**
2
- * Database Configuration
3
- * Laravel-style declarative config with validation
4
- */
5
-
6
- import { defineConfig, config } from '@/core/utils/config-schema'
7
-
8
- /**
9
- * Database configuration schema
10
- */
11
- export const databaseConfig = defineConfig({
12
- // Connection
13
- url: {
14
- type: 'string',
15
- env: 'DATABASE_URL',
16
- default: undefined,
17
- required: false,
18
- validate: (value) => {
19
- if (!value) return true // Optional
20
- if (!value.includes('://')) {
21
- return 'DATABASE_URL must be a valid connection string (e.g., postgres://...)'
22
- }
23
- return true
24
- },
25
- description: 'Full database connection URL (overrides individual settings)'
26
- },
27
-
28
- host: config.string('DB_HOST', 'localhost'),
29
-
30
- port: config.number('DB_PORT', 5432),
31
-
32
- database: {
33
- type: 'string',
34
- env: 'DB_NAME',
35
- default: undefined,
36
- required: false,
37
- description: 'Database name'
38
- },
39
-
40
- user: {
41
- type: 'string',
42
- env: 'DB_USER',
43
- default: undefined,
44
- required: false
45
- },
46
-
47
- password: {
48
- type: 'string',
49
- env: 'DB_PASSWORD',
50
- default: undefined,
51
- required: false
52
- },
53
-
54
- // Connection pool
55
- poolMin: {
56
- type: 'number',
57
- env: 'DB_POOL_MIN',
58
- default: 2,
59
- validate: (value) => value >= 0 || 'Pool min must be >= 0'
60
- },
61
-
62
- poolMax: {
63
- type: 'number',
64
- env: 'DB_POOL_MAX',
65
- default: 10,
66
- validate: (value) => value > 0 || 'Pool max must be > 0'
67
- },
68
-
69
- // SSL
70
- ssl: config.boolean('DB_SSL', false),
71
-
72
- // Timeouts
73
- connectionTimeout: {
74
- type: 'number',
75
- env: 'DB_CONNECTION_TIMEOUT',
76
- default: 30000,
77
- description: 'Connection timeout in milliseconds'
78
- },
79
-
80
- queryTimeout: {
81
- type: 'number',
82
- env: 'DB_QUERY_TIMEOUT',
83
- default: 60000,
84
- description: 'Query timeout in milliseconds'
85
- },
86
-
87
- // Features
88
- enableLogging: config.boolean('DB_ENABLE_LOGGING', false),
89
-
90
- enableMigrations: config.boolean('DB_ENABLE_MIGRATIONS', true),
91
-
92
- migrationsTable: config.string('DB_MIGRATIONS_TABLE', 'migrations')
93
- })
94
-
95
- // Export type
96
- export type DatabaseConfig = typeof databaseConfig
97
-
98
- // Export default
99
- export default databaseConfig
1
+ export { databaseConfig as default, databaseConfig } from './system/database.config'
2
+ export type { DatabaseConfig } from './system/database.config'
@@ -1,48 +1,28 @@
1
1
  /**
2
- * Backward Compatibility Layer for FluxStack Configuration
3
- * This file maintains compatibility with existing imports while redirecting to the new system
4
- * @deprecated Use the configuration from the root fluxstack.config.ts instead
2
+ * FluxStack Configuration - Main Entry Point
3
+ * Re-exports the complete FluxStack configuration from system/
4
+ *
5
+ * ✨ 100% modular configuration using defineConfig
6
+ * ✨ No composer needed - direct config composition
7
+ * ✨ All configs are type-safe with automatic validation
8
+ *
9
+ * To customize configuration, edit the individual config files:
10
+ * - system/app.config.ts - Application metadata
11
+ * - system/server.config.ts - Server and CORS settings
12
+ * - system/client.config.ts - Vite, proxy, and client build
13
+ * - system/build.config.ts - Server build and optimization
14
+ * - system/logger.config.ts - Logging configuration
15
+ * - system/plugins.config.ts - Plugin management
16
+ * - system/monitoring.config.ts - Monitoring and metrics
17
+ * - system/runtime.config.ts - Runtime-reloadable settings
18
+ * - system/system.config.ts - System information
19
+ * - database.config.ts - Database connection (optional)
20
+ * - services.config.ts - JWT, Email, Storage (optional)
5
21
  */
6
22
 
7
- import { getConfigSync, createLegacyConfig } from '@/core/config'
8
- import type { FluxStackConfig } from '@/core/config'
9
-
10
- // Load the new configuration
11
- const newConfig = getConfigSync()
12
-
13
- // Create legacy configuration format for backward compatibility
14
- const legacyConfig = createLegacyConfig(newConfig)
15
-
16
- // Export in the old format
17
- export const config = legacyConfig
18
-
19
- // Also export the environment config for backward compatibility
20
- export const envConfig = {
21
- NODE_ENV: process.env.NODE_ENV || 'development',
22
- HOST: newConfig.server.host,
23
- PORT: newConfig.server.port,
24
- FRONTEND_PORT: newConfig.client.port,
25
- BACKEND_PORT: newConfig.server.port,
26
- VITE_API_URL: newConfig.client.proxy.target,
27
- API_URL: newConfig.client.proxy.target,
28
- CORS_ORIGINS: newConfig.server.cors.origins,
29
- CORS_METHODS: newConfig.server.cors.methods,
30
- CORS_HEADERS: newConfig.server.cors.headers,
31
- LOG_LEVEL: newConfig.logging.level,
32
- BUILD_TARGET: newConfig.build.target,
33
- BUILD_OUTDIR: newConfig.build.outDir,
34
- // Add other legacy environment variables as needed
35
- }
36
-
37
- // Warn about deprecated usage in development
38
- if (process.env.NODE_ENV === 'development') {
39
- console.warn(
40
- '⚠️ DEPRECATED: Importing from config/fluxstack.config.ts is deprecated.\n' +
41
- ' Please update your imports to use the new configuration system:\n' +
42
- ' import { getConfig } from "./core/config"\n' +
43
- ' or import config from "./fluxstack.config.ts"'
44
- )
45
- }
46
-
47
- // Export types for backward compatibility
48
- export type { FluxStackConfig }
23
+ export {
24
+ fluxStackConfig,
25
+ fluxStackConfig as config,
26
+ fluxStackConfig as default,
27
+ type FluxStackConfig
28
+ } from './system/fluxstack.config'
package/config/index.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @example
7
7
  * ```ts
8
- * import { appConfig, serverConfig, databaseConfig } from '@/config'
8
+ * import { appConfig, serverConfig, databaseConfig } from '@config'
9
9
  *
10
10
  * // All configs are type-safe and validated!
11
11
  * console.log(appConfig.name) // string
@@ -16,22 +16,33 @@
16
16
  * console.log(servicesConfig.email.host) // string
17
17
  * console.log(monitoringConfig.metrics.enabled) // boolean
18
18
  * ```
19
+ *
20
+ * ✨ For type safety with optional features (database, auth, email, storage):
21
+ * Import types from this file instead of core:
22
+ * ```ts
23
+ * import type { DatabaseConfig, JWTConfig, EmailConfig, StorageConfig } from '@config'
24
+ * ```
19
25
  */
20
26
 
21
27
  // ============================================================================
22
28
  // 📦 CONFIG EXPORTS
23
29
  // ============================================================================
24
30
 
25
- export { appConfig } from './app.config'
26
- export { serverConfig } from './server.config'
27
- export { clientConfig } from './client.config'
28
- export { databaseConfig } from './database.config'
29
- export { servicesConfig } from './services.config'
30
- export { loggerConfig } from './logger.config'
31
- export { pluginsConfig } from './plugins.config'
32
- export { monitoringConfig } from './monitoring.config'
33
- export { appRuntimeConfig } from './runtime.config'
34
- export { systemConfig, systemRuntimeInfo } from './system.config'
31
+ // System configs (from config/system/)
32
+ export { appConfig } from './system/app.config'
33
+ export { serverConfig } from './system/server.config'
34
+ export { clientConfig } from './system/client.config'
35
+ export { buildConfig } from './system/build.config'
36
+ export { loggerConfig } from './system/logger.config'
37
+ export { pluginsConfig } from './system/plugins.config'
38
+ export { monitoringConfig } from './system/monitoring.config'
39
+ export { appRuntimeConfig } from './system/runtime.config'
40
+ export { systemConfig, systemRuntimeInfo } from './system/system.config'
41
+ export { databaseConfig } from './system/database.config'
42
+ export { servicesConfig } from './system/services.config'
43
+
44
+ // Main FluxStack config (composed)
45
+ export { fluxStackConfig, config as fluxConfig, type FluxStackConfig } from './fluxstack.config'
35
46
 
36
47
  // Plugin configs (re-exported for convenience)
37
48
  export { cryptoAuthConfig } from '../plugins/crypto-auth/config'
@@ -40,35 +51,35 @@ export { cryptoAuthConfig } from '../plugins/crypto-auth/config'
40
51
  // 📝 TYPE EXPORTS
41
52
  // ============================================================================
42
53
 
43
- // Core types
44
- export type { AppConfig, Environment } from './app.config'
54
+ // System config types
55
+ export type { AppConfig } from './system/app.config'
45
56
  export type {
46
57
  ServerConfig,
47
58
  CorsConfig,
48
59
  ServerFullConfig
49
- } from './server.config'
60
+ } from './system/server.config'
50
61
  export type {
51
62
  ClientConfig,
52
63
  ViteConfig,
53
- ProxyConfig,
54
64
  ClientBuildConfig
55
- } from './client.config'
56
- export type { DatabaseConfig } from './database.config'
65
+ } from './system/client.config'
57
66
  export type {
58
- EmailConfig,
59
- JWTConfig,
60
- StorageConfig,
61
- RedisConfig
62
- } from './services.config'
63
- export type { LoggerConfig } from './logger.config'
64
- export type { PluginsConfig } from './plugins.config'
67
+ BuildConfig,
68
+ OptimizationConfig,
69
+ BuildFullConfig
70
+ } from './system/build.config'
71
+ export type { LoggerConfig } from './system/logger.config'
72
+ export type { PluginsConfig } from './system/plugins.config'
65
73
  export type {
66
74
  MonitoringConfig,
67
75
  MetricsConfig,
68
76
  ProfilingConfig,
69
77
  MonitoringFullConfig
70
- } from './monitoring.config'
71
- export type { SystemConfig, SystemRuntimeInfo } from './system.config'
78
+ } from './system/monitoring.config'
79
+ export type { SystemConfig, SystemRuntimeInfo } from './system/system.config'
80
+ export type { AppRuntimeConfig } from './system/runtime.config'
81
+ export type { DatabaseConfig } from './system/database.config'
82
+ export type { ServicesConfig } from './system/services.config'
72
83
 
73
84
  // Plugin types
74
85
  export type { CryptoAuthConfig } from '../plugins/crypto-auth/config'
@@ -77,34 +88,42 @@ export type { CryptoAuthConfig } from '../plugins/crypto-auth/config'
77
88
  // 🎯 UNIFIED CONFIG OBJECT
78
89
  // ============================================================================
79
90
 
80
- import { appConfig } from './app.config'
81
- import { serverConfig } from './server.config'
82
- import { clientConfig } from './client.config'
83
- import { databaseConfig } from './database.config'
84
- import { servicesConfig } from './services.config'
85
- import { loggerConfig } from './logger.config'
86
- import { pluginsConfig } from './plugins.config'
87
- import { monitoringConfig } from './monitoring.config'
88
- import { appRuntimeConfig } from './runtime.config'
89
- import { systemConfig, systemRuntimeInfo } from './system.config'
91
+ import { appConfig } from './system/app.config'
92
+ import { serverConfig } from './system/server.config'
93
+ import { clientConfig } from './system/client.config'
94
+ import { buildConfig } from './system/build.config'
95
+ import { loggerConfig } from './system/logger.config'
96
+ import { pluginsConfig } from './system/plugins.config'
97
+ import { monitoringConfig } from './system/monitoring.config'
98
+ import { appRuntimeConfig } from './system/runtime.config'
99
+ import { systemConfig, systemRuntimeInfo } from './system/system.config'
100
+ import { databaseConfig } from './system/database.config'
101
+ import { servicesConfig } from './system/services.config'
90
102
  import { cryptoAuthConfig } from '../plugins/crypto-auth/config'
91
103
 
92
104
  /**
93
105
  * All configs in one object
94
106
  * Use this when you need access to multiple configs at once
107
+ *
108
+ * For the complete FluxStack configuration with proper structure,
109
+ * use `fluxStackConfig` from './fluxstack.config'
95
110
  */
96
111
  export const config = {
112
+ // System configs
97
113
  app: appConfig,
98
114
  server: serverConfig,
99
115
  client: clientConfig,
100
- database: databaseConfig,
101
- services: servicesConfig,
116
+ build: buildConfig,
102
117
  logger: loggerConfig,
103
118
  plugins: pluginsConfig,
104
119
  monitoring: monitoringConfig,
105
120
  runtime: appRuntimeConfig,
106
121
  system: systemConfig,
107
122
  systemRuntime: systemRuntimeInfo,
123
+ database: databaseConfig,
124
+ services: servicesConfig,
125
+
126
+ // Plugin configs
108
127
  cryptoAuth: cryptoAuthConfig
109
128
  } as const
110
129
 
@@ -1,114 +1,2 @@
1
- /**
2
- * Monitoring Configuration
3
- * Declarative monitoring, metrics and profiling configuration
4
- */
5
-
6
- import { defineConfig, defineNestedConfig, config } from '@/core/utils/config-schema'
7
- import { helpers } from '@/core/utils/env'
8
-
9
- /**
10
- * Metrics Configuration Schema
11
- */
12
- const metricsSchema = {
13
- enabled: config.boolean('ENABLE_METRICS', false),
14
-
15
- collectInterval: {
16
- type: 'number' as const,
17
- env: 'METRICS_INTERVAL',
18
- default: 5000,
19
- validate: (value: number) => {
20
- if (value < 1000) {
21
- return 'Metrics interval must be at least 1000ms'
22
- }
23
- return true
24
- }
25
- },
26
-
27
- httpMetrics: config.boolean('HTTP_METRICS', true),
28
-
29
- systemMetrics: config.boolean('SYSTEM_METRICS', true),
30
-
31
- customMetrics: config.boolean('CUSTOM_METRICS', false),
32
-
33
- // Metric exporters
34
- exportToConsole: config.boolean('METRICS_EXPORT_CONSOLE', helpers.isDevelopment()),
35
-
36
- exportToFile: config.boolean('METRICS_EXPORT_FILE', false),
37
-
38
- exportToHttp: config.boolean('METRICS_EXPORT_HTTP', false),
39
-
40
- exportHttpUrl: config.string('METRICS_EXPORT_URL'),
41
-
42
- // Metric storage
43
- retentionPeriod: config.number('METRICS_RETENTION_PERIOD', 3600000), // 1 hour in ms
44
-
45
- maxDataPoints: config.number('METRICS_MAX_DATA_POINTS', 1000)
46
- } as const
47
-
48
- /**
49
- * Profiling Configuration Schema
50
- */
51
- const profilingSchema = {
52
- enabled: config.boolean('PROFILING_ENABLED', false),
53
-
54
- sampleRate: {
55
- type: 'number' as const,
56
- env: 'PROFILING_SAMPLE_RATE',
57
- default: helpers.isProduction() ? 0.01 : 0.1,
58
- validate: (value: number) => {
59
- if (value < 0 || value > 1) {
60
- return 'Sample rate must be between 0 and 1'
61
- }
62
- return true
63
- }
64
- },
65
-
66
- memoryProfiling: config.boolean('MEMORY_PROFILING', false),
67
-
68
- cpuProfiling: config.boolean('CPU_PROFILING', false),
69
-
70
- heapSnapshot: config.boolean('HEAP_SNAPSHOT', false),
71
-
72
- // Profiling output
73
- outputDir: config.string('PROFILING_OUTPUT_DIR', 'profiling'),
74
-
75
- maxProfiles: config.number('PROFILING_MAX_PROFILES', 10)
76
- } as const
77
-
78
- /**
79
- * Monitoring Configuration Schema
80
- */
81
- const monitoringSchema = {
82
- enabled: config.boolean('ENABLE_MONITORING', false),
83
-
84
- // Exporters
85
- exporters: config.array('MONITORING_EXPORTERS', []),
86
-
87
- // Health checks
88
- enableHealthChecks: config.boolean('ENABLE_HEALTH_CHECKS', true),
89
-
90
- healthCheckInterval: config.number('HEALTH_CHECK_INTERVAL', 30000), // 30s
91
-
92
- // Alerting
93
- enableAlerts: config.boolean('ENABLE_ALERTS', false),
94
-
95
- alertWebhook: config.string('ALERT_WEBHOOK')
96
- } as const
97
-
98
- /**
99
- * Export monitoring config (nested)
100
- */
101
- export const monitoringConfig = defineNestedConfig({
102
- monitoring: monitoringSchema,
103
- metrics: metricsSchema,
104
- profiling: profilingSchema
105
- })
106
-
107
- // Export types
108
- export type MonitoringConfig = typeof monitoringConfig.monitoring
109
- export type MetricsConfig = typeof monitoringConfig.metrics
110
- export type ProfilingConfig = typeof monitoringConfig.profiling
111
- export type MonitoringFullConfig = typeof monitoringConfig
112
-
113
- // Export default
114
- export default monitoringConfig
1
+ export { monitoringConfig as default, monitoringConfig } from './system/monitoring.config'
2
+ export type { MonitoringConfig, MetricsConfig, ProfilingConfig, MonitoringFullConfig } from './system/monitoring.config'