@shrub/queue 0.5.68 → 0.5.71

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/queue.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { IEvent } from "@sprig/event-emitter";
2
- export declare type WorkerCallback<TData = any> = (job: IJob<TData>) => Promise<void | any>;
2
+ export declare type WorkerCallback<TData = any, TReturnValue = any> = (job: IJob<TData, TReturnValue>) => Promise<void | TReturnValue>;
3
3
  /** Defines the API for a queue. */
4
- export interface IQueue {
4
+ export interface IQueue<TData = any, TReturnValue = any> {
5
5
  /** The name of the queue. */
6
6
  readonly name: string;
7
7
  /** Adds a job to the queue. */
8
- add<TData = any>(options: IJobOptions<TData>): Promise<IJob<TData>>;
8
+ add(options: IJobOptions<TData>): Promise<IJob<TData, TReturnValue>>;
9
9
  /** Closes the queue and all workers associated with the queue. */
10
10
  close(): Promise<void>;
11
11
  /** Creates a new worker for handling/processing jobs. */
12
- createWorker<TData = any>(optionsOrCallback: IWorkerOptions<TData> | WorkerCallback<TData>): IWorker;
12
+ createWorker(optionsOrCallback: IWorkerOptions<TData> | WorkerCallback<TData, TReturnValue>): IWorker;
13
13
  /** Waits until the queue is ready for processing. */
14
14
  waitUntilReady(): Promise<void>;
15
15
  }
@@ -19,7 +19,7 @@ export interface IQueueAdapter {
19
19
  getQueue(name: string): IQueue | undefined;
20
20
  }
21
21
  /** Represents a specific instance of a job in the queue. */
22
- export interface IJob<TData = any> {
22
+ export interface IJob<TData = any, TReturnValue = any> {
23
23
  readonly id: string;
24
24
  readonly name: string;
25
25
  readonly data: TData;
@@ -28,7 +28,7 @@ export interface IJob<TData = any> {
28
28
  readonly isFailed: Promise<boolean>;
29
29
  readonly progress: number | object;
30
30
  updateProgress(progress: number | object): Promise<void>;
31
- waitUntilFinished(): Promise<any>;
31
+ waitUntilFinished(): Promise<TReturnValue>;
32
32
  }
33
33
  /** Defines options for creating jobs. */
34
34
  export interface IJobOptions<TData = any> {
@@ -51,40 +51,40 @@ export interface IJobRepeatOptions {
51
51
  readonly immediate?: boolean;
52
52
  }
53
53
  /** Defines options for registering a process for handling jobs. */
54
- export interface IWorkerOptions<TData = any> {
54
+ export interface IWorkerOptions<TData = any, TReturnValue = any> {
55
55
  /** A callback for handling jobs. */
56
- readonly callback: WorkerCallback<TData>;
56
+ readonly callback: WorkerCallback<TData, TReturnValue>;
57
57
  /** Optionally specifies the maximum number of parallel jobs that can be processed at once; if not specified, the underlying queue's default will be used. */
58
58
  readonly concurrency?: number;
59
59
  }
60
60
  /** Defines a worker responsible for processing jobs. */
61
- export interface IWorker {
61
+ export interface IWorker<TData = any, TReturnValue = any> {
62
62
  /** An event that is raised when a job has becomes active. */
63
- readonly onJobActive: IEvent<IJobActiveEventArgs>;
63
+ readonly onJobActive: IEvent<IJobActiveEventArgs<TData, TReturnValue>>;
64
64
  /** An event that is raised when a job has completed. */
65
- readonly onJobCompleted: IEvent<IJobCompletedEventArgs>;
65
+ readonly onJobCompleted: IEvent<IJobCompletedEventArgs<TData, TReturnValue>>;
66
66
  /** An event that is raised when a job has failed. */
67
- readonly onJobFailed: IEvent<IJobFailedEventArgs>;
67
+ readonly onJobFailed: IEvent<IJobFailedEventArgs<TData, TReturnValue>>;
68
68
  /** An event that is raised when a job has reported progress. */
69
- readonly onJobProgress: IEvent<IJobProgressEventArgs>;
69
+ readonly onJobProgress: IEvent<IJobProgressEventArgs<TData, TReturnValue>>;
70
70
  /** Closes the worker and all underlying connections. */
71
71
  close(): Promise<void>;
72
72
  /** Waits until the worker is ready for processing. */
73
73
  waitUntilReady(): Promise<void>;
74
74
  }
75
- export interface IJobActiveEventArgs {
76
- readonly job: IJob;
75
+ export interface IJobActiveEventArgs<TData = any, TReturnValue = any> {
76
+ readonly job: IJob<TData, TReturnValue>;
77
77
  }
78
- export interface IJobCompletedEventArgs {
79
- readonly job: IJob;
78
+ export interface IJobCompletedEventArgs<TData = any, TReturnValue = any> {
79
+ readonly job: IJob<TData, TReturnValue>;
80
80
  readonly returnValue: any;
81
81
  }
82
- export interface IJobFailedEventArgs {
83
- readonly job: IJob;
82
+ export interface IJobFailedEventArgs<TData = any, TReturnValue = any> {
83
+ readonly job: IJob<TData, TReturnValue>;
84
84
  readonly error: Error;
85
85
  }
86
- export interface IJobProgressEventArgs {
87
- readonly job: IJob;
86
+ export interface IJobProgressEventArgs<TData = any, TReturnValue = any> {
87
+ readonly job: IJob<TData, TReturnValue>;
88
88
  readonly progress: number | object;
89
89
  }
90
90
  /** Base class for a queue adapter that accepts a set of names/patterns defining the queue(s) the adapter supports. */
package/dist/service.d.ts CHANGED
@@ -1,5 +1,9 @@
1
1
  import { IQueue } from "./queue";
2
2
  export interface IQueueService {
3
- getQueue(name: string): IQueue;
3
+ getQueue<TData = any, TReturnValue = any>(name: string | IQueueName<TData, TReturnValue>): IQueue<TData, TReturnValue>;
4
4
  }
5
+ export interface IQueueName<TData = any, TReturnValue = any> {
6
+ readonly name: string;
7
+ }
8
+ export declare const createQueueName: <TData = any, TReturnValue = any>(name: string) => IQueueName<TData, TReturnValue>;
5
9
  export declare const IQueueService: import("@shrub/core").IService<IQueueService>;
package/dist/service.js CHANGED
@@ -6,9 +6,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.QueueService = exports.IQueueAdapterService = exports.IQueueService = void 0;
9
+ exports.QueueService = exports.IQueueAdapterService = exports.IQueueService = exports.createQueueName = void 0;
10
10
  const core_1 = require("@shrub/core");
11
11
  const queue_1 = require("./queue");
12
+ const createQueueName = (name) => ({ name });
13
+ exports.createQueueName = createQueueName;
12
14
  exports.IQueueService = core_1.createService("queue-service");
13
15
  /** @internal */
14
16
  exports.IQueueAdapterService = core_1.createService("queue-adapter-service");
@@ -17,7 +19,8 @@ let QueueService = class QueueService {
17
19
  constructor() {
18
20
  this.adapters = new queue_1.QueueAdapterCollection();
19
21
  }
20
- getQueue(name) {
22
+ getQueue(queueName) {
23
+ const name = typeof queueName === "string" ? queueName : queueName.name;
21
24
  const queue = this.adapters.asQueueAdapter().getQueue(name);
22
25
  if (!queue) {
23
26
  throw new Error(`No queue adapter found to handle queue with name (${name}).`);
@@ -32,4 +35,4 @@ QueueService = __decorate([
32
35
  core_1.Singleton
33
36
  ], QueueService);
34
37
  exports.QueueService = QueueService;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNDQUF1RDtBQUN2RCxtQ0FBd0U7QUFZM0QsUUFBQSxhQUFhLEdBQUcsb0JBQWEsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFFM0UsZ0JBQWdCO0FBQ0gsUUFBQSxvQkFBb0IsR0FBRyxvQkFBYSxDQUF1Qix1QkFBdUIsQ0FBQyxDQUFDO0FBRWpHLGdCQUFnQjtBQUVoQixJQUFhLFlBQVksR0FBekIsTUFBYSxZQUFZO0lBQXpCO1FBQ3FCLGFBQVEsR0FBRyxJQUFJLDhCQUFzQixFQUFFLENBQUM7SUFlN0QsQ0FBQztJQWJHLFFBQVEsQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxJQUFJLElBQUksQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFzQjtRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0osQ0FBQTtBQWhCWSxZQUFZO0lBRHhCLGdCQUFTO0dBQ0csWUFBWSxDQWdCeEI7QUFoQlksb0NBQVkifQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNDQUF1RDtBQUN2RCxtQ0FBd0U7QUFnQmpFLE1BQU0sZUFBZSxHQUFHLENBQWtDLElBQVksRUFBbUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQWpILFFBQUEsZUFBZSxtQkFBa0c7QUFFakgsUUFBQSxhQUFhLEdBQUcsb0JBQWEsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFFM0UsZ0JBQWdCO0FBQ0gsUUFBQSxvQkFBb0IsR0FBRyxvQkFBYSxDQUF1Qix1QkFBdUIsQ0FBQyxDQUFDO0FBRWpHLGdCQUFnQjtBQUVoQixJQUFhLFlBQVksR0FBekIsTUFBYSxZQUFZO0lBQXpCO1FBQ3FCLGFBQVEsR0FBRyxJQUFJLDhCQUFzQixFQUFFLENBQUM7SUFnQjdELENBQUM7SUFkRyxRQUFRLENBQUMsU0FBOEI7UUFDbkMsTUFBTSxJQUFJLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDeEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELElBQUksSUFBSSxDQUFDLENBQUM7U0FDbEY7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXNCO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSixDQUFBO0FBakJZLFlBQVk7SUFEeEIsZ0JBQVM7R0FDRyxZQUFZLENBaUJ4QjtBQWpCWSxvQ0FBWSJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shrub/queue",
3
3
  "description": "Provides a basic abstraction and support for job/task queues.",
4
- "version": "0.5.68",
4
+ "version": "0.5.71",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,9 +25,9 @@
25
25
  "test": "jest"
26
26
  },
27
27
  "dependencies": {
28
- "@shrub/core": "0.5.68",
29
- "@shrub/logging": "0.5.68",
30
- "@sprig/event-emitter": "^0.2.1"
28
+ "@shrub/core": "0.5.71",
29
+ "@shrub/logging": "0.5.71",
30
+ "@sprig/event-emitter": "^0.2.2"
31
31
  },
32
- "gitHead": "5cd38a0008a78426f1d43526db577eea75407b9f"
32
+ "gitHead": "d9539767f177e4f88d1daccb3205c39316056587"
33
33
  }