@wavezync/nestjs-pgboss 2.0.0 → 2.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.
@@ -26,7 +26,7 @@ let HandlerScannerService = class HandlerScannerService {
26
26
  for (const module of this.modulesContainer.values()) {
27
27
  const providers = [...module.providers.values()];
28
28
  for (const provider of providers) {
29
- this.scanProvider(provider);
29
+ await this.scanProvider(provider);
30
30
  }
31
31
  }
32
32
  }
@@ -43,14 +43,22 @@ let HandlerScannerService = class HandlerScannerService {
43
43
  const cronExpression = this.reflector.get(job_decorator_1.CRON_EXPRESSION, methodRef);
44
44
  const cronOptions = this.reflector.get(job_decorator_1.CRON_OPTIONS, methodRef);
45
45
  if (jobName) {
46
- const boundHandler = methodRef.bind(instance);
47
- if (cronExpression) {
48
- await this.pgBossService.registerCronJob(jobName, cronExpression, boundHandler, {}, cronOptions);
49
- this.logger.log(`Registered cron job: ${jobName}`);
46
+ const boundHandler = async (job) => {
47
+ const jobData = Object.assign({}, job);
48
+ await methodRef.call(instance, jobData);
49
+ };
50
+ try {
51
+ if (cronExpression) {
52
+ await this.pgBossService.registerCronJob(jobName, cronExpression, boundHandler, {}, cronOptions);
53
+ this.logger.log(`Registered cron job: ${jobName}`);
54
+ }
55
+ else {
56
+ await this.pgBossService.registerJob(jobName, boundHandler, jobOptions);
57
+ this.logger.log(`Registered job: ${jobName}`);
58
+ }
50
59
  }
51
- else {
52
- await this.pgBossService.registerJob(jobName, boundHandler, jobOptions);
53
- this.logger.log(`Registered job: ${jobName}`);
60
+ catch (error) {
61
+ this.logger.error(`Error registering job ${jobName}:`, error);
54
62
  }
55
63
  }
56
64
  }
@@ -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,2CAAsC;AAG/B,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,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9B,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;YACvC,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,CAAM,4BAAY,EAAE,SAAS,CAAC,CAAC;YAErE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE9C,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CACtC,OAAO,EACP,cAAc,EACd,YAAY,EACZ,EAAE,EACF,WAAW,CACZ,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAClC,OAAO,EACP,YAAY,EACZ,UAAU,CACX,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAjEY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAKuB,8BAAa;QACjB,gBAAS;QACF,uBAAgB;GAN1C,qBAAqB,CAiEjC"}
1
+ {"version":3,"file":"handler-scanner.service.js","sourceRoot":"","sources":["../lib/handler-scanner.service.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,9 @@ let PgBossModule = PgBossModule_1 = class PgBossModule {
30
30
  this.boss = boss;
31
31
  this.handlerScannerService = handlerScannerService;
32
32
  this.logger = new common_1.Logger(consts_1.LOGGER);
33
+ this.boss.on("error", (error) => {
34
+ this.logger.error(`PgBoss error: ${error.message}`, error.stack);
35
+ });
33
36
  }
34
37
  static forRootAsync(options) {
35
38
  const logger = new common_1.Logger(consts_1.LOGGER);
@@ -39,6 +42,9 @@ let PgBossModule = PgBossModule_1 = class PgBossModule {
39
42
  const boss = await (0, rxjs_1.lastValueFrom)((0, rxjs_1.defer)(() => new pg_boss_1.default({
40
43
  connectionString: pgBossOptions.connectionString,
41
44
  }).start()).pipe((0, handleRetry_1.handleRetry)(pgBossOptions.retryAttempts, pgBossOptions.retryDelay, pgBossOptions.verboseRetryLog)));
45
+ boss.on("error", (error) => {
46
+ logger.error(`PgBoss error: ${error.message}`, error.stack);
47
+ });
42
48
  logger.log("PgBoss started successfully");
43
49
  return boss;
44
50
  },
@@ -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,9 +1,9 @@
1
- import PgBoss, { BatchWorkOptions, WorkHandler } from "pg-boss";
1
+ import PgBoss, { WorkWithMetadataHandler } from "pg-boss";
2
2
  export declare class PgBossService {
3
3
  private readonly boss;
4
4
  constructor(boss: PgBoss);
5
5
  scheduleJob<TData extends object>(name: string, data: TData, options?: PgBoss.SendOptions): Promise<void>;
6
6
  scheduleCronJob<TData extends object>(name: string, cron: string, data?: TData, options?: PgBoss.ScheduleOptions): Promise<void>;
7
- registerCronJob<TData extends object>(name: string, cron: string, handler: WorkHandler<TData>, data?: TData, options?: PgBoss.ScheduleOptions): Promise<void>;
8
- registerJob<TData extends object>(name: string, handler: WorkHandler<TData>, options?: BatchWorkOptions): Promise<void>;
7
+ registerCronJob<TData extends object>(name: string, cron: string, handler: WorkWithMetadataHandler<TData>, data?: TData, options?: PgBoss.ScheduleOptions): Promise<void>;
8
+ registerJob<TData extends object>(name: string, handler: WorkWithMetadataHandler<TData>, options?: PgBoss.BatchWorkOptions): Promise<void>;
9
9
  }
@@ -32,10 +32,10 @@ let PgBossService = class PgBossService {
32
32
  }
33
33
  async registerCronJob(name, cron, handler, data, options) {
34
34
  await this.boss.schedule(name, cron, data !== null && data !== void 0 ? data : {}, options !== null && options !== void 0 ? options : {});
35
- await this.boss.work(name, handler);
35
+ await this.boss.work(name, Object.assign(Object.assign({}, options), { includeMetadata: true }), handler);
36
36
  }
37
37
  async registerJob(name, handler, options) {
38
- await this.boss.work(name, options, handler);
38
+ await this.boss.work(name, Object.assign(Object.assign({}, options), { includeMetadata: true }), handler);
39
39
  }
40
40
  };
41
41
  exports.PgBossService = PgBossService;
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss.service.js","sourceRoot":"","sources":["../lib/pgboss.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,sDAAgE;AAChE,2CAAwC;AACxC,2CAA8C;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAAmD,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAEnE,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,IAAW,EACX,OAA4B;QAE5B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,OAA2B,EAC3B,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAA2B,EAC3B,OAA0B;QAE1B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AAtCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,qBAAY,CAAC,CAAA;qCAAwB,iBAAM;GADpD,aAAa,CAsCzB"}
1
+ {"version":3,"file":"pgboss.service.js","sourceRoot":"","sources":["../lib/pgboss.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,sDAA0D;AAC1D,2CAAwC;AACxC,2CAA8C;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAAmD,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAEnE,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,IAAW,EACX,OAA4B;QAE5B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAY,EACZ,OAAuC,EACvC,IAAY,EACZ,OAAgC;QAEhC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,IAAI,kCACC,OAAO,KAAE,eAAe,EAAE,IAAI,KACnC,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAAuC,EACvC,OAAiC;QAEjC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,IAAI,kCACC,OAAO,KAAE,eAAe,EAAE,IAAI,KACnC,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAA;AA9CY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,qBAAY,CAAC,CAAA;qCAAwB,iBAAM;GADpD,aAAa,CA8CzB"}
@@ -8,8 +8,8 @@ import {
8
8
  CRON_OPTIONS,
9
9
  } from "./decorators/job.decorator";
10
10
  import { InstanceWrapper } from "@nestjs/core/injector/instance-wrapper";
11
- import { BatchWorkOptions } from "pg-boss";
12
- import { LOGGER } from "utils/consts";
11
+ import PgBoss, { WorkWithMetadataHandler } from "pg-boss";
12
+ import { LOGGER } from "./utils/consts";
13
13
 
14
14
  @Injectable()
15
15
  export class HandlerScannerService {
@@ -26,7 +26,7 @@ export class HandlerScannerService {
26
26
  const providers = [...module.providers.values()];
27
27
 
28
28
  for (const provider of providers) {
29
- this.scanProvider(provider);
29
+ await this.scanProvider(provider);
30
30
  }
31
31
  }
32
32
  }
@@ -44,7 +44,7 @@ export class HandlerScannerService {
44
44
  for (const methodName of methodNames) {
45
45
  const methodRef = instance[methodName];
46
46
  const jobName = this.reflector.get<string>(JOB_NAME, methodRef);
47
- const jobOptions = this.reflector.get<BatchWorkOptions>(
47
+ const jobOptions = this.reflector.get<PgBoss.WorkOptions>(
48
48
  JOB_OPTIONS,
49
49
  methodRef,
50
50
  );
@@ -55,24 +55,32 @@ export class HandlerScannerService {
55
55
  const cronOptions = this.reflector.get<any>(CRON_OPTIONS, methodRef);
56
56
 
57
57
  if (jobName) {
58
- const boundHandler = methodRef.bind(instance);
59
-
60
- if (cronExpression) {
61
- await this.pgBossService.registerCronJob(
62
- jobName,
63
- cronExpression,
64
- boundHandler,
65
- {},
66
- cronOptions,
67
- );
68
- this.logger.log(`Registered cron job: ${jobName}`);
69
- } else {
70
- await this.pgBossService.registerJob(
71
- jobName,
72
- boundHandler,
73
- jobOptions,
74
- );
75
- this.logger.log(`Registered job: ${jobName}`);
58
+ const boundHandler: WorkWithMetadataHandler<any> = async (job) => {
59
+ const jobData = {
60
+ ...job,
61
+ };
62
+ await methodRef.call(instance, jobData);
63
+ };
64
+ try {
65
+ if (cronExpression) {
66
+ await this.pgBossService.registerCronJob(
67
+ jobName,
68
+ cronExpression,
69
+ boundHandler,
70
+ {},
71
+ cronOptions,
72
+ );
73
+ this.logger.log(`Registered cron job: ${jobName}`);
74
+ } else {
75
+ await this.pgBossService.registerJob(
76
+ jobName,
77
+ boundHandler,
78
+ jobOptions as PgBoss.BatchWorkOptions,
79
+ );
80
+ this.logger.log(`Registered job: ${jobName}`);
81
+ }
82
+ } catch (error) {
83
+ this.logger.error(`Error registering job ${jobName}:`, error);
76
84
  }
77
85
  }
78
86
  }
@@ -32,7 +32,11 @@ export class PgBossModule
32
32
  constructor(
33
33
  @Inject(PGBOSS_TOKEN) private readonly boss: PgBoss,
34
34
  private readonly handlerScannerService: HandlerScannerService,
35
- ) {}
35
+ ) {
36
+ this.boss.on("error", (error: Error) => {
37
+ this.logger.error(`PgBoss error: ${error.message}`, error.stack);
38
+ });
39
+ }
36
40
 
37
41
  static forRootAsync(options: PgBossModuleAsyncOptions): DynamicModule {
38
42
  const logger = new Logger(LOGGER);
@@ -53,6 +57,9 @@ export class PgBossModule
53
57
  ),
54
58
  ),
55
59
  );
60
+ boss.on("error", (error: Error) => {
61
+ logger.error(`PgBoss error: ${error.message}`, error.stack);
62
+ });
56
63
  logger.log("PgBoss started successfully");
57
64
  return boss;
58
65
  },
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from "@nestjs/common";
2
- import PgBoss, { BatchWorkOptions, WorkHandler } from "pg-boss";
2
+ import PgBoss, { WorkWithMetadataHandler } from "pg-boss";
3
3
  import { Inject } from "@nestjs/common";
4
4
  import { PGBOSS_TOKEN } from "./utils/consts";
5
5
 
@@ -27,19 +27,27 @@ export class PgBossService {
27
27
  async registerCronJob<TData extends object>(
28
28
  name: string,
29
29
  cron: string,
30
- handler: WorkHandler<TData>,
30
+ handler: WorkWithMetadataHandler<TData>,
31
31
  data?: TData,
32
32
  options?: PgBoss.ScheduleOptions,
33
33
  ) {
34
34
  await this.boss.schedule(name, cron, data ?? {}, options ?? {});
35
- await this.boss.work(name, handler);
35
+ await this.boss.work<TData>(
36
+ name,
37
+ { ...options, includeMetadata: true },
38
+ handler,
39
+ );
36
40
  }
37
41
 
38
42
  async registerJob<TData extends object>(
39
43
  name: string,
40
- handler: WorkHandler<TData>,
41
- options?: BatchWorkOptions,
44
+ handler: WorkWithMetadataHandler<TData>,
45
+ options?: PgBoss.BatchWorkOptions,
42
46
  ) {
43
- await this.boss.work(name, options, handler);
47
+ await this.boss.work<TData>(
48
+ name,
49
+ { ...options, includeMetadata: true },
50
+ handler,
51
+ );
44
52
  }
45
53
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavezync/nestjs-pgboss",
3
- "version": "2.0.0",
3
+ "version": "2.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",
@@ -38,7 +38,7 @@ describe("PgBossService", () => {
38
38
 
39
39
  expect(mockPgBoss.work).toHaveBeenCalledWith(
40
40
  "test-job",
41
- { batchSize: 5 },
41
+ { batchSize: 5, includeMetadata: true },
42
42
  handler,
43
43
  );
44
44
  });
@@ -75,7 +75,11 @@ describe("PgBossService", () => {
75
75
  data,
76
76
  { tz: "UTC" },
77
77
  );
78
- expect(mockPgBoss.work).toHaveBeenCalledWith("test-cron-job", handler);
78
+ expect(mockPgBoss.work).toHaveBeenCalledWith(
79
+ "test-cron-job",
80
+ { includeMetadata: true, tz: "UTC" },
81
+ handler,
82
+ );
79
83
  });
80
84
  });
81
85
  });