create-fluxstack 1.0.1 → 1.0.2

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 (100) hide show
  1. package/create-fluxstack.ts +2 -3
  2. package/package.json +1 -1
  3. package/.env +0 -30
  4. package/LICENSE +0 -21
  5. package/app/client/README.md +0 -69
  6. package/app/client/frontend-only.ts +0 -12
  7. package/app/client/index.html +0 -13
  8. package/app/client/public/vite.svg +0 -1
  9. package/app/client/src/App.css +0 -883
  10. package/app/client/src/App.tsx +0 -669
  11. package/app/client/src/assets/react.svg +0 -1
  12. package/app/client/src/components/TestPage.tsx +0 -453
  13. package/app/client/src/index.css +0 -51
  14. package/app/client/src/lib/eden-api.ts +0 -110
  15. package/app/client/src/main.tsx +0 -10
  16. package/app/client/src/vite-env.d.ts +0 -1
  17. package/app/client/tsconfig.app.json +0 -43
  18. package/app/client/tsconfig.json +0 -7
  19. package/app/client/tsconfig.node.json +0 -25
  20. package/app/server/app.ts +0 -10
  21. package/app/server/backend-only.ts +0 -15
  22. package/app/server/controllers/users.controller.ts +0 -69
  23. package/app/server/index.ts +0 -104
  24. package/app/server/routes/index.ts +0 -25
  25. package/app/server/routes/users.routes.ts +0 -121
  26. package/app/server/types/index.ts +0 -1
  27. package/app/shared/types/index.ts +0 -18
  28. package/bun.lock +0 -1053
  29. package/core/__tests__/integration.test.ts +0 -227
  30. package/core/build/index.ts +0 -186
  31. package/core/cli/command-registry.ts +0 -334
  32. package/core/cli/index.ts +0 -394
  33. package/core/cli/plugin-discovery.ts +0 -200
  34. package/core/client/standalone.ts +0 -57
  35. package/core/config/__tests__/config-loader.test.ts +0 -591
  36. package/core/config/__tests__/config-merger.test.ts +0 -657
  37. package/core/config/__tests__/env-converter.test.ts +0 -372
  38. package/core/config/__tests__/env-processor.test.ts +0 -431
  39. package/core/config/__tests__/env.test.ts +0 -452
  40. package/core/config/__tests__/integration.test.ts +0 -418
  41. package/core/config/__tests__/loader.test.ts +0 -331
  42. package/core/config/__tests__/schema.test.ts +0 -129
  43. package/core/config/__tests__/validator.test.ts +0 -318
  44. package/core/config/env-dynamic.ts +0 -326
  45. package/core/config/env.ts +0 -597
  46. package/core/config/index.ts +0 -317
  47. package/core/config/loader.ts +0 -546
  48. package/core/config/runtime-config.ts +0 -322
  49. package/core/config/schema.ts +0 -694
  50. package/core/config/validator.ts +0 -540
  51. package/core/framework/__tests__/server.test.ts +0 -233
  52. package/core/framework/client.ts +0 -132
  53. package/core/framework/index.ts +0 -8
  54. package/core/framework/server.ts +0 -501
  55. package/core/framework/types.ts +0 -63
  56. package/core/plugins/__tests__/built-in.test.ts.disabled +0 -366
  57. package/core/plugins/__tests__/manager.test.ts +0 -398
  58. package/core/plugins/__tests__/monitoring.test.ts +0 -401
  59. package/core/plugins/__tests__/registry.test.ts +0 -335
  60. package/core/plugins/built-in/index.ts +0 -142
  61. package/core/plugins/built-in/logger/index.ts +0 -180
  62. package/core/plugins/built-in/monitoring/README.md +0 -193
  63. package/core/plugins/built-in/monitoring/index.ts +0 -912
  64. package/core/plugins/built-in/static/index.ts +0 -289
  65. package/core/plugins/built-in/swagger/index.ts +0 -229
  66. package/core/plugins/built-in/vite/index.ts +0 -316
  67. package/core/plugins/config.ts +0 -348
  68. package/core/plugins/discovery.ts +0 -350
  69. package/core/plugins/executor.ts +0 -351
  70. package/core/plugins/index.ts +0 -195
  71. package/core/plugins/manager.ts +0 -583
  72. package/core/plugins/registry.ts +0 -424
  73. package/core/plugins/types.ts +0 -254
  74. package/core/server/framework.ts +0 -123
  75. package/core/server/index.ts +0 -8
  76. package/core/server/plugins/database.ts +0 -182
  77. package/core/server/plugins/logger.ts +0 -47
  78. package/core/server/plugins/swagger.ts +0 -34
  79. package/core/server/standalone.ts +0 -91
  80. package/core/templates/create-project.ts +0 -455
  81. package/core/types/api.ts +0 -169
  82. package/core/types/build.ts +0 -174
  83. package/core/types/config.ts +0 -68
  84. package/core/types/index.ts +0 -127
  85. package/core/types/plugin.ts +0 -94
  86. package/core/utils/__tests__/errors.test.ts +0 -139
  87. package/core/utils/__tests__/helpers.test.ts +0 -297
  88. package/core/utils/__tests__/logger.test.ts +0 -141
  89. package/core/utils/env-runtime-v2.ts +0 -232
  90. package/core/utils/env-runtime.ts +0 -252
  91. package/core/utils/errors/codes.ts +0 -115
  92. package/core/utils/errors/handlers.ts +0 -63
  93. package/core/utils/errors/index.ts +0 -81
  94. package/core/utils/helpers.ts +0 -180
  95. package/core/utils/index.ts +0 -18
  96. package/core/utils/logger/index.ts +0 -161
  97. package/core/utils/logger.ts +0 -106
  98. package/core/utils/monitoring/index.ts +0 -212
  99. package/tsconfig.json +0 -51
  100. package/vite.config.ts +0 -42
