create-fluxstack 1.15.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 (142) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/LLMD/INDEX.md +4 -3
  3. package/LLMD/resources/live-binary-delta.md +507 -0
  4. package/LLMD/resources/live-components.md +1 -0
  5. package/LLMD/resources/live-rooms.md +731 -333
  6. package/app/client/src/App.tsx +23 -14
  7. package/app/client/src/components/AppLayout.tsx +4 -4
  8. package/app/client/src/live/AuthDemo.tsx +4 -4
  9. package/app/client/src/live/PingPongDemo.tsx +199 -0
  10. package/app/client/src/live/RoomChatDemo.tsx +187 -22
  11. package/app/client/src/live/SharedCounterDemo.tsx +142 -0
  12. package/app/server/live/LivePingPong.ts +61 -0
  13. package/app/server/live/LiveRoomChat.ts +106 -38
  14. package/app/server/live/LiveSharedCounter.ts +73 -0
  15. package/app/server/live/rooms/ChatRoom.ts +68 -0
  16. package/app/server/live/rooms/CounterRoom.ts +51 -0
  17. package/app/server/live/rooms/DirectoryRoom.ts +42 -0
  18. package/app/server/live/rooms/PingRoom.ts +40 -0
  19. package/core/build/bundler.ts +40 -26
  20. package/core/build/flux-plugins-generator.ts +325 -325
  21. package/core/build/index.ts +92 -21
  22. package/core/cli/command-registry.ts +44 -46
  23. package/core/cli/commands/build.ts +11 -6
  24. package/core/cli/commands/create.ts +7 -5
  25. package/core/cli/commands/dev.ts +6 -5
  26. package/core/cli/commands/help.ts +3 -2
  27. package/core/cli/commands/make-plugin.ts +8 -7
  28. package/core/cli/commands/plugin-add.ts +60 -43
  29. package/core/cli/commands/plugin-deps.ts +73 -57
  30. package/core/cli/commands/plugin-list.ts +44 -41
  31. package/core/cli/commands/plugin-remove.ts +33 -22
  32. package/core/cli/generators/component.ts +770 -769
  33. package/core/cli/generators/controller.ts +9 -8
  34. package/core/cli/generators/index.ts +148 -146
  35. package/core/cli/generators/interactive.ts +228 -227
  36. package/core/cli/generators/plugin.ts +11 -10
  37. package/core/cli/generators/prompts.ts +83 -82
  38. package/core/cli/generators/route.ts +7 -6
  39. package/core/cli/generators/service.ts +10 -9
  40. package/core/cli/generators/template-engine.ts +2 -1
  41. package/core/cli/generators/types.ts +7 -7
  42. package/core/cli/generators/utils.ts +191 -191
  43. package/core/cli/index.ts +9 -8
  44. package/core/cli/plugin-discovery.ts +2 -2
  45. package/core/client/hooks/useAuth.ts +48 -48
  46. package/core/client/index.ts +0 -16
  47. package/core/client/standalone.ts +18 -17
  48. package/core/client/state/createStore.ts +192 -192
  49. package/core/client/state/index.ts +14 -14
  50. package/core/config/index.ts +1 -0
  51. package/core/framework/client.ts +131 -131
  52. package/core/framework/index.ts +7 -7
  53. package/core/framework/server.ts +72 -112
  54. package/core/framework/types.ts +2 -2
  55. package/core/plugins/built-in/live-components/commands/create-live-component.ts +6 -3
  56. package/core/plugins/built-in/monitoring/index.ts +110 -68
  57. package/core/plugins/built-in/static/index.ts +2 -2
  58. package/core/plugins/built-in/swagger/index.ts +9 -9
  59. package/core/plugins/built-in/vite/index.ts +3 -3
  60. package/core/plugins/built-in/vite/vite-dev.ts +3 -3
  61. package/core/plugins/config.ts +50 -47
  62. package/core/plugins/discovery.ts +10 -4
  63. package/core/plugins/executor.ts +2 -2
  64. package/core/plugins/index.ts +206 -203
  65. package/core/plugins/manager.ts +21 -20
  66. package/core/plugins/registry.ts +76 -12
  67. package/core/plugins/types.ts +14 -14
  68. package/core/server/framework.ts +3 -189
  69. package/core/server/live/auto-generated-components.ts +11 -35
  70. package/core/server/live/index.ts +41 -36
  71. package/core/server/live/websocket-plugin.ts +48 -3
  72. package/core/server/middleware/elysia-helpers.ts +16 -15
  73. package/core/server/middleware/errorHandling.ts +14 -14
  74. package/core/server/middleware/index.ts +31 -31
  75. package/core/server/plugins/database.ts +181 -180
  76. package/core/server/plugins/static-files-plugin.ts +4 -3
  77. package/core/server/plugins/swagger.ts +11 -8
  78. package/core/server/rooms/RoomBroadcaster.ts +11 -10
  79. package/core/server/rooms/RoomSystem.ts +14 -11
  80. package/core/server/services/BaseService.ts +7 -7
  81. package/core/server/services/ServiceContainer.ts +5 -5
  82. package/core/server/services/index.ts +8 -8
  83. package/core/templates/create-project.ts +28 -27
  84. package/core/testing/index.ts +9 -9
  85. package/core/testing/setup.ts +73 -73
  86. package/core/types/api.ts +168 -168
  87. package/core/types/config.ts +5 -5
  88. package/core/types/index.ts +1 -1
  89. package/core/types/plugin.ts +2 -2
  90. package/core/types/types.ts +3 -3
  91. package/core/utils/build-logger.ts +324 -324
  92. package/core/utils/config-schema.ts +480 -480
  93. package/core/utils/env.ts +10 -8
  94. package/core/utils/errors/codes.ts +114 -114
  95. package/core/utils/errors/handlers.ts +30 -20
  96. package/core/utils/errors/index.ts +54 -46
  97. package/core/utils/errors/middleware.ts +113 -113
  98. package/core/utils/helpers.ts +19 -16
  99. package/core/utils/logger/colors.ts +114 -114
  100. package/core/utils/logger/config.ts +2 -2
  101. package/core/utils/logger/formatter.ts +82 -82
  102. package/core/utils/logger/group-logger.ts +101 -101
  103. package/core/utils/logger/index.ts +13 -3
  104. package/core/utils/logger/startup-banner.ts +2 -2
  105. package/core/utils/logger/winston-logger.ts +152 -152
  106. package/core/utils/monitoring/index.ts +211 -211
  107. package/core/utils/sync-version.ts +67 -66
  108. package/core/utils/version.ts +1 -1
  109. package/package.json +11 -6
  110. package/playwright-report/index.html +85 -0
  111. package/playwright.config.ts +31 -0
  112. package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
  113. package/plugins/crypto-auth/client/components/index.ts +11 -11
  114. package/plugins/crypto-auth/client/index.ts +11 -11
  115. package/plugins/crypto-auth/package.json +65 -65
  116. package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
  117. package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +6 -5
  118. package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +6 -5
  119. package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +3 -3
  120. package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
  121. package/plugins/crypto-auth/server/middlewares.ts +19 -19
  122. package/tsconfig.json +4 -1
  123. package/vite.config.ts +13 -0
  124. package/app/client/.live-stubs/LiveAdminPanel.js +0 -5
  125. package/app/client/.live-stubs/LiveChat.js +0 -7
  126. package/app/client/.live-stubs/LiveCounter.js +0 -9
  127. package/app/client/.live-stubs/LiveForm.js +0 -11
  128. package/app/client/.live-stubs/LiveLocalCounter.js +0 -8
  129. package/app/client/.live-stubs/LiveRoomChat.js +0 -10
  130. package/app/client/.live-stubs/LiveTodoList.js +0 -9
  131. package/app/client/.live-stubs/LiveUpload.js +0 -15
  132. package/app/client/src/live/ChatDemo.tsx +0 -107
  133. package/app/client/src/live/LiveDebuggerPanel.tsx +0 -779
  134. package/app/client/src/live/TodoListDemo.tsx +0 -158
  135. package/app/server/live/LiveChat.ts +0 -78
  136. package/app/server/live/LiveTodoList.ts +0 -110
  137. package/app/server/live/register-components.ts +0 -19
  138. package/core/build/live-components-generator.ts +0 -312
  139. package/core/client/components/LiveDebugger.tsx +0 -1324
  140. package/core/live/ComponentRegistry.ts +0 -403
  141. package/core/live/types.ts +0 -241
  142. 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
+ }