create-fluxstack 1.10.1 → 1.12.1
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 +161 -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 +127 -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/core/config/index.ts
CHANGED
|
@@ -1,317 +1,96 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FluxStack
|
|
3
|
-
*
|
|
2
|
+
* FluxStack Core Config
|
|
3
|
+
* Re-exports configuration from @config for backward compatibility
|
|
4
|
+
*
|
|
5
|
+
* ✅ All configs now live in /config (modular and type-safe)
|
|
6
|
+
* ✅ No more composer or schema - configs use defineConfig directly
|
|
7
|
+
* ❌ DEPRECATED: Use @config directly instead of @core/config
|
|
4
8
|
*/
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
import type { FluxStackConfig } from '@config'
|
|
11
|
+
import { fluxStackConfig } from '@config'
|
|
12
|
+
import { helpers } from '../utils/env'
|
|
13
|
+
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// 📦 TYPE RE-EXPORTS (for backward compatibility)
|
|
16
|
+
// ============================================================================
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Import from @config instead
|
|
20
|
+
*/
|
|
7
21
|
export type {
|
|
8
22
|
FluxStackConfig,
|
|
9
23
|
AppConfig,
|
|
10
24
|
ServerConfig,
|
|
11
25
|
ClientConfig,
|
|
12
26
|
BuildConfig,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
configPath?: string
|
|
33
|
-
environment?: string
|
|
34
|
-
envPrefix?: string
|
|
35
|
-
validateSchema?: boolean
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface ConfigLoadResult {
|
|
39
|
-
config: FluxStackConfig
|
|
40
|
-
sources: string[]
|
|
41
|
-
warnings: string[]
|
|
42
|
-
errors: string[]
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
import {
|
|
46
|
-
loadConfig as _loadConfig,
|
|
47
|
-
loadConfigSync as _loadConfigSync,
|
|
48
|
-
getConfigValue,
|
|
49
|
-
hasConfigValue,
|
|
50
|
-
createConfigSubset
|
|
51
|
-
} from './loader'
|
|
52
|
-
|
|
53
|
-
import { environmentDefaults } from './schema'
|
|
54
|
-
|
|
55
|
-
export {
|
|
56
|
-
_loadConfig as loadConfig,
|
|
57
|
-
_loadConfigSync as loadConfigSync,
|
|
58
|
-
getConfigValue,
|
|
59
|
-
hasConfigValue,
|
|
60
|
-
createConfigSubset
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export type {
|
|
64
|
-
ValidationResult,
|
|
65
|
-
ValidationError,
|
|
66
|
-
ValidationWarning
|
|
67
|
-
} from './validator'
|
|
68
|
-
|
|
69
|
-
export {
|
|
70
|
-
validateConfig,
|
|
71
|
-
validateConfigStrict,
|
|
72
|
-
createEnvironmentValidator,
|
|
73
|
-
validatePartialConfig,
|
|
74
|
-
getConfigSuggestions
|
|
75
|
-
} from './validator'
|
|
76
|
-
|
|
77
|
-
export type {
|
|
78
|
-
EnvironmentInfo,
|
|
79
|
-
ConfigPrecedence
|
|
80
|
-
} from './env'
|
|
81
|
-
|
|
82
|
-
export {
|
|
83
|
-
getEnvironmentInfo,
|
|
84
|
-
EnvConverter,
|
|
85
|
-
EnvironmentProcessor,
|
|
86
|
-
ConfigMerger,
|
|
87
|
-
EnvironmentConfigApplier,
|
|
88
|
-
environmentProcessor,
|
|
89
|
-
configMerger,
|
|
90
|
-
environmentConfigApplier,
|
|
91
|
-
isDevelopment,
|
|
92
|
-
isProduction,
|
|
93
|
-
isTest,
|
|
94
|
-
getEnvironmentRecommendations
|
|
95
|
-
} from './env'
|
|
96
|
-
|
|
97
|
-
// Main configuration loader with caching
|
|
98
|
-
let cachedConfig: FluxStackConfig | null = null
|
|
99
|
-
let configPromise: Promise<FluxStackConfig> | null = null
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Get the current FluxStack configuration
|
|
103
|
-
* This function loads and caches the configuration on first call
|
|
104
|
-
*/
|
|
105
|
-
export async function getConfig(options?: ConfigLoadOptions): Promise<FluxStackConfig> {
|
|
106
|
-
if (cachedConfig && !options) {
|
|
107
|
-
return cachedConfig
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (configPromise && !options) {
|
|
111
|
-
return configPromise
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
configPromise = loadConfiguration(options)
|
|
115
|
-
cachedConfig = await configPromise
|
|
116
|
-
|
|
117
|
-
return cachedConfig
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Get configuration synchronously (limited functionality)
|
|
122
|
-
* Only loads from environment variables and defaults
|
|
123
|
-
*/
|
|
124
|
-
export function getConfigSync(options?: ConfigLoadOptions): FluxStackConfig {
|
|
125
|
-
const result = _loadConfigSync(options)
|
|
126
|
-
|
|
127
|
-
if (result.errors.length > 0) {
|
|
128
|
-
console.warn('Configuration errors:', result.errors)
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (result.warnings.length > 0) {
|
|
132
|
-
console.warn('Configuration warnings:', result.warnings)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return result.config
|
|
136
|
-
}
|
|
27
|
+
ViteConfig,
|
|
28
|
+
ClientBuildConfig,
|
|
29
|
+
OptimizationConfig,
|
|
30
|
+
CorsConfig,
|
|
31
|
+
LoggerConfig,
|
|
32
|
+
PluginsConfig,
|
|
33
|
+
MonitoringConfig
|
|
34
|
+
} from '@config'
|
|
35
|
+
|
|
36
|
+
// Legacy type aliases
|
|
37
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error'
|
|
38
|
+
export type BuildTarget = 'bun' | 'node' | 'docker'
|
|
39
|
+
export type LogFormat = 'json' | 'pretty'
|
|
40
|
+
export type LoggingConfig = import('@config').LoggerConfig
|
|
41
|
+
export type PluginConfig = import('@config').PluginsConfig
|
|
42
|
+
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// 🚀 CONFIG LOADING FUNCTIONS (for backward compatibility)
|
|
45
|
+
// ============================================================================
|
|
137
46
|
|
|
138
47
|
/**
|
|
139
|
-
*
|
|
48
|
+
* Get FluxStack configuration synchronously
|
|
49
|
+
* @deprecated Use `import { fluxStackConfig } from '@config'` instead
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* // ❌ Old way:
|
|
54
|
+
* import { getConfigSync } from '@core/config'
|
|
55
|
+
* const config = getConfigSync()
|
|
56
|
+
*
|
|
57
|
+
* // ✅ New way:
|
|
58
|
+
* import { fluxStackConfig } from '@config'
|
|
59
|
+
* console.log(fluxStackConfig.app.name)
|
|
60
|
+
* ```
|
|
140
61
|
*/
|
|
141
|
-
export
|
|
142
|
-
|
|
143
|
-
configPromise = null
|
|
144
|
-
return getConfig(options)
|
|
62
|
+
export function getConfigSync(): FluxStackConfig {
|
|
63
|
+
return fluxStackConfig
|
|
145
64
|
}
|
|
146
65
|
|
|
147
66
|
/**
|
|
148
|
-
*
|
|
67
|
+
* Get FluxStack configuration asynchronously
|
|
68
|
+
* @deprecated Use `import { fluxStackConfig } from '@config'` instead
|
|
149
69
|
*/
|
|
150
|
-
async function
|
|
151
|
-
|
|
152
|
-
const result = await _loadConfig(options)
|
|
153
|
-
|
|
154
|
-
// Log warnings if any
|
|
155
|
-
if (result.warnings.length > 0) {
|
|
156
|
-
console.warn('Configuration warnings:')
|
|
157
|
-
result.warnings.forEach(warning => console.warn(` - ${warning}`))
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Throw on errors
|
|
161
|
-
if (result.errors.length > 0) {
|
|
162
|
-
const errorMessage = [
|
|
163
|
-
'Configuration loading failed:',
|
|
164
|
-
...result.errors.map(e => ` - ${e}`)
|
|
165
|
-
].join('\n')
|
|
166
|
-
|
|
167
|
-
throw new Error(errorMessage)
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return result.config
|
|
171
|
-
} catch (error) {
|
|
172
|
-
console.error('Failed to load FluxStack configuration:', error)
|
|
173
|
-
|
|
174
|
-
// Fall back to default configuration with environment variables and environment defaults
|
|
175
|
-
const fallbackResult = _loadConfigSync(options)
|
|
176
|
-
console.warn('Using fallback configuration with environment variables only')
|
|
177
|
-
|
|
178
|
-
// Apply environment defaults to fallback configuration
|
|
179
|
-
const environment = process.env.NODE_ENV || 'development'
|
|
180
|
-
const envDefaults = environmentDefaults[environment as keyof typeof environmentDefaults]
|
|
181
|
-
|
|
182
|
-
if (envDefaults) {
|
|
183
|
-
// Simple merge for fallback with proper type casting
|
|
184
|
-
const configWithDefaults = {
|
|
185
|
-
...fallbackResult.config,
|
|
186
|
-
logging: {
|
|
187
|
-
...fallbackResult.config.logging,
|
|
188
|
-
...((envDefaults as any).logging || {})
|
|
189
|
-
},
|
|
190
|
-
server: (envDefaults as any).server ? {
|
|
191
|
-
...fallbackResult.config.server,
|
|
192
|
-
...(envDefaults as any).server
|
|
193
|
-
} : fallbackResult.config.server,
|
|
194
|
-
client: (envDefaults as any).client ? {
|
|
195
|
-
...fallbackResult.config.client,
|
|
196
|
-
...(envDefaults as any).client
|
|
197
|
-
} : fallbackResult.config.client,
|
|
198
|
-
build: (envDefaults as any).build ? {
|
|
199
|
-
...fallbackResult.config.build,
|
|
200
|
-
optimization: {
|
|
201
|
-
...fallbackResult.config.build.optimization,
|
|
202
|
-
...((envDefaults as any).build.optimization || {})
|
|
203
|
-
}
|
|
204
|
-
} : fallbackResult.config.build,
|
|
205
|
-
monitoring: (envDefaults as any).monitoring ? {
|
|
206
|
-
...fallbackResult.config.monitoring,
|
|
207
|
-
...(envDefaults as any).monitoring
|
|
208
|
-
} : fallbackResult.config.monitoring
|
|
209
|
-
} as FluxStackConfig
|
|
210
|
-
return configWithDefaults
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return fallbackResult.config
|
|
214
|
-
}
|
|
70
|
+
export async function getConfig(): Promise<FluxStackConfig> {
|
|
71
|
+
return fluxStackConfig
|
|
215
72
|
}
|
|
216
73
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
export function createPluginConfig<T = any>(
|
|
221
|
-
config: FluxStackConfig,
|
|
222
|
-
pluginName: string
|
|
223
|
-
): T {
|
|
224
|
-
const pluginConfig = config.plugins.config[pluginName] || {}
|
|
225
|
-
const customConfig = config.custom?.[pluginName] || {}
|
|
226
|
-
|
|
227
|
-
return { ...pluginConfig, ...customConfig } as T
|
|
228
|
-
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// 🌍 ENVIRONMENT UTILITIES
|
|
76
|
+
// ============================================================================
|
|
229
77
|
|
|
230
78
|
/**
|
|
231
|
-
*
|
|
79
|
+
* Get environment information
|
|
80
|
+
* Used by core framework to set up context
|
|
232
81
|
*/
|
|
233
|
-
export function
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
// Check monitoring features
|
|
240
|
-
if (feature === 'monitoring') {
|
|
241
|
-
return config.monitoring.enabled
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if (feature === 'metrics') {
|
|
245
|
-
return config.monitoring.enabled && config.monitoring.metrics.enabled
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (feature === 'profiling') {
|
|
249
|
-
return config.monitoring.enabled && config.monitoring.profiling.enabled
|
|
82
|
+
export function getEnvironmentInfo() {
|
|
83
|
+
const getName = () => {
|
|
84
|
+
if (helpers.isDevelopment()) return 'development'
|
|
85
|
+
if (helpers.isProduction()) return 'production'
|
|
86
|
+
if (helpers.isTest()) return 'test'
|
|
87
|
+
return 'development'
|
|
250
88
|
}
|
|
251
|
-
|
|
252
|
-
// Check custom features
|
|
253
|
-
return config.custom?.[feature] === true
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Get database configuration if available
|
|
258
|
-
*/
|
|
259
|
-
export function getDatabaseConfig(config: FluxStackConfig) {
|
|
260
|
-
return config.database || null
|
|
261
|
-
}
|
|
262
89
|
|
|
263
|
-
/**
|
|
264
|
-
* Get authentication configuration if available
|
|
265
|
-
*/
|
|
266
|
-
export function getAuthConfig(config: FluxStackConfig) {
|
|
267
|
-
return config.auth || null
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Get email configuration if available
|
|
272
|
-
*/
|
|
273
|
-
export function getEmailConfig(config: FluxStackConfig) {
|
|
274
|
-
return config.email || null
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Get storage configuration if available
|
|
279
|
-
*/
|
|
280
|
-
export function getStorageConfig(config: FluxStackConfig) {
|
|
281
|
-
return config.storage || null
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Backward compatibility function for legacy configuration
|
|
286
|
-
*/
|
|
287
|
-
export function createLegacyConfig(config: FluxStackConfig) {
|
|
288
90
|
return {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
cors: {
|
|
294
|
-
origins: config.server.cors.origins,
|
|
295
|
-
methods: config.server.cors.methods,
|
|
296
|
-
headers: config.server.cors.headers
|
|
297
|
-
},
|
|
298
|
-
build: {
|
|
299
|
-
outDir: config.build.outDir,
|
|
300
|
-
target: config.build.target
|
|
301
|
-
}
|
|
91
|
+
name: getName(),
|
|
92
|
+
isDevelopment: helpers.isDevelopment(),
|
|
93
|
+
isProduction: helpers.isProduction(),
|
|
94
|
+
isTest: helpers.isTest()
|
|
302
95
|
}
|
|
303
96
|
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Environment configuration utilities
|
|
307
|
-
*/
|
|
308
|
-
import { getEnvironmentInfo as _getEnvironmentInfo } from './env'
|
|
309
|
-
import type { FluxStackConfig } from './schema'
|
|
310
|
-
|
|
311
|
-
export const env = {
|
|
312
|
-
isDevelopment: () => _getEnvironmentInfo().isDevelopment,
|
|
313
|
-
isProduction: () => _getEnvironmentInfo().isProduction,
|
|
314
|
-
isTest: () => _getEnvironmentInfo().isTest,
|
|
315
|
-
getName: () => _getEnvironmentInfo().name,
|
|
316
|
-
getInfo: () => _getEnvironmentInfo()
|
|
317
|
-
}
|