@morojs/moro 1.6.5 → 1.6.8

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.
Files changed (200) hide show
  1. package/README.md +20 -4
  2. package/dist/core/auth/morojs-adapter.js +17 -14
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-sources.js +44 -0
  5. package/dist/core/config/config-sources.js.map +1 -1
  6. package/dist/core/database/adapters/drizzle.js +5 -5
  7. package/dist/core/database/adapters/drizzle.js.map +1 -1
  8. package/dist/core/database/adapters/mongodb.js +5 -1
  9. package/dist/core/database/adapters/mongodb.js.map +1 -1
  10. package/dist/core/database/adapters/mysql.js +5 -1
  11. package/dist/core/database/adapters/mysql.js.map +1 -1
  12. package/dist/core/database/adapters/postgresql.js +1 -1
  13. package/dist/core/database/adapters/postgresql.js.map +1 -1
  14. package/dist/core/database/adapters/redis.js +2 -2
  15. package/dist/core/database/adapters/redis.js.map +1 -1
  16. package/dist/core/database/adapters/sqlite.js +5 -1
  17. package/dist/core/database/adapters/sqlite.js.map +1 -1
  18. package/dist/core/docs/index.js.map +1 -1
  19. package/dist/core/docs/simple-docs.js +2 -1
  20. package/dist/core/docs/simple-docs.js.map +1 -1
  21. package/dist/core/docs/swagger-ui.js +1 -0
  22. package/dist/core/docs/swagger-ui.js.map +1 -1
  23. package/dist/core/docs/zod-to-openapi.js +4 -0
  24. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  25. package/dist/core/events/event-bus.d.ts +1 -1
  26. package/dist/core/events/event-bus.js +8 -4
  27. package/dist/core/events/event-bus.js.map +1 -1
  28. package/dist/core/framework.d.ts +1 -1
  29. package/dist/core/framework.js +3 -1
  30. package/dist/core/framework.js.map +1 -1
  31. package/dist/core/graphql/adapter.d.ts +73 -0
  32. package/dist/core/graphql/adapter.js +2 -0
  33. package/dist/core/graphql/adapter.js.map +1 -0
  34. package/dist/core/graphql/adapters/graphql-js-adapter.d.ts +26 -0
  35. package/dist/core/graphql/adapters/graphql-js-adapter.js +229 -0
  36. package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -0
  37. package/dist/core/graphql/core.d.ts +60 -0
  38. package/dist/core/graphql/core.js +165 -0
  39. package/dist/core/graphql/core.js.map +1 -0
  40. package/dist/core/graphql/index.d.ts +4 -0
  41. package/dist/core/graphql/index.js +4 -0
  42. package/dist/core/graphql/index.js.map +1 -0
  43. package/dist/core/graphql/loader.d.ts +9 -0
  44. package/dist/core/graphql/loader.js +32 -0
  45. package/dist/core/graphql/loader.js.map +1 -0
  46. package/dist/core/graphql/types.d.ts +211 -0
  47. package/dist/core/graphql/types.js +2 -0
  48. package/dist/core/graphql/types.js.map +1 -0
  49. package/dist/core/http/http-server.d.ts +7 -0
  50. package/dist/core/http/http-server.js +267 -123
  51. package/dist/core/http/http-server.js.map +1 -1
  52. package/dist/core/http/utils/uws-worker-clustering.d.ts +28 -0
  53. package/dist/core/http/utils/uws-worker-clustering.js +313 -0
  54. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -0
  55. package/dist/core/http/uws-http-server.d.ts +7 -1
  56. package/dist/core/http/uws-http-server.js +272 -189
  57. package/dist/core/http/uws-http-server.js.map +1 -1
  58. package/dist/core/jobs/cron-parser.d.ts +62 -0
  59. package/dist/core/jobs/cron-parser.js +239 -0
  60. package/dist/core/jobs/cron-parser.js.map +1 -0
  61. package/dist/core/jobs/index.d.ts +12 -0
  62. package/dist/core/jobs/index.js +9 -0
  63. package/dist/core/jobs/index.js.map +1 -0
  64. package/dist/core/jobs/job-executor.d.ts +134 -0
  65. package/dist/core/jobs/job-executor.js +413 -0
  66. package/dist/core/jobs/job-executor.js.map +1 -0
  67. package/dist/core/jobs/job-scheduler.d.ts +214 -0
  68. package/dist/core/jobs/job-scheduler.js +551 -0
  69. package/dist/core/jobs/job-scheduler.js.map +1 -0
  70. package/dist/core/jobs/job-state-manager.d.ts +158 -0
  71. package/dist/core/jobs/job-state-manager.js +444 -0
  72. package/dist/core/jobs/job-state-manager.js.map +1 -0
  73. package/dist/core/jobs/leader-election.d.ts +124 -0
  74. package/dist/core/jobs/leader-election.js +481 -0
  75. package/dist/core/jobs/leader-election.js.map +1 -0
  76. package/dist/core/jobs/types.d.ts +151 -0
  77. package/dist/core/jobs/types.js +4 -0
  78. package/dist/core/jobs/types.js.map +1 -0
  79. package/dist/core/jobs/utils.d.ts +95 -0
  80. package/dist/core/jobs/utils.js +258 -0
  81. package/dist/core/jobs/utils.js.map +1 -0
  82. package/dist/core/logger/filters.js +2 -0
  83. package/dist/core/logger/filters.js.map +1 -1
  84. package/dist/core/logger/logger.d.ts +7 -5
  85. package/dist/core/logger/logger.js +68 -27
  86. package/dist/core/logger/logger.js.map +1 -1
  87. package/dist/core/logger/outputs.js +2 -0
  88. package/dist/core/logger/outputs.js.map +1 -1
  89. package/dist/core/middleware/built-in/auth/helpers.js +1 -1
  90. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  91. package/dist/core/middleware/built-in/auth/jwt-helpers.js +1 -1
  92. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  93. package/dist/core/middleware/built-in/auth/providers.js +1 -1
  94. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  95. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -3
  96. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  97. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +1 -0
  98. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  99. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js +1 -1
  100. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  101. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.d.ts +8 -0
  102. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js +100 -7
  103. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  104. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.d.ts +6 -0
  105. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js +97 -13
  106. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  107. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js +1 -1
  108. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  109. package/dist/core/middleware/built-in/cookie/hook.d.ts +1 -1
  110. package/dist/core/middleware/built-in/cookie/hook.js +2 -2
  111. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  112. package/dist/core/middleware/built-in/csrf/core.js +1 -0
  113. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  114. package/dist/core/middleware/built-in/graphql/core.d.ts +11 -0
  115. package/dist/core/middleware/built-in/graphql/core.js +24 -0
  116. package/dist/core/middleware/built-in/graphql/core.js.map +1 -0
  117. package/dist/core/middleware/built-in/graphql/helpers.d.ts +69 -0
  118. package/dist/core/middleware/built-in/graphql/helpers.js +187 -0
  119. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -0
  120. package/dist/core/middleware/built-in/graphql/hook.d.ts +7 -0
  121. package/dist/core/middleware/built-in/graphql/hook.js +78 -0
  122. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -0
  123. package/dist/core/middleware/built-in/graphql/index.d.ts +5 -0
  124. package/dist/core/middleware/built-in/graphql/index.js +5 -0
  125. package/dist/core/middleware/built-in/graphql/index.js.map +1 -0
  126. package/dist/core/middleware/built-in/graphql/middleware.d.ts +7 -0
  127. package/dist/core/middleware/built-in/graphql/middleware.js +54 -0
  128. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -0
  129. package/dist/core/middleware/built-in/graphql/subscriptions.d.ts +20 -0
  130. package/dist/core/middleware/built-in/graphql/subscriptions.js +37 -0
  131. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -0
  132. package/dist/core/middleware/built-in/index.d.ts +2 -1
  133. package/dist/core/middleware/built-in/index.js +3 -0
  134. package/dist/core/middleware/built-in/index.js.map +1 -1
  135. package/dist/core/middleware/built-in/rate-limit/core.d.ts +5 -0
  136. package/dist/core/middleware/built-in/rate-limit/core.js +16 -8
  137. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
  138. package/dist/core/middleware/built-in/validation/core.js +42 -19
  139. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  140. package/dist/core/middleware/index.js +1 -0
  141. package/dist/core/middleware/index.js.map +1 -1
  142. package/dist/core/modules/auto-discovery.js +5 -4
  143. package/dist/core/modules/auto-discovery.js.map +1 -1
  144. package/dist/core/modules/modules.js.map +1 -1
  145. package/dist/core/networking/adapters/socketio-adapter.js +1 -1
  146. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  147. package/dist/core/networking/adapters/uws-adapter.js +7 -2
  148. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  149. package/dist/core/networking/adapters/ws-adapter.js +5 -2
  150. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  151. package/dist/core/networking/websocket-manager.js +2 -0
  152. package/dist/core/networking/websocket-manager.js.map +1 -1
  153. package/dist/core/pooling/object-pool-manager.d.ts +8 -2
  154. package/dist/core/pooling/object-pool-manager.js +38 -18
  155. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  156. package/dist/core/routing/app-integration.d.ts +3 -3
  157. package/dist/core/routing/app-integration.js +1 -1
  158. package/dist/core/routing/app-integration.js.map +1 -1
  159. package/dist/core/routing/index.d.ts +1 -1
  160. package/dist/core/routing/index.js +1 -1
  161. package/dist/core/routing/index.js.map +1 -1
  162. package/dist/core/routing/path-matcher.d.ts +6 -0
  163. package/dist/core/routing/path-matcher.js +46 -7
  164. package/dist/core/routing/path-matcher.js.map +1 -1
  165. package/dist/core/routing/unified-router.d.ts +4 -0
  166. package/dist/core/routing/unified-router.js +104 -43
  167. package/dist/core/routing/unified-router.js.map +1 -1
  168. package/dist/core/runtime/base-adapter.js +3 -3
  169. package/dist/core/runtime/base-adapter.js.map +1 -1
  170. package/dist/core/runtime/cloudflare-workers-adapter.js +1 -1
  171. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  172. package/dist/core/runtime/node-adapter.d.ts +1 -1
  173. package/dist/core/runtime/node-adapter.js +7 -4
  174. package/dist/core/runtime/node-adapter.js.map +1 -1
  175. package/dist/core/runtime/vercel-edge-adapter.js +1 -0
  176. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  177. package/dist/core/utilities/circuit-breaker.d.ts +9 -2
  178. package/dist/core/utilities/circuit-breaker.js +32 -3
  179. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  180. package/dist/core/utilities/container.js +6 -0
  181. package/dist/core/utilities/container.js.map +1 -1
  182. package/dist/core/utilities/hooks.d.ts +4 -0
  183. package/dist/core/utilities/hooks.js +134 -22
  184. package/dist/core/utilities/hooks.js.map +1 -1
  185. package/dist/core/validation/index.js +6 -1
  186. package/dist/core/validation/index.js.map +1 -1
  187. package/dist/index.d.ts +6 -0
  188. package/dist/index.js +5 -0
  189. package/dist/index.js.map +1 -1
  190. package/dist/moro.d.ts +154 -1
  191. package/dist/moro.js +592 -16
  192. package/dist/moro.js.map +1 -1
  193. package/dist/types/config.d.ts +28 -0
  194. package/dist/types/core.d.ts +1 -0
  195. package/dist/types/events.d.ts +1 -1
  196. package/dist/types/events.js +1 -0
  197. package/dist/types/events.js.map +1 -1
  198. package/dist/types/logger.d.ts +1 -0
  199. package/dist/types/module.d.ts +2 -2
  200. package/package.json +21 -1
