@morojs/moro 1.6.0 → 1.6.1
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 +256 -74
- package/dist/core/auth/morojs-adapter.js +20 -20
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/file-loader.d.ts +6 -1
- package/dist/core/config/file-loader.js +249 -19
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +12 -41
- package/dist/core/config/index.js +54 -65
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/loader.d.ts +7 -0
- package/dist/core/config/loader.js +269 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.d.ts +2 -2
- package/dist/core/config/schema.js +44 -52
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +3 -10
- package/dist/core/config/utils.js +58 -31
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/config/validation.d.ts +17 -0
- package/dist/core/config/validation.js +131 -0
- package/dist/core/config/validation.js.map +1 -0
- package/dist/core/database/adapters/drizzle.d.ts +1 -1
- package/dist/core/database/adapters/drizzle.js +11 -18
- 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 +29 -19
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -13
- package/dist/core/database/adapters/mongodb.js +10 -46
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -14
- package/dist/core/database/adapters/mysql.js +9 -19
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +2 -12
- package/dist/core/database/adapters/postgresql.js +9 -19
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +1 -12
- package/dist/core/database/adapters/redis.js +13 -48
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.d.ts +1 -3
- package/dist/core/database/adapters/sqlite.js +8 -19
- 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 +18 -2
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.d.ts +9 -9
- package/dist/core/docs/index.js +35 -14
- 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 +16 -11
- 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 +11 -5
- 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 +9 -4
- 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 +29 -26
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +28 -31
- 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 +10 -6
- 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 +5 -1
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +12 -19
- package/dist/core/framework.js +100 -277
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +1 -13
- package/dist/core/http/http-server.js +85 -175
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/index.d.ts +3 -4
- package/dist/core/http/index.js +8 -3
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/router.d.ts +1 -13
- package/dist/core/http/router.js +43 -117
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/logger/filters.d.ts +1 -1
- package/dist/core/logger/filters.js +23 -20
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +3 -3
- package/dist/core/logger/index.js +24 -2
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +14 -30
- package/dist/core/logger/logger.js +223 -398
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.d.ts +1 -1
- package/dist/core/logger/outputs.js +17 -8
- 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 +47 -10
- 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 +17 -10
- 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 +7 -3
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -3
- package/dist/core/middleware/built-in/adapters/cache/redis.js +9 -11
- 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 +7 -3
- 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 +7 -3
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -3
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +10 -12
- 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 +17 -10
- 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 +23 -4
- package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth-helpers.js +22 -11
- 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 +9 -4
- 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 +26 -93
- 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 +12 -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 +9 -5
- 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 +7 -3
- 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 +7 -3
- 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 +8 -5
- 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 +8 -5
- package/dist/core/middleware/built-in/csrf.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker.js +7 -3
- package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
- package/dist/core/middleware/built-in/index.d.ts +27 -28
- package/dist/core/middleware/built-in/index.js +78 -48
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor.js +7 -3
- 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 +7 -3
- package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger.js +8 -5
- 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 +15 -11
- 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 +14 -12
- 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 +7 -3
- 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 +28 -8
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +2 -19
- package/dist/core/modules/auto-discovery.js +74 -391
- 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 +9 -2
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.d.ts +3 -3
- package/dist/core/modules/modules.js +54 -23
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/index.d.ts +3 -4
- package/dist/core/networking/adapters/index.js +7 -3
- 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 +40 -5
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
- package/dist/core/networking/adapters/ws-adapter.js +43 -8
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.d.ts +2 -3
- package/dist/core/networking/index.js +7 -2
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +12 -8
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.js +2 -1
- 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 +11 -9
- 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 +12 -7
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +2 -22
- package/dist/core/routing/index.js +27 -185
- 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 +6 -2
- 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 +7 -3
- 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 +6 -2
- 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 +35 -22
- 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 +49 -18
- 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 +6 -2
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.js +5 -1
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +22 -12
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +2 -2
- package/dist/core/utilities/hooks.js +12 -7
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.d.ts +4 -5
- package/dist/core/utilities/index.js +19 -5
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/validation/adapters.d.ts +1 -1
- package/dist/core/validation/adapters.js +26 -15
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/index.d.ts +4 -6
- package/dist/core/validation/index.js +28 -57
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js +9 -3
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/index.d.ts +52 -51
- package/dist/index.js +132 -23
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +10 -61
- package/dist/moro.js +237 -575
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.js +9 -3
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js +2 -1
- package/dist/types/cdn.js +2 -1
- package/dist/types/config.d.ts +2 -70
- package/dist/types/config.js +2 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.d.ts +42 -36
- package/dist/types/core.js +2 -1
- package/dist/types/database.js +2 -1
- package/dist/types/discovery.js +2 -1
- package/dist/types/events.js +2 -1
- package/dist/types/hooks.d.ts +1 -1
- package/dist/types/hooks.js +2 -1
- package/dist/types/http.d.ts +1 -16
- package/dist/types/http.js +2 -1
- package/dist/types/logger.d.ts +0 -7
- package/dist/types/logger.js +2 -1
- package/dist/types/module.d.ts +0 -11
- package/dist/types/module.js +2 -1
- package/dist/types/runtime.d.ts +1 -1
- package/dist/types/runtime.js +2 -1
- package/dist/types/session.js +2 -1
- package/package.json +52 -19
- package/src/core/auth/morojs-adapter.ts +13 -18
- package/src/core/config/file-loader.ts +273 -13
- package/src/core/config/index.ts +34 -83
- package/src/core/config/loader.ts +633 -0
- package/src/core/config/schema.ts +33 -44
- package/src/core/config/utils.ts +31 -24
- package/src/core/config/validation.ts +140 -0
- package/src/core/database/README.md +16 -26
- package/src/core/database/adapters/drizzle.ts +6 -18
- package/src/core/database/adapters/index.ts +13 -13
- package/src/core/database/adapters/mongodb.ts +5 -53
- package/src/core/database/adapters/mysql.ts +4 -32
- package/src/core/database/adapters/postgresql.ts +5 -30
- package/src/core/database/adapters/redis.ts +8 -61
- package/src/core/database/adapters/sqlite.ts +3 -19
- 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 +6 -3
- package/src/core/docs/simple-docs.ts +2 -2
- package/src/core/docs/swagger-ui.ts +16 -19
- 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 +67 -311
- package/src/core/http/http-server.ts +45 -190
- package/src/core/http/index.ts +3 -4
- package/src/core/http/router.ts +40 -129
- package/src/core/logger/filters.ts +5 -13
- package/src/core/logger/index.ts +3 -4
- package/src/core/logger/logger.ts +216 -435
- package/src/core/logger/outputs.ts +3 -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 +4 -18
- 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 +5 -16
- 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 +21 -102
- package/src/core/middleware/built-in/cache.ts +6 -8
- 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 +30 -38
- 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 -3
- package/src/core/middleware/built-in/session.ts +8 -7
- package/src/core/middleware/built-in/sse.ts +9 -11
- 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 +15 -478
- package/src/core/modules/index.ts +2 -2
- package/src/core/modules/modules.ts +12 -23
- package/src/core/networking/adapters/index.ts +3 -4
- package/src/core/networking/adapters/socketio-adapter.ts +3 -5
- package/src/core/networking/adapters/ws-adapter.ts +9 -8
- package/src/core/networking/index.ts +2 -3
- package/src/core/networking/service-discovery.ts +7 -6
- package/src/core/networking/websocket-manager.ts +7 -7
- package/src/core/routing/app-integration.ts +3 -3
- package/src/core/routing/index.ts +17 -201
- 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 +10 -16
- package/src/core/runtime/vercel-edge-adapter.ts +3 -3
- package/src/core/utilities/hooks.ts +3 -3
- package/src/core/utilities/index.ts +4 -5
- package/src/core/validation/adapters.ts +1 -1
- package/src/core/validation/index.ts +16 -68
- package/src/index.ts +66 -73
- package/src/moro.ts +204 -685
- package/src/types/config.ts +2 -71
- package/src/types/core.ts +47 -49
- package/src/types/hooks.ts +1 -1
- package/src/types/http.ts +1 -23
- package/src/types/logger.ts +0 -9
- package/src/types/module.ts +0 -12
- package/src/types/runtime.ts +1 -1
- package/tsconfig.json +2 -4
- package/dist/core/config/config-manager.d.ts +0 -44
- package/dist/core/config/config-manager.js +0 -104
- package/dist/core/config/config-manager.js.map +0 -1
- package/dist/core/config/config-sources.d.ts +0 -21
- package/dist/core/config/config-sources.js +0 -499
- package/dist/core/config/config-sources.js.map +0 -1
- package/dist/core/config/config-validator.d.ts +0 -21
- package/dist/core/config/config-validator.js +0 -788
- package/dist/core/config/config-validator.js.map +0 -1
- package/dist/core/http/uws-http-server.d.ts +0 -64
- package/dist/core/http/uws-http-server.js +0 -688
- package/dist/core/http/uws-http-server.js.map +0 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +0 -118
- package/dist/core/middleware/built-in/jwt-helpers.js +0 -218
- package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
- package/dist/core/networking/adapters/uws-adapter.d.ts +0 -44
- package/dist/core/networking/adapters/uws-adapter.js +0 -513
- package/dist/core/networking/adapters/uws-adapter.js.map +0 -1
- package/dist/core/utilities/package-utils.d.ts +0 -38
- package/dist/core/utilities/package-utils.js +0 -57
- package/dist/core/utilities/package-utils.js.map +0 -1
- package/jest.config.mjs +0 -41
- package/src/core/config/config-manager.ts +0 -133
- package/src/core/config/config-sources.ts +0 -596
- package/src/core/config/config-validator.ts +0 -1113
- package/src/core/http/uws-http-server.ts +0 -794
- package/src/core/middleware/built-in/jwt-helpers.ts +0 -243
- package/src/core/networking/adapters/uws-adapter.ts +0 -619
- package/src/core/utilities/package-utils.ts +0 -59
|
@@ -1,19 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.middleware = exports.MoroHttpServer = void 0;
|
|
1
37
|
// src/core/http-server.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const deflate = promisify(zlib.deflate);
|
|
10
|
-
export class MoroHttpServer {
|
|
38
|
+
const http_1 = require("http");
|
|
39
|
+
const zlib = __importStar(require("zlib"));
|
|
40
|
+
const util_1 = require("util");
|
|
41
|
+
const logger_1 = require("../logger");
|
|
42
|
+
const gzip = (0, util_1.promisify)(zlib.gzip);
|
|
43
|
+
const deflate = (0, util_1.promisify)(zlib.deflate);
|
|
44
|
+
class MoroHttpServer {
|
|
11
45
|
server;
|
|
12
46
|
routes = [];
|
|
13
47
|
globalMiddleware = [];
|
|
14
48
|
compressionEnabled = true;
|
|
15
49
|
compressionThreshold = 1024;
|
|
16
|
-
logger = createFrameworkLogger('HttpServer');
|
|
50
|
+
logger = (0, logger_1.createFrameworkLogger)('HttpServer');
|
|
17
51
|
hookManager;
|
|
18
52
|
requestCounter = 0;
|
|
19
53
|
// Efficient object pooling with minimal overhead
|
|
@@ -22,10 +56,6 @@ export class MoroHttpServer {
|
|
|
22
56
|
maxPoolSize = 50;
|
|
23
57
|
// Request handler pooling to avoid function creation overhead
|
|
24
58
|
middlewareExecutionCache = new Map();
|
|
25
|
-
// Response caching for ultra-fast common responses
|
|
26
|
-
responseCache = new Map();
|
|
27
|
-
responseCacheHits = 0;
|
|
28
|
-
responseCacheMisses = 0;
|
|
29
59
|
// String interning for common values (massive memory savings)
|
|
30
60
|
static INTERNED_METHODS = new Map([
|
|
31
61
|
['GET', 'GET'],
|
|
@@ -90,7 +120,7 @@ export class MoroHttpServer {
|
|
|
90
120
|
}
|
|
91
121
|
}
|
|
92
122
|
constructor() {
|
|
93
|
-
this.server = createServer(this.handleRequest.bind(this));
|
|
123
|
+
this.server = (0, http_1.createServer)(this.handleRequest.bind(this));
|
|
94
124
|
// Optimize server for high performance (conservative settings for compatibility)
|
|
95
125
|
this.server.keepAliveTimeout = 5000; // 5 seconds
|
|
96
126
|
this.server.headersTimeout = 6000; // 6 seconds
|
|
@@ -241,13 +271,12 @@ export class MoroHttpServer {
|
|
|
241
271
|
}
|
|
242
272
|
catch (error) {
|
|
243
273
|
// Debug: Log the actual error and where it came from
|
|
244
|
-
this.logger.debug('Request
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
});
|
|
274
|
+
this.logger.debug('🚨 MoroJS Request Error Details:', 'RequestHandler');
|
|
275
|
+
this.logger.debug(`📍 Error type: ${typeof error}`, 'RequestHandler');
|
|
276
|
+
this.logger.debug(`📍 Error message: ${error instanceof Error ? error.message : String(error)}`, 'RequestHandler');
|
|
277
|
+
this.logger.debug(`📍 Error stack: ${error instanceof Error ? error.stack : 'No stack trace'}`, 'RequestHandler');
|
|
278
|
+
this.logger.debug(`📍 Request path: ${req.url}`, 'RequestHandler');
|
|
279
|
+
this.logger.debug(`📍 Request method: ${req.method}`, 'RequestHandler');
|
|
251
280
|
this.logger.error('Request error', 'RequestHandler', {
|
|
252
281
|
error: error instanceof Error ? error.message : String(error),
|
|
253
282
|
requestId: httpReq.requestId,
|
|
@@ -271,7 +300,7 @@ export class MoroHttpServer {
|
|
|
271
300
|
}
|
|
272
301
|
else {
|
|
273
302
|
// Even setHeader doesn't exist - object is completely wrong
|
|
274
|
-
this.logger.error('Response object is not a proper ServerResponse', 'RequestHandler', {
|
|
303
|
+
this.logger.error('❌ Response object is not a proper ServerResponse:', 'RequestHandler', {
|
|
275
304
|
responseType: typeof httpRes,
|
|
276
305
|
responseKeys: Object.keys(httpRes),
|
|
277
306
|
});
|
|
@@ -284,7 +313,7 @@ export class MoroHttpServer {
|
|
|
284
313
|
}));
|
|
285
314
|
}
|
|
286
315
|
else {
|
|
287
|
-
this.logger.error('Cannot send error response - end() method missing', 'RequestHandler');
|
|
316
|
+
this.logger.error('❌ Cannot send error response - end() method missing', 'RequestHandler');
|
|
288
317
|
}
|
|
289
318
|
}
|
|
290
319
|
}
|
|
@@ -422,19 +451,6 @@ export class MoroHttpServer {
|
|
|
422
451
|
httpRes.json = async (data) => {
|
|
423
452
|
if (httpRes.headersSent)
|
|
424
453
|
return;
|
|
425
|
-
// PERFORMANCE OPTIMIZATION: Check response cache for common patterns
|
|
426
|
-
const cacheKey = this.getResponseCacheKey(data);
|
|
427
|
-
if (cacheKey) {
|
|
428
|
-
const cachedBuffer = this.responseCache.get(cacheKey);
|
|
429
|
-
if (cachedBuffer) {
|
|
430
|
-
this.responseCacheHits++;
|
|
431
|
-
httpRes.setHeader('Content-Type', 'application/json; charset=utf-8');
|
|
432
|
-
httpRes.setHeader('Content-Length', cachedBuffer.length);
|
|
433
|
-
httpRes.end(cachedBuffer);
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
this.responseCacheMisses++;
|
|
437
|
-
}
|
|
438
454
|
// Ultra-fast JSON serialization with zero-copy buffers
|
|
439
455
|
let jsonString;
|
|
440
456
|
// Enhanced JSON optimization for common API patterns
|
|
@@ -512,10 +528,6 @@ export class MoroHttpServer {
|
|
|
512
528
|
httpRes.setHeader(key, value);
|
|
513
529
|
});
|
|
514
530
|
httpRes.end(finalBuffer);
|
|
515
|
-
// PERFORMANCE OPTIMIZATION: Cache small, common responses
|
|
516
|
-
if (cacheKey && finalBuffer.length < 1024 && this.responseCache.size < 100) {
|
|
517
|
-
this.responseCache.set(cacheKey, Buffer.from(finalBuffer));
|
|
518
|
-
}
|
|
519
531
|
// Return buffer to pool after response (zero-copy achievement!)
|
|
520
532
|
process.nextTick(() => MoroHttpServer.returnBuffer(buffer));
|
|
521
533
|
};
|
|
@@ -543,24 +555,6 @@ export class MoroHttpServer {
|
|
|
543
555
|
httpRes.end(data);
|
|
544
556
|
};
|
|
545
557
|
httpRes.cookie = (name, value, options = {}) => {
|
|
546
|
-
if (httpRes.headersSent) {
|
|
547
|
-
const isCritical = options.critical ||
|
|
548
|
-
name.includes('session') ||
|
|
549
|
-
name.includes('auth') ||
|
|
550
|
-
name.includes('csrf');
|
|
551
|
-
const message = `Cookie '${name}' could not be set - headers already sent`;
|
|
552
|
-
if (isCritical || options.throwOnLateSet) {
|
|
553
|
-
throw new Error(`${message}. This may cause authentication or security issues.`);
|
|
554
|
-
}
|
|
555
|
-
else {
|
|
556
|
-
this.logger.warn(message, 'CookieWarning', {
|
|
557
|
-
cookieName: name,
|
|
558
|
-
critical: isCritical,
|
|
559
|
-
stackTrace: new Error().stack,
|
|
560
|
-
});
|
|
561
|
-
}
|
|
562
|
-
return httpRes;
|
|
563
|
-
}
|
|
564
558
|
const cookieValue = encodeURIComponent(value);
|
|
565
559
|
let cookieString = `${name}=${cookieValue}`;
|
|
566
560
|
if (options.maxAge)
|
|
@@ -600,8 +594,8 @@ export class MoroHttpServer {
|
|
|
600
594
|
if (httpRes.headersSent)
|
|
601
595
|
return;
|
|
602
596
|
try {
|
|
603
|
-
const fs = await
|
|
604
|
-
const path = await
|
|
597
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
598
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
605
599
|
const extension = path.extname(filePath);
|
|
606
600
|
const mime = await this.getMimeType(extension);
|
|
607
601
|
const stats = await fs.stat(filePath);
|
|
@@ -621,52 +615,6 @@ export class MoroHttpServer {
|
|
|
621
615
|
httpRes.status(404).json({ success: false, error: 'File not found' });
|
|
622
616
|
}
|
|
623
617
|
};
|
|
624
|
-
// Header management utilities
|
|
625
|
-
httpRes.hasHeader = (name) => {
|
|
626
|
-
return httpRes.getHeader(name) !== undefined;
|
|
627
|
-
};
|
|
628
|
-
// Note: removeHeader is inherited from ServerResponse, we don't override it
|
|
629
|
-
httpRes.setBulkHeaders = (headers) => {
|
|
630
|
-
if (httpRes.headersSent) {
|
|
631
|
-
this.logger.warn('Cannot set headers - headers already sent', 'HeaderWarning', {
|
|
632
|
-
attemptedHeaders: Object.keys(headers),
|
|
633
|
-
});
|
|
634
|
-
return httpRes;
|
|
635
|
-
}
|
|
636
|
-
Object.entries(headers).forEach(([key, value]) => {
|
|
637
|
-
httpRes.setHeader(key, value);
|
|
638
|
-
});
|
|
639
|
-
return httpRes;
|
|
640
|
-
};
|
|
641
|
-
httpRes.appendHeader = (name, value) => {
|
|
642
|
-
if (httpRes.headersSent) {
|
|
643
|
-
this.logger.warn(`Cannot append to header '${name}' - headers already sent`, 'HeaderWarning');
|
|
644
|
-
return httpRes;
|
|
645
|
-
}
|
|
646
|
-
const existing = httpRes.getHeader(name);
|
|
647
|
-
if (existing) {
|
|
648
|
-
const values = Array.isArray(existing) ? existing : [existing.toString()];
|
|
649
|
-
const newValues = Array.isArray(value) ? value : [value];
|
|
650
|
-
httpRes.setHeader(name, [...values, ...newValues]);
|
|
651
|
-
}
|
|
652
|
-
else {
|
|
653
|
-
httpRes.setHeader(name, value);
|
|
654
|
-
}
|
|
655
|
-
return httpRes;
|
|
656
|
-
};
|
|
657
|
-
// Response state utilities
|
|
658
|
-
httpRes.canSetHeaders = () => {
|
|
659
|
-
return !httpRes.headersSent;
|
|
660
|
-
};
|
|
661
|
-
httpRes.getResponseState = () => {
|
|
662
|
-
return {
|
|
663
|
-
headersSent: httpRes.headersSent,
|
|
664
|
-
statusCode: httpRes.statusCode,
|
|
665
|
-
headers: httpRes.getHeaders ? httpRes.getHeaders() : {},
|
|
666
|
-
finished: httpRes.finished || false,
|
|
667
|
-
writable: httpRes.writable,
|
|
668
|
-
};
|
|
669
|
-
};
|
|
670
618
|
return httpRes;
|
|
671
619
|
}
|
|
672
620
|
async getMimeType(ext) {
|
|
@@ -876,9 +824,7 @@ export class MoroHttpServer {
|
|
|
876
824
|
if (!nextCalled)
|
|
877
825
|
next();
|
|
878
826
|
})
|
|
879
|
-
.catch(
|
|
880
|
-
reject(error);
|
|
881
|
-
});
|
|
827
|
+
.catch(reject);
|
|
882
828
|
}
|
|
883
829
|
}
|
|
884
830
|
catch (error) {
|
|
@@ -912,44 +858,10 @@ export class MoroHttpServer {
|
|
|
912
858
|
getServer() {
|
|
913
859
|
return this.server;
|
|
914
860
|
}
|
|
915
|
-
// PERFORMANCE OPTIMIZATION: Generate cache key for common response patterns
|
|
916
|
-
getResponseCacheKey(data) {
|
|
917
|
-
// Only cache simple, common responses
|
|
918
|
-
if (!data || typeof data !== 'object') {
|
|
919
|
-
// Simple primitives or strings - generate key
|
|
920
|
-
const key = JSON.stringify(data);
|
|
921
|
-
return key.length < 100 ? key : null;
|
|
922
|
-
}
|
|
923
|
-
// Common API response patterns
|
|
924
|
-
if ('hello' in data && Object.keys(data).length <= 2) {
|
|
925
|
-
// Hello world type responses
|
|
926
|
-
return `hello:${JSON.stringify(data)}`;
|
|
927
|
-
}
|
|
928
|
-
if ('status' in data && Object.keys(data).length <= 3) {
|
|
929
|
-
// Status responses like {status: "ok", version: "1.0.0"}
|
|
930
|
-
return `status:${JSON.stringify(data)}`;
|
|
931
|
-
}
|
|
932
|
-
if ('success' in data && 'message' in data && Object.keys(data).length <= 3) {
|
|
933
|
-
// Simple success/error responses
|
|
934
|
-
return `msg:${data.success}:${data.message}`;
|
|
935
|
-
}
|
|
936
|
-
// Don't cache complex objects
|
|
937
|
-
return null;
|
|
938
|
-
}
|
|
939
|
-
// Performance statistics
|
|
940
|
-
getPerformanceStats() {
|
|
941
|
-
return {
|
|
942
|
-
responseCacheHits: this.responseCacheHits,
|
|
943
|
-
responseCacheMisses: this.responseCacheMisses,
|
|
944
|
-
responseCacheSize: this.responseCache.size,
|
|
945
|
-
paramObjectPoolSize: this.paramObjectPool.length,
|
|
946
|
-
bufferPoolSize: this.bufferPool.length,
|
|
947
|
-
middlewareExecutionCacheSize: this.middlewareExecutionCache.size,
|
|
948
|
-
};
|
|
949
|
-
}
|
|
950
861
|
}
|
|
862
|
+
exports.MoroHttpServer = MoroHttpServer;
|
|
951
863
|
// Built-in middleware
|
|
952
|
-
|
|
864
|
+
exports.middleware = {
|
|
953
865
|
cors: (options = {}) => {
|
|
954
866
|
return (req, res, next) => {
|
|
955
867
|
res.setHeader('Access-Control-Allow-Origin', options.origin || '*');
|
|
@@ -977,6 +889,7 @@ export const middleware = {
|
|
|
977
889
|
};
|
|
978
890
|
},
|
|
979
891
|
compression: (options = {}) => {
|
|
892
|
+
const zlib = require('zlib');
|
|
980
893
|
const threshold = options.threshold || 1024;
|
|
981
894
|
const level = options.level || 6;
|
|
982
895
|
return (req, res, next) => {
|
|
@@ -991,26 +904,24 @@ export const middleware = {
|
|
|
991
904
|
return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
|
|
992
905
|
}
|
|
993
906
|
if (acceptEncoding.includes('gzip')) {
|
|
907
|
+
res.setHeader('Content-Encoding', 'gzip');
|
|
994
908
|
zlib.gzip(buffer, { level }, (err, compressed) => {
|
|
995
909
|
if (err) {
|
|
996
910
|
return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
|
|
997
911
|
}
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
res.setHeader('Content-Length', compressed.length);
|
|
1001
|
-
}
|
|
912
|
+
res.setHeader('Content-Length', compressed.length);
|
|
913
|
+
res.writeHead(res.statusCode || 200, res.getHeaders());
|
|
1002
914
|
res.end(compressed);
|
|
1003
915
|
});
|
|
1004
916
|
}
|
|
1005
917
|
else if (acceptEncoding.includes('deflate')) {
|
|
918
|
+
res.setHeader('Content-Encoding', 'deflate');
|
|
1006
919
|
zlib.deflate(buffer, { level }, (err, compressed) => {
|
|
1007
920
|
if (err) {
|
|
1008
921
|
return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
|
|
1009
922
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
res.setHeader('Content-Length', compressed.length);
|
|
1013
|
-
}
|
|
923
|
+
res.setHeader('Content-Length', compressed.length);
|
|
924
|
+
res.writeHead(res.statusCode || 200, res.getHeaders());
|
|
1014
925
|
res.end(compressed);
|
|
1015
926
|
});
|
|
1016
927
|
}
|
|
@@ -1065,9 +976,9 @@ export const middleware = {
|
|
|
1065
976
|
return;
|
|
1066
977
|
}
|
|
1067
978
|
try {
|
|
1068
|
-
const fs = await
|
|
1069
|
-
const path = await
|
|
1070
|
-
const crypto = await
|
|
979
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
980
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
981
|
+
const crypto = await Promise.resolve().then(() => __importStar(require('crypto')));
|
|
1071
982
|
let filePath = path.join(options.root, req.path);
|
|
1072
983
|
// Security: prevent directory traversal
|
|
1073
984
|
if (!filePath.startsWith(path.resolve(options.root))) {
|
|
@@ -1235,8 +1146,8 @@ export const middleware = {
|
|
|
1235
1146
|
// Add render method to response
|
|
1236
1147
|
res.render = async (template, data = {}) => {
|
|
1237
1148
|
try {
|
|
1238
|
-
const fs = await
|
|
1239
|
-
const path = await
|
|
1149
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
1150
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
1240
1151
|
const templatePath = path.join(options.views, `${template}.html`);
|
|
1241
1152
|
let templateContent;
|
|
1242
1153
|
// Check cache first
|
|
@@ -1354,15 +1265,13 @@ export const middleware = {
|
|
|
1354
1265
|
// Only handle SSE requests
|
|
1355
1266
|
if (req.headers.accept?.includes('text/event-stream')) {
|
|
1356
1267
|
// Set SSE headers
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
});
|
|
1365
|
-
}
|
|
1268
|
+
res.writeHead(200, {
|
|
1269
|
+
'Content-Type': 'text/event-stream',
|
|
1270
|
+
'Cache-Control': 'no-cache',
|
|
1271
|
+
Connection: 'keep-alive',
|
|
1272
|
+
'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
|
|
1273
|
+
'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
|
|
1274
|
+
});
|
|
1366
1275
|
// Add SSE methods to response
|
|
1367
1276
|
res.sendEvent = (data, event, id) => {
|
|
1368
1277
|
if (id)
|
|
@@ -1406,8 +1315,8 @@ export const middleware = {
|
|
|
1406
1315
|
// Add range support to response
|
|
1407
1316
|
res.sendRange = async (filePath, stats) => {
|
|
1408
1317
|
try {
|
|
1409
|
-
const fs = await
|
|
1410
|
-
const path = await
|
|
1318
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
1319
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
1411
1320
|
if (!stats) {
|
|
1412
1321
|
stats = await fs.stat(filePath);
|
|
1413
1322
|
}
|
|
@@ -1443,8 +1352,7 @@ export const middleware = {
|
|
|
1443
1352
|
const { start, end } = ranges[0];
|
|
1444
1353
|
const chunkSize = end - start + 1;
|
|
1445
1354
|
if (start >= fileSize || end >= fileSize) {
|
|
1446
|
-
res.status(416);
|
|
1447
|
-
res.setHeader('Content-Range', `bytes */${fileSize}`);
|
|
1355
|
+
res.status(416).setHeader('Content-Range', `bytes */${fileSize}`);
|
|
1448
1356
|
res.json({ success: false, error: 'Range not satisfiable' });
|
|
1449
1357
|
return;
|
|
1450
1358
|
}
|
|
@@ -1452,7 +1360,7 @@ export const middleware = {
|
|
|
1452
1360
|
res.setHeader('Content-Range', `bytes ${start}-${end}/${fileSize}`);
|
|
1453
1361
|
res.setHeader('Content-Length', chunkSize);
|
|
1454
1362
|
// Stream the range
|
|
1455
|
-
const stream = createReadStream(filePath, {
|
|
1363
|
+
const stream = require('fs').createReadStream(filePath, {
|
|
1456
1364
|
start,
|
|
1457
1365
|
end,
|
|
1458
1366
|
});
|
|
@@ -1469,12 +1377,12 @@ export const middleware = {
|
|
|
1469
1377
|
const chunkSize = end - start + 1;
|
|
1470
1378
|
res.write(`\r\n--${boundary}\r\n`);
|
|
1471
1379
|
res.write(`Content-Range: bytes ${start}-${end}/${fileSize}\r\n\r\n`);
|
|
1472
|
-
const stream = createReadStream(filePath, {
|
|
1380
|
+
const stream = require('fs').createReadStream(filePath, {
|
|
1473
1381
|
start,
|
|
1474
1382
|
end,
|
|
1475
1383
|
});
|
|
1476
1384
|
await new Promise(resolve => {
|
|
1477
|
-
stream.on('end',
|
|
1385
|
+
stream.on('end', resolve);
|
|
1478
1386
|
stream.pipe(res, { end: false });
|
|
1479
1387
|
});
|
|
1480
1388
|
}
|
|
@@ -1497,6 +1405,7 @@ export const middleware = {
|
|
|
1497
1405
|
const headerName = options.headerName || 'x-csrf-token';
|
|
1498
1406
|
const ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
|
|
1499
1407
|
const generateToken = () => {
|
|
1408
|
+
const crypto = require('crypto');
|
|
1500
1409
|
return crypto.randomBytes(tokenLength).toString('hex');
|
|
1501
1410
|
};
|
|
1502
1411
|
const verifyToken = (token, sessionToken) => {
|
|
@@ -1553,6 +1462,7 @@ export const middleware = {
|
|
|
1553
1462
|
// Generate nonce if requested
|
|
1554
1463
|
let nonce;
|
|
1555
1464
|
if (options.nonce) {
|
|
1465
|
+
const crypto = require('crypto');
|
|
1556
1466
|
nonce = crypto.randomBytes(16).toString('base64');
|
|
1557
1467
|
req.cspNonce = nonce;
|
|
1558
1468
|
}
|