@clipboard-health/mongo-jobs 0.1.4 → 0.3.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/README.md CHANGED
@@ -55,16 +55,16 @@ export class WelcomeEmailJob implements HandlerInterface<WelcomeEmailData> {
55
55
 
56
56
  ### 2. Create a service and register handlers
57
57
 
58
- Create a `BackgroundJobsService` instance and register your handlers to groups:
58
+ Create a `BackgroundJobs` instance and register your handlers to groups:
59
59
 
60
60
  <embedex source="packages/mongo-jobs/examples/quickstart/jobsRegistry.ts">
61
61
 
62
62
  ```ts
63
- import { BackgroundJobsService } from "@clipboard-health/mongo-jobs";
63
+ import { BackgroundJobs } from "@clipboard-health/mongo-jobs";
64
64
 
65
65
  import { WelcomeEmailJob } from "./welcomeEmailJob";
66
66
 
67
- const backgroundJobs = new BackgroundJobsService();
67
+ const backgroundJobs = new BackgroundJobs();
68
68
 
69
69
  backgroundJobs.register(WelcomeEmailJob, "emails");
70
70
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clipboard-health/mongo-jobs",
3
3
  "description": "MongoDB-powered background jobs.",
4
- "version": "0.1.4",
4
+ "version": "0.3.0",
5
5
  "bugs": "https://github.com/ClipboardHealth/core-utils/issues",
6
6
  "dependencies": {
7
7
  "cron-parser": "5.4.0",
@@ -9,7 +9,7 @@
9
9
  "tslib": "2.8.1"
10
10
  },
11
11
  "devDependencies": {
12
- "@clipboard-health/util-ts": "3.17.4",
12
+ "@clipboard-health/util-ts": "3.18.0",
13
13
  "@opentelemetry/api": "1.9.0",
14
14
  "mongodb": "6.18.0",
15
15
  "mongoose": "8.18.0"
@@ -13,7 +13,7 @@ export interface ConstructorOptions {
13
13
  metricsReporter?: MetricsReporter;
14
14
  allowHandlerOverride?: boolean;
15
15
  }
16
- export declare class BackgroundJobsService {
16
+ export declare class BackgroundJobs {
17
17
  readonly jobModel: mongoose.Model<BackgroundJobType<unknown>>;
18
18
  readonly scheduleModel: mongoose.Model<ScheduleType<unknown>>;
19
19
  readonly jobsRepo: JobsRepository;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BackgroundJobsService = void 0;
3
+ exports.BackgroundJobs = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const mongoose_1 = tslib_1.__importDefault(require("mongoose"));
6
6
  const cron_1 = require("./internal/cron");
@@ -10,7 +10,7 @@ const registry_1 = require("./internal/registry");
10
10
  const worker_1 = require("./internal/worker");
11
11
  const job_1 = require("./job");
12
12
  const schedule_1 = require("./schedule");
13
- class BackgroundJobsService {
13
+ class BackgroundJobs {
14
14
  jobModel;
15
15
  scheduleModel;
16
16
  jobsRepo;
@@ -104,5 +104,5 @@ class BackgroundJobsService {
104
104
  await this.jobsRepo.deleteJobs(jobObjectIds, options);
105
105
  }
106
106
  }
107
- exports.BackgroundJobsService = BackgroundJobsService;
107
+ exports.BackgroundJobs = BackgroundJobs;
108
108
  //# sourceMappingURL=backgroundJobs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundJobs.js","sourceRoot":"","sources":["../../../../../packages/mongo-jobs/src/lib/backgroundJobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundJobs.js","sourceRoot":"","sources":["../../../../../packages/mongo-jobs/src/lib/backgroundJobs.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { BackgroundJobsService } from "./backgroundJobs";
1
+ import type { BackgroundJobs } from "./backgroundJobs";
2
2
  import type { AnyHandlerClass } from "./internal/registry";
3
3
  interface DrainOptions {
4
4
  jobsScheduledUntil?: Date;
5
5
  recursive?: boolean;
6
6
  }
7
- export declare function drainQueues(backgroundJobs: BackgroundJobsService, groups: string[], options?: DrainOptions): Promise<void>;
8
- export declare function drainHandlers(backgroundJobs: BackgroundJobsService, handlers: Array<AnyHandlerClass<unknown> | string>, options?: DrainOptions): Promise<void>;
7
+ export declare function drainQueues(backgroundJobs: BackgroundJobs, groups: string[], options?: DrainOptions): Promise<void>;
8
+ export declare function drainHandlers(backgroundJobs: BackgroundJobs, handlers: Array<AnyHandlerClass<unknown> | string>, options?: DrainOptions): Promise<void>;
9
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../../packages/mongo-jobs/src/lib/testing.ts"],"names":[],"mappings":";;AAuCA,kCASC;AAGD,sCAWC;AApDD,KAAK,UAAU,WAAW,CACxB,cAAqC,EACrC,MAAc,EACd,MAAgB,EAChB,UAAwB,EAAE;IAE1B,SAAS,CAAC;QACR,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI,IAAI,EAAE,EAAE;YAC7D,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,4CAA4C;AACrC,KAAK,UAAU,WAAW,CAC/B,cAAqC,EACrC,MAAgB,EAChB,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAElD,MAAM,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,gCAAgC;AACzB,KAAK,UAAU,aAAa,CACjC,cAAqC,EACrC,QAAkD,EAClD,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CACzB,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,CACzE,CAAC;IACF,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1E,MAAM,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AACD,oCAAoC"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../../packages/mongo-jobs/src/lib/testing.ts"],"names":[],"mappings":";;AAuCA,kCASC;AAGD,sCAWC;AApDD,KAAK,UAAU,WAAW,CACxB,cAA8B,EAC9B,MAAc,EACd,MAAgB,EAChB,UAAwB,EAAE;IAE1B,SAAS,CAAC;QACR,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI,IAAI,EAAE,EAAE;YAC7D,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,4CAA4C;AACrC,KAAK,UAAU,WAAW,CAC/B,cAA8B,EAC9B,MAAgB,EAChB,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAElD,MAAM,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,gCAAgC;AACzB,KAAK,UAAU,aAAa,CACjC,cAA8B,EAC9B,QAAkD,EAClD,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CACzB,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,CACzE,CAAC;IACF,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1E,MAAM,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AACD,oCAAoC"}