@@ -0,0 +1,151 @@
1
+ export type { CronSchedule, NextRunResult } from './cron-parser.js';
2
+ export type { JobExecution, JobState, JobHistory, StateManagerOptions, } from './job-state-manager.js';
3
+ export type { LeaderElectionOptions, LeaderInfo } from './leader-election.js';
4
+ export type { JobExecutorOptions, JobFunction, ExecutionContext, ExecutionResult, } from './job-executor.js';
5
+ export type { JobScheduleType, JobSchedule, JobOptions, Job, JobSchedulerOptions, } from './job-scheduler.js';
6
+ export interface SimpleJobOptions {
7
+ name?: string;
8
+ enabled?: boolean;
9
+ priority?: number;
10
+ timezone?: string;
11
+ maxConcurrent?: number;
12
+ timeout?: number;
13
+ maxRetries?: number;
14
+ retryDelay?: number;
15
+ retryBackoff?: 'linear' | 'exponential';
16
+ enableCircuitBreaker?: boolean;
17
+ metadata?: Record<string, any>;
18
+ onStart?: (context: JobContext) => void | Promise<void>;
19
+ onComplete?: (context: JobContext, result: any) => void | Promise<void>;
20
+ onError?: (context: JobContext, error: Error) => void | Promise<void>;
21
+ }
22
+ export interface JobContext {
23
+ jobId: string;
24
+ executionId: string;
25
+ attempt: number;
26
+ startTime: Date;
27
+ metadata?: Record<string, any>;
28
+ }
29
+ export interface JobMetrics {
30
+ successRate: number;
31
+ failureRate: number;
32
+ averageDuration: number;
33
+ totalExecutions: number;
34
+ recentFailures: number;
35
+ }
36
+ export interface SchedulerStats {
37
+ totalJobs: number;
38
+ enabledJobs: number;
39
+ runningJobs: number;
40
+ queuedJobs: number;
41
+ isLeader: boolean;
42
+ isStarted: boolean;
43
+ }
44
+ export type JobHealthStatus = 'healthy' | 'warning' | 'critical' | 'unknown';
45
+ export interface JobHealth {
46
+ jobId: string;
47
+ name: string;
48
+ status: JobHealthStatus;
49
+ enabled: boolean;
50
+ lastExecution?: Date;
51
+ lastSuccess?: Date;
52
+ consecutiveFailures: number;
53
+ circuitBreakerState?: 'open' | 'half-open' | 'closed';
54
+ nextRun?: Date;
55
+ message?: string;
56
+ }
57
+ export interface JobEvents {
58
+ 'scheduler:started': {
59
+ jobCount: number;
60
+ isLeader: boolean;
61
+ };
62
+ 'scheduler:shutdown': Record<string, never>;
63
+ 'job:registered': {
64
+ jobId: string;
65
+ name: string;
66
+ schedule: any;
67
+ };
68
+ 'job:unregistered': {
69
+ jobId: string;
70
+ name: string;
71
+ };
72
+ 'job:enabled': {
73
+ jobId: string;
74
+ enabled: boolean;
75
+ };
76
+ 'job:queued': {
77
+ jobId: string;
78
+ executionId: string;
79
+ queueLength: number;
80
+ };
81
+ 'job:start': {
82
+ jobId: string;
83
+ executionId: string;
84
+ context: any;
85
+ };
86
+ 'job:complete': {
87
+ jobId: string;
88
+ executionId: string;
89
+ result: any;
90
+ duration: number;
91
+ };
92
+ 'job:error': {
93
+ jobId: string;
94
+ executionId: string;
95
+ error: Error;
96
+ duration: number;
97
+ timedOut?: boolean;
98
+ };
99
+ 'leader:elected': {
100
+ instanceId: string;
101
+ electedAt?: Date;
102
+ };
103
+ 'leader:stepdown': {
104
+ instanceId: string;
105
+ };
106
+ 'leader:heartbeat': {
107
+ instanceId: string;
108
+ timestamp: Date;
109
+ };
110
+ 'leader:unhealthy': {
111
+ leader: string;
112
+ heartbeatAge: number;
113
+ };
114
+ 'execution:success': {
115
+ jobId: string;
116
+ executionId: string;
117
+ attempts: number;
118
+ duration: number;
119
+ };
120
+ 'execution:failed': {
121
+ jobId: string;
122
+ executionId: string;
123
+ attempts: number;
124
+ duration: number;
125
+ error: Error;
126
+ };
127
+ 'execution:retry': {
128
+ jobId: string;
129
+ executionId: string;
130
+ attempt: number;
131
+ maxAttempts: number;
132
+ error: Error;
133
+ };
134
+ 'execution:cancelled': {
135
+ executionId: string;
136
+ };
137
+ 'circuit-breaker:open': {
138
+ jobId: string;
139
+ };
140
+ 'circuit-breaker:half-open': {
141
+ jobId: string;
142
+ };
143
+ 'circuit-breaker:closed': {
144
+ jobId: string;
145
+ };
146
+ 'memory:threshold-exceeded': {
147
+ jobId: string;
148
+ heapUsedMB: number;
149
+ threshold: number;
150
+ };
151
+ }
@@ -0,0 +1,4 @@
1
+ // Job System Types
2
+ // Complete type definitions for the job scheduling system
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/jobs/types.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,0DAA0D"}
@@ -0,0 +1,95 @@
1
+ import { Logger } from '../../types/logger.js';
2
+ import { JobScheduler } from './job-scheduler.js';
3
+ import { JobHealth, JobHealthStatus, SchedulerStats } from './types.js';
4
+ /**
5
+ * JobHealthChecker - Monitors job health and provides status
6
+ */
7
+ export declare class JobHealthChecker {
8
+ private scheduler;
9
+ private logger;
10
+ constructor(scheduler: JobScheduler, logger: Logger);
11
+ /**
12
+ * Check health of a specific job
13
+ */
14
+ checkJobHealth(jobId: string): JobHealth;
15
+ /**
16
+ * Check health of all jobs
17
+ */
18
+ checkAllJobs(): JobHealth[];
19
+ /**
20
+ * Get overall scheduler health
21
+ */
22
+ getSchedulerHealth(): {
23
+ status: JobHealthStatus;
24
+ stats: SchedulerStats;
25
+ jobs: JobHealth[];
26
+ unhealthyJobCount: number;
27
+ message?: string;
28
+ };
29
+ }
30
+ /**
31
+ * Parse interval string to milliseconds
32
+ * Supports: '5s', '10m', '2h', '1d'
33
+ */
34
+ export declare function parseInterval(interval: string | number): number;
35
+ /**
36
+ * Format duration in human-readable format
37
+ */
38
+ export declare function formatDuration(ms: number): string;
39
+ /**
40
+ * Create a simple interval-based job schedule
41
+ */
42
+ export declare function everyInterval(interval: string | number): {
43
+ type: "interval";
44
+ interval: number;
45
+ };
46
+ /**
47
+ * Create a cron-based job schedule
48
+ */
49
+ export declare function cronSchedule(expression: string, timezone?: string): {
50
+ type: "cron";
51
+ cron: string;
52
+ timezone: string | undefined;
53
+ };
54
+ /**
55
+ * Create a one-time job schedule
56
+ */
57
+ export declare function oneTimeAt(date: Date): {
58
+ type: "oneTime";
59
+ at: Date;
60
+ };
61
+ /**
62
+ * Job builder for fluent API
63
+ */
64
+ export declare class JobBuilder {
65
+ private _name?;
66
+ private _schedule?;
67
+ private _options;
68
+ name(name: string): this;
69
+ every(interval: string | number): this;
70
+ cron(expression: string, timezone?: string): this;
71
+ at(date: Date): this;
72
+ enabled(enabled: boolean): this;
73
+ priority(priority: number): this;
74
+ maxConcurrent(max: number): this;
75
+ timeout(ms: number): this;
76
+ retry(options: {
77
+ maxRetries?: number;
78
+ delay?: number;
79
+ backoff?: 'linear' | 'exponential';
80
+ }): this;
81
+ circuitBreaker(enabled: boolean): this;
82
+ metadata(metadata: Record<string, any>): this;
83
+ onStart(fn: (ctx: any) => void | Promise<void>): this;
84
+ onComplete(fn: (ctx: any, result: any) => void | Promise<void>): this;
85
+ onError(fn: (ctx: any, error: Error) => void | Promise<void>): this;
86
+ build(): {
87
+ name: string;
88
+ schedule: any;
89
+ options: any;
90
+ };
91
+ }
92
+ /**
93
+ * Create a job builder
94
+ */
95
+ export declare function createJob(name: string): JobBuilder;
@@ -0,0 +1,258 @@
1
+ // Job Utilities and Helper Functions
2
+ // Health checks, monitoring, and convenience functions
3
+ /**
4
+ * JobHealthChecker - Monitors job health and provides status
5
+ */
6
+ export class JobHealthChecker {
7
+ scheduler;
8
+ logger;
9
+ constructor(scheduler, logger) {
10
+ this.scheduler = scheduler;
11
+ this.logger = logger;
12
+ }
13
+ /**
14
+ * Check health of a specific job
15
+ */
16
+ checkJobHealth(jobId) {
17
+ const job = this.scheduler.getJob(jobId);
18
+ if (!job) {
19
+ return {
20
+ jobId,
21
+ name: 'Unknown',
22
+ status: 'unknown',
23
+ enabled: false,
24
+ consecutiveFailures: 0,
25
+ message: 'Job not found',
26
+ };
27
+ }
28
+ const state = this.scheduler.getJobState(jobId);
29
+ const metrics = this.scheduler.getJobMetrics(jobId);
30
+ let status = 'healthy';
31
+ let message;
32
+ if (!job.enabled) {
33
+ status = 'warning';
34
+ message = 'Job is disabled';
35
+ }
36
+ else if (state?.consecutiveFailures && state.consecutiveFailures >= 5) {
37
+ status = 'critical';
38
+ message = `${state.consecutiveFailures} consecutive failures`;
39
+ }
40
+ else if (state?.consecutiveFailures && state.consecutiveFailures >= 3) {
41
+ status = 'warning';
42
+ message = `${state.consecutiveFailures} consecutive failures`;
43
+ }
44
+ else if (metrics && metrics.failureRate > 50) {
45
+ status = 'warning';
46
+ message = `High failure rate: ${metrics.failureRate.toFixed(1)}%`;
47
+ }
48
+ return {
49
+ jobId,
50
+ name: job.name,
51
+ status,
52
+ enabled: job.enabled,
53
+ lastExecution: state?.lastExecution?.startTime,
54
+ lastSuccess: state?.lastExecution?.status === 'completed' ? state.lastExecution.endTime : undefined,
55
+ consecutiveFailures: state?.consecutiveFailures || 0,
56
+ nextRun: job.nextRun,
57
+ message,
58
+ };
59
+ }
60
+ /**
61
+ * Check health of all jobs
62
+ */
63
+ checkAllJobs() {
64
+ const jobs = this.scheduler.getAllJobs();
65
+ return jobs.map(job => this.checkJobHealth(job.id));
66
+ }
67
+ /**
68
+ * Get overall scheduler health
69
+ */
70
+ getSchedulerHealth() {
71
+ const stats = this.scheduler.getStats();
72
+ const jobHealths = this.checkAllJobs();
73
+ const unhealthyJobs = jobHealths.filter(h => h.status === 'critical' || h.status === 'warning');
74
+ let status = 'healthy';
75
+ let message;
76
+ if (!stats.isStarted) {
77
+ status = 'critical';
78
+ message = 'Scheduler not started';
79
+ }
80
+ else if (!stats.isLeader) {
81
+ status = 'warning';
82
+ message = 'Not leader (standby mode)';
83
+ }
84
+ else if (unhealthyJobs.filter(h => h.status === 'critical').length > 0) {
85
+ status = 'critical';
86
+ message = `${unhealthyJobs.filter(h => h.status === 'critical').length} critical jobs`;
87
+ }
88
+ else if (unhealthyJobs.length > 0) {
89
+ status = 'warning';
90
+ message = `${unhealthyJobs.length} unhealthy jobs`;
91
+ }
92
+ return {
93
+ status,
94
+ stats,
95
+ jobs: jobHealths,
96
+ unhealthyJobCount: unhealthyJobs.length,
97
+ message,
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * Parse interval string to milliseconds
103
+ * Supports: '5s', '10m', '2h', '1d'
104
+ */
105
+ export function parseInterval(interval) {
106
+ if (typeof interval === 'number') {
107
+ return interval;
108
+ }
109
+ const match = interval.match(/^(\d+(?:\.\d+)?)\s*([smhd])$/i);
110
+ if (!match) {
111
+ throw new Error(`Invalid interval format: "${interval}". Use format like: 5s, 10m, 2h, 1d`);
112
+ }
113
+ const value = parseFloat(match[1]);
114
+ const unit = match[2].toLowerCase();
115
+ const multipliers = {
116
+ s: 1000,
117
+ m: 60000,
118
+ h: 3600000,
119
+ d: 86400000,
120
+ };
121
+ return value * multipliers[unit];
122
+ }
123
+ /**
124
+ * Format duration in human-readable format
125
+ */
126
+ export function formatDuration(ms) {
127
+ if (ms < 1000) {
128
+ return `${ms}ms`;
129
+ }
130
+ const seconds = Math.floor(ms / 1000);
131
+ if (seconds < 60) {
132
+ return `${seconds}s`;
133
+ }
134
+ const minutes = Math.floor(seconds / 60);
135
+ if (minutes < 60) {
136
+ return `${minutes}m ${seconds % 60}s`;
137
+ }
138
+ const hours = Math.floor(minutes / 60);
139
+ if (hours < 24) {
140
+ return `${hours}h ${minutes % 60}m`;
141
+ }
142
+ const days = Math.floor(hours / 24);
143
+ return `${days}d ${hours % 24}h`;
144
+ }
145
+ /**
146
+ * Create a simple interval-based job schedule
147
+ */
148
+ export function everyInterval(interval) {
149
+ return {
150
+ type: 'interval',
151
+ interval: parseInterval(interval),
152
+ };
153
+ }
154
+ /**
155
+ * Create a cron-based job schedule
156
+ */
157
+ export function cronSchedule(expression, timezone) {
158
+ return {
159
+ type: 'cron',
160
+ cron: expression,
161
+ timezone,
162
+ };
163
+ }
164
+ /**
165
+ * Create a one-time job schedule
166
+ */
167
+ export function oneTimeAt(date) {
168
+ return {
169
+ type: 'oneTime',
170
+ at: date,
171
+ };
172
+ }
173
+ /**
174
+ * Job builder for fluent API
175
+ */
176
+ export class JobBuilder {
177
+ _name;
178
+ _schedule;
179
+ _options = {};
180
+ name(name) {
181
+ this._name = name;
182
+ return this;
183
+ }
184
+ every(interval) {
185
+ this._schedule = everyInterval(interval);
186
+ return this;
187
+ }
188
+ cron(expression, timezone) {
189
+ this._schedule = cronSchedule(expression, timezone);
190
+ return this;
191
+ }
192
+ at(date) {
193
+ this._schedule = oneTimeAt(date);
194
+ return this;
195
+ }
196
+ enabled(enabled) {
197
+ this._options.enabled = enabled;
198
+ return this;
199
+ }
200
+ priority(priority) {
201
+ this._options.priority = priority;
202
+ return this;
203
+ }
204
+ maxConcurrent(max) {
205
+ this._options.maxConcurrent = max;
206
+ return this;
207
+ }
208
+ timeout(ms) {
209
+ this._options.timeout = ms;
210
+ return this;
211
+ }
212
+ retry(options) {
213
+ this._options.maxRetries = options.maxRetries;
214
+ this._options.retryDelay = options.delay;
215
+ this._options.retryBackoff = options.backoff;
216
+ return this;
217
+ }
218
+ circuitBreaker(enabled) {
219
+ this._options.enableCircuitBreaker = enabled;
220
+ return this;
221
+ }
222
+ metadata(metadata) {
223
+ this._options.metadata = metadata;
224
+ return this;
225
+ }
226
+ onStart(fn) {
227
+ this._options.onStart = fn;
228
+ return this;
229
+ }
230
+ onComplete(fn) {
231
+ this._options.onComplete = fn;
232
+ return this;
233
+ }
234
+ onError(fn) {
235
+ this._options.onError = fn;
236
+ return this;
237
+ }
238
+ build() {
239
+ if (!this._name) {
240
+ throw new Error('Job name is required');
241
+ }
242
+ if (!this._schedule) {
243
+ throw new Error('Job schedule is required');
244
+ }
245
+ return {
246
+ name: this._name,
247
+ schedule: this._schedule,
248
+ options: this._options,
249
+ };
250
+ }
251
+ }
252
+ /**
253
+ * Create a job builder
254
+ */
255
+ export function createJob(name) {
256
+ return new JobBuilder().name(name);
257
+ }
258
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/jobs/utils.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export const contextFilter = (allowedContexts) => ({
12
12
  filter: (entry) => {
13
13
  if (!entry.context)
14
14
  return true;
15
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
15
16
  return allowedContexts.some(ctx => entry.context.includes(ctx));
16
17
  },
17
18
  });
@@ -21,6 +22,7 @@ export const rateLimitFilter = (maxPerSecond) => {
21
22
  let lastCleanup = 0;
22
23
  return {
23
24
  name: 'rate-limit',
25
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
26
  filter: (entry) => {
25
27
  const now = Date.now();
26
28
  // Batch cleanup for better performance and thread safety
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/core/logger/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/core/logger/filters.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare class MoroLogger implements Logger {
18
18
  private cachedTimestamp;
19
19
  private lastTimestamp;
20
20
  private timestampCacheInterval;
21
+ private metricsEnabled;
21
22
  private static readonly ENTRY_POOL;
22
23
  private static readonly MAX_POOL_SIZE;
23
24
  private static poolIndex;
@@ -43,11 +44,12 @@ export declare class MoroLogger implements Logger {
43
44
  private static resetStringBuilder;
44
45
  private static appendToBuilder;
45
46
  private static buildString;
46
- debug(message: string, context?: string, metadata?: Record<string, any>): void;
47
- info(message: string, context?: string, metadata?: Record<string, any>): void;
48
- warn(message: string, context?: string, metadata?: Record<string, any>): void;
49
- error(message: string | Error, context?: string, metadata?: Record<string, any>): void;
50
- fatal(message: string | Error, context?: string, metadata?: Record<string, any>): void;
47
+ debug: (message: string, context?: string, metadata?: Record<string, any>) => void;
48
+ info: (message: string, context?: string, metadata?: Record<string, any>) => void;
49
+ warn: (message: string, context?: string, metadata?: Record<string, any>) => void;
50
+ error: (message: string | Error, context?: string, metadata?: Record<string, any>) => void;
51
+ fatal: (message: string | Error, context?: string, metadata?: Record<string, any>) => void;
52
+ private createLogMethod;
51
53
  time(label: string): void;
52
54
  timeEnd(label: string, context?: string, metadata?: Record<string, any>): void;
53
55
  child(context: string, metadata?: Record<string, any>): Logger;