create-fluxstack 1.16.0 → 1.17.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 (119) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/app/client/src/App.tsx +8 -0
  3. package/app/client/src/live/AuthDemo.tsx +4 -4
  4. package/core/build/bundler.ts +40 -26
  5. package/core/build/flux-plugins-generator.ts +325 -325
  6. package/core/build/index.ts +92 -21
  7. package/core/cli/command-registry.ts +44 -46
  8. package/core/cli/commands/build.ts +11 -6
  9. package/core/cli/commands/create.ts +7 -5
  10. package/core/cli/commands/dev.ts +6 -5
  11. package/core/cli/commands/help.ts +3 -2
  12. package/core/cli/commands/make-plugin.ts +8 -7
  13. package/core/cli/commands/plugin-add.ts +60 -43
  14. package/core/cli/commands/plugin-deps.ts +73 -57
  15. package/core/cli/commands/plugin-list.ts +44 -41
  16. package/core/cli/commands/plugin-remove.ts +33 -22
  17. package/core/cli/generators/component.ts +770 -769
  18. package/core/cli/generators/controller.ts +9 -8
  19. package/core/cli/generators/index.ts +148 -146
  20. package/core/cli/generators/interactive.ts +228 -227
  21. package/core/cli/generators/plugin.ts +11 -10
  22. package/core/cli/generators/prompts.ts +83 -82
  23. package/core/cli/generators/route.ts +7 -6
  24. package/core/cli/generators/service.ts +10 -9
  25. package/core/cli/generators/template-engine.ts +2 -1
  26. package/core/cli/generators/types.ts +7 -7
  27. package/core/cli/generators/utils.ts +191 -191
  28. package/core/cli/index.ts +9 -8
  29. package/core/cli/plugin-discovery.ts +2 -2
  30. package/core/client/hooks/useAuth.ts +48 -48
  31. package/core/client/standalone.ts +18 -17
  32. package/core/client/state/createStore.ts +192 -192
  33. package/core/client/state/index.ts +14 -14
  34. package/core/config/index.ts +1 -0
  35. package/core/framework/client.ts +131 -131
  36. package/core/framework/index.ts +7 -7
  37. package/core/framework/server.ts +72 -112
  38. package/core/framework/types.ts +2 -2
  39. package/core/plugins/built-in/live-components/commands/create-live-component.ts +6 -3
  40. package/core/plugins/built-in/monitoring/index.ts +110 -68
  41. package/core/plugins/built-in/static/index.ts +2 -2
  42. package/core/plugins/built-in/swagger/index.ts +9 -9
  43. package/core/plugins/built-in/vite/index.ts +3 -3
  44. package/core/plugins/built-in/vite/vite-dev.ts +3 -3
  45. package/core/plugins/config.ts +50 -47
  46. package/core/plugins/discovery.ts +10 -4
  47. package/core/plugins/executor.ts +2 -2
  48. package/core/plugins/index.ts +206 -203
  49. package/core/plugins/manager.ts +21 -20
  50. package/core/plugins/registry.ts +76 -12
  51. package/core/plugins/types.ts +14 -14
  52. package/core/server/framework.ts +3 -189
  53. package/core/server/live/auto-generated-components.ts +11 -29
  54. package/core/server/live/index.ts +41 -31
  55. package/core/server/live/websocket-plugin.ts +11 -1
  56. package/core/server/middleware/elysia-helpers.ts +16 -15
  57. package/core/server/middleware/errorHandling.ts +14 -14
  58. package/core/server/middleware/index.ts +31 -31
  59. package/core/server/plugins/database.ts +181 -180
  60. package/core/server/plugins/static-files-plugin.ts +4 -3
  61. package/core/server/plugins/swagger.ts +11 -8
  62. package/core/server/rooms/RoomBroadcaster.ts +11 -10
  63. package/core/server/rooms/RoomSystem.ts +14 -11
  64. package/core/server/services/BaseService.ts +7 -7
  65. package/core/server/services/ServiceContainer.ts +5 -5
  66. package/core/server/services/index.ts +8 -8
  67. package/core/templates/create-project.ts +28 -27
  68. package/core/testing/index.ts +9 -9
  69. package/core/testing/setup.ts +73 -73
  70. package/core/types/api.ts +168 -168
  71. package/core/types/config.ts +5 -5
  72. package/core/types/index.ts +1 -1
  73. package/core/types/plugin.ts +2 -2
  74. package/core/types/types.ts +3 -3
  75. package/core/utils/build-logger.ts +324 -324
  76. package/core/utils/config-schema.ts +480 -480
  77. package/core/utils/env.ts +10 -8
  78. package/core/utils/errors/codes.ts +114 -114
  79. package/core/utils/errors/handlers.ts +30 -20
  80. package/core/utils/errors/index.ts +54 -46
  81. package/core/utils/errors/middleware.ts +113 -113
  82. package/core/utils/helpers.ts +19 -16
  83. package/core/utils/logger/colors.ts +114 -114
  84. package/core/utils/logger/config.ts +2 -2
  85. package/core/utils/logger/formatter.ts +82 -82
  86. package/core/utils/logger/group-logger.ts +101 -101
  87. package/core/utils/logger/index.ts +13 -3
  88. package/core/utils/logger/startup-banner.ts +2 -2
  89. package/core/utils/logger/winston-logger.ts +152 -152
  90. package/core/utils/monitoring/index.ts +211 -211
  91. package/core/utils/sync-version.ts +67 -66
  92. package/core/utils/version.ts +1 -1
  93. package/package.json +104 -100
  94. package/playwright-report/index.html +85 -0
  95. package/playwright.config.ts +31 -0
  96. package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
  97. package/plugins/crypto-auth/client/components/index.ts +11 -11
  98. package/plugins/crypto-auth/client/index.ts +11 -11
  99. package/plugins/crypto-auth/package.json +65 -65
  100. package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
  101. package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +6 -5
  102. package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +6 -5
  103. package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +3 -3
  104. package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
  105. package/plugins/crypto-auth/server/middlewares.ts +19 -19
  106. package/vite.config.ts +13 -0
  107. package/app/client/.live-stubs/LiveAdminPanel.js +0 -5
  108. package/app/client/.live-stubs/LiveCounter.js +0 -9
  109. package/app/client/.live-stubs/LiveForm.js +0 -11
  110. package/app/client/.live-stubs/LiveLocalCounter.js +0 -8
  111. package/app/client/.live-stubs/LivePingPong.js +0 -10
  112. package/app/client/.live-stubs/LiveRoomChat.js +0 -11
  113. package/app/client/.live-stubs/LiveSharedCounter.js +0 -10
  114. package/app/client/.live-stubs/LiveUpload.js +0 -15
  115. package/app/server/live/register-components.ts +0 -19
  116. package/core/build/live-components-generator.ts +0 -321
  117. package/core/live/ComponentRegistry.ts +0 -403
  118. package/core/live/types.ts +0 -241
  119. package/workspace.json +0 -6
