@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
|
@@ -110,19 +110,25 @@ export class MoroLogger {
|
|
|
110
110
|
this.addOutput({
|
|
111
111
|
name: 'console',
|
|
112
112
|
write: this.writeToConsole.bind(this),
|
|
113
|
-
format: this.options.format,
|
|
113
|
+
...(this.options.format !== undefined ? { format: this.options.format } : {}),
|
|
114
114
|
});
|
|
115
115
|
// Add custom outputs
|
|
116
116
|
if (this.options.outputs) {
|
|
117
117
|
const outputsLen = this.options.outputs.length;
|
|
118
118
|
for (let i = 0; i < outputsLen; i++) {
|
|
119
|
-
this.
|
|
119
|
+
const output = this.options.outputs[i];
|
|
120
|
+
if (output !== undefined) {
|
|
121
|
+
this.addOutput(output);
|
|
122
|
+
}
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
if (this.options.filters) {
|
|
123
126
|
const filtersLen = this.options.filters.length;
|
|
124
127
|
for (let i = 0; i < filtersLen; i++) {
|
|
125
|
-
this.
|
|
128
|
+
const filter = this.options.filters[i];
|
|
129
|
+
if (filter !== undefined) {
|
|
130
|
+
this.addFilter(filter);
|
|
131
|
+
}
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
134
|
}
|
|
@@ -131,21 +137,27 @@ export class MoroLogger {
|
|
|
131
137
|
if (MoroLogger.ENTRY_POOL.length > 0) {
|
|
132
138
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
133
139
|
const entry = MoroLogger.ENTRY_POOL.pop();
|
|
134
|
-
// Properly reset ALL properties to prevent memory leaks
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
// Properly reset ALL properties to prevent memory leaks. Reset through a
|
|
141
|
+
// Partial view so the optional fields can be cleared to undefined under
|
|
142
|
+
// exactOptionalPropertyTypes; the runtime object shape is unchanged.
|
|
143
|
+
const reset = entry;
|
|
144
|
+
reset.timestamp = new Date();
|
|
145
|
+
reset.level = 'info';
|
|
146
|
+
reset.message = '';
|
|
147
|
+
reset.context = undefined;
|
|
148
|
+
reset.metadata = undefined;
|
|
149
|
+
reset.performance = undefined;
|
|
150
|
+
reset.moduleId = undefined;
|
|
142
151
|
return entry;
|
|
143
152
|
}
|
|
144
153
|
return MoroLogger.createFreshEntry();
|
|
145
154
|
}
|
|
146
155
|
// ADD this new method:
|
|
147
156
|
static createFreshEntry() {
|
|
148
|
-
|
|
157
|
+
// Optional fields are present-and-undefined so pooled and fresh entries
|
|
158
|
+
// share one V8 hidden class. Built as a Partial to satisfy
|
|
159
|
+
// exactOptionalPropertyTypes, then returned as a fully-formed LogEntry.
|
|
160
|
+
const entry = {
|
|
149
161
|
timestamp: new Date(),
|
|
150
162
|
level: 'info',
|
|
151
163
|
message: '',
|
|
@@ -154,6 +166,7 @@ export class MoroLogger {
|
|
|
154
166
|
performance: undefined,
|
|
155
167
|
moduleId: undefined,
|
|
156
168
|
};
|
|
169
|
+
return entry;
|
|
157
170
|
}
|
|
158
171
|
static returnPooledEntry(entry) {
|
|
159
172
|
if (MoroLogger.ENTRY_POOL.length < MoroLogger.MAX_POOL_SIZE) {
|
|
@@ -363,7 +376,16 @@ export class MoroLogger {
|
|
|
363
376
|
break;
|
|
364
377
|
}
|
|
365
378
|
if (hasKeys) {
|
|
366
|
-
|
|
379
|
+
// Only take the minimal fast path when nothing needs the full pipeline.
|
|
380
|
+
// If filters (e.g. sanitizeFilter redaction) or metrics are configured,
|
|
381
|
+
// metadata-bearing logs MUST go through fullLog - otherwise sensitive
|
|
382
|
+
// keys in call metadata would be logged unredacted.
|
|
383
|
+
if (this.filters.size === 0 && !this.metricsEnabled) {
|
|
384
|
+
this.complexLog(level, message, context, metadata);
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
this.fullLog(level, message, context, metadata);
|
|
388
|
+
}
|
|
367
389
|
return;
|
|
368
390
|
}
|
|
369
391
|
}
|
|
@@ -384,7 +406,9 @@ export class MoroLogger {
|
|
|
384
406
|
: this.contextPrefix
|
|
385
407
|
: context;
|
|
386
408
|
entry.metadata = this.createMetadata(metadata);
|
|
387
|
-
entry.performance = this.options.enablePerformance
|
|
409
|
+
entry.performance = this.options.enablePerformance
|
|
410
|
+
? this.getPerformanceData(now)
|
|
411
|
+
: undefined;
|
|
388
412
|
// Apply filters with early return optimization
|
|
389
413
|
if (this.filters.size > 0) {
|
|
390
414
|
for (const filter of this.filters.values()) {
|
|
@@ -418,7 +442,9 @@ export class MoroLogger {
|
|
|
418
442
|
: this.contextPrefix
|
|
419
443
|
: context;
|
|
420
444
|
entry.metadata = this.createMetadata(metadata);
|
|
421
|
-
entry.performance = this.options.enablePerformance
|
|
445
|
+
entry.performance = this.options.enablePerformance
|
|
446
|
+
? this.getPerformanceData(now)
|
|
447
|
+
: undefined;
|
|
422
448
|
// Write to outputs with batched processing
|
|
423
449
|
this.writeToOutputs(entry, level);
|
|
424
450
|
// Return entry to pool
|
|
@@ -526,7 +552,7 @@ export class MoroLogger {
|
|
|
526
552
|
for (const output of this.outputs.values()) {
|
|
527
553
|
if (!output.level || MoroLogger.LEVELS[level] >= MoroLogger.LEVELS[output.level]) {
|
|
528
554
|
try {
|
|
529
|
-
output.write(entry);
|
|
555
|
+
void output.write(entry);
|
|
530
556
|
successCount++;
|
|
531
557
|
}
|
|
532
558
|
catch (error) {
|
|
@@ -720,11 +746,14 @@ export class MoroLogger {
|
|
|
720
746
|
const stdoutMessages = [];
|
|
721
747
|
const stderrMessages = [];
|
|
722
748
|
for (let i = 0; i < this.outputBuffer.length; i++) {
|
|
749
|
+
const message = this.outputBuffer[i];
|
|
750
|
+
if (message === undefined)
|
|
751
|
+
continue;
|
|
723
752
|
if (this.outputBufferIsError[i]) {
|
|
724
|
-
stderrMessages.push(
|
|
753
|
+
stderrMessages.push(message);
|
|
725
754
|
}
|
|
726
755
|
else {
|
|
727
|
-
stdoutMessages.push(
|
|
756
|
+
stdoutMessages.push(message);
|
|
728
757
|
}
|
|
729
758
|
}
|
|
730
759
|
// Write to appropriate streams with error handling
|
|
@@ -1026,14 +1055,16 @@ export function applyLoggingConfiguration(configLogging, appOptions) {
|
|
|
1026
1055
|
export const createFrameworkLogger = (context) => {
|
|
1027
1056
|
return logger.child('Moro', { framework: 'moro', context });
|
|
1028
1057
|
};
|
|
1029
|
-
//
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
process.
|
|
1058
|
+
// Flush any pending logs synchronously on the way out. We deliberately do NOT
|
|
1059
|
+
// register SIGINT/SIGTERM handlers here. Registering them at import time is
|
|
1060
|
+
// harmful either way: a non-exiting handler suppresses Node's default Ctrl-C
|
|
1061
|
+
// termination (the app becomes unkillable), and one that calls process.exit()
|
|
1062
|
+
// preempts the framework's own graceful-shutdown handlers (which are registered
|
|
1063
|
+
// later, so process.exit() runs first) and masks the real signal/exit code.
|
|
1064
|
+
// Signal handling belongs to the application/framework; the logger only ensures
|
|
1065
|
+
// buffered logs are flushed. flush() is synchronous, so it is safe in 'exit'.
|
|
1066
|
+
process.on('exit', () => {
|
|
1035
1067
|
logger.flush();
|
|
1036
|
-
process.exit(0);
|
|
1037
1068
|
});
|
|
1038
1069
|
process.on('beforeExit', () => {
|
|
1039
1070
|
logger.flush();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger/logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger/logger.ts"],"names":[],"mappings":"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","sourcesContent":["// Moro Logger - Beautiful, Fast, Feature-Rich\nimport { performance } from 'perf_hooks';\n\nimport {\n LogLevel,\n LogEntry,\n LoggerOptions,\n Logger,\n LogOutput,\n LogFilter,\n LogMetrics,\n ColorScheme,\n} from '../../types/logger.js';\n\n// Optional LogEntry fields are cleared to undefined when a pooled entry is\n// reused. exactOptionalPropertyTypes rejects assigning undefined straight onto\n// a plain optional property, so those writes go through this widened view.\n// Runtime shape is unchanged; this only relaxes the compile-time check.\ntype ResettableLogEntry = { [K in keyof LogEntry]: LogEntry[K] | undefined };\n\nexport class MoroLogger implements Logger {\n private level: LogLevel = 'info';\n private options: LoggerOptions;\n private outputs: Map<string, LogOutput> = new Map();\n private filters: Map<string, LogFilter> = new Map();\n private history: LogEntry[] = [];\n private timers: Map<string, number> = new Map();\n private metrics: LogMetrics = {\n totalLogs: 0,\n logsByLevel: { debug: 0, info: 0, warn: 0, error: 0, fatal: 0 },\n logsByContext: {},\n averageLogRate: 0,\n errorRate: 0,\n memoryUsage: 0,\n };\n private startTime = Date.now();\n private contextPrefix?: string;\n private contextMetadata?: Record<string, any>;\n private parent?: MoroLogger; // Reference to parent logger for level inheritance\n\n // Performance optimizations\n private historyIndex = 0;\n private historySize = 0;\n private lastMemoryCheck = 0;\n private memoryCheckInterval = 5000; // 5 seconds\n private cachedTimestamp = '';\n private lastTimestamp = 0;\n private timestampCacheInterval = 100; // 100ms for better precision\n\n // Metrics tracking toggle (disabled by default)\n private metricsEnabled = false;\n\n // Object pooling for LogEntry objects (Pino's technique)\n private static readonly ENTRY_POOL: LogEntry[] = [];\n private static readonly MAX_POOL_SIZE = 100;\n private static poolIndex = 0;\n\n // String builder for efficient concatenation\n private static stringBuilder: string[] = [];\n private static stringBuilderIndex = 0;\n\n // Buffered output for performance\n private outputBuffer: string[] = [];\n private bufferSize = 0;\n private maxBufferSize = 1000;\n private flushTimeout: NodeJS.Timeout | null = null;\n private flushInterval = 1; // 1ms micro-batching\n\n // Buffer overflow protection\n private bufferOverflowThreshold: number;\n private emergencyFlushInProgress = false;\n private isDestroyed = false;\n\n // High-performance output methods\n\n private static readonly LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n fatal: 4,\n };\n\n private static readonly COLORS: ColorScheme = {\n debug: '\\x1b[36m', // Cyan\n info: '\\x1b[32m', // Green\n warn: '\\x1b[33m', // Yellow\n error: '\\x1b[31m', // Red\n fatal: '\\x1b[35m', // Magenta\n timestamp: '\\x1b[90m', // Gray\n context: '\\x1b[34m', // Blue\n metadata: '\\x1b[37m', // White\n performance: '\\x1b[36m', // Cyan\n reset: '\\x1b[0m', // Reset\n };\n\n private static readonly RESET = '\\x1b[0m';\n private static readonly BOLD = '\\x1b[1m';\n\n // Static pre-allocated strings for performance\n private static readonly LEVEL_STRINGS: Record<LogLevel, string> = {\n debug: 'DEBUG',\n info: 'INFO ',\n warn: 'WARN ',\n error: 'ERROR',\n fatal: 'FATAL',\n };\n\n constructor(options: LoggerOptions = {}) {\n this.options = this.validateOptions({\n level: 'info',\n enableColors: true,\n enableTimestamp: true,\n enableContext: true,\n // Opt-in: appends JSON metadata tail in pretty logs. Off by default to keep lines clean.\n enableMetadata: false,\n // Opt-in: per-log perf data. Off by default to skip process.memoryUsage() per log.\n enablePerformance: false,\n format: 'pretty',\n outputs: [],\n filters: [],\n maxEntries: 1000,\n maxBufferSize: 1000,\n ...options,\n });\n\n this.level = this.options.level || 'info';\n\n // Enable metrics only if explicitly requested\n this.metricsEnabled = this.options.enableMetrics ?? false;\n\n // Initialize buffer size from options\n this.maxBufferSize = this.options.maxBufferSize || 1000;\n\n // Initialize buffer overflow protection\n this.bufferOverflowThreshold = this.maxBufferSize * 2;\n\n // Initialize log methods based on level\n this.debug = this.createLogMethod('debug');\n this.info = this.createLogMethod('info');\n this.warn = this.createLogMethod('warn');\n this.error = this.createLogMethod('error');\n this.fatal = this.createLogMethod('fatal');\n\n // Add default console output\n this.addOutput({\n name: 'console',\n write: this.writeToConsole.bind(this),\n ...(this.options.format !== undefined ? { format: this.options.format } : {}),\n });\n\n // Add custom outputs\n if (this.options.outputs) {\n const outputsLen = this.options.outputs.length;\n for (let i = 0; i < outputsLen; i++) {\n const output = this.options.outputs[i];\n if (output !== undefined) {\n this.addOutput(output);\n }\n }\n }\n if (this.options.filters) {\n const filtersLen = this.options.filters.length;\n for (let i = 0; i < filtersLen; i++) {\n const filter = this.options.filters[i];\n if (filter !== undefined) {\n this.addFilter(filter);\n }\n }\n }\n }\n\n // Object pooling methods\n private static getPooledEntry(): LogEntry {\n if (MoroLogger.ENTRY_POOL.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const entry = MoroLogger.ENTRY_POOL.pop()!;\n // Properly reset ALL properties to prevent memory leaks. Reset through a\n // Partial view so the optional fields can be cleared to undefined under\n // exactOptionalPropertyTypes; the runtime object shape is unchanged.\n const reset = entry as ResettableLogEntry;\n reset.timestamp = new Date();\n reset.level = 'info';\n reset.message = '';\n reset.context = undefined;\n reset.metadata = undefined;\n reset.performance = undefined;\n reset.moduleId = undefined;\n return entry;\n }\n return MoroLogger.createFreshEntry();\n }\n\n // ADD this new method:\n private static createFreshEntry(): LogEntry {\n // Optional fields are present-and-undefined so pooled and fresh entries\n // share one V8 hidden class. Built as a Partial to satisfy\n // exactOptionalPropertyTypes, then returned as a fully-formed LogEntry.\n const entry: ResettableLogEntry = {\n timestamp: new Date(),\n level: 'info',\n message: '',\n context: undefined,\n metadata: undefined,\n performance: undefined,\n moduleId: undefined,\n };\n return entry as LogEntry;\n }\n\n private static returnPooledEntry(entry: LogEntry): void {\n if (MoroLogger.ENTRY_POOL.length < MoroLogger.MAX_POOL_SIZE) {\n MoroLogger.ENTRY_POOL.push(entry);\n }\n }\n\n // String builder methods\n private static resetStringBuilder(): void {\n MoroLogger.stringBuilder.length = 0;\n MoroLogger.stringBuilderIndex = 0;\n }\n\n private static appendToBuilder(str: string): void {\n MoroLogger.stringBuilder[MoroLogger.stringBuilderIndex++] = str;\n }\n\n private static buildString(): string {\n const result = MoroLogger.stringBuilder.join('');\n MoroLogger.resetStringBuilder();\n return result;\n }\n\n // Noop functions for disabled log levels\n // These are replaced when level changes to avoid unnecessary calls\n debug: (message: string, context?: string, metadata?: Record<string, any>) => void =\n this.createLogMethod('debug');\n\n info: (message: string, context?: string, metadata?: Record<string, any>) => void =\n this.createLogMethod('info');\n\n warn: (message: string, context?: string, metadata?: Record<string, any>) => void =\n this.createLogMethod('warn');\n\n error: (message: string | Error, context?: string, metadata?: Record<string, any>) => void =\n this.createLogMethod('error');\n\n fatal: (message: string | Error, context?: string, metadata?: Record<string, any>) => void =\n this.createLogMethod('fatal');\n\n // Create log method with level check optimization\n private createLogMethod(level: LogLevel): any {\n // If this level is disabled, return noop function\n if (MoroLogger.LEVELS[level] < MoroLogger.LEVELS[this.level]) {\n // Noop - zero overhead!\n return () => {};\n }\n\n // Return actual logging function\n if (level === 'error' || level === 'fatal') {\n return (message: string | Error, context?: string, metadata?: Record<string, any>) => {\n const msg = message instanceof Error ? message.message : message;\n const stack = message instanceof Error ? message.stack : undefined;\n this.log(level, msg, context, { ...metadata, stack });\n };\n }\n\n return (message: string, context?: string, metadata?: Record<string, any>) => {\n this.log(level, message, context, metadata);\n };\n }\n\n time(label: string): void {\n this.timers.set(label, performance.now());\n }\n\n timeEnd(label: string, context?: string, metadata?: Record<string, any>): void {\n const startTime = this.timers.get(label);\n if (startTime !== undefined) {\n const duration = performance.now() - startTime;\n this.timers.delete(label);\n\n this.log('info', `Timer: ${label}`, context, {\n ...metadata,\n performance: { duration: Math.round(duration * 100) / 100 },\n });\n }\n }\n\n // Children created via child() - tracked (weakly) so setLevel propagates.\n // Without this, a child created while level was 'warn' keeps noop info/debug\n // methods forever, silently dropping logs after the level is raised.\n private childRefs: Set<WeakRef<MoroLogger>> | null = null;\n\n child(context: string, metadata?: Record<string, any>): Logger {\n // Create child logger with current parent level (not original options level)\n const childOptions = { ...this.options, level: this.level };\n const childLogger = new MoroLogger(childOptions);\n childLogger.contextPrefix = this.contextPrefix ? `${this.contextPrefix}:${context}` : context;\n childLogger.contextMetadata = { ...this.contextMetadata, ...metadata };\n childLogger.outputs = this.outputs;\n childLogger.filters = this.filters;\n\n // Keep reference to parent for level inheritance\n (childLogger as any).parent = this;\n\n if (!this.childRefs) this.childRefs = new Set();\n this.childRefs.add(new WeakRef(childLogger));\n\n return childLogger;\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n\n // Rebuild log methods to update noop functions\n this.debug = this.createLogMethod('debug');\n this.info = this.createLogMethod('info');\n this.warn = this.createLogMethod('warn');\n this.error = this.createLogMethod('error');\n this.fatal = this.createLogMethod('fatal');\n\n // Propagate to children so their noop-swapped methods follow the new level\n if (this.childRefs) {\n for (const ref of this.childRefs) {\n const childLogger = ref.deref();\n if (childLogger) {\n childLogger.setLevel(level);\n } else {\n this.childRefs.delete(ref);\n }\n }\n }\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n addOutput(output: LogOutput): void {\n this.outputs.set(output.name, output);\n }\n\n removeOutput(name: string): void {\n this.outputs.delete(name);\n }\n\n addFilter(filter: LogFilter): void {\n this.filters.set(filter.name, filter);\n }\n\n removeFilter(name: string): void {\n this.filters.delete(name);\n }\n\n getHistory(count?: number): LogEntry[] {\n if (this.historySize === 0) return [];\n\n if (this.historySize < (this.options.maxEntries || 1000)) {\n // History not full yet, return all entries\n const entries = this.history.slice(0, this.historySize);\n return count ? entries.slice(-count) : entries;\n } else {\n // History is full, use circular buffer logic\n const entries: LogEntry[] = [];\n const maxEntries = this.options.maxEntries || 1000;\n\n for (let i = 0; i < maxEntries; i++) {\n const index = (this.historyIndex + i) % maxEntries;\n if (this.history[index]) {\n entries.push(this.history[index]);\n }\n }\n\n return count ? entries.slice(-count) : entries;\n }\n }\n\n // Cached timestamp formatting to avoid repeated string operations\n private getCachedTimestamp(timestamp: Date): string {\n const now = timestamp.getTime();\n if (now - this.lastTimestamp > this.timestampCacheInterval) {\n this.lastTimestamp = now;\n this.cachedTimestamp = timestamp.toISOString().replace('T', ' ').slice(0, 19);\n }\n return this.cachedTimestamp;\n }\n\n // Cached timestamp generation (updates once per second)\n private getFastCachedTimestamp(): string {\n const now = Date.now();\n if (now - this.lastTimestamp > 1000) {\n // Update every second\n this.lastTimestamp = now;\n this.cachedTimestamp = new Date(now).toISOString().slice(0, 19).replace('T', ' ');\n }\n return this.cachedTimestamp;\n }\n\n getMetrics(): LogMetrics {\n const now = Date.now();\n const uptime = (now - this.startTime) / 1000; // seconds\n const avgRate = uptime > 0 ? this.metrics.totalLogs / uptime : 0;\n const errorCount = this.metrics.logsByLevel.error + this.metrics.logsByLevel.fatal;\n const errorRate = this.metrics.totalLogs > 0 ? (errorCount / this.metrics.totalLogs) * 100 : 0;\n\n return {\n ...this.metrics,\n averageLogRate: Math.round(avgRate * 100) / 100,\n errorRate: Math.round(errorRate * 100) / 100,\n memoryUsage: process.memoryUsage().heapUsed / 1024 / 1024, // MB\n };\n }\n\n clear(): void {\n this.history = [];\n this.metrics = {\n totalLogs: 0,\n logsByLevel: { debug: 0, info: 0, warn: 0, error: 0, fatal: 0 },\n logsByContext: {},\n averageLogRate: 0,\n errorRate: 0,\n memoryUsage: 0,\n };\n }\n\n // Optimized logging method\n private log(\n level: LogLevel,\n message: string,\n context?: string,\n metadata?: Record<string, any>\n ): void {\n // Prevent logging after destroy() is called (important for test cleanup)\n if (this.isDestroyed) {\n return;\n }\n\n // Quick level check - use parent level if available (for child loggers)\n const effectiveLevel = this.parent ? this.parent.level : this.level;\n if (MoroLogger.LEVELS[level] < MoroLogger.LEVELS[effectiveLevel as LogLevel]) {\n return;\n }\n\n // Absolute minimal path for simple logs - pure speed\n if (!metadata && !context && !this.contextPrefix && !this.contextMetadata) {\n this.writeSimpleLog(level, message);\n return;\n }\n\n // Minimal path for logs with context but no metadata\n if (!metadata && !this.contextMetadata) {\n this.writeSimpleLog(level, message, context);\n return;\n }\n\n // Path for complex logs - avoid Object.keys for empty check\n if (metadata) {\n // Fast empty check: iterate and return on first property\n let hasKeys = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ in metadata) {\n hasKeys = true;\n break;\n }\n if (hasKeys) {\n // Only take the minimal fast path when nothing needs the full pipeline.\n // If filters (e.g. sanitizeFilter redaction) or metrics are configured,\n // metadata-bearing logs MUST go through fullLog - otherwise sensitive\n // keys in call metadata would be logged unredacted.\n if (this.filters.size === 0 && !this.metricsEnabled) {\n this.complexLog(level, message, context, metadata);\n } else {\n this.fullLog(level, message, context, metadata);\n }\n return;\n }\n }\n\n // Full logging path for complex logs\n this.fullLog(level, message, context, metadata);\n }\n\n // Full logging with all features\n private fullLog(\n level: LogLevel,\n message: string,\n context?: string,\n metadata?: Record<string, any>\n ): void {\n // Use object pooling for LogEntry (Pino's technique)\n const entry = MoroLogger.getPooledEntry();\n const now = Date.now();\n\n entry.timestamp = new Date(now);\n entry.level = level;\n entry.message = message;\n (entry as ResettableLogEntry).context = this.contextPrefix\n ? context\n ? `${this.contextPrefix}:${context}`\n : this.contextPrefix\n : context;\n entry.metadata = this.createMetadata(metadata);\n (entry as ResettableLogEntry).performance = this.options.enablePerformance\n ? this.getPerformanceData(now)\n : undefined;\n\n // Apply filters with early return optimization\n if (this.filters.size > 0) {\n for (const filter of this.filters.values()) {\n if (!filter.filter(entry)) {\n MoroLogger.returnPooledEntry(entry);\n return;\n }\n }\n }\n\n // Only update metrics and history if enabled\n if (this.metricsEnabled) {\n this.updateMetrics(entry);\n this.addToHistory(entry);\n }\n\n // Write to outputs with batched processing\n this.writeToOutputs(entry, level);\n\n // Return entry to pool\n MoroLogger.returnPooledEntry(entry);\n }\n\n // Absolute minimal logging - pure speed, no overhead\n private complexLog(\n level: LogLevel,\n message: string,\n context?: string,\n metadata?: Record<string, any>\n ): void {\n // Use object pooling for LogEntry (Pino's technique)\n const entry = MoroLogger.getPooledEntry();\n const now = Date.now();\n\n entry.timestamp = new Date(now);\n entry.level = level;\n entry.message = message;\n (entry as ResettableLogEntry).context = this.contextPrefix\n ? context\n ? `${this.contextPrefix}:${context}`\n : this.contextPrefix\n : context;\n entry.metadata = this.createMetadata(metadata);\n (entry as ResettableLogEntry).performance = this.options.enablePerformance\n ? this.getPerformanceData(now)\n : undefined;\n\n // Write to outputs with batched processing\n this.writeToOutputs(entry, level);\n\n // Return entry to pool\n MoroLogger.returnPooledEntry(entry);\n }\n\n // Simple log writer with colors for minimal overhead cases\n private writeSimpleLog(level: LogLevel, message: string, context?: string): void {\n const colors = this.options.enableColors !== false;\n const levelReset = colors ? MoroLogger.RESET : '';\n\n MoroLogger.resetStringBuilder();\n\n // Timestamp with caching optimization\n if (this.options.enableTimestamp !== false) {\n const timestamp = this.getFastCachedTimestamp();\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS.timestamp);\n MoroLogger.appendToBuilder(timestamp);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(timestamp);\n }\n MoroLogger.appendToBuilder(' ');\n }\n\n // Level with pre-allocated strings\n const levelStr = MoroLogger.LEVEL_STRINGS[level];\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS[level]);\n MoroLogger.appendToBuilder(MoroLogger.BOLD);\n MoroLogger.appendToBuilder(levelStr);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(levelStr);\n }\n\n // Context\n if (context && this.options.enableContext !== false) {\n MoroLogger.appendToBuilder(' ');\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS.context);\n MoroLogger.appendToBuilder(`[${context}]`);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(`[${context}]`);\n }\n }\n\n // Message\n MoroLogger.appendToBuilder(' ');\n MoroLogger.appendToBuilder(message);\n\n // Output main log line with high-performance method\n const finalMessage = MoroLogger.buildString();\n this.output(`${finalMessage}\\n`, level);\n }\n\n private updateMetrics(entry: LogEntry): void {\n // NOOP when metrics disabled\n if (!this.metricsEnabled) return;\n\n this.metrics.totalLogs++;\n this.metrics.logsByLevel[entry.level]++;\n\n if (entry.context) {\n this.metrics.logsByContext[entry.context] =\n (this.metrics.logsByContext[entry.context] || 0) + 1;\n }\n }\n\n // Optimized metadata creation to avoid unnecessary object spreading\n private createMetadata(metadata?: Record<string, any>): Record<string, any> {\n if (!metadata && !this.contextMetadata) {\n return {};\n }\n if (!metadata) {\n return { ...this.contextMetadata };\n }\n if (!this.contextMetadata) {\n return { ...metadata };\n }\n return { ...this.contextMetadata, ...metadata };\n }\n\n // Optimized performance data with caching\n private getPerformanceData(now: number): { memory: number } | undefined {\n if (now - this.lastMemoryCheck > this.memoryCheckInterval) {\n this.lastMemoryCheck = now;\n this.metrics.memoryUsage = process.memoryUsage().heapUsed / 1024 / 1024;\n }\n return { memory: this.metrics.memoryUsage };\n }\n\n // Circular buffer implementation for history (O(1) instead of O(n))\n private addToHistory(entry: LogEntry): void {\n const maxEntries = this.options.maxEntries || 1000;\n\n if (this.historySize < maxEntries) {\n this.history[this.historySize] = entry;\n this.historySize++;\n } else {\n // Circular buffer: overwrite oldest entry\n this.history[this.historyIndex] = entry;\n this.historyIndex = (this.historyIndex + 1) % maxEntries;\n }\n }\n\n // Optimized output writing with batching\n private writeToOutputs(entry: LogEntry, level: LogLevel): void {\n if (this.outputs.size === 0) return;\n\n let successCount = 0;\n const errors: Array<{ outputName: string; error: any }> = [];\n\n for (const output of this.outputs.values()) {\n if (!output.level || MoroLogger.LEVELS[level] >= MoroLogger.LEVELS[output.level]) {\n try {\n void output.write(entry);\n successCount++;\n } catch (error) {\n errors.push({ outputName: output.name, error });\n this.handleOutputError(output.name, error);\n }\n }\n }\n\n // If all outputs fail, use emergency console\n if (successCount === 0 && this.outputs.size > 0) {\n this.emergencyConsoleWrite(entry);\n }\n\n // Log output errors (but avoid infinite loops)\n if (errors.length > 0 && level !== 'error') {\n this.error(`Logger output errors: ${errors.length} failed`, 'MoroLogger', {\n errors: errors.map(e => e.outputName),\n });\n }\n }\n\n private writeToConsole(entry: LogEntry): void {\n const format = this.options.format || 'pretty';\n\n if (format === 'json') {\n this.output(`${this.safeStringify(entry)}\\n`, entry.level);\n return;\n }\n\n if (format === 'compact') {\n const level = entry.level.toUpperCase().padEnd(5);\n const context = entry.context ? `[${entry.context}] ` : '';\n this.output(`${level} ${context}${entry.message}\\n`, entry.level);\n return;\n }\n\n // Pretty format (default)\n this.writePrettyLog(entry);\n }\n\n private writePrettyLog(entry: LogEntry): void {\n const colors = this.options.enableColors !== false;\n const levelReset = colors ? MoroLogger.RESET : '';\n\n MoroLogger.resetStringBuilder();\n\n // Timestamp with caching optimization\n if (this.options.enableTimestamp !== false) {\n const timestamp = this.getCachedTimestamp(entry.timestamp);\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS.timestamp);\n MoroLogger.appendToBuilder(timestamp);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(timestamp);\n }\n MoroLogger.appendToBuilder(' ');\n }\n\n // Level with pre-allocated strings\n const levelStr = MoroLogger.LEVEL_STRINGS[entry.level];\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS[entry.level]);\n MoroLogger.appendToBuilder(MoroLogger.BOLD);\n MoroLogger.appendToBuilder(levelStr);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(levelStr);\n }\n\n // Context\n if (entry.context && this.options.enableContext !== false) {\n MoroLogger.appendToBuilder(' ');\n if (colors) {\n MoroLogger.appendToBuilder(MoroLogger.COLORS.context);\n MoroLogger.appendToBuilder(`[${entry.context}]`);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(`[${entry.context}]`);\n }\n }\n\n // Message\n MoroLogger.appendToBuilder(' ');\n MoroLogger.appendToBuilder(entry.message);\n\n // Performance info\n if (entry.performance && this.options.enablePerformance !== false) {\n const perfColor = colors ? MoroLogger.COLORS.performance : '';\n const perfParts: string[] = [];\n\n if (entry.performance.duration !== undefined) {\n perfParts.push(`${entry.performance.duration}ms`);\n }\n if (entry.performance.memory !== undefined) {\n perfParts.push(`${Math.round(entry.performance.memory)}MB`);\n }\n\n if (perfParts.length > 0) {\n MoroLogger.appendToBuilder(' ');\n if (colors) {\n MoroLogger.appendToBuilder(perfColor);\n MoroLogger.appendToBuilder(`(${perfParts.join(', ')})`);\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(`(${perfParts.join(', ')})`);\n }\n }\n }\n\n // Metadata with optimized JSON stringify - fast empty check\n if (entry.metadata && this.options.enableMetadata !== false) {\n // Fast empty check\n let hasMetadata = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ in entry.metadata) {\n hasMetadata = true;\n break;\n }\n\n if (hasMetadata) {\n const metaColor = colors ? MoroLogger.COLORS.metadata : '';\n const cleanMetadata = this.cleanMetadata(entry.metadata);\n\n // Check cleaned metadata is not empty\n let hasCleanedData = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ in cleanMetadata) {\n hasCleanedData = true;\n break;\n }\n\n if (hasCleanedData) {\n MoroLogger.appendToBuilder(' ');\n if (colors) {\n MoroLogger.appendToBuilder(metaColor);\n MoroLogger.appendToBuilder(this.safeStringify(cleanMetadata));\n MoroLogger.appendToBuilder(levelReset);\n } else {\n MoroLogger.appendToBuilder(this.safeStringify(cleanMetadata));\n }\n }\n }\n }\n\n // Output main log line with high-performance method\n const finalMessage = MoroLogger.buildString();\n this.output(`${finalMessage}\\n`, entry.level);\n\n // Stack trace for errors\n if (entry.metadata?.stack && (entry.level === 'error' || entry.level === 'fatal')) {\n const stackColor = colors ? MoroLogger.COLORS.error : '';\n this.output(`${stackColor}${entry.metadata.stack}${levelReset}\\n`, entry.level);\n }\n }\n\n // Optimized metadata cleaning to avoid unnecessary object operations\n private cleanMetadata(metadata: Record<string, any>): Record<string, any> {\n const clean: Record<string, any> = {};\n for (const [key, value] of Object.entries(metadata)) {\n if (key !== 'stack') {\n clean[key] = value;\n }\n }\n return clean;\n }\n\n // Parallel to outputBuffer: whether each entry belongs on stderr.\n // Tagged at push time from the actual level - avoids re-scanning every\n // buffered line for 'ERROR' text (which also misrouted lines that merely\n // contained the word).\n private outputBufferIsError: boolean[] = [];\n\n // High-performance output with buffering\n private output(message: string, level: LogLevel = 'info'): void {\n // Prevent memory exhaustion\n if (\n this.outputBuffer.length >= this.bufferOverflowThreshold &&\n !this.emergencyFlushInProgress\n ) {\n this.emergencyFlushInProgress = true;\n this.forceFlushBuffer();\n this.emergencyFlushInProgress = false;\n }\n\n this.outputBuffer.push(message);\n this.outputBufferIsError.push(level === 'error' || level === 'fatal');\n this.bufferSize++;\n\n // Immediate flush for critical levels or full buffer\n if (level === 'fatal' || level === 'error' || this.bufferSize >= this.maxBufferSize) {\n this.flushBuffer();\n } else {\n this.scheduleFlush();\n }\n }\n\n private scheduleFlush(): void {\n if (this.flushTimeout || this.isDestroyed) {\n return; // Already scheduled or destroyed\n }\n\n this.flushTimeout = setTimeout(() => {\n this.flushBuffer();\n }, this.flushInterval);\n\n // Unref the timeout so it doesn't prevent process exit (important for tests)\n this.flushTimeout.unref();\n }\n\n public flushBuffer(): void {\n if (this.outputBuffer.length === 0) {\n return;\n }\n\n // Group messages by the stream tag recorded at push time\n const stdoutMessages: string[] = [];\n const stderrMessages: string[] = [];\n\n for (let i = 0; i < this.outputBuffer.length; i++) {\n const message = this.outputBuffer[i];\n if (message === undefined) continue;\n if (this.outputBufferIsError[i]) {\n stderrMessages.push(message);\n } else {\n stdoutMessages.push(message);\n }\n }\n\n // Write to appropriate streams with error handling\n try {\n if (stdoutMessages.length > 0 && process.stdout.writable) {\n process.stdout.write(stdoutMessages.join(''));\n }\n if (stderrMessages.length > 0 && process.stderr.writable) {\n process.stderr.write(stderrMessages.join(''));\n }\n } catch {\n // Fallback to console if streams fail\n try {\n // eslint-disable-next-line no-console\n console.log(this.outputBuffer.join(''));\n } catch {\n // If even console.log fails, just ignore\n }\n }\n\n // Clear buffer\n this.outputBuffer.length = 0;\n this.outputBufferIsError.length = 0;\n this.bufferSize = 0;\n\n // Clear timeout\n if (this.flushTimeout) {\n clearTimeout(this.flushTimeout);\n this.flushTimeout = null;\n }\n }\n\n // Emergency flush for buffer overflow protection\n private forceFlushBuffer(): void {\n if (this.outputBuffer.length === 0) return;\n\n try {\n const message = this.outputBuffer.join('');\n process.stdout.write(message);\n } catch {\n // Emergency fallback - write individual messages\n for (const msg of this.outputBuffer) {\n try {\n process.stdout.write(msg);\n } catch {\n // If even this fails, give up on this batch\n break;\n }\n }\n } finally {\n this.outputBuffer.length = 0;\n this.outputBufferIsError.length = 0;\n this.bufferSize = 0;\n }\n }\n\n // Safe stringify with circular reference detection\n private safeStringify(obj: any, maxDepth = 3): string {\n const seen = new WeakSet();\n\n const stringify = (value: any, depth: number): any => {\n if (depth > maxDepth) return '[Max Depth Reached]';\n if (value === null || typeof value !== 'object') return value;\n if (seen.has(value)) return '[Circular Reference]';\n\n seen.add(value);\n\n if (Array.isArray(value)) {\n return value.map(item => stringify(item, depth + 1));\n }\n\n const result: any = {};\n for (const [key, val] of Object.entries(value)) {\n if (typeof val !== 'function') {\n // Skip functions\n result[key] = stringify(val, depth + 1);\n }\n }\n return result;\n };\n\n try {\n return JSON.stringify(stringify(obj, 0));\n } catch {\n return '[Stringify Error]';\n }\n }\n\n // Configuration validation\n private validateOptions(options: LoggerOptions): LoggerOptions {\n const validated = { ...options };\n\n // Validate log level\n const validLevels = ['debug', 'info', 'warn', 'error', 'fatal'];\n if (validated.level && !validLevels.includes(validated.level)) {\n // eslint-disable-next-line no-console\n console.warn(`[MoroLogger] Invalid log level: ${validated.level}, defaulting to 'info'`);\n validated.level = 'info';\n }\n\n // Validate max entries\n if (validated.maxEntries !== undefined) {\n if (validated.maxEntries < 1 || validated.maxEntries > 100000) {\n // eslint-disable-next-line no-console\n console.warn(\n `[MoroLogger] Invalid maxEntries: ${validated.maxEntries}, defaulting to 1000`\n );\n validated.maxEntries = 1000;\n }\n }\n\n // Validate buffer size\n if (validated.maxBufferSize !== undefined) {\n if (validated.maxBufferSize < 10 || validated.maxBufferSize > 10000) {\n // eslint-disable-next-line no-console\n console.warn(\n `[MoroLogger] Invalid maxBufferSize: ${validated.maxBufferSize}, defaulting to 1000`\n );\n validated.maxBufferSize = 1000;\n }\n }\n\n return validated;\n }\n\n // Error handling methods\n private handleOutputError(outputName: string, _error: any): void {\n // Could implement output retry logic, circuit breaker, etc.\n // For now, just track the error\n if (!this.metrics.outputErrors) {\n this.metrics.outputErrors = {};\n }\n this.metrics.outputErrors[outputName] = (this.metrics.outputErrors[outputName] || 0) + 1;\n }\n\n private emergencyConsoleWrite(entry: LogEntry): void {\n const message = `${entry.timestamp.toISOString()} ${entry.level.toUpperCase()} ${entry.message}`;\n try {\n if (entry.level === 'error' || entry.level === 'fatal') {\n process.stderr.write(`[EMERGENCY] ${message}\\n`);\n } else {\n process.stdout.write(`[EMERGENCY] ${message}\\n`);\n }\n } catch {\n // If even emergency write fails, there's nothing more we can do\n }\n }\n\n // Force flush streams (useful for shutdown)\n public flush(): void {\n // Clear any pending flush timeout\n if (this.flushTimeout) {\n clearTimeout(this.flushTimeout);\n this.flushTimeout = null;\n }\n\n // Flush any remaining buffer\n this.flushBuffer();\n\n try {\n // Force flush streams without ending them\n if (process.stdout.writable) {\n process.stdout.write(''); // Force flush without ending\n }\n if (process.stderr.writable) {\n process.stderr.write(''); // Force flush without ending\n }\n } catch {\n // Ignore flush errors\n }\n }\n\n // Destroy logger and clean up all resources (for testing)\n public destroy(): void {\n // Mark as destroyed to prevent new timeouts\n this.isDestroyed = true;\n\n // Clear any remaining timeouts\n if (this.flushTimeout) {\n clearTimeout(this.flushTimeout);\n this.flushTimeout = null;\n }\n\n // Flush any remaining buffer\n this.flushBuffer();\n\n // Clear outputs and filters\n this.outputs.clear();\n this.filters.clear();\n\n // Clear history\n this.history.length = 0;\n this.historyIndex = 0;\n this.historySize = 0;\n }\n}\n\n// Global logger instance\nconst initialLogLevel =\n process.env.LOG_LEVEL ||\n process.env.MORO_LOG_LEVEL ||\n (process.env.NODE_ENV === 'production' ? 'warn' : 'debug');\n\n// Local boolean env parser - kept here so the global logger can be configured\n// from env vars before any framework code (createApp) runs.\nconst parseGlobalBoolEnv = (raw: string | undefined): boolean | undefined => {\n if (raw === undefined) return undefined;\n const v = raw.trim().toLowerCase();\n if (v === '') return undefined;\n if (v === 'true' || v === '1' || v === 'yes' || v === 'on') return true;\n if (v === 'false' || v === '0' || v === 'no' || v === 'off') return false;\n return undefined;\n};\n\nconst envMetadata = parseGlobalBoolEnv(process.env.LOG_METADATA ?? process.env.MORO_LOG_METADATA);\nconst envPerformance = parseGlobalBoolEnv(\n process.env.LOG_PERFORMANCE ?? process.env.MORO_LOG_PERFORMANCE\n);\n\nexport const logger = new MoroLogger({\n level: initialLogLevel as LogLevel,\n enableColors: !process.env.NO_COLOR,\n format: (process.env.LOG_FORMAT as any) || 'pretty',\n // Opt-in flags - only override defaults when env var is explicitly set.\n ...(envMetadata !== undefined ? { enableMetadata: envMetadata } : {}),\n ...(envPerformance !== undefined ? { enablePerformance: envPerformance } : {}),\n});\n\n/**\n * Configure the global logger with new settings.\n * This allows runtime configuration of the logger.\n *\n * The presentation flags (enableMetadata, enablePerformance, enableTimestamp,\n * enableContext, enableColors, format) are read live from this.options on every\n * log call, so reassigning them on the existing instance takes effect immediately\n * without rebuilding the logger.\n */\nexport function configureGlobalLogger(options: Partial<LoggerOptions>): void {\n if (options.level) {\n logger.setLevel(options.level);\n }\n\n // Apply presentation toggles directly onto the live options object.\n // We touch this.options via a typed accessor to keep it explicit.\n const liveOptions = (logger as unknown as { options: LoggerOptions }).options;\n if (liveOptions === undefined || liveOptions === null) {\n return;\n }\n\n if (options.enableMetadata !== undefined) {\n liveOptions.enableMetadata = options.enableMetadata;\n }\n if (options.enablePerformance !== undefined) {\n liveOptions.enablePerformance = options.enablePerformance;\n }\n if (options.enableTimestamp !== undefined) {\n liveOptions.enableTimestamp = options.enableTimestamp;\n }\n if (options.enableContext !== undefined) {\n liveOptions.enableContext = options.enableContext;\n }\n if (options.enableColors !== undefined) {\n liveOptions.enableColors = options.enableColors;\n }\n if (options.format !== undefined) {\n liveOptions.format = options.format;\n }\n}\n\n/**\n * Destroy the global logger and clean up resources (for testing)\n * @internal\n */\nexport function destroyGlobalLogger(): void {\n logger.destroy();\n}\n\n/**\n * Apply logging configuration from the config system and/or createApp options\n */\nexport function applyLoggingConfiguration(\n configLogging?: any,\n appOptions?: Partial<LoggerOptions> | boolean\n): void {\n // First apply config system settings (from environment variables / config files).\n // Pluck any presentation flags that map directly onto LoggerOptions.\n if (configLogging) {\n const fromConfig: Partial<LoggerOptions> = {};\n if (configLogging.level) {\n fromConfig.level = configLogging.level;\n }\n if (configLogging.format !== undefined) {\n fromConfig.format = configLogging.format;\n }\n if (configLogging.enableColors !== undefined) {\n fromConfig.enableColors = configLogging.enableColors;\n }\n if (configLogging.enableTimestamp !== undefined) {\n fromConfig.enableTimestamp = configLogging.enableTimestamp;\n }\n if (configLogging.enableContext !== undefined) {\n fromConfig.enableContext = configLogging.enableContext;\n }\n if (configLogging.enableMetadata !== undefined) {\n fromConfig.enableMetadata = configLogging.enableMetadata;\n }\n if (configLogging.enablePerformance !== undefined) {\n fromConfig.enablePerformance = configLogging.enablePerformance;\n }\n if (Object.keys(fromConfig).length > 0) {\n configureGlobalLogger(fromConfig);\n }\n }\n\n // Then apply createApp options (these take precedence)\n if (appOptions !== undefined) {\n if (appOptions === false) {\n // Disable logging by setting to fatal level\n configureGlobalLogger({ level: 'fatal' });\n } else if (typeof appOptions === 'object') {\n configureGlobalLogger(appOptions);\n }\n }\n}\n\n// Framework-specific logger\nexport const createFrameworkLogger = (context: string) => {\n return logger.child('Moro', { framework: 'moro', context });\n};\n\n// Flush any pending logs synchronously on the way out. We deliberately do NOT\n// register SIGINT/SIGTERM handlers here. Registering them at import time is\n// harmful either way: a non-exiting handler suppresses Node's default Ctrl-C\n// termination (the app becomes unkillable), and one that calls process.exit()\n// preempts the framework's own graceful-shutdown handlers (which are registered\n// later, so process.exit() runs first) and masks the real signal/exit code.\n// Signal handling belongs to the application/framework; the logger only ensures\n// buffered logs are flushed. flush() is synchronous, so it is safe in 'exit'.\nprocess.on('exit', () => {\n logger.flush();\n});\n\nprocess.on('beforeExit', () => {\n logger.flush();\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../../src/core/logger/outputs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../../src/core/logger/outputs.ts"],"names":[],"mappings":"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","sourcesContent":["// Advanced Logger Outputs\nimport { appendFile, mkdir } from 'fs/promises';\nimport { dirname } from 'path';\nimport { LogEntry, LogOutput } from '../../types/logger.js';\n\n// File output for persistent logging\nexport class FileOutput implements LogOutput {\n name = 'file';\n\n constructor(\n private filePath: string,\n private options: {\n format?: 'json' | 'pretty';\n maxSize?: number; // MB\n rotate?: boolean;\n } = {}\n ) {}\n\n async write(entry: LogEntry): Promise<void> {\n try {\n // Ensure directory exists\n await mkdir(dirname(this.filePath), { recursive: true });\n\n const format = this.options.format || 'json';\n const line =\n format === 'json' ? JSON.stringify(entry) + '\\n' : this.formatPretty(entry) + '\\n';\n\n await appendFile(this.filePath, line, 'utf8');\n\n // TODO: Implement log rotation if needed\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('File logger error:', error);\n }\n }\n\n private formatPretty(entry: LogEntry): string {\n const timestamp = entry.timestamp.toISOString();\n const level = entry.level.toUpperCase().padEnd(5);\n const context = entry.context ? `[${entry.context}] ` : '';\n\n // Fast empty check without Object.keys\n let metadata = '';\n if (entry.metadata) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ in entry.metadata) {\n metadata = ` ${JSON.stringify(entry.metadata)}`;\n break;\n }\n }\n\n return `${timestamp} ${level} ${context}${entry.message}${metadata}`;\n }\n}\n\n// HTTP webhook output for external logging services\nexport class WebhookOutput implements LogOutput {\n name = 'webhook';\n\n constructor(\n private url: string,\n private options: {\n headers?: Record<string, string>;\n batch?: boolean;\n batchSize?: number;\n timeout?: number;\n } = {}\n ) {}\n\n async write(entry: LogEntry): Promise<void> {\n try {\n const response = await fetch(this.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.options.headers,\n },\n body: JSON.stringify(entry),\n signal: AbortSignal.timeout(this.options.timeout || 5000),\n });\n\n if (!response.ok) {\n throw new Error(`Webhook failed: ${response.status}`);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Webhook logger error:', error);\n }\n }\n}\n\n// Memory buffer output for testing and debugging\nexport class MemoryOutput implements LogOutput {\n name = 'memory';\n private buffer: LogEntry[] = [];\n\n constructor(private maxSize: number = 1000) {}\n\n write(entry: LogEntry): void {\n this.buffer.push(entry);\n if (this.buffer.length > this.maxSize) {\n this.buffer.shift();\n }\n }\n\n getEntries(): LogEntry[] {\n return [...this.buffer];\n }\n\n clear(): void {\n this.buffer = [];\n }\n}\n\n// Stream output for custom processing\nexport class StreamOutput implements LogOutput {\n name = 'stream';\n format?: 'pretty' | 'json' | 'compact';\n\n constructor(\n private stream: NodeJS.WritableStream,\n format: 'json' | 'pretty' = 'json'\n ) {\n this.format = format;\n }\n\n write(entry: LogEntry): void {\n const data =\n this.format === 'json' ? JSON.stringify(entry) + '\\n' : this.formatPretty(entry) + '\\n';\n\n this.stream.write(data);\n }\n\n private formatPretty(entry: LogEntry): string {\n const timestamp = entry.timestamp.toISOString();\n const level = entry.level.toUpperCase().padEnd(5);\n const context = entry.context ? `[${entry.context}] ` : '';\n return `${timestamp} ${level} ${context}${entry.message}`;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/console-adapter.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,mBAAmB;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IACzC,MAAM,CAAS;IAEvB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"console-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/console-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Console Adapter - Built-in Email Adapter for Testing\n// ESM-first module\n\nimport { BaseMailAdapter } from '../mail-adapter.js';\nimport type { MailOptions, MailResult } from '../types.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\nimport type { Logger } from '../../../types/logger.js';\n\n/**\n * Console adapter for development and testing\n * Logs emails to console instead of sending them\n */\nexport class ConsoleAdapter extends BaseMailAdapter {\n private logger: Logger;\n\n constructor() {\n super();\n this.logger = createFrameworkLogger('Mail:Console');\n }\n\n override async initialize(config: any): Promise<void> {\n await super.initialize(config);\n this.logger.info('Console adapter initialized', 'Mail');\n }\n\n async send(options: MailOptions): Promise<MailResult> {\n this.ensureInitialized();\n\n const from = options.from\n ? typeof options.from === 'string'\n ? options.from\n : `${options.from.name} <${options.from.email}>`\n : 'unknown@sender.com';\n\n const to = Array.isArray(options.to)\n ? options.to.map(addr => (typeof addr === 'string' ? addr : addr.email)).join(', ')\n : typeof options.to === 'string'\n ? options.to\n : options.to.email;\n\n /* eslint-disable no-console */\n console.log('\\n========== EMAIL ==========');\n console.log(`From: ${from}`);\n console.log(`To: ${to}`);\n\n if (options.cc) {\n const cc = Array.isArray(options.cc)\n ? options.cc.map(addr => (typeof addr === 'string' ? addr : addr.email)).join(', ')\n : typeof options.cc === 'string'\n ? options.cc\n : options.cc.email;\n console.log(`CC: ${cc}`);\n }\n\n if (options.bcc) {\n const bcc = Array.isArray(options.bcc)\n ? options.bcc.map(addr => (typeof addr === 'string' ? addr : addr.email)).join(', ')\n : typeof options.bcc === 'string'\n ? options.bcc\n : options.bcc.email;\n console.log(`BCC: ${bcc}`);\n }\n\n console.log(`Subject: ${options.subject}`);\n\n if (options.priority) {\n console.log(`Priority: ${options.priority}`);\n }\n\n if (options.replyTo) {\n const replyTo =\n typeof options.replyTo === 'string'\n ? options.replyTo\n : `${options.replyTo.name} <${options.replyTo.email}>`;\n console.log(`Reply-To: ${replyTo}`);\n }\n\n if (options.attachments && options.attachments.length > 0) {\n console.log(`Attachments: ${options.attachments.map(a => a.filename).join(', ')}`);\n }\n\n console.log('\\n--- Body ---');\n\n if (options.text) {\n console.log(options.text);\n }\n\n if (options.html) {\n console.log('\\n--- HTML ---');\n console.log(options.html.substring(0, 200) + (options.html.length > 200 ? '...' : ''));\n }\n\n console.log('===========================\\n');\n /* eslint-enable no-console */\n\n const messageId = `console-${Date.now()}-${Math.random().toString(36).substring(7)}`;\n\n return {\n success: true,\n messageId,\n accepted: [to],\n response: 'Email logged to console',\n };\n }\n\n getName(): string {\n return 'Console';\n }\n\n override async verify(): Promise<boolean> {\n return true;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,mBAAmB;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,mBAAmB;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["// Adapter Index - Export all email adapters\n// ESM-first module\n\nexport { ConsoleAdapter } from './console-adapter.js';\nexport { NodemailerAdapter } from './nodemailer-adapter.js';\nexport { SendGridAdapter } from './sendgrid-adapter.js';\nexport { SESAdapter } from './ses-adapter.js';\nexport { ResendAdapter } from './resend-adapter.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodemailer-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/nodemailer-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodemailer-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/nodemailer-adapter.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qCAAqC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IAC5C,WAAW,CAAM;IACjB,MAAM,CAAS;IAEvB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAA4B;QACpD,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,gCAAgC;gBAC9B,2CAA2C;gBAC3C,kCAAkC,CACrC,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAEhD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;gBACtC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC;YAEF,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACf,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxD,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb,CAAC,CAAC,CAAC;YACN,CAAC;YAED,8CAA8C;YAC9C,MAAM,OAAO,GAAsC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAE1E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC5C,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;oBACvD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC9B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YACzB,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC7C,CAAC;YAED,qCAAqC;YACrC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;oBAClE,CAAC,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;oBAC7C,CAAC,CAAC,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC;YACrC,CAAC;YAED,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;YACjE,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YACtC,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC;YACjD,CAAC;YAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC;YAC3D,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;YACnD,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC;YACvD,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC1C,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,WAAW,CAAC,QAAQ,GAAG;oBACrB,IAAI,EAAE,OAAO,CAAC,UAAU;oBACxB,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;iBACrC,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC1C,CAAC;YAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAClD,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAChC,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE5E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,YAAY,CAAC;IACtB,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,OAAY;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,IAAI,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,SAAc;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF","sourcesContent":["// Nodemailer Adapter - SMTP Email Adapter\n// ESM-first module with lazy loading\n\nimport { BaseMailAdapter } from '../mail-adapter.js';\nimport type { MailOptions, MailResult, NodemailerConnection } from '../types.js';\nimport { isPackageAvailable, resolveUserPackage } from '../../utilities/package-utils.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\nimport type { Logger } from '../../../types/logger.js';\n\n/**\n * Nodemailer adapter for SMTP email sending\n * Supports Gmail, Outlook, custom SMTP servers\n */\nexport class NodemailerAdapter extends BaseMailAdapter {\n private transporter: any;\n private logger: Logger;\n\n constructor() {\n super();\n this.logger = createFrameworkLogger('Mail:Nodemailer');\n }\n\n override async initialize(config: NodemailerConnection): Promise<void> {\n if (!isPackageAvailable('nodemailer')) {\n throw new Error(\n 'Nodemailer is not installed.\\n' +\n 'Install it with: npm install nodemailer\\n' +\n 'Or use a different mail adapter.'\n );\n }\n\n const nodemailerPath = resolveUserPackage('nodemailer');\n const nodemailer = await import(nodemailerPath);\n\n this.transporter = nodemailer.default.createTransport(config);\n\n await super.initialize(config);\n this.logger.info('Nodemailer adapter initialized', 'Mail');\n }\n\n async send(options: MailOptions): Promise<MailResult> {\n this.ensureInitialized();\n\n if (!this.transporter) {\n throw new Error('Nodemailer transporter not initialized');\n }\n\n try {\n const mailOptions: any = {\n from: this.formatAddress(options.from),\n to: this.formatAddresses(options.to),\n subject: options.subject,\n text: options.text,\n html: options.html,\n };\n\n if (options.cc) {\n mailOptions.cc = this.formatAddresses(options.cc);\n }\n\n if (options.bcc) {\n mailOptions.bcc = this.formatAddresses(options.bcc);\n }\n\n if (options.replyTo) {\n mailOptions.replyTo = this.formatAddress(options.replyTo);\n }\n\n if (options.sender) {\n mailOptions.sender = this.formatAddress(options.sender);\n }\n\n if (options.attachments) {\n mailOptions.attachments = options.attachments.map(att => ({\n filename: att.filename,\n content: att.content,\n encoding: att.encoding,\n contentType: att.contentType,\n cid: att.cid,\n }));\n }\n\n // Build headers object with compliance fields\n const headers: Record<string, string | string[]> = { ...options.headers };\n\n if (options.messageId) {\n headers['Message-ID'] = options.messageId;\n }\n\n if (options.references) {\n headers['References'] = Array.isArray(options.references)\n ? options.references.join(' ')\n : options.references;\n }\n\n if (options.inReplyTo) {\n headers['In-Reply-To'] = options.inReplyTo;\n }\n\n // List management headers (RFC 2369)\n if (options.listUnsubscribe) {\n headers['List-Unsubscribe'] = Array.isArray(options.listUnsubscribe)\n ? `<${options.listUnsubscribe.join('>, <')}>`\n : `<${options.listUnsubscribe}>`;\n }\n\n if (options.listUnsubscribePost) {\n headers['List-Unsubscribe-Post'] = options.listUnsubscribePost;\n }\n\n if (options.listId) {\n headers['List-ID'] = options.listId;\n }\n\n if (options.listHelp) {\n headers['List-Help'] = `<${options.listHelp}>`;\n }\n\n if (options.listSubscribe) {\n headers['List-Subscribe'] = `<${options.listSubscribe}>`;\n }\n\n if (options.listOwner) {\n headers['List-Owner'] = `<${options.listOwner}>`;\n }\n\n if (options.listArchive) {\n headers['List-Archive'] = `<${options.listArchive}>`;\n }\n\n if (Object.keys(headers).length > 0) {\n mailOptions.headers = headers;\n }\n\n if (options.priority) {\n mailOptions.priority = options.priority;\n }\n\n if (options.returnPath) {\n mailOptions.envelope = {\n from: options.returnPath,\n to: this.formatAddresses(options.to),\n };\n }\n\n if (options.encoding) {\n mailOptions.encoding = options.encoding;\n }\n\n if (options.textEncoding) {\n mailOptions.textEncoding = options.textEncoding;\n }\n\n if (options.date) {\n mailOptions.date = options.date;\n }\n\n if (options.dsn) {\n mailOptions.dsn = options.dsn;\n }\n\n const info = await this.transporter.sendMail(mailOptions);\n\n return {\n success: true,\n messageId: info.messageId,\n accepted: info.accepted,\n rejected: info.rejected,\n response: info.response,\n };\n } catch (error) {\n this.logger.error('Failed to send email via Nodemailer', 'Mail', { error });\n\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n getName(): string {\n return 'Nodemailer';\n }\n\n override async verify(): Promise<boolean> {\n if (!this.transporter) {\n return false;\n }\n\n try {\n await this.transporter.verify();\n return true;\n } catch (error) {\n this.logger.error('Nodemailer verification failed', 'Mail', { error });\n return false;\n }\n }\n\n override async close(): Promise<void> {\n if (this.transporter) {\n this.transporter.close();\n }\n await super.close();\n }\n\n private formatAddress(address: any): string {\n if (!address) {\n return '';\n }\n\n if (typeof address === 'string') {\n return address;\n }\n\n if (address.name) {\n return `\"${address.name}\" <${address.email}>`;\n }\n\n return address.email;\n }\n\n private formatAddresses(addresses: any): string {\n if (!addresses) {\n return '';\n }\n\n if (typeof addresses === 'string') {\n return addresses;\n }\n\n if (Array.isArray(addresses)) {\n return addresses.map(addr => this.formatAddress(addr)).join(', ');\n }\n\n return this.formatAddress(addresses);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resend-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/resend-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resend-adapter.js","sourceRoot":"","sources":["../../../../src/core/mail/adapters/resend-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Resend Adapter - Modern Email API\n// ESM-first module with lazy loading\n\nimport { BaseMailAdapter } from '../mail-adapter.js';\nimport type { MailOptions, MailResult, ResendConnection } from '../types.js';\nimport { isPackageAvailable, resolveUserPackage } from '../../utilities/package-utils.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\nimport type { Logger } from '../../../types/logger.js';\n\n/**\n * Resend adapter for email sending\n * Supports Resend's modern email API\n */\nexport class ResendAdapter extends BaseMailAdapter {\n private client: any;\n private logger: Logger;\n\n constructor() {\n super();\n this.logger = createFrameworkLogger('Mail:Resend');\n }\n\n override async initialize(config: ResendConnection): Promise<void> {\n if (!config.apiKey) {\n throw new Error('Resend API key is required');\n }\n\n if (!isPackageAvailable('resend')) {\n throw new Error(\n 'Resend package is not installed.\\n' +\n 'Install it with: npm install resend\\n' +\n 'Or use a different mail adapter.'\n );\n }\n\n const resendPath = resolveUserPackage('resend');\n const { Resend } = await import(resendPath);\n\n this.client = new Resend(config.apiKey);\n\n await super.initialize(config);\n this.logger.info('Resend adapter initialized', 'Mail');\n }\n\n async send(options: MailOptions): Promise<MailResult> {\n this.ensureInitialized();\n\n if (!this.client) {\n throw new Error('Resend client not initialized');\n }\n\n try {\n const emailData: any = {\n from: this.formatAddress(options.from),\n to: this.formatAddressesArray(options.to),\n subject: options.subject,\n text: options.text,\n html: options.html,\n };\n\n if (options.cc) {\n emailData.cc = this.formatAddressesArray(options.cc);\n }\n\n if (options.bcc) {\n emailData.bcc = this.formatAddressesArray(options.bcc);\n }\n\n if (options.replyTo) {\n emailData.reply_to = this.formatAddress(options.replyTo);\n }\n\n if (options.attachments) {\n emailData.attachments = options.attachments.map(att => ({\n filename: att.filename,\n content: Buffer.isBuffer(att.content) ? att.content : Buffer.from(att.content),\n }));\n }\n\n // Build headers with compliance fields\n const headers: Record<string, string> = { ...options.headers };\n\n if (options.messageId) {\n headers['Message-ID'] = options.messageId;\n }\n\n if (options.references) {\n headers['References'] = Array.isArray(options.references)\n ? options.references.join(' ')\n : options.references;\n }\n\n if (options.inReplyTo) {\n headers['In-Reply-To'] = options.inReplyTo;\n }\n\n // List management headers (RFC 2369)\n if (options.listUnsubscribe) {\n headers['List-Unsubscribe'] = Array.isArray(options.listUnsubscribe)\n ? `<${options.listUnsubscribe.join('>, <')}>`\n : `<${options.listUnsubscribe}>`;\n }\n\n if (options.listUnsubscribePost) {\n headers['List-Unsubscribe-Post'] = options.listUnsubscribePost;\n }\n\n if (options.listId) {\n headers['List-ID'] = options.listId;\n }\n\n if (Object.keys(headers).length > 0) {\n emailData.headers = headers;\n }\n\n // Resend-specific features\n if (options.tags && options.tags.length > 0) {\n emailData.tags = options.tags.map(tag => ({ name: tag }));\n }\n\n if (options.scheduledAt) {\n emailData.scheduledAt = options.scheduledAt.toISOString();\n }\n\n const response = await this.client.emails.send(emailData);\n\n return {\n success: true,\n messageId: response.id,\n response: JSON.stringify(response),\n };\n } catch (error: any) {\n this.logger.error('Failed to send email via Resend', 'Mail', { error });\n\n return {\n success: false,\n error: error?.message || String(error),\n };\n }\n }\n\n override async sendBulk(options: MailOptions[]): Promise<MailResult[]> {\n this.ensureInitialized();\n\n if (!this.client) {\n throw new Error('Resend client not initialized');\n }\n\n try {\n const emails = options.map(opts => ({\n from: this.formatAddress(opts.from),\n to: this.formatAddressesArray(opts.to),\n subject: opts.subject,\n text: opts.text,\n html: opts.html,\n }));\n\n const response = await this.client.batch.send(emails);\n\n return response.data.map((res: any) => ({\n success: true,\n messageId: res.id,\n response: JSON.stringify(res),\n }));\n } catch (error: any) {\n this.logger.error('Failed to send bulk emails via Resend', 'Mail', { error });\n\n return options.map(() => ({\n success: false,\n error: error?.message || String(error),\n }));\n }\n }\n\n getName(): string {\n return 'Resend';\n }\n\n override async verify(): Promise<boolean> {\n return this.initialized;\n }\n\n private formatAddress(address: any): string {\n if (!address) {\n return '';\n }\n\n if (typeof address === 'string') {\n return address;\n }\n\n if (address.name) {\n return `${address.name} <${address.email}>`;\n }\n\n return address.email;\n }\n\n private formatAddressesArray(addresses: any): string[] {\n if (!addresses) {\n return [];\n }\n\n if (typeof addresses === 'string') {\n return [addresses];\n }\n\n if (Array.isArray(addresses)) {\n return addresses.map(addr => this.formatAddress(addr));\n }\n\n return [this.formatAddress(addresses)];\n }\n}\n"]}
|