@morojs/moro 1.6.1 → 1.6.3
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 +74 -256
- package/dist/core/auth/morojs-adapter.js +20 -20
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.d.ts +44 -0
- package/dist/core/config/config-manager.js +104 -0
- package/dist/core/config/config-manager.js.map +1 -0
- package/dist/core/config/config-sources.d.ts +21 -0
- package/dist/core/config/config-sources.js +503 -0
- package/dist/core/config/config-sources.js.map +1 -0
- package/dist/core/config/config-validator.d.ts +21 -0
- package/dist/core/config/config-validator.js +791 -0
- package/dist/core/config/config-validator.js.map +1 -0
- package/dist/core/config/file-loader.d.ts +1 -6
- package/dist/core/config/file-loader.js +21 -249
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +41 -12
- package/dist/core/config/index.js +65 -54
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.d.ts +2 -2
- package/dist/core/config/schema.js +55 -44
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +10 -3
- package/dist/core/config/utils.js +31 -58
- 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 +18 -11
- 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 +19 -29
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +13 -1
- package/dist/core/database/adapters/mongodb.js +46 -10
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +14 -1
- package/dist/core/database/adapters/mysql.js +19 -9
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +12 -2
- package/dist/core/database/adapters/postgresql.js +19 -9
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +12 -1
- package/dist/core/database/adapters/redis.js +48 -13
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.d.ts +3 -1
- package/dist/core/database/adapters/sqlite.js +19 -8
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.d.ts +2 -2
- package/dist/core/database/index.js +2 -18
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.d.ts +9 -9
- package/dist/core/docs/index.js +14 -35
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.d.ts +2 -2
- package/dist/core/docs/openapi-generator.js +11 -16
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.d.ts +2 -2
- package/dist/core/docs/schema-to-openapi.js +5 -11
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.d.ts +1 -1
- package/dist/core/docs/simple-docs.js +4 -9
- 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 +26 -29
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +31 -28
- 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 +7 -11
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.d.ts +2 -2
- package/dist/core/events/index.js +1 -5
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +20 -13
- package/dist/core/framework.js +285 -102
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +59 -7
- package/dist/core/http/http-server.js +202 -185
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/index.d.ts +4 -3
- package/dist/core/http/index.js +3 -8
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +46 -0
- package/dist/core/http/uws-http-server.js +523 -0
- package/dist/core/http/uws-http-server.js.map +1 -0
- package/dist/core/logger/filters.d.ts +1 -1
- package/dist/core/logger/filters.js +20 -23
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +3 -3
- package/dist/core/logger/index.js +2 -24
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +30 -14
- package/dist/core/logger/logger.js +398 -223
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.d.ts +1 -1
- package/dist/core/logger/outputs.js +8 -17
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/auth/core.d.ts +78 -0
- package/dist/core/middleware/built-in/auth/core.js +358 -0
- package/dist/core/middleware/built-in/auth/core.js.map +1 -0
- package/dist/core/middleware/built-in/{auth-helpers.js → auth/helpers.js} +12 -23
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -0
- package/dist/core/middleware/built-in/auth/hook.d.ts +30 -0
- package/dist/core/middleware/built-in/auth/hook.js +99 -0
- package/dist/core/middleware/built-in/auth/hook.js.map +1 -0
- package/dist/core/middleware/built-in/auth/index.d.ts +7 -0
- package/dist/core/middleware/built-in/auth/index.js +15 -0
- package/dist/core/middleware/built-in/auth/index.js.map +1 -0
- package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +118 -0
- package/dist/core/middleware/built-in/auth/jwt-helpers.js +218 -0
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -0
- package/dist/core/middleware/built-in/auth/middleware.d.ts +23 -0
- package/dist/core/middleware/built-in/auth/middleware.js +71 -0
- package/dist/core/middleware/built-in/auth/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/{auth-providers.d.ts → auth/providers.d.ts} +1 -1
- package/dist/core/middleware/built-in/{auth-providers.js → auth/providers.js} +5 -10
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.d.ts +1 -1
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.js +10 -47
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -0
- package/dist/core/middleware/built-in/cache/adapters/cache/index.d.ts +5 -0
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js +21 -0
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.d.ts +1 -1
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.js +3 -7
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.d.ts +3 -1
- package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.js +11 -9
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -0
- package/dist/core/middleware/built-in/cache/adapters/index.d.ts +2 -0
- package/dist/core/middleware/built-in/cache/adapters/index.js +5 -0
- package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -0
- package/dist/core/middleware/built-in/cache/core.d.ts +37 -0
- package/dist/core/middleware/built-in/cache/core.js +87 -0
- package/dist/core/middleware/built-in/cache/core.js.map +1 -0
- package/dist/core/middleware/built-in/cache/hook.d.ts +20 -0
- package/dist/core/middleware/built-in/{cache.js → cache/hook.js} +30 -14
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -0
- package/dist/core/middleware/built-in/cache/index.d.ts +3 -0
- package/dist/core/middleware/built-in/cache/index.js +9 -0
- package/dist/core/middleware/built-in/cache/index.js.map +1 -0
- package/dist/core/middleware/built-in/cache/middleware.d.ts +17 -0
- package/dist/core/middleware/built-in/cache/middleware.js +44 -0
- package/dist/core/middleware/built-in/cache/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.d.ts +1 -1
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.js +3 -7
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.d.ts +1 -1
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.js +3 -7
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -0
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.d.ts +3 -1
- package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.js +12 -10
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.d.ts +5 -0
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js +21 -0
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/adapters/index.d.ts +2 -0
- package/dist/core/middleware/built-in/cdn/adapters/index.js +5 -0
- package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/core.d.ts +43 -0
- package/dist/core/middleware/built-in/cdn/core.js +144 -0
- package/dist/core/middleware/built-in/cdn/core.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/hook.d.ts +22 -0
- package/dist/core/middleware/built-in/cdn/hook.js +70 -0
- package/dist/core/middleware/built-in/cdn/hook.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/index.d.ts +5 -0
- package/dist/core/middleware/built-in/cdn/index.js +11 -0
- package/dist/core/middleware/built-in/cdn/index.js.map +1 -0
- package/dist/core/middleware/built-in/cdn/middleware.d.ts +21 -0
- package/dist/core/middleware/built-in/cdn/middleware.js +52 -0
- package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/cookie/core.d.ts +37 -0
- package/dist/core/middleware/built-in/cookie/core.js +83 -0
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -0
- package/dist/core/middleware/built-in/cookie/hook.d.ts +20 -0
- package/dist/core/middleware/built-in/cookie/hook.js +47 -0
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -0
- package/dist/core/middleware/built-in/cookie/index.d.ts +3 -0
- package/dist/core/middleware/built-in/cookie/index.js +9 -0
- package/dist/core/middleware/built-in/cookie/index.js.map +1 -0
- package/dist/core/middleware/built-in/cookie/middleware.d.ts +17 -0
- package/dist/core/middleware/built-in/cookie/middleware.js +36 -0
- package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/cors/core.d.ts +23 -0
- package/dist/core/middleware/built-in/cors/core.js +51 -0
- package/dist/core/middleware/built-in/cors/core.js.map +1 -0
- package/dist/core/middleware/built-in/cors/hook.d.ts +17 -0
- package/dist/core/middleware/built-in/cors/hook.js +37 -0
- package/dist/core/middleware/built-in/cors/hook.js.map +1 -0
- package/dist/core/middleware/built-in/cors/index.d.ts +3 -0
- package/dist/core/middleware/built-in/cors/index.js +9 -0
- package/dist/core/middleware/built-in/cors/index.js.map +1 -0
- package/dist/core/middleware/built-in/cors/middleware.d.ts +16 -0
- package/dist/core/middleware/built-in/cors/middleware.js +22 -0
- package/dist/core/middleware/built-in/cors/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/csp/core.d.ts +45 -0
- package/dist/core/middleware/built-in/csp/core.js +88 -0
- package/dist/core/middleware/built-in/csp/core.js.map +1 -0
- package/dist/core/middleware/built-in/csp/hook.d.ts +22 -0
- package/dist/core/middleware/built-in/csp/hook.js +47 -0
- package/dist/core/middleware/built-in/csp/hook.js.map +1 -0
- package/dist/core/middleware/built-in/csp/index.d.ts +3 -0
- package/dist/core/middleware/built-in/csp/index.js +9 -0
- package/dist/core/middleware/built-in/csp/index.js.map +1 -0
- package/dist/core/middleware/built-in/csp/middleware.d.ts +19 -0
- package/dist/core/middleware/built-in/csp/middleware.js +29 -0
- package/dist/core/middleware/built-in/csp/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/csrf/core.d.ts +28 -0
- package/dist/core/middleware/built-in/csrf/core.js +69 -0
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -0
- package/dist/core/middleware/built-in/csrf/hook.d.ts +17 -0
- package/dist/core/middleware/built-in/csrf/hook.js +45 -0
- package/dist/core/middleware/built-in/csrf/hook.js.map +1 -0
- package/dist/core/middleware/built-in/csrf/index.d.ts +3 -0
- package/dist/core/middleware/built-in/csrf/index.js +9 -0
- package/dist/core/middleware/built-in/csrf/index.js.map +1 -0
- package/dist/core/middleware/built-in/csrf/middleware.d.ts +16 -0
- package/dist/core/middleware/built-in/csrf/middleware.js +34 -0
- package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/error-tracker/index.d.ts +1 -0
- package/dist/core/middleware/built-in/error-tracker/index.js +4 -0
- package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -0
- package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +12 -0
- package/dist/core/middleware/built-in/error-tracker/middleware.js +26 -0
- package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/index.d.ts +28 -61
- package/dist/core/middleware/built-in/index.js +48 -78
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/index.d.ts +1 -0
- package/dist/core/middleware/built-in/performance-monitor/index.js +4 -0
- package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -0
- package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +12 -0
- package/dist/core/middleware/built-in/performance-monitor/middleware.js +29 -0
- package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/rate-limit/core.d.ts +33 -0
- package/dist/core/middleware/built-in/rate-limit/core.js +86 -0
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -0
- package/dist/core/middleware/built-in/rate-limit/hook.d.ts +20 -0
- package/dist/core/middleware/built-in/{rate-limit.js → rate-limit/hook.js} +24 -22
- package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -0
- package/dist/core/middleware/built-in/rate-limit/index.d.ts +3 -0
- package/dist/core/middleware/built-in/rate-limit/index.js +9 -0
- package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -0
- package/dist/core/middleware/built-in/rate-limit/middleware.d.ts +16 -0
- package/dist/core/middleware/built-in/rate-limit/middleware.js +35 -0
- package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/request-logger/index.d.ts +1 -0
- package/dist/core/middleware/built-in/request-logger/index.js +4 -0
- package/dist/core/middleware/built-in/request-logger/index.js.map +1 -0
- package/dist/core/middleware/built-in/request-logger/middleware.d.ts +12 -0
- package/dist/core/middleware/built-in/request-logger/middleware.js +24 -0
- package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/session/core.d.ts +73 -0
- package/dist/core/middleware/built-in/session/core.js +227 -0
- package/dist/core/middleware/built-in/session/core.js.map +1 -0
- package/dist/core/middleware/built-in/session/hook.d.ts +17 -0
- package/dist/core/middleware/built-in/session/hook.js +53 -0
- package/dist/core/middleware/built-in/session/hook.js.map +1 -0
- package/dist/core/middleware/built-in/session/index.d.ts +3 -0
- package/dist/core/middleware/built-in/session/index.js +9 -0
- package/dist/core/middleware/built-in/session/index.js.map +1 -0
- package/dist/core/middleware/built-in/session/middleware.d.ts +17 -0
- package/dist/core/middleware/built-in/session/middleware.js +38 -0
- package/dist/core/middleware/built-in/session/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/sse/core.d.ts +44 -0
- package/dist/core/middleware/built-in/sse/core.js +117 -0
- package/dist/core/middleware/built-in/sse/core.js.map +1 -0
- package/dist/core/middleware/built-in/sse/hook.d.ts +18 -0
- package/dist/core/middleware/built-in/sse/hook.js +60 -0
- package/dist/core/middleware/built-in/sse/hook.js.map +1 -0
- package/dist/core/middleware/built-in/sse/index.d.ts +3 -0
- package/dist/core/middleware/built-in/sse/index.js +9 -0
- package/dist/core/middleware/built-in/sse/index.js.map +1 -0
- package/dist/core/middleware/built-in/sse/middleware.d.ts +18 -0
- package/dist/core/middleware/built-in/sse/middleware.js +43 -0
- package/dist/core/middleware/built-in/sse/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/validation/core.d.ts +23 -0
- package/dist/core/middleware/built-in/validation/core.js +93 -0
- package/dist/core/middleware/built-in/validation/core.js.map +1 -0
- package/dist/core/middleware/built-in/validation/hook.d.ts +13 -0
- package/dist/core/middleware/built-in/{validation.js → validation/hook.js} +16 -9
- package/dist/core/middleware/built-in/validation/hook.js.map +1 -0
- package/dist/core/middleware/built-in/validation/index.d.ts +3 -0
- package/dist/core/middleware/built-in/validation/index.js +9 -0
- package/dist/core/middleware/built-in/validation/index.js.map +1 -0
- package/dist/core/middleware/built-in/validation/middleware.d.ts +16 -0
- package/dist/core/middleware/built-in/validation/middleware.js +27 -0
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -0
- package/dist/core/middleware/index.d.ts +4 -4
- package/dist/core/middleware/index.js +14 -28
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +19 -2
- package/dist/core/modules/auto-discovery.js +391 -74
- 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 +2 -9
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.d.ts +3 -3
- package/dist/core/modules/modules.js +23 -54
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/index.d.ts +4 -3
- package/dist/core/networking/adapters/index.js +3 -7
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
- package/dist/core/networking/adapters/socketio-adapter.js +5 -40
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
- package/dist/core/networking/adapters/uws-adapter.js +513 -0
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
- package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
- package/dist/core/networking/adapters/ws-adapter.js +8 -43
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.d.ts +3 -2
- package/dist/core/networking/index.js +2 -7
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +8 -12
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.js +1 -2
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.d.ts +3 -3
- package/dist/core/networking/websocket-manager.js +9 -11
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.d.ts +140 -0
- package/dist/core/pooling/object-pool-manager.js +502 -0
- package/dist/core/pooling/object-pool-manager.js.map +1 -0
- package/dist/core/routing/app-integration.d.ts +14 -12
- package/dist/core/routing/app-integration.js +49 -85
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +17 -11
- package/dist/core/routing/index.js +48 -237
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.d.ts +67 -0
- package/dist/core/routing/path-matcher.js +182 -0
- package/dist/core/routing/path-matcher.js.map +1 -0
- package/dist/core/routing/router.d.ts +38 -0
- package/dist/core/routing/router.js +68 -0
- package/dist/core/routing/router.js.map +1 -0
- package/dist/core/routing/unified-router.d.ts +132 -0
- package/dist/core/routing/unified-router.js +639 -0
- package/dist/core/routing/unified-router.js.map +1 -0
- package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
- package/dist/core/runtime/aws-lambda-adapter.js +2 -6
- 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 +3 -7
- 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 +2 -6
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.d.ts +12 -12
- package/dist/core/runtime/index.js +22 -35
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.d.ts +4 -4
- package/dist/core/runtime/node-adapter.js +18 -49
- 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 +2 -6
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.js +1 -5
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +12 -22
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +2 -2
- package/dist/core/utilities/hooks.js +7 -12
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.d.ts +5 -4
- package/dist/core/utilities/index.js +5 -19
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/package-utils.d.ts +38 -0
- package/dist/core/utilities/package-utils.js +57 -0
- package/dist/core/utilities/package-utils.js.map +1 -0
- package/dist/core/validation/adapters.d.ts +1 -1
- package/dist/core/validation/adapters.js +15 -26
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/index.d.ts +6 -4
- package/dist/core/validation/index.js +57 -28
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js +3 -9
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/index.d.ts +52 -52
- package/dist/index.js +24 -132
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +70 -16
- package/dist/moro.js +650 -269
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.js +3 -9
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js +1 -2
- package/dist/types/cdn.js +1 -2
- package/dist/types/config.d.ts +73 -2
- package/dist/types/config.js +1 -2
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.d.ts +36 -42
- package/dist/types/core.js +1 -2
- package/dist/types/database.js +1 -2
- package/dist/types/discovery.js +1 -2
- package/dist/types/events.js +1 -2
- package/dist/types/hooks.d.ts +4 -1
- package/dist/types/hooks.js +1 -2
- package/dist/types/http.d.ts +16 -1
- package/dist/types/http.js +1 -2
- package/dist/types/logger.d.ts +7 -0
- package/dist/types/logger.js +1 -2
- package/dist/types/module.d.ts +11 -0
- package/dist/types/module.js +1 -2
- package/dist/types/runtime.d.ts +1 -1
- package/dist/types/runtime.js +1 -2
- package/dist/types/session.js +1 -2
- package/package.json +18 -55
- package/dist/core/config/loader.d.ts +0 -7
- package/dist/core/config/loader.js +0 -269
- package/dist/core/config/loader.js.map +0 -1
- package/dist/core/config/validation.d.ts +0 -17
- package/dist/core/config/validation.js +0 -131
- package/dist/core/config/validation.js.map +0 -1
- package/dist/core/http/router.d.ts +0 -14
- package/dist/core/http/router.js +0 -109
- package/dist/core/http/router.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cache/file.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cache/index.d.ts +0 -5
- package/dist/core/middleware/built-in/adapters/cache/index.js +0 -28
- package/dist/core/middleware/built-in/adapters/cache/index.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +0 -5
- package/dist/core/middleware/built-in/adapters/cdn/index.js +0 -28
- package/dist/core/middleware/built-in/adapters/cdn/index.js.map +0 -1
- package/dist/core/middleware/built-in/adapters/index.d.ts +0 -4
- package/dist/core/middleware/built-in/adapters/index.js +0 -26
- package/dist/core/middleware/built-in/adapters/index.js.map +0 -1
- package/dist/core/middleware/built-in/auth-helpers.js.map +0 -1
- package/dist/core/middleware/built-in/auth-providers.js.map +0 -1
- package/dist/core/middleware/built-in/auth.d.ts +0 -30
- package/dist/core/middleware/built-in/auth.js +0 -281
- package/dist/core/middleware/built-in/auth.js.map +0 -1
- package/dist/core/middleware/built-in/cache.d.ts +0 -3
- package/dist/core/middleware/built-in/cache.js.map +0 -1
- package/dist/core/middleware/built-in/cdn.d.ts +0 -3
- package/dist/core/middleware/built-in/cdn.js +0 -113
- package/dist/core/middleware/built-in/cdn.js.map +0 -1
- package/dist/core/middleware/built-in/cookie.d.ts +0 -14
- package/dist/core/middleware/built-in/cookie.js +0 -68
- package/dist/core/middleware/built-in/cookie.js.map +0 -1
- package/dist/core/middleware/built-in/cors.d.ts +0 -2
- package/dist/core/middleware/built-in/cors.js +0 -29
- package/dist/core/middleware/built-in/cors.js.map +0 -1
- package/dist/core/middleware/built-in/csp.d.ts +0 -22
- package/dist/core/middleware/built-in/csp.js +0 -71
- package/dist/core/middleware/built-in/csp.js.map +0 -1
- package/dist/core/middleware/built-in/csrf.d.ts +0 -9
- package/dist/core/middleware/built-in/csrf.js +0 -63
- package/dist/core/middleware/built-in/csrf.js.map +0 -1
- package/dist/core/middleware/built-in/error-tracker.d.ts +0 -1
- package/dist/core/middleware/built-in/error-tracker.js +0 -19
- package/dist/core/middleware/built-in/error-tracker.js.map +0 -1
- package/dist/core/middleware/built-in/performance-monitor.d.ts +0 -1
- package/dist/core/middleware/built-in/performance-monitor.js +0 -22
- package/dist/core/middleware/built-in/performance-monitor.js.map +0 -1
- package/dist/core/middleware/built-in/rate-limit.d.ts +0 -6
- package/dist/core/middleware/built-in/rate-limit.js.map +0 -1
- package/dist/core/middleware/built-in/request-logger.d.ts +0 -1
- package/dist/core/middleware/built-in/request-logger.js +0 -16
- package/dist/core/middleware/built-in/request-logger.js.map +0 -1
- package/dist/core/middleware/built-in/session.d.ts +0 -41
- package/dist/core/middleware/built-in/session.js +0 -209
- package/dist/core/middleware/built-in/session.js.map +0 -1
- package/dist/core/middleware/built-in/sse.d.ts +0 -6
- package/dist/core/middleware/built-in/sse.js +0 -71
- package/dist/core/middleware/built-in/sse.js.map +0 -1
- package/dist/core/middleware/built-in/validation.d.ts +0 -2
- package/dist/core/middleware/built-in/validation.js.map +0 -1
- package/src/core/auth/README.md +0 -339
- package/src/core/auth/morojs-adapter.ts +0 -410
- package/src/core/config/file-loader.ts +0 -407
- package/src/core/config/index.ts +0 -60
- package/src/core/config/loader.ts +0 -633
- package/src/core/config/schema.ts +0 -150
- package/src/core/config/utils.ts +0 -251
- package/src/core/config/validation.ts +0 -140
- package/src/core/database/README.md +0 -228
- package/src/core/database/adapters/drizzle.ts +0 -403
- package/src/core/database/adapters/index.ts +0 -42
- package/src/core/database/adapters/mongodb.ts +0 -269
- package/src/core/database/adapters/mysql.ts +0 -207
- package/src/core/database/adapters/postgresql.ts +0 -201
- package/src/core/database/adapters/redis.ts +0 -326
- package/src/core/database/adapters/sqlite.ts +0 -247
- package/src/core/database/index.ts +0 -3
- package/src/core/docs/index.ts +0 -231
- package/src/core/docs/openapi-generator.ts +0 -576
- package/src/core/docs/schema-to-openapi.ts +0 -148
- package/src/core/docs/simple-docs.ts +0 -295
- package/src/core/docs/swagger-ui.ts +0 -351
- package/src/core/docs/zod-to-openapi.ts +0 -532
- package/src/core/events/event-bus.ts +0 -231
- package/src/core/events/index.ts +0 -12
- package/src/core/framework.ts +0 -636
- package/src/core/http/http-server.ts +0 -1787
- package/src/core/http/index.ts +0 -6
- package/src/core/http/router.ts +0 -141
- package/src/core/logger/filters.ts +0 -145
- package/src/core/logger/index.ts +0 -20
- package/src/core/logger/logger.ts +0 -814
- package/src/core/logger/outputs.ts +0 -134
- package/src/core/middleware/built-in/adapters/cache/file.ts +0 -104
- package/src/core/middleware/built-in/adapters/cache/index.ts +0 -23
- package/src/core/middleware/built-in/adapters/cache/memory.ts +0 -73
- package/src/core/middleware/built-in/adapters/cache/redis.ts +0 -100
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +0 -60
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +0 -83
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +0 -83
- package/src/core/middleware/built-in/adapters/cdn/index.ts +0 -23
- package/src/core/middleware/built-in/adapters/index.ts +0 -7
- package/src/core/middleware/built-in/auth-helpers.ts +0 -401
- package/src/core/middleware/built-in/auth-providers.ts +0 -480
- package/src/core/middleware/built-in/auth.ts +0 -329
- package/src/core/middleware/built-in/cache.ts +0 -211
- package/src/core/middleware/built-in/cdn.ts +0 -124
- package/src/core/middleware/built-in/cookie.ts +0 -85
- package/src/core/middleware/built-in/cors.ts +0 -38
- package/src/core/middleware/built-in/csp.ts +0 -101
- package/src/core/middleware/built-in/csrf.ts +0 -82
- package/src/core/middleware/built-in/error-tracker.ts +0 -16
- package/src/core/middleware/built-in/index.ts +0 -79
- package/src/core/middleware/built-in/performance-monitor.ts +0 -25
- package/src/core/middleware/built-in/rate-limit.ts +0 -60
- package/src/core/middleware/built-in/request-logger.ts +0 -14
- package/src/core/middleware/built-in/session.ts +0 -288
- package/src/core/middleware/built-in/sse.ts +0 -86
- package/src/core/middleware/built-in/validation.ts +0 -33
- package/src/core/middleware/index.ts +0 -177
- package/src/core/modules/auto-discovery.ts +0 -263
- package/src/core/modules/index.ts +0 -3
- package/src/core/modules/modules.ts +0 -124
- package/src/core/networking/adapters/index.ts +0 -16
- package/src/core/networking/adapters/socketio-adapter.ts +0 -252
- package/src/core/networking/adapters/ws-adapter.ts +0 -430
- package/src/core/networking/index.ts +0 -3
- package/src/core/networking/service-discovery.ts +0 -304
- package/src/core/networking/websocket-adapter.ts +0 -217
- package/src/core/networking/websocket-manager.ts +0 -308
- package/src/core/routing/app-integration.ts +0 -216
- package/src/core/routing/index.ts +0 -488
- package/src/core/runtime/aws-lambda-adapter.ts +0 -147
- package/src/core/runtime/base-adapter.ts +0 -130
- package/src/core/runtime/cloudflare-workers-adapter.ts +0 -152
- package/src/core/runtime/index.ts +0 -62
- package/src/core/runtime/node-adapter.ts +0 -196
- package/src/core/runtime/vercel-edge-adapter.ts +0 -114
- package/src/core/utilities/circuit-breaker.ts +0 -46
- package/src/core/utilities/container.ts +0 -736
- package/src/core/utilities/hooks.ts +0 -142
- package/src/core/utilities/index.ts +0 -16
- package/src/core/validation/adapters.ts +0 -147
- package/src/core/validation/index.ts +0 -206
- package/src/core/validation/schema-interface.ts +0 -100
- package/src/index.ts +0 -226
- package/src/moro.ts +0 -1197
- package/src/types/auth.ts +0 -440
- package/src/types/cache.ts +0 -38
- package/src/types/cdn.ts +0 -22
- package/src/types/config.ts +0 -157
- package/src/types/core.ts +0 -56
- package/src/types/database.ts +0 -32
- package/src/types/discovery.ts +0 -7
- package/src/types/events.ts +0 -82
- package/src/types/hooks.ts +0 -47
- package/src/types/http.ts +0 -67
- package/src/types/logger.ts +0 -93
- package/src/types/module.ts +0 -87
- package/src/types/runtime.ts +0 -76
- package/src/types/session.ts +0 -89
- package/tsconfig.json +0 -21
- /package/dist/core/middleware/built-in/{auth-helpers.d.ts → auth/helpers.d.ts} +0 -0
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
// Hook System for Moro
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks';
|
|
4
|
-
import { createFrameworkLogger } from '../logger';
|
|
5
|
-
|
|
6
|
-
export const HOOK_EVENTS = {
|
|
7
|
-
BEFORE_REQUEST: 'before:request',
|
|
8
|
-
AFTER_REQUEST: 'after:request',
|
|
9
|
-
BEFORE_RESPONSE: 'before:response',
|
|
10
|
-
AFTER_RESPONSE: 'after:response',
|
|
11
|
-
ERROR: 'error',
|
|
12
|
-
} as const;
|
|
13
|
-
|
|
14
|
-
export class HookManager extends EventEmitter {
|
|
15
|
-
private hooks = new Map<string, HookFunction[]>();
|
|
16
|
-
private beforeHooks = new Map<string, HookFunction[]>();
|
|
17
|
-
private afterHooks = new Map<string, HookFunction[]>();
|
|
18
|
-
private logger = createFrameworkLogger('Hooks');
|
|
19
|
-
|
|
20
|
-
constructor() {
|
|
21
|
-
super();
|
|
22
|
-
// Initialize hook arrays
|
|
23
|
-
Object.values(HOOK_EVENTS).forEach(event => {
|
|
24
|
-
this.hooks.set(event, []);
|
|
25
|
-
this.beforeHooks.set(event, []);
|
|
26
|
-
this.afterHooks.set(event, []);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Register a hook for a specific event
|
|
31
|
-
hook(event: string, fn: HookFunction): this {
|
|
32
|
-
if (!this.hooks.has(event)) {
|
|
33
|
-
this.hooks.set(event, []);
|
|
34
|
-
}
|
|
35
|
-
this.hooks.get(event)!.push(fn);
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Register a before hook
|
|
40
|
-
before(event: string, fn: HookFunction): this {
|
|
41
|
-
if (!this.beforeHooks.has(event)) {
|
|
42
|
-
this.beforeHooks.set(event, []);
|
|
43
|
-
}
|
|
44
|
-
this.beforeHooks.get(event)!.push(fn);
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Register an after hook
|
|
49
|
-
after(event: string, fn: HookFunction): this {
|
|
50
|
-
if (!this.afterHooks.has(event)) {
|
|
51
|
-
this.afterHooks.set(event, []);
|
|
52
|
-
}
|
|
53
|
-
this.afterHooks.get(event)!.push(fn);
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Execute hooks for an event
|
|
58
|
-
async execute(event: string, context: HookContext = {}): Promise<HookContext> {
|
|
59
|
-
// Execute before hooks
|
|
60
|
-
const beforeHooks = this.beforeHooks.get(event) || [];
|
|
61
|
-
for (const hook of beforeHooks) {
|
|
62
|
-
await this.executeHook(hook, context);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Execute main hooks
|
|
66
|
-
const hooks = this.hooks.get(event) || [];
|
|
67
|
-
for (const hook of hooks) {
|
|
68
|
-
await this.executeHook(hook, context);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Execute after hooks
|
|
72
|
-
const afterHooks = this.afterHooks.get(event) || [];
|
|
73
|
-
for (const hook of afterHooks) {
|
|
74
|
-
await this.executeHook(hook, context);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Emit event for listeners
|
|
78
|
-
this.emit(event, context);
|
|
79
|
-
|
|
80
|
-
return context;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Execute a single hook with error handling
|
|
84
|
-
private async executeHook(hook: HookFunction, context: HookContext): Promise<void> {
|
|
85
|
-
try {
|
|
86
|
-
await hook(context);
|
|
87
|
-
} catch (error) {
|
|
88
|
-
this.logger.error('Hook execution error', 'HookExecution', {
|
|
89
|
-
error: error instanceof Error ? error.message : String(error),
|
|
90
|
-
context: context.request?.method || 'unknown',
|
|
91
|
-
});
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Remove hooks
|
|
97
|
-
removeHook(event: string, fn?: HookFunction): this {
|
|
98
|
-
if (!fn) {
|
|
99
|
-
this.hooks.delete(event);
|
|
100
|
-
this.beforeHooks.delete(event);
|
|
101
|
-
this.afterHooks.delete(event);
|
|
102
|
-
} else {
|
|
103
|
-
[this.hooks, this.beforeHooks, this.afterHooks].forEach(map => {
|
|
104
|
-
const hooks = map.get(event);
|
|
105
|
-
if (hooks) {
|
|
106
|
-
const index = hooks.indexOf(fn);
|
|
107
|
-
if (index !== -1) {
|
|
108
|
-
hooks.splice(index, 1);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Get all registered hooks for debugging
|
|
117
|
-
getHooks(event?: string): Record<string, any> {
|
|
118
|
-
if (event) {
|
|
119
|
-
return {
|
|
120
|
-
before: this.beforeHooks.get(event) || [],
|
|
121
|
-
main: this.hooks.get(event) || [],
|
|
122
|
-
after: this.afterHooks.get(event) || [],
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
const allHooks: Record<string, any> = {};
|
|
127
|
-
const allEvents = new Set([
|
|
128
|
-
...this.hooks.keys(),
|
|
129
|
-
...this.beforeHooks.keys(),
|
|
130
|
-
...this.afterHooks.keys(),
|
|
131
|
-
]);
|
|
132
|
-
|
|
133
|
-
allEvents.forEach(event => {
|
|
134
|
-
allHooks[event] = this.getHooks(event);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
return allHooks;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Built-in middleware - now organized in individual files
|
|
142
|
-
export { simpleMiddleware as middleware } from '../middleware/index';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// Core Utilities - Centralized Exports
|
|
2
|
-
export {
|
|
3
|
-
Container,
|
|
4
|
-
FunctionalContainer,
|
|
5
|
-
ServiceScope,
|
|
6
|
-
ServiceLifecycle,
|
|
7
|
-
withLogging,
|
|
8
|
-
withCaching,
|
|
9
|
-
withRetry,
|
|
10
|
-
withTimeout,
|
|
11
|
-
} from './container';
|
|
12
|
-
export { CircuitBreaker } from './circuit-breaker';
|
|
13
|
-
export { HookManager, HOOK_EVENTS } from './hooks';
|
|
14
|
-
|
|
15
|
-
// Re-export middleware from hooks
|
|
16
|
-
export { middleware } from './hooks';
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
// Validation Library Adapters for Moro Framework
|
|
2
|
-
// Makes Joi, Yup, and other libraries compatible with ValidationSchema interface
|
|
3
|
-
|
|
4
|
-
import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Zod Compatibility Check
|
|
8
|
-
* Zod ALREADY implements ValidationSchema interface natively!
|
|
9
|
-
* No adapter needed - it just works.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Joi Adapter - makes Joi schemas compatible with ValidationSchema
|
|
14
|
-
*/
|
|
15
|
-
export class JoiAdapter<T = any> implements ValidationSchema<T> {
|
|
16
|
-
constructor(private joiSchema: any) {
|
|
17
|
-
if (!joiSchema || typeof joiSchema.validateAsync !== 'function') {
|
|
18
|
-
throw new Error('Invalid Joi schema provided to JoiAdapter');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async parseAsync(data: unknown): Promise<T> {
|
|
23
|
-
try {
|
|
24
|
-
const result = await this.joiSchema.validateAsync(data, { abortEarly: false });
|
|
25
|
-
return result as T;
|
|
26
|
-
} catch (error) {
|
|
27
|
-
throw normalizeValidationError(error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Yup Adapter - makes Yup schemas compatible with ValidationSchema
|
|
34
|
-
*/
|
|
35
|
-
export class YupAdapter<T = any> implements ValidationSchema<T> {
|
|
36
|
-
constructor(private yupSchema: any) {
|
|
37
|
-
if (!yupSchema || typeof yupSchema.validate !== 'function') {
|
|
38
|
-
throw new Error('Invalid Yup schema provided to YupAdapter');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async parseAsync(data: unknown): Promise<T> {
|
|
43
|
-
try {
|
|
44
|
-
const result = await this.yupSchema.validate(data, { abortEarly: false });
|
|
45
|
-
return result as T;
|
|
46
|
-
} catch (error) {
|
|
47
|
-
throw normalizeValidationError(error);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Custom Validation Function Adapter
|
|
54
|
-
* Allows users to use simple validation functions
|
|
55
|
-
*/
|
|
56
|
-
export class FunctionAdapter<T = any> implements ValidationSchema<T> {
|
|
57
|
-
constructor(
|
|
58
|
-
private validateFn: (data: unknown) => T | Promise<T>,
|
|
59
|
-
private name: string = 'custom'
|
|
60
|
-
) {
|
|
61
|
-
if (typeof validateFn !== 'function') {
|
|
62
|
-
throw new Error('Validation function is required for FunctionAdapter');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async parseAsync(data: unknown): Promise<T> {
|
|
67
|
-
try {
|
|
68
|
-
return await this.validateFn(data);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
throw new ValidationError([
|
|
71
|
-
{
|
|
72
|
-
path: [],
|
|
73
|
-
message: error instanceof Error ? error.message : String(error),
|
|
74
|
-
code: this.name,
|
|
75
|
-
},
|
|
76
|
-
]);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Class Validator Adapter (for TypeScript decorators)
|
|
83
|
-
*/
|
|
84
|
-
export class ClassValidatorAdapter<T extends object = any> implements ValidationSchema<T> {
|
|
85
|
-
constructor(
|
|
86
|
-
private ClassType: new () => T,
|
|
87
|
-
private validate?: (obj: any) => Promise<any[]>
|
|
88
|
-
) {
|
|
89
|
-
if (typeof ClassType !== 'function') {
|
|
90
|
-
throw new Error('Class constructor is required for ClassValidatorAdapter');
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async parseAsync(data: unknown): Promise<T> {
|
|
95
|
-
try {
|
|
96
|
-
const instance = Object.assign(new this.ClassType(), data as Record<string, any>);
|
|
97
|
-
|
|
98
|
-
if (this.validate) {
|
|
99
|
-
const errors = await this.validate(instance);
|
|
100
|
-
if (errors && errors.length > 0) {
|
|
101
|
-
throw new ValidationError(
|
|
102
|
-
errors.map((error: any, index: number) => ({
|
|
103
|
-
path: error.property ? [error.property] : [index],
|
|
104
|
-
message: Object.values(error.constraints || {}).join(', ') || 'Validation failed',
|
|
105
|
-
code: 'class_validator',
|
|
106
|
-
}))
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return instance as T;
|
|
112
|
-
} catch (error) {
|
|
113
|
-
if (error instanceof ValidationError) throw error;
|
|
114
|
-
throw normalizeValidationError(error);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Utility functions for creating adapters
|
|
121
|
-
*/
|
|
122
|
-
export function joi<T = any>(joiSchema: any): ValidationSchema<T> {
|
|
123
|
-
return new JoiAdapter<T>(joiSchema);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function yup<T = any>(yupSchema: any): ValidationSchema<T> {
|
|
127
|
-
return new YupAdapter<T>(yupSchema);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export function fn<T = any>(
|
|
131
|
-
validateFn: (data: unknown) => T | Promise<T>,
|
|
132
|
-
name?: string
|
|
133
|
-
): ValidationSchema<T> {
|
|
134
|
-
return new FunctionAdapter<T>(validateFn, name);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export function classValidator<T extends object = any>(
|
|
138
|
-
ClassType: new () => T,
|
|
139
|
-
validate?: (obj: any) => Promise<any[]>
|
|
140
|
-
): ValidationSchema<T> {
|
|
141
|
-
return new ClassValidatorAdapter<T>(ClassType, validate);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// Type helpers
|
|
145
|
-
export type JoiSchema<T> = ValidationSchema<T>;
|
|
146
|
-
export type YupSchema<T> = ValidationSchema<T>;
|
|
147
|
-
export type CustomValidator<T> = ValidationSchema<T>;
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
// Universal Validation System for Moro Framework
|
|
2
|
-
// Works with Zod, Joi, Yup, and any validation library via adapters
|
|
3
|
-
|
|
4
|
-
import { HttpRequest, HttpResponse } from '../http';
|
|
5
|
-
import { createFrameworkLogger } from '../logger';
|
|
6
|
-
import {
|
|
7
|
-
ValidationSchema,
|
|
8
|
-
ValidationError,
|
|
9
|
-
normalizeValidationError,
|
|
10
|
-
InferSchemaType,
|
|
11
|
-
} from './schema-interface';
|
|
12
|
-
|
|
13
|
-
// Re-export zod if available (for backward compatibility)
|
|
14
|
-
// The dynamic import is handled in the main index.ts
|
|
15
|
-
|
|
16
|
-
const logger = createFrameworkLogger('Validation');
|
|
17
|
-
|
|
18
|
-
// Universal validation configuration interface
|
|
19
|
-
export interface ValidationConfig {
|
|
20
|
-
body?: ValidationSchema;
|
|
21
|
-
query?: ValidationSchema;
|
|
22
|
-
params?: ValidationSchema;
|
|
23
|
-
headers?: ValidationSchema;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Validation result types
|
|
27
|
-
export interface ValidationResult<T = any> {
|
|
28
|
-
success: boolean;
|
|
29
|
-
data?: T;
|
|
30
|
-
errors?: ValidationErrorDetail[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface ValidationErrorDetail {
|
|
34
|
-
field: string;
|
|
35
|
-
message: string;
|
|
36
|
-
code: string;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Enhanced request type with validated data
|
|
40
|
-
export interface ValidatedRequest<T = any> extends HttpRequest {
|
|
41
|
-
validatedBody?: T;
|
|
42
|
-
validatedQuery?: any;
|
|
43
|
-
validatedParams?: any;
|
|
44
|
-
validatedHeaders?: any;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Main validation wrapper function
|
|
48
|
-
export function validate<TBody = any, TQuery = any, TParams = any>(
|
|
49
|
-
config: ValidationConfig,
|
|
50
|
-
handler: (req: ValidatedRequest<TBody>, res: HttpResponse) => any | Promise<any>
|
|
51
|
-
) {
|
|
52
|
-
return async (req: HttpRequest, res: HttpResponse): Promise<any> => {
|
|
53
|
-
try {
|
|
54
|
-
const validatedReq = req as ValidatedRequest<TBody>;
|
|
55
|
-
|
|
56
|
-
// Validate body
|
|
57
|
-
if (config.body) {
|
|
58
|
-
const result = await validateField(config.body, req.body, 'body');
|
|
59
|
-
if (!result.success) {
|
|
60
|
-
return sendValidationError(res, result.errors!, 'body');
|
|
61
|
-
}
|
|
62
|
-
validatedReq.validatedBody = result.data;
|
|
63
|
-
validatedReq.body = result.data; // Also update original body for compatibility
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Validate query parameters
|
|
67
|
-
if (config.query) {
|
|
68
|
-
const result = await validateField(config.query, req.query, 'query');
|
|
69
|
-
if (!result.success) {
|
|
70
|
-
return sendValidationError(res, result.errors!, 'query');
|
|
71
|
-
}
|
|
72
|
-
validatedReq.validatedQuery = result.data;
|
|
73
|
-
validatedReq.query = result.data; // Also update original query for compatibility
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Validate path parameters
|
|
77
|
-
if (config.params) {
|
|
78
|
-
const result = await validateField(config.params, req.params, 'params');
|
|
79
|
-
if (!result.success) {
|
|
80
|
-
return sendValidationError(res, result.errors!, 'params');
|
|
81
|
-
}
|
|
82
|
-
validatedReq.validatedParams = result.data;
|
|
83
|
-
validatedReq.params = result.data; // Also update original params for compatibility
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Validate headers
|
|
87
|
-
if (config.headers) {
|
|
88
|
-
const result = await validateField(config.headers, req.headers, 'headers');
|
|
89
|
-
if (!result.success) {
|
|
90
|
-
return sendValidationError(res, result.errors!, 'headers');
|
|
91
|
-
}
|
|
92
|
-
validatedReq.validatedHeaders = result.data;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
logger.debug('Request validation passed', 'ValidationSuccess', {
|
|
96
|
-
path: req.path,
|
|
97
|
-
method: req.method,
|
|
98
|
-
validatedFields: Object.keys(config),
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
// Execute the handler with validated request
|
|
102
|
-
return await handler(validatedReq, res);
|
|
103
|
-
} catch (error) {
|
|
104
|
-
logger.error('Validation wrapper error', 'ValidationError', {
|
|
105
|
-
error: error instanceof Error ? error.message : String(error),
|
|
106
|
-
path: req.path,
|
|
107
|
-
method: req.method,
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
if (!res.headersSent) {
|
|
111
|
-
res.status(500).json({
|
|
112
|
-
success: false,
|
|
113
|
-
error: 'Internal validation error',
|
|
114
|
-
requestId: req.requestId,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Validate individual field using universal schema interface
|
|
122
|
-
async function validateField(
|
|
123
|
-
schema: ValidationSchema,
|
|
124
|
-
data: any,
|
|
125
|
-
fieldName: string
|
|
126
|
-
): Promise<ValidationResult> {
|
|
127
|
-
try {
|
|
128
|
-
const validated = await schema.parseAsync(data);
|
|
129
|
-
return {
|
|
130
|
-
success: true,
|
|
131
|
-
data: validated,
|
|
132
|
-
};
|
|
133
|
-
} catch (error) {
|
|
134
|
-
const normalizedError = normalizeValidationError(error);
|
|
135
|
-
const errors: ValidationErrorDetail[] = normalizedError.issues.map(issue => ({
|
|
136
|
-
field: issue.path.length > 0 ? issue.path.join('.') : fieldName,
|
|
137
|
-
message: issue.message,
|
|
138
|
-
code: issue.code,
|
|
139
|
-
}));
|
|
140
|
-
|
|
141
|
-
logger.debug('Field validation failed', 'ValidationFailed', {
|
|
142
|
-
field: fieldName,
|
|
143
|
-
errors: errors.length,
|
|
144
|
-
details: errors,
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
return {
|
|
148
|
-
success: false,
|
|
149
|
-
errors,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Send validation error response
|
|
155
|
-
function sendValidationError(
|
|
156
|
-
res: HttpResponse,
|
|
157
|
-
errors: ValidationErrorDetail[],
|
|
158
|
-
field: string
|
|
159
|
-
): void {
|
|
160
|
-
logger.debug('Sending validation error response', 'ValidationResponse', {
|
|
161
|
-
field,
|
|
162
|
-
errorCount: errors.length,
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
res.status(400).json({
|
|
166
|
-
success: false,
|
|
167
|
-
error: `Validation failed for ${field}`,
|
|
168
|
-
details: errors,
|
|
169
|
-
requestId: (res as any).req?.requestId,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Convenience functions for single-field validation
|
|
174
|
-
export function body<T>(schema: ValidationSchema<T>) {
|
|
175
|
-
return (handler: (req: ValidatedRequest<T>, res: HttpResponse) => any | Promise<any>) => {
|
|
176
|
-
return validate({ body: schema }, handler);
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export function query<T>(schema: ValidationSchema<T>) {
|
|
181
|
-
return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
|
|
182
|
-
return validate({ query: schema }, handler);
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export function params<T>(schema: ValidationSchema<T>) {
|
|
187
|
-
return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
|
|
188
|
-
return validate({ params: schema }, handler);
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Schema composition helpers
|
|
193
|
-
export function combineSchemas(schemas: ValidationConfig): ValidationConfig {
|
|
194
|
-
return schemas;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Re-export common validation tools
|
|
198
|
-
export {
|
|
199
|
-
ValidationSchema,
|
|
200
|
-
ValidationError,
|
|
201
|
-
normalizeValidationError,
|
|
202
|
-
InferSchemaType,
|
|
203
|
-
} from './schema-interface';
|
|
204
|
-
export { joi, yup, fn as customValidator, classValidator } from './adapters';
|
|
205
|
-
|
|
206
|
-
// Note: z is re-exported from main index.ts with dynamic import
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
// Universal Validation Schema Interface for Moro Framework
|
|
2
|
-
// Allows Zod, Joi, Yup, and other validation libraries to work seamlessly
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Standard validation error structure
|
|
6
|
-
*/
|
|
7
|
-
export interface ValidationIssue {
|
|
8
|
-
path: (string | number)[];
|
|
9
|
-
message: string;
|
|
10
|
-
code: string;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Standard validation error class
|
|
15
|
-
* Compatible with ZodError structure
|
|
16
|
-
*/
|
|
17
|
-
export class ValidationError extends Error {
|
|
18
|
-
public readonly issues: ValidationIssue[];
|
|
19
|
-
|
|
20
|
-
constructor(issues: ValidationIssue[]) {
|
|
21
|
-
const message = `Validation failed: ${issues.map(i => i.message).join(', ')}`;
|
|
22
|
-
super(message);
|
|
23
|
-
this.name = 'ValidationError';
|
|
24
|
-
this.issues = issues;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Universal validation schema interface
|
|
30
|
-
* This is what Zod naturally implements! No breaking changes needed.
|
|
31
|
-
*/
|
|
32
|
-
export interface ValidationSchema<T = any> {
|
|
33
|
-
/**
|
|
34
|
-
* Parse data asynchronously and return validated result
|
|
35
|
-
* Throws ValidationError on validation failure
|
|
36
|
-
*/
|
|
37
|
-
parseAsync(data: unknown): Promise<T>;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Check if an object implements the ValidationSchema interface
|
|
42
|
-
*/
|
|
43
|
-
export function isValidationSchema(obj: any): obj is ValidationSchema {
|
|
44
|
-
return obj && typeof obj.parseAsync === 'function';
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Convert various error formats to our standard ValidationError
|
|
49
|
-
*/
|
|
50
|
-
export function normalizeValidationError(error: any): ValidationError {
|
|
51
|
-
// Already our format
|
|
52
|
-
if (error instanceof ValidationError) {
|
|
53
|
-
return error;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Zod error format
|
|
57
|
-
if (error && error.issues && Array.isArray(error.issues)) {
|
|
58
|
-
return new ValidationError(
|
|
59
|
-
error.issues.map((issue: any) => ({
|
|
60
|
-
path: issue.path || [],
|
|
61
|
-
message: issue.message || 'Validation failed',
|
|
62
|
-
code: issue.code || 'invalid',
|
|
63
|
-
}))
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Joi error format
|
|
68
|
-
if (error && error.details && Array.isArray(error.details)) {
|
|
69
|
-
return new ValidationError(
|
|
70
|
-
error.details.map((detail: any) => ({
|
|
71
|
-
path: detail.path || [],
|
|
72
|
-
message: detail.message || 'Validation failed',
|
|
73
|
-
code: detail.type || 'invalid',
|
|
74
|
-
}))
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Yup error format
|
|
79
|
-
if (error && error.errors && Array.isArray(error.errors)) {
|
|
80
|
-
return new ValidationError(
|
|
81
|
-
error.errors.map((msg: string, index: number) => ({
|
|
82
|
-
path: error.path ? [error.path] : [index],
|
|
83
|
-
message: msg,
|
|
84
|
-
code: error.type || 'invalid',
|
|
85
|
-
}))
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Generic error
|
|
90
|
-
return new ValidationError([
|
|
91
|
-
{
|
|
92
|
-
path: [],
|
|
93
|
-
message: error.message || String(error),
|
|
94
|
-
code: 'unknown',
|
|
95
|
-
},
|
|
96
|
-
]);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Type helper for inferring types from validation schemas
|
|
100
|
-
export type InferSchemaType<T> = T extends ValidationSchema<infer U> ? U : never;
|