@morojs/moro 1.8.0 → 1.8.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 +29 -38
- package/dist/core/auth/morojs-adapter.js +95 -45
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.js +8 -49
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +2 -3
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +4 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.js +2 -2
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -0
- package/dist/core/database/adapters/mongodb.js +16 -0
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -0
- package/dist/core/database/adapters/mysql.js +13 -2
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.js +2 -2
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sql-safety.js +5 -4
- package/dist/core/database/adapters/sql-safety.js.map +1 -1
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.js +11 -7
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.js +8 -6
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.js +3 -3
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +2 -2
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.js +14 -5
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +2 -2
- package/dist/core/framework.js +21 -14
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/adapter.js.map +1 -1
- package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -1
- package/dist/core/graphql/core.js.map +1 -1
- package/dist/core/graphql/index.js.map +1 -1
- package/dist/core/graphql/loader.js.map +1 -1
- package/dist/core/graphql/types.js.map +1 -1
- package/dist/core/grpc/adapters/grpc-js-adapter.js +4 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -1
- package/dist/core/grpc/adapters/index.js.map +1 -1
- package/dist/core/grpc/grpc-adapter.js.map +1 -1
- package/dist/core/grpc/grpc-manager.js.map +1 -1
- package/dist/core/grpc/index.js.map +1 -1
- package/dist/core/grpc/middleware/auth.js +1 -1
- package/dist/core/grpc/middleware/auth.js.map +1 -1
- package/dist/core/grpc/middleware/logging.js.map +1 -1
- package/dist/core/grpc/middleware/validation.js +1 -1
- package/dist/core/grpc/middleware/validation.js.map +1 -1
- package/dist/core/grpc/types.d.ts +7 -7
- package/dist/core/grpc/types.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -13
- package/dist/core/http/http-server.js +34 -141
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.js +27 -5
- package/dist/core/http/http2-server.js.map +1 -1
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/moro-engine-server.d.ts +2 -2
- package/dist/core/http/moro-engine-server.js +48 -22
- package/dist/core/http/moro-engine-server.js.map +1 -1
- package/dist/core/http/utils/compression.js +3 -3
- package/dist/core/http/utils/compression.js.map +1 -1
- package/dist/core/http/utils/lazy-event-emitter.js.map +1 -1
- package/dist/core/http/utils/multipart-parser.js +7 -3
- package/dist/core/http/utils/multipart-parser.js.map +1 -1
- package/dist/core/http/utils/query-parser.js.map +1 -1
- package/dist/core/http/utils/size.js +2 -2
- package/dist/core/http/utils/size.js.map +1 -1
- package/dist/core/http/utils/ssl-config.d.ts +10 -10
- package/dist/core/http/utils/ssl-config.js.map +1 -1
- package/dist/core/http/utils/uws-worker-clustering.js +37 -30
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +1 -0
- package/dist/core/http/uws-http-server.js +80 -22
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/cron-parser.js +7 -5
- package/dist/core/jobs/cron-parser.js.map +1 -1
- package/dist/core/jobs/index.js.map +1 -1
- package/dist/core/jobs/job-executor.d.ts +1 -1
- package/dist/core/jobs/job-executor.js.map +1 -1
- package/dist/core/jobs/job-scheduler.d.ts +3 -3
- package/dist/core/jobs/job-scheduler.js.map +1 -1
- package/dist/core/jobs/job-state-manager.d.ts +3 -3
- package/dist/core/jobs/job-state-manager.js +25 -4
- package/dist/core/jobs/job-state-manager.js.map +1 -1
- package/dist/core/jobs/leader-election.d.ts +15 -0
- package/dist/core/jobs/leader-election.js +158 -69
- package/dist/core/jobs/leader-election.js.map +1 -1
- package/dist/core/jobs/types.d.ts +4 -4
- package/dist/core/jobs/types.js.map +1 -1
- package/dist/core/jobs/utils.d.ts +1 -1
- package/dist/core/jobs/utils.js +7 -3
- package/dist/core/jobs/utils.js.map +1 -1
- package/dist/core/logger/filters.js +3 -2
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.js +56 -25
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/mail/adapters/console-adapter.js.map +1 -1
- package/dist/core/mail/adapters/index.js.map +1 -1
- package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
- package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
- package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
- package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
- package/dist/core/mail/index.js.map +1 -1
- package/dist/core/mail/mail-adapter.js.map +1 -1
- package/dist/core/mail/mail-manager.d.ts +10 -0
- package/dist/core/mail/mail-manager.js +21 -5
- package/dist/core/mail/mail-manager.js.map +1 -1
- package/dist/core/mail/template-engine.js.map +1 -1
- package/dist/core/mail/types.js.map +1 -1
- package/dist/core/middleware/built-in/auth/core.js +3 -3
- package/dist/core/middleware/built-in/auth/core.js.map +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js +4 -4
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
- package/dist/core/middleware/built-in/auth/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
- package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/core.js +2 -2
- package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/core.js.map +1 -1
- package/dist/core/middleware/built-in/cache/hook.js +3 -3
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/compression/core.js.map +1 -1
- package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
- package/dist/core/middleware/built-in/compression/index.js.map +1 -1
- package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cors/core.js.map +1 -1
- package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cors/index.js.map +1 -1
- package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csp/core.js.map +1 -1
- package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csp/index.js.map +1 -1
- package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/core.js +1 -1
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/http2/core.js.map +1 -1
- package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
- package/dist/core/middleware/built-in/http2/index.js.map +1 -1
- package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/range/core.js +4 -1
- package/dist/core/middleware/built-in/range/core.js.map +1 -1
- package/dist/core/middleware/built-in/range/hook.js.map +1 -1
- package/dist/core/middleware/built-in/range/index.js.map +1 -1
- package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/session/core.js +4 -4
- package/dist/core/middleware/built-in/session/core.js.map +1 -1
- package/dist/core/middleware/built-in/session/hook.js.map +1 -1
- package/dist/core/middleware/built-in/session/index.js.map +1 -1
- package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/sse/core.js.map +1 -1
- package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
- package/dist/core/middleware/built-in/sse/index.js.map +1 -1
- package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/static/core.js.map +1 -1
- package/dist/core/middleware/built-in/static/hook.js.map +1 -1
- package/dist/core/middleware/built-in/static/index.js.map +1 -1
- package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/template/core.js +1 -1
- package/dist/core/middleware/built-in/template/core.js.map +1 -1
- package/dist/core/middleware/built-in/template/hook.js.map +1 -1
- package/dist/core/middleware/built-in/template/index.js.map +1 -1
- package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/upload/core.js.map +1 -1
- package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
- package/dist/core/middleware/built-in/upload/index.js.map +1 -1
- package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/validation/core.js.map +1 -1
- package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
- package/dist/core/middleware/built-in/validation/index.js.map +1 -1
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
- package/dist/core/middleware/index.js +2 -2
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.js +11 -7
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.js +18 -13
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/engine-adapter.js +30 -2
- package/dist/core/networking/adapters/engine-adapter.js.map +1 -1
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
- package/dist/core/networking/adapters/socketio-adapter.js +12 -1
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +1 -1
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
- package/dist/core/networking/adapters/ws-adapter.js +120 -6
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -5
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.d.ts +22 -3
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.js +70 -67
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.js +6 -0
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
- package/dist/core/queue/adapters/index.js.map +1 -1
- package/dist/core/queue/adapters/kafka-adapter.js +2 -2
- package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
- package/dist/core/queue/adapters/memory-adapter.js +6 -6
- package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
- package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
- package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
- package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
- package/dist/core/queue/adapters/sqs-adapter.js +75 -24
- package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/queue/middleware/index.js.map +1 -1
- package/dist/core/queue/middleware/monitoring.d.ts +1 -1
- package/dist/core/queue/middleware/monitoring.js.map +1 -1
- package/dist/core/queue/middleware/priority.js +2 -1
- package/dist/core/queue/middleware/priority.js.map +1 -1
- package/dist/core/queue/middleware/rate-limit.js.map +1 -1
- package/dist/core/queue/queue-adapter.js.map +1 -1
- package/dist/core/queue/queue-manager.js.map +1 -1
- package/dist/core/queue/types.d.ts +8 -8
- package/dist/core/queue/types.js.map +1 -1
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/create-router.js.map +1 -1
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.js.map +1 -1
- package/dist/core/routing/radix-tree.js.map +1 -1
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/routing/unified-router.js +12 -4
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +2 -2
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +19 -17
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +2 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.d.ts +1 -0
- package/dist/core/utilities/circuit-breaker.js +25 -2
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +9 -9
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.js +28 -6
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/module-path.js.map +1 -1
- package/dist/core/utilities/package-utils.js +1 -1
- package/dist/core/utilities/package-utils.js.map +1 -1
- package/dist/core/utilities/response-helpers.js +1 -1
- package/dist/core/utilities/response-helpers.js.map +1 -1
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/error-handler.js.map +1 -1
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/core/workers/facade.js.map +1 -1
- package/dist/core/workers/index.js.map +1 -1
- package/dist/core/workers/worker-entry.d.ts +1 -0
- package/dist/core/workers/worker-entry.js +12 -0
- package/dist/core/workers/worker-entry.js.map +1 -0
- package/dist/core/workers/worker-manager.d.ts +23 -2
- package/dist/core/workers/worker-manager.js +117 -17
- package/dist/core/workers/worker-manager.js.map +1 -1
- package/dist/core/workers/worker.js +8 -6
- package/dist/core/workers/worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +18 -1
- package/dist/moro.js +168 -50
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.d.ts +4 -4
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js.map +1 -1
- package/dist/types/cdn.js.map +1 -1
- package/dist/types/config.d.ts +10 -10
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/database.js.map +1 -1
- package/dist/types/discovery.js.map +1 -1
- package/dist/types/events.js.map +1 -1
- package/dist/types/hooks.js.map +1 -1
- package/dist/types/http.js.map +1 -1
- package/dist/types/logger.js.map +1 -1
- package/dist/types/module.js.map +1 -1
- package/dist/types/runtime.js.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/package.json +29 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/hook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/hook.ts"],"names":[],"mappings":"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","sourcesContent":["// GraphQL Middleware - Hook-based integration\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { GraphQLCore } from '../../../graphql/core.js';\nimport type { MiddlewareInterface } from '../../index.js';\nimport type { HookContext } from '../../../../types/hooks.js';\nimport type { GraphQLOptions } from '../../../graphql/types.js';\n\nconst logger = createFrameworkLogger('GraphQLHook');\n\n/**\n * GraphQL Hook Middleware\n * Provides hook-based GraphQL integration with MoroJS middleware system\n */\nexport const graphql = (options: GraphQLOptions): MiddlewareInterface => ({\n name: 'graphql',\n version: '1.0.0',\n metadata: {\n name: 'graphql',\n version: '1.0.0',\n description: 'GraphQL middleware with Pothos support and GraphQL-JIT performance optimization',\n author: 'MoroJS Team',\n dependencies: ['graphql'],\n tags: ['graphql', 'api', 'pothos', 'performance'],\n },\n\n install: async (hooks: any, middlewareOptions: Partial<GraphQLOptions> = {}) => {\n logger.debug('Installing GraphQL middleware', 'Installation', { options: middlewareOptions });\n\n const config = { ...options, ...middlewareOptions };\n const graphqlCore = new GraphQLCore(config);\n\n // Initialize GraphQL\n await graphqlCore.initialize();\n\n const graphqlPath = config.path || '/graphql';\n const playgroundPath = config.playgroundPath || `${graphqlPath}/playground`;\n const enablePlayground =\n config.enablePlayground !== false && process.env.NODE_ENV !== 'production';\n\n logger.info('GraphQL endpoint configured', 'Configuration', {\n graphqlPath,\n playgroundPath: enablePlayground ? playgroundPath : 'disabled',\n jit: graphqlCore.getStats()?.jit?.enabled || false,\n });\n\n // Register hooks for request processing\n hooks.before('request', async (context: HookContext) => {\n const req = context.request as any;\n const res = context.response as any;\n\n // Handle GraphQL Playground\n if (enablePlayground && req.path === playgroundPath && req.method === 'GET') {\n logger.debug('Serving GraphQL Playground', 'Playground');\n res.setHeader('Content-Type', 'text/html');\n res.status(200).send(graphqlCore.getPlaygroundHTML());\n return; // Stop processing\n }\n\n // Handle GraphQL endpoint\n if (req.path === graphqlPath) {\n logger.debug('Processing GraphQL request', 'Request', {\n method: req.method,\n operationName: req.body?.operationName,\n });\n\n // Handle OPTIONS for CORS\n if (req.method === 'OPTIONS') {\n res.status(200).end();\n return;\n }\n\n // Only allow GET and POST\n if (req.method !== 'GET' && req.method !== 'POST') {\n res.status(405).json({\n errors: [{ message: 'GraphQL only supports GET and POST requests' }],\n });\n return;\n }\n\n // Execute GraphQL request\n await graphqlCore.handleRequest(req, res);\n return; // Stop processing\n }\n\n // Not a GraphQL request, continue\n });\n\n // Expose GraphQL stats via context\n hooks.after('request', async (context: HookContext) => {\n const req = context.request as any;\n\n if (req.path === graphqlPath && req.graphqlMetrics) {\n logger.debug('GraphQL request completed', 'Metrics', req.graphqlMetrics);\n }\n });\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// GraphQL Middleware - Main exports\nexport { graphql } from './hook.js';\nexport { createGraphQLMiddleware } from './middleware.js';\nexport { GraphQLCore, getSharedGraphQLCore, resetSharedGraphQLCore } from './core.js';\n\n// Re-export GraphQL types for convenience\nexport type * from '../../../graphql/types.js';\nexport type {\n GraphQLSchema,\n GraphQLObjectType,\n GraphQLFieldResolver,\n GraphQLResolveInfo,\n GraphQLError,\n} from 'graphql';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,WAAW,aAAa,CAAC;IAC7E,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE9E,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,8BAA8B;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/B,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,gBAAgB,EAAE;gBAC9D,WAAW;gBACX,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;gBAC9D,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,IAAI,KAAK;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,GAAU,CAAC;QAE1B,4BAA4B;QAC5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9E,GAAW,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACnD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;iBACrE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,WAAW,aAAa,CAAC;IAC7E,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE9E,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,8BAA8B;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/B,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,gBAAgB,EAAE;gBAC9D,WAAW;gBACX,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;gBAC9D,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,IAAI,KAAK;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,GAAU,CAAC;QAE1B,4BAA4B;QAC5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9E,GAAW,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACnD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;iBACrE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// GraphQL Middleware - Standard middleware integration\nimport { StandardMiddleware } from '../../../../types/hooks.js';\nimport { GraphQLCore } from '../../../graphql/core.js';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport type { HttpRequest, HttpResponse } from '../../../../types/http.js';\nimport type { GraphQLOptions } from '../../../graphql/types.js';\n\nconst logger = createFrameworkLogger('GraphQLMiddleware');\n\n/**\n * Create GraphQL standard middleware\n * For use in standard middleware chains (req, res, next)\n */\nexport function createGraphQLMiddleware(options: GraphQLOptions): StandardMiddleware {\n const graphqlCore = new GraphQLCore(options);\n let initialized = false;\n\n const graphqlPath = options.path || '/graphql';\n const playgroundPath = options.playgroundPath || `${graphqlPath}/playground`;\n const enablePlayground =\n options.enablePlayground !== false && process.env.NODE_ENV !== 'production';\n\n return async (req: HttpRequest, res: HttpResponse, next: () => Promise<void>) => {\n // Initialize on first request\n if (!initialized) {\n await graphqlCore.initialize();\n initialized = true;\n\n logger.info('GraphQL middleware initialized', 'Initialization', {\n graphqlPath,\n playgroundPath: enablePlayground ? playgroundPath : 'disabled',\n jit: graphqlCore.getStats()?.jit?.enabled || false,\n });\n }\n\n const reqAny = req as any;\n\n // Handle GraphQL Playground\n if (enablePlayground && reqAny.path === playgroundPath && req.method === 'GET') {\n (res as any).setHeader('Content-Type', 'text/html');\n (res as any).status(200).send(graphqlCore.getPlaygroundHTML());\n return;\n }\n\n // Handle GraphQL endpoint\n if (reqAny.path === graphqlPath) {\n // Handle OPTIONS for CORS\n if (req.method === 'OPTIONS') {\n (res as any).status(200).end();\n return;\n }\n\n // Only allow GET and POST\n if (req.method !== 'GET' && req.method !== 'POST') {\n (res as any).status(405).json({\n errors: [{ message: 'GraphQL only supports GET and POST requests' }],\n });\n return;\n }\n\n // Execute GraphQL request\n await graphqlCore.handleRequest(req, res);\n return;\n }\n\n // Not a GraphQL request, continue\n await next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/subscriptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wCAAwC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC7B,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,YAAY,OAAY,EAAE,eAAqB;QAC7C,MAAM,CAAC,IAAI,CACT,yEAAyE,EACzE,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,QAAQ;IACV,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,iBAAsB,EACtB,MAAW,EACX,WAAgB,EAAE;IAElB,MAAM,CAAC,IAAI,CACT,wEAAwE,EACxE,eAAe,CAChB,CAAC;IACF,OAAO,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/subscriptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wCAAwC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC7B,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,YAAY,OAAY,EAAE,eAAqB;QAC7C,MAAM,CAAC,IAAI,CACT,yEAAyE,EACzE,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,QAAQ;IACV,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,iBAAsB,EACtB,MAAW,EACX,WAAgB,EAAE;IAElB,MAAM,CAAC,IAAI,CACT,wEAAwE,EACxE,eAAe,CAChB,CAAC;IACF,OAAO,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC","sourcesContent":["// GraphQL WebSocket Subscriptions Support\n// TODO: Refactor to use adapter pattern\nimport { createFrameworkLogger } from '../../../logger/index.js';\n\nconst logger = createFrameworkLogger('GraphQLSubscriptions');\n\n/**\n * GraphQL Subscription Manager\n * Handles WebSocket-based GraphQL subscriptions\n *\n * NOTE: This needs to be refactored to use the new adapter pattern.\n * For now, subscriptions are disabled pending refactor.\n */\nexport class GraphQLSubscriptionManager {\n private subscriptions = new Map<string, any>();\n\n constructor(_schema: any, _contextFactory?: any) {\n logger.warn(\n 'GraphQL subscriptions are temporarily disabled pending adapter refactor',\n 'Subscriptions'\n );\n }\n\n // Placeholder methods\n async subscribe() {\n throw new Error('GraphQL subscriptions temporarily disabled');\n }\n\n unsubscribe() {\n // no-op\n }\n\n cleanup() {\n this.subscriptions.clear();\n }\n}\n\n/**\n * Setup GraphQL subscriptions on WebSocket\n *\n * NOTE: Temporarily disabled pending refactor to adapter pattern\n */\nexport function setupGraphQLSubscriptions(\n _websocketManager: any,\n schema: any,\n _options: any = {}\n): GraphQLSubscriptionManager {\n logger.warn(\n 'GraphQL subscriptions setup called but feature is temporarily disabled',\n 'Subscriptions'\n );\n return new GraphQLSubscriptionManager(schema);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/core.ts"],"names":[],"mappings":"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","sourcesContent":["// Helmet Security Headers Core Logic\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nexport interface HelmetOptions {\n contentSecurityPolicy?: boolean | Record<string, string[]>;\n xFrameOptions?: boolean | 'DENY' | 'SAMEORIGIN';\n xContentTypeOptions?: boolean;\n xXssProtection?: boolean;\n referrerPolicy?: boolean | string;\n strictTransportSecurity?: boolean | { maxAge?: number; includeSubDomains?: boolean };\n xDownloadOptions?: boolean;\n xPermittedCrossDomainPolicies?: boolean;\n}\n\nexport class HelmetCore {\n private options: Required<HelmetOptions>;\n\n constructor(options: HelmetOptions = {}) {\n this.options = {\n contentSecurityPolicy: options.contentSecurityPolicy ?? true,\n xFrameOptions: options.xFrameOptions ?? 'DENY',\n xContentTypeOptions: options.xContentTypeOptions ?? true,\n xXssProtection: options.xXssProtection ?? true,\n referrerPolicy: options.referrerPolicy ?? 'strict-origin-when-cross-origin',\n strictTransportSecurity: options.strictTransportSecurity ?? {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n xDownloadOptions: options.xDownloadOptions ?? true,\n xPermittedCrossDomainPolicies: options.xPermittedCrossDomainPolicies ?? true,\n };\n }\n\n applyHeaders(req: HttpRequest, res: HttpResponse): void {\n // X-Content-Type-Options\n if (this.options.xContentTypeOptions) {\n res.setHeader('X-Content-Type-Options', 'nosniff');\n }\n\n // X-Frame-Options\n if (this.options.xFrameOptions) {\n const value =\n typeof this.options.xFrameOptions === 'string' ? this.options.xFrameOptions : 'DENY';\n res.setHeader('X-Frame-Options', value);\n }\n\n // X-XSS-Protection\n if (this.options.xXssProtection) {\n res.setHeader('X-XSS-Protection', '1; mode=block');\n }\n\n // Referrer-Policy\n if (this.options.referrerPolicy) {\n const value =\n typeof this.options.referrerPolicy === 'string'\n ? this.options.referrerPolicy\n : 'strict-origin-when-cross-origin';\n res.setHeader('Referrer-Policy', value);\n }\n\n // Strict-Transport-Security (HSTS)\n if (this.options.strictTransportSecurity) {\n const hsts =\n typeof this.options.strictTransportSecurity === 'object'\n ? this.options.strictTransportSecurity\n : { maxAge: 31536000, includeSubDomains: true };\n\n const value = `max-age=${hsts.maxAge || 31536000}${hsts.includeSubDomains ? '; includeSubDomains' : ''}`;\n res.setHeader('Strict-Transport-Security', value);\n }\n\n // Content-Security-Policy\n if (this.options.contentSecurityPolicy) {\n let cspValue = \"default-src 'self'\";\n\n if (typeof this.options.contentSecurityPolicy === 'object') {\n const directives: string[] = [];\n for (const [directive, sources] of Object.entries(this.options.contentSecurityPolicy)) {\n const kebabDirective = directive.replace(/([A-Z])/g, '-$1').toLowerCase();\n directives.push(`${kebabDirective} ${sources.join(' ')}`);\n }\n cspValue = directives.join('; ');\n }\n\n res.setHeader('Content-Security-Policy', cspValue);\n }\n\n // X-Download-Options\n if (this.options.xDownloadOptions) {\n res.setHeader('X-Download-Options', 'noopen');\n }\n\n // X-Permitted-Cross-Domain-Policies\n if (this.options.xPermittedCrossDomainPolicies) {\n res.setHeader('X-Permitted-Cross-Domain-Policies', 'none');\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/hook.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,MAAM,UAAU,mBAAmB,CAAC,WAAgB,EAAE,UAAyB,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAErC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/hook.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,MAAM,UAAU,mBAAmB,CAAC,WAAgB,EAAE,UAAyB,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAErC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Helmet Hook Integration\nimport { HelmetCore, HelmetOptions } from './core.js';\n\nexport function registerHelmetHooks(hookManager: any, options: HelmetOptions = {}): void {\n const core = new HelmetCore(options);\n\n hookManager.on('request', async (context: any) => {\n const { request, response } = context;\n if (!request || !response) return;\n\n core.applyHeaders(request, response);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,sBAAsB,CAAC","sourcesContent":["// Helmet Middleware - Centralized Exports\nexport { HelmetCore } from './core.js';\nexport type { HelmetOptions } from './core.js';\nexport { createHelmetMiddleware } from './middleware.js';\nexport { registerHelmetHooks } from './hook.js';\n\nimport { createHelmetMiddleware } from './middleware.js';\n\nexport const helmet = createHelmetMiddleware;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAyB,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAyB,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Helmet Security Headers Middleware\nimport { Middleware } from '../../../../types/http.js';\nimport { HelmetCore, HelmetOptions } from './core.js';\n\n/**\n * Create Helmet security headers middleware\n *\n * @example\n * ```typescript\n * import { helmet } from '@morojs/moro';\n *\n * app.use(helmet({\n * contentSecurityPolicy: {\n * defaultSrc: [\"'self'\"],\n * scriptSrc: [\"'self'\", \"'unsafe-inline'\"],\n * },\n * strictTransportSecurity: {\n * maxAge: 31536000,\n * includeSubDomains: true,\n * },\n * }));\n * ```\n */\nexport function createHelmetMiddleware(options: HelmetOptions = {}): Middleware {\n const core = new HelmetCore(options);\n\n return (req, res, next) => {\n core.applyHeaders(req, res);\n next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/core.ts"],"names":[],"mappings":"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","sourcesContent":["// HTTP/2 Server Push Core Logic\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nexport interface Http2PushOptions {\n resources?: Array<{\n path: string;\n as: string;\n type?: string;\n priority?: number;\n }>;\n condition?: (req: HttpRequest) => boolean;\n autoDetect?: boolean;\n}\n\nexport interface Http2PushResult {\n pushed: string[];\n failed: string[];\n}\n\nexport class Http2PushCore {\n private options: Http2PushOptions;\n\n constructor(options: Http2PushOptions = {}) {\n this.options = options;\n }\n\n /**\n * Add push capability to response object\n */\n addPushCapability(req: HttpRequest, res: HttpResponse): void {\n // Add HTTP/2 push capability to response\n (res as any).push = (path: string, pushOptions: any = {}) => {\n // Check if HTTP/2 is supported\n if (req.httpVersion === '2.0' && (res as any).stream && (res as any).stream.pushAllowed) {\n try {\n const pushHeaders: any = {\n ':method': 'GET',\n ':path': path,\n ...pushOptions.headers,\n };\n\n const pushStream = (res as any).stream.pushStream(pushHeaders);\n\n if (pushStream) {\n // Set priority if specified\n if (pushOptions.priority !== undefined) {\n try {\n const weight = Math.max(1, Math.min(256, pushOptions.priority));\n (pushStream as any).priority({\n parent: 0,\n weight,\n exclusive: false,\n });\n } catch {\n // Priority setting failed, continue\n }\n }\n\n return pushStream;\n }\n } catch {\n // Push failed, continue normally\n }\n }\n return null;\n };\n }\n\n /**\n * Auto-detect and push resources from HTML\n */\n setupAutoDetect(req: HttpRequest, res: HttpResponse): void {\n if (!this.options.autoDetect || !req.path.endsWith('.html')) {\n return;\n }\n\n // Will push resources after HTML is rendered\n const originalSend = res.send;\n res.send = function (data: any) {\n if (typeof data === 'string' && req.httpVersion === '2.0') {\n // Extract CSS and JS from HTML\n const cssMatches = data.match(/<link[^>]+href=[\"']([^\"']+\\.css)[\"']/g) || [];\n const jsMatches = data.match(/<script[^>]+src=[\"']([^\"']+\\.js)[\"']/g) || [];\n\n // Push CSS files (high priority)\n for (const match of cssMatches) {\n const pathMatch = match.match(/href=[\"']([^\"']+)[\"']/);\n if (pathMatch) {\n (res as any).push?.(pathMatch[1], {\n headers: { 'content-type': 'text/css' },\n priority: 200, // High priority\n });\n }\n }\n\n // Push JS files (medium priority)\n for (const match of jsMatches) {\n const pathMatch = match.match(/src=[\"']([^\"']+)[\"']/);\n if (pathMatch) {\n (res as any).push?.(pathMatch[1], {\n headers: { 'content-type': 'application/javascript' },\n priority: 150, // Medium priority\n });\n }\n }\n }\n return originalSend.call(res, data);\n };\n }\n\n /**\n * Push configured resources\n */\n pushConfiguredResources(req: HttpRequest, res: HttpResponse): Http2PushResult {\n const result: Http2PushResult = {\n pushed: [],\n failed: [],\n };\n\n if (!this.options.resources) {\n return result;\n }\n\n // Check condition if provided\n if (this.options.condition && !this.options.condition(req)) {\n return result;\n }\n\n // Push each configured resource\n for (const resource of this.options.resources) {\n try {\n const pushStream = (res as any).push?.(resource.path, {\n headers: {\n 'content-type': resource.type || 'text/plain',\n },\n priority: resource.priority,\n });\n\n if (pushStream) {\n result.pushed.push(resource.path);\n } else {\n result.failed.push(resource.path);\n }\n } catch {\n result.failed.push(resource.path);\n }\n }\n\n return result;\n }\n\n /**\n * Check if HTTP/2 is available\n */\n isHttp2Available(req: HttpRequest, res: HttpResponse): boolean {\n return req.httpVersion === '2.0' && (res as any).push !== undefined;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/hook.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAgB,EAAE,UAA4B,EAAE;IACjF,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE1C,oBAAoB;QACpB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAExC,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7C,0BAA0B;YAC1B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/hook.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAgB,EAAE,UAA4B,EAAE;IACjF,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE1C,oBAAoB;QACpB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAExC,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7C,0BAA0B;YAC1B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// HTTP/2 Hook Integration\nimport { Http2PushCore, Http2PushOptions } from './core.js';\n\n/**\n * Register HTTP/2 hooks with the hook manager\n */\nexport function registerHttp2Hooks(hookManager: any, options: Http2PushOptions = {}): void {\n const core = new Http2PushCore(options);\n\n // Hook: Add HTTP/2 capabilities to response\n hookManager.on('request', async (context: any) => {\n const { request, response } = context;\n\n if (!request || !response) {\n return;\n }\n\n // Add push capability\n core.addPushCapability(request, response);\n\n // Setup auto-detect\n core.setupAutoDetect(request, response);\n\n // Push configured resources\n core.pushConfiguredResources(request, response);\n });\n\n // Hook: Log HTTP/2 metrics\n hookManager.on('response', async (context: any) => {\n const { request, response } = context;\n\n if (!request || !response) {\n return;\n }\n\n // Track HTTP/2 usage\n if (core.isHttp2Available(request, response)) {\n // Could emit metrics here\n context.http2Used = true;\n }\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,sBAAsB;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,yBAAyB;CAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,sBAAsB;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,yBAAyB;CAChC,CAAC","sourcesContent":["// HTTP/2 Middleware - Centralized Exports\nexport { Http2PushCore } from './core.js';\nexport type { Http2PushOptions, Http2PushResult } from './core.js';\nexport { createHttp2PushMiddleware } from './middleware.js';\nexport { registerHttp2Hooks } from './hook.js';\n\n// Convenience exports\nimport { createHttp2PushMiddleware } from './middleware.js';\n\nexport const http2 = {\n push: createHttp2PushMiddleware,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA4B,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjC,kCAAkC;QAClC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE/B,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/http2/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA4B,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjC,kCAAkC;QAClC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE/B,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// HTTP/2 Server Push Middleware\nimport { Middleware } from '../../../../types/http.js';\nimport { Http2PushCore, Http2PushOptions } from './core.js';\n\n/**\n * Create HTTP/2 Server Push middleware\n *\n * @example\n * ```typescript\n * import { http2 } from '@morojs/moro';\n *\n * app.use(http2.push({\n * autoDetect: true,\n * resources: [\n * { path: '/styles/main.css', as: 'style', type: 'text/css', priority: 200 },\n * { path: '/scripts/app.js', as: 'script', type: 'application/javascript', priority: 150 },\n * ],\n * condition: (req) => req.path === '/' || req.path.endsWith('.html'),\n * }));\n * ```\n */\nexport function createHttp2PushMiddleware(options: Http2PushOptions = {}): Middleware {\n const core = new Http2PushCore(options);\n\n return (req, res, next) => {\n // Add push capability to response\n core.addPushCapability(req, res);\n\n // Setup auto-detection if enabled\n core.setupAutoDetect(req, res);\n\n // Push configured resources\n core.pushConfiguredResources(req, res);\n\n next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Built-in Middleware Exports\nexport { auth } from './auth/index.js';\nexport { rateLimit } from './rate-limit/index.js';\nexport { cors, corsHook } from './cors/index.js';\nexport { validation } from './validation/index.js';\nexport { requestLogger } from './request-logger/index.js';\nexport { performanceMonitor } from './performance-monitor/index.js';\nexport { errorTracker } from './error-tracker/index.js';\n\n// Advanced Security & Performance Middleware\nexport { cookie } from './cookie/index.js';\nexport { csrf } from './csrf/index.js';\nexport { csp } from './csp/index.js';\nexport { sse } from './sse/index.js';\nexport { session } from './session/index.js';\n\n// Clean Architecture Middleware\nexport { cache } from './cache/index.js';\nexport { cdn } from './cdn/index.js';\n\n// HTTP/2 Middleware\nexport { http2 } from './http2/index.js';\n\n// HTTP Utilities Middleware\nexport { helmet } from './helmet/index.js';\nexport { compression } from './compression/index.js';\nexport { bodySize } from './body-size/index.js';\nexport { json, urlencoded } from './body-parsers/index.js';\nexport { staticFiles } from './static/index.js';\nexport { upload } from './upload/index.js';\nexport { template } from './template/index.js';\nexport { range } from './range/index.js';\n\n// Auth Helpers and Extended Providers\nexport {\n requireAuth,\n requireRole,\n requirePermission,\n requireAdmin,\n guestOnly,\n optionalAuth,\n withAuth,\n protectedRoute,\n authUtils,\n authResponses,\n sessionHelpers,\n} from './auth/helpers.js';\n\n// JWT Utilities for Custom Middleware\nexport {\n safeVerifyJWT,\n extractJWTFromHeader,\n createAuthErrorResponse,\n type JWTVerificationResult,\n} from './auth/jwt-helpers.js';\n\nexport {\n extendedProviders,\n enterpriseProviders,\n createCustomOAuthProvider,\n createCustomOIDCProvider,\n} from './auth/providers.js';\n\n// Import for collections\nimport { auth } from './auth/index.js';\nimport { rateLimit } from './rate-limit/index.js';\nimport { corsHook } from './cors/index.js';\nimport { validation } from './validation/index.js';\nimport { requestLogger } from './request-logger/index.js';\nimport { performanceMonitor } from './performance-monitor/index.js';\nimport { errorTracker } from './error-tracker/index.js';\nimport { cookie } from './cookie/index.js';\nimport { csrf } from './csrf/index.js';\nimport { csp } from './csp/index.js';\nimport { sse } from './sse/index.js';\nimport { session } from './session/index.js';\nimport { cache } from './cache/index.js';\nimport { cdn } from './cdn/index.js';\nimport { graphql } from './graphql/index.js';\nimport { http2 } from './http2/index.js';\nimport { helmet } from './helmet/index.js';\nimport { compression } from './compression/index.js';\nimport { bodySize } from './body-size/index.js';\nimport { staticFiles } from './static/index.js';\nimport { upload } from './upload/index.js';\nimport { template } from './template/index.js';\nimport { range } from './range/index.js';\n\nexport const builtInMiddleware = {\n auth,\n rateLimit,\n cors: corsHook,\n validation,\n // Advanced middleware\n cookie,\n csrf,\n csp,\n sse,\n session,\n // Clean architecture middleware\n cache,\n cdn,\n // GraphQL\n graphql,\n // HTTP/2\n http2,\n // HTTP Utilities\n helmet,\n compression,\n bodySize,\n staticFiles,\n upload,\n template,\n range,\n};\n\nexport const simpleMiddleware = {\n requestLogger,\n performanceMonitor,\n errorTracker,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/performance-monitor/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,gDAAgD;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/performance-monitor/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,gDAAgD;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Performance Monitor - Main entry point\n// Re-exports the performance monitor middleware\n\nexport { performanceMonitor } from './middleware.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/performance-monitor/middleware.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAgB,EAAE,GAAiB,EAAE,IAAgB,EAAQ,EAAE;IAChG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,oBAAoB;QACpB,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,IAAI,SAAS,QAAQ,IAAI,EAAE,aAAa,EAAE;gBAClF,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/performance-monitor/middleware.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAgB,EAAE,GAAiB,EAAE,IAAgB,EAAQ,EAAE;IAChG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,oBAAoB;QACpB,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,IAAI,SAAS,QAAQ,IAAI,EAAE,aAAa,EAAE;gBAClF,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC,CAAC","sourcesContent":["// Performance Monitor Middleware\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nconst logger = createFrameworkLogger('PerformanceMonitor');\n\n/**\n * Performance monitoring middleware\n * Tracks request duration and logs warnings for slow requests\n *\n * @example\n * ```ts\n * import { performanceMonitor } from '@/middleware/built-in/performance-monitor';\n *\n * app.use(performanceMonitor);\n * ```\n */\nexport const performanceMonitor = (req: HttpRequest, res: HttpResponse, next: () => void): void => {\n const startTime = Date.now();\n\n res.on('finish', () => {\n const duration = Date.now() - startTime;\n\n // Log slow requests\n if (duration > 1000) {\n logger.warn(`Slow request detected: ${req.path} took ${duration}ms`, 'SlowRequest', {\n path: req.path,\n method: req.method,\n duration,\n });\n }\n });\n\n next();\n};\n"]}
|
|
@@ -39,7 +39,10 @@ export class RangeCore {
|
|
|
39
39
|
}
|
|
40
40
|
if (ranges.length === 1) {
|
|
41
41
|
// Single range
|
|
42
|
-
|
|
42
|
+
const [firstRange] = ranges;
|
|
43
|
+
if (firstRange) {
|
|
44
|
+
await this.sendSingleRange(filePath, fileSize, firstRange, res);
|
|
45
|
+
}
|
|
43
46
|
}
|
|
44
47
|
else {
|
|
45
48
|
// Multiple ranges - multipart response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAOtC,MAAM,OAAO,SAAS;IACZ,YAAY,CAAS;IACrB,SAAS,CAAS;IAE1B,YAAY,UAAwB,EAAE;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,GAAgB,EAAE,GAAiB;QAC/C,GAAW,CAAC,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,KAAW,EAAE,EAAE;YAC/D,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAEhC,2BAA2B;gBAC3B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAElD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,uCAAuC;oBACvC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;oBAC1C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,qBAAqB;gBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAEtD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,QAAQ,EAAE,CAAC,CAAC;oBACtD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBAED,kBAAkB;gBAClB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBACnE,OAAO;gBACT,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,eAAe;oBACf,MAAM,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/core.ts"],"names":[],"mappings":"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","sourcesContent":["// HTTP Range Requests Core Logic\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\nimport * as fs from 'fs/promises';\nimport { createReadStream } from 'fs';\n\nexport interface RangeOptions {\n acceptRanges?: string;\n maxRanges?: number;\n}\n\nexport class RangeCore {\n private acceptRanges: string;\n private maxRanges: number;\n\n constructor(options: RangeOptions = {}) {\n this.acceptRanges = options.acceptRanges || 'bytes';\n this.maxRanges = options.maxRanges || 1;\n }\n\n addRangeMethod(req: HttpRequest, res: HttpResponse): void {\n (res as any).sendRange = async (filePath: string, stats?: any) => {\n try {\n if (!stats) {\n stats = await fs.stat(filePath);\n }\n\n const fileSize = stats.size;\n const range = req.headers.range;\n\n // Set Accept-Ranges header\n res.setHeader('Accept-Ranges', this.acceptRanges);\n\n if (!range) {\n // No range requested, send entire file\n res.setHeader('Content-Length', fileSize);\n const data = await fs.readFile(filePath);\n res.end(data);\n return;\n }\n\n // Parse range header\n const ranges = this.parseRangeHeader(range, fileSize);\n\n if (!ranges) {\n res.status(416);\n res.setHeader('Content-Range', `bytes */${fileSize}`);\n res.json({ success: false, error: 'Range not satisfiable' });\n return;\n }\n\n // Validate ranges\n if (ranges.length > this.maxRanges) {\n res.status(416).json({ success: false, error: 'Too many ranges' });\n return;\n }\n\n if (ranges.length === 1) {\n // Single range\n const [firstRange] = ranges;\n if (firstRange) {\n await this.sendSingleRange(filePath, fileSize, firstRange, res);\n }\n } else {\n // Multiple ranges - multipart response\n await this.sendMultipleRanges(filePath, fileSize, ranges, res);\n }\n } catch (error) {\n res.status(500).json({\n success: false,\n error: 'Range request failed',\n details: error instanceof Error ? error.message : String(error),\n });\n }\n };\n }\n\n private parseRangeHeader(\n range: string,\n fileSize: number\n ): Array<{ start: number; end: number }> | null {\n // Validate range count before parsing to prevent DoS via excessive commas\n let commaCount = 0;\n for (let i = 0; i < range.length; i++) {\n if (range.charCodeAt(i) === 44) commaCount++;\n }\n if (commaCount + 1 > this.maxRanges) {\n return null;\n }\n\n const ranges = range\n .replace(/bytes=/, '')\n .split(',')\n .map(r => {\n const [start, end] = r.split('-');\n return {\n start: start ? parseInt(start) : 0,\n end: end ? parseInt(end) : fileSize - 1,\n };\n });\n\n // Validate ranges\n for (const r of ranges) {\n if (r.start >= fileSize || r.end >= fileSize || r.start > r.end) {\n return null;\n }\n }\n\n return ranges;\n }\n\n private async sendSingleRange(\n filePath: string,\n fileSize: number,\n range: { start: number; end: number },\n res: HttpResponse\n ): Promise<void> {\n const { start, end } = range;\n const chunkSize = end - start + 1;\n\n res.status(206);\n res.setHeader('Content-Range', `bytes ${start}-${end}/${fileSize}`);\n res.setHeader('Content-Length', chunkSize);\n\n // Stream the range\n const stream = createReadStream(filePath, { start, end });\n stream.pipe(res);\n }\n\n private async sendMultipleRanges(\n filePath: string,\n fileSize: number,\n ranges: Array<{ start: number; end: number }>,\n res: HttpResponse\n ): Promise<void> {\n const boundary = 'MULTIPART_BYTERANGES';\n res.status(206);\n res.setHeader('Content-Type', `multipart/byteranges; boundary=${boundary}`);\n\n for (const { start, end } of ranges) {\n if (start >= fileSize || end >= fileSize) continue;\n\n res.write(`\\r\\n--${boundary}\\r\\n`);\n res.write(`Content-Range: bytes ${start}-${end}/${fileSize}\\r\\n\\r\\n`);\n\n const stream = createReadStream(filePath, { start, end });\n await new Promise<void>(resolve => {\n stream.on('end', () => resolve());\n stream.pipe(res, { end: false });\n });\n }\n res.write(`\\r\\n--${boundary}--\\r\\n`);\n res.end();\n }\n\n getAcceptRanges(): string {\n return this.acceptRanges;\n }\n\n getMaxRanges(): number {\n return this.maxRanges;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/hook.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,WAAgB,EAAE,UAAwB,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/hook.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,WAAgB,EAAE,UAAwB,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Range Requests Hook Integration\nimport { RangeCore, RangeOptions } from './core.js';\n\nexport function registerRangeHooks(hookManager: any, options: RangeOptions = {}): void {\n const core = new RangeCore(options);\n\n hookManager.on('request', async (context: any) => {\n const { request, response } = context;\n if (!request || !response) return;\n\n core.addRangeMethod(request, response);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,KAAK,GAAG,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,KAAK,GAAG,qBAAqB,CAAC","sourcesContent":["// Range Requests Middleware - Centralized Exports\nexport { RangeCore } from './core.js';\nexport type { RangeOptions } from './core.js';\nexport { createRangeMiddleware } from './middleware.js';\nexport { registerRangeHooks } from './hook.js';\n\nimport { createRangeMiddleware } from './middleware.js';\n\nexport const range = createRangeMiddleware;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwB,EAAE;IAC9D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/range/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwB,EAAE;IAC9D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// HTTP Range Requests Middleware\nimport { Middleware } from '../../../../types/http.js';\nimport { RangeCore, RangeOptions } from './core.js';\n\n/**\n * Create HTTP range requests middleware\n *\n * @example\n * ```typescript\n * import { range } from '@morojs/moro';\n *\n * app.use(range({\n * acceptRanges: 'bytes',\n * maxRanges: 1,\n * }));\n *\n * app.get('/video/:file', async (req, res) => {\n * const filePath = `./videos/${req.params.file}`;\n * await res.sendRange(filePath);\n * });\n * ```\n */\nexport function createRangeMiddleware(options: RangeOptions = {}): Middleware {\n const core = new RangeCore(options);\n\n return (req, res, next) => {\n core.addRangeMethod(req, res);\n next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/core.ts"],"names":[],"mappings":"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","sourcesContent":["// Rate Limit Core - Reusable rate limiting logic\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nconst logger = createFrameworkLogger('RateLimitCore');\n\n// ===== Types =====\n\nexport interface RateLimitConfig {\n requests: number;\n window: number;\n skipSuccessfulRequests?: boolean;\n}\n\ninterface RateLimitStore {\n count: number;\n resetTime: number;\n}\n\n// ===== Core Logic =====\n\n/**\n * RateLimitCore - Core rate limiting logic\n * Used directly by the router for route-based rate limiting\n * Can be instantiated for use in middleware or hooks\n */\nexport class RateLimitCore {\n private store = new Map<string, RateLimitStore>();\n private static readonly MAX_STORE_SIZE = 100000;\n private cleanupTimer: ReturnType<typeof setInterval> | null = null;\n\n // Monotonic timestamp optimization\n private static readonly startTime = Date.now();\n\n constructor() {\n // Periodic cleanup of expired entries to prevent unbounded memory growth\n this.cleanupTimer = setInterval(() => this.evictExpired(), 60000);\n // Allow the timer to not keep the process alive\n if (this.cleanupTimer && typeof this.cleanupTimer.unref === 'function') {\n this.cleanupTimer.unref();\n }\n }\n\n /**\n * Get monotonic timestamp (smaller integers for better JIT optimization)\n */\n private static getTime(): number {\n return Date.now() - RateLimitCore.startTime;\n }\n\n /**\n * Evict expired entries from the store\n */\n private evictExpired(): void {\n const now = RateLimitCore.getTime();\n for (const [key, data] of this.store) {\n if (now > data.resetTime) {\n this.store.delete(key);\n }\n }\n }\n\n /**\n * High-level check for router use: checkLimit(req, res, config)\n * Sends response if rate limit exceeded\n */\n async checkLimit(req: HttpRequest, res: HttpResponse, config: RateLimitConfig): Promise<void> {\n // Don't send response if headers already sent\n if (res.headersSent) {\n return;\n }\n\n const clientId = req.ip || (req.connection as any)?.remoteAddress || 'unknown';\n const routeKey = `${req.method}:${req.path}`;\n\n const allowed = this.check(clientId, routeKey, config.requests, config.window);\n\n if (!allowed) {\n const retryAfter = this.getRetryAfter(clientId, routeKey);\n res.status(429).json({\n success: false,\n error: 'Rate limit exceeded',\n retryAfter,\n });\n return;\n }\n }\n\n /**\n * Low-level check method\n * Returns true if request is allowed, false if rate limit exceeded\n */\n check(clientId: string, routeKey: string, requests: number, window: number): boolean {\n const key = `${routeKey}:${clientId}`;\n const now = RateLimitCore.getTime();\n\n const limitData = this.store.get(key);\n if (!limitData) {\n // Safety cap: evict oldest entries if store exceeds max size\n if (this.store.size >= RateLimitCore.MAX_STORE_SIZE) {\n this.evictExpired();\n // If still over limit after eviction, remove oldest entry\n if (this.store.size >= RateLimitCore.MAX_STORE_SIZE) {\n const firstKey = this.store.keys().next().value;\n if (firstKey) this.store.delete(firstKey);\n }\n }\n this.store.set(key, { count: 1, resetTime: now + window });\n return true;\n }\n\n // Fast path: check if window expired\n if (now > limitData.resetTime) {\n limitData.count = 1;\n limitData.resetTime = now + window;\n return true;\n }\n\n // Check limit before incrementing\n if (limitData.count >= requests) {\n logger.warn('Rate limit exceeded', 'RateLimit', {\n clientId,\n route: routeKey,\n count: limitData.count,\n limit: requests,\n });\n return false;\n }\n\n limitData.count++;\n return true;\n }\n\n /**\n * Get retry-after time in seconds for a rate-limited client\n */\n getRetryAfter(clientId: string, routeKey: string): number {\n const key = `${routeKey}:${clientId}`;\n const limitData = this.store.get(key);\n if (limitData) {\n const now = RateLimitCore.getTime();\n return Math.ceil((limitData.resetTime - now) / 1000);\n }\n return 0;\n }\n\n /**\n * Clear all rate limit data and stop cleanup timer\n */\n clear(): void {\n this.store.clear();\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n }\n}\n\n// Shared instance for route-based rate limiting\nexport const sharedRateLimitCore = new RateLimitCore();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,UAII,EAAE,EACe,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,oDAAoD;QACjE,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,qBAA0B,EAAE,EAAE,EAAE;QAC1D,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,cAAc,EAAE;YAC/D,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,mBAAmB;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,0BAA0B;QAC1D,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;QAEjC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;YAC5D,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,EAAE,EAAE,WAAW,EAAE;oBAC9D,QAAQ;oBACR,GAAG;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,UAII,EAAE,EACe,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,oDAAoD;QACjE,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,qBAA0B,EAAE,EAAE,EAAE;QAC1D,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,cAAc,EAAE;YAC/D,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,mBAAmB;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,0BAA0B;QAC1D,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;QAEjC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;YAC5D,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,EAAE,EAAE,WAAW,EAAE;oBAC9D,QAAQ;oBACR,GAAG;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC","sourcesContent":["// Rate Limit Hook - MiddlewareInterface for global registration\nimport { MiddlewareInterface, HookContext } from '../../../../types/hooks.js';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { RateLimitCore } from './core.js';\n\nconst logger = createFrameworkLogger('RateLimitMiddleware');\n\n/**\n * Rate limit hook for global usage\n * Registers with the hooks system for application-wide rate limiting\n *\n * @example\n * ```ts\n * import { rateLimit } from '@/middleware/built-in/rate-limit';\n *\n * app.use(rateLimit({\n * windowMs: 60000, // 1 minute\n * max: 100 // 100 requests per window\n * }));\n * ```\n */\nexport const rateLimit = (\n options: {\n windowMs?: number;\n max?: number;\n message?: string;\n } = {}\n): MiddlewareInterface => ({\n name: 'rate-limit',\n version: '1.0.0',\n metadata: {\n name: 'rate-limit',\n version: '1.0.0',\n description: 'Rate limiting middleware with configurable windows',\n author: 'MoroJS Team',\n },\n\n install: async (hooks: any, _middlewareOptions: any = {}) => {\n logger.debug('Installing rate limit middleware', 'Installation', {\n options,\n });\n\n const windowMs = options.windowMs || 60000; // 1 minute default\n const max = options.max || 100; // 100 requests per window\n const core = new RateLimitCore();\n\n hooks.before('request', async (context: HookContext) => {\n const req = context.request as any;\n const clientId = req.connection?.remoteAddress || 'unknown';\n const routeKey = `${req.method}:${req.path}`;\n\n const allowed = core.check(clientId, routeKey, max, windowMs);\n\n if (!allowed) {\n logger.warn(`Rate limit exceeded for ${clientId}`, 'RateLimit', {\n clientId,\n max,\n });\n throw new Error(options.message || 'Too many requests');\n }\n });\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,yDAAyD;AAEzD,6DAA6D;AAC7D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AAErF,qCAAqC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,iCAAiC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,yDAAyD;AAEzD,6DAA6D;AAC7D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AAErF,qCAAqC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,iCAAiC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// Rate Limit - Main entry point\n// Re-exports all public APIs for the rate limit built-in\n\n// Core (for direct use by router and custom implementations)\nexport { RateLimitCore, sharedRateLimitCore, type RateLimitConfig } from './core.js';\n\n// Middleware (for middleware chains)\nexport { createRateLimitMiddleware } from './middleware.js';\n\n// Hook (for global registration)\nexport { rateLimit } from './hook.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAuB;IAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;QACtE,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAE7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB;gBAC5B,UAAU;aACX,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAuB;IAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;QACtE,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAE7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB;gBAC5B,UAAU;aACX,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Rate Limit Middleware - Standard (req, res, next) middleware function\nimport { StandardMiddleware } from '../../../../types/hooks.js';\nimport { sharedRateLimitCore, type RateLimitConfig } from './core.js';\n\n/**\n * Create rate limit middleware for use in middleware chains\n *\n * @example\n * ```ts\n * const rateLimitMw = createRateLimitMiddleware({\n * requests: 100,\n * window: 60000\n * });\n *\n * app.use(rateLimitMw);\n * ```\n */\nexport function createRateLimitMiddleware(config: RateLimitConfig): StandardMiddleware {\n if (!config || !config.requests || !config.window) {\n return (_req, _res, next) => next();\n }\n\n return async (req: any, res: any, next: () => void) => {\n const clientId = req.ip || req.connection?.remoteAddress || 'unknown';\n const routeKey = `${req.method}:${req.path}`;\n\n const allowed = sharedRateLimitCore.check(clientId, routeKey, config.requests, config.window);\n\n if (!allowed) {\n const retryAfter = sharedRateLimitCore.getRetryAfter(clientId, routeKey);\n res.status(429).json({\n success: false,\n error: 'Rate limit exceeded',\n retryAfter,\n });\n return;\n }\n\n next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/request-logger/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,2CAA2C;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/request-logger/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,2CAA2C;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Request Logger - Main entry point\n// Re-exports the request logger middleware\n\nexport { requestLogger } from './middleware.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/request-logger/middleware.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAgB,EAAE,GAAiB,EAAE,IAAgB,EAAQ,EAAE;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IAE1D,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,wBAAwB,QAAQ,IAAI,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/request-logger/middleware.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAgB,EAAE,GAAiB,EAAE,IAAgB,EAAQ,EAAE;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IAE1D,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,wBAAwB,QAAQ,IAAI,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC,CAAC","sourcesContent":["// Request Logger Middleware\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nconst logger = createFrameworkLogger('RequestLogger');\n\n/**\n * Simple request logging middleware\n * Logs incoming requests and their completion time\n *\n * @example\n * ```ts\n * import { requestLogger } from '@/middleware/built-in/request-logger';\n *\n * app.use(requestLogger);\n * ```\n */\nexport const requestLogger = (req: HttpRequest, res: HttpResponse, next: () => void): void => {\n const startTime = Date.now();\n\n logger.info(`${req.method} ${req.path}`, 'RequestLogger');\n\n res.on('finish', () => {\n const duration = Date.now() - startTime;\n logger.info(`Request completed in ${duration}ms`, 'RequestLogger');\n });\n\n next();\n};\n"]}
|
|
@@ -170,8 +170,8 @@ export class SessionCore {
|
|
|
170
170
|
// Set session cookie
|
|
171
171
|
res.cookie(this.options.name || 'connect.sid', id, {
|
|
172
172
|
...this.options.cookie,
|
|
173
|
-
secure: this.options.cookie?.secure ||
|
|
174
|
-
(this.options.proxy && req.headers['x-forwarded-proto'] === 'https'),
|
|
173
|
+
secure: !!(this.options.cookie?.secure ||
|
|
174
|
+
(this.options.proxy && req.headers['x-forwarded-proto'] === 'https')),
|
|
175
175
|
});
|
|
176
176
|
return session;
|
|
177
177
|
}
|
|
@@ -208,8 +208,8 @@ export class SessionCore {
|
|
|
208
208
|
if (isNew || this.options.rolling) {
|
|
209
209
|
res.cookie(this.options.name || 'connect.sid', id, {
|
|
210
210
|
...this.options.cookie,
|
|
211
|
-
secure: this.options.cookie?.secure ||
|
|
212
|
-
(this.options.proxy && req.headers['x-forwarded-proto'] === 'https'),
|
|
211
|
+
secure: !!(this.options.cookie?.secure ||
|
|
212
|
+
(this.options.proxy && req.headers['x-forwarded-proto'] === 'https')),
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
return session;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/core.ts"],"names":[],"mappings":"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","sourcesContent":["// Session Core - Reusable session management logic\nimport crypto from 'crypto';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { CacheAdapter } from '../../../../types/cache.js';\nimport { MemoryCacheAdapter } from '../cache/adapters/cache/memory.js';\nimport { RedisCacheAdapter } from '../cache/adapters/cache/redis.js';\nimport { FileCacheAdapter } from '../cache/adapters/cache/file.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\n\nconst logger = createFrameworkLogger('SessionCore');\n\n// ===== Types =====\n\nexport interface SessionOptions {\n // Session store configuration\n store?: 'memory' | 'redis' | 'file' | CacheAdapter;\n storeOptions?: {\n // Redis options\n host?: string;\n port?: number;\n password?: string;\n keyPrefix?: string;\n // File options\n path?: string;\n // Memory options\n max?: number;\n };\n\n // Session configuration\n secret?: string;\n name?: string; // Session cookie name\n genid?: () => string; // Session ID generator\n rolling?: boolean; // Reset expiry on each request\n resave?: boolean; // Save session even if not modified\n saveUninitialized?: boolean; // Save new but not modified sessions\n\n // Cookie configuration\n cookie?: {\n maxAge?: number; // Session timeout in ms\n expires?: Date; // Absolute expiry\n httpOnly?: boolean; // Prevent XSS access\n secure?: boolean; // HTTPS only\n sameSite?: 'strict' | 'lax' | 'none';\n domain?: string;\n path?: string;\n };\n\n // Security\n proxy?: boolean; // Trust proxy for secure cookies\n unset?: 'destroy' | 'keep'; // What to do when session is unset\n}\n\nexport interface SessionData {\n [key: string]: any;\n cookie?: {\n originalMaxAge?: number;\n expires?: Date;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: string;\n };\n}\n\n// ===== Session Class =====\n\nexport class Session {\n private data: SessionData = {};\n private id: string;\n private store: CacheAdapter;\n private options: SessionOptions;\n private isNew: boolean = false;\n private isModified: boolean = false;\n\n constructor(id: string, store: CacheAdapter, options: SessionOptions, isNew: boolean = false) {\n this.id = id;\n this.store = store;\n this.options = options;\n this.isNew = isNew;\n }\n\n // Proxy to make session.prop = value work\n static create(\n id: string,\n store: CacheAdapter,\n options: SessionOptions,\n data: SessionData = {},\n isNew: boolean = false\n ): Session {\n const session = new Session(id, store, options, isNew);\n session.data = data;\n\n return new Proxy(session, {\n get(target, prop) {\n if (prop in target) {\n return target[prop as keyof Session];\n }\n return target.data[prop as string];\n },\n\n set(target, prop, value) {\n if (prop in target) {\n (target as any)[prop] = value;\n } else {\n target.data[prop as string] = value;\n target.isModified = true;\n }\n return true;\n },\n\n has(target, prop) {\n return prop in target || prop in target.data;\n },\n\n deleteProperty(target, prop) {\n if (prop in target.data) {\n delete target.data[prop as string];\n target.isModified = true;\n return true;\n }\n return false;\n },\n });\n }\n\n async save(): Promise<void> {\n if (this.isModified || this.isNew || this.options.resave) {\n const ttl = this.options.cookie?.maxAge\n ? Math.floor(this.options.cookie.maxAge / 1000)\n : 86400; // 24h default\n await this.store.set(this.id, this.data, ttl);\n this.isModified = false;\n this.isNew = false;\n logger.debug(`Session saved: ${this.id}`, 'SessionSave');\n }\n }\n\n async destroy(): Promise<void> {\n await this.store.del(this.id);\n this.data = {};\n this.isModified = false;\n logger.debug(`Session destroyed: ${this.id}`, 'SessionDestroy');\n }\n\n async regenerate(): Promise<string> {\n await this.destroy();\n this.id = this.generateId();\n this.isNew = true;\n this.isModified = true;\n logger.debug(`Session regenerated: ${this.id}`, 'SessionRegenerate');\n return this.id;\n }\n\n async touch(): Promise<void> {\n if (this.options.rolling) {\n this.isModified = true;\n await this.save();\n }\n }\n\n private generateId(): string {\n if (this.options.genid) {\n return this.options.genid();\n }\n\n return crypto.randomBytes(24).toString('hex');\n }\n\n get sessionID(): string {\n return this.id;\n }\n}\n\n// ===== SessionCore =====\n\n/**\n * SessionCore - Core session management logic\n * Used directly by the router for route-based session handling\n * Can be instantiated for use in middleware or hooks\n */\nexport class SessionCore {\n private store: CacheAdapter;\n private options: SessionOptions;\n\n constructor(options: SessionOptions = {}) {\n this.options = {\n store: 'memory',\n name: 'connect.sid',\n rolling: false,\n resave: false,\n saveUninitialized: false,\n cookie: {\n maxAge: 24 * 60 * 60 * 1000, // 24 hours\n httpOnly: true,\n secure: false,\n sameSite: 'lax',\n path: '/',\n },\n unset: 'keep',\n ...options,\n };\n\n // Initialize store\n if (typeof this.options.store === 'string') {\n switch (this.options.store) {\n case 'redis':\n this.store = new RedisCacheAdapter({\n keyPrefix: 'sess:',\n ...this.options.storeOptions,\n });\n break;\n case 'file':\n this.store = new FileCacheAdapter({\n cacheDir: this.options.storeOptions?.path || './sessions',\n });\n break;\n case 'memory':\n default:\n this.store = new MemoryCacheAdapter();\n break;\n }\n } else {\n this.store = this.options.store as CacheAdapter;\n }\n }\n\n generateSessionId(): string {\n if (this.options.genid) {\n return this.options.genid();\n }\n return crypto.randomBytes(24).toString('hex');\n }\n\n async loadSession(sessionId: string): Promise<SessionData | null> {\n if (!sessionId) {\n return null;\n }\n\n try {\n const data = await this.store.get(sessionId);\n logger.debug(`Session loaded: ${sessionId}`, 'SessionLoad');\n return data || null;\n } catch (error) {\n logger.warn(`Failed to load session: ${sessionId}`, 'SessionLoadError', { error });\n return null;\n }\n }\n\n async createSession(req: HttpRequest, res: HttpResponse, sessionId?: string): Promise<Session> {\n const id = sessionId || this.generateSessionId();\n const session = Session.create(id, this.store, this.options, {}, true);\n\n // Set session cookie\n res.cookie(this.options.name || 'connect.sid', id, {\n ...this.options.cookie,\n secure: !!(\n this.options.cookie?.secure ||\n (this.options.proxy && req.headers['x-forwarded-proto'] === 'https')\n ),\n });\n\n return session;\n }\n\n async attachSession(req: HttpRequest, res: HttpResponse, sessionId?: string): Promise<Session> {\n let id = sessionId;\n let sessionData: SessionData = {};\n let isNew = false;\n\n if (id) {\n sessionData = (await this.loadSession(id)) || {};\n // Fast empty check without Object.keys\n if (!sessionData) {\n id = this.generateSessionId();\n isNew = true;\n } else {\n let hasData = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ in sessionData) {\n hasData = true;\n break;\n }\n if (!hasData) {\n id = this.generateSessionId();\n isNew = true;\n }\n }\n } else {\n id = this.generateSessionId();\n isNew = true;\n }\n\n const session = Session.create(id, this.store, this.options, sessionData, isNew);\n\n // Set session cookie if new or rolling\n if (isNew || this.options.rolling) {\n res.cookie(this.options.name || 'connect.sid', id, {\n ...this.options.cookie,\n secure: !!(\n this.options.cookie?.secure ||\n (this.options.proxy && req.headers['x-forwarded-proto'] === 'https')\n ),\n });\n }\n\n return session;\n }\n\n async saveSession(session: Session): Promise<void> {\n if (!session) {\n return;\n }\n\n try {\n if (\n this.options.saveUninitialized ||\n !(session as any).isNew ||\n (session as any).isModified\n ) {\n await session.save();\n }\n } catch (error) {\n logger.error('Failed to save session', 'SessionSaveError', { error });\n }\n }\n\n getStore(): CacheAdapter {\n return this.store;\n }\n\n getOptions(): SessionOptions {\n return this.options;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,UAA0B,EAAE,EAAuB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,4DAA4D;QACzE,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;QAE9D,gBAAgB;QAChB,MAAM,MAAM,GAAmB;YAC7B,GAAG,OAAO;YACV,GAAG,iBAAiB;SACrB,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC;QAEhD,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,6BAA6B;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;YAE5C,4BAA4B;YAC5B,GAAG,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YAEnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,KAAK,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,UAA0B,EAAE,EAAuB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,4DAA4D;QACzE,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;QAE9D,gBAAgB;QAChB,MAAM,MAAM,GAAmB;YAC7B,GAAG,OAAO;YACV,GAAG,iBAAiB;SACrB,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC;QAEhD,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,6BAA6B;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;YAE5C,4BAA4B;YAC5B,GAAG,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YAEnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,KAAK,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;CACF,CAAC,CAAC","sourcesContent":["// Session Hook - MiddlewareInterface for global registration\nimport { MiddlewareInterface, HookContext } from '../../../../types/hooks.js';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { SessionCore, type SessionOptions } from './core.js';\n\nconst logger = createFrameworkLogger('SessionMiddleware');\n\n/**\n * Session hook for global usage\n * Registers with the hooks system for application-wide session management\n *\n * @example\n * ```ts\n * import { session } from '@/middleware/built-in/session';\n *\n * app.use(session({\n * store: 'redis',\n * cookie: { maxAge: 86400000 }\n * }));\n * ```\n */\nexport const session = (options: SessionOptions = {}): MiddlewareInterface => ({\n name: 'session',\n version: '1.0.0',\n metadata: {\n name: 'session',\n version: '1.0.0',\n description: 'Session management middleware with multiple store adapters',\n author: 'MoroJS Team',\n },\n\n install: async (hooks: any, middlewareOptions: any = {}) => {\n logger.debug('Installing session middleware', 'Installation');\n\n // Merge options\n const config: SessionOptions = {\n ...options,\n ...middlewareOptions,\n };\n\n const sessionCore = new SessionCore(config);\n const cookieName = config.name || 'connect.sid';\n\n hooks.before('request', async (context: HookContext) => {\n const req = context.request as any;\n const res = context.response as any;\n\n // Get session ID from cookie\n const sessionId = req.cookies?.[cookieName];\n\n // Attach session to request\n req.session = await sessionCore.attachSession(req, res, sessionId);\n });\n\n hooks.after('response', async (context: HookContext) => {\n const req = context.request as any;\n\n if (req.session) {\n await sessionCore.saveSession(req.session);\n }\n });\n\n logger.info(`Session middleware installed with ${config.store} store`, 'Installation');\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,sDAAsD;AAEtD,6DAA6D;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAyC,MAAM,WAAW,CAAC;AAExF,qCAAqC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,iCAAiC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,sDAAsD;AAEtD,6DAA6D;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAyC,MAAM,WAAW,CAAC;AAExF,qCAAqC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,iCAAiC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// Session - Main entry point\n// Re-exports all public APIs for the session built-in\n\n// Core (for direct use by router and custom implementations)\nexport { Session, SessionCore, type SessionOptions, type SessionData } from './core.js';\n\n// Middleware (for middleware chains)\nexport { createSessionMiddleware } from './middleware.js';\n\n// Hook (for global registration)\nexport { session } from './hook.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA0B,EAAE;IAClE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;IAEjD,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;YAE5C,4BAA4B;YAC3B,GAAW,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAE5E,0BAA0B;YAC1B,MAAM,IAAI,EAAE,CAAC;YAEb,8BAA8B;YAC9B,MAAM,WAAW,CAAC,WAAW,CAAE,GAAW,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/session/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA0B,EAAE;IAClE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;IAEjD,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;YAE5C,4BAA4B;YAC3B,GAAW,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAE5E,0BAA0B;YAC1B,MAAM,IAAI,EAAE,CAAC;YAEb,8BAA8B;YAC9B,MAAM,WAAW,CAAC,WAAW,CAAE,GAAW,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Session Middleware - Standard (req, res, next) middleware function\nimport { StandardMiddleware } from '../../../../types/hooks.js';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\nimport { SessionCore, type SessionOptions } from './core.js';\n\nconst logger = createFrameworkLogger('SessionMiddleware');\n\n/**\n * Create session middleware for use in middleware chains\n *\n * @example\n * ```ts\n * const sessionMw = createSessionMiddleware({\n * store: 'redis',\n * name: 'my-session',\n * cookie: { maxAge: 3600000 }\n * });\n *\n * app.use(sessionMw);\n * ```\n */\nexport function createSessionMiddleware(options: SessionOptions = {}): StandardMiddleware {\n const sessionCore = new SessionCore(options);\n const cookieName = options.name || 'connect.sid';\n\n return async (req: HttpRequest, res: HttpResponse, next: () => Promise<void>) => {\n try {\n // Get session ID from cookie\n const sessionId = req.cookies?.[cookieName];\n\n // Attach session to request\n (req as any).session = await sessionCore.attachSession(req, res, sessionId);\n\n // Execute next middleware\n await next();\n\n // Save session after response\n await sessionCore.saveSession((req as any).session);\n } catch (error) {\n logger.error('Session middleware error', 'SessionError', { error });\n throw error;\n }\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/core.ts"],"names":[],"mappings":"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","sourcesContent":["// SSE Core - Reusable Server-Sent Events logic\nimport { HttpResponse } from '../../../../types/http.js';\n\n// ===== Types =====\n\nexport interface SSEOptions {\n heartbeat?: number;\n retry?: number;\n cors?: boolean;\n}\n\nexport interface SSEConnection {\n sendEvent: (data: any, event?: string, id?: string) => void;\n sendComment: (comment: string) => void;\n sendRetry: (ms: number) => void;\n close: () => void;\n}\n\n// ===== Core Logic =====\n\n/**\n * Format SSE event data\n */\nexport function formatSSEEvent(data: any, event?: string, id?: string): string {\n let message = '';\n\n if (id) {\n message += `id: ${id}\\n`;\n }\n\n if (event) {\n message += `event: ${event}\\n`;\n }\n\n const dataStr = typeof data === 'string' ? data : JSON.stringify(data);\n message += `data: ${dataStr}\\n\\n`;\n\n return message;\n}\n\n/**\n * Format SSE comment\n */\nexport function formatSSEComment(comment: string): string {\n return `: ${comment}\\n\\n`;\n}\n\n/**\n * Format SSE retry directive\n */\nexport function formatSSERetry(ms: number): string {\n return `retry: ${ms}\\n\\n`;\n}\n\n/**\n * SSECore - Core Server-Sent Events management logic\n * Used directly by the router for route-based SSE\n */\nexport class SSECore {\n private options: SSEOptions;\n\n constructor(options: SSEOptions = {}) {\n this.options = options;\n }\n\n /**\n * Check if request accepts SSE\n */\n isSSERequest(acceptHeader?: string): boolean {\n if (!acceptHeader) {\n return false;\n }\n return acceptHeader.includes('text/event-stream');\n }\n\n /**\n * Initialize SSE headers on response\n */\n initializeSSE(res: HttpResponse): void {\n const headers: Record<string, string> = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n };\n\n if (this.options.cors) {\n headers['Access-Control-Allow-Origin'] = '*';\n headers['Access-Control-Allow-Headers'] = 'Cache-Control';\n }\n\n res.writeHead(200, headers);\n }\n\n /**\n * Create SSE connection with helper methods\n */\n createConnection(res: HttpResponse, onClose?: () => void): SSEConnection {\n const resAny = res as any;\n let heartbeatInterval: NodeJS.Timeout | null = null;\n let closed = false;\n\n // Send initial retry if configured\n if (this.options.retry) {\n resAny.write(formatSSERetry(this.options.retry));\n }\n\n // Set up heartbeat if configured\n if (this.options.heartbeat) {\n heartbeatInterval = setInterval(() => {\n if (!closed) {\n resAny.write(formatSSEComment('heartbeat'));\n }\n }, this.options.heartbeat);\n }\n\n const connection: SSEConnection = {\n sendEvent: (data: any, event?: string, id?: string) => {\n if (!closed) {\n resAny.write(formatSSEEvent(data, event, id));\n }\n },\n\n sendComment: (comment: string) => {\n if (!closed) {\n resAny.write(formatSSEComment(comment));\n }\n },\n\n sendRetry: (ms: number) => {\n if (!closed) {\n resAny.write(formatSSERetry(ms));\n }\n },\n\n close: () => {\n if (closed) {\n return;\n }\n\n closed = true;\n\n if (heartbeatInterval) {\n clearInterval(heartbeatInterval);\n heartbeatInterval = null;\n }\n\n if (onClose) {\n onClose();\n }\n\n if (resAny.end && !resAny.writableEnded) {\n resAny.end();\n }\n },\n };\n\n return connection;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,UAAsB,EAAE,EAAuB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,2BAA2B;YAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;YAEtD,4BAA4B;YAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,mDAAmD;YACnD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;gBACpD,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACrC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;YACzC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAErC,oBAAoB;YACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAC/C,OAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,UAAsB,EAAE,EAAuB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,2BAA2B;YAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;YAEtD,4BAA4B;YAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,mDAAmD;YACnD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;gBACpD,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACrC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;YACzC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAErC,oBAAoB;YACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAC/C,OAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC","sourcesContent":["// SSE Hook - MiddlewareInterface for global registration\nimport { MiddlewareInterface, HookContext } from '../../../../types/hooks.js';\nimport { createFrameworkLogger } from '../../../logger/index.js';\nimport { SSECore, type SSEOptions } from './core.js';\n\nconst logger = createFrameworkLogger('SSEMiddleware');\n\n/**\n * SSE hook for global usage\n * Registers with the hooks system for application-wide Server-Sent Events support\n *\n * @example\n * ```ts\n * import { sse } from '@/middleware/built-in/sse';\n *\n * app.use(sse({\n * heartbeat: 30000,\n * retry: 3000,\n * cors: true\n * }));\n * ```\n */\nexport const sse = (options: SSEOptions = {}): MiddlewareInterface => ({\n name: 'sse',\n version: '1.0.0',\n metadata: {\n name: 'sse',\n version: '1.0.0',\n description: 'Server-Sent Events middleware with heartbeat and retry support',\n author: 'MoroJS Team',\n },\n\n install: async (hooks: any, middlewareOptions: any = {}) => {\n logger.debug('Installing SSE middleware', 'Installation', { options: middlewareOptions });\n\n const config = { ...options, ...middlewareOptions };\n const sseCore = new SSECore(config);\n\n hooks.before('request', async (context: HookContext) => {\n const req = context.request as any;\n const res = context.response as any;\n\n // Only handle SSE requests\n if (!sseCore.isSSERequest(req.headers.accept)) {\n return;\n }\n\n logger.debug('Setting up SSE connection', 'SSESetup');\n\n // Initialize SSE connection\n if (!res.headersSent) {\n sseCore.initializeSSE(res);\n }\n\n // Create connection and attach methods to response\n const connection = sseCore.createConnection(res, () => {\n logger.debug('SSE connection closed', 'SSECleanup');\n });\n\n res.sendEvent = connection.sendEvent;\n res.sendComment = connection.sendComment;\n res.sendRetry = connection.sendRetry;\n\n // Clean up on close\n req.on('close', () => {\n connection.close();\n });\n\n // Mark that this middleware handled the request\n (context as any).handled = true;\n });\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,kDAAkD;AAElD,6DAA6D;AAC7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,cAAc,GAGf,MAAM,WAAW,CAAC;AAEnB,qCAAqC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,iCAAiC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,kDAAkD;AAElD,6DAA6D;AAC7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,cAAc,GAGf,MAAM,WAAW,CAAC;AAEnB,qCAAqC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,iCAAiC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// SSE - Main entry point\n// Re-exports all public APIs for the SSE built-in\n\n// Core (for direct use by router and custom implementations)\nexport {\n SSECore,\n formatSSEEvent,\n formatSSEComment,\n formatSSERetry,\n type SSEOptions,\n type SSEConnection,\n} from './core.js';\n\n// Middleware (for middleware chains)\nexport { createSSEMiddleware } from './middleware.js';\n\n// Hook (for global registration)\nexport { sse } from './hook.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE;IAC1D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,mDAAmD;QACnD,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACxC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC5C,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QAExC,oBAAoB;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/sse/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE;IAC1D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,mDAAmD;QACnD,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACxC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC5C,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QAExC,oBAAoB;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// SSE Middleware - Standard (req, res, next) middleware function\nimport { StandardMiddleware } from '../../../../types/hooks.js';\nimport { HttpRequest, HttpResponse } from '../../../../types/http.js';\nimport { SSECore, type SSEOptions } from './core.js';\n\n/**\n * Create SSE middleware for use in middleware chains\n * Only activates for requests with 'text/event-stream' Accept header\n *\n * @example\n * ```ts\n * const sseMw = createSSEMiddleware({\n * heartbeat: 30000,\n * retry: 3000,\n * cors: true\n * });\n *\n * app.use(sseMw);\n * ```\n */\nexport function createSSEMiddleware(options: SSEOptions = {}): StandardMiddleware {\n const sseCore = new SSECore(options);\n\n return async (req: HttpRequest, res: HttpResponse, next: () => Promise<void>) => {\n // Only handle SSE requests\n if (!sseCore.isSSERequest(req.headers.accept)) {\n await next();\n return;\n }\n\n // Initialize SSE connection\n const resAny = res as any;\n if (!resAny.headersSent) {\n sseCore.initializeSSE(res);\n }\n\n // Create connection and attach methods to response\n const reqAny = req as any;\n const connection = sseCore.createConnection(res);\n\n resAny.sendEvent = connection.sendEvent;\n resAny.sendComment = connection.sendComment;\n resAny.sendRetry = connection.sendRetry;\n\n // Clean up on close\n reqAny.on('close', () => {\n connection.close();\n });\n\n await next();\n };\n}\n"]}
|