@@ -1,152 +1,152 @@
1
- /**
2
- * FluxStack Logger - Winston Logger Factory
3
- * Creates Winston logger instances for each module
4
- */
5
-
6
- import winston from 'winston'
7
- import DailyRotateFile from 'winston-daily-rotate-file'
8
- import { join, dirname } from 'path'
9
- import { existsSync, mkdirSync } from 'fs'
10
- import chalk from 'chalk'
11
- import { LOGGER_CONFIG } from './config'
12
- import { LOG_SYMBOLS, LEVEL_COLORS } from './colors'
13
-
14
- // Cache for module loggers
15
- const moduleLoggers = new Map<string, winston.Logger>()
16
-
17
- /**
18
- * Console format with colors and symbols
19
- */
20
- function createConsoleFormat() {
21
- return winston.format.printf(({ timestamp, level, message }) => {
22
- const levelSymbol = LOG_SYMBOLS[level as keyof typeof LOG_SYMBOLS] || LOG_SYMBOLS.default
23
- const levelColor = LEVEL_COLORS[level as keyof typeof LEVEL_COLORS] || LEVEL_COLORS.default
24
- const timestampFormatted = chalk.gray(`[${timestamp}]`)
25
-
26
- return `${levelSymbol} ${timestampFormatted} ${levelColor(level.toUpperCase().padEnd(5))} ${message}`
27
- })
28
- }
29
-
30
- /**
31
- * File format without colors
32
- */
33
- function createFileFormat() {
34
- return winston.format.printf(({ timestamp, level, message }) => {
35
- // Remove ANSI color codes
36
- const cleanMessage = String(message).replace(/\u001b\[.*?m/g, '')
37
- return `[${timestamp}] [${level.toUpperCase()}]: ${cleanMessage}`
38
- })
39
- }
40
-
41
- /**
42
- * Create a logger for a specific module
43
- */
44
- export function getLoggerForModule(modulePath: string): winston.Logger {
45
- // Normalize path for cache key
46
- const normalizedPath = modulePath.replace(/[:/\\]/g, '_').replace(/^_/, '')
47
-
48
- // Check cache
49
- if (moduleLoggers.has(normalizedPath)) {
50
- return moduleLoggers.get(normalizedPath)!
51
- }
52
-
53
- // Create logger
54
- const logger = createLogger(normalizedPath)
55
- moduleLoggers.set(normalizedPath, logger)
56
-
57
- return logger
58
- }
59
-
60
- /**
61
- * Create a Winston logger with appropriate transports
62
- */
63
- function createLogger(modulePath: string): winston.Logger {
64
- const transports: winston.transport[] = [
65
- // Console transport (always enabled)
66
- new winston.transports.Console({
67
- format: winston.format.combine(
68
- winston.format.timestamp({ format: LOGGER_CONFIG.dateFormat }),
69
- createConsoleFormat()
70
- )
71
- })
72
- ]
73
-
74
- // Add file transports if enabled
75
- if (LOGGER_CONFIG.logToFile) {
76
- const logsDir = join(process.cwd(), 'logs', modulePath)
77
-
78
- // Ensure logs directory exists
79
- if (!existsSync(logsDir)) {
80
- mkdirSync(logsDir, { recursive: true })
81
- }
82
-
83
- const commonFileFormat = winston.format.combine(
84
- winston.format.timestamp({ format: LOGGER_CONFIG.dateFormat }),
85
- createFileFormat()
86
- )
87
-
88
- // All logs
89
- transports.push(
90
- new DailyRotateFile({
91
- filename: join(logsDir, '%DATE%-all.log'),
92
- datePattern: 'YYYY-MM-DD',
93
- maxSize: LOGGER_CONFIG.maxSize,
94
- maxFiles: LOGGER_CONFIG.maxFiles,
95
- level: LOGGER_CONFIG.level,
96
- format: commonFileFormat
97
- })
98
- )
99
-
100
- // Error logs
101
- transports.push(
102
- new DailyRotateFile({
103
- filename: join(logsDir, '%DATE%-errors.log'),
104
- datePattern: 'YYYY-MM-DD',
105
- maxSize: LOGGER_CONFIG.maxSize,
106
- maxFiles: LOGGER_CONFIG.maxFiles,
107
- level: 'error',
108
- format: commonFileFormat
109
- })
110
- )
111
-
112
- // Warning logs
113
- transports.push(
114
- new DailyRotateFile({
115
- filename: join(logsDir, '%DATE%-warnings.log'),
116
- datePattern: 'YYYY-MM-DD',
117
- maxSize: LOGGER_CONFIG.maxSize,
118
- maxFiles: LOGGER_CONFIG.maxFiles,
119
- level: 'warn',
120
- format: commonFileFormat
121
- })
122
- )
123
-
124
- // Info logs
125
- transports.push(
126
- new DailyRotateFile({
127
- filename: join(logsDir, '%DATE%-info.log'),
128
- datePattern: 'YYYY-MM-DD',
129
- maxSize: LOGGER_CONFIG.maxSize,
130
- maxFiles: LOGGER_CONFIG.maxFiles,
131
- level: 'info',
132
- format: commonFileFormat
133
- })
134
- )
135
- }
136
-
137
- return winston.createLogger({
138
- level: LOGGER_CONFIG.level,
139
- transports
140
- })
141
- }
142
-
143
- /**
144
- * Clear logger cache (useful for testing)
145
- */
146
- export function clearLoggerCache(): void {
147
- // Close all loggers before clearing
148
- for (const logger of moduleLoggers.values()) {
149
- logger.close()
150
- }
151
- moduleLoggers.clear()
152
- }
1
+ /**
2
+ * FluxStack Logger - Winston Logger Factory
3
+ * Creates Winston logger instances for each module
4
+ */
5
+
6
+ import winston from 'winston'
7
+ import DailyRotateFile from 'winston-daily-rotate-file'
8
+ import { join, dirname } from 'path'
9
+ import { existsSync, mkdirSync } from 'fs'
10
+ import chalk from 'chalk'
11
+ import { LOGGER_CONFIG } from './config'
12
+ import { LOG_SYMBOLS, LEVEL_COLORS } from './colors'
13
+
14
+ // Cache for module loggers
15
+ const moduleLoggers = new Map<string, winston.Logger>()
16
+
17
+ /**
18
+ * Console format with colors and symbols
19
+ */
20
+ function createConsoleFormat() {
21
+ return winston.format.printf(({ timestamp, level, message }) => {
22
+ const levelSymbol = LOG_SYMBOLS[level as keyof typeof LOG_SYMBOLS] || LOG_SYMBOLS.default
23
+ const levelColor = LEVEL_COLORS[level as keyof typeof LEVEL_COLORS] || LEVEL_COLORS.default
24
+ const timestampFormatted = chalk.gray(`[${timestamp}]`)
25
+
26
+ return `${levelSymbol} ${timestampFormatted} ${levelColor(level.toUpperCase().padEnd(5))} ${message}`
27
+ })
28
+ }
29
+
30
+ /**
31
+ * File format without colors
32
+ */
33
+ function createFileFormat() {
34
+ return winston.format.printf(({ timestamp, level, message }) => {
35
+ // Remove ANSI color codes
36
+ const cleanMessage = String(message).replace(/\u001b\[.*?m/g, '')
37
+ return `[${timestamp}] [${level.toUpperCase()}]: ${cleanMessage}`
38
+ })
39
+ }
40
+
41
+ /**
42
+ * Create a logger for a specific module
43
+ */
44
+ export function getLoggerForModule(modulePath: string): winston.Logger {
45
+ // Normalize path for cache key
46
+ const normalizedPath = modulePath.replace(/[:/\\]/g, '_').replace(/^_/, '')
47
+
48
+ // Check cache
49
+ if (moduleLoggers.has(normalizedPath)) {
50
+ return moduleLoggers.get(normalizedPath)!
51
+ }
52
+
53
+ // Create logger
54
+ const logger = createLogger(normalizedPath)
55
+ moduleLoggers.set(normalizedPath, logger)
56
+
57
+ return logger
58
+ }
59
+
60
+ /**
61
+ * Create a Winston logger with appropriate transports
62
+ */
63
+ function createLogger(modulePath: string): winston.Logger {
64
+ const transports: winston.transport[] = [
65
+ // Console transport (always enabled)
66
+ new winston.transports.Console({
67
+ format: winston.format.combine(
68
+ winston.format.timestamp({ format: LOGGER_CONFIG.dateFormat }),
69
+ createConsoleFormat()
70
+ )
71
+ })
72
+ ]
73
+
74
+ // Add file transports if enabled
75
+ if (LOGGER_CONFIG.logToFile) {
76
+ const logsDir = join(process.cwd(), 'logs', modulePath)
77
+
78
+ // Ensure logs directory exists
79
+ if (!existsSync(logsDir)) {
80
+ mkdirSync(logsDir, { recursive: true })
81
+ }
82
+
83
+ const commonFileFormat = winston.format.combine(
84
+ winston.format.timestamp({ format: LOGGER_CONFIG.dateFormat }),
85
+ createFileFormat()
86
+ )
87
+
88
+ // All logs
89
+ transports.push(
90
+ new DailyRotateFile({
91
+ filename: join(logsDir, '%DATE%-all.log'),
92
+ datePattern: 'YYYY-MM-DD',
93
+ maxSize: LOGGER_CONFIG.maxSize,
94
+ maxFiles: LOGGER_CONFIG.maxFiles,
95
+ level: LOGGER_CONFIG.level,
96
+ format: commonFileFormat
97
+ })
98
+ )
99
+
100
+ // Error logs
101
+ transports.push(
102
+ new DailyRotateFile({
103
+ filename: join(logsDir, '%DATE%-errors.log'),
104
+ datePattern: 'YYYY-MM-DD',
105
+ maxSize: LOGGER_CONFIG.maxSize,
106
+ maxFiles: LOGGER_CONFIG.maxFiles,
107
+ level: 'error',
108
+ format: commonFileFormat
109
+ })
110
+ )
111
+
112
+ // Warning logs
113
+ transports.push(
114
+ new DailyRotateFile({
115
+ filename: join(logsDir, '%DATE%-warnings.log'),
116
+ datePattern: 'YYYY-MM-DD',
117
+ maxSize: LOGGER_CONFIG.maxSize,
118
+ maxFiles: LOGGER_CONFIG.maxFiles,
119
+ level: 'warn',
120
+ format: commonFileFormat
121
+ })
122
+ )
123
+
124
+ // Info logs
125
+ transports.push(
126
+ new DailyRotateFile({
127
+ filename: join(logsDir, '%DATE%-info.log'),
128
+ datePattern: 'YYYY-MM-DD',
129
+ maxSize: LOGGER_CONFIG.maxSize,
130
+ maxFiles: LOGGER_CONFIG.maxFiles,
131
+ level: 'info',
132
+ format: commonFileFormat
133
+ })
134
+ )
135
+ }
136
+
137
+ return winston.createLogger({
138
+ level: LOGGER_CONFIG.level,
139
+ transports
140
+ })
141
+ }
142
+
143
+ /**
144
+ * Clear logger cache (useful for testing)
145
+ */
146
+ export function clearLoggerCache(): void {
147
+ // Close all loggers before clearing
148
+ for (const logger of moduleLoggers.values()) {
149
+ logger.close()
150
+ }
151
+ moduleLoggers.clear()
152
+ }