@wisemen/pgboss-nestjs-job 2.2.1 → 3.0.1

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/README.md CHANGED
@@ -17,6 +17,9 @@ Make sure that the env variable `DATABASE_URI` is defined.
17
17
  fetchRefreshThreshold, // Refresh threshold to fetch jobs
18
18
  pollInterval, // The interval (in milliseconds) to poll for new jobs
19
19
  bouncerModule // An optional bouncer which will prevent jobs from being fetched
20
+ databaseOptions: {
21
+ // ...
22
+ }
20
23
  })
21
24
  ]
22
25
  })
@@ -35,7 +38,7 @@ const _worker = new Worker()
35
38
 
36
39
  ```ts
37
40
  export interface MyJobData extends BaseJobData {
38
- uuid: string
41
+ uuid: string;
39
42
  // other data here
40
43
  }
41
44
  ```
@@ -43,7 +46,7 @@ export interface MyJobData extends BaseJobData {
43
46
  3. Create a job definition
44
47
 
45
48
  ```ts
46
- @PgBossJob('queue-name')
49
+ @PgBossJob("queue-name")
47
50
  export class MyJob extends BaseJob<MyJobData> {}
48
51
  ```
49
52
 
@@ -53,14 +56,14 @@ export class MyJob extends BaseJob<MyJobData> {}
53
56
  @Injectable()
54
57
  @PgBossJobHandler(MyJob)
55
58
  export class MyJobHandler extends JobHandler<MyJob> {
56
- public async run (data: MyJobData): Promise<void> {
59
+ public async run(data: MyJobData): Promise<void> {
57
60
  // Do stuff
58
61
  }
59
62
  }
60
63
  ```
61
64
 
62
-
63
65
  ## QueueBouncer
66
+
64
67
  Some workers / queues only need to run when some external service is online. The `QueueBouncer` base class is used by workers to determine wether they should poll for jobs or not by calling the `canProceed` method on the bouncer. This method typically performs the health check on an external service.
65
68
 
66
69
  The queuebouncer is provided to the worker by creating and exportin a provider for the `QueueBouncer` class. An example module can be:
@@ -81,43 +84,41 @@ export class CuoptWorkerBouncerModule {}
81
84
  When no bouncer is set, the package will default to `AllowBouncer` which never blocks a worker / queue from polling for jobs.
82
85
 
83
86
  An example of a bouncer for an external cuopt system.
87
+
84
88
  ```typescript
85
89
  @Injectable()
86
90
  export class CuoptWorkerBouncer extends QueueBouncer {
87
- private isCuoptRunning: boolean
88
- private lastPolledAt: Date
89
- private pollPromise: Promise<boolean> | undefined
90
-
91
- constructor (
92
- private cuopt: CuoptClient
93
- ) {
94
- super()
91
+ private isCuoptRunning: boolean;
92
+ private lastPolledAt: Date;
93
+ private pollPromise: Promise<boolean> | undefined;
94
+
95
+ constructor(private cuopt: CuoptClient) {
96
+ super();
95
97
  }
96
98
 
97
- async canProceed (): Promise<boolean> {
98
- if (dayjs().diff(this.lastPolledAt, 'seconds') > 2) {
99
- await this.pollCuopt()
99
+ async canProceed(): Promise<boolean> {
100
+ if (dayjs().diff(this.lastPolledAt, "seconds") > 2) {
101
+ await this.pollCuopt();
100
102
  }
101
103
 
102
- return this.isCuoptRunning
104
+ return this.isCuoptRunning;
103
105
  }
104
106
 
105
- private async pollCuopt () {
107
+ private async pollCuopt() {
106
108
  if (this.pollPromise !== undefined) {
107
- await this.pollPromise
108
- return
109
+ await this.pollPromise;
110
+ return;
109
111
  }
110
112
 
111
- this.pollPromise = this.cuopt.isReady()
113
+ this.pollPromise = this.cuopt.isReady();
112
114
 
113
115
  try {
114
- this.isCuoptRunning = await this.pollPromise
116
+ this.isCuoptRunning = await this.pollPromise;
115
117
  } catch {
116
- this.isCuoptRunning = false
118
+ this.isCuoptRunning = false;
117
119
  } finally {
118
- this.lastPolledAt = new Date()
120
+ this.lastPolledAt = new Date();
119
121
  }
120
122
  }
121
123
  }
122
-
123
- ```
124
+ ```
@@ -0,0 +1,11 @@
1
+ import { DynamicModule, InjectionToken, OptionalFactoryDependency } from "@nestjs/common";
2
+ import { ConstructorOptions } from "pg-boss";
3
+ export type PgBossClientConfig = {
4
+ pgBossOptions: ConstructorOptions;
5
+ onClientError?: (error: Error) => Promise<void> | void;
6
+ };
7
+ export interface PgBossClientAsyncConfig {
8
+ imports?: Array<DynamicModule | Promise<DynamicModule>>;
9
+ useFactory: (...args: unknown[]) => Promise<PgBossClientConfig> | PgBossClientConfig;
10
+ inject?: Array<InjectionToken | OptionalFactoryDependency>;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pgboss-client.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgboss-client.config.js","sourceRoot":"","sources":["../../lib/client/pgboss-client.config.ts"],"names":[],"mappings":""}
@@ -1,11 +1,9 @@
1
1
  import { type OnModuleDestroy, type OnModuleInit } from '@nestjs/common';
2
2
  import { PgBoss } from 'pg-boss';
3
- export interface PgBossClientConfig {
4
- onClientError?: (error: Error) => Promise<void> | void;
5
- }
3
+ import { PgBossClientConfig } from './pgboss-client.config.js';
6
4
  export declare class PgBossClient extends PgBoss implements OnModuleInit, OnModuleDestroy {
7
- private readonly config?;
8
- constructor(config?: PgBossClientConfig | undefined);
5
+ private readonly options;
6
+ constructor(options: PgBossClientConfig);
9
7
  onModuleInit(): Promise<void>;
10
8
  onModuleDestroy(): Promise<void>;
11
9
  }
@@ -12,22 +12,16 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { Inject, Injectable } from '@nestjs/common';
14
14
  import { PgBoss } from 'pg-boss';
15
+ import { PG_BOSS_CLIENT_OPTIONS } from './pgboss-client.module.js';
15
16
  let PgBossClient = class PgBossClient extends PgBoss {
16
- config;
17
- constructor(config) {
18
- super({
19
- user: process.env.DB_USERNAME,
20
- password: process.env.DB_PASSWORD,
21
- host: process.env.DB_HOST,
22
- port: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : undefined,
23
- database: process.env.DB_NAME,
24
- // ssl: process.env.DB_SSL === 'true' ? { rejectUnauthorized: false } : undefined
25
- });
26
- this.config = config;
17
+ options;
18
+ constructor(options) {
19
+ super(options.pgBossOptions);
20
+ this.options = options;
27
21
  }
28
22
  async onModuleInit() {
29
23
  await this.start();
30
- this.on('error', this.config?.onClientError ?? ((error) => { process.exit('1'); }));
24
+ this.on('error', this.options.onClientError ?? ((error) => { process.exit('1'); }));
31
25
  }
32
26
  async onModuleDestroy() {
33
27
  await this.stop();
@@ -35,7 +29,7 @@ let PgBossClient = class PgBossClient extends PgBoss {
35
29
  };
36
30
  PgBossClient = __decorate([
37
31
  Injectable(),
38
- __param(0, Inject('PG_BOSS_CLIENT_CONFIG')),
32
+ __param(0, Inject(PG_BOSS_CLIENT_OPTIONS)),
39
33
  __metadata("design:paramtypes", [Object])
40
34
  ], PgBossClient);
41
35
  export { PgBossClient };
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss-client.js","sourceRoot":"","sources":["../../lib/client/pgboss-client.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2C,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAOzB,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,MAAM;IAEc;IADpD,YACoD,MAA2B;QAE7E,KAAK,CAAC;YACJ,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YAC7B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YACjC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;YACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACrE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;YAC7B,iFAAiF;SAClF,CAAC,CAAA;QATgD,WAAM,GAAN,MAAM,CAAqB;IAU/E,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,GAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;CACF,CAAA;AAtBY,YAAY;IADxB,UAAU,EAAE;IAGR,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;;GAFvB,YAAY,CAsBxB"}
1
+ {"version":3,"file":"pgboss-client.js","sourceRoot":"","sources":["../../lib/client/pgboss-client.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2C,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAI3D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,MAAM;IAEa;IADnD,YACmD,OAA2B;QAE5E,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAFqB,YAAO,GAAP,OAAO,CAAoB;IAG9E,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,GAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;CACF,CAAA;AAfY,YAAY;IADxB,UAAU,EAAE;IAGR,WAAA,MAAM,CAAC,sBAAsB,CAAC,CAAA;;GAFtB,YAAY,CAexB"}
@@ -1,5 +1,7 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
- import { PgBossClientConfig } from './pgboss-client.js';
2
+ import { PgBossClientAsyncConfig, PgBossClientConfig } from './pgboss-client.config.js';
3
+ export declare const PG_BOSS_CLIENT_OPTIONS = "PG_BOSS_CLIENT_OPTIONS";
3
4
  export declare class PgBossClientModule {
4
- static forRoot(config?: PgBossClientConfig): DynamicModule;
5
+ static forRoot(options: PgBossClientConfig): DynamicModule;
6
+ static forRootAsync(options: PgBossClientAsyncConfig): DynamicModule;
5
7
  }
@@ -7,20 +7,37 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var PgBossClientModule_1;
8
8
  import { Module } from '@nestjs/common';
9
9
  import { PgBossClient } from './pgboss-client.js';
10
+ export const PG_BOSS_CLIENT_OPTIONS = 'PG_BOSS_CLIENT_OPTIONS';
10
11
  let PgBossClientModule = PgBossClientModule_1 = class PgBossClientModule {
11
- static forRoot(config) {
12
+ static forRoot(options) {
12
13
  return {
13
14
  module: PgBossClientModule_1,
14
15
  providers: [
15
16
  {
16
- provide: 'PG_BOSS_CLIENT_CONFIG',
17
- useValue: config
17
+ provide: PG_BOSS_CLIENT_OPTIONS,
18
+ useValue: options
18
19
  },
19
20
  PgBossClient
20
21
  ],
21
22
  exports: [PgBossClient]
22
23
  };
23
24
  }
25
+ static forRootAsync(options) {
26
+ const optionsProvider = {
27
+ provide: PG_BOSS_CLIENT_OPTIONS,
28
+ useFactory: options.useFactory,
29
+ inject: options.inject || []
30
+ };
31
+ return {
32
+ module: PgBossClientModule_1,
33
+ imports: options.imports ?? [],
34
+ providers: [
35
+ optionsProvider,
36
+ PgBossClient
37
+ ],
38
+ exports: [PgBossClient]
39
+ };
40
+ }
24
41
  };
25
42
  PgBossClientModule = PgBossClientModule_1 = __decorate([
26
43
  Module({})
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss-client.module.js","sourceRoot":"","sources":["../../lib/client/pgboss-client.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAsB,MAAM,oBAAoB,CAAA;AAG9D,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAC,MAA2B;QACxC,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,MAAM;iBACjB;gBACD,YAAY;aACb;YACD,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAA;IACH,CAAC;CACF,CAAA;AAdY,kBAAkB;IAD9B,MAAM,CAAC,EAAE,CAAC;GACE,kBAAkB,CAc9B"}
1
+ {"version":3,"file":"pgboss-client.module.js","sourceRoot":"","sources":["../../lib/client/pgboss-client.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiC,MAAM,EAAuC,MAAM,gBAAgB,CAAA;AAC3G,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AAGvD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAC,OAA2B;QACxC,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,QAAQ,EAAE,OAAO;iBAClB;gBACD,YAAY;aACb;YACD,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAgC;QAClD,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAA;QAED,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT,eAAe;gBACf,YAAY;aACb;YACD,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAA;IACH,CAAC;CACF,CAAA;AAhCY,kBAAkB;IAD9B,MAAM,CAAC,EAAE,CAAC;GACE,kBAAkB,CAgC9B"}
package/dist/index.d.ts CHANGED
@@ -8,5 +8,5 @@ export { BaseJob, BaseJobData } from './jobs/base-job.js';
8
8
  export { JobHandler } from './jobs/job-handler.js';
9
9
  export { PgBossSchedulerModule } from './scheduler/pgboss-scheduler.module.js';
10
10
  export { PgBossScheduler } from './scheduler/pgboss-scheduler.service.js';
11
- export { PgBossClient, PgBossClientConfig } from './client/pgboss-client.js';
12
11
  export { PgBossClientModule } from './client/pgboss-client.module.js';
12
+ export { PgBossClient } from './client/pgboss-client.js';
package/dist/index.js CHANGED
@@ -12,6 +12,6 @@ export { JobHandler } from './jobs/job-handler.js';
12
12
  export { PgBossSchedulerModule } from './scheduler/pgboss-scheduler.module.js';
13
13
  export { PgBossScheduler } from './scheduler/pgboss-scheduler.service.js';
14
14
  // Client
15
- export { PgBossClient } from './client/pgboss-client.js';
16
15
  export { PgBossClientModule } from './client/pgboss-client.module.js';
16
+ export { PgBossClient } from './client/pgboss-client.js';
17
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,WAAW;AACX,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAEjD,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,kBAAkB;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAEzE,SAAS;AACT,OAAO,EAAE,YAAY,EAAsB,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,WAAW;AACX,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAEjD,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,kBAAkB;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAEzE,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { InjectionToken, OptionalFactoryDependency, Type } from "@nestjs/common";
2
+ import { DatabaseOptions } from "pg-boss/dist/types.js";
3
+ export type PgBossSchedulerConfig = {
4
+ databaseOptions: DatabaseOptions;
5
+ };
6
+ export interface PgBossSchedulerAsyncConfig {
7
+ imports?: Type<unknown>[];
8
+ useFactory: (...args: unknown[]) => Promise<PgBossSchedulerConfig> | PgBossSchedulerConfig;
9
+ inject?: Array<InjectionToken | OptionalFactoryDependency>;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pgboss-scheduler.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgboss-scheduler.config.js","sourceRoot":"","sources":["../../lib/scheduler/pgboss-scheduler.config.ts"],"names":[],"mappings":""}
@@ -1,2 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { PgBossSchedulerAsyncConfig, PgBossSchedulerConfig } from './pgboss-scheduler.config.js';
1
3
  export declare class PgBossSchedulerModule {
4
+ static forRoot(options: PgBossSchedulerConfig): DynamicModule;
5
+ static forRootAsync(options: PgBossSchedulerAsyncConfig): DynamicModule;
2
6
  }
@@ -4,23 +4,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ var PgBossSchedulerModule_1;
7
8
  import { Module } from '@nestjs/common';
8
9
  import { PgBossClientModule } from '../client/pgboss-client.module.js';
9
10
  import { PgBossScheduler } from './pgboss-scheduler.service.js';
10
- let PgBossSchedulerModule = class PgBossSchedulerModule {
11
+ let PgBossSchedulerModule = PgBossSchedulerModule_1 = class PgBossSchedulerModule {
12
+ static forRoot(options) {
13
+ return {
14
+ module: PgBossSchedulerModule_1,
15
+ imports: [
16
+ PgBossClientModule.forRoot({
17
+ pgBossOptions: options.databaseOptions
18
+ })
19
+ ],
20
+ providers: [PgBossScheduler],
21
+ exports: [PgBossScheduler],
22
+ };
23
+ }
24
+ static forRootAsync(options) {
25
+ return {
26
+ module: PgBossSchedulerModule_1,
27
+ imports: [
28
+ ...(options.imports ?? []),
29
+ PgBossClientModule.forRootAsync({
30
+ useFactory: async (...args) => {
31
+ const opts = await options.useFactory(...args);
32
+ return {
33
+ pgBossOptions: opts.databaseOptions
34
+ };
35
+ },
36
+ inject: options.inject ?? []
37
+ })
38
+ ],
39
+ providers: [PgBossScheduler],
40
+ exports: [PgBossScheduler],
41
+ };
42
+ }
11
43
  };
12
- PgBossSchedulerModule = __decorate([
13
- Module({
14
- imports: [
15
- PgBossClientModule.forRoot()
16
- ],
17
- providers: [
18
- PgBossScheduler
19
- ],
20
- exports: [
21
- PgBossScheduler
22
- ]
23
- })
44
+ PgBossSchedulerModule = PgBossSchedulerModule_1 = __decorate([
45
+ Module({})
24
46
  ], PgBossSchedulerModule);
25
47
  export { PgBossSchedulerModule };
26
48
  //# sourceMappingURL=pgboss-scheduler.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss-scheduler.module.js","sourceRoot":"","sources":["../../lib/scheduler/pgboss-scheduler.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAaxD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,qBAAqB;IAXjC,MAAM,CAAC;QACN,OAAO,EAAE;YACP,kBAAkB,CAAC,OAAO,EAAE;SAC7B;QACD,SAAS,EAAE;YACT,eAAe;SAChB;QACD,OAAO,EAAE;YACP,eAAe;SAChB;KACF,CAAC;GACW,qBAAqB,CAAG"}
1
+ {"version":3,"file":"pgboss-scheduler.module.js","sourceRoot":"","sources":["../../lib/scheduler/pgboss-scheduler.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiC,MAAM,EAAmC,MAAM,gBAAgB,CAAA;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAGxD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAChC,MAAM,CAAC,OAAO,CAAC,OAA8B;QAC3C,OAAO;YACL,MAAM,EAAE,uBAAqB;YAC7B,OAAO,EAAE;gBACP,kBAAkB,CAAC,OAAO,CAAC;oBACzB,aAAa,EAAE,OAAO,CAAC,eAAe;iBACvC,CAAC;aACH;YACD,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,OAAO,EAAE,CAAC,eAAe,CAAC;SAC3B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAmC;QACrD,OAAO;YACL,MAAM,EAAE,uBAAqB;YAC7B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,kBAAkB,CAAC,YAAY,CAAC;oBAC9B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;wBACvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;wBAC9C,OAAO;4BACL,aAAa,EAAE,IAAI,CAAC,eAAe;yBACpC,CAAA;oBACH,CAAC;oBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B,CAAC;aACH;YACD,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,OAAO,EAAE,CAAC,eAAe,CAAC;SAC3B,CAAA;IACH,CAAC;CACF,CAAA;AAjCY,qBAAqB;IADjC,MAAM,CAAC,EAAE,CAAC;GACE,qBAAqB,CAiCjC"}
@@ -1,12 +1,12 @@
1
- import { Type } from "@nestjs/common";
2
- import { PgBossClientConfig } from "../client/pgboss-client.js";
1
+ import { InjectionToken, OptionalFactoryDependency, Type } from "@nestjs/common";
2
+ import { DatabaseOptions } from "pg-boss/dist/types.js";
3
3
  export interface PgBossWorkerConfig {
4
4
  queueName: string;
5
5
  concurrency?: number;
6
6
  pollInterval?: number;
7
7
  batchSize?: number;
8
8
  fetchRefreshThreshold?: number;
9
- client?: PgBossClientConfig;
9
+ databaseOptions: DatabaseOptions;
10
10
  /**
11
11
  * The bouncer can prevent the worker from polling for jobs.
12
12
  * A bouncer is provided as a nestjs module with a provider for QueuBouncer.
@@ -17,3 +17,8 @@ export interface PgBossWorkerConfig {
17
17
  */
18
18
  bouncerModule?: Type<any>;
19
19
  }
20
+ export interface PgBossWorkerAsyncConfig {
21
+ imports?: Type<unknown>[];
22
+ useFactory: (...args: unknown[]) => Promise<PgBossWorkerConfig> | PgBossWorkerConfig;
23
+ inject?: Array<InjectionToken | OptionalFactoryDependency>;
24
+ }
@@ -16,6 +16,7 @@ import { PgBossClient } from '../client/pgboss-client.js';
16
16
  import { JobRegistry } from '../jobs/job.registry.js';
17
17
  import { PgBossWorkerThread } from './pgboss-worker.thread.js';
18
18
  import { AllowBouncer, QueueBouncer } from './queue-bouncer.js';
19
+ import { PG_BOSS_WORKER_CONFIG } from './pgboss-worker.module.js';
19
20
  let PgBossWorker = class PgBossWorker {
20
21
  client;
21
22
  jobRegistry;
@@ -109,7 +110,7 @@ let PgBossWorker = class PgBossWorker {
109
110
  };
110
111
  PgBossWorker = __decorate([
111
112
  Injectable(),
112
- __param(0, Inject('PG_BOSS_WORKER_CONFIG')),
113
+ __param(0, Inject(PG_BOSS_WORKER_CONFIG)),
113
114
  __param(1, Optional()),
114
115
  __param(1, Inject(QueueBouncer)),
115
116
  __metadata("design:paramtypes", [Object, Object, PgBossClient,
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss-worker.js","sourceRoot":"","sources":["../../lib/worker/pgboss-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgboss-worker.js","sourceRoot":"","sources":["../../lib/worker/pgboss-worker.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { type DynamicModule } from '@nestjs/common';
2
- import { PgBossWorkerConfig } from './pgboss-worker.config.js';
2
+ import { PgBossWorkerAsyncConfig, PgBossWorkerConfig } from './pgboss-worker.config.js';
3
+ export declare const PG_BOSS_WORKER_CONFIG = "PG_BOSS_WORKER_CONFIG";
3
4
  export declare class PgBossWorkerModule {
4
- static forRoot(config: PgBossWorkerConfig): DynamicModule;
5
+ static forRoot(options: PgBossWorkerConfig): DynamicModule;
6
+ static forRootAsync(options: PgBossWorkerAsyncConfig): DynamicModule;
5
7
  }
@@ -9,27 +9,52 @@ import { Module } from '@nestjs/common';
9
9
  import { JobModule } from '../jobs/job.module.js';
10
10
  import { PgBossClientModule } from '../client/pgboss-client.module.js';
11
11
  import { PgBossWorker } from './pgboss-worker.js';
12
+ export const PG_BOSS_WORKER_CONFIG = 'PG_BOSS_WORKER_CONFIG';
12
13
  let PgBossWorkerModule = PgBossWorkerModule_1 = class PgBossWorkerModule {
13
- static forRoot(config) {
14
- const module = {
14
+ static forRoot(options) {
15
+ return {
15
16
  module: PgBossWorkerModule_1,
16
17
  imports: [
18
+ PgBossClientModule.forRoot({
19
+ pgBossOptions: options.databaseOptions
20
+ }),
17
21
  JobModule,
18
- PgBossClientModule.forRoot(config.client),
22
+ ...(options.bouncerModule ? [options.bouncerModule] : []),
19
23
  ],
20
24
  providers: [
21
25
  {
22
- provide: 'PG_BOSS_WORKER_CONFIG',
23
- useValue: config
26
+ provide: PG_BOSS_WORKER_CONFIG,
27
+ useValue: options
28
+ },
29
+ PgBossWorker
30
+ ],
31
+ };
32
+ }
33
+ static forRootAsync(options) {
34
+ return {
35
+ module: PgBossWorkerModule_1,
36
+ imports: [
37
+ ...(options.imports ?? []),
38
+ PgBossClientModule.forRootAsync({
39
+ useFactory: async (...args) => {
40
+ const opts = await options.useFactory(...args);
41
+ return {
42
+ pgBossOptions: opts.databaseOptions
43
+ };
44
+ },
45
+ inject: options.inject ?? []
46
+ }),
47
+ JobModule,
48
+ ],
49
+ providers: [
50
+ {
51
+ provide: PG_BOSS_WORKER_CONFIG,
52
+ useFactory: options.useFactory,
53
+ inject: options.inject ?? []
24
54
  },
25
55
  PgBossWorker
26
56
  ],
27
- exports: []
28
57
  };
29
- if (config.bouncerModule) {
30
- module.imports.push(config.bouncerModule);
31
- }
32
- return module;
33
58
  }
34
59
  };
35
60
  PgBossWorkerModule = PgBossWorkerModule_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"pgboss-worker.module.js","sourceRoot":"","sources":["../../lib/worker/pgboss-worker.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI1C,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAE,MAA0B;QACxC,MAAM,MAAM,GAAkB;YAC5B,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE;gBACP,SAAS;gBACT,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;aAC1C;YACD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,MAAM;iBACjB;gBACD,YAAY;aACb;YACD,OAAO,EAAE,EAAE;SACZ,CAAA;QAED,IAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,CAAC,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC5C,CAAC;QAED,OAAQ,MAAM,CAAA;IAChB,CAAC;CACF,CAAA;AAxBY,kBAAkB;IAD9B,MAAM,CAAC,EAAE,CAAC;GACE,kBAAkB,CAwB9B"}
1
+ {"version":3,"file":"pgboss-worker.module.js","sourceRoot":"","sources":["../../lib/worker/pgboss-worker.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsC,MAAM,EAAmC,MAAM,gBAAgB,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAGrD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAC,OAA2B;QACxC,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE;gBACP,kBAAkB,CAAC,OAAO,CAAC;oBACzB,aAAa,EAAE,OAAO,CAAC,eAAe;iBACvC,CAAC;gBACF,SAAS;gBACT,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D;YACD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,QAAQ,EAAE,OAAO;iBAClB;gBACD,YAAY;aACb;SACF,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAgC;QAClD,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,kBAAkB,CAAC,YAAY,CAAC;oBAC9B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;wBACvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;wBAC9C,OAAO;4BACL,aAAa,EAAE,IAAI,CAAC,eAAe;yBACpC,CAAA;oBACH,CAAC;oBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B,CAAC;gBACF,SAAS;aACV;YACD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B;gBACD,YAAY;aACb;SACF,CAAA;IACH,CAAC;CACF,CAAA;AA/CY,kBAAkB;IAD9B,MAAM,CAAC,EAAE,CAAC;GACE,kBAAkB,CA+C9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/pgboss-nestjs-job",
3
- "version": "2.2.1",
3
+ "version": "3.0.1",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",
@@ -23,6 +23,9 @@
23
23
  "type": "git",
24
24
  "url": "git@github.com:wisemen-digital/node-core.git"
25
25
  },
26
+ "dependencies": {
27
+ "pg-boss": "^12.5.2"
28
+ },
26
29
  "peerDependencies": {
27
30
  "@nestjs/common": "^11.1.9",
28
31
  "@nestjs/core": "^11.1.9",
@@ -31,7 +34,6 @@
31
34
  "@wisemen/nestjs-typeorm": "^0.0.37",
32
35
  "@wisemen/opentelemetry": "^0.0.6",
33
36
  "colors": "^1.4.0",
34
- "pg-boss": "^12.5.2",
35
37
  "rxjs": "^7.8.2",
36
38
  "typeorm": "^0.3.28"
37
39
  },