@wavezync/nestjs-pgboss 4.0.1 → 5.1.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.
@@ -1,4 +1,4 @@
1
- import { JobOptions, WorkOptions } from "pg-boss";
1
+ import { ScheduleOptions, WorkOptions } from "pg-boss";
2
2
  export declare const JOB_NAME = "JOB_NAME";
3
3
  export declare const JOB_OPTIONS = "JOB_OPTIONS";
4
4
  export declare const CRON_EXPRESSION = "CRON_EXPRESSION";
@@ -7,4 +7,4 @@ export declare const PG_BOSS_JOB_METADATA = "PG_BOSS_JOB_METADATA";
7
7
  export declare const WORK_NAME = "WORK_NAME";
8
8
  export declare const WORK_OPTIONS = "WORK_OPTIONS";
9
9
  export declare function Job<_TData extends object = any>(name: string, options?: WorkOptions): (target: any, key: string, descriptor: PropertyDescriptor) => void;
10
- export declare function CronJob<_TData extends object = any>(name: string, cron: string, options?: JobOptions): (target: any, key: string, descriptor: PropertyDescriptor) => void;
10
+ export declare function CronJob<_TData extends object = any>(name: string, cron: string, options?: ScheduleOptions): (target: any, key: string, descriptor: PropertyDescriptor) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"job.decorator.js","sourceRoot":"","sources":["../../lib/decorators/job.decorator.ts"],"names":[],"mappings":";;;AAWA,kBAaC;AAED,0BAeC;AAzCD,2CAA6C;AAGhC,QAAA,QAAQ,GAAG,UAAU,CAAC;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,YAAY,GAAG,cAAc,CAAC;AAE3C,SAAgB,GAAG,CACjB,IAAY,EACZ,UAAuB,EAAE;IAEzB,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,UAA8B,EAAE,EAAE;QAClE,IAAA,oBAAW,EAAC,gBAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,IAAA,oBAAW,EAAC,mBAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAA,oBAAW,EAAC,4BAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACxE,MAAM,EACN,GAAG,EACH,UAAU,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,OAAO,CACrB,IAAY,EACZ,IAAY,EACZ,UAAsB,EAAE;IAExB,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,UAA8B,EAAE,EAAE;QAClE,IAAA,oBAAW,EAAC,gBAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,IAAA,oBAAW,EAAC,uBAAe,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAA,oBAAW,EAAC,oBAAY,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAA,oBAAW,EAAC,4BAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACxE,MAAM,EACN,GAAG,EACH,UAAU,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"job.decorator.js","sourceRoot":"","sources":["../../lib/decorators/job.decorator.ts"],"names":[],"mappings":";;;AAWA,kBAaC;AAED,0BAeC;AAzCD,2CAA6C;AAGhC,QAAA,QAAQ,GAAG,UAAU,CAAC;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,YAAY,GAAG,cAAc,CAAC;AAE3C,SAAgB,GAAG,CACjB,IAAY,EACZ,UAAuB,EAAE;IAEzB,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,UAA8B,EAAE,EAAE;QAClE,IAAA,oBAAW,EAAC,gBAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,IAAA,oBAAW,EAAC,mBAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAA,oBAAW,EAAC,4BAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACxE,MAAM,EACN,GAAG,EACH,UAAU,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,OAAO,CACrB,IAAY,EACZ,IAAY,EACZ,UAA2B,EAAE;IAE7B,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,UAA8B,EAAE,EAAE;QAClE,IAAA,oBAAW,EAAC,gBAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,IAAA,oBAAW,EAAC,uBAAe,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAA,oBAAW,EAAC,oBAAY,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAA,oBAAW,EAAC,4BAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACxE,MAAM,EACN,GAAG,EACH,UAAU,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -31,6 +31,7 @@ let HandlerScannerService = class HandlerScannerService {
31
31
  }
32
32
  }
