@morojs/moro 1.3.0 → 1.5.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 (86) hide show
  1. package/README.md +61 -7
  2. package/dist/core/config/index.d.ts +0 -1
  3. package/dist/core/config/index.js +0 -4
  4. package/dist/core/config/index.js.map +1 -1
  5. package/dist/core/config/loader.js +219 -226
  6. package/dist/core/config/loader.js.map +1 -1
  7. package/dist/core/config/schema.d.ts +30 -335
  8. package/dist/core/config/schema.js +133 -224
  9. package/dist/core/config/schema.js.map +1 -1
  10. package/dist/core/config/utils.d.ts +3 -2
  11. package/dist/core/config/utils.js.map +1 -1
  12. package/dist/core/config/validation.d.ts +17 -0
  13. package/dist/core/config/validation.js +129 -0
  14. package/dist/core/config/validation.js.map +1 -0
  15. package/dist/core/docs/index.js +1 -1
  16. package/dist/core/docs/index.js.map +1 -1
  17. package/dist/core/docs/openapi-generator.js +6 -6
  18. package/dist/core/docs/openapi-generator.js.map +1 -1
  19. package/dist/core/docs/schema-to-openapi.d.ts +7 -0
  20. package/dist/core/docs/schema-to-openapi.js +124 -0
  21. package/dist/core/docs/schema-to-openapi.js.map +1 -0
  22. package/dist/core/docs/simple-docs.js +5 -5
  23. package/dist/core/docs/zod-to-openapi.d.ts +4 -3
  24. package/dist/core/docs/zod-to-openapi.js +28 -0
  25. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  26. package/dist/core/framework.d.ts +29 -6
  27. package/dist/core/framework.js +117 -18
  28. package/dist/core/framework.js.map +1 -1
  29. package/dist/core/networking/adapters/index.d.ts +3 -0
  30. package/dist/core/networking/adapters/index.js +10 -0
  31. package/dist/core/networking/adapters/index.js.map +1 -0
  32. package/dist/core/networking/adapters/socketio-adapter.d.ts +16 -0
  33. package/dist/core/networking/adapters/socketio-adapter.js +244 -0
  34. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -0
  35. package/dist/core/networking/adapters/ws-adapter.d.ts +54 -0
  36. package/dist/core/networking/adapters/ws-adapter.js +383 -0
  37. package/dist/core/networking/adapters/ws-adapter.js.map +1 -0
  38. package/dist/core/networking/websocket-adapter.d.ts +171 -0
  39. package/dist/core/networking/websocket-adapter.js +5 -0
  40. package/dist/core/networking/websocket-adapter.js.map +1 -0
  41. package/dist/core/networking/websocket-manager.d.ts +53 -17
  42. package/dist/core/networking/websocket-manager.js +184 -126
  43. package/dist/core/networking/websocket-manager.js.map +1 -1
  44. package/dist/core/routing/index.d.ts +13 -13
  45. package/dist/core/routing/index.js.map +1 -1
  46. package/dist/core/validation/adapters.d.ts +51 -0
  47. package/dist/core/validation/adapters.js +135 -0
  48. package/dist/core/validation/adapters.js.map +1 -0
  49. package/dist/core/validation/index.d.ts +12 -11
  50. package/dist/core/validation/index.js +32 -26
  51. package/dist/core/validation/index.js.map +1 -1
  52. package/dist/core/validation/schema-interface.d.ts +36 -0
  53. package/dist/core/validation/schema-interface.js +68 -0
  54. package/dist/core/validation/schema-interface.js.map +1 -0
  55. package/dist/index.d.ts +9 -2
  56. package/dist/index.js +23 -4
  57. package/dist/index.js.map +1 -1
  58. package/dist/moro.js +24 -17
  59. package/dist/moro.js.map +1 -1
  60. package/dist/types/config.d.ts +146 -0
  61. package/dist/types/config.js +4 -0
  62. package/dist/types/config.js.map +1 -0
  63. package/package.json +30 -7
  64. package/src/core/config/index.ts +0 -3
  65. package/src/core/config/loader.ts +571 -247
  66. package/src/core/config/schema.ts +146 -279
  67. package/src/core/config/utils.ts +1 -2
  68. package/src/core/config/validation.ts +140 -0
  69. package/src/core/docs/index.ts +1 -1
  70. package/src/core/docs/openapi-generator.ts +7 -6
  71. package/src/core/docs/schema-to-openapi.ts +148 -0
  72. package/src/core/docs/simple-docs.ts +5 -5
  73. package/src/core/docs/zod-to-openapi.ts +52 -20
  74. package/src/core/framework.ts +121 -28
  75. package/src/core/networking/adapters/index.ts +16 -0
  76. package/src/core/networking/adapters/socketio-adapter.ts +252 -0
  77. package/src/core/networking/adapters/ws-adapter.ts +425 -0
  78. package/src/core/networking/websocket-adapter.ts +217 -0
  79. package/src/core/networking/websocket-manager.ts +201 -143
  80. package/src/core/routing/index.ts +13 -13
  81. package/src/core/validation/adapters.ts +147 -0
  82. package/src/core/validation/index.ts +54 -38
  83. package/src/core/validation/schema-interface.ts +100 -0
  84. package/src/index.ts +36 -3
  85. package/src/moro.ts +27 -17
  86. package/src/types/config.ts +157 -0
