@orchestr-sh/orchestr 1.7.4 → 1.8.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 (213) hide show
  1. package/dist/Console/Commands/MakeJobCommand.d.ts +20 -0
  2. package/dist/Console/Commands/MakeJobCommand.d.ts.map +1 -0
  3. package/dist/Console/Commands/MakeJobCommand.js +165 -0
  4. package/dist/Console/Commands/MakeJobCommand.js.map +1 -0
  5. package/dist/Console/Commands/QueueBatchesTableCommand.d.ts +17 -0
  6. package/dist/Console/Commands/QueueBatchesTableCommand.d.ts.map +1 -0
  7. package/dist/Console/Commands/QueueBatchesTableCommand.js +92 -0
  8. package/dist/Console/Commands/QueueBatchesTableCommand.js.map +1 -0
  9. package/dist/Console/Commands/QueueClearCommand.d.ts +16 -0
  10. package/dist/Console/Commands/QueueClearCommand.d.ts.map +1 -0
  11. package/dist/Console/Commands/QueueClearCommand.js +29 -0
  12. package/dist/Console/Commands/QueueClearCommand.js.map +1 -0
  13. package/dist/Console/Commands/QueueFailedCommand.d.ts +18 -0
  14. package/dist/Console/Commands/QueueFailedCommand.d.ts.map +1 -0
  15. package/dist/Console/Commands/QueueFailedCommand.js +76 -0
  16. package/dist/Console/Commands/QueueFailedCommand.js.map +1 -0
  17. package/dist/Console/Commands/QueueFailedTableCommand.d.ts +17 -0
  18. package/dist/Console/Commands/QueueFailedTableCommand.d.ts.map +1 -0
  19. package/dist/Console/Commands/QueueFailedTableCommand.js +89 -0
  20. package/dist/Console/Commands/QueueFailedTableCommand.js.map +1 -0
  21. package/dist/Console/Commands/QueueFlushCommand.d.ts +18 -0
  22. package/dist/Console/Commands/QueueFlushCommand.d.ts.map +1 -0
  23. package/dist/Console/Commands/QueueFlushCommand.js +44 -0
  24. package/dist/Console/Commands/QueueFlushCommand.js.map +1 -0
  25. package/dist/Console/Commands/QueueForgetCommand.d.ts +18 -0
  26. package/dist/Console/Commands/QueueForgetCommand.d.ts.map +1 -0
  27. package/dist/Console/Commands/QueueForgetCommand.js +48 -0
  28. package/dist/Console/Commands/QueueForgetCommand.js.map +1 -0
  29. package/dist/Console/Commands/QueueMonitorCommand.d.ts +16 -0
  30. package/dist/Console/Commands/QueueMonitorCommand.d.ts.map +1 -0
  31. package/dist/Console/Commands/QueueMonitorCommand.js +42 -0
  32. package/dist/Console/Commands/QueueMonitorCommand.js.map +1 -0
  33. package/dist/Console/Commands/QueuePruneBatchesCommand.d.ts +16 -0
  34. package/dist/Console/Commands/QueuePruneBatchesCommand.d.ts.map +1 -0
  35. package/dist/Console/Commands/QueuePruneBatchesCommand.js +44 -0
  36. package/dist/Console/Commands/QueuePruneBatchesCommand.js.map +1 -0
  37. package/dist/Console/Commands/QueuePruneFailedCommand.d.ts +18 -0
  38. package/dist/Console/Commands/QueuePruneFailedCommand.d.ts.map +1 -0
  39. package/dist/Console/Commands/QueuePruneFailedCommand.js +39 -0
  40. package/dist/Console/Commands/QueuePruneFailedCommand.js.map +1 -0
  41. package/dist/Console/Commands/QueueRestartCommand.d.ts +16 -0
  42. package/dist/Console/Commands/QueueRestartCommand.d.ts.map +1 -0
  43. package/dist/Console/Commands/QueueRestartCommand.js +34 -0
  44. package/dist/Console/Commands/QueueRestartCommand.js.map +1 -0
  45. package/dist/Console/Commands/QueueRetryCommand.d.ts +20 -0
  46. package/dist/Console/Commands/QueueRetryCommand.d.ts.map +1 -0
  47. package/dist/Console/Commands/QueueRetryCommand.js +77 -0
  48. package/dist/Console/Commands/QueueRetryCommand.js.map +1 -0
  49. package/dist/Console/Commands/QueueTableCommand.d.ts +17 -0
  50. package/dist/Console/Commands/QueueTableCommand.d.ts.map +1 -0
  51. package/dist/Console/Commands/QueueTableCommand.js +89 -0
  52. package/dist/Console/Commands/QueueTableCommand.js.map +1 -0
  53. package/dist/Console/Commands/QueueWorkCommand.d.ts +16 -0
  54. package/dist/Console/Commands/QueueWorkCommand.d.ts.map +1 -0
  55. package/dist/Console/Commands/QueueWorkCommand.js +51 -0
  56. package/dist/Console/Commands/QueueWorkCommand.js.map +1 -0
  57. package/dist/Facades/Bus.d.ts +62 -0
  58. package/dist/Facades/Bus.d.ts.map +1 -0
  59. package/dist/Facades/Bus.js +102 -0
  60. package/dist/Facades/Bus.js.map +1 -0
  61. package/dist/Facades/Queue.d.ts +42 -0
  62. package/dist/Facades/Queue.d.ts.map +1 -0
  63. package/dist/Facades/Queue.js +71 -0
  64. package/dist/Facades/Queue.js.map +1 -0
  65. package/dist/Facades/index.d.ts +2 -0
  66. package/dist/Facades/index.d.ts.map +1 -1
  67. package/dist/Facades/index.js +5 -1
  68. package/dist/Facades/index.js.map +1 -1
  69. package/dist/Queue/Batching/Batch.d.ts +86 -0
  70. package/dist/Queue/Batching/Batch.d.ts.map +1 -0
  71. package/dist/Queue/Batching/Batch.js +170 -0
  72. package/dist/Queue/Batching/Batch.js.map +1 -0
  73. package/dist/Queue/Batching/PendingBatch.d.ts +72 -0
  74. package/dist/Queue/Batching/PendingBatch.d.ts.map +1 -0
  75. package/dist/Queue/Batching/PendingBatch.js +122 -0
  76. package/dist/Queue/Batching/PendingBatch.js.map +1 -0
  77. package/dist/Queue/Batching/index.d.ts +3 -0
  78. package/dist/Queue/Batching/index.d.ts.map +1 -0
  79. package/dist/Queue/Batching/index.js +8 -0
  80. package/dist/Queue/Batching/index.js.map +1 -0
  81. package/dist/Queue/Concerns/Dispatchable.d.ts +36 -0
  82. package/dist/Queue/Concerns/Dispatchable.d.ts.map +1 -0
  83. package/dist/Queue/Concerns/Dispatchable.js +102 -0
  84. package/dist/Queue/Concerns/Dispatchable.js.map +1 -0
  85. package/dist/Queue/Contracts/QueueDriver.d.ts +67 -0
  86. package/dist/Queue/Contracts/QueueDriver.d.ts.map +1 -0
  87. package/dist/Queue/Contracts/QueueDriver.js +9 -0
  88. package/dist/Queue/Contracts/QueueDriver.js.map +1 -0
  89. package/dist/Queue/Contracts/QueueableJob.d.ts +74 -0
  90. package/dist/Queue/Contracts/QueueableJob.d.ts.map +1 -0
  91. package/dist/Queue/Contracts/QueueableJob.js +9 -0
  92. package/dist/Queue/Contracts/QueueableJob.js.map +1 -0
  93. package/dist/Queue/Contracts/ShouldBeUnique.d.ts +43 -0
  94. package/dist/Queue/Contracts/ShouldBeUnique.d.ts.map +1 -0
  95. package/dist/Queue/Contracts/ShouldBeUnique.js +12 -0
  96. package/dist/Queue/Contracts/ShouldBeUnique.js.map +1 -0
  97. package/dist/Queue/Drivers/DatabaseDriver.d.ts +39 -0
  98. package/dist/Queue/Drivers/DatabaseDriver.d.ts.map +1 -0
  99. package/dist/Queue/Drivers/DatabaseDriver.js +176 -0
  100. package/dist/Queue/Drivers/DatabaseDriver.js.map +1 -0
  101. package/dist/Queue/Drivers/NullDriver.d.ts +30 -0
  102. package/dist/Queue/Drivers/NullDriver.d.ts.map +1 -0
  103. package/dist/Queue/Drivers/NullDriver.js +57 -0
  104. package/dist/Queue/Drivers/NullDriver.js.map +1 -0
  105. package/dist/Queue/Drivers/SyncDriver.d.ts +29 -0
  106. package/dist/Queue/Drivers/SyncDriver.d.ts.map +1 -0
  107. package/dist/Queue/Drivers/SyncDriver.js +67 -0
  108. package/dist/Queue/Drivers/SyncDriver.js.map +1 -0
  109. package/dist/Queue/Drivers/index.d.ts +4 -0
  110. package/dist/Queue/Drivers/index.d.ts.map +1 -0
  111. package/dist/Queue/Drivers/index.js +10 -0
  112. package/dist/Queue/Drivers/index.js.map +1 -0
  113. package/dist/Queue/Events/JobExceptionOccurred.d.ts +13 -0
  114. package/dist/Queue/Events/JobExceptionOccurred.d.ts.map +1 -0
  115. package/dist/Queue/Events/JobExceptionOccurred.js +20 -0
  116. package/dist/Queue/Events/JobExceptionOccurred.js.map +1 -0
  117. package/dist/Queue/Events/JobFailed.d.ts +13 -0
  118. package/dist/Queue/Events/JobFailed.d.ts.map +1 -0
  119. package/dist/Queue/Events/JobFailed.js +20 -0
  120. package/dist/Queue/Events/JobFailed.js.map +1 -0
  121. package/dist/Queue/Events/JobProcessed.d.ts +12 -0
  122. package/dist/Queue/Events/JobProcessed.d.ts.map +1 -0
  123. package/dist/Queue/Events/JobProcessed.js +18 -0
  124. package/dist/Queue/Events/JobProcessed.js.map +1 -0
  125. package/dist/Queue/Events/JobProcessing.d.ts +12 -0
  126. package/dist/Queue/Events/JobProcessing.d.ts.map +1 -0
  127. package/dist/Queue/Events/JobProcessing.js +18 -0
  128. package/dist/Queue/Events/JobProcessing.js.map +1 -0
  129. package/dist/Queue/Events/JobQueued.d.ts +14 -0
  130. package/dist/Queue/Events/JobQueued.d.ts.map +1 -0
  131. package/dist/Queue/Events/JobQueued.js +22 -0
  132. package/dist/Queue/Events/JobQueued.js.map +1 -0
  133. package/dist/Queue/Events/JobRetryRequested.d.ts +12 -0
  134. package/dist/Queue/Events/JobRetryRequested.d.ts.map +1 -0
  135. package/dist/Queue/Events/JobRetryRequested.js +20 -0
  136. package/dist/Queue/Events/JobRetryRequested.js.map +1 -0
  137. package/dist/Queue/Events/WorkerStopping.d.ts +11 -0
  138. package/dist/Queue/Events/WorkerStopping.d.ts.map +1 -0
  139. package/dist/Queue/Events/WorkerStopping.js +18 -0
  140. package/dist/Queue/Events/WorkerStopping.js.map +1 -0
  141. package/dist/Queue/Events/index.d.ts +8 -0
  142. package/dist/Queue/Events/index.d.ts.map +1 -0
  143. package/dist/Queue/Events/index.js +18 -0
  144. package/dist/Queue/Events/index.js.map +1 -0
  145. package/dist/Queue/Failed/DatabaseFailedJobProvider.d.ts +33 -0
  146. package/dist/Queue/Failed/DatabaseFailedJobProvider.d.ts.map +1 -0
  147. package/dist/Queue/Failed/DatabaseFailedJobProvider.js +100 -0
  148. package/dist/Queue/Failed/DatabaseFailedJobProvider.js.map +1 -0
  149. package/dist/Queue/Failed/FailedJobProvider.d.ts +42 -0
  150. package/dist/Queue/Failed/FailedJobProvider.d.ts.map +1 -0
  151. package/dist/Queue/Failed/FailedJobProvider.js +9 -0
  152. package/dist/Queue/Failed/FailedJobProvider.js.map +1 -0
  153. package/dist/Queue/Job.d.ts +194 -0
  154. package/dist/Queue/Job.d.ts.map +1 -0
  155. package/dist/Queue/Job.js +286 -0
  156. package/dist/Queue/Job.js.map +1 -0
  157. package/dist/Queue/JobPayload.d.ts +37 -0
  158. package/dist/Queue/JobPayload.d.ts.map +1 -0
  159. package/dist/Queue/JobPayload.js +46 -0
  160. package/dist/Queue/JobPayload.js.map +1 -0
  161. package/dist/Queue/Middleware/JobMiddleware.d.ts +29 -0
  162. package/dist/Queue/Middleware/JobMiddleware.d.ts.map +1 -0
  163. package/dist/Queue/Middleware/JobMiddleware.js +21 -0
  164. package/dist/Queue/Middleware/JobMiddleware.js.map +1 -0
  165. package/dist/Queue/Middleware/RateLimited.d.ts +56 -0
  166. package/dist/Queue/Middleware/RateLimited.d.ts.map +1 -0
  167. package/dist/Queue/Middleware/RateLimited.js +83 -0
  168. package/dist/Queue/Middleware/RateLimited.js.map +1 -0
  169. package/dist/Queue/Middleware/ThrottlesExceptions.d.ts +71 -0
  170. package/dist/Queue/Middleware/ThrottlesExceptions.d.ts.map +1 -0
  171. package/dist/Queue/Middleware/ThrottlesExceptions.js +119 -0
  172. package/dist/Queue/Middleware/ThrottlesExceptions.js.map +1 -0
  173. package/dist/Queue/Middleware/WithoutOverlapping.d.ts +64 -0
  174. package/dist/Queue/Middleware/WithoutOverlapping.d.ts.map +1 -0
  175. package/dist/Queue/Middleware/WithoutOverlapping.js +103 -0
  176. package/dist/Queue/Middleware/WithoutOverlapping.js.map +1 -0
  177. package/dist/Queue/Middleware/index.d.ts +5 -0
  178. package/dist/Queue/Middleware/index.d.ts.map +1 -0
  179. package/dist/Queue/Middleware/index.js +10 -0
  180. package/dist/Queue/Middleware/index.js.map +1 -0
  181. package/dist/Queue/PendingChain.d.ts +63 -0
  182. package/dist/Queue/PendingChain.d.ts.map +1 -0
  183. package/dist/Queue/PendingChain.js +111 -0
  184. package/dist/Queue/PendingChain.js.map +1 -0
  185. package/dist/Queue/PendingDispatch.d.ts +66 -0
  186. package/dist/Queue/PendingDispatch.d.ts.map +1 -0
  187. package/dist/Queue/PendingDispatch.js +101 -0
  188. package/dist/Queue/PendingDispatch.js.map +1 -0
  189. package/dist/Queue/QueueManager.d.ts +151 -0
  190. package/dist/Queue/QueueManager.d.ts.map +1 -0
  191. package/dist/Queue/QueueManager.js +227 -0
  192. package/dist/Queue/QueueManager.js.map +1 -0
  193. package/dist/Queue/QueueServiceProvider.d.ts +19 -0
  194. package/dist/Queue/QueueServiceProvider.d.ts.map +1 -0
  195. package/dist/Queue/QueueServiceProvider.js +75 -0
  196. package/dist/Queue/QueueServiceProvider.js.map +1 -0
  197. package/dist/Queue/Workers/Worker.d.ts +99 -0
  198. package/dist/Queue/Workers/Worker.d.ts.map +1 -0
  199. package/dist/Queue/Workers/Worker.js +324 -0
  200. package/dist/Queue/Workers/Worker.js.map +1 -0
  201. package/dist/Queue/Workers/WorkerOptions.d.ts +62 -0
  202. package/dist/Queue/Workers/WorkerOptions.d.ts.map +1 -0
  203. package/dist/Queue/Workers/WorkerOptions.js +23 -0
  204. package/dist/Queue/Workers/WorkerOptions.js.map +1 -0
  205. package/dist/Queue/index.d.ts +41 -0
  206. package/dist/Queue/index.d.ts.map +1 -0
  207. package/dist/Queue/index.js +67 -0
  208. package/dist/Queue/index.js.map +1 -0
  209. package/dist/index.d.ts +50 -0
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +92 -2
  212. package/dist/index.js.map +1 -1
  213. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * QueueWorkCommand
