@morojs/moro 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +44 -21
- 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 +1 -1
- 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":"job-executor.js","sourceRoot":"","sources":["../../../src/core/jobs/job-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-executor.js","sourceRoot":"","sources":["../../../src/core/jobs/job-executor.ts"],"names":[],"mappings":"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","sourcesContent":["// Production-grade Job Executor\n// Handles job execution with retry logic, timeout, circuit breaker, and memory monitoring\n\nimport { EventEmitter } from 'events';\nimport { Logger } from '../../types/logger.js';\nimport { CircuitBreaker } from '../utilities/circuit-breaker.js';\n\n// Type definitions for native Node.js AbortController (available in Node.js 15+)\ntype AbortSignal = {\n readonly aborted: boolean;\n addEventListener(type: 'abort', listener: () => void, options?: { once: boolean }): void;\n removeEventListener(type: 'abort', listener: () => void): void;\n};\n\ntype AbortController = {\n readonly signal: AbortSignal;\n abort(): void;\n};\n\n// Access global AbortController through globalThis\ndeclare global {\n interface GlobalThis {\n AbortController: new () => AbortController;\n }\n}\n\n// Reference to global AbortController\nconst AbortControllerClass = globalThis.AbortController;\n\nexport interface JobExecutorOptions {\n maxRetries?: number;\n retryDelay?: number;\n retryBackoff?: 'linear' | 'exponential';\n retryBackoffMultiplier?: number;\n maxRetryDelay?: number;\n timeout?: number;\n enableCircuitBreaker?: boolean;\n circuitBreakerThreshold?: number;\n circuitBreakerResetTimeout?: number;\n enableMemoryMonitoring?: boolean;\n memoryThreshold?: number; // MB\n}\n\nexport interface JobFunction {\n (...args: any[]): Promise<any> | any;\n}\n\nexport interface ExecutionContext {\n jobId: string;\n executionId: string;\n attempt: number;\n startTime: Date;\n metadata?: Record<string, any>;\n}\n\nexport interface ExecutionResult {\n success: boolean;\n value?: any;\n error?: Error | undefined;\n attempts: number;\n duration: number;\n memoryUsed?: number;\n circuitBreakerTripped?: boolean;\n timedOut?: boolean;\n}\n\n/**\n * JobExecutor - Executes jobs with production-grade resilience\n * Features:\n * - Configurable retry with exponential backoff + jitter\n * - Timeout enforcement\n * - Circuit breaker integration\n * - Memory leak detection\n * - Graceful cancellation\n */\nexport class JobExecutor extends EventEmitter {\n private options: Required<JobExecutorOptions>;\n private logger: Logger;\n private circuitBreakers = new Map<string, CircuitBreaker>();\n private activeExecutions = new Map<string, AbortController>();\n private isShuttingDown = false;\n\n constructor(logger: Logger, options: JobExecutorOptions = {}) {\n super();\n this.logger = logger;\n\n // Set defaults\n this.options = {\n maxRetries: options.maxRetries ?? 3,\n retryDelay: options.retryDelay ?? 1000,\n retryBackoff: options.retryBackoff ?? 'exponential',\n retryBackoffMultiplier: options.retryBackoffMultiplier ?? 2,\n maxRetryDelay: options.maxRetryDelay ?? 60000,\n timeout: options.timeout ?? 300000, // 5 minutes default\n enableCircuitBreaker: options.enableCircuitBreaker ?? true,\n circuitBreakerThreshold: options.circuitBreakerThreshold ?? 5,\n circuitBreakerResetTimeout: options.circuitBreakerResetTimeout ?? 60000,\n enableMemoryMonitoring: options.enableMemoryMonitoring ?? true,\n memoryThreshold: options.memoryThreshold ?? 512, // 512MB default\n };\n\n this.logger.debug('JobExecutor initialized', 'JobExecutor', { options: this.options });\n }\n\n /**\n * Execute a job with full resilience features\n *\n * @param jobId - Unique job identifier\n * @param executionId - Unique execution identifier\n * @param jobFn - The job function to execute\n * @param context - Execution context\n * @param optionOverrides - Per-execution option overrides (merged on top of constructor defaults)\n */\n public async execute(\n jobId: string,\n executionId: string,\n jobFn: JobFunction,\n context?: ExecutionContext,\n optionOverrides?: Partial<JobExecutorOptions>\n ): Promise<ExecutionResult> {\n if (this.isShuttingDown) {\n throw new Error('JobExecutor is shutting down');\n }\n\n // Merge per-execution overrides with constructor defaults\n const opts = optionOverrides ? { ...this.options, ...optionOverrides } : this.options;\n\n const ctx: ExecutionContext = context || {\n jobId,\n executionId,\n attempt: 1,\n startTime: new Date(),\n };\n\n const startTime = Date.now();\n const abortController = new AbortControllerClass();\n this.activeExecutions.set(executionId, abortController);\n\n let lastError: Error | undefined;\n let attempts = 0;\n let circuitBreakerTripped = false;\n let timedOut = false;\n\n try {\n // Check memory before execution\n if (opts.enableMemoryMonitoring) {\n await this.checkMemoryUsage(jobId);\n }\n\n // Execute with retries\n while (attempts <= opts.maxRetries) {\n attempts++;\n ctx.attempt = attempts;\n\n try {\n // Check circuit breaker\n if (opts.enableCircuitBreaker) {\n const breaker = this.getCircuitBreaker(jobId);\n\n if (breaker.isOpen()) {\n circuitBreakerTripped = true;\n throw new Error(`Circuit breaker open for job ${jobId}`);\n }\n }\n\n // Execute with timeout\n const result = await this.executeWithTimeout(\n jobFn,\n ctx,\n abortController.signal,\n opts.timeout\n );\n\n // Success - record in circuit breaker\n if (opts.enableCircuitBreaker) {\n const breaker = this.getCircuitBreaker(jobId);\n breaker.recordSuccess();\n }\n\n const duration = Date.now() - startTime;\n const memoryUsed = this.getMemoryUsage();\n\n this.logger.debug(`Job executed successfully: ${jobId}`, 'JobExecutor', {\n executionId,\n attempts,\n duration,\n memoryUsed,\n });\n\n this.emit('execution:success', {\n jobId,\n executionId,\n attempts,\n duration,\n memoryUsed,\n });\n\n return {\n success: true,\n value: result,\n attempts,\n duration,\n memoryUsed,\n circuitBreakerTripped: false,\n timedOut: false,\n };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Check if it's a timeout\n if (lastError.name === 'TimeoutError' || lastError.message.includes('timeout')) {\n timedOut = true;\n }\n\n // Record failure in circuit breaker\n if (opts.enableCircuitBreaker && !circuitBreakerTripped) {\n const breaker = this.getCircuitBreaker(jobId);\n breaker.recordFailure();\n }\n\n this.logger.warn(\n `Job execution failed: ${jobId} (attempt ${attempts}/${opts.maxRetries + 1})`,\n 'JobExecutor',\n {\n executionId,\n error: lastError.message,\n timedOut,\n circuitBreakerTripped,\n }\n );\n\n this.emit('execution:retry', {\n jobId,\n executionId,\n attempt: attempts,\n maxAttempts: opts.maxRetries + 1,\n error: lastError,\n timedOut,\n });\n\n // Don't retry if circuit breaker tripped or shutting down\n if (circuitBreakerTripped || this.isShuttingDown) {\n break;\n }\n\n // Calculate retry delay with backoff and jitter\n if (attempts <= opts.maxRetries) {\n const delay = this.calculateRetryDelay(attempts, opts);\n await this.sleep(delay);\n }\n }\n }\n\n // All retries exhausted\n const duration = Date.now() - startTime;\n\n this.logger.error(\n `Job execution failed after ${attempts} attempts: ${jobId}`,\n 'JobExecutor',\n {\n executionId,\n error: lastError?.message,\n timedOut,\n circuitBreakerTripped,\n }\n );\n\n this.emit('execution:failed', {\n jobId,\n executionId,\n attempts,\n duration,\n error: lastError,\n timedOut,\n circuitBreakerTripped,\n });\n\n return {\n success: false,\n error: lastError,\n attempts,\n duration,\n circuitBreakerTripped,\n timedOut,\n };\n } finally {\n this.activeExecutions.delete(executionId);\n\n // Force GC if memory threshold exceeded\n if (opts.enableMemoryMonitoring) {\n const memUsage = process.memoryUsage();\n const heapUsedMB = memUsage.heapUsed / 1024 / 1024;\n\n if (heapUsedMB > opts.memoryThreshold * 0.9 && globalThis.gc) {\n this.logger.warn('High memory usage detected, triggering GC', 'JobExecutor', {\n heapUsedMB: Math.round(heapUsedMB),\n threshold: opts.memoryThreshold,\n });\n globalThis.gc();\n }\n }\n }\n }\n\n /**\n * Execute job function with timeout\n */\n private async executeWithTimeout(\n jobFn: JobFunction,\n context: ExecutionContext,\n signal: AbortSignal,\n timeout?: number\n ): Promise<any> {\n const effectiveTimeout = timeout ?? this.options.timeout;\n return new Promise((resolve, reject) => {\n // Setup timeout\n const timeoutId = setTimeout(() => {\n const error = new Error(`Job execution timeout after ${effectiveTimeout}ms`);\n error.name = 'TimeoutError';\n reject(error);\n }, effectiveTimeout);\n\n // Don't keep process alive for job execution timeout\n timeoutId.unref();\n\n // Setup abort handler\n const abortHandler = () => {\n clearTimeout(timeoutId);\n reject(new Error('Job execution cancelled'));\n };\n\n if (signal.aborted) {\n clearTimeout(timeoutId);\n reject(new Error('Job execution cancelled'));\n return;\n }\n\n signal.addEventListener('abort', abortHandler, { once: true });\n\n // Execute job\n Promise.resolve()\n .then(() => jobFn(context))\n .then(result => {\n clearTimeout(timeoutId);\n signal.removeEventListener('abort', abortHandler);\n resolve(result);\n })\n .catch(error => {\n clearTimeout(timeoutId);\n signal.removeEventListener('abort', abortHandler);\n reject(error);\n });\n });\n }\n\n /**\n * Calculate retry delay with backoff and jitter\n */\n private calculateRetryDelay(\n attempt: number,\n opts?: Pick<\n Required<JobExecutorOptions>,\n 'retryBackoff' | 'retryDelay' | 'retryBackoffMultiplier' | 'maxRetryDelay'\n >\n ): number {\n const effectiveOpts = opts ?? this.options;\n let delay: number;\n\n if (effectiveOpts.retryBackoff === 'exponential') {\n delay =\n effectiveOpts.retryDelay * Math.pow(effectiveOpts.retryBackoffMultiplier, attempt - 1);\n } else {\n delay = effectiveOpts.retryDelay * attempt;\n }\n\n // Cap at max delay\n delay = Math.min(delay, effectiveOpts.maxRetryDelay);\n\n // Add jitter (±20%)\n const jitter = delay * 0.2 * (Math.random() * 2 - 1);\n delay = Math.max(0, delay + jitter);\n\n return Math.floor(delay);\n }\n\n /**\n * Sleep helper\n */\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => {\n const timer = setTimeout(resolve, ms);\n timer.unref(); // Don't keep process alive\n });\n }\n\n /**\n * Get or create circuit breaker for job\n */\n private getCircuitBreaker(jobId: string): CircuitBreaker {\n let breaker = this.circuitBreakers.get(jobId);\n\n if (!breaker) {\n breaker = new CircuitBreaker({\n failureThreshold: this.options.circuitBreakerThreshold,\n resetTimeout: this.options.circuitBreakerResetTimeout,\n });\n\n // Log circuit breaker state changes\n breaker.on('open', () => {\n this.logger.error(`Circuit breaker opened for job: ${jobId}`);\n this.emit('circuit-breaker:open', { jobId });\n });\n\n breaker.on('halfOpen', () => {\n this.logger.info(`Circuit breaker half-open for job: ${jobId}`);\n this.emit('circuit-breaker:half-open', { jobId });\n });\n\n breaker.on('closed', () => {\n this.logger.info(`Circuit breaker closed for job: ${jobId}`);\n this.emit('circuit-breaker:closed', { jobId });\n });\n\n this.circuitBreakers.set(jobId, breaker);\n }\n\n return breaker;\n }\n\n /**\n * Check memory usage before execution\n */\n private async checkMemoryUsage(jobId: string): Promise<void> {\n const memUsage = process.memoryUsage();\n const heapUsedMB = memUsage.heapUsed / 1024 / 1024;\n\n if (heapUsedMB > this.options.memoryThreshold) {\n const error = `Memory threshold exceeded: ${Math.round(heapUsedMB)}MB / ${this.options.memoryThreshold}MB`;\n this.logger.error(error, 'JobExecutor', { jobId });\n\n this.emit('memory:threshold-exceeded', {\n jobId,\n heapUsedMB,\n threshold: this.options.memoryThreshold,\n });\n\n // Try to force GC if available\n if (globalThis.gc) {\n this.logger.warn('Forcing garbage collection', 'JobExecutor', { jobId });\n globalThis.gc();\n\n // Check again after GC\n const newMemUsage = process.memoryUsage();\n const newHeapUsedMB = newMemUsage.heapUsed / 1024 / 1024;\n\n if (newHeapUsedMB > this.options.memoryThreshold) {\n throw new Error(error);\n }\n\n this.logger.info('Memory recovered after GC', 'JobExecutor', {\n before: Math.round(heapUsedMB),\n after: Math.round(newHeapUsedMB),\n });\n } else {\n throw new Error(error);\n }\n }\n }\n\n /**\n * Get current memory usage in MB\n */\n private getMemoryUsage(): number {\n const memUsage = process.memoryUsage();\n return Math.round(memUsage.heapUsed / 1024 / 1024);\n }\n\n /**\n * Cancel a running execution\n */\n public cancelExecution(executionId: string): boolean {\n const controller = this.activeExecutions.get(executionId);\n if (!controller) {\n return false;\n }\n\n controller.abort();\n this.logger.info(`Execution cancelled: ${executionId}`);\n this.emit('execution:cancelled', { executionId });\n\n return true;\n }\n\n /**\n * Cancel all running executions\n */\n public cancelAllExecutions(): void {\n const executionIds = Array.from(this.activeExecutions.keys());\n\n this.logger.info(`Cancelling ${executionIds.length} running executions`);\n\n for (const executionId of executionIds) {\n this.cancelExecution(executionId);\n }\n }\n\n /**\n * Get active execution count\n */\n public getActiveExecutionCount(): number {\n return this.activeExecutions.size;\n }\n\n /**\n * Get circuit breaker status for job\n */\n public getCircuitBreakerStatus(jobId: string): {\n exists: boolean;\n state?: string;\n failures?: number;\n threshold?: number;\n } {\n const breaker = this.circuitBreakers.get(jobId);\n\n if (!breaker) {\n return { exists: false };\n }\n\n return {\n exists: true,\n state: breaker.getState().toLowerCase(),\n failures: breaker.getFailures(),\n threshold: this.options.circuitBreakerThreshold,\n };\n }\n\n /**\n * Reset circuit breaker for job\n */\n public resetCircuitBreaker(jobId: string): boolean {\n const breaker = this.circuitBreakers.get(jobId);\n if (!breaker) {\n return false;\n }\n\n breaker.reset();\n this.logger.info(`Circuit breaker reset for job: ${jobId}`);\n return true;\n }\n\n /**\n * Update executor options at runtime\n */\n public updateOptions(options: Partial<JobExecutorOptions>): void {\n Object.assign(this.options, options);\n this.logger.info('JobExecutor options updated', 'JobExecutor', { options });\n }\n\n /**\n * Get current options\n */\n public getOptions(): Required<JobExecutorOptions> {\n return { ...this.options };\n }\n\n /**\n * Shutdown and cleanup\n */\n public async shutdown(gracePeriod: number = 30000): Promise<void> {\n this.logger.info('JobExecutor shutting down...', 'JobExecutor', {\n activeExecutions: this.activeExecutions.size,\n gracePeriod,\n });\n\n this.isShuttingDown = true;\n\n // Wait for active executions to complete or grace period to expire\n const startTime = Date.now();\n\n while (this.activeExecutions.size > 0 && Date.now() - startTime < gracePeriod) {\n this.logger.debug(`Waiting for ${this.activeExecutions.size} active executions to complete`);\n await this.sleep(1000);\n }\n\n // Force cancel remaining executions\n if (this.activeExecutions.size > 0) {\n this.logger.warn(`Force cancelling ${this.activeExecutions.size} remaining executions`);\n this.cancelAllExecutions();\n }\n\n // Cleanup state\n this.circuitBreakers.clear();\n this.activeExecutions.clear();\n\n this.removeAllListeners();\n this.logger.info('JobExecutor shutdown complete');\n }\n}\n"]}
|
|
@@ -40,10 +40,10 @@ export interface Job {
|
|
|
40
40
|
schedule: JobSchedule;
|
|
41
41
|
fn: JobFunction;
|
|
42
42
|
options: JobOptions;
|
|
43
|
-
nextRun?: Date;
|
|
43
|
+
nextRun?: Date | undefined;
|
|
44
44
|
enabled: boolean;
|
|
45
45
|
priority: number;
|
|
46
|
-
timer?: NodeJS.Timeout;
|
|
46
|
+
timer?: NodeJS.Timeout | undefined;
|
|
47
47
|
concurrentExecutions: number;
|
|
48
48
|
createdAt: Date;
|
|
49
49
|
}
|
|
@@ -212,7 +212,7 @@ export declare class JobScheduler extends EventEmitter {
|
|
|
212
212
|
interface ExecutionResult {
|
|
213
213
|
success: boolean;
|
|
214
214
|
value?: any;
|
|
215
|
-
error?: Error;
|
|
215
|
+
error?: Error | undefined;
|
|
216
216
|
attempts: number;
|
|
217
217
|
duration: number;
|
|
218
218
|
circuitBreakerTripped?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-scheduler.js","sourceRoot":"","sources":["../../../src/core/jobs/job-scheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-scheduler.js","sourceRoot":"","sources":["../../../src/core/jobs/job-scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["// Production-grade Job Scheduler\n// Main scheduler with graceful shutdown, concurrency control, and priority queue\n\nimport { EventEmitter } from 'events';\nimport { Logger } from '../../types/logger.js';\nimport { CronParser } from './cron-parser.js';\nimport { JobStateManager, JobExecution } from './job-state-manager.js';\nimport { LeaderElection, LeaderElectionOptions } from './leader-election.js';\nimport { JobExecutor, JobExecutorOptions, JobFunction } from './job-executor.js';\nimport { randomBytes } from 'crypto';\n\nexport type JobScheduleType = 'cron' | 'interval' | 'oneTime';\n\nexport interface JobSchedule {\n type: JobScheduleType;\n cron?: string;\n interval?: number;\n at?: Date;\n}\n\nexport interface JobOptions {\n name?: string;\n schedule: JobSchedule;\n enabled?: boolean;\n priority?: number;\n timezone?: string;\n maxConcurrent?: number;\n timeout?: number;\n maxRetries?: number;\n retryDelay?: number;\n retryBackoff?: 'linear' | 'exponential';\n enableCircuitBreaker?: boolean;\n metadata?: Record<string, any>;\n onStart?: (context: ExecutionContext) => void | Promise<void>;\n onComplete?: (context: ExecutionContext, result: any) => void | Promise<void>;\n onError?: (context: ExecutionContext, error: Error) => void | Promise<void>;\n}\n\nexport interface ExecutionContext {\n jobId: string;\n executionId: string;\n attempt: number;\n startTime: Date;\n metadata?: Record<string, any>;\n}\n\nexport interface Job {\n id: string;\n name: string;\n schedule: JobSchedule;\n fn: JobFunction;\n options: JobOptions;\n nextRun?: Date | undefined;\n enabled: boolean;\n priority: number;\n timer?: NodeJS.Timeout | undefined;\n concurrentExecutions: number;\n createdAt: Date;\n}\n\nexport interface JobSchedulerOptions {\n maxConcurrentJobs?: number;\n enableLeaderElection?: boolean;\n leaderElection?: LeaderElectionOptions;\n executor?: JobExecutorOptions;\n stateManager?: {\n persistPath?: string;\n historySize?: number;\n persistInterval?: number;\n enableAutoPersist?: boolean;\n enableRecovery?: boolean;\n };\n gracefulShutdownTimeout?: number;\n}\n\n/**\n * JobScheduler - Production-grade job scheduling system\n * Features:\n * - Cron, interval, and one-time scheduling\n * - Leader election for distributed systems\n * - Graceful shutdown with running job completion\n * - Global and per-job concurrency control\n * - Priority queue for job execution\n * - Automatic crash recovery\n * - Full observability with events and metrics\n */\nexport class JobScheduler extends EventEmitter {\n private jobs = new Map<string, Job>();\n private stateManager: JobStateManager;\n private leaderElection?: LeaderElection;\n private executor: JobExecutor;\n private logger: Logger;\n private loggerContext = 'JobScheduler';\n private started = false;\n private isShuttingDown = false;\n private maxConcurrentJobs: number;\n private currentConcurrentJobs = 0;\n private pendingQueue: Array<{ job: Job; executionId: string }> = [];\n private gracefulShutdownTimeout: number;\n private enableLeaderElection: boolean;\n\n constructor(logger: Logger, options: JobSchedulerOptions = {}) {\n super();\n this.logger = logger;\n\n this.maxConcurrentJobs = options.maxConcurrentJobs ?? 10;\n this.gracefulShutdownTimeout = options.gracefulShutdownTimeout ?? 30000;\n this.enableLeaderElection = options.enableLeaderElection ?? true;\n\n // Initialize state manager\n this.stateManager = new JobStateManager(logger, options.stateManager);\n\n // Initialize executor\n this.executor = new JobExecutor(logger, options.executor);\n\n // Initialize leader election if enabled\n if (this.enableLeaderElection) {\n this.leaderElection = new LeaderElection(logger, options.leaderElection);\n\n // Handle leader election events\n this.leaderElection.on('leader:elected', () => {\n this.logger.info('Became leader, starting job scheduling', this.loggerContext);\n this.scheduleAllJobs();\n });\n\n this.leaderElection.on('leader:stepdown', () => {\n this.logger.info('Lost leadership, stopping job scheduling', this.loggerContext);\n this.unscheduleAllJobs();\n });\n }\n\n this.logger.debug('JobScheduler initialized', this.loggerContext, {\n maxConcurrentJobs: this.maxConcurrentJobs,\n enableLeaderElection: this.enableLeaderElection,\n });\n }\n\n /**\n * Start the job scheduler\n */\n public async start(): Promise<void> {\n if (this.started) {\n this.logger.warn('JobScheduler already started', this.loggerContext);\n return;\n }\n\n this.logger.info('Starting JobScheduler...', this.loggerContext);\n\n this.started = true;\n\n // Start leader election if enabled\n if (this.leaderElection) {\n await this.leaderElection.start();\n } else {\n // No leader election, start immediately\n this.scheduleAllJobs();\n }\n\n this.logger.info('JobScheduler started', this.loggerContext, {\n jobCount: this.jobs.size,\n isLeader: this.isLeader(),\n });\n\n this.emit('scheduler:started', {\n jobCount: this.jobs.size,\n isLeader: this.isLeader(),\n });\n }\n\n /**\n * Register a new job\n */\n public registerJob(\n name: string,\n schedule: JobSchedule,\n fn: JobFunction,\n options: Partial<JobOptions> = {}\n ): string {\n const jobId = this.generateJobId();\n\n // Validate schedule\n this.validateSchedule(schedule);\n\n const job: Job = {\n id: jobId,\n name: options.name || name,\n schedule,\n fn,\n options: { ...options, name: options.name || name, schedule } as JobOptions,\n enabled: options.enabled !== false,\n priority: options.priority ?? 0,\n concurrentExecutions: 0,\n createdAt: new Date(),\n };\n\n // Calculate next run\n job.nextRun = this.calculateNextRun(job);\n\n this.jobs.set(jobId, job);\n\n // Register in state manager\n this.stateManager.registerJob(jobId, job.name, {\n schedule: job.schedule,\n priority: job.priority,\n ...options.metadata,\n });\n\n this.logger.info(`Job registered: ${job.name} (${jobId})`, this.loggerContext, {\n schedule: job.schedule,\n nextRun: job.nextRun,\n });\n\n this.emit('job:registered', { jobId, name: job.name, schedule: job.schedule });\n\n // Schedule if already started and is leader\n if (this.started && this.isLeader() && job.enabled) {\n this.scheduleJob(job);\n }\n\n return jobId;\n }\n\n /**\n * Unregister a job\n */\n public unregisterJob(jobId: string): boolean {\n const job = this.jobs.get(jobId);\n if (!job) {\n return false;\n }\n\n // Unschedule\n this.unscheduleJob(job);\n\n // Remove from jobs\n this.jobs.delete(jobId);\n\n // Unregister from state manager\n this.stateManager.unregisterJob(jobId);\n\n this.logger.info(`Job unregistered: ${job.name} (${jobId})`, this.loggerContext);\n this.emit('job:unregistered', { jobId, name: job.name });\n\n return true;\n }\n\n /**\n * Get job by ID\n */\n public getJob(jobId: string): Job | undefined {\n return this.jobs.get(jobId);\n }\n\n /**\n * Get all jobs\n */\n public getAllJobs(): Job[] {\n return Array.from(this.jobs.values());\n }\n\n /**\n * Enable/disable job\n */\n public setJobEnabled(jobId: string, enabled: boolean): boolean {\n const job = this.jobs.get(jobId);\n if (!job) {\n return false;\n }\n\n job.enabled = enabled;\n this.stateManager.setJobEnabled(jobId, enabled);\n\n if (enabled && this.started && this.isLeader()) {\n this.scheduleJob(job);\n } else if (!enabled) {\n this.unscheduleJob(job);\n }\n\n this.logger.info(\n `Job ${enabled ? 'enabled' : 'disabled'}: ${job.name} (${jobId})`,\n this.loggerContext\n );\n this.emit('job:enabled', { jobId, enabled });\n\n return true;\n }\n\n /**\n * Manually trigger job execution\n */\n public async triggerJob(jobId: string, metadata?: Record<string, any>): Promise<ExecutionResult> {\n const job = this.jobs.get(jobId);\n if (!job) {\n throw new Error(`Job not found: ${jobId}`);\n }\n\n this.logger.info(`Manually triggering job: ${job.name} (${jobId})`, this.loggerContext);\n return this.executeJob(job, metadata);\n }\n\n /**\n * Validate schedule configuration\n */\n private validateSchedule(schedule: JobSchedule): void {\n if (schedule.type === 'cron') {\n if (!schedule.cron) {\n throw new Error('Cron schedule requires cron expression');\n }\n // Validate cron expression\n const validation = CronParser.validate(schedule.cron);\n if (!validation.valid) {\n throw new Error(`Invalid cron expression: ${validation.error}`);\n }\n } else if (schedule.type === 'interval') {\n if (!schedule.interval || schedule.interval <= 0) {\n throw new Error('Interval schedule requires positive interval value');\n }\n } else if (schedule.type === 'oneTime') {\n if (!schedule.at) {\n throw new Error('One-time schedule requires date');\n }\n if (schedule.at < new Date()) {\n throw new Error('One-time schedule date must be in the future');\n }\n }\n }\n\n /**\n * Calculate next run time for job\n */\n private calculateNextRun(job: Job): Date | undefined {\n const { schedule } = job;\n\n if (schedule.type === 'cron') {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const parser = new CronParser(schedule.cron!, job.options.timezone);\n return parser.getNextRun().next;\n } else if (schedule.type === 'interval') {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return new Date(Date.now() + schedule.interval!);\n } else if (schedule.type === 'oneTime') {\n return schedule.at;\n }\n\n return undefined;\n }\n\n /**\n * Schedule all jobs\n */\n private scheduleAllJobs(): void {\n for (const job of this.jobs.values()) {\n if (job.enabled) {\n this.scheduleJob(job);\n }\n }\n }\n\n // Maximum safe setTimeout delay: 2^31 - 1 ms (~24.8 days)\n // Values exceeding this overflow Node.js's 32-bit signed integer, causing\n // the timer to fire at 1ms instead of the intended delay.\n private static readonly MAX_TIMEOUT = 2_147_483_647;\n\n /**\n * Schedule a single job\n */\n private scheduleJob(job: Job): void {\n // Unschedule first if already scheduled\n this.unscheduleJob(job);\n\n if (!job.nextRun) {\n this.logger.warn(\n `Job ${job.name} has no next run time, skipping schedule`,\n this.loggerContext\n );\n return;\n }\n\n const delay = job.nextRun.getTime() - Date.now();\n\n if (delay <= 0) {\n // Should have run already, execute immediately and calculate next\n this.logger.debug(`Job ${job.name} overdue, executing immediately`, this.loggerContext);\n this.queueJobExecution(job);\n return;\n }\n\n // Cap at MAX_TIMEOUT to prevent 32-bit integer overflow in setTimeout.\n // When the capped timer wakes, we re-check whether it's actually time to run.\n // If not, scheduleJob is called again, naturally chaining until the real fire time.\n const safeDelay = Math.min(delay, JobScheduler.MAX_TIMEOUT);\n\n job.timer = setTimeout(() => {\n const remaining = job.nextRun ? job.nextRun.getTime() - Date.now() : 0;\n if (remaining <= 0) {\n this.queueJobExecution(job);\n } else {\n // Not yet time to run -- reschedule for the remaining duration\n this.scheduleJob(job);\n }\n }, safeDelay);\n\n // Don't keep process alive for job timers\n job.timer.unref();\n\n this.stateManager.setNextRun(job.id, job.nextRun);\n\n this.logger.debug(`Job scheduled: ${job.name} (${job.id})`, this.loggerContext, {\n nextRun: job.nextRun,\n delay,\n safeDelay,\n capped: delay > JobScheduler.MAX_TIMEOUT,\n });\n }\n\n /**\n * Unschedule a job\n */\n private unscheduleJob(job: Job): void {\n if (job.timer) {\n clearTimeout(job.timer);\n job.timer = undefined;\n }\n }\n\n /**\n * Unschedule all jobs\n */\n private unscheduleAllJobs(): void {\n for (const job of this.jobs.values()) {\n this.unscheduleJob(job);\n }\n }\n\n /**\n * Queue job for execution (with concurrency control)\n */\n private queueJobExecution(job: Job): void {\n const executionId = this.generateExecutionId();\n\n // Check global concurrency limit\n if (this.currentConcurrentJobs >= this.maxConcurrentJobs) {\n this.logger.debug(\n `Global concurrency limit reached, queueing job: ${job.name}`,\n this.loggerContext,\n {\n current: this.currentConcurrentJobs,\n max: this.maxConcurrentJobs,\n }\n );\n\n this.pendingQueue.push({ job, executionId });\n this.emit('job:queued', {\n jobId: job.id,\n executionId,\n queueLength: this.pendingQueue.length,\n });\n return;\n }\n\n // Check per-job concurrency limit\n const maxConcurrent = job.options.maxConcurrent ?? 1;\n if (job.concurrentExecutions >= maxConcurrent) {\n this.logger.debug(\n `Job concurrency limit reached, queueing: ${job.name}`,\n this.loggerContext,\n {\n current: job.concurrentExecutions,\n max: maxConcurrent,\n }\n );\n\n this.pendingQueue.push({ job, executionId });\n this.emit('job:queued', {\n jobId: job.id,\n executionId,\n queueLength: this.pendingQueue.length,\n });\n return;\n }\n\n // Execute immediately\n this.executeJobAsync(job, executionId);\n }\n\n /**\n * Execute job asynchronously\n */\n private executeJobAsync(job: Job, executionId: string, metadata?: Record<string, any>): void {\n // Execute in background\n this.executeJob(job, metadata, executionId).catch(error => {\n this.logger.error(`Unhandled error in job execution: ${job.name}`, this.loggerContext, {\n error,\n });\n });\n }\n\n /**\n * Execute job with full lifecycle management\n */\n private async executeJob(\n job: Job,\n metadata?: Record<string, any>,\n executionId?: string\n ): Promise<ExecutionResult> {\n const execId = executionId || this.generateExecutionId();\n\n this.currentConcurrentJobs++;\n job.concurrentExecutions++;\n\n const context: ExecutionContext = {\n jobId: job.id,\n executionId: execId,\n attempt: 1,\n startTime: new Date(),\n metadata: { ...job.options.metadata, ...metadata },\n };\n\n try {\n // Start execution tracking\n this.stateManager.startExecution(job.id, execId, context.metadata);\n\n this.logger.info(`Executing job: ${job.name} (${execId})`, this.loggerContext);\n this.emit('job:start', { jobId: job.id, executionId: execId, context });\n\n // Call onStart hook\n if (job.options.onStart) {\n await Promise.resolve(job.options.onStart(context));\n }\n\n // Execute with executor (handles retry, timeout, circuit breaker)\n // Build per-job overrides, filtering out undefined values so only\n // explicitly set options override the global executor defaults.\n const executorOptions = this.buildExecutorOverrides(job.options);\n\n const result = await this.executor.execute(job.id, execId, job.fn, context, executorOptions);\n\n if (result.success) {\n // End execution tracking\n this.stateManager.endExecution(execId, 'completed');\n\n this.logger.info(`Job completed: ${job.name} (${execId})`, this.loggerContext, {\n duration: result.duration,\n attempts: result.attempts,\n });\n\n this.emit('job:complete', {\n jobId: job.id,\n executionId: execId,\n result: result.value,\n duration: result.duration,\n });\n\n // Call onComplete hook\n if (job.options.onComplete) {\n await Promise.resolve(job.options.onComplete(context, result.value));\n }\n } else {\n // End execution tracking with error\n const status = result.timedOut ? 'timeout' : 'failed';\n this.stateManager.endExecution(execId, status, result.error);\n\n this.logger.error(`Job failed: ${job.name} (${execId})`, this.loggerContext, {\n error: result.error?.message,\n duration: result.duration,\n attempts: result.attempts,\n timedOut: result.timedOut,\n circuitBreakerTripped: result.circuitBreakerTripped,\n });\n\n this.emit('job:error', {\n jobId: job.id,\n executionId: execId,\n error: result.error,\n duration: result.duration,\n timedOut: result.timedOut,\n });\n\n // Call onError hook\n if (job.options.onError && result.error) {\n await Promise.resolve(job.options.onError(context, result.error));\n }\n }\n\n return result;\n } finally {\n this.currentConcurrentJobs--;\n job.concurrentExecutions--;\n\n // Schedule next run (for recurring jobs)\n if (job.schedule.type !== 'oneTime') {\n job.nextRun = this.calculateNextRun(job);\n if (job.enabled && this.isLeader()) {\n this.scheduleJob(job);\n }\n } else {\n // One-time job, disable it\n job.enabled = false;\n this.stateManager.setJobEnabled(job.id, false);\n }\n\n // Process pending queue\n this.processPendingQueue();\n }\n }\n\n /**\n * Process pending queue\n */\n private processPendingQueue(): void {\n if (this.pendingQueue.length === 0) {\n return;\n }\n\n // Sort by priority (higher first)\n this.pendingQueue.sort((a, b) => b.job.priority - a.job.priority);\n\n while (this.pendingQueue.length > 0 && this.currentConcurrentJobs < this.maxConcurrentJobs) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const item = this.pendingQueue.shift()!;\n const { job, executionId } = item;\n\n // Check per-job concurrency limit\n const maxConcurrent = job.options.maxConcurrent ?? 1;\n if (job.concurrentExecutions < maxConcurrent) {\n this.executeJobAsync(job, executionId);\n } else {\n // Put back in queue\n this.pendingQueue.unshift(item);\n break;\n }\n }\n }\n\n /**\n * Check if this instance is the leader\n */\n private isLeader(): boolean {\n if (!this.leaderElection) {\n return true; // No leader election, always leader\n }\n return this.leaderElection.isCurrentLeader();\n }\n\n /**\n * Build per-job executor option overrides from job options.\n * Only includes properties that are explicitly defined, so undefined\n * values do not override the global executor defaults.\n */\n private buildExecutorOverrides(jobOptions: JobOptions): Partial<JobExecutorOptions> | undefined {\n const overrides: Partial<JobExecutorOptions> = {};\n let hasOverrides = false;\n\n if (jobOptions.timeout !== undefined) {\n overrides.timeout = jobOptions.timeout;\n hasOverrides = true;\n }\n if (jobOptions.maxRetries !== undefined) {\n overrides.maxRetries = jobOptions.maxRetries;\n hasOverrides = true;\n }\n if (jobOptions.retryDelay !== undefined) {\n overrides.retryDelay = jobOptions.retryDelay;\n hasOverrides = true;\n }\n if (jobOptions.retryBackoff !== undefined) {\n overrides.retryBackoff = jobOptions.retryBackoff;\n hasOverrides = true;\n }\n if (jobOptions.enableCircuitBreaker !== undefined) {\n overrides.enableCircuitBreaker = jobOptions.enableCircuitBreaker;\n hasOverrides = true;\n }\n\n return hasOverrides ? overrides : undefined;\n }\n\n /**\n * Generate unique job ID\n */\n private generateJobId(): string {\n return `job_${Date.now()}_${randomBytes(8).toString('hex')}`;\n }\n\n /**\n * Generate unique execution ID\n */\n private generateExecutionId(): string {\n return `exec_${Date.now()}_${randomBytes(8).toString('hex')}`;\n }\n\n /**\n * Get scheduler stats\n */\n public getStats(): {\n totalJobs: number;\n enabledJobs: number;\n runningJobs: number;\n queuedJobs: number;\n isLeader: boolean;\n isStarted: boolean;\n } {\n return {\n totalJobs: this.jobs.size,\n enabledJobs: Array.from(this.jobs.values()).filter(j => j.enabled).length,\n runningJobs: this.currentConcurrentJobs,\n queuedJobs: this.pendingQueue.length,\n isLeader: this.isLeader(),\n isStarted: this.started,\n };\n }\n\n /**\n * Get job state\n */\n public getJobState(jobId: string) {\n return this.stateManager.getState(jobId);\n }\n\n /**\n * Get job history\n */\n public getJobHistory(jobId: string, limit?: number): JobExecution[] {\n return this.stateManager.getHistory(jobId, limit);\n }\n\n /**\n * Get job metrics\n */\n public getJobMetrics(jobId: string) {\n return this.stateManager.getMetrics(jobId);\n }\n\n /**\n * Graceful shutdown\n */\n public async shutdown(): Promise<void> {\n if (this.isShuttingDown) {\n return;\n }\n\n this.logger.info('JobScheduler shutting down...', this.loggerContext, {\n runningJobs: this.currentConcurrentJobs,\n queuedJobs: this.pendingQueue.length,\n });\n\n this.isShuttingDown = true;\n\n // Unschedule all jobs\n this.unscheduleAllJobs();\n\n // Clear pending queue\n this.pendingQueue = [];\n\n // Wait for running jobs to complete\n const startTime = Date.now();\n while (\n this.currentConcurrentJobs > 0 &&\n Date.now() - startTime < this.gracefulShutdownTimeout\n ) {\n this.logger.debug(\n `Waiting for ${this.currentConcurrentJobs} running jobs to complete`,\n this.loggerContext\n );\n await this.sleep(1000);\n }\n\n if (this.currentConcurrentJobs > 0) {\n this.logger.warn(\n `Forcing shutdown with ${this.currentConcurrentJobs} jobs still running`,\n this.loggerContext\n );\n }\n\n // Shutdown components\n await Promise.all([\n this.executor.shutdown(5000),\n this.stateManager.shutdown(),\n this.leaderElection?.shutdown(),\n ]);\n\n this.started = false;\n this.jobs.clear();\n this.pendingQueue = [];\n this.removeAllListeners();\n\n this.logger.info('JobScheduler shutdown complete', this.loggerContext);\n this.emit('scheduler:shutdown');\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => {\n const timer = setTimeout(resolve, ms);\n timer.unref(); // Don't keep process alive\n });\n }\n}\n\ninterface ExecutionResult {\n success: boolean;\n value?: any;\n error?: Error | undefined;\n attempts: number;\n duration: number;\n circuitBreakerTripped?: boolean;\n timedOut?: boolean;\n}\n"]}
|
|
@@ -9,7 +9,7 @@ export interface JobExecution {
|
|
|
9
9
|
status: 'running' | 'completed' | 'failed' | 'timeout' | 'cancelled';
|
|
10
10
|
error?: {
|
|
11
11
|
message: string;
|
|
12
|
-
stack?: string;
|
|
12
|
+
stack?: string | undefined;
|
|
13
13
|
code?: string;
|
|
14
14
|
};
|
|
15
15
|
retryCount: number;
|
|
@@ -19,7 +19,7 @@ export interface JobExecution {
|
|
|
19
19
|
external: number;
|
|
20
20
|
rss: number;
|
|
21
21
|
};
|
|
22
|
-
metadata?: Record<string, any
|
|
22
|
+
metadata?: Record<string, any> | undefined;
|
|
23
23
|
}
|
|
24
24
|
export interface JobState {
|
|
25
25
|
jobId: string;
|
|
@@ -33,7 +33,7 @@ export interface JobState {
|
|
|
33
33
|
averageDuration: number;
|
|
34
34
|
createdAt: Date;
|
|
35
35
|
updatedAt: Date;
|
|
36
|
-
metadata?: Record<string, any
|
|
36
|
+
metadata?: Record<string, any> | undefined;
|
|
37
37
|
}
|
|
38
38
|
export interface JobHistory {
|
|
39
39
|
jobId: string;
|
|
@@ -42,7 +42,7 @@ export class JobStateManager extends EventEmitter {
|
|
|
42
42
|
}
|
|
43
43
|
// Load persisted state if recovery enabled
|
|
44
44
|
if (this.enableRecovery && this.persistPath) {
|
|
45
|
-
this.loadState();
|
|
45
|
+
void this.loadState().catch(err => this.logger.error('Failed to load persisted job state', this.loggerContext, { error: err }));
|
|
46
46
|
}
|
|
47
47
|
this.logger.debug('JobStateManager initialized', this.loggerContext, {
|
|
48
48
|
persistPath: this.persistPath,
|
|
@@ -342,7 +342,12 @@ export class JobStateManager extends EventEmitter {
|
|
|
342
342
|
hostname: os.hostname(),
|
|
343
343
|
pid: process.pid,
|
|
344
344
|
jobs: Object.fromEntries(this.states),
|
|
345
|
-
|
|
345
|
+
// Persist {jobId, executionId} pairs so crash recovery can match on the
|
|
346
|
+
// stable jobId (the map is keyed by executionId, which is not).
|
|
347
|
+
runningJobs: Array.from(this.runningExecutions.values()).map(execution => ({
|
|
348
|
+
jobId: execution.jobId,
|
|
349
|
+
executionId: execution.executionId,
|
|
350
|
+
})),
|
|
346
351
|
};
|
|
347
352
|
const json = JSON.stringify(stateData, null, 2);
|
|
348
353
|
const tempPath = `${this.persistPath}.tmp`;
|
|
@@ -396,8 +401,24 @@ export class JobStateManager extends EventEmitter {
|
|
|
396
401
|
}
|
|
397
402
|
this.states.set(jobId, state);
|
|
398
403
|
}
|
|
399
|
-
// Handle crashed jobs (were running but no longer are)
|
|
400
|
-
|
|
404
|
+
// Handle crashed jobs (were running when the process died but no longer are).
|
|
405
|
+
// Match on the stable jobId. Legacy files stored bare id strings; those are
|
|
406
|
+
// only usable if the string happens to match a known jobId.
|
|
407
|
+
const runningRefs = Array.isArray(stateData.runningJobs) ? stateData.runningJobs : [];
|
|
408
|
+
const crashedJobIds = new Set();
|
|
409
|
+
for (const ref of runningRefs) {
|
|
410
|
+
let jobId;
|
|
411
|
+
if (typeof ref === 'string') {
|
|
412
|
+
jobId = this.states.has(ref) ? ref : undefined;
|
|
413
|
+
}
|
|
414
|
+
else if (ref && typeof ref === 'object') {
|
|
415
|
+
jobId = ref.jobId;
|
|
416
|
+
}
|
|
417
|
+
if (jobId && this.states.has(jobId)) {
|
|
418
|
+
crashedJobIds.add(jobId);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
const crashedJobs = Array.from(crashedJobIds);
|
|
401
422
|
if (crashedJobs.length > 0) {
|
|
402
423
|
this.logger.warn(`Detected ${crashedJobs.length} jobs that were running during crash`, this.loggerContext, {
|
|
403
424
|
jobs: crashedJobs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-state-manager.js","sourceRoot":"","sources":["../../../src/core/jobs/job-state-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-state-manager.js","sourceRoot":"","sources":["../../../src/core/jobs/job-state-manager.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,mEAAmE;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAqEpB;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACvC,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IACrC,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,YAAY,CAA8B;IAC1C,WAAW,CAAU;IACrB,WAAW,CAAS;IACpB,iBAAiB,CAAU;IAC3B,cAAc,CAAU;IACxB,eAAe,CAAS;IACxB,MAAM,CAAS;IACf,aAAa,GAAG,iBAAiB,CAAC;IAClC,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,MAAc,EAAE,UAA+B,EAAE;QAC3D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC,cAAc;QAEvE,yBAAyB;QACzB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC/D,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAC5F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE;YACnE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,QAA8B;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,wCAAwC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5F,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,KAAK;YACL,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,mBAAmB,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,KAAa;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,cAAc,CACnB,KAAa,EACb,WAAmB,EACnB,QAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,GAAiB;YAC9B,KAAK;YACL,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,CAAC;YACb,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,IAAI,KAAK,WAAW,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,YAAY,CACjB,WAAmB,EACnB,MAAwD,EACxD,KAAa;QAEb,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,WAAW,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QAE1B,uBAAuB;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,SAAS,CAAC,WAAW,GAAG;YACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,KAAK,GAAG;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAG,KAAa,CAAC,IAAI;aAC1B,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;YAChC,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAE7B,oBAAoB;YACpB,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChD,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC9B,CAAC;iBAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBAE9B,4CAA4C;gBAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,mBAAmB;gBACtC,oEAAoE;gBACpE,KAAK,CAAC,eAAe,GAAG,KAAK,GAAG,SAAS,CAAC,QAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;YAC5F,CAAC;YAED,iBAAiB;YACjB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,oBAAoB,SAAS,CAAC,KAAK,KAAK,WAAW,OAAO,MAAM,EAAE,EAClE,IAAI,CAAC,aAAa,EAClB;YACE,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,WAAmB,EAAE,OAA8B;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,SAAuB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,eAAe;QACf,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEtC,mBAAmB;QACnB,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACnD,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa,EAAE,KAAc;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,KAAa;QACtC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,KAAa,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,EACnE,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa,EAAE,OAAa;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa;QAO7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC;QAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,MAAM,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;QAEpD,OAAO;YACL,WAAW,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7E,WAAW,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7E,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,eAAe;YACf,cAAc,EAAE,KAAK,CAAC,mBAAmB;SAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvF,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEzB,0CAA0C;QAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAmB;gBAChC,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrC,wEAAwE;gBACxE,gEAAgE;gBAChE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACzE,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;iBACnC,CAAC,CAAC;aACJ,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,MAAM,CAAC;YAE3C,2DAA2D;YAC3D,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE;gBACnE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW;aACvB,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ;iBAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;iBACxB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;iBAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,aAAa,EAAE;oBAChE,IAAI,EAAE,IAAI,CAAC,WAAW;iBACvB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,SAAS,GAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnD,qBAAqB;YACrB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5D,4CAA4C;gBAC5C,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5C,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,KAAK,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxB,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;oBACxE,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;wBAChC,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,8EAA8E;YAC9E,4EAA4E;YAC5E,4DAA4D;YAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,KAAyB,CAAC;gBAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjD,CAAC;qBAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC1C,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBACpB,CAAC;gBACD,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,YAAY,WAAW,CAAC,MAAM,sCAAsC,EACpE,IAAI,CAAC,aAAa,EAClB;oBACE,IAAI,EAAE,WAAW;iBAClB,CACF,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC1F,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,WAAW,EAAE,WAAW,CAAC,MAAM;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,aAAa,EAAE;gBAChE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW;aACvB,CAAC,CAAC;YACH,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5E,CAAC;CACF","sourcesContent":["// Production-grade Job State Management\n// Handles job persistence, history, recovery, and crash resilience\n\nimport { EventEmitter } from 'events';\nimport { Logger } from '../../types/logger.js';\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n\nexport interface JobExecution {\n jobId: string;\n executionId: string;\n startTime: Date;\n endTime?: Date;\n duration?: number;\n status: 'running' | 'completed' | 'failed' | 'timeout' | 'cancelled';\n error?: {\n message: string;\n stack?: string | undefined;\n code?: string;\n };\n retryCount: number;\n memoryUsage?: {\n heapUsed: number;\n heapTotal: number;\n external: number;\n rss: number;\n };\n metadata?: Record<string, any> | undefined;\n}\n\nexport interface JobState {\n jobId: string;\n name: string;\n enabled: boolean;\n lastExecution?: JobExecution;\n nextRun?: Date;\n executionCount: number;\n failureCount: number;\n consecutiveFailures: number;\n averageDuration: number;\n createdAt: Date;\n updatedAt: Date;\n metadata?: Record<string, any> | undefined;\n}\n\nexport interface JobHistory {\n jobId: string;\n executions: JobExecution[];\n maxHistory: number;\n}\n\nexport interface StateManagerOptions {\n persistPath?: string;\n historySize?: number;\n persistInterval?: number;\n enableAutoPersist?: boolean;\n enableRecovery?: boolean;\n}\n\ninterface RunningJobRef {\n jobId: string;\n executionId: string;\n}\n\ninterface PersistedState {\n version: string;\n timestamp: Date;\n hostname: string;\n pid: number;\n jobs: Record<string, JobState>;\n // Current: {jobId, executionId} pairs. Legacy files persisted bare id strings,\n // which loadState() tolerates.\n runningJobs: Array<RunningJobRef | string>;\n}\n\n/**\n * JobStateManager - Manages job state, history, and persistence\n * Provides crash recovery and state tracking\n */\nexport class JobStateManager extends EventEmitter {\n private states = new Map<string, JobState>();\n private history = new Map<string, JobHistory>();\n private runningExecutions = new Map<string, JobExecution>();\n private persistTimer?: NodeJS.Timeout | undefined;\n private persistPath?: string;\n private historySize: number;\n private enableAutoPersist: boolean;\n private enableRecovery: boolean;\n private persistInterval: number;\n private logger: Logger;\n private loggerContext = 'JobStateManager';\n private isDirty = false;\n\n constructor(logger: Logger, options: StateManagerOptions = {}) {\n super();\n this.logger = logger;\n this.historySize = options.historySize ?? 100;\n this.enableAutoPersist = options.enableAutoPersist ?? true;\n this.enableRecovery = options.enableRecovery ?? true;\n this.persistInterval = options.persistInterval ?? 30000; // 30s default\n\n // Setup persistence path\n if (options.persistPath) {\n this.persistPath = options.persistPath;\n } else {\n const tmpDir = os.tmpdir();\n this.persistPath = path.join(tmpDir, 'moro-jobs-state.json');\n }\n\n // Start auto-persist if enabled\n if (this.enableAutoPersist && this.persistPath) {\n this.startAutoPersist();\n }\n\n // Load persisted state if recovery enabled\n if (this.enableRecovery && this.persistPath) {\n void this.loadState().catch(err =>\n this.logger.error('Failed to load persisted job state', this.loggerContext, { error: err })\n );\n }\n\n this.logger.debug('JobStateManager initialized', this.loggerContext, {\n persistPath: this.persistPath,\n historySize: this.historySize,\n enableAutoPersist: this.enableAutoPersist,\n enableRecovery: this.enableRecovery,\n });\n }\n\n /**\n * Register a new job\n */\n public registerJob(jobId: string, name: string, metadata?: Record<string, any>): JobState {\n const existing = this.states.get(jobId);\n if (existing) {\n this.logger.debug(`Job ${jobId} already registered, updating metadata`, this.loggerContext);\n existing.metadata = { ...existing.metadata, ...metadata };\n existing.updatedAt = new Date();\n this.isDirty = true;\n return existing;\n }\n\n const state: JobState = {\n jobId,\n name,\n enabled: true,\n executionCount: 0,\n failureCount: 0,\n consecutiveFailures: 0,\n averageDuration: 0,\n createdAt: new Date(),\n updatedAt: new Date(),\n metadata,\n };\n\n this.states.set(jobId, state);\n this.history.set(jobId, { jobId, executions: [], maxHistory: this.historySize });\n this.isDirty = true;\n\n this.logger.info(`Job registered: ${name} (${jobId})`, this.loggerContext);\n this.emit('job:registered', { jobId, name });\n\n return state;\n }\n\n /**\n * Unregister a job\n */\n public unregisterJob(jobId: string): boolean {\n const state = this.states.get(jobId);\n if (!state) {\n return false;\n }\n\n // Cancel running execution if any\n const runningExecution = this.getRunningExecution(jobId);\n if (runningExecution) {\n this.endExecution(runningExecution.executionId, 'cancelled');\n }\n\n this.states.delete(jobId);\n this.history.delete(jobId);\n this.isDirty = true;\n\n this.logger.info(`Job unregistered: ${state.name} (${jobId})`, this.loggerContext);\n this.emit('job:unregistered', { jobId, name: state.name });\n\n return true;\n }\n\n /**\n * Start job execution tracking\n */\n public startExecution(\n jobId: string,\n executionId: string,\n metadata?: Record<string, any>\n ): JobExecution {\n const state = this.states.get(jobId);\n if (!state) {\n throw new Error(`Job ${jobId} not found`);\n }\n\n const execution: JobExecution = {\n jobId,\n executionId,\n startTime: new Date(),\n status: 'running',\n retryCount: 0,\n metadata,\n };\n\n this.runningExecutions.set(executionId, execution);\n state.executionCount++;\n state.updatedAt = new Date();\n this.isDirty = true;\n\n this.logger.debug(`Execution started: ${state.name} (${executionId})`, this.loggerContext);\n this.emit('execution:start', { jobId, executionId, execution });\n\n return execution;\n }\n\n /**\n * End job execution tracking\n */\n public endExecution(\n executionId: string,\n status: 'completed' | 'failed' | 'timeout' | 'cancelled',\n error?: Error\n ): JobExecution | null {\n const execution = this.runningExecutions.get(executionId);\n if (!execution) {\n this.logger.warn(`Execution ${executionId} not found`, this.loggerContext);\n return null;\n }\n\n const endTime = new Date();\n execution.endTime = endTime;\n execution.duration = endTime.getTime() - execution.startTime.getTime();\n execution.status = status;\n\n // Capture memory usage\n const memUsage = process.memoryUsage();\n execution.memoryUsage = {\n heapUsed: memUsage.heapUsed,\n heapTotal: memUsage.heapTotal,\n external: memUsage.external,\n rss: memUsage.rss,\n };\n\n if (error) {\n execution.error = {\n message: error.message,\n stack: error.stack,\n code: (error as any).code,\n };\n }\n\n // Update job state\n const state = this.states.get(execution.jobId);\n if (state) {\n state.lastExecution = execution;\n state.updatedAt = new Date();\n\n // Update statistics\n if (status === 'failed' || status === 'timeout') {\n state.failureCount++;\n state.consecutiveFailures++;\n } else if (status === 'completed') {\n state.consecutiveFailures = 0;\n\n // Update average duration (rolling average)\n const alpha = 0.2; // Smoothing factor\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n state.averageDuration = alpha * execution.duration! + (1 - alpha) * state.averageDuration;\n }\n\n // Add to history\n this.addToHistory(execution);\n }\n\n this.runningExecutions.delete(executionId);\n this.isDirty = true;\n\n this.logger.debug(\n `Execution ended: ${execution.jobId} (${executionId}) - ${status}`,\n this.loggerContext,\n {\n duration: execution.duration,\n }\n );\n\n this.emit('execution:end', { jobId: execution.jobId, executionId, execution, status });\n\n return execution;\n }\n\n /**\n * Update execution (e.g., for retry count)\n */\n public updateExecution(executionId: string, updates: Partial<JobExecution>): void {\n const execution = this.runningExecutions.get(executionId);\n if (!execution) {\n return;\n }\n\n Object.assign(execution, updates);\n this.isDirty = true;\n }\n\n /**\n * Add execution to history\n */\n private addToHistory(execution: JobExecution): void {\n const history = this.history.get(execution.jobId);\n if (!history) {\n return;\n }\n\n // Add to front\n history.executions.unshift(execution);\n\n // Trim to max size\n if (history.executions.length > history.maxHistory) {\n history.executions = history.executions.slice(0, history.maxHistory);\n }\n }\n\n /**\n * Get job state\n */\n public getState(jobId: string): JobState | undefined {\n return this.states.get(jobId);\n }\n\n /**\n * Get all job states\n */\n public getAllStates(): JobState[] {\n return Array.from(this.states.values());\n }\n\n /**\n * Get job history\n */\n public getHistory(jobId: string, limit?: number): JobExecution[] {\n const history = this.history.get(jobId);\n if (!history) {\n return [];\n }\n\n if (limit) {\n return history.executions.slice(0, limit);\n }\n\n return [...history.executions];\n }\n\n /**\n * Get running execution for job\n */\n public getRunningExecution(jobId: string): JobExecution | undefined {\n for (const execution of this.runningExecutions.values()) {\n if (execution.jobId === jobId) {\n return execution;\n }\n }\n return undefined;\n }\n\n /**\n * Get all running executions\n */\n public getRunningExecutions(): JobExecution[] {\n return Array.from(this.runningExecutions.values());\n }\n\n /**\n * Check if job is currently running\n */\n public isRunning(jobId: string): boolean {\n return this.getRunningExecution(jobId) !== undefined;\n }\n\n /**\n * Enable/disable job\n */\n public setJobEnabled(jobId: string, enabled: boolean): boolean {\n const state = this.states.get(jobId);\n if (!state) {\n return false;\n }\n\n state.enabled = enabled;\n state.updatedAt = new Date();\n this.isDirty = true;\n\n this.logger.info(\n `Job ${enabled ? 'enabled' : 'disabled'}: ${state.name} (${jobId})`,\n this.loggerContext\n );\n this.emit('job:enabled', { jobId, enabled });\n\n return true;\n }\n\n /**\n * Update next run time\n */\n public setNextRun(jobId: string, nextRun: Date): void {\n const state = this.states.get(jobId);\n if (!state) {\n return;\n }\n\n state.nextRun = nextRun;\n state.updatedAt = new Date();\n this.isDirty = true;\n }\n\n /**\n * Get job metrics\n */\n public getMetrics(jobId: string): {\n successRate: number;\n failureRate: number;\n averageDuration: number;\n totalExecutions: number;\n recentFailures: number;\n } | null {\n const state = this.states.get(jobId);\n if (!state) {\n return null;\n }\n\n const totalExecutions = state.executionCount;\n const failureCount = state.failureCount;\n const successCount = totalExecutions - failureCount;\n\n return {\n successRate: totalExecutions > 0 ? (successCount / totalExecutions) * 100 : 0,\n failureRate: totalExecutions > 0 ? (failureCount / totalExecutions) * 100 : 0,\n averageDuration: state.averageDuration,\n totalExecutions,\n recentFailures: state.consecutiveFailures,\n };\n }\n\n /**\n * Start auto-persist timer\n */\n private startAutoPersist(): void {\n if (this.persistTimer) {\n return;\n }\n\n this.persistTimer = setInterval(() => {\n if (this.isDirty) {\n this.persistState().catch(error => {\n this.logger.error('Failed to auto-persist job state', this.loggerContext, { error });\n });\n }\n }, this.persistInterval);\n\n // Don't keep process alive for this timer\n this.persistTimer.unref();\n }\n\n /**\n * Stop auto-persist timer\n */\n private stopAutoPersist(): void {\n if (this.persistTimer) {\n clearInterval(this.persistTimer);\n this.persistTimer = undefined;\n }\n }\n\n /**\n * Persist state to disk\n */\n public async persistState(): Promise<void> {\n if (!this.persistPath) {\n return;\n }\n\n try {\n const stateData: PersistedState = {\n version: '1.0.0',\n timestamp: new Date(),\n hostname: os.hostname(),\n pid: process.pid,\n jobs: Object.fromEntries(this.states),\n // Persist {jobId, executionId} pairs so crash recovery can match on the\n // stable jobId (the map is keyed by executionId, which is not).\n runningJobs: Array.from(this.runningExecutions.values()).map(execution => ({\n jobId: execution.jobId,\n executionId: execution.executionId,\n })),\n };\n\n const json = JSON.stringify(stateData, null, 2);\n const tempPath = `${this.persistPath}.tmp`;\n\n // Write to temp file first, then rename (atomic operation)\n await fs.promises.writeFile(tempPath, json, 'utf-8');\n await fs.promises.rename(tempPath, this.persistPath);\n\n this.isDirty = false;\n this.logger.debug('Job state persisted', this.loggerContext, { path: this.persistPath });\n } catch (error) {\n this.logger.error('Failed to persist job state', this.loggerContext, {\n error,\n path: this.persistPath,\n });\n throw error;\n }\n }\n\n /**\n * Load state from disk\n */\n public async loadState(): Promise<void> {\n if (!this.persistPath) {\n return;\n }\n\n try {\n const exists = await fs.promises\n .access(this.persistPath)\n .then(() => true)\n .catch(() => false);\n\n if (!exists) {\n this.logger.debug('No persisted state found', this.loggerContext, {\n path: this.persistPath,\n });\n return;\n }\n\n const json = await fs.promises.readFile(this.persistPath, 'utf-8');\n const stateData: PersistedState = JSON.parse(json);\n\n // Restore job states\n for (const [jobId, state] of Object.entries(stateData.jobs)) {\n // Convert date strings back to Date objects\n state.createdAt = new Date(state.createdAt);\n state.updatedAt = new Date(state.updatedAt);\n if (state.nextRun) {\n state.nextRun = new Date(state.nextRun);\n }\n if (state.lastExecution) {\n state.lastExecution.startTime = new Date(state.lastExecution.startTime);\n if (state.lastExecution.endTime) {\n state.lastExecution.endTime = new Date(state.lastExecution.endTime);\n }\n }\n\n this.states.set(jobId, state);\n }\n\n // Handle crashed jobs (were running when the process died but no longer are).\n // Match on the stable jobId. Legacy files stored bare id strings; those are\n // only usable if the string happens to match a known jobId.\n const runningRefs = Array.isArray(stateData.runningJobs) ? stateData.runningJobs : [];\n const crashedJobIds = new Set<string>();\n for (const ref of runningRefs) {\n let jobId: string | undefined;\n if (typeof ref === 'string') {\n jobId = this.states.has(ref) ? ref : undefined;\n } else if (ref && typeof ref === 'object') {\n jobId = ref.jobId;\n }\n if (jobId && this.states.has(jobId)) {\n crashedJobIds.add(jobId);\n }\n }\n const crashedJobs = Array.from(crashedJobIds);\n if (crashedJobs.length > 0) {\n this.logger.warn(\n `Detected ${crashedJobs.length} jobs that were running during crash`,\n this.loggerContext,\n {\n jobs: crashedJobs,\n }\n );\n this.emit('recovery:crashed-jobs', { jobs: crashedJobs });\n }\n\n this.logger.info(`Job state loaded: ${this.states.size} jobs restored`, this.loggerContext, {\n path: this.persistPath,\n crashedJobs: crashedJobs.length,\n });\n } catch (error) {\n this.logger.error('Failed to load job state', this.loggerContext, {\n error,\n path: this.persistPath,\n });\n // Don't throw - we can continue without persisted state\n }\n }\n\n /**\n * Clear all state\n */\n public clear(): void {\n this.states.clear();\n this.history.clear();\n this.runningExecutions.clear();\n this.isDirty = true;\n this.logger.debug('Job state cleared', this.loggerContext);\n }\n\n /**\n * Cleanup and shutdown\n */\n public async shutdown(): Promise<void> {\n this.logger.info('JobStateManager shutting down...', this.loggerContext);\n\n this.stopAutoPersist();\n\n // Persist final state\n if (this.isDirty && this.persistPath) {\n await this.persistState();\n }\n\n this.states.clear();\n this.history.clear();\n this.runningExecutions.clear();\n\n this.removeAllListeners();\n this.logger.info('JobStateManager shutdown complete', this.loggerContext);\n }\n}\n"]}
|
|
@@ -40,6 +40,9 @@ export declare class LeaderElection extends EventEmitter {
|
|
|
40
40
|
private redisClient?;
|
|
41
41
|
private isShuttingDown;
|
|
42
42
|
private lockAcquireAttempts;
|
|
43
|
+
private static readonly REDIS_LOCK_KEY;
|
|
44
|
+
private static readonly REDIS_REFRESH_SCRIPT;
|
|
45
|
+
private static readonly REDIS_RELEASE_SCRIPT;
|
|
43
46
|
constructor(logger: Logger, options?: LeaderElectionOptions);
|
|
44
47
|
/**
|
|
45
48
|
* Start leader election process
|
|
@@ -55,8 +58,20 @@ export declare class LeaderElection extends EventEmitter {
|
|
|
55
58
|
private tryAcquireLeadership;
|
|
56
59
|
/**
|
|
57
60
|
* Try to acquire file-based lock
|
|
61
|
+
*
|
|
62
|
+
* Uses O_EXCL (open flag 'wx') for the common "no lock yet" case so exactly one
|
|
63
|
+
* instance can win the create race. An expired lock is taken over via an atomic
|
|
64
|
+
* temp-write + rename. A takeover race between two instances is a last-writer-wins
|
|
65
|
+
* rename, which is then reconciled by the periodic verifyLeadership() check and the
|
|
66
|
+
* ownership-checked heartbeat below, so a single leader is still guaranteed.
|
|
58
67
|
*/
|
|
59
68
|
private tryAcquireFileLock;
|
|
69
|
+
/**
|
|
70
|
+
* Atomically (re)write the lock file: write to a unique temp file, then rename
|
|
71
|
+
* over the target. rename() is atomic on POSIX so readers never see a partial
|
|
72
|
+
* lock file.
|
|
73
|
+
*/
|
|
74
|
+
private atomicWriteLock;
|
|
60
75
|
/**
|
|
61
76
|
* Try to acquire Redis-based lock
|
|
62
77
|
*/
|