@morojs/moro 1.6.1 → 1.6.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 +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 +190 -176
- 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/adapters/cache/file.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
- 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 +10 -17
- 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 +3 -7
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
- 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 +3 -7
- 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 +3 -7
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
- 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 +10 -17
- package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/index.js +4 -23
- package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth-helpers.js +11 -22
- package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
- package/dist/core/middleware/built-in/auth-providers.js +4 -9
- package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
- package/dist/core/middleware/built-in/auth.d.ts +2 -2
- package/dist/core/middleware/built-in/auth.js +93 -26
- package/dist/core/middleware/built-in/auth.js.map +1 -1
- package/dist/core/middleware/built-in/cache.d.ts +2 -2
- package/dist/core/middleware/built-in/cache.js +11 -12
- 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 +5 -9
- package/dist/core/middleware/built-in/cdn.js.map +1 -1
- package/dist/core/middleware/built-in/cookie.d.ts +1 -1
- package/dist/core/middleware/built-in/cookie.js +3 -7
- 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 +3 -7
- package/dist/core/middleware/built-in/cors.js.map +1 -1
- package/dist/core/middleware/built-in/csp.d.ts +1 -1
- package/dist/core/middleware/built-in/csp.js +5 -8
- 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 +5 -8
- package/dist/core/middleware/built-in/csrf.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker.js +3 -7
- package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
- package/dist/core/middleware/built-in/index.d.ts +28 -27
- 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/jwt-helpers.d.ts +118 -0
- package/dist/core/middleware/built-in/jwt-helpers.js +218 -0
- package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -0
- package/dist/core/middleware/built-in/performance-monitor.js +3 -7
- package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
- package/dist/core/middleware/built-in/rate-limit.js +3 -7
- package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger.js +5 -8
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/session.d.ts +2 -2
- package/dist/core/middleware/built-in/session.js +11 -15
- 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 +12 -14
- 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 +3 -7
- package/dist/core/middleware/built-in/validation.js.map +1 -1
- package/dist/core/middleware/index.d.ts +4 -4
- package/dist/core/middleware/index.js +8 -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 +148 -0
- package/dist/core/routing/unified-router.js +684 -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 +51 -52
- package/dist/index.js +23 -132
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +70 -16
- package/dist/moro.js +658 -271
- 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 +1 -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/jest.config.mjs +41 -0
- package/package.json +19 -52
- package/src/core/auth/morojs-adapter.ts +18 -13
- package/src/core/config/config-manager.ts +133 -0
- package/src/core/config/config-sources.ts +600 -0
- package/src/core/config/config-validator.ts +1116 -0
- package/src/core/config/file-loader.ts +16 -273
- package/src/core/config/index.ts +83 -34
- package/src/core/config/schema.ts +47 -33
- package/src/core/config/utils.ts +24 -31
- package/src/core/database/README.md +26 -16
- package/src/core/database/adapters/drizzle.ts +18 -6
- package/src/core/database/adapters/index.ts +13 -13
- package/src/core/database/adapters/mongodb.ts +53 -5
- package/src/core/database/adapters/mysql.ts +32 -4
- package/src/core/database/adapters/postgresql.ts +30 -5
- package/src/core/database/adapters/redis.ts +61 -8
- package/src/core/database/adapters/sqlite.ts +19 -3
- package/src/core/database/index.ts +2 -2
- package/src/core/docs/index.ts +8 -8
- package/src/core/docs/openapi-generator.ts +4 -4
- package/src/core/docs/schema-to-openapi.ts +3 -6
- package/src/core/docs/simple-docs.ts +2 -2
- package/src/core/docs/swagger-ui.ts +19 -16
- package/src/core/docs/zod-to-openapi.ts +34 -34
- package/src/core/events/event-bus.ts +3 -3
- package/src/core/events/index.ts +2 -2
- package/src/core/framework.ts +320 -71
- package/src/core/http/http-server.ts +203 -143
- package/src/core/http/index.ts +4 -3
- package/src/core/http/uws-http-server.ts +591 -0
- package/src/core/logger/filters.ts +13 -5
- package/src/core/logger/index.ts +4 -3
- package/src/core/logger/logger.ts +435 -216
- package/src/core/logger/outputs.ts +1 -3
- package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
- package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
- package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
- package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
- package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
- package/src/core/middleware/built-in/adapters/index.ts +4 -4
- package/src/core/middleware/built-in/auth-helpers.ts +1 -1
- package/src/core/middleware/built-in/auth-providers.ts +1 -1
- package/src/core/middleware/built-in/auth.ts +102 -21
- package/src/core/middleware/built-in/cache.ts +8 -6
- package/src/core/middleware/built-in/cdn.ts +4 -4
- package/src/core/middleware/built-in/cookie.ts +2 -2
- package/src/core/middleware/built-in/cors.ts +2 -2
- package/src/core/middleware/built-in/csp.ts +3 -3
- package/src/core/middleware/built-in/csrf.ts +3 -3
- package/src/core/middleware/built-in/error-tracker.ts +1 -1
- package/src/core/middleware/built-in/index.ts +38 -30
- package/src/core/middleware/built-in/jwt-helpers.ts +243 -0
- package/src/core/middleware/built-in/performance-monitor.ts +1 -1
- package/src/core/middleware/built-in/rate-limit.ts +2 -2
- package/src/core/middleware/built-in/request-logger.ts +3 -1
- package/src/core/middleware/built-in/session.ts +7 -8
- package/src/core/middleware/built-in/sse.ts +11 -9
- package/src/core/middleware/built-in/validation.ts +2 -2
- package/src/core/middleware/index.ts +6 -6
- package/src/core/modules/auto-discovery.ts +478 -15
- package/src/core/modules/index.ts +2 -2
- package/src/core/modules/modules.ts +23 -12
- package/src/core/networking/adapters/index.ts +4 -3
- package/src/core/networking/adapters/socketio-adapter.ts +5 -3
- package/src/core/networking/adapters/uws-adapter.ts +619 -0
- package/src/core/networking/adapters/ws-adapter.ts +8 -9
- package/src/core/networking/index.ts +3 -2
- package/src/core/networking/service-discovery.ts +6 -7
- package/src/core/networking/websocket-manager.ts +7 -7
- package/src/core/pooling/object-pool-manager.ts +630 -0
- package/src/core/routing/app-integration.ts +60 -112
- package/src/core/routing/index.ts +66 -293
- package/src/core/routing/path-matcher.ts +222 -0
- package/src/core/routing/router.ts +97 -0
- package/src/core/routing/unified-router.ts +870 -0
- package/src/core/runtime/aws-lambda-adapter.ts +3 -3
- package/src/core/runtime/base-adapter.ts +2 -2
- package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
- package/src/core/runtime/index.ts +13 -13
- package/src/core/runtime/node-adapter.ts +16 -10
- package/src/core/runtime/vercel-edge-adapter.ts +3 -3
- package/src/core/utilities/hooks.ts +3 -3
- package/src/core/utilities/index.ts +5 -4
- package/src/core/utilities/package-utils.ts +59 -0
- package/src/core/validation/adapters.ts +1 -1
- package/src/core/validation/index.ts +68 -16
- package/src/index.ts +73 -66
- package/src/moro.ts +784 -253
- package/src/types/config.ts +74 -2
- package/src/types/core.ts +49 -47
- package/src/types/hooks.ts +1 -1
- package/src/types/http.ts +23 -1
- package/src/types/logger.ts +9 -0
- package/src/types/module.ts +12 -0
- package/src/types/runtime.ts +1 -1
- package/tsconfig.json +4 -2
- 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/src/core/config/loader.ts +0 -633
- package/src/core/config/validation.ts +0 -140
- package/src/core/http/router.ts +0 -141
package/jest.config.mjs
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
preset: 'ts-jest/presets/default-esm',
|
|
3
|
+
testEnvironment: 'node',
|
|
4
|
+
extensionsToTreatAsEsm: ['.ts'],
|
|
5
|
+
moduleNameMapper: {
|
|
6
|
+
'^(\\.{1,2}/.*)\\.js$': '$1',
|
|
7
|
+
},
|
|
8
|
+
transform: {
|
|
9
|
+
'^.+\\.ts$': [
|
|
10
|
+
'ts-jest',
|
|
11
|
+
{
|
|
12
|
+
useESM: true,
|
|
13
|
+
tsconfig: {
|
|
14
|
+
module: 'ESNext',
|
|
15
|
+
moduleResolution: 'NodeNext',
|
|
16
|
+
target: 'ES2022',
|
|
17
|
+
esModuleInterop: true,
|
|
18
|
+
isolatedModules: true,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
roots: ['<rootDir>/src', '<rootDir>/tests'],
|
|
24
|
+
testMatch: ['**/tests/**/*.test.ts', '**/src/**/*.test.ts'],
|
|
25
|
+
collectCoverageFrom: [
|
|
26
|
+
'src/**/*.ts',
|
|
27
|
+
'!src/**/*.d.ts',
|
|
28
|
+
'!src/**/*.test.ts',
|
|
29
|
+
'!src/**/index.ts',
|
|
30
|
+
],
|
|
31
|
+
coverageDirectory: 'coverage',
|
|
32
|
+
coverageReporters: ['text', 'lcov', 'html'],
|
|
33
|
+
setupFilesAfterEnv: ['<rootDir>/tests/setup.ts'],
|
|
34
|
+
testTimeout: 15000,
|
|
35
|
+
maxWorkers: 1,
|
|
36
|
+
forceExit: false,
|
|
37
|
+
detectOpenHandles: true,
|
|
38
|
+
openHandlesTimeout: 1000,
|
|
39
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
40
|
+
};
|
|
41
|
+
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morojs/moro",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"description": "High-performance Node.js framework with intelligent routing, automatic middleware ordering, enterprise authentication (Auth.js), type-safe
|
|
3
|
+
"version": "1.6.2",
|
|
4
|
+
"description": "High-performance Node.js framework with intelligent routing, automatic middleware ordering, enterprise authentication (Auth.js), type-safe validation, and functional architecture",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"exports": {
|
|
8
9
|
".": {
|
|
9
10
|
"development": "./src/index.ts",
|
|
10
11
|
"import": "./dist/index.js",
|
|
11
|
-
"require": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
@@ -29,20 +29,22 @@
|
|
|
29
29
|
"test:ci": "jest --coverage --watchAll=false --ci --forceExit",
|
|
30
30
|
"test:force": "jest --forceExit",
|
|
31
31
|
"test:all": "npm run test:unit && npm run test:integration && npm run test:e2e",
|
|
32
|
+
"test:dist": "npm run build && node scripts/validate-dist.mjs",
|
|
33
|
+
"test:package": "npm run build && node scripts/validate-package.mjs",
|
|
32
34
|
"lint": "eslint src --ext .ts",
|
|
33
35
|
"lint:fix": "eslint src --ext .ts --fix",
|
|
34
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
|
35
|
-
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
36
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
37
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
36
38
|
"lint-staged": "lint-staged",
|
|
37
39
|
"docs:build": "typedoc --out docs-html src/index.ts",
|
|
38
40
|
"docs:serve": "http-server docs-html -p 8080",
|
|
39
41
|
"docs:json": "typedoc --json docs-json/api.json src/index.ts",
|
|
40
42
|
"docs:markdown": "typedoc --plugin typedoc-plugin-markdown --out docs-md src/index.ts",
|
|
41
43
|
"docs:all": "npm run docs:build && npm run docs:json && npm run docs:markdown",
|
|
42
|
-
"prerelease": "node scripts/release.js",
|
|
43
|
-
"prerelease:patch": "node scripts/release.js patch",
|
|
44
|
-
"prerelease:minor": "node scripts/release.js minor",
|
|
45
|
-
"prerelease:major": "node scripts/release.js major"
|
|
44
|
+
"prerelease": "npm run build && npm test && npm run test:package && node scripts/release.js",
|
|
45
|
+
"prerelease:patch": "npm run build && npm test && npm run test:package && node scripts/release.js patch",
|
|
46
|
+
"prerelease:minor": "npm run build && npm test && npm run test:package && node scripts/release.js minor",
|
|
47
|
+
"prerelease:major": "npm run build && npm test && npm run test:package && node scripts/release.js major"
|
|
46
48
|
},
|
|
47
49
|
"keywords": [
|
|
48
50
|
"nodejs",
|
|
@@ -89,8 +91,9 @@
|
|
|
89
91
|
"pg": "^8.16.3",
|
|
90
92
|
"socket.io": "^4.8.1",
|
|
91
93
|
"swagger-ui-dist": "^5.28.1",
|
|
94
|
+
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.52.0",
|
|
92
95
|
"ws": "^8.18.0",
|
|
93
|
-
"yup": "^1.
|
|
96
|
+
"yup": "^1.7.1"
|
|
94
97
|
},
|
|
95
98
|
"peerDependenciesMeta": {
|
|
96
99
|
"@auth/core": {
|
|
@@ -120,6 +123,9 @@
|
|
|
120
123
|
"socket.io": {
|
|
121
124
|
"optional": true
|
|
122
125
|
},
|
|
126
|
+
"uWebSockets.js": {
|
|
127
|
+
"optional": true
|
|
128
|
+
},
|
|
123
129
|
"ws": {
|
|
124
130
|
"optional": true
|
|
125
131
|
},
|
|
@@ -165,6 +171,7 @@
|
|
|
165
171
|
"typedoc-plugin-markdown": "^4.8.1",
|
|
166
172
|
"typedoc-theme-hierarchy": "^6.0.0",
|
|
167
173
|
"typescript": "^5.9.2",
|
|
174
|
+
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.52.0",
|
|
168
175
|
"ws": "^8.18.3",
|
|
169
176
|
"zod": "^4.1.8"
|
|
170
177
|
},
|
|
@@ -174,49 +181,9 @@
|
|
|
174
181
|
"README.md",
|
|
175
182
|
"LICENSE",
|
|
176
183
|
"API.md",
|
|
177
|
-
"tsconfig.json"
|
|
184
|
+
"tsconfig.json",
|
|
185
|
+
"jest.config.mjs"
|
|
178
186
|
],
|
|
179
|
-
"jest": {
|
|
180
|
-
"preset": "ts-jest",
|
|
181
|
-
"testEnvironment": "node",
|
|
182
|
-
"roots": [
|
|
183
|
-
"<rootDir>/src",
|
|
184
|
-
"<rootDir>/tests"
|
|
185
|
-
],
|
|
186
|
-
"testMatch": [
|
|
187
|
-
"**/tests/**/*.test.ts",
|
|
188
|
-
"**/src/**/*.test.ts"
|
|
189
|
-
],
|
|
190
|
-
"transform": {
|
|
191
|
-
"^.+\\.ts$": [
|
|
192
|
-
"ts-jest",
|
|
193
|
-
{}
|
|
194
|
-
]
|
|
195
|
-
},
|
|
196
|
-
"collectCoverageFrom": [
|
|
197
|
-
"src/**/*.ts",
|
|
198
|
-
"!src/**/*.d.ts",
|
|
199
|
-
"!src/**/*.test.ts",
|
|
200
|
-
"!src/**/index.ts"
|
|
201
|
-
],
|
|
202
|
-
"coverageDirectory": "coverage",
|
|
203
|
-
"coverageReporters": [
|
|
204
|
-
"text",
|
|
205
|
-
"lcov",
|
|
206
|
-
"html"
|
|
207
|
-
],
|
|
208
|
-
"setupFilesAfterEnv": [
|
|
209
|
-
"<rootDir>/tests/setup.ts"
|
|
210
|
-
],
|
|
211
|
-
"testTimeout": 15000,
|
|
212
|
-
"maxWorkers": 1,
|
|
213
|
-
"forceExit": false,
|
|
214
|
-
"detectOpenHandles": true,
|
|
215
|
-
"openHandlesTimeout": 1000,
|
|
216
|
-
"extensionsToTreatAsEsm": [
|
|
217
|
-
".ts"
|
|
218
|
-
]
|
|
219
|
-
},
|
|
220
187
|
"lint-staged": {
|
|
221
188
|
"src/**/*.ts": [
|
|
222
189
|
"prettier --write",
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* @see https://github.com/nextauthjs/next-auth/tree/main/packages
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
12
|
+
|
|
13
|
+
const logger = createFrameworkLogger('AuthAdapter');
|
|
12
14
|
|
|
13
15
|
// Mock Auth.js types until we have the actual package
|
|
14
16
|
// These would come from @auth/core in a real implementation
|
|
@@ -249,7 +251,7 @@ export async function MoroJSAuth(config: MoroJSAuthConfig): Promise<{
|
|
|
249
251
|
basePath,
|
|
250
252
|
raw: (code: any, ...message: any[]) => {
|
|
251
253
|
if (config.morojs?.debug) {
|
|
252
|
-
logger.debug(`[MoroJS Auth] ${code}:`, 'AuthAdapter', {
|
|
254
|
+
logger.debug(`[MoroJS Auth] ${code}:`, 'AuthAdapter', { message });
|
|
253
255
|
}
|
|
254
256
|
},
|
|
255
257
|
});
|
|
@@ -263,7 +265,7 @@ export async function MoroJSAuth(config: MoroJSAuthConfig): Promise<{
|
|
|
263
265
|
// Convert Web API response to MoroJS response
|
|
264
266
|
await fromWebResponse(finalResponse, res);
|
|
265
267
|
} catch (error) {
|
|
266
|
-
logger.error('[MoroJS Auth] Error
|
|
268
|
+
logger.error('[MoroJS Auth] Error', 'AuthAdapter', {
|
|
267
269
|
error: error instanceof Error ? error.message : String(error),
|
|
268
270
|
});
|
|
269
271
|
// Robust error handling - check if response methods exist
|
|
@@ -312,7 +314,7 @@ export async function MoroJSAuth(config: MoroJSAuthConfig): Promise<{
|
|
|
312
314
|
return null;
|
|
313
315
|
} catch (error) {
|
|
314
316
|
if (config.morojs?.debug) {
|
|
315
|
-
logger.error('[MoroJS Auth] Session error
|
|
317
|
+
logger.error('[MoroJS Auth] Session error', 'AuthAdapter', {
|
|
316
318
|
error: error instanceof Error ? error.message : String(error),
|
|
317
319
|
});
|
|
318
320
|
}
|
|
@@ -328,18 +330,21 @@ export async function MoroJSAuth(config: MoroJSAuthConfig): Promise<{
|
|
|
328
330
|
* This creates a MoroJS-compatible middleware for authentication
|
|
329
331
|
*/
|
|
330
332
|
export function createAuthMiddleware(config: MoroJSAuthConfig) {
|
|
331
|
-
logger.info('
|
|
333
|
+
logger.info('createAuthMiddleware called - creating middleware function', 'AuthAdapter');
|
|
332
334
|
// Return a function that MoroJS can call directly
|
|
333
335
|
return async (app: any) => {
|
|
334
|
-
logger.info('
|
|
335
|
-
logger.
|
|
336
|
+
logger.info('Installing Auth.js middleware...', 'AuthAdapter');
|
|
337
|
+
logger.debug('App object received', 'AuthAdapter', {
|
|
338
|
+
appType: typeof app,
|
|
339
|
+
appConstructor: app.constructor.name,
|
|
340
|
+
});
|
|
336
341
|
|
|
337
342
|
// Get the hooks from the app's middleware system
|
|
338
343
|
const hooks =
|
|
339
344
|
(app as any).coreFramework?.middlewareManager?.hooks || (app as any).middlewareManager?.hooks;
|
|
340
345
|
|
|
341
346
|
if (!hooks) {
|
|
342
|
-
logger.error('
|
|
347
|
+
logger.error('Could not access MoroJS hooks system', 'AuthAdapter');
|
|
343
348
|
return;
|
|
344
349
|
}
|
|
345
350
|
|
|
@@ -350,9 +355,9 @@ export function createAuthMiddleware(config: MoroJSAuthConfig) {
|
|
|
350
355
|
|
|
351
356
|
// Register request hook
|
|
352
357
|
hooks.before('request', async (context: any) => {
|
|
353
|
-
logger.debug('
|
|
358
|
+
logger.debug('Native adapter hook starting', 'AuthAdapter');
|
|
354
359
|
const req = context.request;
|
|
355
|
-
logger.debug(
|
|
360
|
+
logger.debug('Request path', 'AuthAdapter', { path: req.path || req.url });
|
|
356
361
|
|
|
357
362
|
try {
|
|
358
363
|
// Just add auth object to request - don't touch response
|
|
@@ -389,16 +394,16 @@ export function createAuthMiddleware(config: MoroJSAuthConfig) {
|
|
|
389
394
|
return { url: signOutUrl };
|
|
390
395
|
},
|
|
391
396
|
};
|
|
392
|
-
logger.debug('
|
|
397
|
+
logger.debug('Native adapter hook completed successfully', 'AuthAdapter');
|
|
393
398
|
} catch (error) {
|
|
394
|
-
logger.error('
|
|
399
|
+
logger.error('Error in native adapter hook', 'AuthAdapter', {
|
|
395
400
|
error: error instanceof Error ? error.message : String(error),
|
|
396
401
|
});
|
|
397
402
|
throw error;
|
|
398
403
|
}
|
|
399
404
|
});
|
|
400
405
|
|
|
401
|
-
logger.info('
|
|
406
|
+
logger.info('Auth.js middleware installed successfully!', 'AuthAdapter');
|
|
402
407
|
};
|
|
403
408
|
}
|
|
404
409
|
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Manager - Immutable Single Source of Truth
|
|
3
|
+
*
|
|
4
|
+
* This module provides centralized, immutable configuration state management.
|
|
5
|
+
* Configuration is locked at createApp() initialization and cannot be changed afterward.
|
|
6
|
+
*
|
|
7
|
+
* Precedence: Environment Variables > createApp Options > Config File > Defaults
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { AppConfig } from '../../types/config.js';
|
|
11
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
12
|
+
|
|
13
|
+
const logger = createFrameworkLogger('ConfigManager');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Global configuration state - immutable after initialization
|
|
17
|
+
*/
|
|
18
|
+
let globalConfig: Readonly<AppConfig> | null = null;
|
|
19
|
+
let isLocked = false;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Initialize and lock global configuration state
|
|
23
|
+
* This should only be called once during createApp() initialization
|
|
24
|
+
*/
|
|
25
|
+
export function initializeAndLockConfig(config: AppConfig): void {
|
|
26
|
+
if (isLocked) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
'Configuration is already locked and cannot be changed. ' +
|
|
29
|
+
'Configuration can only be set once during createApp() initialization.'
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Deep freeze the configuration to make it truly immutable
|
|
34
|
+
globalConfig = deepFreeze(config);
|
|
35
|
+
isLocked = true;
|
|
36
|
+
|
|
37
|
+
logger.info(
|
|
38
|
+
`Configuration locked and initialized: ${process.env.NODE_ENV || 'development'}:${config.server.port}`
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get the current global configuration
|
|
44
|
+
* Throws if configuration hasn't been initialized
|
|
45
|
+
*/
|
|
46
|
+
export function getGlobalConfig(): Readonly<AppConfig> {
|
|
47
|
+
if (!globalConfig || !isLocked) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
'Configuration not initialized. Call createApp() to initialize the configuration system.'
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return globalConfig;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Check if configuration has been initialized and locked
|
|
57
|
+
*/
|
|
58
|
+
export function isConfigLocked(): boolean {
|
|
59
|
+
return isLocked && globalConfig !== null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Reset configuration state (for testing only)
|
|
64
|
+
* @internal - This should only be used in tests
|
|
65
|
+
*/
|
|
66
|
+
export function resetConfigForTesting(): void {
|
|
67
|
+
if (
|
|
68
|
+
process.env.NODE_ENV !== 'test' &&
|
|
69
|
+
!process.env.MORO_ALLOW_CONFIG_RESET &&
|
|
70
|
+
!process.env.JEST_WORKER_ID
|
|
71
|
+
) {
|
|
72
|
+
throw new Error(
|
|
73
|
+
'Configuration reset is only allowed in test environments. ' +
|
|
74
|
+
'Set MORO_ALLOW_CONFIG_RESET=true to override this check.'
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
globalConfig = null;
|
|
79
|
+
isLocked = false;
|
|
80
|
+
logger.debug('Configuration state reset for testing');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Deep freeze an object to make it truly immutable
|
|
85
|
+
* This prevents any accidental mutations to the configuration
|
|
86
|
+
*/
|
|
87
|
+
function deepFreeze<T>(obj: T): Readonly<T> {
|
|
88
|
+
// Get property names
|
|
89
|
+
const propNames = Object.getOwnPropertyNames(obj);
|
|
90
|
+
|
|
91
|
+
// Freeze properties before freezing self
|
|
92
|
+
for (const name of propNames) {
|
|
93
|
+
const value = (obj as any)[name];
|
|
94
|
+
|
|
95
|
+
if (value && typeof value === 'object') {
|
|
96
|
+
deepFreeze(value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return Object.freeze(obj);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Get a specific configuration value using dot notation
|
|
105
|
+
* This provides a safe way to access nested config values
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* getConfigValue('server.port') // Returns the server port
|
|
109
|
+
* getConfigValue('database.redis.url') // Returns the Redis URL
|
|
110
|
+
*/
|
|
111
|
+
export function getConfigValue<T = any>(path: string): T | undefined {
|
|
112
|
+
const config = getGlobalConfig();
|
|
113
|
+
|
|
114
|
+
return path.split('.').reduce((obj: any, key: string) => {
|
|
115
|
+
return obj && obj[key] !== undefined ? obj[key] : undefined;
|
|
116
|
+
}, config);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Utility functions for common environment checks
|
|
121
|
+
* These now read NODE_ENV directly for consistency with Node.js ecosystem
|
|
122
|
+
*/
|
|
123
|
+
export function isDevelopment(): boolean {
|
|
124
|
+
return process.env.NODE_ENV === 'development';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function isProduction(): boolean {
|
|
128
|
+
return process.env.NODE_ENV === 'production';
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function isStaging(): boolean {
|
|
132
|
+
return process.env.NODE_ENV === 'staging';
|
|
133
|
+
}
|