4
+ *
5
+ * Start processing jobs on the queue as a daemon.
6
+ * Mirrors Laravel's `php artisan queue:work`.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.QueueWorkCommand = void 0;
10
+ const Command_1 = require("../Command");
11
+ class QueueWorkCommand extends Command_1.Command {
12
+ app;
13
+ signature = 'queue:work [connection]';
14
+ description = 'Start processing jobs on the queue as a daemon';
15
+ constructor(app) {
16
+ super();
17
+ this.app = app;
18
+ }
19
+ async handle(args, options) {
20
+ const manager = this.app.make('queue');
21
+ const worker = this.app.make('queue.worker');
22
+ const connection = args[0] || manager.getDefaultConnection();
23
+ const queues = options.queue || 'default';
24
+ const once = options.once === true || options.once === 'true';
25
+ this.info(`[${new Date().toISOString()}] Processing jobs from the [${queues}] queue(s) on [${connection}] connection.`);
26
+ const workerOptions = {
27
+ name: options.name || 'default',
28
+ sleep: Number(options.sleep) || 3,
29
+ tries: Number(options.tries) || 1,
30
+ timeout: Number(options.timeout) || 60,
31
+ memory: Number(options.memory) || 128,
32
+ maxJobs: Number(options['max-jobs']) || 0,
33
+ maxTime: Number(options['max-time']) || 0,
34
+ force: options.force === true || options.force === 'true',
35
+ stopWhenEmpty: options['stop-when-empty'] === true || options['stop-when-empty'] === 'true',
36
+ backoff: Number(options.backoff) || 0,
37
+ rest: Number(options.rest) || 0,
38
+ };
39
+ if (once) {
40
+ const processed = await worker.runOnce(connection, queues, workerOptions);
41
+ if (!processed) {
42
+ this.comment('No jobs available.');
43
+ }
44
+ return;
45
+ }
46
+ await worker.daemon(connection, queues, workerOptions);
47
+ this.info('Worker stopped.');
48
+ }
49
+ }
50
+ exports.QueueWorkCommand = QueueWorkCommand;
51
+ //# sourceMappingURL=QueueWorkCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueWorkCommand.js","sourceRoot":"","sources":["../../../src/Console/Commands/QueueWorkCommand.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wCAAqD;AAKrD,MAAa,gBAAiB,SAAQ,iBAAO;IAIrB;IAHtB,SAAS,GAAG,yBAAyB,CAAC;IACtC,WAAW,GAAG,gDAAgD,CAAC;IAE/D,YAAsB,GAAgB;QACpC,KAAK,EAAE,CAAC;QADY,QAAG,GAAH,GAAG,CAAa;IAEtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAc,EAAE,OAAuB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAe,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,cAAc,CAAC,CAAC;QAErD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAI,OAAO,CAAC,KAAgB,IAAI,SAAS,CAAC;QACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,+BAA+B,MAAM,kBAAkB,UAAU,eAAe,CAAC,CAAC;QAExH,MAAM,aAAa,GAAG;YACpB,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,SAAS;YAC3C,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;YACtC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YACzC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;YACzD,aAAa,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,MAAM;YAC3F,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACrC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAChC,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;CACF;AA3CD,4CA2CC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Bus Facade
3
+ *
4
+ * Provides static access to the command bus for dispatching jobs,
5
+ * chains, and batches.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Dispatch a job
10
+ * await Bus.dispatch(new ProcessPodcast(podcastId));
11
+ *
12
+ * // Dispatch synchronously
13
+ * await Bus.dispatchSync(new ProcessPodcast(podcastId));
14
+ *
15
+ * // Chain jobs
16
+ * await Bus.chain([
17
+ * new ProcessPodcast(id),
18
+ * new OptimizePodcast(id),
19
+ * new ReleasePodcast(id),
20
+ * ]).dispatch();
21
+ *
22
+ * // Batch jobs
23
+ * const batch = await Bus.batch([
24
+ * new ProcessPodcast(1),
25
+ * new ProcessPodcast(2),
26
+ * ])
27
+ * .then((batch) => console.log('Done'))
28
+ * .catch((batch, error) => console.error('Failed'))
29
+ * .dispatch();
30
+ * ```
31
+ */
32
+ import { Facade } from '../Support/Facade';
33
+ import type { QueueManager } from '../Queue/QueueManager';
34
+ import type { Job } from '../Queue/Job';
35
+ import { PendingChain } from '../Queue/PendingChain';
36
+ import { PendingBatch } from '../Queue/Batching/PendingBatch';
37
+ declare class BusFacadeClass extends Facade {
38
+ protected static getFacadeAccessor(): string;
39
+ /**
40
+ * Dispatch a job to the queue
41
+ */
42
+ static dispatch(job: Job): Promise<string>;
43
+ /**
44
+ * Dispatch a job synchronously
45
+ */
46
+ static dispatchSync(job: Job): Promise<void>;
47
+ /**
48
+ * Dispatch a job immediately (alias for dispatchSync)
49
+ */
50
+ static dispatchNow(job: Job): Promise<void>;
51
+ /**
52
+ * Create a new chain of queueable jobs
53
+ */
54
+ static chain(jobs: Job[]): PendingChain;
55
+ /**
56
+ * Create a new batch of queueable jobs
57
+ */
58
+ static batch(jobs: Job[]): PendingBatch;
59
+ }
60
+ export declare const Bus: typeof BusFacadeClass & QueueManager;
61
+ export {};
62
+ //# sourceMappingURL=Bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bus.d.ts","sourceRoot":"","sources":["../../src/Facades/Bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,cAAM,cAAe,SAAQ,MAAM;IACjC,SAAS,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAI5C;;OAEG;WACU,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD;;OAEG;WACU,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;WACU,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY;IAKvC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY;CAIxC;AAED,eAAO,MAAM,GAAG,EAyBC,OAAO,cAAc,GAAG,YAAY,CAAC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * Bus Facade
4
+ *
5
+ * Provides static access to the command bus for dispatching jobs,
6
+ * chains, and batches.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Dispatch a job
11
+ * await Bus.dispatch(new ProcessPodcast(podcastId));
12
+ *
13
+ * // Dispatch synchronously
14
+ * await Bus.dispatchSync(new ProcessPodcast(podcastId));
15
+ *
16
+ * // Chain jobs
17
+ * await Bus.chain([
18
+ * new ProcessPodcast(id),
19
+ * new OptimizePodcast(id),
20
+ * new ReleasePodcast(id),
21
+ * ]).dispatch();
22
+ *
23
+ * // Batch jobs
24
+ * const batch = await Bus.batch([
25
+ * new ProcessPodcast(1),
26
+ * new ProcessPodcast(2),
27
+ * ])
28
+ * .then((batch) => console.log('Done'))
29
+ * .catch((batch, error) => console.error('Failed'))
30
+ * .dispatch();
31
+ * ```
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.Bus = void 0;
35
+ const Facade_1 = require("../Support/Facade");
36
+ const PendingChain_1 = require("../Queue/PendingChain");
37
+ const PendingBatch_1 = require("../Queue/Batching/PendingBatch");
38
+ class BusFacadeClass extends Facade_1.Facade {
39
+ static getFacadeAccessor() {
40
+ return 'queue';
41
+ }
42
+ /**
43
+ * Dispatch a job to the queue
44
+ */
45
+ static async dispatch(job) {
46
+ const manager = this.getFacadeRoot();
47
+ return manager.dispatch(job);
48
+ }
49
+ /**
50
+ * Dispatch a job synchronously
51
+ */
52
+ static async dispatchSync(job) {
53
+ const manager = this.getFacadeRoot();
54
+ return manager.dispatchSync(job);
55
+ }
56
+ /**
57
+ * Dispatch a job immediately (alias for dispatchSync)
58
+ */
59
+ static async dispatchNow(job) {
60
+ return this.dispatchSync(job);
61
+ }
62
+ /**
63
+ * Create a new chain of queueable jobs
64
+ */
65
+ static chain(jobs) {
66
+ const manager = this.getFacadeRoot();
67
+ return new PendingChain_1.PendingChain(manager, jobs);
68
+ }
69
+ /**
70
+ * Create a new batch of queueable jobs
71
+ */
72
+ static batch(jobs) {
73
+ const app = this.getFacadeApplication();
74
+ return new PendingBatch_1.PendingBatch(app, jobs);
75
+ }
76
+ }
77
+ exports.Bus = new Proxy(BusFacadeClass, {
78
+ get(target, prop) {
79
+ if (prop in target) {
80
+ const value = target[prop];
81
+ if (typeof value === 'function') {
82
+ return value.bind(target);
83
+ }
84
+ return value;
85
+ }
86
+ try {
87
+ const root = target.getFacadeRoot();
88
+ if (root && prop in root) {
89
+ const value = root[prop];
90
+ if (typeof value === 'function') {
91
+ return (...args) => value.apply(root, args);
92
+ }
93
+ return value;
94
+ }
95
+ }
96
+ catch (error) {
97
+ // Facade root not available yet
98
+ }
99
+ return undefined;
100
+ },
101
+ });
102
+ //# sourceMappingURL=Bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bus.js","sourceRoot":"","sources":["../../src/Facades/Bus.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAEH,8CAA2C;AAG3C,wDAAqD;AACrD,iEAA8D;AAE9D,MAAM,cAAe,SAAQ,eAAM;IACvB,MAAM,CAAC,iBAAiB;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAQ;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAkB,CAAC;QACrD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAQ;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAkB,CAAC;QACrD,OAAO,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAQ;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAW;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAkB,CAAC;QACrD,OAAO,IAAI,2BAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAW;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACxC,OAAO,IAAI,2BAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF;AAEY,QAAA,GAAG,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;IAC3C,GAAG,CAAC,MAAM,EAAE,IAAI;QACd,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,GAAI,MAAc,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAI,MAAc,CAAC,aAAa,EAAkB,CAAC;YAC7D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAI,IAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gCAAgC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAoD,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Queue Facade
3
+ *
4
+ * Provides static access to the queue manager for dispatching
5
+ * and managing queued jobs.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Push a job onto the queue
10
+ * await Queue.push(new ProcessPodcast(podcastId));
11
+ *
12
+ * // Push onto a specific queue
13
+ * await Queue.pushOn('high-priority', new ProcessPodcast(podcastId));
14
+ *
15
+ * // Push with a delay
16
+ * await Queue.later(60, new ProcessPodcast(podcastId));
17
+ *
18
+ * // Get queue size
19
+ * const size = await Queue.size();
20
+ *
21
+ * // Event hooks
22
+ * Queue.before((connectionName, job) => {
23
+ * console.log('Processing:', job.displayName());
24
+ * });
25
+ *
26
+ * Queue.after((connectionName, job) => {
27
+ * console.log('Processed:', job.displayName());
28
+ * });
29
+ *
30
+ * Queue.failing((connectionName, job, error) => {
31
+ * console.error('Failed:', job.displayName(), error);
32
+ * });
33
+ * ```
34
+ */
35
+ import { Facade } from '../Support/Facade';
36
+ import type { QueueManager } from '../Queue/QueueManager';
37
+ declare class QueueFacadeClass extends Facade {
38
+ protected static getFacadeAccessor(): string;
39
+ }
40
+ export declare const Queue: typeof QueueFacadeClass & QueueManager;
41
+ export {};
42
+ //# sourceMappingURL=Queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../src/Facades/Queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,cAAM,gBAAiB,SAAQ,MAAM;IACnC,SAAS,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM;CAG7C;AAED,eAAO,MAAM,KAAK,EA2BD,OAAO,gBAAgB,GAAG,YAAY,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Queue Facade
4
+ *
5
+ * Provides static access to the queue manager for dispatching
6
+ * and managing queued jobs.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Push a job onto the queue
11
+ * await Queue.push(new ProcessPodcast(podcastId));
12
+ *
13
+ * // Push onto a specific queue
14
+ * await Queue.pushOn('high-priority', new ProcessPodcast(podcastId));
15
+ *
16
+ * // Push with a delay
17
+ * await Queue.later(60, new ProcessPodcast(podcastId));
18
+ *
19
+ * // Get queue size
20
+ * const size = await Queue.size();
21
+ *
22
+ * // Event hooks
23
+ * Queue.before((connectionName, job) => {
24
+ * console.log('Processing:', job.displayName());
25
+ * });
26
+ *
27
+ * Queue.after((connectionName, job) => {
28
+ * console.log('Processed:', job.displayName());
29
+ * });
30
+ *
31
+ * Queue.failing((connectionName, job, error) => {
32
+ * console.error('Failed:', job.displayName(), error);
33
+ * });
34
+ * ```
35
+ */
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Queue = void 0;
38
+ const Facade_1 = require("../Support/Facade");
39
+ class QueueFacadeClass extends Facade_1.Facade {
40
+ static getFacadeAccessor() {
41
+ return 'queue';
42
+ }
43
+ }
44
+ exports.Queue = new Proxy(QueueFacadeClass, {
45
+ get(target, prop) {
46
+ // First check if it's a static method on the facade class itself
47
+ if (prop in target) {
48
+ const value = target[prop];
49
+ if (typeof value === 'function') {
50
+ return value.bind(target);
51
+ }
52
+ return value;
53
+ }
54
+ // Then try to get from the facade root (the QueueManager instance)
55
+ try {
56
+ const root = target.getFacadeRoot();
57
+ if (root && prop in root) {
58
+ const value = root[prop];
59
+ if (typeof value === 'function') {
60
+ return (...args) => value.apply(root, args);
61
+ }
62
+ return value;
63
+ }
64
+ }
65
+ catch (error) {
66
+ // Facade root not available yet
67
+ }
68
+ return undefined;
69
+ },
70
+ });
71
+ //# sourceMappingURL=Queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../src/Facades/Queue.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;;;AAEH,8CAA2C;AAG3C,MAAM,gBAAiB,SAAQ,eAAM;IACzB,MAAM,CAAC,iBAAiB;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAEY,QAAA,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,EAAE;IAC/C,GAAG,CAAC,MAAM,EAAE,IAAI;QACd,iEAAiE;QACjE,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,GAAI,MAAc,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,GAAI,MAAc,CAAC,aAAa,EAAkB,CAAC;YAC7D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAI,IAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gCAAgC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAsD,CAAC"}
@@ -7,4 +7,6 @@ export { Config } from './Config';
7
7
  export { DB } from './DB';
