@monque/core 0.1.0 → 0.2.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.
package/dist/index.d.mts CHANGED
@@ -438,7 +438,7 @@ interface MonqueEventMap {
438
438
  *
439
439
  * @example
440
440
  * ```typescript
441
- * monque.worker('send-email', emailHandler, {
441
+ * monque.register('send-email', emailHandler, {
442
442
  * concurrency: 3,
443
443
  * });
444
444
  * ```
@@ -612,7 +612,7 @@ type EmailJob = {};
612
612
  * body: string
613
613
  * }
614
614
  *
615
- * monque.worker<EmailJob>('send-email', async (job) =>
615
+ * monque.register<EmailJob>('send-email', async (job) =>
616
616
  {
617
617
  * await emailService.send(job.data.to, job.data.subject, job.data.body)
618
618
  *
@@ -878,7 +878,7 @@ declare class Monque extends EventEmitter {
878
878
  * body: string;
879
879
  * }
880
880
  *
881
- * monque.worker<EmailJob>('send-email', async (job) => {
881
+ * monque.register<EmailJob>('send-email', async (job) => {
882
882
  * await emailService.send(job.data.to, job.data.subject, job.data.body);
883
883
  * });
884
884
  * ```
@@ -886,7 +886,7 @@ declare class Monque extends EventEmitter {
886
886
  * @example Worker with custom concurrency
887
887
  * ```typescript
888
888
  * // Limit to 2 concurrent video processing jobs (resource-intensive)
889
- * monque.worker('process-video', async (job) => {
889
+ * monque.register('process-video', async (job) => {
890
890
  * await videoProcessor.transcode(job.data.videoId);
891
891
  * }, { concurrency: 2 });
892
892
  * ```
@@ -894,12 +894,12 @@ declare class Monque extends EventEmitter {
894
894
  * @example Replacing an existing worker
895
895
  * ```typescript
896
896
  * // Replace the existing handler for 'send-email'
897
- * monque.worker('send-email', newEmailHandler, { replace: true });
897
+ * monque.register('send-email', newEmailHandler, { replace: true });
898
898
  * ```
899
899
  *
900
900
  * @example Worker with error handling
901
901
  * ```typescript
902
- * monque.worker('sync-user', async (job) => {
902
+ * monque.register('sync-user', async (job) => {
903
903
  * try {
904
904
  * await externalApi.syncUser(job.data.userId);
905
905
  * } catch (error) {
@@ -910,7 +910,7 @@ declare class Monque extends EventEmitter {
910
910
  * });
911
911
  * ```
912
912
  */
913
- worker<T>(name: string, handler: JobHandler<T>, options?: WorkerOptions): void;
913
+ register<T>(name: string, handler: JobHandler<T>, options?: WorkerOptions): void;
914
914
  /**
915
915
  * Start polling for and processing jobs.
916
916
  *
@@ -926,8 +926,8 @@ declare class Monque extends EventEmitter {
926
926
  * const monque = new Monque(db);
927
927
  * await monque.initialize();
928
928
  *
929
- * monque.worker('send-email', emailHandler);
930
- * monque.worker('process-order', orderHandler);
929
+ * monque.register('send-email', emailHandler);
930
+ * monque.register('process-order', orderHandler);
931
931
  *
932
932
  * monque.start(); // Begin processing jobs
933
933
  * ```
@@ -1116,6 +1116,7 @@ declare class Monque extends EventEmitter {
1116
1116
  *
1117
1117
  * Called at regular intervals (configured by `pollInterval`). For each registered worker,
1118
1118
  * attempts to acquire jobs up to the worker's available concurrency slots.
1119
+ * Aborts early if the scheduler is stopping (`isRunning` is false).
1119
1120
  *
1120
1121
  * @private
1121
1122
  */
@@ -1129,6 +1130,8 @@ declare class Monque extends EventEmitter {
1129
1130
  * - Has nextRunAt <= now
1130
1131
  * - Is not claimed by another instance (claimedBy is null/undefined)
1131
1132
  *
1133
+ * Returns `null` immediately if scheduler is stopping (`isRunning` is false).
1134
+ *
1132
1135
  * @private
1133
1136
  * @param name - The job type to acquire
1134
1137
  * @returns The acquired job with updated status, claimedBy, and heartbeat info, or `null` if no jobs available
@@ -1351,8 +1354,8 @@ declare class ShutdownTimeoutError extends MonqueError {
1351
1354
  * @example
1352
1355
  * ```typescript
1353
1356
  * try {
1354
- * monque.worker('send-email', handler1);
1355
- * monque.worker('send-email', handler2); // throws
1357
+ * monque.register('send-email', handler1);
1358
+ * monque.register('send-email', handler2); // throws
1356
1359
  * } catch (error) {
1357
1360
  * if (error instanceof WorkerRegistrationError) {
1358
1361
  * console.error('Worker already registered for:', error.jobName);
@@ -1360,7 +1363,7 @@ declare class ShutdownTimeoutError extends MonqueError {
1360
1363
  * }
1361
1364
  *
1362
1365
  * // To intentionally replace a worker:
1363
- * monque.worker('send-email', handler2, { replace: true });
1366
+ * monque.register('send-email', handler2, { replace: true });
1364
1367
  * ```
1365
1368
  */
1366
1369
  declare class WorkerRegistrationError extends MonqueError {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/jobs/types.ts","../src/jobs/guards.ts","../src/events/types.ts","../src/workers/types.ts","../src/scheduler/types.ts","../src/scheduler/monque.ts","../src/shared/errors.ts","../src/shared/utils/backoff.ts","../src/shared/utils/cron.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/jobs/types.ts","../src/jobs/guards.ts","../src/events/types.ts","../src/workers/types.ts","../src/scheduler/types.ts","../src/scheduler/monque.ts","../src/shared/errors.ts","../src/shared/utils/backoff.ts","../src/shared/utils/cron.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as WorkerRegistrationError, i as ShutdownTimeoutError, n as InvalidCronError, r as MonqueError, t as ConnectionError } from "./errors-DW20rHWR.mjs";
1
+ import { a as WorkerRegistrationError, i as ShutdownTimeoutError, n as InvalidCronError, r as MonqueError, t as ConnectionError } from "./errors-DQ2_gprw.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { EventEmitter } from "node:events";
4
4
  import { CronExpressionParser } from "cron-parser";
@@ -396,7 +396,7 @@ type EmailJob = {};
396
396
  * body: string
397
397
  * }
398
398
  *
399
- * monque.worker<EmailJob>('send-email', async (job) =>
399
+ * monque.register<EmailJob>('send-email', async (job) =>
400
400
  {
401
401
  * await emailService.send(job.data.to, job.data.subject, job.data.body)
402
402
  *
@@ -845,7 +845,7 @@ var Monque = class extends EventEmitter {
845
845
  * body: string;
846
846
  * }
847
847
  *
848
- * monque.worker<EmailJob>('send-email', async (job) => {
848
+ * monque.register<EmailJob>('send-email', async (job) => {
849
849
  * await emailService.send(job.data.to, job.data.subject, job.data.body);
850
850
  * });
851
851
  * ```
@@ -853,7 +853,7 @@ var Monque = class extends EventEmitter {
853
853
  * @example Worker with custom concurrency
854
854
  * ```typescript
855
855
  * // Limit to 2 concurrent video processing jobs (resource-intensive)
856
- * monque.worker('process-video', async (job) => {
856
+ * monque.register('process-video', async (job) => {
857
857
  * await videoProcessor.transcode(job.data.videoId);
858
858
  * }, { concurrency: 2 });
859
859
  * ```
@@ -861,12 +861,12 @@ var Monque = class extends EventEmitter {
861
861
  * @example Replacing an existing worker
862
862
  * ```typescript
863
863
  * // Replace the existing handler for 'send-email'
864
- * monque.worker('send-email', newEmailHandler, { replace: true });
864
+ * monque.register('send-email', newEmailHandler, { replace: true });
865
865
  * ```
866
866
  *
867
867
  * @example Worker with error handling
868
868
  * ```typescript
869
- * monque.worker('sync-user', async (job) => {
869
+ * monque.register('sync-user', async (job) => {
870
870
  * try {
871
871
  * await externalApi.syncUser(job.data.userId);
872
872
  * } catch (error) {
@@ -877,7 +877,7 @@ var Monque = class extends EventEmitter {
877
877
  * });
878
878
  * ```
879
879
  */
880
- worker(name, handler, options = {}) {
880
+ register(name, handler, options = {}) {
881
881
  const concurrency = options.concurrency ?? this.options.defaultConcurrency;
882
882
  if (this.workers.has(name) && options.replace !== true) throw new WorkerRegistrationError(`Worker already registered for job name "${name}". Use { replace: true } to replace.`, name);
883
883
  this.workers.set(name, {
@@ -901,8 +901,8 @@ var Monque = class extends EventEmitter {
901
901
  * const monque = new Monque(db);
902
902
  * await monque.initialize();
903
903
  *
904
- * monque.worker('send-email', emailHandler);
905
- * monque.worker('process-order', orderHandler);
904
+ * monque.register('send-email', emailHandler);
905
+ * monque.register('process-order', orderHandler);
906
906
  *
907
907
  * monque.start(); // Begin processing jobs
908
908
  * ```
@@ -1037,7 +1037,7 @@ var Monque = class extends EventEmitter {
1037
1037
  }
1038
1038
  if (result === "timeout") {
1039
1039
  const incompleteJobs = this.getActiveJobsList();
1040
- const { ShutdownTimeoutError: ShutdownTimeoutError$1 } = await import("./errors-DWkXsP3R.mjs");
1040
+ const { ShutdownTimeoutError: ShutdownTimeoutError$1 } = await import("./errors-DEvnqoOC.mjs");
1041
1041
  const error = new ShutdownTimeoutError$1(`Shutdown timed out after ${this.options.shutdownTimeout}ms with ${incompleteJobs.length} incomplete jobs`, incompleteJobs);
1042
1042
  this.emit("job:error", { error });
1043
1043
  }
@@ -1195,6 +1195,7 @@ var Monque = class extends EventEmitter {
1195
1195
  *
1196
1196
  * Called at regular intervals (configured by `pollInterval`). For each registered worker,
1197
1197
  * attempts to acquire jobs up to the worker's available concurrency slots.
1198
+ * Aborts early if the scheduler is stopping (`isRunning` is false).
1198
1199
  *
1199
1200
  * @private
1200
1201
  */
@@ -1204,6 +1205,7 @@ var Monque = class extends EventEmitter {
1204
1205
  const availableSlots = worker.concurrency - worker.activeJobs.size;
1205
1206
  if (availableSlots <= 0) continue;
1206
1207
  for (let i = 0; i < availableSlots; i++) {
1208
+ if (!this.isRunning) return;
1207
1209
  const job = await this.acquireJob(name);
1208
1210
  if (job) this.processJob(job, worker).catch((error) => {
1209
1211
  this.emit("job:error", {
@@ -1224,12 +1226,14 @@ var Monque = class extends EventEmitter {
1224
1226
  * - Has nextRunAt <= now
1225
1227
  * - Is not claimed by another instance (claimedBy is null/undefined)
1226
1228
  *
1229
+ * Returns `null` immediately if scheduler is stopping (`isRunning` is false).
1230
+ *
1227
1231
  * @private
1228
1232
  * @param name - The job type to acquire
1229
1233
  * @returns The acquired job with updated status, claimedBy, and heartbeat info, or `null` if no jobs available
1230
1234
  */
1231
1235
  async acquireJob(name) {
1232
- if (!this.collection) return null;
1236
+ if (!this.collection || !this.isRunning) return null;
1233
1237
  const now = /* @__PURE__ */ new Date();
1234
1238
  const result = await this.collection.findOneAndUpdate({
1235
1239
  name,