@morojs/moro 1.6.8 → 1.7.0

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 (300) hide show
  1. package/README.md +3 -1
  2. package/dist/core/auth/morojs-adapter.js +16 -6
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-sources.js +27 -15
  5. package/dist/core/config/config-sources.js.map +1 -1
  6. package/dist/core/config/config-validator.js +201 -6
  7. package/dist/core/config/config-validator.js.map +1 -1
  8. package/dist/core/docs/openapi-generator.js +8 -9
  9. package/dist/core/docs/openapi-generator.js.map +1 -1
  10. package/dist/core/events/event-bus.js +1 -1
  11. package/dist/core/events/event-bus.js.map +1 -1
  12. package/dist/core/framework.d.ts +4 -2
  13. package/dist/core/framework.js +25 -24
  14. package/dist/core/framework.js.map +1 -1
  15. package/dist/core/graphql/core.js +34 -8
  16. package/dist/core/graphql/core.js.map +1 -1
  17. package/dist/core/grpc/adapters/grpc-js-adapter.d.ts +28 -0
  18. package/dist/core/grpc/adapters/grpc-js-adapter.js +449 -0
  19. package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -0
  20. package/dist/core/grpc/adapters/index.d.ts +1 -0
  21. package/dist/core/grpc/adapters/index.js +6 -0
  22. package/dist/core/grpc/adapters/index.js.map +1 -0
  23. package/dist/core/grpc/grpc-adapter.d.ts +47 -0
  24. package/dist/core/grpc/grpc-adapter.js +4 -0
  25. package/dist/core/grpc/grpc-adapter.js.map +1 -0
  26. package/dist/core/grpc/grpc-manager.d.ts +59 -0
  27. package/dist/core/grpc/grpc-manager.js +218 -0
  28. package/dist/core/grpc/grpc-manager.js.map +1 -0
  29. package/dist/core/grpc/index.d.ts +7 -0
  30. package/dist/core/grpc/index.js +10 -0
  31. package/dist/core/grpc/index.js.map +1 -0
  32. package/dist/core/grpc/middleware/auth.d.ts +22 -0
  33. package/dist/core/grpc/middleware/auth.js +126 -0
  34. package/dist/core/grpc/middleware/auth.js.map +1 -0
  35. package/dist/core/grpc/middleware/logging.d.ts +19 -0
  36. package/dist/core/grpc/middleware/logging.js +57 -0
  37. package/dist/core/grpc/middleware/logging.js.map +1 -0
  38. package/dist/core/grpc/middleware/validation.d.ts +18 -0
  39. package/dist/core/grpc/middleware/validation.js +126 -0
  40. package/dist/core/grpc/middleware/validation.js.map +1 -0
  41. package/dist/core/grpc/types.d.ts +233 -0
  42. package/dist/core/grpc/types.js +36 -0
  43. package/dist/core/grpc/types.js.map +1 -0
  44. package/dist/core/http/http-server.d.ts +13 -84
  45. package/dist/core/http/http-server.js +205 -792
  46. package/dist/core/http/http-server.js.map +1 -1
  47. package/dist/core/http/http2-server.d.ts +131 -0
  48. package/dist/core/http/http2-server.js +803 -0
  49. package/dist/core/http/http2-server.js.map +1 -0
  50. package/dist/core/http/index.d.ts +3 -1
  51. package/dist/core/http/index.js +2 -1
  52. package/dist/core/http/index.js.map +1 -1
  53. package/dist/core/http/uws-http-server.js +21 -26
  54. package/dist/core/http/uws-http-server.js.map +1 -1
  55. package/dist/core/jobs/job-executor.js +6 -1
  56. package/dist/core/jobs/job-executor.js.map +1 -1
  57. package/dist/core/jobs/job-scheduler.js +4 -1
  58. package/dist/core/jobs/job-scheduler.js.map +1 -1
  59. package/dist/core/jobs/leader-election.js +2 -1
  60. package/dist/core/jobs/leader-election.js.map +1 -1
  61. package/dist/core/logger/logger.js +41 -18
  62. package/dist/core/logger/logger.js.map +1 -1
  63. package/dist/core/logger/outputs.js +9 -3
  64. package/dist/core/logger/outputs.js.map +1 -1
  65. package/dist/core/mail/adapters/console-adapter.d.ts +14 -0
  66. package/dist/core/mail/adapters/console-adapter.js +89 -0
  67. package/dist/core/mail/adapters/console-adapter.js.map +1 -0
  68. package/dist/core/mail/adapters/index.d.ts +5 -0
  69. package/dist/core/mail/adapters/index.js +8 -0
  70. package/dist/core/mail/adapters/index.js.map +1 -0
  71. package/dist/core/mail/adapters/nodemailer-adapter.d.ts +18 -0
  72. package/dist/core/mail/adapters/nodemailer-adapter.js +188 -0
  73. package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -0
  74. package/dist/core/mail/adapters/resend-adapter.d.ts +18 -0
  75. package/dist/core/mail/adapters/resend-adapter.js +169 -0
  76. package/dist/core/mail/adapters/resend-adapter.js.map +1 -0
  77. package/dist/core/mail/adapters/sendgrid-adapter.d.ts +19 -0
  78. package/dist/core/mail/adapters/sendgrid-adapter.js +186 -0
  79. package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -0
  80. package/dist/core/mail/adapters/ses-adapter.d.ts +18 -0
  81. package/dist/core/mail/adapters/ses-adapter.js +167 -0
  82. package/dist/core/mail/adapters/ses-adapter.js.map +1 -0
  83. package/dist/core/mail/index.d.ts +5 -0
  84. package/dist/core/mail/index.js +8 -0
  85. package/dist/core/mail/index.js.map +1 -0
  86. package/dist/core/mail/mail-adapter.d.ts +62 -0
  87. package/dist/core/mail/mail-adapter.js +83 -0
  88. package/dist/core/mail/mail-adapter.js.map +1 -0
  89. package/dist/core/mail/mail-manager.d.ts +63 -0
  90. package/dist/core/mail/mail-manager.js +302 -0
  91. package/dist/core/mail/mail-manager.js.map +1 -0
  92. package/dist/core/mail/template-engine.d.ts +43 -0
  93. package/dist/core/mail/template-engine.js +239 -0
  94. package/dist/core/mail/template-engine.js.map +1 -0
  95. package/dist/core/mail/types.d.ts +237 -0
  96. package/dist/core/mail/types.js +4 -0
  97. package/dist/core/mail/types.js.map +1 -0
  98. package/dist/core/middleware/built-in/body-size/core.d.ts +12 -0
  99. package/dist/core/middleware/built-in/body-size/core.js +52 -0
  100. package/dist/core/middleware/built-in/body-size/core.js.map +1 -0
  101. package/dist/core/middleware/built-in/body-size/hook.d.ts +2 -0
  102. package/dist/core/middleware/built-in/body-size/hook.js +12 -0
  103. package/dist/core/middleware/built-in/body-size/hook.js.map +1 -0
  104. package/dist/core/middleware/built-in/body-size/index.d.ts +6 -0
  105. package/dist/core/middleware/built-in/body-size/index.js +7 -0
  106. package/dist/core/middleware/built-in/body-size/index.js.map +1 -0
  107. package/dist/core/middleware/built-in/body-size/middleware.d.ts +14 -0
  108. package/dist/core/middleware/built-in/body-size/middleware.js +22 -0
  109. package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -0
  110. package/dist/core/middleware/built-in/cache/core.d.ts +20 -1
  111. package/dist/core/middleware/built-in/cache/core.js.map +1 -1
  112. package/dist/core/middleware/built-in/cache/hook.d.ts +38 -1
  113. package/dist/core/middleware/built-in/cache/hook.js +202 -16
  114. package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
  115. package/dist/core/middleware/built-in/cache/index.js +1 -1
  116. package/dist/core/middleware/built-in/cache/index.js.map +1 -1
  117. package/dist/core/middleware/built-in/compression/core.d.ts +16 -0
  118. package/dist/core/middleware/built-in/compression/core.js +75 -0
  119. package/dist/core/middleware/built-in/compression/core.js.map +1 -0
  120. package/dist/core/middleware/built-in/compression/hook.d.ts +2 -0
  121. package/dist/core/middleware/built-in/compression/hook.js +14 -0
  122. package/dist/core/middleware/built-in/compression/hook.js.map +1 -0
  123. package/dist/core/middleware/built-in/compression/index.d.ts +6 -0
  124. package/dist/core/middleware/built-in/compression/index.js +7 -0
  125. package/dist/core/middleware/built-in/compression/index.js.map +1 -0
  126. package/dist/core/middleware/built-in/compression/middleware.d.ts +20 -0
  127. package/dist/core/middleware/built-in/compression/middleware.js +28 -0
  128. package/dist/core/middleware/built-in/compression/middleware.js.map +1 -0
  129. package/dist/core/middleware/built-in/cookie/core.js +37 -9
  130. package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
  131. package/dist/core/middleware/built-in/helmet/core.d.ts +19 -0
  132. package/dist/core/middleware/built-in/helmet/core.js +70 -0
  133. package/dist/core/middleware/built-in/helmet/core.js.map +1 -0
  134. package/dist/core/middleware/built-in/helmet/hook.d.ts +2 -0
  135. package/dist/core/middleware/built-in/helmet/hook.js +12 -0
  136. package/dist/core/middleware/built-in/helmet/hook.js.map +1 -0
  137. package/dist/core/middleware/built-in/helmet/index.d.ts +6 -0
  138. package/dist/core/middleware/built-in/helmet/index.js +7 -0
  139. package/dist/core/middleware/built-in/helmet/index.js.map +1 -0
  140. package/dist/core/middleware/built-in/helmet/middleware.d.ts +22 -0
  141. package/dist/core/middleware/built-in/helmet/middleware.js +28 -0
  142. package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -0
  143. package/dist/core/middleware/built-in/http2/core.d.ts +35 -0
  144. package/dist/core/middleware/built-in/http2/core.js +128 -0
  145. package/dist/core/middleware/built-in/http2/core.js.map +1 -0
  146. package/dist/core/middleware/built-in/http2/hook.d.ts +5 -0
  147. package/dist/core/middleware/built-in/http2/hook.js +34 -0
  148. package/dist/core/middleware/built-in/http2/hook.js.map +1 -0
  149. package/dist/core/middleware/built-in/http2/index.d.ts +8 -0
  150. package/dist/core/middleware/built-in/http2/index.js +10 -0
  151. package/dist/core/middleware/built-in/http2/index.js.map +1 -0
  152. package/dist/core/middleware/built-in/http2/middleware.d.ts +20 -0
  153. package/dist/core/middleware/built-in/http2/middleware.js +31 -0
  154. package/dist/core/middleware/built-in/http2/middleware.js.map +1 -0
  155. package/dist/core/middleware/built-in/index.d.ts +18 -0
  156. package/dist/core/middleware/built-in/index.js +28 -0
  157. package/dist/core/middleware/built-in/index.js.map +1 -1
  158. package/dist/core/middleware/built-in/range/core.d.ts +16 -0
  159. package/dist/core/middleware/built-in/range/core.js +112 -0
  160. package/dist/core/middleware/built-in/range/core.js.map +1 -0
  161. package/dist/core/middleware/built-in/range/hook.d.ts +2 -0
  162. package/dist/core/middleware/built-in/range/hook.js +12 -0
  163. package/dist/core/middleware/built-in/range/hook.js.map +1 -0
  164. package/dist/core/middleware/built-in/range/index.d.ts +6 -0
  165. package/dist/core/middleware/built-in/range/index.js +7 -0
  166. package/dist/core/middleware/built-in/range/index.js.map +1 -0
  167. package/dist/core/middleware/built-in/range/middleware.d.ts +21 -0
  168. package/dist/core/middleware/built-in/range/middleware.js +27 -0
  169. package/dist/core/middleware/built-in/range/middleware.js.map +1 -0
  170. package/dist/core/middleware/built-in/session/core.js +14 -1
  171. package/dist/core/middleware/built-in/session/core.js.map +1 -1
  172. package/dist/core/middleware/built-in/static/core.d.ts +20 -0
  173. package/dist/core/middleware/built-in/static/core.js +143 -0
  174. package/dist/core/middleware/built-in/static/core.js.map +1 -0
  175. package/dist/core/middleware/built-in/static/hook.d.ts +2 -0
  176. package/dist/core/middleware/built-in/static/hook.js +12 -0
  177. package/dist/core/middleware/built-in/static/hook.js.map +1 -0
  178. package/dist/core/middleware/built-in/static/index.d.ts +6 -0
  179. package/dist/core/middleware/built-in/static/index.js +7 -0
  180. package/dist/core/middleware/built-in/static/index.js.map +1 -0
  181. package/dist/core/middleware/built-in/static/middleware.d.ts +18 -0
  182. package/dist/core/middleware/built-in/static/middleware.js +26 -0
  183. package/dist/core/middleware/built-in/static/middleware.js.map +1 -0
  184. package/dist/core/middleware/built-in/template/core.d.ts +19 -0
  185. package/dist/core/middleware/built-in/template/core.js +108 -0
  186. package/dist/core/middleware/built-in/template/core.js.map +1 -0
  187. package/dist/core/middleware/built-in/template/hook.d.ts +2 -0
  188. package/dist/core/middleware/built-in/template/hook.js +12 -0
  189. package/dist/core/middleware/built-in/template/hook.js.map +1 -0
  190. package/dist/core/middleware/built-in/template/index.d.ts +6 -0
  191. package/dist/core/middleware/built-in/template/index.js +7 -0
  192. package/dist/core/middleware/built-in/template/index.js.map +1 -0
  193. package/dist/core/middleware/built-in/template/middleware.d.ts +21 -0
  194. package/dist/core/middleware/built-in/template/middleware.js +27 -0
  195. package/dist/core/middleware/built-in/template/middleware.js.map +1 -0
  196. package/dist/core/middleware/built-in/upload/core.d.ts +29 -0
  197. package/dist/core/middleware/built-in/upload/core.js +66 -0
  198. package/dist/core/middleware/built-in/upload/core.js.map +1 -0
  199. package/dist/core/middleware/built-in/upload/hook.d.ts +2 -0
  200. package/dist/core/middleware/built-in/upload/hook.js +25 -0
  201. package/dist/core/middleware/built-in/upload/hook.js.map +1 -0
  202. package/dist/core/middleware/built-in/upload/index.d.ts +6 -0
  203. package/dist/core/middleware/built-in/upload/index.js +7 -0
  204. package/dist/core/middleware/built-in/upload/index.js.map +1 -0
  205. package/dist/core/middleware/built-in/upload/middleware.d.ts +18 -0
  206. package/dist/core/middleware/built-in/upload/middleware.js +41 -0
  207. package/dist/core/middleware/built-in/upload/middleware.js.map +1 -0
  208. package/dist/core/middleware/built-in/validation/middleware.js +2 -1
  209. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
  210. package/dist/core/networking/adapters/uws-adapter.js +54 -6
  211. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  212. package/dist/core/networking/adapters/ws-adapter.js +56 -17
  213. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  214. package/dist/core/pooling/object-pool-manager.js +9 -1
  215. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  216. package/dist/core/queue/adapters/bull-adapter.d.ts +86 -0
  217. package/dist/core/queue/adapters/bull-adapter.js +330 -0
  218. package/dist/core/queue/adapters/bull-adapter.js.map +1 -0
  219. package/dist/core/queue/adapters/index.d.ts +9 -0
  220. package/dist/core/queue/adapters/index.js +10 -0
  221. package/dist/core/queue/adapters/index.js.map +1 -0
  222. package/dist/core/queue/adapters/kafka-adapter.d.ts +86 -0
  223. package/dist/core/queue/adapters/kafka-adapter.js +462 -0
  224. package/dist/core/queue/adapters/kafka-adapter.js.map +1 -0
  225. package/dist/core/queue/adapters/memory-adapter.d.ts +87 -0
  226. package/dist/core/queue/adapters/memory-adapter.js +415 -0
  227. package/dist/core/queue/adapters/memory-adapter.js.map +1 -0
  228. package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +86 -0
  229. package/dist/core/queue/adapters/rabbitmq-adapter.js +436 -0
  230. package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -0
  231. package/dist/core/queue/adapters/sqs-adapter.d.ts +102 -0
  232. package/dist/core/queue/adapters/sqs-adapter.js +522 -0
  233. package/dist/core/queue/adapters/sqs-adapter.js.map +1 -0
  234. package/dist/core/queue/index.d.ts +11 -0
  235. package/dist/core/queue/index.js +14 -0
  236. package/dist/core/queue/index.js.map +1 -0
  237. package/dist/core/queue/middleware/index.d.ts +7 -0
  238. package/dist/core/queue/middleware/index.js +8 -0
  239. package/dist/core/queue/middleware/index.js.map +1 -0
  240. package/dist/core/queue/middleware/monitoring.d.ts +84 -0
  241. package/dist/core/queue/middleware/monitoring.js +145 -0
  242. package/dist/core/queue/middleware/monitoring.js.map +1 -0
  243. package/dist/core/queue/middleware/priority.d.ts +61 -0
  244. package/dist/core/queue/middleware/priority.js +90 -0
  245. package/dist/core/queue/middleware/priority.js.map +1 -0
  246. package/dist/core/queue/middleware/rate-limit.d.ts +34 -0
  247. package/dist/core/queue/middleware/rate-limit.js +109 -0
  248. package/dist/core/queue/middleware/rate-limit.js.map +1 -0
  249. package/dist/core/queue/queue-adapter.d.ts +73 -0
  250. package/dist/core/queue/queue-adapter.js +20 -0
  251. package/dist/core/queue/queue-adapter.js.map +1 -0
  252. package/dist/core/queue/queue-manager.d.ts +92 -0
  253. package/dist/core/queue/queue-manager.js +327 -0
  254. package/dist/core/queue/queue-manager.js.map +1 -0
  255. package/dist/core/queue/types.d.ts +205 -0
  256. package/dist/core/queue/types.js +6 -0
  257. package/dist/core/queue/types.js.map +1 -0
  258. package/dist/core/routing/index.js +41 -10
  259. package/dist/core/routing/index.js.map +1 -1
  260. package/dist/core/routing/radix-tree.d.ts +48 -0
  261. package/dist/core/routing/radix-tree.js +211 -0
  262. package/dist/core/routing/radix-tree.js.map +1 -0
  263. package/dist/core/routing/router.d.ts +10 -9
  264. package/dist/core/routing/router.js +3 -1
  265. package/dist/core/routing/router.js.map +1 -1
  266. package/dist/core/routing/unified-router.d.ts +18 -12
  267. package/dist/core/routing/unified-router.js +220 -163
  268. package/dist/core/routing/unified-router.js.map +1 -1
  269. package/dist/core/runtime/aws-lambda-adapter.js +21 -10
  270. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  271. package/dist/core/runtime/base-adapter.js +15 -5
  272. package/dist/core/runtime/base-adapter.js.map +1 -1
  273. package/dist/core/runtime/cloudflare-workers-adapter.js +35 -12
  274. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  275. package/dist/core/runtime/vercel-edge-adapter.js +16 -6
  276. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  277. package/dist/core/utilities/container.js +3 -1
  278. package/dist/core/utilities/container.js.map +1 -1
  279. package/dist/core/workers/facade.d.ts +74 -0
  280. package/dist/core/workers/facade.js +98 -0
  281. package/dist/core/workers/facade.js.map +1 -0
  282. package/dist/core/workers/index.d.ts +2 -0
  283. package/dist/core/workers/index.js +6 -0
  284. package/dist/core/workers/index.js.map +1 -0
  285. package/dist/core/workers/worker-manager.d.ts +124 -0
  286. package/dist/core/workers/worker-manager.js +299 -0
  287. package/dist/core/workers/worker-manager.js.map +1 -0
  288. package/dist/core/workers/worker.d.ts +1 -0
  289. package/dist/core/workers/worker.js +225 -0
  290. package/dist/core/workers/worker.js.map +1 -0
  291. package/dist/index.d.ts +8 -1
  292. package/dist/index.js +6 -1
  293. package/dist/index.js.map +1 -1
  294. package/dist/moro.d.ts +345 -13
  295. package/dist/moro.js +803 -214
  296. package/dist/moro.js.map +1 -1
  297. package/dist/types/cache.d.ts +4 -0
  298. package/dist/types/config.d.ts +42 -0
  299. package/dist/types/core.d.ts +18 -1
  300. package/package.json +94 -20
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Queue Manager
3
+ * Central manager for all queue operations in MoroJS
4
+ */
5
+ import type { IQueueManager, QueueOptions, Job, JobOptions, JobHandler, BulkJobData, QueueStatus } from './types.js';
6
+ import type { EventEmitter } from 'events';
7
+ /**
8
+ * Queue Manager
9
+ * Manages multiple queues with different adapters
10
+ */
11
+ export declare class QueueManager implements IQueueManager {
12
+ private queues;
13
+ private eventEmitter?;
14
+ private isShuttingDown;
15
+ constructor(eventEmitter?: EventEmitter);
16
+ /**
17
+ * Register a new queue
18
+ */
19
+ registerQueue(name: string, options: QueueOptions): Promise<void>;
20
+ /**
21
+ * Add a job to a queue
22
+ */
23
+ addToQueue<T = any>(queueName: string, data: T, options?: JobOptions): Promise<Job<T>>;
24
+ /**
25
+ * Add multiple jobs to a queue in bulk
26
+ */
27
+ addBulkToQueue<T = any>(queueName: string, jobs: BulkJobData<T>[]): Promise<Job<T>[]>;
28
+ /**
29
+ * Register a processor for a queue
30
+ */
31
+ processQueue<T = any, R = any>(queueName: string, concurrencyOrHandler: number | JobHandler<T, R>, handler?: JobHandler<T, R>): Promise<void>;
32
+ /**
33
+ * Get queue status
34
+ */
35
+ getQueueStatus(queueName: string): Promise<QueueStatus>;
36
+ /**
37
+ * Get a specific job
38
+ */
39
+ getJob(queueName: string, jobId: string): Promise<Job | null>;
40
+ /**
41
+ * Get jobs by status
42
+ */
43
+ getJobs(queueName: string, status?: 'waiting' | 'active' | 'completed' | 'failed' | 'delayed' | 'paused', start?: number, end?: number): Promise<Job[]>;
44
+ /**
45
+ * Remove a job
46
+ */
47
+ removeJob(queueName: string, jobId: string): Promise<void>;
48
+ /**
49
+ * Retry a failed job
50
+ */
51
+ retryJob(queueName: string, jobId: string): Promise<void>;
52
+ /**
53
+ * Pause a queue
54
+ */
55
+ pauseQueue(queueName: string): Promise<void>;
56
+ /**
57
+ * Resume a queue
58
+ */
59
+ resumeQueue(queueName: string): Promise<void>;
60
+ /**
61
+ * Clean old jobs from a queue
62
+ */
63
+ cleanQueue(queueName: string, gracePeriod: number, status?: 'waiting' | 'active' | 'completed' | 'failed' | 'delayed' | 'paused'): Promise<void>;
64
+ /**
65
+ * Obliterate a queue (delete all data)
66
+ */
67
+ obliterateQueue(queueName: string): Promise<void>;
68
+ /**
69
+ * Get all registered queues
70
+ */
71
+ getQueueNames(): string[];
72
+ /**
73
+ * Check if a queue is registered
74
+ */
75
+ hasQueue(queueName: string): boolean;
76
+ /**
77
+ * Shutdown all queues gracefully
78
+ */
79
+ shutdown(): Promise<void>;
80
+ /**
81
+ * Create an adapter instance based on options
82
+ */
83
+ private createAdapter;
84
+ /**
85
+ * Get a registered queue
86
+ */
87
+ private getQueue;
88
+ /**
89
+ * Emit a queue event
90
+ */
91
+ private emitEvent;
92
+ }
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Queue Manager
3
+ * Central manager for all queue operations in MoroJS
4
+ */
5
+ import { MemoryAdapter } from './adapters/memory-adapter.js';
6
+ import { BullAdapter } from './adapters/bull-adapter.js';
7
+ import { RabbitMQAdapter } from './adapters/rabbitmq-adapter.js';
8
+ import { SQSAdapter } from './adapters/sqs-adapter.js';
9
+ import { KafkaAdapter } from './adapters/kafka-adapter.js';
10
+ import { createFrameworkLogger } from '../logger/index.js';
11
+ const logger = createFrameworkLogger('QueueManager');
12
+ /**
13
+ * Queue Manager
14
+ * Manages multiple queues with different adapters
15
+ */
16
+ export class QueueManager {
17
+ queues = new Map();
18
+ eventEmitter;
19
+ isShuttingDown = false;
20
+ constructor(eventEmitter) {
21
+ this.eventEmitter = eventEmitter;
22
+ }
23
+ /**
24
+ * Register a new queue
25
+ */
26
+ async registerQueue(name, options) {
27
+ if (this.queues.has(name)) {
28
+ throw new Error(`Queue "${name}" is already registered`);
29
+ }
30
+ // Create adapter based on type
31
+ const adapter = this.createAdapter(options);
32
+ // Initialize adapter
33
+ await adapter.initialize();
34
+ // Register queue
35
+ this.queues.set(name, {
36
+ name,
37
+ options,
38
+ adapter,
39
+ processors: new Map(),
40
+ });
41
+ this.emitEvent('queue:created', {
42
+ queueName: name,
43
+ timestamp: Date.now(),
44
+ });
45
+ }
46
+ /**
47
+ * Add a job to a queue
48
+ */
49
+ async addToQueue(queueName, data, options) {
50
+ const queue = this.getQueue(queueName);
51
+ // Merge with default options
52
+ const finalOptions = {
53
+ ...queue.options.defaultJobOptions,
54
+ ...options,
55
+ };
56
+ const job = await queue.adapter.addJob(queueName, data, finalOptions);
57
+ this.emitEvent('queue:job:added', {
58
+ queueName,
59
+ jobId: job.id,
60
+ job,
61
+ timestamp: Date.now(),
62
+ });
63
+ return job;
64
+ }
65
+ /**
66
+ * Add multiple jobs to a queue in bulk
67
+ */
68
+ async addBulkToQueue(queueName, jobs) {
69
+ const queue = this.getQueue(queueName);
70
+ // Merge with default options for each job
71
+ const jobsWithDefaults = jobs.map(job => ({
72
+ ...job,
73
+ options: {
74
+ ...queue.options.defaultJobOptions,
75
+ ...job.options,
76
+ },
77
+ }));
78
+ const addedJobs = await queue.adapter.addBulkJobs(queueName, jobsWithDefaults);
79
+ for (const job of addedJobs) {
80
+ this.emitEvent('queue:job:added', {
81
+ queueName,
82
+ jobId: job.id,
83
+ job,
84
+ timestamp: Date.now(),
85
+ });
86
+ }
87
+ return addedJobs;
88
+ }
89
+ /**
90
+ * Register a processor for a queue
91
+ */
92
+ async processQueue(queueName, concurrencyOrHandler, handler) {
93
+ const queue = this.getQueue(queueName);
94
+ // Parse arguments
95
+ let concurrency;
96
+ let actualHandler;
97
+ if (typeof concurrencyOrHandler === 'function') {
98
+ concurrency = queue.options.concurrency || 1;
99
+ actualHandler = concurrencyOrHandler;
100
+ }
101
+ else {
102
+ concurrency = concurrencyOrHandler;
103
+ if (!handler) {
104
+ throw new Error('Handler function is required when concurrency is specified');
105
+ }
106
+ actualHandler = handler;
107
+ }
108
+ // Wrap handler to emit events
109
+ const wrappedHandler = async (job) => {
110
+ try {
111
+ this.emitEvent('queue:job:active', {
112
+ queueName,
113
+ jobId: job.id,
114
+ job,
115
+ timestamp: Date.now(),
116
+ });
117
+ // Wrap updateProgress to emit events
118
+ const originalUpdateProgress = job.updateProgress;
119
+ job.updateProgress = async (progress) => {
120
+ await originalUpdateProgress.call(job, progress);
121
+ this.emitEvent('queue:job:progress', {
122
+ queueName,
123
+ jobId: job.id,
124
+ progress,
125
+ timestamp: Date.now(),
126
+ });
127
+ };
128
+ const result = await actualHandler(job);
129
+ this.emitEvent('queue:job:completed', {
130
+ queueName,
131
+ jobId: job.id,
132
+ job,
133
+ result,
134
+ timestamp: Date.now(),
135
+ });
136
+ return result;
137
+ }
138
+ catch (error) {
139
+ this.emitEvent('queue:job:failed', {
140
+ queueName,
141
+ jobId: job.id,
142
+ job,
143
+ error: error,
144
+ timestamp: Date.now(),
145
+ });
146
+ throw error;
147
+ }
148
+ };
149
+ // Store processor
150
+ queue.processors.set(queueName, wrappedHandler);
151
+ // Register with adapter
152
+ await queue.adapter.process(queueName, concurrency, wrappedHandler);
153
+ }
154
+ /**
155
+ * Get queue status
156
+ */
157
+ async getQueueStatus(queueName) {
158
+ const queue = this.getQueue(queueName);
159
+ const metrics = await queue.adapter.getMetrics(queueName);
160
+ return {
161
+ name: queueName,
162
+ adapter: queue.options.adapter,
163
+ isPaused: metrics.paused > 0,
164
+ metrics,
165
+ workers: queue.processors.size,
166
+ };
167
+ }
168
+ /**
169
+ * Get a specific job
170
+ */
171
+ async getJob(queueName, jobId) {
172
+ const queue = this.getQueue(queueName);
173
+ return await queue.adapter.getJob(queueName, jobId);
174
+ }
175
+ /**
176
+ * Get jobs by status
177
+ */
178
+ async getJobs(queueName, status, start = 0, end = -1) {
179
+ const queue = this.getQueue(queueName);
180
+ return await queue.adapter.getJobs(queueName, status, start, end);
181
+ }
182
+ /**
183
+ * Remove a job
184
+ */
185
+ async removeJob(queueName, jobId) {
186
+ const queue = this.getQueue(queueName);
187
+ await queue.adapter.removeJob(queueName, jobId);
188
+ this.emitEvent('queue:job:removed', {
189
+ queueName,
190
+ jobId,
191
+ timestamp: Date.now(),
192
+ });
193
+ }
194
+ /**
195
+ * Retry a failed job
196
+ */
197
+ async retryJob(queueName, jobId) {
198
+ const queue = this.getQueue(queueName);
199
+ await queue.adapter.retryJob(queueName, jobId);
200
+ }
201
+ /**
202
+ * Pause a queue
203
+ */
204
+ async pauseQueue(queueName) {
205
+ const queue = this.getQueue(queueName);
206
+ await queue.adapter.pauseQueue(queueName);
207
+ this.emitEvent('queue:paused', {
208
+ queueName,
209
+ timestamp: Date.now(),
210
+ });
211
+ }
212
+ /**
213
+ * Resume a queue
214
+ */
215
+ async resumeQueue(queueName) {
216
+ const queue = this.getQueue(queueName);
217
+ await queue.adapter.resumeQueue(queueName);
218
+ this.emitEvent('queue:resumed', {
219
+ queueName,
220
+ timestamp: Date.now(),
221
+ });
222
+ }
223
+ /**
224
+ * Clean old jobs from a queue
225
+ */
226
+ async cleanQueue(queueName, gracePeriod, status) {
227
+ const queue = this.getQueue(queueName);
228
+ await queue.adapter.clean(queueName, gracePeriod, status);
229
+ this.emitEvent('queue:cleaned', {
230
+ queueName,
231
+ timestamp: Date.now(),
232
+ });
233
+ }
234
+ /**
235
+ * Obliterate a queue (delete all data)
236
+ */
237
+ async obliterateQueue(queueName) {
238
+ const queue = this.getQueue(queueName);
239
+ await queue.adapter.obliterate(queueName);
240
+ this.emitEvent('queue:drained', {
241
+ queueName,
242
+ timestamp: Date.now(),
243
+ });
244
+ this.queues.delete(queueName);
245
+ }
246
+ /**
247
+ * Get all registered queues
248
+ */
249
+ getQueueNames() {
250
+ return Array.from(this.queues.keys());
251
+ }
252
+ /**
253
+ * Check if a queue is registered
254
+ */
255
+ hasQueue(queueName) {
256
+ return this.queues.has(queueName);
257
+ }
258
+ /**
259
+ * Shutdown all queues gracefully
260
+ */
261
+ async shutdown() {
262
+ if (this.isShuttingDown) {
263
+ return;
264
+ }
265
+ this.isShuttingDown = true;
266
+ // Close all adapters
267
+ const shutdownPromises = Array.from(this.queues.values()).map(async (queue) => {
268
+ try {
269
+ await queue.adapter.close();
270
+ }
271
+ catch (error) {
272
+ logger.error(`Error closing queue ${queue.name}: ${error}`);
273
+ }
274
+ });
275
+ await Promise.all(shutdownPromises);
276
+ this.queues.clear();
277
+ this.isShuttingDown = false;
278
+ }
279
+ /**
280
+ * Create an adapter instance based on options
281
+ */
282
+ createAdapter(options) {
283
+ switch (options.adapter) {
284
+ case 'memory':
285
+ return new MemoryAdapter();
286
+ case 'bull':
287
+ return new BullAdapter(options.connection);
288
+ case 'rabbitmq':
289
+ return new RabbitMQAdapter(options.connection);
290
+ case 'sqs':
291
+ return new SQSAdapter(options.connection);
292
+ case 'kafka':
293
+ return new KafkaAdapter(options.connection);
294
+ default:
295
+ throw new Error(`Unknown queue adapter: ${options.adapter}`);
296
+ }
297
+ }
298
+ /**
299
+ * Get a registered queue
300
+ */
301
+ getQueue(queueName) {
302
+ const queue = this.queues.get(queueName);
303
+ if (!queue) {
304
+ throw new Error(`Queue "${queueName}" is not registered. Call app.queue('${queueName}', options) first.`);
305
+ }
306
+ return queue;
307
+ }
308
+ /**
309
+ * Emit a queue event
310
+ */
311
+ emitEvent(eventType, payload) {
312
+ if (!this.eventEmitter) {
313
+ return;
314
+ }
315
+ const event = {
316
+ queueName: payload.queueName || '',
317
+ jobId: payload.jobId,
318
+ job: payload.job,
319
+ result: payload.result,
320
+ error: payload.error,
321
+ progress: payload.progress,
322
+ timestamp: payload.timestamp || Date.now(),
323
+ };
324
+ this.eventEmitter.emit(eventType, event);
325
+ }
326
+ }
327
+ //# sourceMappingURL=queue-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../../src/core/queue/queue-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Message Queue System - Type Definitions
3
+ * Pure ESM module with comprehensive types for queue operations
4
+ */
5
+ /**
6
+ * Supported queue adapter types
7
+ */
8
+ export type QueueAdapterType = 'bull' | 'rabbitmq' | 'sqs' | 'kafka' | 'memory';
9
+ /**
10
+ * Job status states
11
+ */
12
+ export type JobStatus = 'waiting' | 'active' | 'completed' | 'failed' | 'delayed' | 'paused';
13
+ /**
14
+ * Backoff strategy for job retries
15
+ */
16
+ export type BackoffStrategy = 'fixed' | 'exponential' | 'linear';
17
+ /**
18
+ * Queue adapter connection configuration
19
+ */
20
+ export interface QueueConnectionConfig {
21
+ host?: string;
22
+ port?: number;
23
+ username?: string;
24
+ password?: string;
25
+ database?: number;
26
+ brokers?: string[];
27
+ groupId?: string;
28
+ region?: string;
29
+ queueUrl?: string;
30
+ [key: string]: any;
31
+ }
32
+ /**
33
+ * Retry configuration
34
+ */
35
+ export interface RetryConfig {
36
+ maxAttempts: number;
37
+ backoff: BackoffStrategy;
38
+ initialDelay: number;
39
+ maxDelay?: number;
40
+ }
41
+ /**
42
+ * Dead letter queue configuration
43
+ */
44
+ export interface DeadLetterQueueConfig {
45
+ enabled: boolean;
46
+ maxRetries: number;
47
+ queueName?: string;
48
+ }
49
+ /**
50
+ * Job options for individual jobs
51
+ */
52
+ export interface JobOptions {
53
+ priority?: number;
54
+ delay?: number;
55
+ attempts?: number;
56
+ backoff?: {
57
+ type: BackoffStrategy;
58
+ delay: number;
59
+ };
60
+ timeout?: number;
61
+ removeOnComplete?: boolean | number;
62
+ removeOnFail?: boolean | number;
63
+ repeat?: {
64
+ cron?: string;
65
+ every?: number;
66
+ limit?: number;
67
+ endDate?: Date | string;
68
+ };
69
+ jobId?: string;
70
+ [key: string]: any;
71
+ }
72
+ /**
73
+ * Default job options for a queue
74
+ */
75
+ export interface DefaultJobOptions {
76
+ removeOnComplete?: boolean | number;
77
+ removeOnFail?: boolean | number;
78
+ attempts?: number;
79
+ backoff?: {
80
+ type: BackoffStrategy;
81
+ delay: number;
82
+ };
83
+ }
84
+ /**
85
+ * Queue configuration options
86
+ */
87
+ export interface QueueOptions {
88
+ adapter: QueueAdapterType;
89
+ connection?: QueueConnectionConfig;
90
+ concurrency?: number;
91
+ retry?: RetryConfig;
92
+ deadLetterQueue?: DeadLetterQueueConfig;
93
+ defaultJobOptions?: DefaultJobOptions;
94
+ prefix?: string;
95
+ limiter?: {
96
+ max: number;
97
+ duration: number;
98
+ };
99
+ }
100
+ /**
101
+ * Job data structure
102
+ */
103
+ export interface Job<T = any> {
104
+ id: string;
105
+ name: string;
106
+ data: T;
107
+ progress: number;
108
+ attemptsMade: number;
109
+ timestamp: number;
110
+ processedOn?: number;
111
+ finishedOn?: number;
112
+ failedReason?: string;
113
+ stacktrace?: string[];
114
+ returnvalue?: any;
115
+ opts: JobOptions;
116
+ }
117
+ /**
118
+ * Job context with helper methods
119
+ */
120
+ export interface JobContext<T = any> extends Job<T> {
121
+ updateProgress(progress: number): Promise<void>;
122
+ log(message: string): void;
123
+ }
124
+ /**
125
+ * Job handler function
126
+ */
127
+ export type JobHandler<T = any, R = any> = (job: JobContext<T>) => Promise<R>;
128
+ /**
129
+ * Bulk job data
130
+ */
131
+ export interface BulkJobData<T = any> {
132
+ data: T;
133
+ options?: JobOptions;
134
+ }
135
+ /**
136
+ * Queue metrics
137
+ */
138
+ export interface QueueMetrics {
139
+ waiting: number;
140
+ active: number;
141
+ completed: number;
142
+ failed: number;
143
+ delayed: number;
144
+ paused: number;
145
+ }
146
+ /**
147
+ * Queue event types
148
+ */
149
+ export type QueueEventType = 'queue:created' | 'queue:job:added' | 'queue:job:active' | 'queue:job:completed' | 'queue:job:failed' | 'queue:job:progress' | 'queue:job:stalled' | 'queue:job:removed' | 'queue:paused' | 'queue:resumed' | 'queue:cleaned' | 'queue:drained' | 'queue:error';
150
+ /**
151
+ * Queue event payload
152
+ */
153
+ export interface QueueEvent {
154
+ queueName: string;
155
+ jobId?: string;
156
+ job?: Job;
157
+ result?: any;
158
+ error?: Error;
159
+ progress?: number;
160
+ timestamp: number;
161
+ }
162
+ /**
163
+ * Queue status
164
+ */
165
+ export interface QueueStatus {
166
+ name: string;
167
+ adapter: QueueAdapterType;
168
+ isPaused: boolean;
169
+ metrics: QueueMetrics;
170
+ workers: number;
171
+ }
172
+ /**
173
+ * Base queue adapter interface
174
+ */
175
+ export interface IQueueAdapter {
176
+ name: string;
177
+ isReady: boolean;
178
+ initialize(): Promise<void>;
179
+ addJob<T = any>(queueName: string, data: T, options?: JobOptions): Promise<Job<T>>;
180
+ addBulkJobs<T = any>(queueName: string, jobs: BulkJobData<T>[]): Promise<Job<T>[]>;
181
+ process<T = any, R = any>(queueName: string, concurrency: number, handler: JobHandler<T, R>): Promise<void>;
182
+ getJob(queueName: string, jobId: string): Promise<Job | null>;
183
+ getJobs(queueName: string, status?: JobStatus, start?: number, end?: number): Promise<Job[]>;
184
+ removeJob(queueName: string, jobId: string): Promise<void>;
185
+ retryJob(queueName: string, jobId: string): Promise<void>;
186
+ pauseQueue(queueName: string): Promise<void>;
187
+ resumeQueue(queueName: string): Promise<void>;
188
+ getMetrics(queueName: string): Promise<QueueMetrics>;
189
+ clean(queueName: string, gracePeriod: number, status?: JobStatus): Promise<void>;
190
+ obliterate(queueName: string): Promise<void>;
191
+ close(): Promise<void>;
192
+ }
193
+ /**
194
+ * Queue manager interface
195
+ */
196
+ export interface IQueueManager {
197
+ registerQueue(name: string, options: QueueOptions): Promise<void>;
198
+ addToQueue<T = any>(queueName: string, data: T, options?: JobOptions): Promise<Job<T>>;
199
+ addBulkToQueue<T = any>(queueName: string, jobs: BulkJobData<T>[]): Promise<Job<T>[]>;
200
+ processQueue<T = any, R = any>(queueName: string, concurrencyOrHandler: number | JobHandler<T, R>, handler?: JobHandler<T, R>): Promise<void>;
201
+ getQueueStatus(queueName: string): Promise<QueueStatus>;
202
+ pauseQueue(queueName: string): Promise<void>;
203
+ resumeQueue(queueName: string): Promise<void>;
204
+ shutdown(): Promise<void>;
205
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Message Queue System - Type Definitions
3
+ * Pure ESM module with comprehensive types for queue operations
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/queue/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}