@morojs/moro 1.5.16 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -269
- package/dist/core/auth/morojs-adapter.js +5 -9
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.d.ts +1 -1
- package/dist/core/config/config-manager.js +10 -20
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.d.ts +2 -2
- package/dist/core/config/config-sources.js +17 -20
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.d.ts +1 -1
- package/dist/core/config/config-validator.js +33 -10
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.d.ts +1 -1
- package/dist/core/config/file-loader.js +19 -78
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +8 -8
- package/dist/core/config/index.js +25 -51
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.d.ts +2 -2
- package/dist/core/config/schema.js +11 -13
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +1 -1
- package/dist/core/config/utils.js +18 -32
- 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 +3 -1
- package/dist/core/database/adapters/mongodb.js +23 -8
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +3 -1
- package/dist/core/database/adapters/mysql.js +18 -9
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +3 -1
- package/dist/core/database/adapters/postgresql.js +18 -8
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +3 -1
- package/dist/core/database/adapters/redis.js +34 -9
- 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 +6 -10
- 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 +16 -6
- package/dist/core/framework.js +182 -92
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +1 -1
- package/dist/core/http/http-server.js +26 -209
- 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/router.d.ts +1 -1
- package/dist/core/http/router.js +3 -7
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +64 -0
- package/dist/core/http/uws-http-server.js +688 -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 +8 -19
- 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 -25
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +1 -1
- package/dist/core/logger/logger.js +21 -23
- 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 -15
- 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 +51 -44
- 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 +8 -11
- 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 -28
- package/dist/core/middleware/built-in/index.js +47 -82
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +27 -2
- package/dist/core/middleware/built-in/jwt-helpers.js +32 -10
- package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -1
- 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 +3 -7
- 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 +3 -7
- 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 +3 -3
- package/dist/core/modules/auto-discovery.js +43 -81
- 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 +11 -52
- 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 +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +7 -42
- 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 +3 -7
- 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/routing/app-integration.d.ts +2 -2
- package/dist/core/routing/app-integration.js +7 -12
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +2 -2
- package/dist/core/routing/index.js +7 -14
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
- package/dist/core/runtime/aws-lambda-adapter.js +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 +6 -43
- 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 +30 -10
- package/dist/moro.js +262 -126
- 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 +13 -1
- package/dist/types/config.js +1 -2
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.d.ts +3 -3
- 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.js +1 -2
- package/dist/types/logger.js +1 -2
- 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 +18 -51
- package/src/core/auth/morojs-adapter.ts +1 -1
- package/src/core/config/config-manager.ts +2 -2
- package/src/core/config/config-sources.ts +6 -6
- package/src/core/config/config-validator.ts +38 -3
- package/src/core/config/file-loader.ts +13 -40
- package/src/core/config/index.ts +15 -11
- package/src/core/config/schema.ts +3 -2
- package/src/core/config/utils.ts +3 -3
- 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 +23 -3
- package/src/core/database/adapters/mysql.ts +18 -4
- package/src/core/database/adapters/postgresql.ts +18 -3
- package/src/core/database/adapters/redis.ts +34 -4
- 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 +2 -2
- package/src/core/events/index.ts +2 -2
- package/src/core/framework.ts +190 -49
- package/src/core/http/http-server.ts +16 -159
- package/src/core/http/index.ts +4 -3
- package/src/core/http/router.ts +2 -2
- package/src/core/http/uws-http-server.ts +794 -0
- package/src/core/logger/filters.ts +1 -1
- package/src/core/logger/index.ts +3 -3
- package/src/core/logger/logger.ts +9 -1
- package/src/core/logger/outputs.ts +1 -1
- 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 +64 -41
- package/src/core/middleware/built-in/cache.ts +5 -5
- 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 +31 -31
- package/src/core/middleware/built-in/jwt-helpers.ts +32 -4
- 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 +1 -1
- package/src/core/middleware/built-in/session.ts +7 -8
- package/src/core/middleware/built-in/sse.ts +2 -2
- 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 +4 -4
- package/src/core/modules/index.ts +2 -2
- package/src/core/modules/modules.ts +4 -4
- 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 +6 -4
- package/src/core/networking/index.ts +3 -2
- package/src/core/networking/service-discovery.ts +1 -1
- package/src/core/networking/websocket-manager.ts +7 -7
- package/src/core/routing/app-integration.ts +3 -3
- package/src/core/routing/index.ts +3 -3
- 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 +4 -4
- 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 +303 -75
- package/src/types/config.ts +13 -1
- package/src/types/core.ts +3 -3
- package/src/types/hooks.ts +1 -1
- package/src/types/runtime.ts +1 -1
- package/tsconfig.json +4 -2
package/src/core/logger/index.ts
CHANGED
|
@@ -6,8 +6,8 @@ export {
|
|
|
6
6
|
configureGlobalLogger,
|
|
7
7
|
applyLoggingConfiguration,
|
|
8
8
|
destroyGlobalLogger,
|
|
9
|
-
} from './logger';
|
|
10
|
-
export * from './filters';
|
|
9
|
+
} from './logger.js';
|
|
10
|
+
export * from './filters.js';
|
|
11
11
|
|
|
12
12
|
export type {
|
|
13
13
|
LogLevel,
|
|
@@ -18,4 +18,4 @@ export type {
|
|
|
18
18
|
LogFilter,
|
|
19
19
|
LogMetrics,
|
|
20
20
|
ColorScheme,
|
|
21
|
-
} from '../../types/logger';
|
|
21
|
+
} from '../../types/logger.js';
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
LogFilter,
|
|
11
11
|
LogMetrics,
|
|
12
12
|
ColorScheme,
|
|
13
|
-
} from '../../types/logger';
|
|
13
|
+
} from '../../types/logger.js';
|
|
14
14
|
|
|
15
15
|
export class MoroLogger implements Logger {
|
|
16
16
|
private level: LogLevel = 'info';
|
|
@@ -343,6 +343,11 @@ export class MoroLogger implements Logger {
|
|
|
343
343
|
context?: string,
|
|
344
344
|
metadata?: Record<string, any>
|
|
345
345
|
): void {
|
|
346
|
+
// Prevent logging after destroy() is called (important for test cleanup)
|
|
347
|
+
if (this.isDestroyed) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
|
|
346
351
|
// Quick level check - use parent level if available (for child loggers)
|
|
347
352
|
const effectiveLevel = this.parent ? this.parent.level : this.level;
|
|
348
353
|
if (MoroLogger.LEVELS[level] < MoroLogger.LEVELS[effectiveLevel as LogLevel]) {
|
|
@@ -739,6 +744,9 @@ export class MoroLogger implements Logger {
|
|
|
739
744
|
this.flushTimeout = setTimeout(() => {
|
|
740
745
|
this.flushBuffer();
|
|
741
746
|
}, this.flushInterval);
|
|
747
|
+
|
|
748
|
+
// Unref the timeout so it doesn't prevent process exit (important for tests)
|
|
749
|
+
this.flushTimeout.unref();
|
|
742
750
|
}
|
|
743
751
|
|
|
744
752
|
public flushBuffer(): void {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Advanced Logger Outputs
|
|
2
2
|
import { writeFile, appendFile, mkdir } from 'fs/promises';
|
|
3
3
|
import { join, dirname } from 'path';
|
|
4
|
-
import { LogEntry, LogOutput } from '../../types/logger';
|
|
4
|
+
import { LogEntry, LogOutput } from '../../types/logger.js';
|
|
5
5
|
|
|
6
6
|
// File output for persistent logging
|
|
7
7
|
export class FileOutput implements LogOutput {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// File System Cache Adapter
|
|
2
|
-
import { CacheAdapter } from '../../../../../types/cache';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CacheAdapter } from '../../../../../types/cache.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
|
+
import crypto from 'crypto';
|
|
4
5
|
|
|
5
6
|
const logger = createFrameworkLogger('FileCacheAdapter');
|
|
6
7
|
|
|
@@ -22,7 +23,6 @@ export class FileCacheAdapter implements CacheAdapter {
|
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
private getFilePath(key: string): string {
|
|
25
|
-
const crypto = require('crypto');
|
|
26
26
|
const hash = crypto.createHash('md5').update(key).digest('hex');
|
|
27
27
|
return `${this.cacheDir}/${hash}.json`;
|
|
28
28
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// Cache Adapters
|
|
2
|
-
export { MemoryCacheAdapter } from './memory';
|
|
3
|
-
export { RedisCacheAdapter } from './redis';
|
|
4
|
-
export { FileCacheAdapter } from './file';
|
|
2
|
+
export { MemoryCacheAdapter } from './memory.js';
|
|
3
|
+
export { RedisCacheAdapter } from './redis.js';
|
|
4
|
+
export { FileCacheAdapter } from './file.js';
|
|
5
5
|
|
|
6
|
-
import { MemoryCacheAdapter } from './memory';
|
|
7
|
-
import { RedisCacheAdapter } from './redis';
|
|
8
|
-
import { FileCacheAdapter } from './file';
|
|
9
|
-
import { CacheAdapter } from '../../../../../types/cache';
|
|
6
|
+
import { MemoryCacheAdapter } from './memory.js';
|
|
7
|
+
import { RedisCacheAdapter } from './redis.js';
|
|
8
|
+
import { FileCacheAdapter } from './file.js';
|
|
9
|
+
import { CacheAdapter } from '../../../../../types/cache.js';
|
|
10
10
|
|
|
11
11
|
// Adapter factory function for auto-loading
|
|
12
12
|
export function createCacheAdapter(type: string, options: any = {}): CacheAdapter {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Memory Cache Adapter
|
|
2
|
-
import { CacheAdapter } from '../../../../../types/cache';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CacheAdapter } from '../../../../../types/cache.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
4
|
|
|
5
5
|
const logger = createFrameworkLogger('MemoryCacheAdapter');
|
|
6
6
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Redis Cache Adapter
|
|
2
|
-
import { CacheAdapter } from '../../../../../types/cache';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CacheAdapter } from '../../../../../types/cache.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
|
+
import { resolveUserPackage } from '../../../../utilities/package-utils.js';
|
|
4
5
|
|
|
5
6
|
const logger = createFrameworkLogger('RedisCacheAdapter');
|
|
6
7
|
|
|
@@ -16,9 +17,22 @@ export class RedisCacheAdapter implements CacheAdapter {
|
|
|
16
17
|
keyPrefix?: string;
|
|
17
18
|
} = {}
|
|
18
19
|
) {
|
|
20
|
+
this.initPromise = this.initialize(options);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private initPromise: Promise<void>;
|
|
24
|
+
|
|
25
|
+
private async initialize(options: {
|
|
26
|
+
host?: string;
|
|
27
|
+
port?: number;
|
|
28
|
+
password?: string;
|
|
29
|
+
db?: number;
|
|
30
|
+
keyPrefix?: string;
|
|
31
|
+
}): Promise<void> {
|
|
19
32
|
try {
|
|
20
|
-
const
|
|
21
|
-
|
|
33
|
+
const redisPath = resolveUserPackage('redis');
|
|
34
|
+
const redis = await import(redisPath);
|
|
35
|
+
this.client = redis.default.createClient({
|
|
22
36
|
host: options.host || 'localhost',
|
|
23
37
|
port: options.port || 6379,
|
|
24
38
|
password: options.password,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Azure CDN Adapter
|
|
2
|
-
import { CDNAdapter } from '../../../../../types/cdn';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CDNAdapter } from '../../../../../types/cdn.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
4
|
|
|
5
5
|
const logger = createFrameworkLogger('AzureCDNAdapter');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Cloudflare CDN Adapter
|
|
2
|
-
import { CDNAdapter } from '../../../../../types/cdn';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CDNAdapter } from '../../../../../types/cdn.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
4
|
|
|
5
5
|
const logger = createFrameworkLogger('CloudflareCDNAdapter');
|
|
6
6
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// AWS CloudFront CDN Adapter
|
|
2
|
-
import { CDNAdapter } from '../../../../../types/cdn';
|
|
3
|
-
import { createFrameworkLogger } from '../../../../logger';
|
|
2
|
+
import { CDNAdapter } from '../../../../../types/cdn.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../../../logger/index.js';
|
|
4
|
+
import { resolveUserPackage } from '../../../../utilities/package-utils.js';
|
|
4
5
|
|
|
5
6
|
const logger = createFrameworkLogger('CloudFrontCDNAdapter');
|
|
6
7
|
|
|
@@ -15,16 +16,26 @@ export class CloudFrontCDNAdapter implements CDNAdapter {
|
|
|
15
16
|
distributionId: string;
|
|
16
17
|
}) {
|
|
17
18
|
this.distributionId = options.distributionId;
|
|
19
|
+
this.initPromise = this.initialize(options);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private initPromise: Promise<void>;
|
|
18
23
|
|
|
24
|
+
private async initialize(options: {
|
|
25
|
+
accessKeyId: string;
|
|
26
|
+
secretAccessKey: string;
|
|
27
|
+
region: string;
|
|
28
|
+
}): Promise<void> {
|
|
19
29
|
try {
|
|
20
|
-
const
|
|
21
|
-
AWS
|
|
30
|
+
const awsPath = resolveUserPackage('aws-sdk');
|
|
31
|
+
const AWS = await import(awsPath);
|
|
32
|
+
AWS.default.config.update({
|
|
22
33
|
accessKeyId: options.accessKeyId,
|
|
23
34
|
secretAccessKey: options.secretAccessKey,
|
|
24
35
|
region: options.region,
|
|
25
36
|
});
|
|
26
37
|
|
|
27
|
-
this.cloudfront = new AWS.CloudFront();
|
|
38
|
+
this.cloudfront = new AWS.default.CloudFront();
|
|
28
39
|
logger.info('CloudFront CDN adapter initialized', 'CloudFront');
|
|
29
40
|
} catch (error) {
|
|
30
41
|
logger.error('AWS SDK not available', 'CloudFront');
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// CDN Adapters
|
|
2
|
-
export { CloudflareCDNAdapter } from './cloudflare';
|
|
3
|
-
export { CloudFrontCDNAdapter } from './cloudfront';
|
|
4
|
-
export { AzureCDNAdapter } from './azure';
|
|
2
|
+
export { CloudflareCDNAdapter } from './cloudflare.js';
|
|
3
|
+
export { CloudFrontCDNAdapter } from './cloudfront.js';
|
|
4
|
+
export { AzureCDNAdapter } from './azure.js';
|
|
5
5
|
|
|
6
|
-
import { CloudflareCDNAdapter } from './cloudflare';
|
|
7
|
-
import { CloudFrontCDNAdapter } from './cloudfront';
|
|
8
|
-
import { AzureCDNAdapter } from './azure';
|
|
9
|
-
import { CDNAdapter } from '../../../../../types/cdn';
|
|
6
|
+
import { CloudflareCDNAdapter } from './cloudflare.js';
|
|
7
|
+
import { CloudFrontCDNAdapter } from './cloudfront.js';
|
|
8
|
+
import { AzureCDNAdapter } from './azure.js';
|
|
9
|
+
import { CDNAdapter } from '../../../../../types/cdn.js';
|
|
10
10
|
|
|
11
11
|
// Adapter factory function for auto-loading
|
|
12
12
|
export function createCDNAdapter(type: string, options: any = {}): CDNAdapter {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Adapters Index
|
|
2
|
-
export * from './cache';
|
|
3
|
-
export * from './cdn';
|
|
2
|
+
export * from './cache/index.js';
|
|
3
|
+
export * from './cdn/index.js';
|
|
4
4
|
|
|
5
5
|
// Re-export factory functions for convenience
|
|
6
|
-
export { createCacheAdapter } from './cache';
|
|
7
|
-
export { createCDNAdapter } from './cdn';
|
|
6
|
+
export { createCacheAdapter } from './cache/index.js';
|
|
7
|
+
export { createCDNAdapter } from './cdn/index.js';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Auth.js Authentication Middleware
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
5
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
5
6
|
import {
|
|
6
7
|
AuthOptions,
|
|
7
8
|
AuthProvider,
|
|
@@ -11,7 +12,8 @@ import {
|
|
|
11
12
|
OAuthProvider,
|
|
12
13
|
CredentialsProvider,
|
|
13
14
|
EmailProvider,
|
|
14
|
-
} from '../../../types/auth';
|
|
15
|
+
} from '../../../types/auth.js';
|
|
16
|
+
import { safeVerifyJWT, createAuthErrorResponse } from './jwt-helpers.js';
|
|
15
17
|
|
|
16
18
|
const logger = createFrameworkLogger('AuthMiddleware');
|
|
17
19
|
|
|
@@ -186,27 +188,59 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
|
|
|
186
188
|
session = await authInstance.getSession({ req: { ...req, token } });
|
|
187
189
|
}
|
|
188
190
|
} catch (error: any) {
|
|
189
|
-
// Handle specific JWT errors gracefully
|
|
191
|
+
// Handle specific JWT errors gracefully and return proper HTTP responses
|
|
190
192
|
if (error.name === 'TokenExpiredError') {
|
|
191
193
|
logger.debug('JWT token expired', 'TokenValidation', {
|
|
192
194
|
message: error.message,
|
|
193
195
|
expiredAt: error.expiredAt,
|
|
194
196
|
});
|
|
197
|
+
|
|
198
|
+
// If this is a protected route request, return a proper 401 response
|
|
199
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
200
|
+
return res.status(401).json(
|
|
201
|
+
createAuthErrorResponse({
|
|
202
|
+
type: 'expired',
|
|
203
|
+
message: error.message,
|
|
204
|
+
expiredAt: error.expiredAt,
|
|
205
|
+
})
|
|
206
|
+
);
|
|
207
|
+
}
|
|
195
208
|
} else if (error.name === 'JsonWebTokenError') {
|
|
196
209
|
logger.debug('Invalid JWT token format', 'TokenValidation', {
|
|
197
210
|
message: error.message,
|
|
198
211
|
});
|
|
212
|
+
|
|
213
|
+
// If this is a protected route request, return a proper 401 response
|
|
214
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
215
|
+
return res.status(401).json(
|
|
216
|
+
createAuthErrorResponse({
|
|
217
|
+
type: 'invalid',
|
|
218
|
+
message: error.message,
|
|
219
|
+
})
|
|
220
|
+
);
|
|
221
|
+
}
|
|
199
222
|
} else if (error.name === 'NotBeforeError') {
|
|
200
223
|
logger.debug('JWT token not active yet', 'TokenValidation', {
|
|
201
224
|
message: error.message,
|
|
202
225
|
date: error.date,
|
|
203
226
|
});
|
|
227
|
+
|
|
228
|
+
// If this is a protected route request, return a proper 401 response
|
|
229
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
230
|
+
return res.status(401).json(
|
|
231
|
+
createAuthErrorResponse({
|
|
232
|
+
type: 'malformed',
|
|
233
|
+
message: error.message,
|
|
234
|
+
date: error.date,
|
|
235
|
+
})
|
|
236
|
+
);
|
|
237
|
+
}
|
|
204
238
|
} else {
|
|
205
239
|
logger.debug('JWT token validation failed', 'TokenValidation', {
|
|
206
240
|
error: error.message || error,
|
|
207
241
|
});
|
|
208
242
|
}
|
|
209
|
-
// Continue with unauthenticated state -
|
|
243
|
+
// Continue with unauthenticated state for non-API requests
|
|
210
244
|
}
|
|
211
245
|
}
|
|
212
246
|
|
|
@@ -298,44 +332,34 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
|
|
|
298
332
|
},
|
|
299
333
|
|
|
300
334
|
verifyJWT: async (token: string) => {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
335
|
+
const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret || '';
|
|
336
|
+
|
|
337
|
+
// Use the safe JWT verification function
|
|
338
|
+
const result = await safeVerifyJWT(token, secret);
|
|
339
|
+
|
|
340
|
+
if (!result.success) {
|
|
341
|
+
// Create a custom error that includes the structured error information
|
|
342
|
+
const customError = new Error(result.error?.message || 'JWT verification failed');
|
|
343
|
+
|
|
344
|
+
// Add the error type information for upstream handling
|
|
345
|
+
(customError as any).jwtErrorType = result.error?.type;
|
|
346
|
+
(customError as any).jwtErrorDetails = result.error;
|
|
347
|
+
|
|
348
|
+
// Map the safe error types back to standard JWT error names for compatibility
|
|
349
|
+
if (result.error?.type === 'expired') {
|
|
350
|
+
customError.name = 'TokenExpiredError';
|
|
351
|
+
(customError as any).expiredAt = result.error.expiredAt;
|
|
352
|
+
} else if (result.error?.type === 'invalid') {
|
|
353
|
+
customError.name = 'JsonWebTokenError';
|
|
354
|
+
} else if (result.error?.type === 'malformed') {
|
|
355
|
+
customError.name = 'NotBeforeError';
|
|
356
|
+
(customError as any).date = result.error.date;
|
|
357
|
+
}
|
|
311
358
|
|
|
312
|
-
|
|
313
|
-
if (!secret) {
|
|
314
|
-
throw new Error(
|
|
315
|
-
'JWT verification requires a secret. ' +
|
|
316
|
-
'Please set JWT_SECRET environment variable, or provide jwt.secret or secret in auth config.'
|
|
317
|
-
);
|
|
359
|
+
throw customError;
|
|
318
360
|
}
|
|
319
361
|
|
|
320
|
-
|
|
321
|
-
const decoded = jwt.verify(token, secret);
|
|
322
|
-
return decoded;
|
|
323
|
-
} catch (error: any) {
|
|
324
|
-
// Handle specific JWT errors gracefully
|
|
325
|
-
if (error.name === 'TokenExpiredError') {
|
|
326
|
-
// Token expired - handled gracefully by auth middleware
|
|
327
|
-
throw error;
|
|
328
|
-
} else if (error.name === 'JsonWebTokenError') {
|
|
329
|
-
// Invalid token format
|
|
330
|
-
throw error;
|
|
331
|
-
} else if (error.name === 'NotBeforeError') {
|
|
332
|
-
// Token not active yet
|
|
333
|
-
throw error;
|
|
334
|
-
} else {
|
|
335
|
-
// Other JWT errors
|
|
336
|
-
throw new Error(`JWT verification failed: ${error.message}`);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
362
|
+
return result.payload;
|
|
339
363
|
},
|
|
340
364
|
|
|
341
365
|
signIn: async (provider?: string, options?: any) => {
|
|
@@ -355,7 +379,6 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
|
|
|
355
379
|
|
|
356
380
|
getCsrfToken: async () => {
|
|
357
381
|
// Basic CSRF token generation
|
|
358
|
-
const crypto = require('crypto');
|
|
359
382
|
return crypto.randomBytes(32).toString('hex');
|
|
360
383
|
},
|
|
361
384
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Built-in Cache Middleware
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
4
|
+
import { CacheAdapter, CacheOptions, CachedResponse } from '../../../types/cache.js';
|
|
5
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
6
|
+
import { createCacheAdapter } from './adapters/cache/index.js';
|
|
6
7
|
|
|
7
8
|
const logger = createFrameworkLogger('CacheMiddleware');
|
|
8
9
|
|
|
@@ -197,7 +198,6 @@ export const cache = (options: CacheOptions = {}): MiddlewareInterface => ({
|
|
|
197
198
|
// Add ETag generation
|
|
198
199
|
if (options.etag !== false) {
|
|
199
200
|
res.generateETag = (content: string | Buffer) => {
|
|
200
|
-
const crypto = require('crypto');
|
|
201
201
|
const hash = crypto.createHash('md5').update(content).digest('hex');
|
|
202
202
|
const prefix = options.etag === 'weak' ? 'W/' : '';
|
|
203
203
|
return `${prefix}"${hash}"`;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Built-in CDN Middleware
|
|
2
|
-
import { MiddlewareInterface, HookContext } from '../../../types/hooks';
|
|
3
|
-
import { CDNAdapter, CDNOptions } from '../../../types/cdn';
|
|
4
|
-
import { createFrameworkLogger } from '../../logger';
|
|
5
|
-
import { createCDNAdapter } from './adapters/cdn';
|
|
2
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
3
|
+
import { CDNAdapter, CDNOptions } from '../../../types/cdn.js';
|
|
4
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
5
|
+
import { createCDNAdapter } from './adapters/cdn/index.js';
|
|
6
6
|
|
|
7
7
|
const logger = createFrameworkLogger('CDNMiddleware');
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Cookie Middleware
|
|
2
|
-
import { MiddlewareInterface, HookContext } from '../../../types/hooks';
|
|
3
|
-
import { createFrameworkLogger } from '../../logger';
|
|
2
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
4
4
|
|
|
5
5
|
const logger = createFrameworkLogger('CookieMiddleware');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// CORS Middleware
|
|
2
|
-
import { MiddlewareInterface, HookContext } from '../../../types/hooks';
|
|
3
|
-
import { createFrameworkLogger } from '../../logger';
|
|
2
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
3
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
4
4
|
|
|
5
5
|
const logger = createFrameworkLogger('CorsMiddleware');
|
|
6
6
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Content Security Policy Middleware
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
4
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
4
5
|
|
|
5
6
|
const logger = createFrameworkLogger('CSPMiddleware');
|
|
6
7
|
|
|
@@ -58,7 +59,6 @@ export const csp = (
|
|
|
58
59
|
// Generate nonce if requested
|
|
59
60
|
let nonce: string | undefined;
|
|
60
61
|
if (options.nonce) {
|
|
61
|
-
const crypto = require('crypto');
|
|
62
62
|
nonce = crypto.randomBytes(16).toString('base64');
|
|
63
63
|
req.cspNonce = nonce;
|
|
64
64
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// CSRF Protection Middleware
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
|
|
4
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
4
5
|
|
|
5
6
|
const logger = createFrameworkLogger('CSRFMiddleware');
|
|
6
7
|
|
|
@@ -33,7 +34,6 @@ export const csrf = (
|
|
|
33
34
|
const ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
|
|
34
35
|
|
|
35
36
|
const generateToken = () => {
|
|
36
|
-
const crypto = require('crypto');
|
|
37
37
|
return crypto.randomBytes(tokenLength).toString('hex');
|
|
38
38
|
};
|
|
39
39
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// Built-in Middleware Exports
|
|
2
|
-
export { auth } from './auth';
|
|
3
|
-
export { rateLimit } from './rate-limit';
|
|
4
|
-
export { cors } from './cors';
|
|
5
|
-
export { validation } from './validation';
|
|
6
|
-
export { requestLogger } from './request-logger';
|
|
7
|
-
export { performanceMonitor } from './performance-monitor';
|
|
8
|
-
export { errorTracker } from './error-tracker';
|
|
2
|
+
export { auth } from './auth.js';
|
|
3
|
+
export { rateLimit } from './rate-limit.js';
|
|
4
|
+
export { cors } from './cors.js';
|
|
5
|
+
export { validation } from './validation.js';
|
|
6
|
+
export { requestLogger } from './request-logger.js';
|
|
7
|
+
export { performanceMonitor } from './performance-monitor.js';
|
|
8
|
+
export { errorTracker } from './error-tracker.js';
|
|
9
9
|
|
|
10
10
|
// Advanced Security & Performance Middleware
|
|
11
|
-
export { cookie } from './cookie';
|
|
12
|
-
export { csrf } from './csrf';
|
|
13
|
-
export { csp } from './csp';
|
|
14
|
-
export { sse } from './sse';
|
|
15
|
-
export { session } from './session';
|
|
11
|
+
export { cookie } from './cookie.js';
|
|
12
|
+
export { csrf } from './csrf.js';
|
|
13
|
+
export { csp } from './csp.js';
|
|
14
|
+
export { sse } from './sse.js';
|
|
15
|
+
export { session } from './session.js';
|
|
16
16
|
|
|
17
17
|
// Clean Architecture Middleware
|
|
18
|
-
export { cache } from './cache';
|
|
19
|
-
export { cdn } from './cdn';
|
|
18
|
+
export { cache } from './cache.js';
|
|
19
|
+
export { cdn } from './cdn.js';
|
|
20
20
|
|
|
21
21
|
// Auth Helpers and Extended Providers
|
|
22
22
|
export {
|
|
@@ -31,7 +31,7 @@ export {
|
|
|
31
31
|
authUtils,
|
|
32
32
|
authResponses,
|
|
33
33
|
sessionHelpers,
|
|
34
|
-
} from './auth-helpers';
|
|
34
|
+
} from './auth-helpers.js';
|
|
35
35
|
|
|
36
36
|
// JWT Utilities for Custom Middleware
|
|
37
37
|
export {
|
|
@@ -39,30 +39,30 @@ export {
|
|
|
39
39
|
extractJWTFromHeader,
|
|
40
40
|
createAuthErrorResponse,
|
|
41
41
|
type JWTVerificationResult,
|
|
42
|
-
} from './jwt-helpers';
|
|
42
|
+
} from './jwt-helpers.js';
|
|
43
43
|
|
|
44
44
|
export {
|
|
45
45
|
extendedProviders,
|
|
46
46
|
enterpriseProviders,
|
|
47
47
|
createCustomOAuthProvider,
|
|
48
48
|
createCustomOIDCProvider,
|
|
49
|
-
} from './auth-providers';
|
|
49
|
+
} from './auth-providers.js';
|
|
50
50
|
|
|
51
51
|
// Import for collections
|
|
52
|
-
import { auth } from './auth';
|
|
53
|
-
import { rateLimit } from './rate-limit';
|
|
54
|
-
import { cors } from './cors';
|
|
55
|
-
import { validation } from './validation';
|
|
56
|
-
import { requestLogger } from './request-logger';
|
|
57
|
-
import { performanceMonitor } from './performance-monitor';
|
|
58
|
-
import { errorTracker } from './error-tracker';
|
|
59
|
-
import { cookie } from './cookie';
|
|
60
|
-
import { csrf } from './csrf';
|
|
61
|
-
import { csp } from './csp';
|
|
62
|
-
import { sse } from './sse';
|
|
63
|
-
import { session } from './session';
|
|
64
|
-
import { cache } from './cache';
|
|
65
|
-
import { cdn } from './cdn';
|
|
52
|
+
import { auth } from './auth.js';
|
|
53
|
+
import { rateLimit } from './rate-limit.js';
|
|
54
|
+
import { cors } from './cors.js';
|
|
55
|
+
import { validation } from './validation.js';
|
|
56
|
+
import { requestLogger } from './request-logger.js';
|
|
57
|
+
import { performanceMonitor } from './performance-monitor.js';
|
|
58
|
+
import { errorTracker } from './error-tracker.js';
|
|
59
|
+
import { cookie } from './cookie.js';
|
|
60
|
+
import { csrf } from './csrf.js';
|
|
61
|
+
import { csp } from './csp.js';
|
|
62
|
+
import { sse } from './sse.js';
|
|
63
|
+
import { session } from './session.js';
|
|
64
|
+
import { cache } from './cache.js';
|
|
65
|
+
import { cdn } from './cdn.js';
|
|
66
66
|
|
|
67
67
|
export const builtInMiddleware = {
|
|
68
68
|
auth,
|