8
8
  export { Route } from './Route';
9
9
  export { Event, EventFake } from './Event';
10
+ export { Queue } from './Queue';
11
+ export { Bus } from './Bus';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Facades/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Facades/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Export all facades for easy importing
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.EventFake = exports.Event = exports.Route = exports.DB = exports.Config = void 0;
8
+ exports.Bus = exports.Queue = exports.EventFake = exports.Event = exports.Route = exports.DB = exports.Config = void 0;
9
9
  var Config_1 = require("./Config");
10
10
  Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return Config_1.Config; } });
11
11
  var DB_1 = require("./DB");
@@ -15,4 +15,8 @@ Object.defineProperty(exports, "Route", { enumerable: true, get: function () { r
15
15
  var Event_1 = require("./Event");
16
16
  Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return Event_1.Event; } });
17
17
  Object.defineProperty(exports, "EventFake", { enumerable: true, get: function () { return Event_1.EventFake; } });
18
+ var Queue_1 = require("./Queue");
19
+ Object.defineProperty(exports, "Queue", { enumerable: true, get: function () { return Queue_1.Queue; } });
20
+ var Bus_1 = require("./Bus");
21
+ Object.defineProperty(exports, "Bus", { enumerable: true, get: function () { return Bus_1.Bus; } });
18
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Facades/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2BAA0B;AAAjB,wFAAA,EAAE,OAAA;AACX,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iCAA2C;AAAlC,8FAAA,KAAK,OAAA;AAAE,kGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Facades/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2BAA0B;AAAjB,wFAAA,EAAE,OAAA;AACX,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iCAA2C;AAAlC,8FAAA,KAAK,OAAA;AAAE,kGAAA,SAAS,OAAA;AACzB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6BAA4B;AAAnB,0FAAA,GAAG,OAAA"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Batch
3
+ *
4
+ * Represents a batch of jobs being processed.
5
+ * Tracks progress and fires callbacks on completion/failure.
6
+ *
7
+ * Mirrors Laravel's Illuminate\Bus\Batch.
8
+ */
9
+ import type { QueueManager } from '../QueueManager';
10
+ export interface BatchOptions {
11
+ thenCallbacks: Array<(batch: Batch) => void | Promise<void>>;
12
+ catchCallbacks: Array<(batch: Batch, error: Error) => void | Promise<void>>;
13
+ finallyCallbacks: Array<(batch: Batch) => void | Promise<void>>;
14
+ allowFailures: boolean;
15
+ }
16
+ export declare class Batch {
17
+ protected manager: QueueManager;
18
+ readonly name: string;
19
+ readonly id: string;
20
+ readonly createdAt: Date;
21
+ protected _totalJobs: number;
22
+ protected _pendingJobs: number;
23
+ protected _failedJobs: number;
24
+ protected _failedJobIds: string[];
25
+ protected _cancelled: boolean;
26
+ protected _finishedAt: Date | null;
27
+ protected _options: BatchOptions;
28
+ constructor(manager: QueueManager, name: string, totalJobs: number, options: BatchOptions);
29
+ /**
30
+ * Get the total number of jobs in the batch
31
+ */
32
+ get totalJobs(): number;
33
+ /**
34
+ * Get the number of pending jobs
35
+ */
36
+ get pendingJobs(): number;
37
+ /**
38
+ * Get the number of failed jobs
39
+ */
40
+ get failedJobs(): number;
41
+ /**
42
+ * Get the number of processed jobs
43
+ */
44
+ get processedJobs(): number;
45
+ /**
46
+ * Get the batch progress percentage (0-100)
47
+ */
48
+ progress(): number;
49
+ /**
50
+ * Whether the batch has finished
51
+ */
52
+ finished(): boolean;
53
+ /**
54
+ * Whether the batch has been cancelled
55
+ */
56
+ cancelled(): boolean;
57
+ /**
58
+ * Record a successful job completion
59
+ */
60
+ recordSuccessfulJob(jobId: string): Promise<void>;
61
+ /**
62
+ * Record a failed job
63
+ */
64
+ recordFailedJob(jobId: string, error: Error): Promise<void>;
65
+ /**
66
+ * Cancel the batch
67
+ */
68
+ cancel(): void;
69
+ /**
70
+ * Fire the then callbacks
71
+ */
72
+ protected fireThenCallbacks(): Promise<void>;
73
+ /**
74
+ * Fire the catch callbacks
75
+ */
76
+ protected fireCatchCallbacks(error: Error): Promise<void>;
77
+ /**
78
+ * Fire the finally callbacks
79
+ */
80
+ protected fireFinallyCallbacks(): Promise<void>;
81
+ /**
82
+ * Convert to a plain object for inspection
83
+ */
84
+ toJSON(): Record<string, any>;
85
+ }
86
+ //# sourceMappingURL=Batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Batch.d.ts","sourceRoot":"","sources":["../../../src/Queue/Batching/Batch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,cAAc,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,gBAAgB,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,KAAK;IAad,SAAS,CAAC,OAAO,EAAE,YAAY;aACf,IAAI,EAAE,MAAM;IAb9B,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,SAAS,EAAE,IAAI,CAAC;IAEhC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAK;IAClC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IACvC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAS;IACtC,SAAS,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAQ;IAC1C,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;gBAGrB,OAAO,EAAE,YAAY,EACf,IAAI,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY;IASvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,QAAQ,IAAI,MAAM;IAKlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjE;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlD;;OAEG;cACa,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrD;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAc9B"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Batch
4
+ *
5
+ * Represents a batch of jobs being processed.
6
+ * Tracks progress and fires callbacks on completion/failure.
7
+ *
8
+ * Mirrors Laravel's Illuminate\Bus\Batch.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Batch = void 0;
12
+ const crypto_1 = require("crypto");
13
+ class Batch {
14
+ manager;
15
+ name;
16
+ id;
17
+ createdAt;
18
+ _totalJobs;
19
+ _pendingJobs;
20
+ _failedJobs = 0;
21
+ _failedJobIds = [];
22
+ _cancelled = false;
23
+ _finishedAt = null;
24
+ _options;
25
+ constructor(manager, name, totalJobs, options) {
26
+ this.manager = manager;
27
+ this.name = name;
28
+ this.id = (0, crypto_1.randomUUID)();
29
+ this.createdAt = new Date();
30
+ this._totalJobs = totalJobs;
31
+ this._pendingJobs = totalJobs;
32
+ this._options = options;
33
+ }
34
+ /**
35
+ * Get the total number of jobs in the batch
36
+ */
37
+ get totalJobs() {
38
+ return this._totalJobs;
39
+ }
40
+ /**
41
+ * Get the number of pending jobs
42
+ */
43
+ get pendingJobs() {
44
+ return this._pendingJobs;
45
+ }
46
+ /**
47
+ * Get the number of failed jobs
48
+ */
49
+ get failedJobs() {
50
+ return this._failedJobs;
51
+ }
52
+ /**
53
+ * Get the number of processed jobs
54
+ */
55
+ get processedJobs() {
56
+ return this._totalJobs - this._pendingJobs;
57
+ }
58
+ /**
59
+ * Get the batch progress percentage (0-100)
60
+ */
61
+ progress() {
62
+ if (this._totalJobs === 0)
63
+ return 100;
64
+ return Math.round((this.processedJobs / this._totalJobs) * 100);
65
+ }
66
+ /**
67
+ * Whether the batch has finished
68
+ */
69
+ finished() {
70
+ return this._pendingJobs === 0;
71
+ }
72
+ /**
73
+ * Whether the batch has been cancelled
74
+ */
75
+ cancelled() {
76
+ return this._cancelled;
77
+ }
78
+ /**
79
+ * Record a successful job completion
80
+ */
81
+ async recordSuccessfulJob(jobId) {
82
+ this._pendingJobs = Math.max(0, this._pendingJobs - 1);
83
+ if (this.finished()) {
84
+ await this.fireThenCallbacks();
85
+ await this.fireFinallyCallbacks();
86
+ this._finishedAt = new Date();
87
+ }
88
+ }
89
+ /**
90
+ * Record a failed job
91
+ */
92
+ async recordFailedJob(jobId, error) {
93
+ this._failedJobs++;
94
+ this._failedJobIds.push(jobId);
95
+ this._pendingJobs = Math.max(0, this._pendingJobs - 1);
96
+ // Fire catch callbacks
97
+ await this.fireCatchCallbacks(error);
98
+ if (!this._options.allowFailures) {
99
+ this.cancel();
100
+ }
101
+ if (this.finished()) {
102
+ await this.fireFinallyCallbacks();
103
+ this._finishedAt = new Date();
104
+ }
105
+ }
106
+ /**
107
+ * Cancel the batch
108
+ */
109
+ cancel() {
110
+ this._cancelled = true;
111
+ }
112
+ /**
113
+ * Fire the then callbacks
114
+ */
115
+ async fireThenCallbacks() {
116
+ for (const callback of this._options.thenCallbacks) {
117
+ try {
118
+ await callback(this);
119
+ }
120
+ catch (error) {
121
+ console.error('[Queue] Error in batch then callback:', error);
122
+ }
123
+ }
124
+ }
125
+ /**
126
+ * Fire the catch callbacks
127
+ */
128
+ async fireCatchCallbacks(error) {
129
+ for (const callback of this._options.catchCallbacks) {
130
+ try {
131
+ await callback(this, error);
132
+ }
133
+ catch (callbackError) {
134
+ console.error('[Queue] Error in batch catch callback:', callbackError);
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Fire the finally callbacks
140
+ */
141
+ async fireFinallyCallbacks() {
142
+ for (const callback of this._options.finallyCallbacks) {
143
+ try {
144
+ await callback(this);
145
+ }
146
+ catch (error) {
147
+ console.error('[Queue] Error in batch finally callback:', error);
148
+ }
149
+ }
150
+ }
151
+ /**
152
+ * Convert to a plain object for inspection
153
+ */
154
+ toJSON() {
155
+ return {
156
+ id: this.id,
157
+ name: this.name,
158
+ totalJobs: this._totalJobs,
159
+ pendingJobs: this._pendingJobs,
160
+ failedJobs: this._failedJobs,
161
+ processedJobs: this.processedJobs,
162
+ progress: this.progress(),
163
+ cancelled: this._cancelled,
164
+ createdAt: this.createdAt.toISOString(),
165
+ finishedAt: this._finishedAt?.toISOString() || null,
166
+ };
167
+ }
168
+ }
169
+ exports.Batch = Batch;
170
+ //# sourceMappingURL=Batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Batch.js","sourceRoot":"","sources":["../../../src/Queue/Batching/Batch.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,mCAAoC;AAUpC,MAAa,KAAK;IAaJ;IACM;IAbF,EAAE,CAAS;IACX,SAAS,CAAO;IAEtB,UAAU,CAAS;IACnB,YAAY,CAAS;IACrB,WAAW,GAAW,CAAC,CAAC;IACxB,aAAa,GAAa,EAAE,CAAC;IAC7B,UAAU,GAAY,KAAK,CAAC;IAC5B,WAAW,GAAgB,IAAI,CAAC;IAChC,QAAQ,CAAe;IAEjC,YACY,OAAqB,EACf,IAAY,EAC5B,SAAiB,EACjB,OAAqB;QAHX,YAAO,GAAP,OAAO,CAAc;QACf,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,EAAE,GAAG,IAAA,mBAAU,GAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,KAAa,EAAE,KAAY;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAEvD,uBAAuB;QACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB;QAC/B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,kBAAkB,CAAC,KAAY;QAC7C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,aAAa,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,oBAAoB;QAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,IAAI;SACpD,CAAC;IACJ,CAAC;CACF;AA5KD,sBA4KC"}