@@ -1,694 +0,0 @@
1
- /**
2
- * Enhanced Configuration Schema for FluxStack
3
- * Provides comprehensive type definitions and JSON schema validation
4
- */
5
-
6
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error'
7
- export type BuildTarget = 'bun' | 'node' | 'docker'
8
- export type LogFormat = 'json' | 'pretty'
9
- export type StorageType = 'localStorage' | 'sessionStorage'
10
-
11
- // Core configuration interfaces
12
- export interface AppConfig {
13
- name: string
14
- version: string
15
- description?: string
16
- }
17
-
18
- export interface CorsConfig {
19
- origins: string[]
20
- methods: string[]
21
- headers: string[]
22
- credentials?: boolean
23
- maxAge?: number
24
- }
25
-
26
- export interface MiddlewareConfig {
27
- name: string
28
- enabled: boolean
29
- config?: Record<string, any>
30
- }
31
-
32
- export interface ServerConfig {
33
- port: number
34
- host: string
35
- apiPrefix: string
36
- cors: CorsConfig
37
- middleware: MiddlewareConfig[]
38
- }
39
-
40
- export interface ProxyConfig {
41
- target: string
42
- changeOrigin?: boolean
43
- pathRewrite?: Record<string, string>
44
- }
45
-
46
- export interface ClientBuildConfig {
47
- sourceMaps: boolean
48
- minify: boolean
49
- target: string
50
- outDir: string
51
- }
52
-
53
- export interface ClientConfig {
54
- port: number
55
- proxy: ProxyConfig
56
- build: ClientBuildConfig
57
- }
58
-
59
- export interface OptimizationConfig {
60
- minify: boolean
61
- treeshake: boolean
62
- compress: boolean
63
- splitChunks: boolean
64
- bundleAnalyzer: boolean
65
- }
66
-
67
- export interface BuildConfig {
68
- target: BuildTarget
69
- outDir: string
70
- optimization: OptimizationConfig
71
- sourceMaps: boolean
72
- clean: boolean
73
- }
74
-
75
- export interface LogTransportConfig {
76
- type: 'console' | 'file' | 'http'
77
- level: LogLevel
78
- format: LogFormat
79
- options?: Record<string, any>
80
- }
81
-
82
- export interface LoggingConfig {
83
- level: LogLevel
84
- format: LogFormat
85
- transports: LogTransportConfig[]
86
- context?: Record<string, any>
87
- }
88
-
89
- export interface MetricsConfig {
90
- enabled: boolean
91
- collectInterval: number
92
- httpMetrics: boolean
93
- systemMetrics: boolean
94
- customMetrics: boolean
95
- }
96
-
97
- export interface ProfilingConfig {
98
- enabled: boolean
99
- sampleRate: number
100
- memoryProfiling: boolean
101
- cpuProfiling: boolean
102
- }
103
-
104
- export interface MonitoringConfig {
105
- enabled: boolean
106
- metrics: MetricsConfig
107
- profiling: ProfilingConfig
108
- exporters: string[]
109
- }
110
-
111
- export interface PluginConfig {
112
- enabled: string[]
113
- disabled: string[]
114
- config: Record<string, any>
115
- }
116
-
117
- export interface DatabaseConfig {
118
- url?: string
119
- host?: string
120
- port?: number
121
- database?: string
122
- user?: string
123
- password?: string
124
- ssl?: boolean
125
- poolSize?: number
126
- }
127
-
128
- export interface AuthConfig {
129
- secret?: string
130
- expiresIn?: string
131
- algorithm?: string
132
- issuer?: string
133
- }
134
-
135
- export interface EmailConfig {
136
- host?: string
137
- port?: number
138
- user?: string
139
- password?: string
140
- secure?: boolean
141
- from?: string
142
- }
143
-
144
- export interface StorageConfig {
145
- uploadPath?: string
146
- maxFileSize?: number
147
- allowedTypes?: string[]
148
- provider?: 'local' | 's3' | 'gcs'
149
- config?: Record<string, any>
150
- }
151
-
152
- // Main configuration interface
153
- export interface FluxStackConfig {
154
- // Core settings
155
- app: AppConfig
156
-
157
- // Server configuration
158
- server: ServerConfig
159
-
160
- // Client configuration
161
- client: ClientConfig
162
-
163
- // Build configuration
164
- build: BuildConfig
165
-
166
- // Plugin configuration
167
- plugins: PluginConfig
168
-
169
- // Logging configuration
170
- logging: LoggingConfig
171
-
172
- // Monitoring configuration
173
- monitoring: MonitoringConfig
174
-
175
- // Optional service configurations
176
- database?: DatabaseConfig
177
- auth?: AuthConfig
178
- email?: EmailConfig
179
- storage?: StorageConfig
180
-
181
- // Environment-specific overrides
182
- environments?: {
183
- development?: Partial<FluxStackConfig>
184
- production?: Partial<FluxStackConfig>
185
- test?: Partial<FluxStackConfig>
186
- [key: string]: Partial<FluxStackConfig> | undefined
187
- }
188
-
189
- // Custom configuration
190
- custom?: Record<string, any>
191
- }
192
-
193
- // JSON Schema for validation
194
- export const fluxStackConfigSchema = {
195
- type: 'object',
196
- properties: {
197
- app: {
198
- type: 'object',
199
- properties: {
200
- name: {
201
- type: 'string',
202
- minLength: 1,
203
- description: 'Application name'
204
- },
205
- version: {
206
- type: 'string',
207
- pattern: '^\\d+\\.\\d+\\.\\d+',
208
- description: 'Application version (semver format)'
209
- },
210
- description: {
211
- type: 'string',
212
- description: 'Application description'
213
- }
214
- },
215
- required: ['name', 'version'],
216
- additionalProperties: false
217
- },
218
-
219
- server: {
220
- type: 'object',
221
- properties: {
222
- port: {
223
- type: 'number',
224
- minimum: 1,
225
- maximum: 65535,
226
- description: 'Server port number'
227
- },
228
- host: {
229
- type: 'string',
230
- description: 'Server host address'
231
- },
232
- apiPrefix: {
233
- type: 'string',
234
- pattern: '^/',
235
- description: 'API route prefix'
236
- },
237
- cors: {
238
- type: 'object',
239
- properties: {
240
- origins: {
241
- type: 'array',
242
- items: { type: 'string' },
243
- minItems: 1,
244
- description: 'Allowed CORS origins'
245
- },
246
- methods: {
247
- type: 'array',
248
- items: {
249
- type: 'string',
250
- enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD']
251
- },
252
- description: 'Allowed HTTP methods'
253
- },
254
- headers: {
255
- type: 'array',
256
- items: { type: 'string' },
257
- description: 'Allowed headers'
258
- },
259
- credentials: {
260
- type: 'boolean',
261
- description: 'Allow credentials in CORS requests'
262
- },
263
- maxAge: {
264
- type: 'number',
265
- minimum: 0,
266
- description: 'CORS preflight cache duration'
267
- }
268
- },
269
- required: ['origins', 'methods', 'headers'],
270
- additionalProperties: false
271
- },
272
- middleware: {
273
- type: 'array',
274
- items: {
275
- type: 'object',
276
- properties: {
277
- name: { type: 'string' },
278
- enabled: { type: 'boolean' },
279
- config: { type: 'object' }
280
- },
281
- required: ['name', 'enabled'],
282
- additionalProperties: false
283
- }
284
- }
285
- },
286
- required: ['port', 'host', 'apiPrefix', 'cors', 'middleware'],
287
- additionalProperties: false
288
- },
289
-
290
- client: {
291
- type: 'object',
292
- properties: {
293
- port: {
294
- type: 'number',
295
- minimum: 1,
296
- maximum: 65535,
297
- description: 'Client development server port'
298
- },
299
- proxy: {
300
- type: 'object',
301
- properties: {
302
- target: { type: 'string' },
303
- changeOrigin: { type: 'boolean' },
304
- pathRewrite: {
305
- type: 'object',
306
- additionalProperties: { type: 'string' }
307
- }
308
- },
309
- required: ['target'],
310
- additionalProperties: false
311
- },
312
- build: {
313
- type: 'object',
314
- properties: {
315
- sourceMaps: { type: 'boolean' },
316
- minify: { type: 'boolean' },
317
- target: { type: 'string' },
318
- outDir: { type: 'string' }
319
- },
320
- required: ['sourceMaps', 'minify', 'target', 'outDir'],
321
- additionalProperties: false
322
- }
323
- },
324
- required: ['port', 'proxy', 'build'],
325
- additionalProperties: false
326
- },
327
-
328
- build: {
329
- type: 'object',
330
- properties: {
331
- target: {
332
- type: 'string',
333
- enum: ['bun', 'node', 'docker'],
334
- description: 'Build target runtime'
335
- },
336
- outDir: {
337
- type: 'string',
338
- description: 'Build output directory'
339
- },
340
- optimization: {
341
- type: 'object',
342
- properties: {
343
- minify: { type: 'boolean' },
344
- treeshake: { type: 'boolean' },
345
- compress: { type: 'boolean' },
346
- splitChunks: { type: 'boolean' },
347
- bundleAnalyzer: { type: 'boolean' }
348
- },
349
- required: ['minify', 'treeshake', 'compress', 'splitChunks', 'bundleAnalyzer'],
350
- additionalProperties: false
351
- },
352
- sourceMaps: { type: 'boolean' },
353
- clean: { type: 'boolean' }
354
- },
355
- required: ['target', 'outDir', 'optimization', 'sourceMaps', 'clean'],
356
- additionalProperties: false
357
- },
358
-
359
- plugins: {
360
- type: 'object',
361
- properties: {
362
- enabled: {
363
- type: 'array',
364
- items: { type: 'string' },
365
- description: 'List of enabled plugins'
366
- },
367
- disabled: {
368
- type: 'array',
369
- items: { type: 'string' },
370
- description: 'List of disabled plugins'
371
- },
372
- config: {
373
- type: 'object',
374
- description: 'Plugin-specific configuration'
375
- }
376
- },
377
- required: ['enabled', 'disabled', 'config'],
378
- additionalProperties: false
379
- },
380
-
381
- logging: {
382
- type: 'object',
383
- properties: {
384
- level: {
385
- type: 'string',
386
- enum: ['debug', 'info', 'warn', 'error'],
387
- description: 'Minimum log level'
388
- },
389
- format: {
390
- type: 'string',
391
- enum: ['json', 'pretty'],
392
- description: 'Log output format'
393
- },
394
- transports: {
395
- type: 'array',
396
- items: {
397
- type: 'object',
398
- properties: {
399
- type: {
400
- type: 'string',
401
- enum: ['console', 'file', 'http']
402
- },
403
- level: {
404
- type: 'string',
405
- enum: ['debug', 'info', 'warn', 'error']
406
- },
407
- format: {
408
- type: 'string',
409
- enum: ['json', 'pretty']
410
- },
411
- options: { type: 'object' }
412
- },
413
- required: ['type', 'level', 'format'],
414
- additionalProperties: false
415
- }
416
- },
417
- context: { type: 'object' }
418
- },
419
- required: ['level', 'format', 'transports'],
420
- additionalProperties: false
421
- },
422
-
423
- monitoring: {
424
- type: 'object',
425
- properties: {
426
- enabled: { type: 'boolean' },
427
- metrics: {
428
- type: 'object',
429
- properties: {
430
- enabled: { type: 'boolean' },
431
- collectInterval: { type: 'number', minimum: 1000 },
432
- httpMetrics: { type: 'boolean' },
433
- systemMetrics: { type: 'boolean' },
434
- customMetrics: { type: 'boolean' }
435
- },
436
- required: ['enabled', 'collectInterval', 'httpMetrics', 'systemMetrics', 'customMetrics'],
437
- additionalProperties: false
438
- },
439
- profiling: {
440
- type: 'object',
441
- properties: {
442
- enabled: { type: 'boolean' },
443
- sampleRate: { type: 'number', minimum: 0, maximum: 1 },
444
- memoryProfiling: { type: 'boolean' },
445
- cpuProfiling: { type: 'boolean' }
446
- },
447
- required: ['enabled', 'sampleRate', 'memoryProfiling', 'cpuProfiling'],
448
- additionalProperties: false
449
- },
450
- exporters: {
451
- type: 'array',
452
- items: { type: 'string' }
453
- }
454
- },
455
- required: ['enabled', 'metrics', 'profiling', 'exporters'],
456
- additionalProperties: false
457
- },
458
-
459
- // Optional configurations
460
- database: {
461
- type: 'object',
462
- properties: {
463
- url: { type: 'string' },
464
- host: { type: 'string' },
465
- port: { type: 'number', minimum: 1, maximum: 65535 },
466
- database: { type: 'string' },
467
- user: { type: 'string' },
468
- password: { type: 'string' },
469
- ssl: { type: 'boolean' },
470
- poolSize: { type: 'number', minimum: 1 }
471
- },
472
- additionalProperties: false
473
- },
474
-
475
- auth: {
476
- type: 'object',
477
- properties: {
478
- secret: { type: 'string', minLength: 32 },
479
- expiresIn: { type: 'string' },
480
- algorithm: { type: 'string' },
481
- issuer: { type: 'string' }
482
- },
483
- additionalProperties: false
484
- },
485
-
486
- email: {
487
- type: 'object',
488
- properties: {
489
- host: { type: 'string' },
490
- port: { type: 'number', minimum: 1, maximum: 65535 },
491
- user: { type: 'string' },
492
- password: { type: 'string' },
493
- secure: { type: 'boolean' },
494
- from: { type: 'string' }
495
- },
496
- additionalProperties: false
497
- },
498
-
499
- storage: {
500
- type: 'object',
501
- properties: {
502
- uploadPath: { type: 'string' },
503
- maxFileSize: { type: 'number', minimum: 1 },
504
- allowedTypes: {
505
- type: 'array',
506
- items: { type: 'string' }
507
- },
508
- provider: {
509
- type: 'string',
510
- enum: ['local', 's3', 'gcs']
511
- },
512
- config: { type: 'object' }
513
- },
514
- additionalProperties: false
515
- },
516
-
517
- environments: {
518
- type: 'object',
519
- additionalProperties: {
520
- // Recursive reference to partial config
521
- type: 'object'
522
- }
523
- },
524
-
525
- custom: {
526
- type: 'object',
527
- description: 'Custom application-specific configuration'
528
- }
529
- },
530
- required: ['app', 'server', 'client', 'build', 'plugins', 'logging', 'monitoring'],
531
- additionalProperties: false
532
- }
533
-
534
- // Default configuration values
535
- export const defaultFluxStackConfig: FluxStackConfig = {
536
- app: {
537
- name: 'fluxstack-app',
538
- version: '1.0.0',
539
- description: 'A FluxStack application'
540
- },
541
-
542
- server: {
543
- port: 3000,
544
- host: 'localhost',
545
- apiPrefix: '/api',
546
- cors: {
547
- origins: ['http://localhost:3000', 'http://localhost:5173'],
548
- methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
549
- headers: ['Content-Type', 'Authorization'],
550
- credentials: true,
551
- maxAge: 86400
552
- },
553
- middleware: []
554
- },
555
-
556
- client: {
557
- port: 5173,
558
- proxy: {
559
- target: 'http://localhost:3000',
560
- changeOrigin: true
561
- },
562
- build: {
563
- sourceMaps: true,
564
- minify: false,
565
- target: 'esnext',
566
- outDir: 'dist/client'
567
- }
568
- },
569
-
570
- build: {
571
- target: 'bun',
572
- outDir: 'dist',
573
- optimization: {
574
- minify: true,
575
- treeshake: true,
576
- compress: true,
577
- splitChunks: true,
578
- bundleAnalyzer: false
579
- },
580
- sourceMaps: true,
581
- clean: true
582
- },
583
-
584
- plugins: {
585
- enabled: ['logger', 'swagger', 'vite', 'cors'],
586
- disabled: [],
587
- config: {}
588
- },
589
-
590
- logging: {
591
- level: 'info',
592
- format: 'pretty',
593
- transports: [
594
- {
595
- type: 'console',
596
- level: 'info',
597
- format: 'pretty'
598
- }
599
- ]
600
- },
601
-
602
- monitoring: {
603
- enabled: false,
604
- metrics: {
605
- enabled: false,
606
- collectInterval: 5000,
607
- httpMetrics: true,
608
- systemMetrics: true,
609
- customMetrics: false
610
- },
611
- profiling: {
612
- enabled: false,
613
- sampleRate: 0.1,
614
- memoryProfiling: false,
615
- cpuProfiling: false
616
- },
617
- exporters: []
618
- }
619
- }
620
-
621
- // Environment-specific default overrides
622
- export const environmentDefaults = {
623
- development: {
624
- logging: {
625
- level: 'debug' as LogLevel,
626
- format: 'pretty' as LogFormat
627
- },
628
- client: {
629
- build: {
630
- minify: false,
631
- sourceMaps: true
632
- }
633
- },
634
- build: {
635
- optimization: {
636
- minify: false,
637
- compress: false
638
- }
639
- }
640
- },
641
-
642
- production: {
643
- logging: {
644
- level: 'warn' as LogLevel,
645
- format: 'json' as LogFormat,
646
- transports: [
647
- {
648
- type: 'console' as const,
649
- level: 'warn' as LogLevel,
650
- format: 'json' as LogFormat
651
- },
652
- {
653
- type: 'file' as const,
654
- level: 'error' as LogLevel,
655
- format: 'json' as LogFormat,
656
- options: {
657
- filename: 'logs/error.log',
658
- maxSize: '10m',
659
- maxFiles: 5
660
- }
661
- }
662
- ]
663
- },
664
- monitoring: {
665
- enabled: true,
666
- metrics: {
667
- enabled: true,
668
- httpMetrics: true,
669
- systemMetrics: true
670
- }
671
- },
672
- build: {
673
- optimization: {
674
- minify: true,
675
- treeshake: true,
676
- compress: true,
677
- splitChunks: true
678
- }
679
- }
680
- },
681
-
682
- test: {
683
- logging: {
684
- level: 'error' as LogLevel,
685
- format: 'json' as LogFormat
686
- },
687
- server: {
688
- port: 0 // Use random available port
689
- },
690
- client: {
691
- port: 0 // Use random available port
692
- }
693
- }
694
- } as const