@@ -0,0 +1,157 @@
1
+ // TypeScript-based Configuration Types for Moro Framework
2
+
3
+ export interface ServerConfig {
4
+ port: number;
5
+ host: string;
6
+ environment: 'development' | 'staging' | 'production';
7
+ maxConnections: number;
8
+ timeout: number;
9
+ }
10
+
11
+ export interface ServiceDiscoveryConfig {
12
+ enabled: boolean;
13
+ type: 'memory' | 'consul' | 'kubernetes';
14
+ consulUrl: string;
15
+ kubernetesNamespace: string;
16
+ healthCheckInterval: number;
17
+ retryAttempts: number;
18
+ }
19
+
20
+ export interface DatabaseConfig {
21
+ url?: string;
22
+ redis: {
23
+ url: string;
24
+ maxRetries: number;
25
+ retryDelay: number;
26
+ keyPrefix: string;
27
+ };
28
+ mysql?: {
29
+ host: string;
30
+ port: number;
31
+ database?: string;
32
+ username?: string;
33
+ password?: string;
34
+ connectionLimit: number;
35
+ acquireTimeout: number;
36
+ timeout: number;
37
+ };
38
+ }
39
+
40
+ export interface ModuleDefaultsConfig {
41
+ cache: {
42
+ enabled: boolean;
43
+ defaultTtl: number;
44
+ maxSize: number;
45
+ strategy: 'lru' | 'lfu' | 'fifo';
46
+ };
47
+ rateLimit: {
48
+ enabled: boolean;
49
+ defaultRequests: number;
50
+ defaultWindow: number;
51
+ skipSuccessfulRequests: boolean;
52
+ skipFailedRequests: boolean;
53
+ };
54
+ validation: {
55
+ enabled: boolean;
56
+ stripUnknown: boolean;
57
+ abortEarly: boolean;
58
+ };
59
+ }
60
+
61
+ export interface LoggingConfig {
62
+ level: 'debug' | 'info' | 'warn' | 'error' | 'fatal';
63
+ format: 'pretty' | 'json' | 'compact';
64
+ enableColors: boolean;
65
+ enableTimestamp: boolean;
66
+ enableContext: boolean;
67
+ outputs: {
68
+ console: boolean;
69
+ file: {
70
+ enabled: boolean;
71
+ path: string;
72
+ maxSize: string;
73
+ maxFiles: number;
74
+ };
75
+ webhook: {
76
+ enabled: boolean;
77
+ url?: string;
78
+ headers: Record<string, string>;
79
+ };
80
+ };
81
+ }
82
+
83
+ export interface SecurityConfig {
84
+ cors: {
85
+ enabled: boolean;
86
+ origin: string | string[] | boolean;
87
+ methods: string[];
88
+ allowedHeaders: string[];
89
+ credentials: boolean;
90
+ };
91
+ helmet: {
92
+ enabled: boolean;
93
+ contentSecurityPolicy: boolean;
94
+ hsts: boolean;
95
+ noSniff: boolean;
96
+ frameguard: boolean;
97
+ };
98
+ rateLimit: {
99
+ global: {
100
+ enabled: boolean;
101
+ requests: number;
102
+ window: number;
103
+ };
104
+ };
105
+ }
106
+
107
+ export interface ExternalServicesConfig {
108
+ stripe?: {
109
+ secretKey?: string;
110
+ publishableKey?: string;
111
+ webhookSecret?: string;
112
+ apiVersion: string;
113
+ };
114
+ paypal?: {
115
+ clientId?: string;
116
+ clientSecret?: string;
117
+ webhookId?: string;
118
+ environment: 'sandbox' | 'production';
119
+ };
120
+ smtp?: {
121
+ host?: string;
122
+ port: number;
123
+ secure: boolean;
124
+ username?: string;
125
+ password?: string;
126
+ };
127
+ }
128
+
129
+ export interface PerformanceConfig {
130
+ compression: {
131
+ enabled: boolean;
132
+ level: number;
133
+ threshold: number;
134
+ };
135
+ circuitBreaker: {
136
+ enabled: boolean;
137
+ failureThreshold: number;
138
+ resetTimeout: number;
139
+ monitoringPeriod: number;
140
+ };
141
+ clustering: {
142
+ enabled: boolean;
143
+ workers: number | 'auto';
144
+ };
145
+ }
146
+
147
+ // Main configuration interface
148
+ export interface AppConfig {
149
+ server: ServerConfig;
150
+ serviceDiscovery: ServiceDiscoveryConfig;
151
+ database: DatabaseConfig;
152
+ modules: ModuleDefaultsConfig;
153
+ logging: LoggingConfig;
154
+ security: SecurityConfig;
155
+ external: ExternalServicesConfig;
156
+ performance: PerformanceConfig;
157
+ }