@morojs/moro 1.0.0 → 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.
- package/README.md +1 -1
- package/dist/core/config/index.d.ts +5 -5
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/loader.d.ts +1 -1
- package/dist/core/config/loader.js +58 -82
- package/dist/core/config/loader.js.map +1 -1
- package/dist/core/config/schema.d.ts +1 -1
- package/dist/core/config/schema.js +52 -111
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +2 -2
- package/dist/core/config/utils.js +18 -18
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.d.ts +1 -1
- package/dist/core/database/adapters/drizzle.js +39 -55
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.d.ts +7 -7
- package/dist/core/database/adapters/index.js +11 -11
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -1
- package/dist/core/database/adapters/mongodb.js +19 -23
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -1
- package/dist/core/database/adapters/mysql.js +31 -27
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +1 -1
- package/dist/core/database/adapters/postgresql.js +27 -35
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +1 -1
- package/dist/core/database/adapters/redis.js +24 -24
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.d.ts +1 -1
- package/dist/core/database/adapters/sqlite.js +36 -36
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.d.ts +2 -2
- package/dist/core/docs/index.d.ts +7 -7
- package/dist/core/docs/index.js +13 -15
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.d.ts +5 -5
- package/dist/core/docs/openapi-generator.js +93 -94
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/simple-docs.d.ts +1 -1
- package/dist/core/docs/simple-docs.js +25 -28
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.d.ts +2 -2
- package/dist/core/docs/swagger-ui.js +46 -51
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.d.ts +1 -1
- package/dist/core/docs/zod-to-openapi.js +115 -125
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.d.ts +1 -1
- package/dist/core/events/event-bus.js +15 -21
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.d.ts +2 -2
- package/dist/core/framework.d.ts +5 -5
- package/dist/core/framework.js +55 -60
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +2 -2
- package/dist/core/http/http-server.js +228 -261
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/index.d.ts +3 -3
- package/dist/core/http/router.d.ts +1 -1
- package/dist/core/http/router.js +15 -17
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/logger/filters.d.ts +1 -1
- package/dist/core/logger/filters.js +16 -16
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +3 -3
- package/dist/core/logger/logger.d.ts +1 -1
- package/dist/core/logger/logger.js +48 -59
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.d.ts +4 -4
- package/dist/core/logger/outputs.js +16 -20
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.js +19 -19
- package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cache/index.js +3 -3
- package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.js +5 -5
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.js +18 -18
- package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.js +8 -8
- package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +14 -14
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +13 -15
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cdn/index.js +3 -3
- package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
- package/dist/core/middleware/built-in/auth.d.ts +1 -1
- package/dist/core/middleware/built-in/auth.js +14 -14
- package/dist/core/middleware/built-in/cache.d.ts +2 -2
- package/dist/core/middleware/built-in/cache.js +43 -45
- package/dist/core/middleware/built-in/cache.js.map +1 -1
- package/dist/core/middleware/built-in/cdn.d.ts +2 -2
- package/dist/core/middleware/built-in/cdn.js +27 -29
- package/dist/core/middleware/built-in/cdn.js.map +1 -1
- package/dist/core/middleware/built-in/cookie.d.ts +2 -2
- package/dist/core/middleware/built-in/cookie.js +17 -17
- package/dist/core/middleware/built-in/cookie.js.map +1 -1
- package/dist/core/middleware/built-in/cors.d.ts +1 -1
- package/dist/core/middleware/built-in/cors.js +13 -13
- package/dist/core/middleware/built-in/csp.d.ts +1 -1
- package/dist/core/middleware/built-in/csp.js +22 -25
- package/dist/core/middleware/built-in/csp.js.map +1 -1
- package/dist/core/middleware/built-in/csrf.d.ts +1 -1
- package/dist/core/middleware/built-in/csrf.js +21 -24
- package/dist/core/middleware/built-in/csrf.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker.js +2 -2
- package/dist/core/middleware/built-in/index.d.ts +14 -14
- package/dist/core/middleware/built-in/performance-monitor.js +2 -2
- package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
- package/dist/core/middleware/built-in/rate-limit.js +12 -12
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/session.d.ts +5 -5
- package/dist/core/middleware/built-in/session.js +35 -38
- package/dist/core/middleware/built-in/session.js.map +1 -1
- package/dist/core/middleware/built-in/sse.d.ts +1 -1
- package/dist/core/middleware/built-in/sse.js +20 -22
- package/dist/core/middleware/built-in/sse.js.map +1 -1
- package/dist/core/middleware/built-in/validation.d.ts +1 -1
- package/dist/core/middleware/built-in/validation.js +13 -13
- package/dist/core/middleware/index.d.ts +5 -5
- package/dist/core/middleware/index.js +16 -16
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +2 -2
- package/dist/core/modules/auto-discovery.js +12 -13
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.d.ts +2 -2
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.d.ts +3 -3
- package/dist/core/modules/modules.js +3 -6
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/index.d.ts +2 -2
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.d.ts +2 -2
- package/dist/core/networking/service-discovery.js +27 -27
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-manager.d.ts +3 -3
- package/dist/core/networking/websocket-manager.js +15 -16
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/routing/app-integration.d.ts +2 -2
- package/dist/core/routing/app-integration.js +13 -13
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +3 -3
- package/dist/core/routing/index.js +43 -52
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
- package/dist/core/runtime/aws-lambda-adapter.js +14 -16
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.d.ts +2 -2
- package/dist/core/runtime/base-adapter.js +11 -12
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
- package/dist/core/runtime/cloudflare-workers-adapter.js +20 -21
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.d.ts +9 -9
- package/dist/core/runtime/index.js +4 -4
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.d.ts +5 -5
- package/dist/core/runtime/node-adapter.js +35 -35
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
- package/dist/core/runtime/vercel-edge-adapter.js +12 -15
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.js +6 -6
- package/dist/core/utilities/container.d.ts +1 -1
- package/dist/core/utilities/container.js +17 -22
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +3 -3
- package/dist/core/utilities/hooks.js +11 -11
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.d.ts +4 -4
- package/dist/core/validation/index.d.ts +3 -3
- package/dist/core/validation/index.js +15 -15
- package/dist/core/validation/index.js.map +1 -1
- package/dist/index.d.ts +41 -30
- package/dist/index.js +50 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +14 -14
- package/dist/moro.js +79 -88
- package/dist/moro.js.map +1 -1
- package/dist/types/cache.d.ts +1 -1
- package/dist/types/core.d.ts +2 -2
- package/dist/types/events.d.ts +19 -19
- package/dist/types/hooks.d.ts +1 -1
- package/dist/types/http.d.ts +2 -2
- package/dist/types/logger.d.ts +3 -3
- package/dist/types/module.d.ts +2 -2
- package/dist/types/runtime.d.ts +2 -2
- package/dist/types/session.d.ts +4 -4
- package/package.json +183 -165
- package/src/core/config/index.ts +7 -9
- package/src/core/config/loader.ts +86 -158
- package/src/core/config/schema.ts +59 -122
- package/src/core/config/utils.ts +27 -45
- package/src/core/database/adapters/drizzle.ts +53 -75
- package/src/core/database/adapters/index.ts +26 -29
- package/src/core/database/adapters/mongodb.ts +31 -54
- package/src/core/database/adapters/mysql.ts +40 -50
- package/src/core/database/adapters/postgresql.ts +32 -42
- package/src/core/database/adapters/redis.ts +31 -36
- package/src/core/database/adapters/sqlite.ts +43 -51
- package/src/core/database/index.ts +2 -2
- package/src/core/docs/index.ts +25 -39
- package/src/core/docs/openapi-generator.ts +104 -117
- package/src/core/docs/simple-docs.ts +29 -39
- package/src/core/docs/swagger-ui.ts +57 -76
- package/src/core/docs/zod-to-openapi.ts +121 -153
- package/src/core/events/event-bus.ts +22 -45
- package/src/core/events/index.ts +2 -2
- package/src/core/framework.ts +119 -197
- package/src/core/http/http-server.ts +260 -360
- package/src/core/http/index.ts +3 -8
- package/src/core/http/router.ts +19 -31
- package/src/core/logger/filters.ts +19 -22
- package/src/core/logger/index.ts +3 -3
- package/src/core/logger/logger.ts +59 -100
- package/src/core/logger/outputs.ts +23 -27
- package/src/core/middleware/built-in/adapters/cache/file.ts +21 -23
- package/src/core/middleware/built-in/adapters/cache/index.ts +11 -14
- package/src/core/middleware/built-in/adapters/cache/memory.ts +7 -7
- package/src/core/middleware/built-in/adapters/cache/redis.ts +21 -24
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +10 -18
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +19 -36
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +17 -26
- package/src/core/middleware/built-in/adapters/cdn/index.ts +10 -10
- package/src/core/middleware/built-in/adapters/index.ts +4 -4
- package/src/core/middleware/built-in/auth.ts +16 -16
- package/src/core/middleware/built-in/cache.ts +50 -67
- package/src/core/middleware/built-in/cdn.ts +34 -61
- package/src/core/middleware/built-in/cookie.ts +23 -28
- package/src/core/middleware/built-in/cors.ts +17 -17
- package/src/core/middleware/built-in/csp.ts +25 -31
- package/src/core/middleware/built-in/csrf.ts +24 -29
- package/src/core/middleware/built-in/error-tracker.ts +3 -3
- package/src/core/middleware/built-in/index.ts +28 -28
- package/src/core/middleware/built-in/performance-monitor.ts +4 -4
- package/src/core/middleware/built-in/rate-limit.ts +15 -15
- package/src/core/middleware/built-in/request-logger.ts +1 -3
- package/src/core/middleware/built-in/session.ts +47 -70
- package/src/core/middleware/built-in/sse.ts +23 -28
- package/src/core/middleware/built-in/validation.ts +15 -15
- package/src/core/middleware/index.ts +26 -37
- package/src/core/modules/auto-discovery.ts +21 -31
- package/src/core/modules/index.ts +2 -5
- package/src/core/modules/modules.ts +11 -20
- package/src/core/networking/index.ts +2 -6
- package/src/core/networking/service-discovery.ts +41 -61
- package/src/core/networking/websocket-manager.ts +27 -36
- package/src/core/routing/app-integration.ts +19 -32
- package/src/core/routing/index.ts +57 -88
- package/src/core/runtime/aws-lambda-adapter.ts +20 -30
- package/src/core/runtime/base-adapter.ts +17 -27
- package/src/core/runtime/cloudflare-workers-adapter.ts +28 -42
- package/src/core/runtime/index.ts +21 -33
- package/src/core/runtime/node-adapter.ts +59 -73
- package/src/core/runtime/vercel-edge-adapter.ts +18 -29
- package/src/core/utilities/circuit-breaker.ts +7 -7
- package/src/core/utilities/container.ts +52 -89
- package/src/core/utilities/hooks.ts +17 -23
- package/src/core/utilities/index.ts +4 -4
- package/src/core/validation/index.ts +25 -51
- package/src/index.ts +104 -60
- package/src/moro.ts +119 -191
- package/src/types/cache.ts +1 -1
- package/src/types/core.ts +2 -2
- package/src/types/database.ts +2 -10
- package/src/types/events.ts +23 -31
- package/src/types/hooks.ts +1 -1
- package/src/types/http.ts +5 -8
- package/src/types/logger.ts +7 -23
- package/src/types/module.ts +2 -2
- package/src/types/runtime.ts +6 -21
- package/src/types/session.ts +4 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Functional Validation System for Moro Framework
|
|
2
2
|
// Elegant, type-safe validation using Zod with functional composition
|
|
3
3
|
|
|
4
|
-
import { z, ZodSchema, ZodError } from
|
|
5
|
-
import { HttpRequest, HttpResponse } from
|
|
6
|
-
import { createFrameworkLogger } from
|
|
4
|
+
import { z, ZodSchema, ZodError } from 'zod';
|
|
5
|
+
import { HttpRequest, HttpResponse } from '../http';
|
|
6
|
+
import { createFrameworkLogger } from '../logger';
|
|
7
7
|
|
|
8
|
-
const logger = createFrameworkLogger(
|
|
8
|
+
const logger = createFrameworkLogger('Validation');
|
|
9
9
|
|
|
10
10
|
// Validation configuration interface
|
|
11
11
|
export interface ValidationConfig {
|
|
@@ -39,10 +39,7 @@ export interface ValidatedRequest<T = any> extends HttpRequest {
|
|
|
39
39
|
// Main validation wrapper function
|
|
40
40
|
export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
41
41
|
config: ValidationConfig,
|
|
42
|
-
handler: (
|
|
43
|
-
req: ValidatedRequest<TBody>,
|
|
44
|
-
res: HttpResponse,
|
|
45
|
-
) => any | Promise<any>,
|
|
42
|
+
handler: (req: ValidatedRequest<TBody>, res: HttpResponse) => any | Promise<any>
|
|
46
43
|
) {
|
|
47
44
|
return async (req: HttpRequest, res: HttpResponse): Promise<any> => {
|
|
48
45
|
try {
|
|
@@ -50,9 +47,9 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
50
47
|
|
|
51
48
|
// Validate body
|
|
52
49
|
if (config.body) {
|
|
53
|
-
const result = await validateField(config.body, req.body,
|
|
50
|
+
const result = await validateField(config.body, req.body, 'body');
|
|
54
51
|
if (!result.success) {
|
|
55
|
-
return sendValidationError(res, result.errors!,
|
|
52
|
+
return sendValidationError(res, result.errors!, 'body');
|
|
56
53
|
}
|
|
57
54
|
validatedReq.validatedBody = result.data;
|
|
58
55
|
validatedReq.body = result.data; // Also update original body for compatibility
|
|
@@ -60,9 +57,9 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
60
57
|
|
|
61
58
|
// Validate query parameters
|
|
62
59
|
if (config.query) {
|
|
63
|
-
const result = await validateField(config.query, req.query,
|
|
60
|
+
const result = await validateField(config.query, req.query, 'query');
|
|
64
61
|
if (!result.success) {
|
|
65
|
-
return sendValidationError(res, result.errors!,
|
|
62
|
+
return sendValidationError(res, result.errors!, 'query');
|
|
66
63
|
}
|
|
67
64
|
validatedReq.validatedQuery = result.data;
|
|
68
65
|
validatedReq.query = result.data; // Also update original query for compatibility
|
|
@@ -70,9 +67,9 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
70
67
|
|
|
71
68
|
// Validate path parameters
|
|
72
69
|
if (config.params) {
|
|
73
|
-
const result = await validateField(config.params, req.params,
|
|
70
|
+
const result = await validateField(config.params, req.params, 'params');
|
|
74
71
|
if (!result.success) {
|
|
75
|
-
return sendValidationError(res, result.errors!,
|
|
72
|
+
return sendValidationError(res, result.errors!, 'params');
|
|
76
73
|
}
|
|
77
74
|
validatedReq.validatedParams = result.data;
|
|
78
75
|
validatedReq.params = result.data; // Also update original params for compatibility
|
|
@@ -80,18 +77,14 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
80
77
|
|
|
81
78
|
// Validate headers
|
|
82
79
|
if (config.headers) {
|
|
83
|
-
const result = await validateField(
|
|
84
|
-
config.headers,
|
|
85
|
-
req.headers,
|
|
86
|
-
"headers",
|
|
87
|
-
);
|
|
80
|
+
const result = await validateField(config.headers, req.headers, 'headers');
|
|
88
81
|
if (!result.success) {
|
|
89
|
-
return sendValidationError(res, result.errors!,
|
|
82
|
+
return sendValidationError(res, result.errors!, 'headers');
|
|
90
83
|
}
|
|
91
84
|
validatedReq.validatedHeaders = result.data;
|
|
92
85
|
}
|
|
93
86
|
|
|
94
|
-
logger.debug(
|
|
87
|
+
logger.debug('Request validation passed', 'ValidationSuccess', {
|
|
95
88
|
path: req.path,
|
|
96
89
|
method: req.method,
|
|
97
90
|
validatedFields: Object.keys(config),
|
|
@@ -100,7 +93,7 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
100
93
|
// Execute the handler with validated request
|
|
101
94
|
return await handler(validatedReq, res);
|
|
102
95
|
} catch (error) {
|
|
103
|
-
logger.error(
|
|
96
|
+
logger.error('Validation wrapper error', 'ValidationError', {
|
|
104
97
|
error: error instanceof Error ? error.message : String(error),
|
|
105
98
|
path: req.path,
|
|
106
99
|
method: req.method,
|
|
@@ -109,7 +102,7 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
109
102
|
if (!res.headersSent) {
|
|
110
103
|
res.status(500).json({
|
|
111
104
|
success: false,
|
|
112
|
-
error:
|
|
105
|
+
error: 'Internal validation error',
|
|
113
106
|
requestId: req.requestId,
|
|
114
107
|
});
|
|
115
108
|
}
|
|
@@ -121,7 +114,7 @@ export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
|
121
114
|
async function validateField(
|
|
122
115
|
schema: ZodSchema,
|
|
123
116
|
data: any,
|
|
124
|
-
fieldName: string
|
|
117
|
+
fieldName: string
|
|
125
118
|
): Promise<ValidationResult> {
|
|
126
119
|
try {
|
|
127
120
|
const validated = await schema.parseAsync(data);
|
|
@@ -132,12 +125,12 @@ async function validateField(
|
|
|
132
125
|
} catch (error) {
|
|
133
126
|
if (error instanceof ZodError) {
|
|
134
127
|
const errors: ValidationError[] = error.issues.map((err: any) => ({
|
|
135
|
-
field: err.path.length > 0 ? err.path.join(
|
|
128
|
+
field: err.path.length > 0 ? err.path.join('.') : fieldName,
|
|
136
129
|
message: err.message,
|
|
137
130
|
code: err.code,
|
|
138
131
|
}));
|
|
139
132
|
|
|
140
|
-
logger.debug(
|
|
133
|
+
logger.debug('Field validation failed', 'ValidationFailed', {
|
|
141
134
|
field: fieldName,
|
|
142
135
|
errors: errors.length,
|
|
143
136
|
details: errors,
|
|
@@ -155,12 +148,8 @@ async function validateField(
|
|
|
155
148
|
}
|
|
156
149
|
|
|
157
150
|
// Send validation error response
|
|
158
|
-
function sendValidationError(
|
|
159
|
-
|
|
160
|
-
errors: ValidationError[],
|
|
161
|
-
field: string,
|
|
162
|
-
): void {
|
|
163
|
-
logger.debug("Sending validation error response", "ValidationResponse", {
|
|
151
|
+
function sendValidationError(res: HttpResponse, errors: ValidationError[], field: string): void {
|
|
152
|
+
logger.debug('Sending validation error response', 'ValidationResponse', {
|
|
164
153
|
field,
|
|
165
154
|
errorCount: errors.length,
|
|
166
155
|
});
|
|
@@ -175,34 +164,19 @@ function sendValidationError(
|
|
|
175
164
|
|
|
176
165
|
// Convenience functions for single-field validation
|
|
177
166
|
export function body<T>(schema: ZodSchema<T>) {
|
|
178
|
-
return (
|
|
179
|
-
handler: (
|
|
180
|
-
req: ValidatedRequest<T>,
|
|
181
|
-
res: HttpResponse,
|
|
182
|
-
) => any | Promise<any>,
|
|
183
|
-
) => {
|
|
167
|
+
return (handler: (req: ValidatedRequest<T>, res: HttpResponse) => any | Promise<any>) => {
|
|
184
168
|
return validate({ body: schema }, handler);
|
|
185
169
|
};
|
|
186
170
|
}
|
|
187
171
|
|
|
188
172
|
export function query<T>(schema: ZodSchema<T>) {
|
|
189
|
-
return (
|
|
190
|
-
handler: (
|
|
191
|
-
req: ValidatedRequest<any>,
|
|
192
|
-
res: HttpResponse,
|
|
193
|
-
) => any | Promise<any>,
|
|
194
|
-
) => {
|
|
173
|
+
return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
|
|
195
174
|
return validate({ query: schema }, handler);
|
|
196
175
|
};
|
|
197
176
|
}
|
|
198
177
|
|
|
199
178
|
export function params<T>(schema: ZodSchema<T>) {
|
|
200
|
-
return (
|
|
201
|
-
handler: (
|
|
202
|
-
req: ValidatedRequest<any>,
|
|
203
|
-
res: HttpResponse,
|
|
204
|
-
) => any | Promise<any>,
|
|
205
|
-
) => {
|
|
179
|
+
return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
|
|
206
180
|
return validate({ params: schema }, handler);
|
|
207
181
|
};
|
|
208
182
|
}
|
|
@@ -213,4 +187,4 @@ export function combineSchemas(schemas: ValidationConfig): ValidationConfig {
|
|
|
213
187
|
}
|
|
214
188
|
|
|
215
189
|
// Re-export Zod for convenience
|
|
216
|
-
export { z } from
|
|
190
|
+
export { z } from 'zod';
|
package/src/index.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// MoroJS Framework - Main Entry Point
|
|
2
2
|
export {
|
|
3
3
|
Moro,
|
|
4
|
+
Moro as MoroCore,
|
|
4
5
|
createApp,
|
|
5
6
|
createAppNode,
|
|
6
7
|
createAppEdge,
|
|
7
8
|
createAppLambda,
|
|
8
9
|
createAppWorker,
|
|
9
|
-
} from
|
|
10
|
+
} from './moro';
|
|
10
11
|
|
|
11
|
-
export type { MoroOptions } from
|
|
12
|
+
export type { MoroOptions } from './core/framework';
|
|
12
13
|
|
|
13
14
|
// Runtime system exports
|
|
14
15
|
export type {
|
|
@@ -16,7 +17,7 @@ export type {
|
|
|
16
17
|
RuntimeAdapter,
|
|
17
18
|
RuntimeConfig,
|
|
18
19
|
RuntimeHttpResponse,
|
|
19
|
-
} from
|
|
20
|
+
} from './types/runtime';
|
|
20
21
|
|
|
21
22
|
export {
|
|
22
23
|
NodeRuntimeAdapter,
|
|
@@ -28,60 +29,77 @@ export {
|
|
|
28
29
|
createEdgeHandler,
|
|
29
30
|
createLambdaHandler,
|
|
30
31
|
createWorkerHandler,
|
|
31
|
-
} from
|
|
32
|
+
} from './core/runtime';
|
|
32
33
|
|
|
33
34
|
// Runtime-specific types
|
|
34
|
-
export type {
|
|
35
|
-
|
|
36
|
-
LambdaContext,
|
|
37
|
-
LambdaResponse,
|
|
38
|
-
} from "./core/runtime/aws-lambda-adapter";
|
|
39
|
-
export type {
|
|
40
|
-
WorkersEnv,
|
|
41
|
-
WorkersContext,
|
|
42
|
-
} from "./core/runtime/cloudflare-workers-adapter";
|
|
35
|
+
export type { LambdaEvent, LambdaContext, LambdaResponse } from './core/runtime/aws-lambda-adapter';
|
|
36
|
+
export type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter';
|
|
43
37
|
|
|
44
38
|
// Core exports
|
|
45
|
-
export { MoroHttpServer, middleware as httpMiddleware } from
|
|
39
|
+
export { MoroHttpServer, middleware as httpMiddleware } from './core/http';
|
|
40
|
+
export { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in';
|
|
41
|
+
|
|
42
|
+
// Networking System
|
|
46
43
|
export {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
export { createFrameworkLogger, logger } from "./core/logger";
|
|
44
|
+
WebSocketManager,
|
|
45
|
+
ServiceRegistry,
|
|
46
|
+
ServiceInfo,
|
|
47
|
+
ServiceDiscoveryOptions,
|
|
48
|
+
} from './core/networking';
|
|
53
49
|
|
|
54
|
-
//
|
|
50
|
+
// Utilities and Container System
|
|
55
51
|
export {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
Container,
|
|
53
|
+
FunctionalContainer,
|
|
54
|
+
ServiceScope,
|
|
55
|
+
ServiceLifecycle,
|
|
56
|
+
withLogging,
|
|
57
|
+
withCaching,
|
|
58
|
+
withRetry,
|
|
59
|
+
withTimeout,
|
|
60
|
+
CircuitBreaker,
|
|
61
|
+
HookManager,
|
|
62
|
+
HOOK_EVENTS,
|
|
63
|
+
middleware,
|
|
64
|
+
} from './core/utilities';
|
|
65
|
+
|
|
66
|
+
// Event System
|
|
67
|
+
export { MoroEventBus } from './core/events';
|
|
68
|
+
export type {
|
|
69
|
+
EventContext,
|
|
70
|
+
EventPayload,
|
|
71
|
+
EventBusOptions,
|
|
72
|
+
ModuleEventBus,
|
|
73
|
+
GlobalEventBus,
|
|
74
|
+
EventMetrics,
|
|
75
|
+
SystemEvents,
|
|
76
|
+
EventHandler,
|
|
77
|
+
} from './types/events';
|
|
78
|
+
|
|
79
|
+
// Logger System
|
|
80
|
+
export { createFrameworkLogger, logger } from './core/logger';
|
|
81
|
+
|
|
82
|
+
// Validation System (Zod-based)
|
|
83
|
+
export { validate, body, query, params, combineSchemas, z } from './core/validation';
|
|
63
84
|
export type {
|
|
64
85
|
ValidationConfig,
|
|
65
86
|
ValidationResult,
|
|
66
87
|
ValidationError,
|
|
67
88
|
ValidatedRequest,
|
|
68
|
-
} from
|
|
89
|
+
} from './core/validation';
|
|
69
90
|
|
|
70
91
|
// Module System
|
|
71
|
-
export {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} from
|
|
92
|
+
export {
|
|
93
|
+
defineModule,
|
|
94
|
+
ModuleLoader,
|
|
95
|
+
ModuleDiscovery,
|
|
96
|
+
autoDiscoverModuleDirectories,
|
|
97
|
+
} from './core/modules';
|
|
98
|
+
export type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig } from './types/module';
|
|
78
99
|
|
|
79
100
|
// Intelligent Routing System
|
|
80
|
-
export { createRoute, defineRoute, EXECUTION_PHASES } from
|
|
81
|
-
export {
|
|
82
|
-
IntelligentRoutingManager,
|
|
83
|
-
RouteRegistry,
|
|
84
|
-
} from "./core/routing/app-integration";
|
|
101
|
+
export { createRoute, defineRoute, EXECUTION_PHASES } from './core/routing';
|
|
102
|
+
export { IntelligentRoutingManager, RouteRegistry } from './core/routing/app-integration';
|
|
85
103
|
export type {
|
|
86
104
|
RouteBuilder,
|
|
87
105
|
RouteSchema,
|
|
@@ -92,29 +110,55 @@ export type {
|
|
|
92
110
|
CacheConfig,
|
|
93
111
|
MiddlewarePhases,
|
|
94
112
|
ExecutionPhase,
|
|
95
|
-
} from
|
|
113
|
+
} from './core/routing';
|
|
96
114
|
|
|
97
|
-
//
|
|
98
|
-
|
|
115
|
+
// Documentation System
|
|
116
|
+
export {
|
|
117
|
+
DocumentationSystem,
|
|
118
|
+
AppDocumentationManager,
|
|
119
|
+
createDocumentationSystem,
|
|
120
|
+
generateDocsFromIntelligentRoutes,
|
|
121
|
+
} from './core/docs';
|
|
122
|
+
export type { DocsConfig } from './core/docs';
|
|
123
|
+
|
|
124
|
+
// Configuration utilities
|
|
125
|
+
export {
|
|
126
|
+
getConfig,
|
|
127
|
+
createModuleConfig,
|
|
128
|
+
getEnvVar,
|
|
129
|
+
getEnvArray,
|
|
130
|
+
getEnvJson,
|
|
131
|
+
isDevelopment,
|
|
132
|
+
isProduction,
|
|
133
|
+
isStaging,
|
|
134
|
+
requireEnvVars,
|
|
135
|
+
envVar,
|
|
136
|
+
getConfigValue,
|
|
137
|
+
} from './core/config/utils';
|
|
138
|
+
|
|
139
|
+
export { initializeConfig, getGlobalConfig, isConfigInitialized } from './core/config';
|
|
140
|
+
|
|
141
|
+
// Middleware System
|
|
142
|
+
export { MiddlewareManager } from './core/middleware';
|
|
143
|
+
export type { MiddlewareInterface, MoroMiddleware } from './core/middleware';
|
|
99
144
|
|
|
100
145
|
// Types
|
|
101
|
-
export type * from
|
|
102
|
-
export type * from
|
|
103
|
-
export type * from
|
|
104
|
-
export type * from
|
|
105
|
-
export type * from
|
|
106
|
-
export type * from
|
|
146
|
+
export type * from './types/core';
|
|
147
|
+
export type * from './types/http';
|
|
148
|
+
export type * from './types/hooks';
|
|
149
|
+
export type * from './types/cache';
|
|
150
|
+
export type * from './types/cdn';
|
|
151
|
+
export type * from './types/database';
|
|
152
|
+
export type * from './types/logger';
|
|
153
|
+
export type * from './types/session';
|
|
154
|
+
export type * from './types/discovery';
|
|
107
155
|
|
|
108
156
|
// Adapters
|
|
109
|
-
export * from
|
|
110
|
-
export * from
|
|
157
|
+
export * from './core/middleware/built-in/adapters';
|
|
158
|
+
export * from './core/database/adapters';
|
|
111
159
|
|
|
112
160
|
// Re-export commonly used types for convenience
|
|
113
|
-
export type { CacheAdapter, CacheOptions, CacheStrategy } from
|
|
114
|
-
export type { CDNAdapter, CDNOptions } from
|
|
115
|
-
export type {
|
|
116
|
-
|
|
117
|
-
DatabaseTransaction,
|
|
118
|
-
DatabaseConfig,
|
|
119
|
-
} from "./types/database";
|
|
120
|
-
export type { CookieOptions } from "./types/http";
|
|
161
|
+
export type { CacheAdapter, CacheOptions, CacheStrategy } from './types/cache';
|
|
162
|
+
export type { CDNAdapter, CDNOptions } from './types/cdn';
|
|
163
|
+
export type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig } from './types/database';
|
|
164
|
+
export type { CookieOptions } from './types/http';
|