33
33
  async scanProvider(provider) {
34
+ var _a;
34
35
  const { instance } = provider;
35
36
  if (!instance || typeof instance !== "object")
36
37
  return;
@@ -49,8 +50,11 @@ let HandlerScannerService = class HandlerScannerService {
49
50
  this.logger.log(`Registered cron job: ${jobName}`);
50
51
  continue;
51
52
  }
52
- await this.pgBossService.registerJob(jobName, methodRef.bind(instance), jobOptions);
53
- this.logger.log(`Registered job: ${jobName}`);
53
+ const teamSize = Math.max(1, (_a = jobOptions === null || jobOptions === void 0 ? void 0 : jobOptions.teamSize) !== null && _a !== void 0 ? _a : 1);
54
+ for (let i = 0; i < teamSize; i++) {
55
+ await this.pgBossService.registerJob(jobName, methodRef.bind(instance), jobOptions);
56
+ }
57
+ this.logger.log(`Registered job: ${jobName} (${teamSize} worker${teamSize > 1 ? 's' : ''})`);
54
58
  }
55
59
  catch (error) {
56
60
  this.logger.error(error, `Error registering job ${jobName}`);
@@ -1 +1 @@
1
- {"version":3,"file":"handler-scanner.service.js","sourceRoot":"","sources":["../lib/handler-scanner.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;AACpD,uCAA2D;AAC3D,qDAAiD;AACjD,8DAKoC;AAGpC,2CAAwC;AAGjC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,YACmB,aAA4B,EAC5B,SAAoB,EACpB,gBAAkC;QAFlC,kBAAa,GAAb,aAAa,CAAe;QAC5B,cAAS,GAAT,SAAS,CAAW;QACpB,qBAAgB,GAAhB,gBAAgB,CAAkB;QALpC,WAAM,GAAG,IAAI,eAAM,CAAC,eAAM,CAAC,CAAC;IAM1C,CAAC;IAEJ,KAAK,CAAC,uBAAuB;QAC3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAEjD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAA8B;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO;QAEtD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAC9D,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,KAAK,aAAa,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU,CACrE,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,wBAAQ,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACnC,2BAAW,EACX,SAAS,CACV,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACvC,+BAAe,EACf,SAAS,CACV,CAAC;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACpC,4BAAY,EACZ,SAAS,CACV,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,IAAI,cAAc,EAAE,CAAC;wBACnB,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CACtC,OAAO,EACP,cAAc,EACd,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,EAAE,EACF,WAAW,CACZ,CAAC;wBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;wBACnD,SAAS;oBACX,CAAC;oBAED,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAClC,OAAO,EACP,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,UAAU,CACX,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAxEY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAKuB,8BAAa;QACjB,gBAAS;QACF,uBAAgB;GAN1C,qBAAqB,CAwEjC"}
1
+ {"version":3,"file":"handler-scanner.service.js","sourceRoot":"","sources":["../lib/handler-scanner.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
- import { JobOptions } from "pg-boss";
1
+ import { WorkOptions as PgBossWorkOptions, ScheduleOptions } from "pg-boss";
2
+ export interface WorkOptions extends PgBossWorkOptions {
3
+ teamSize?: number;
4
+ }
2
5
  export interface HandlerMetadata {
3
6
  jobName: string;
4
- workOptions?: JobOptions;
7
+ workOptions?: WorkOptions;
5
8
  cronExpression?: string;
6
- cronOptions?: JobOptions;
9
+ cronOptions?: ScheduleOptions;
7
10
  }
@@ -1,6 +1,9 @@
1
1
  import { ModuleMetadata, Type } from "@nestjs/common";
2
2
  import { ConstructorOptions } from "pg-boss";
3
- export type PgBossModuleOptions = ConstructorOptions;
3
+ export interface PgBossModuleOptions extends ConstructorOptions {
4
+ retryLimit?: number;
5
+ retryDelay?: number;
6
+ }
4
7
  export interface PgBossOptionsFactory {
5
8
  createPgBossOptions(): Promise<PgBossModuleOptions> | PgBossModuleOptions;
6
9
  }
@@ -1,5 +1,5 @@
1
1
  import { DynamicModule, OnModuleInit, OnApplicationBootstrap, OnModuleDestroy } from "@nestjs/common";
2
- import PgBoss from "pg-boss";
2
+ import { PgBoss } from "pg-boss";
3
3
  import { PgBossModuleAsyncOptions } from "./interfaces/pgboss-module-options.interface";
4
4
  import { HandlerScannerService } from "./handler-scanner.service";
5
5
  export declare class PgBossModule implements OnModuleInit, OnApplicationBootstrap, OnModuleDestroy {
@@ -11,15 +11,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
14
  var PgBossModule_1;
18
15
  Object.defineProperty(exports, "__esModule", { value: true });
19
16
  exports.PgBossModule = void 0;
20
17
  const common_1 = require("@nestjs/common");
21
18
  const core_1 = require("@nestjs/core");
22
- const pg_boss_1 = __importDefault(require("pg-boss"));
19
+ const pg_boss_1 = require("pg-boss");
23
20
  const rxjs_1 = require("rxjs");
24
21
  const pgboss_service_1 = require("./pgboss.service");
25
22
  const consts_1 = require("./utils/consts");
@@ -39,7 +36,7 @@ let PgBossModule = PgBossModule_1 = class PgBossModule {
39
36
  const pgBossProvider = {
40
37
  provide: consts_1.PGBOSS_TOKEN,
41
38
  useFactory: async (pgBossOptions) => {
42
- const boss = await (0, rxjs_1.lastValueFrom)((0, rxjs_1.defer)(() => new pg_boss_1.default(pgBossOptions).start()).pipe((0, handleRetry_1.handleRetry)(pgBossOptions.retryLimit, pgBossOptions.retryDelay)));
39
+ const boss = await (0, rxjs_1.lastValueFrom)((0, rxjs_1.defer)(() => new pg_boss_1.PgBoss(pgBossOptions).start()).pipe((0, handleRetry_1.handleRetry)(pgBossOptions.retryLimit, pgBossOptions.retryDelay)));
43
40
  boss.on("error", (error) => {
44
41
  logger.error(`PgBoss error: ${error.message}`, error.stack);
45
42
  });
@@ -112,7 +109,7 @@ exports.PgBossModule = PgBossModule = PgBossModule_1 = __decorate([
112
109
  providers: [core_1.MetadataScanner, handler_scanner_service_1.HandlerScannerService],
113
110
  }),
114
111
  __param(0, (0, common_1.Inject)(consts_1.PGBOSS_TOKEN)),
115
- __metadata("design:paramtypes", [pg_boss_1.default,
112
+ __metadata("design:paramtypes", [pg_boss_1.PgBoss,
116
113
  handler_scanner_service_1.HandlerScannerService])
117
114
  ], PgBossModule);
118
115
  //# sourceMappingURL=pgboss.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss.module.js","sourceRoot":"","sources":["../lib/pgboss.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgboss.module.js","sourceRoot":"","sources":["../lib/pgboss.module.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import PgBoss, { WorkWithMetadataHandler } from "pg-boss";
1
+ import { WorkWithMetadataHandler, PgBoss, SendOptions, ScheduleOptions, WorkOptions } from "pg-boss";
2
2
  export declare class PgBossService {
3
3
  private pgBoss;
4
4
  constructor(boss: PgBoss);
5
5
  get boss(): PgBoss;
6
- scheduleJob<TData extends object>(name: string, data: TData, options?: PgBoss.SendOptions): Promise<void>;
7
- scheduleCronJob<TData extends object>(name: string, cron: string, data?: TData, options?: PgBoss.ScheduleOptions): Promise<void>;
8
- registerCronJob<TData extends object>(name: string, cron: string, handler: WorkWithMetadataHandler<TData>, data?: TData, options?: PgBoss.ScheduleOptions): Promise<void>;
9
- registerJob<TData extends object>(name: string, handler: WorkWithMetadataHandler<TData>, options?: PgBoss.WorkOptions): Promise<void>;
6
+ scheduleJob<TData extends object>(name: string, data: TData, options?: SendOptions): Promise<void>;
7
+ scheduleCronJob<TData extends object>(name: string, cron: string, data?: TData, options?: ScheduleOptions): Promise<void>;
8
+ registerCronJob<TData extends object>(name: string, cron: string, handler: WorkWithMetadataHandler<TData>, data?: TData, options?: ScheduleOptions): Promise<void>;
9
+ registerJob<TData extends object>(name: string, handler: WorkWithMetadataHandler<TData>, options?: WorkOptions): Promise<void>;
10
10
  }
@@ -11,13 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
14
  Object.defineProperty(exports, "__esModule", { value: true });
18
15
  exports.PgBossService = void 0;
19
16
  const common_1 = require("@nestjs/common");
20
- const pg_boss_1 = __importDefault(require("pg-boss"));
17
+ const pg_boss_1 = require("pg-boss");
21
18
  const common_2 = require("@nestjs/common");
22
19
  const consts_1 = require("./utils/consts");
23
20
  const helpers_1 = require("./utils/helpers");
@@ -50,6 +47,6 @@ exports.PgBossService = PgBossService;
50
47
  exports.PgBossService = PgBossService = __decorate([
51
48
  (0, common_1.Injectable)(),
52
49
  __param(0, (0, common_2.Inject)(consts_1.PGBOSS_TOKEN)),
53
- __metadata("design:paramtypes", [pg_boss_1.default])
50
+ __metadata("design:paramtypes", [pg_boss_1.PgBoss])
54
51
  ], PgBossService);
55
52
  //# sourceMappingURL=pgboss.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss.service.js","sourceRoot":"","sources":["../lib/pgboss.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,sDAA0D;AAC1D,2CAAwC;AACxC,2CAA8C;AAC9C,6CAAmD;AAG5C,IAAM,aAAa,GAAnB,MAAM,aAAa;IAGxB,YAAkC,IAAY;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,IAAW,EACX,OAA4B;QAE5B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,OAAuC,EACvC,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,kCACC,IAAA,0BAAgB,EAAC,OAAO,CAAC,KAAE,eAAe,EAAE,IAAI,KACrD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAAuC,EACvC,OAA4B;QAE5B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,kCACC,OAAO,KAAE,eAAe,EAAE,IAAI,KACnC,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAA;AA1DY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,qBAAY,CAAC,CAAA;qCAAO,iBAAM;GAHnC,aAAa,CA0DzB"}
1
+ {"version":3,"file":"pgboss.service.js","sourceRoot":"","sources":["../lib/pgboss.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAMiB;AACjB,2CAAwC;AACxC,2CAA8C;AAC9C,6CAAmD;AAG5C,IAAM,aAAa,GAAnB,MAAM,aAAa;IAGxB,YAAkC,IAAY;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,IAAW,EACX,OAAqB;QAErB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAyB;QAEzB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,OAAuC,EACvC,IAAY,EACZ,OAAyB;QAEzB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,kCACC,IAAA,0BAAgB,EAAC,OAAO,CAAC,KAAE,eAAe,EAAE,IAAI,KACrD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAAuC,EACvC,OAAqB;QAErB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,kCACC,OAAO,KAAE,eAAe,EAAE,IAAI,KACnC,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAA;AA1DY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,qBAAY,CAAC,CAAA;qCAAO,gBAAM;GAHnC,aAAa,CA0DzB"}
@@ -1,3 +1,3 @@
1
- import PgBoss from "pg-boss";
2
- export declare function transformOptions(options?: PgBoss.WorkOptions | PgBoss.ScheduleOptions): any;
1
+ import { WorkOptions, ScheduleOptions } from "pg-boss";
2
+ export declare function transformOptions(options?: WorkOptions | ScheduleOptions): any;
3
3
  export declare function normalizeJob(job: any): any;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/utils/helpers.ts"],"names":[],"mappings":";;AAEA,4CAYC;AAED,oCAKC;AAnBD,SAAgB,gBAAgB,CAC9B,OAAqD;IAErD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,kBAAkB,qBAAa,OAAO,CAAE,CAAC;IAE/C,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACzC,kBAAkB,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAgB,YAAY,CAAC,GAAQ;IACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/utils/helpers.ts"],"names":[],"mappings":";;AAEA,4CAUC;AAED,oCAKC;AAjBD,SAAgB,gBAAgB,CAAC,OAAuC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,kBAAkB,qBAAa,OAAO,CAAE,CAAC;IAE/C,IAAI,OAAQ,OAAe,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClD,kBAAkB,CAAC,QAAQ,GAAI,OAAe,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAgB,YAAY,CAAC,GAAQ;IACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { SetMetadata } from "@nestjs/common";
2
- import { JobOptions, WorkOptions } from "pg-boss";
2
+ import { ScheduleOptions, WorkOptions } from "pg-boss";
3
3
 
4
4
  export const JOB_NAME = "JOB_NAME";
5
5
  export const JOB_OPTIONS = "JOB_OPTIONS";
@@ -27,7 +27,7 @@ export function Job<_TData extends object = any>(
27
27
  export function CronJob<_TData extends object = any>(
28
28
  name: string,
29
29
  cron: string,
30
- options: JobOptions = {},
30
+ options: ScheduleOptions = {},
31
31
  ) {
32
32
  return (target: any, key: string, descriptor: PropertyDescriptor) => {
33
33
  SetMetadata(JOB_NAME, name)(target, key, descriptor);
@@ -10,6 +10,7 @@ import {
10
10
  import { InstanceWrapper } from "@nestjs/core/injector/instance-wrapper";
11
11
  import PgBoss from "pg-boss";
12
12
  import { LOGGER } from "./utils/consts";
13
+ import { WorkOptions } from "./interfaces/handler-metadata.interface";
13
14
 
14
15
  @Injectable()
15
16
  export class HandlerScannerService {
@@ -45,7 +46,7 @@ export class HandlerScannerService {
45
46
  const methodRef = instance[methodName];
46
47
 
47
48
  const jobName = this.reflector.get<string>(JOB_NAME, methodRef);
48
- const jobOptions = this.reflector.get<PgBoss.WorkOptions>(
49
+ const jobOptions = this.reflector.get<WorkOptions>(
49
50
  JOB_OPTIONS,
50
51
  methodRef,
51
52
  );
@@ -72,12 +73,15 @@ export class HandlerScannerService {
72
73
  continue;
73
74
  }
74
75
 
75
- await this.pgBossService.registerJob(
76
- jobName,
77
- methodRef.bind(instance),
78
- jobOptions,
79
- );
80
- this.logger.log(`Registered job: ${jobName}`);
76
+ const teamSize = Math.max(1, jobOptions?.teamSize ?? 1);
77
+ for (let i = 0; i < teamSize; i++) {
78
+ await this.pgBossService.registerJob(
79
+ jobName,
80
+ methodRef.bind(instance),
81
+ jobOptions,
82
+ );
83
+ }
84
+ this.logger.log(`Registered job: ${jobName} (${teamSize} worker${teamSize > 1 ? 's' : ''})`);
81
85
  } catch (error) {
82
86
  this.logger.error(error, `Error registering job ${jobName}`);
83
87
  }
@@ -1,8 +1,12 @@
1
- import { JobOptions } from "pg-boss";
1
+ import { WorkOptions as PgBossWorkOptions, ScheduleOptions } from "pg-boss";
2
+
3
+ export interface WorkOptions extends PgBossWorkOptions {
4
+ teamSize?: number;
5
+ }
2
6
 
3
7
  export interface HandlerMetadata {
4
8
  jobName: string;
5
- workOptions?: JobOptions;
9
+ workOptions?: WorkOptions;
6
10
  cronExpression?: string;
7
- cronOptions?: JobOptions;
11
+ cronOptions?: ScheduleOptions;
8
12
  }
@@ -1,7 +1,10 @@
1
1
  import { ModuleMetadata, Type } from "@nestjs/common";
2
2
  import { ConstructorOptions } from "pg-boss";
3
3
 
4
- export type PgBossModuleOptions = ConstructorOptions;
4
+ export interface PgBossModuleOptions extends ConstructorOptions {
5
+ retryLimit?: number;
6
+ retryDelay?: number;
7
+ }
5
8
 
6
9
  export interface PgBossOptionsFactory {
7
10
  createPgBossOptions(): Promise<PgBossModuleOptions> | PgBossModuleOptions;
@@ -9,13 +9,14 @@ import {
9
9
  Inject,
10
10
  } from "@nestjs/common";
11
11
  import { MetadataScanner } from "@nestjs/core";
12
- import PgBoss, { ConstructorOptions } from "pg-boss";
12
+ import { PgBoss } from "pg-boss";
13
13
  import { defer, lastValueFrom } from "rxjs";
14
14
  import { PgBossService } from "./pgboss.service";
15
15
  import { LOGGER, PGBOSS_OPTIONS, PGBOSS_TOKEN } from "./utils/consts";
16
16
  import {
17
17
  PgBossModuleAsyncOptions,
18
18
  PgBossOptionsFactory,
19
+ PgBossModuleOptions,
19
20
  } from "./interfaces/pgboss-module-options.interface";
20
21
  import { HandlerScannerService } from "./handler-scanner.service";
21
22
  import { handleRetry } from "./utils/handleRetry";
@@ -43,7 +44,7 @@ export class PgBossModule
43
44
 
44
45
  const pgBossProvider = {
45
46
  provide: PGBOSS_TOKEN,
46
- useFactory: async (pgBossOptions: ConstructorOptions) => {
47
+ useFactory: async (pgBossOptions: PgBossModuleOptions) => {
47
48
  const boss = await lastValueFrom(
48
49
  defer(() => new PgBoss(pgBossOptions).start()).pipe(
49
50
  handleRetry(pgBossOptions.retryLimit, pgBossOptions.retryDelay),
@@ -1,5 +1,11 @@
1
1
  import { Injectable } from "@nestjs/common";
2
- import PgBoss, { WorkWithMetadataHandler } from "pg-boss";
2
+ import {
3
+ WorkWithMetadataHandler,
4
+ PgBoss,
5
+ SendOptions,
6
+ ScheduleOptions,
7
+ WorkOptions,
8
+ } from "pg-boss";
3
9
  import { Inject } from "@nestjs/common";
4
10
  import { PGBOSS_TOKEN } from "./utils/consts";
5
11
  import { transformOptions } from "./utils/helpers";
@@ -19,7 +25,7 @@ export class PgBossService {
19
25
  async scheduleJob<TData extends object>(
20
26
  name: string,
21
27
  data: TData,
22
- options?: PgBoss.SendOptions,
28
+ options?: SendOptions,
23
29
  ) {
24
30
  await this.pgBoss.createQueue(name);
25
31
  await this.pgBoss.send(name, data, options);
@@ -29,7 +35,7 @@ export class PgBossService {
29
35
  name: string,
30
36
  cron: string,
31
37
  data?: TData,
32
- options?: PgBoss.ScheduleOptions,
38
+ options?: ScheduleOptions,
33
39
  ) {
34
40
  await this.pgBoss.createQueue(name);
35
41
  await this.pgBoss.schedule(name, cron, data ?? {}, options ?? {});
@@ -40,7 +46,7 @@ export class PgBossService {
40
46
  cron: string,
41
47
  handler: WorkWithMetadataHandler<TData>,
42
48
  data?: TData,
43
- options?: PgBoss.ScheduleOptions,
49
+ options?: ScheduleOptions,
44
50
  ) {
45
51
  await this.pgBoss.createQueue(name);
46
52
  await this.pgBoss.schedule(name, cron, data ?? {}, options ?? {});
@@ -54,7 +60,7 @@ export class PgBossService {
54
60
  async registerJob<TData extends object>(
55
61
  name: string,
56
62
  handler: WorkWithMetadataHandler<TData>,
57
- options?: PgBoss.WorkOptions,
63
+ options?: WorkOptions,
58
64
  ) {
59
65
  await this.pgBoss.createQueue(name);
60
66
  await this.pgBoss.work<TData>(
@@ -1,14 +1,12 @@
1
- import PgBoss from "pg-boss";
1
+ import { WorkOptions, ScheduleOptions } from "pg-boss";
2
2
 
3
- export function transformOptions(
4
- options?: PgBoss.WorkOptions | PgBoss.ScheduleOptions,
5
- ) {
3
+ export function transformOptions(options?: WorkOptions | ScheduleOptions) {
6
4
  if (!options) return {};
7
5
 
8
6
  const transformedOptions: any = { ...options };
9
7
 
10
- if (typeof options.priority === "number") {
11
- transformedOptions.priority = options.priority > 0;
8
+ if (typeof (options as any).priority === "number") {
9
+ transformedOptions.priority = (options as any).priority > 0;
12
10
  }
13
11
 
14
12
  return transformedOptions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavezync/nestjs-pgboss",
3
- "version": "4.0.1",
3
+ "version": "5.1.0",
4
4
  "description": "A NestJS module that integrates pg-boss for job scheduling and handling.",
5
5
  "license": "MIT",
6
6
  "author": "samaratungajs@wavezync.com",
@@ -21,22 +21,22 @@
21
21
  "test:e2e": "jest --config ./test/jest-e2e.json"
22
22
  },
23
23
  "peerDependencies": {
24
- "@nestjs/common": "^9 || ^10",
25
- "@nestjs/core": "^9 || ^10",
26
- "pg-boss": "^10",
24
+ "@nestjs/common": "^11",
25
+ "@nestjs/core": "^11",
26
+ "pg-boss": "^12",
27
27
  "reflect-metadata": "^0.1.13 || ^0.2.0",
28
28
  "rxjs": "^7.2.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@nestjs/cli": "^10.0.0",
32
- "@nestjs/schematics": "^10.0.0",
33
- "@nestjs/testing": "^10.0.0",
31
+ "@nestjs/cli": "^11.0.0",
32
+ "@nestjs/schematics": "^11.0.0",
33
+ "@nestjs/testing": "^11.0.0",
34
34
  "@types/express": "^4.17.17",
35
35
  "@types/jest": "^29.5.2",
36
36
  "@types/node": "^20.3.1",
37
37
  "@types/supertest": "^6.0.0",
38
- "@typescript-eslint/eslint-plugin": "^7.0.0",
39
- "@typescript-eslint/parser": "^7.0.0",
38
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
39
+ "@typescript-eslint/parser": "^8.0.0",
40
40
  "eslint": "^8.42.0",
41
41
  "eslint-config-prettier": "^9.0.0",
42
42
  "eslint-plugin-prettier": "^5.0.0",
@@ -48,7 +48,7 @@
48
48
  "ts-loader": "^9.4.3",
49
49
  "ts-node": "^10.9.1",
50
50
  "tsconfig-paths": "^4.2.0",
51
- "typescript": "^5.1.3"
51
+ "typescript": "^5.7.0"
52
52
  },
53
53
  "jest": {
54
54
  "roots": [
@@ -0,0 +1,82 @@
1
+ jest.mock("pg-boss", () => ({}));
2
+
3
+ import { Test, TestingModule } from "@nestjs/testing";
4
+ import { Reflector, ModulesContainer } from "@nestjs/core";
5
+ import { HandlerScannerService } from "../lib/handler-scanner.service";
6
+ import { PgBossService } from "../lib/pgboss.service";
7
+ import { JOB_NAME, JOB_OPTIONS } from "../lib/decorators/job.decorator";
8
+
9
+ describe("HandlerScannerService", () => {
10
+ let service: HandlerScannerService;
11
+ let mockPgBossService: any;
12
+ let mockReflector: any;
13
+ let mockModulesContainer: Map<string, any>;
14
+
15
+ class TestHandler {
16
+ handle() {}
17
+ }
18
+
19
+ beforeEach(async () => {
20
+ mockPgBossService = {
21
+ registerJob: jest.fn().mockResolvedValue(undefined),
22
+ registerCronJob: jest.fn().mockResolvedValue(undefined),
23
+ };
24
+
25
+ mockReflector = { get: jest.fn() };
26
+ mockModulesContainer = new Map();
27
+
28
+ const module: TestingModule = await Test.createTestingModule({
29
+ providers: [
30
+ HandlerScannerService,
31
+ { provide: PgBossService, useValue: mockPgBossService },
32
+ { provide: Reflector, useValue: mockReflector },
33
+ { provide: ModulesContainer, useValue: mockModulesContainer },
34
+ ],
35
+ }).compile();
36
+
37
+ service = module.get<HandlerScannerService>(HandlerScannerService);
38
+ });
39
+
40
+ afterEach(() => {
41
+ jest.clearAllMocks();
42
+ });
43
+
44
+ describe("teamSize", () => {
45
+ const setupHandler = (jobOptions?: { teamSize?: number }) => {
46
+ const instance = new TestHandler();
47
+ mockModulesContainer.set("TestModule", {
48
+ providers: new Map([["TestHandler", { instance }]]),
49
+ });
50
+ mockReflector.get.mockImplementation((key: string, target: any) => {
51
+ if (key === JOB_NAME && target === instance.handle) return "my-job";
52
+ if (key === JOB_OPTIONS && target === instance.handle)
53
+ return jobOptions;
54
+ return undefined;
55
+ });
56
+ };
57
+
58
+ it("should register job once by default", async () => {
59
+ setupHandler();
60
+ await service.scanAndRegisterHandlers();
61
+ expect(mockPgBossService.registerJob).toHaveBeenCalledTimes(1);
62
+ });
63
+
64
+ it("should register job multiple times when teamSize > 1", async () => {
65
+ setupHandler({ teamSize: 3 });
66
+ await service.scanAndRegisterHandlers();
67
+ expect(mockPgBossService.registerJob).toHaveBeenCalledTimes(3);
68
+ });
69
+
70
+ it("should default to 1 when teamSize is 0", async () => {
71
+ setupHandler({ teamSize: 0 });
72
+ await service.scanAndRegisterHandlers();
73
+ expect(mockPgBossService.registerJob).toHaveBeenCalledTimes(1);
74
+ });
75
+
76
+ it("should default to 1 when teamSize is negative", async () => {
77
+ setupHandler({ teamSize: -5 });
78
+ await service.scanAndRegisterHandlers();
79
+ expect(mockPgBossService.registerJob).toHaveBeenCalledTimes(1);
80
+ });
81
+ });
82
+ });
@@ -1,21 +1,32 @@
1
1
  import { Test, TestingModule } from "@nestjs/testing";
2
- import PgBoss from "pg-boss";
2
+ import { PgBoss } from "pg-boss";
3
3
  import { PgBossService } from "../lib/pgboss.service";
4
4
  import { PGBOSS_TOKEN } from "../lib/utils/consts";
5
5
 
6
- describe("PgBossService", () => {
7
- let service: PgBossService;
8
- let mockPgBoss: jest.Mocked<PgBoss>;
9
-
10
- beforeEach(async () => {
11
- mockPgBoss = {
6
+ jest.mock("pg-boss", () => {
7
+ return {
8
+ PgBoss: jest.fn().mockImplementation(() => ({
9
+ on: jest.fn(),
12
10
  start: jest.fn(),
13
- work: jest.fn(),
11
+ stop: jest.fn(),
14
12
  send: jest.fn(),
15
13
  schedule: jest.fn(),
14
+ work: jest.fn(),
16
15
  createQueue: jest.fn(),
17
- getQueue: jest.fn(),
18
- } as any;
16
+ })),
17
+ };
18
+ });
19
+
20
+ describe("PgBossService", () => {
21
+ let service: PgBossService;
22
+ let mockPgBoss: any;
23
+
24
+ beforeEach(async () => {
25
+ mockPgBoss = new PgBoss("connectionString");
26
+ mockPgBoss.createQueue.mockResolvedValue(undefined);
27
+ mockPgBoss.send.mockResolvedValue("job-id");
28
+ mockPgBoss.schedule.mockResolvedValue(undefined);
29
+ mockPgBoss.work.mockResolvedValue("worker-id");
19
30
 
20
31
  const module: TestingModule = await Test.createTestingModule({
21
32
  providers: [