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
package/config/app.config.ts
CHANGED
|
@@ -1,62 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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'
|
package/config/client.config.ts
CHANGED
|
@@ -1,95 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 '
|
|
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
|
-
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
export {
|
|
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
|
-
//
|
|
44
|
-
export type { AppConfig
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} from './
|
|
63
|
-
export type {
|
|
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 {
|
|
84
|
-
import {
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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'
|