@alanszp/queue 9.2.4 → 9.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.
Files changed (63) hide show
  1. package/dist/errors/JobCannotBePromotedError.d.ts +10 -0
  2. package/dist/errors/JobCannotBePromotedError.js +25 -0
  3. package/dist/errors/JobCannotBePromotedError.js.map +1 -0
  4. package/dist/errors/JobNotFoundError.d.ts +8 -0
  5. package/dist/errors/JobNotFoundError.js +23 -0
  6. package/dist/errors/JobNotFoundError.js.map +1 -0
  7. package/dist/jobsManagement/commands/asyncCreationCommands.d.ts +7 -0
  8. package/dist/jobsManagement/commands/asyncCreationCommands.js +45 -0
  9. package/dist/jobsManagement/commands/asyncCreationCommands.js.map +1 -0
  10. package/dist/jobsManagement/commands/getCommands.d.ts +8 -0
  11. package/dist/jobsManagement/commands/getCommands.js +47 -0
  12. package/dist/jobsManagement/commands/getCommands.js.map +1 -0
  13. package/dist/jobsManagement/commands/workerHealthCommand.d.ts +2 -0
  14. package/dist/jobsManagement/commands/workerHealthCommand.js +10 -0
  15. package/dist/jobsManagement/commands/workerHealthCommand.js.map +1 -0
  16. package/dist/jobsManagement/index.d.ts +6 -0
  17. package/dist/jobsManagement/index.js +19 -0
  18. package/dist/jobsManagement/index.js.map +1 -0
  19. package/dist/jobsManagement/inputs/CreateAsyncJobInput.d.ts +11 -0
  20. package/dist/jobsManagement/inputs/CreateAsyncJobInput.js +58 -0
  21. package/dist/jobsManagement/inputs/CreateAsyncJobInput.js.map +1 -0
  22. package/dist/jobsManagement/inputs/GetJobInput.d.ts +6 -0
  23. package/dist/jobsManagement/inputs/GetJobInput.js +44 -0
  24. package/dist/jobsManagement/inputs/GetJobInput.js.map +1 -0
  25. package/dist/jobsManagement/inputs/SearchJobsInput.d.ts +14 -0
  26. package/dist/jobsManagement/inputs/SearchJobsInput.js +61 -0
  27. package/dist/jobsManagement/inputs/SearchJobsInput.js.map +1 -0
  28. package/dist/queue/createQueue.d.ts +1 -1
  29. package/dist/queue/queue.d.ts +15 -6
  30. package/dist/queue/queue.js +67 -1
  31. package/dist/queue/queue.js.map +1 -1
  32. package/dist/reporter/totalCount/ITotalCountReporter.d.ts +5 -0
  33. package/dist/reporter/totalCount/ITotalCountReporter.js +3 -0
  34. package/dist/reporter/totalCount/ITotalCountReporter.js.map +1 -0
  35. package/dist/reporter/totalCount/JobTotalCountReporter.d.ts +12 -0
  36. package/dist/reporter/totalCount/JobTotalCountReporter.js +29 -0
  37. package/dist/reporter/totalCount/JobTotalCountReporter.js.map +1 -0
  38. package/dist/reporter/totalCount/MockTotalCountReporter.d.ts +8 -0
  39. package/dist/reporter/totalCount/MockTotalCountReporter.js +21 -0
  40. package/dist/reporter/totalCount/MockTotalCountReporter.js.map +1 -0
  41. package/dist/types.d.ts +20 -1
  42. package/dist/types.js +22 -1
  43. package/dist/types.js.map +1 -1
  44. package/dist/worker/workerRepository.d.ts +2 -2
  45. package/dist/worker/workerRepository.js +7 -2
  46. package/dist/worker/workerRepository.js.map +1 -1
  47. package/package.json +5 -2
  48. package/src/errors/JobCannotBePromotedError.ts +32 -0
  49. package/src/errors/JobNotFoundError.ts +24 -0
  50. package/src/jobsManagement/commands/asyncCreationCommands.ts +58 -0
  51. package/src/jobsManagement/commands/getCommands.ts +57 -0
  52. package/src/jobsManagement/commands/workerHealthCommand.ts +10 -0
  53. package/src/jobsManagement/index.ts +6 -0
  54. package/src/jobsManagement/inputs/CreateAsyncJobInput.ts +37 -0
  55. package/src/jobsManagement/inputs/GetJobInput.ts +17 -0
  56. package/src/jobsManagement/inputs/SearchJobsInput.ts +45 -0
  57. package/src/queue/createQueue.ts +3 -3
  58. package/src/queue/queue.ts +101 -10
  59. package/src/reporter/totalCount/ITotalCountReporter.ts +5 -0
  60. package/src/reporter/totalCount/JobTotalCountReporter.ts +37 -0
  61. package/src/reporter/totalCount/MockTotalCountReporter.ts +20 -0
  62. package/src/types.ts +23 -0
  63. package/src/worker/workerRepository.ts +13 -5
@@ -0,0 +1,10 @@
1
+ import { BaseError, RenderableContext, RenderableError } from "@alanszp/errors";
2
+ import { JobState } from "bullmq";
3
+ export declare class JobCannotBePromotedError extends BaseError implements RenderableError {
4
+ jobId: string;
5
+ currentJobState: JobState | "unknown";
6
+ constructor(jobId: string, currentJobState: JobState | "unknown");
7
+ code(): string;
8
+ renderMessage(): string;
9
+ context(): RenderableContext;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JobCannotBePromotedError = void 0;
4
+ const errors_1 = require("@alanszp/errors");
5
+ class JobCannotBePromotedError extends errors_1.BaseError {
6
+ constructor(jobId, currentJobState) {
7
+ super("JobCannotBePromotedError");
8
+ this.jobId = jobId;
9
+ this.currentJobState = currentJobState;
10
+ }
11
+ code() {
12
+ return "job_cannot_be_promoted_error";
13
+ }
14
+ renderMessage() {
15
+ return "Job not found";
16
+ }
17
+ context() {
18
+ return {
19
+ jobId: this.jobId,
20
+ currentJobState: this.currentJobState,
21
+ };
22
+ }
23
+ }
24
+ exports.JobCannotBePromotedError = JobCannotBePromotedError;
25
+ //# sourceMappingURL=JobCannotBePromotedError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobCannotBePromotedError.js","sourceRoot":"","sources":["../../src/errors/JobCannotBePromotedError.ts"],"names":[],"mappings":";;;AAAA,4CAAgF;AAGhF,MAAa,wBACX,SAAQ,kBAAS;IAOjB,YAAY,KAAa,EAAE,eAAqC;QAC9D,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,IAAI;QACF,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,aAAa;QACX,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;IACJ,CAAC;CACF;AA5BD,4DA4BC"}
@@ -0,0 +1,8 @@
1
+ import { BaseError, RenderableContext, RenderableError } from "@alanszp/errors";
2
+ export declare class JobNotFoundError extends BaseError implements RenderableError {
3
+ jobId: string;
4
+ constructor(jobId: string);
5
+ code(): string;
6
+ renderMessage(): string;
7
+ context(): RenderableContext;
8
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JobNotFoundError = void 0;
4
+ const errors_1 = require("@alanszp/errors");
5
+ class JobNotFoundError extends errors_1.BaseError {
6
+ constructor(jobId) {
7
+ super("JobNotFoundError");
8
+ this.jobId = jobId;
9
+ }
10
+ code() {
11
+ return "job_not_found_error";
12
+ }
13
+ renderMessage() {
14
+ return "Job not found";
15
+ }
16
+ context() {
17
+ return {
18
+ jobId: this.jobId,
19
+ };
20
+ }
21
+ }
22
+ exports.JobNotFoundError = JobNotFoundError;
23
+ //# sourceMappingURL=JobNotFoundError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobNotFoundError.js","sourceRoot":"","sources":["../../src/errors/JobNotFoundError.ts"],"names":[],"mappings":";;;AAAA,4CAAgF;AAEhF,MAAa,gBAAiB,SAAQ,kBAAS;IAG7C,YAAY,KAAa;QACvB,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AArBD,4CAqBC"}
@@ -0,0 +1,7 @@
1
+ import { ILogger } from "@alanszp/logger";
2
+ import { BaseModel } from "@alanszp/validations";
3
+ import { CreateAsyncJobInput } from "../inputs/CreateAsyncJobInput";
4
+ import { Queue } from "../../queue/queue";
5
+ import { Job } from "../../types";
6
+ export declare function asyncJobCreationCommand<QueueInputBody, RealInput extends BaseModel & QueueInputBody, AsyncInput extends CreateAsyncJobInput<RealInput>>(logger: ILogger, queue: Queue<QueueInputBody>, input: AsyncInput): Promise<Job<QueueInputBody>>;
7
+ export declare function immediateExecutionJobCreationCommand<QueueInputBody, RealInput extends QueueInputBody & BaseModel>(logger: ILogger, queue: Queue<QueueInputBody>, input: RealInput): Promise<Job<QueueInputBody>>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.immediateExecutionJobCreationCommand = exports.asyncJobCreationCommand = void 0;
13
+ function asyncJobCreationCommand(logger, queue, input) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const child = logger.child({
16
+ input,
17
+ queueName: queue.getName(),
18
+ });
19
+ child.info("worker.async.create_job.starting");
20
+ yield input.validate();
21
+ child.debug("worker.async.create_job.validated");
22
+ const job = yield queue.publishJob(input.asyncInput, {
23
+ delay: input.getDelayInMs(),
24
+ });
25
+ child.debug("worker.async.create_job.succeed", { jobId: job.id });
26
+ return job;
27
+ });
28
+ }
29
+ exports.asyncJobCreationCommand = asyncJobCreationCommand;
30
+ function immediateExecutionJobCreationCommand(logger, queue, input) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const child = logger.child({
33
+ input,
34
+ queueName: queue.getName(),
35
+ });
36
+ child.info("worker.async.create_job.starting");
37
+ yield input.validate();
38
+ child.debug("worker.async.create_job.validated");
39
+ const job = yield queue.publishJob(input);
40
+ child.debug("worker.async.create_job.succeed", { jobId: job.id });
41
+ return job;
42
+ });
43
+ }
44
+ exports.immediateExecutionJobCreationCommand = immediateExecutionJobCreationCommand;
45
+ //# sourceMappingURL=asyncCreationCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncCreationCommands.js","sourceRoot":"","sources":["../../../src/jobsManagement/commands/asyncCreationCommands.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,SAAsB,uBAAuB,CAK3C,MAAe,EACf,KAA4B,EAC5B,KAAiB;;QAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACzB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;SAC3B,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEvB,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE;YACnD,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE;SAC5B,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAElE,OAAO,GAAG,CAAC;IACb,CAAC;CAAA;AA1BD,0DA0BC;AAED,SAAsB,oCAAoC,CAIxD,MAAe,EACf,KAA4B,EAC5B,KAAgB;;QAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACzB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;SAC3B,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEvB,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE1C,KAAK,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAElE,OAAO,GAAG,CAAC;IACb,CAAC;CAAA;AAvBD,oFAuBC"}
@@ -0,0 +1,8 @@
1
+ import { ILogger } from "@alanszp/logger";
2
+ import { GetJobInput } from "../inputs/GetJobInput";
3
+ import { SearchJobsInput } from "../inputs/SearchJobsInput";
4
+ import { ListResult } from "@alanszp/core";
5
+ import { Queue } from "../../queue/queue";
6
+ import { Job } from "../../types";
7
+ export declare function getJobStatus<QueueInputBody, ReturnValue>(logger: ILogger, queue: Queue<QueueInputBody, ReturnValue>, input: GetJobInput): Promise<Job<QueueInputBody, ReturnValue> | undefined>;
8
+ export declare function searchJobsCommand<QueueInputBody, ReturnValue>(logger: ILogger, queue: Queue<QueueInputBody, ReturnValue>, input: SearchJobsInput): Promise<ListResult<Job<QueueInputBody, ReturnValue>>>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.searchJobsCommand = exports.getJobStatus = void 0;
13
+ function getJobStatus(logger, queue, input) {
14
+ var _a;
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const child = logger.child({
17
+ input,
18
+ queueName: queue.getName(),
19
+ });
20
+ child.info("worker.get_job.starting");
21
+ yield input.validate();
22
+ child.debug("worker.get_job.validated");
23
+ const job = yield queue.getJobOrFail(input.jobId);
24
+ child.info("worker.get_job.succeed", { jobId: (_a = job === null || job === void 0 ? void 0 : job.id) !== null && _a !== void 0 ? _a : null });
25
+ return job;
26
+ });
27
+ }
28
+ exports.getJobStatus = getJobStatus;
29
+ function searchJobsCommand(logger, queue, input) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ const child = logger.child({
32
+ input,
33
+ queueName: queue.getName(),
34
+ });
35
+ child.info("worker.get_job.starting");
36
+ yield input.validate();
37
+ child.debug("worker.get_job.validated");
38
+ const jobs = yield queue.getJobsAndCountByStatus(input.status, input.page, input.pageSize);
39
+ child.info("worker.get_job.succeed", {
40
+ jobTotal: jobs.total,
41
+ jobInPage: jobs.elements.length,
42
+ });
43
+ return jobs;
44
+ });
45
+ }
46
+ exports.searchJobsCommand = searchJobsCommand;
47
+ //# sourceMappingURL=getCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCommands.js","sourceRoot":"","sources":["../../../src/jobsManagement/commands/getCommands.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,SAAsB,YAAY,CAChC,MAAe,EACf,KAAyC,EACzC,KAAkB;;;QAElB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACzB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;SAC3B,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEvB,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElD,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,mCAAI,IAAI,EAAE,CAAC,CAAC;QAEjE,OAAO,GAAG,CAAC;;CACZ;AApBD,oCAoBC;AAED,SAAsB,iBAAiB,CACrC,MAAe,EACf,KAAyC,EACzC,KAAsB;;QAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACzB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;SAC3B,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEvB,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAC9C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,KAAK;YACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;SAChC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AA3BD,8CA2BC"}
@@ -0,0 +1,2 @@
1
+ import { WorkerStatusWithId } from "../../worker/workerRepository";
2
+ export declare function workerHealthCommand(): WorkerStatusWithId[];
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.workerHealthCommand = void 0;
4
+ const workerRepository_1 = require("../../worker/workerRepository");
5
+ function workerHealthCommand() {
6
+ const statuses = workerRepository_1.WorkerRepository.Instance.getWorkerStatuses();
7
+ return statuses;
8
+ }
9
+ exports.workerHealthCommand = workerHealthCommand;
10
+ //# sourceMappingURL=workerHealthCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerHealthCommand.js","sourceRoot":"","sources":["../../../src/jobsManagement/commands/workerHealthCommand.ts"],"names":[],"mappings":";;;AAAA,oEAGuC;AAEvC,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,mCAAgB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IAE/D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAJD,kDAIC"}
@@ -0,0 +1,6 @@
1
+ export * from "./inputs/CreateAsyncJobInput";
2
+ export * from "./inputs/GetJobInput";
3
+ export * from "./inputs/SearchJobsInput";
4
+ export * from "./commands/asyncCreationCommands";
5
+ export * from "./commands/getCommands";
6
+ export * from "./commands/workerHealthCommand";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./inputs/CreateAsyncJobInput"), exports);
14
+ __exportStar(require("./inputs/GetJobInput"), exports);
15
+ __exportStar(require("./inputs/SearchJobsInput"), exports);
16
+ __exportStar(require("./commands/asyncCreationCommands"), exports);
17
+ __exportStar(require("./commands/getCommands"), exports);
18
+ __exportStar(require("./commands/workerHealthCommand"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobsManagement/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAA6C;AAC7C,uDAAqC;AACrC,2DAAyC;AACzC,mEAAiD;AACjD,yDAAuC;AACvC,iEAA+C"}
@@ -0,0 +1,11 @@
1
+ import { BaseModel } from "@alanszp/validations";
2
+ export interface CreateAsyncJobQueryParams {
3
+ executeOn?: string;
4
+ }
5
+ export declare class CreateAsyncJobInput<RealInput extends BaseModel> extends BaseModel {
6
+ executeOn?: string;
7
+ asyncInput: RealInput;
8
+ constructor(asyncParams: CreateAsyncJobQueryParams, asyncInput: RealInput);
9
+ validate(): Promise<void>;
10
+ getDelayInMs(): number | undefined;
11
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.CreateAsyncJobInput = void 0;
22
+ const class_validator_1 = require("class-validator");
23
+ const validations_1 = require("@alanszp/validations");
24
+ const date_fns_1 = require("date-fns");
25
+ class CreateAsyncJobInput extends validations_1.BaseModel {
26
+ constructor(asyncParams, asyncInput) {
27
+ super();
28
+ this.executeOn = asyncParams.executeOn;
29
+ this.asyncInput = asyncInput;
30
+ }
31
+ validate() {
32
+ const _super = Object.create(null, {
33
+ validate: { get: () => super.validate }
34
+ });
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ yield _super.validate.call(this);
37
+ yield this.asyncInput.validate();
38
+ });
39
+ }
40
+ getDelayInMs() {
41
+ if (!this.executeOn)
42
+ return undefined;
43
+ const date = new Date(this.executeOn);
44
+ const delay = (0, date_fns_1.differenceInMilliseconds)(date, new Date());
45
+ return delay > 0 ? delay : undefined;
46
+ }
47
+ }
48
+ __decorate([
49
+ (0, class_validator_1.IsDateString)(),
50
+ (0, class_validator_1.IsOptional)(),
51
+ __metadata("design:type", String)
52
+ ], CreateAsyncJobInput.prototype, "executeOn", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsDefined)(),
55
+ __metadata("design:type", Object)
56
+ ], CreateAsyncJobInput.prototype, "asyncInput", void 0);
57
+ exports.CreateAsyncJobInput = CreateAsyncJobInput;
58
+ //# sourceMappingURL=CreateAsyncJobInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateAsyncJobInput.js","sourceRoot":"","sources":["../../../src/jobsManagement/inputs/CreateAsyncJobInput.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsE;AACtE,sDAAiD;AACjD,uCAAoD;AAMpD,MAAa,mBAEX,SAAQ,uBAAS;IAQjB,YAAY,WAAsC,EAAE,UAAqB;QACvE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEK,QAAQ;;;;;YACZ,MAAM,OAAM,QAAQ,WAAE,CAAC;YAEvB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAA,mCAAwB,EAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;CACF;AAvBC;IAFC,IAAA,8BAAY,GAAE;IACd,IAAA,4BAAU,GAAE;;sDACa;AAG1B;IADC,IAAA,2BAAS,GAAE;;uDACiB;AAR/B,kDA4BC"}
@@ -0,0 +1,6 @@
1
+ import { BaseModel } from "@alanszp/validations";
2
+ export declare class GetJobInput extends BaseModel {
3
+ jobId: string;
4
+ constructor(jobId: string);
5
+ validate(): Promise<void>;
6
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.GetJobInput = void 0;
22
+ const class_validator_1 = require("class-validator");
23
+ const validations_1 = require("@alanszp/validations");
24
+ class GetJobInput extends validations_1.BaseModel {
25
+ constructor(jobId) {
26
+ super();
27
+ this.jobId = jobId;
28
+ }
29
+ validate() {
30
+ const _super = Object.create(null, {
31
+ validate: { get: () => super.validate }
32
+ });
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ yield _super.validate.call(this);
35
+ });
36
+ }
37
+ }
38
+ __decorate([
39
+ (0, class_validator_1.IsDefined)(),
40
+ (0, class_validator_1.IsString)(),
41
+ __metadata("design:type", String)
42
+ ], GetJobInput.prototype, "jobId", void 0);
43
+ exports.GetJobInput = GetJobInput;
44
+ //# sourceMappingURL=GetJobInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetJobInput.js","sourceRoot":"","sources":["../../../src/jobsManagement/inputs/GetJobInput.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsD;AACtD,sDAAiD;AAEjD,MAAa,WAAY,SAAQ,uBAAS;IAKxC,YAAY,KAAa;QACvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEK,QAAQ;;;;;YACZ,MAAM,OAAM,QAAQ,WAAE,CAAC;QACzB,CAAC;KAAA;CACF;AAVC;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAQ,GAAE;;0CACU;AAHvB,kCAaC"}
@@ -0,0 +1,14 @@
1
+ import { BaseModel } from "@alanszp/validations";
2
+ import { JobTypeEnum } from "../../types";
3
+ export interface SearchJobInputProps {
4
+ status: JobTypeEnum[];
5
+ page?: string | number;
6
+ pageSize?: number;
7
+ }
8
+ export declare class SearchJobsInput extends BaseModel {
9
+ status: JobTypeEnum[];
10
+ page: number;
11
+ pageSize: number;
12
+ constructor({ status, page, pageSize }: SearchJobInputProps);
13
+ validate(): Promise<void>;
14
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.SearchJobsInput = void 0;
22
+ const class_validator_1 = require("class-validator");
23
+ const validations_1 = require("@alanszp/validations");
24
+ const types_1 = require("../../types");
25
+ const core_1 = require("@alanszp/core");
26
+ class SearchJobsInput extends validations_1.BaseModel {
27
+ constructor({ status, page, pageSize }) {
28
+ super();
29
+ this.status = status;
30
+ (0, core_1.assignPaginableKeys)(this, { page, pageSize });
31
+ }
32
+ validate() {
33
+ const _super = Object.create(null, {
34
+ validate: { get: () => super.validate }
35
+ });
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ yield _super.validate.call(this);
38
+ });
39
+ }
40
+ }
41
+ __decorate([
42
+ (0, class_validator_1.IsDefined)(),
43
+ (0, class_validator_1.IsArray)(),
44
+ (0, class_validator_1.IsEnum)(types_1.JobTypeEnum, { each: true }),
45
+ __metadata("design:type", Array)
46
+ ], SearchJobsInput.prototype, "status", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsDefined)(),
49
+ (0, class_validator_1.IsNumber)(),
50
+ (0, class_validator_1.Min)(1),
51
+ __metadata("design:type", Number)
52
+ ], SearchJobsInput.prototype, "page", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsDefined)(),
55
+ (0, class_validator_1.IsNumber)(),
56
+ (0, class_validator_1.Min)(1),
57
+ (0, class_validator_1.Max)(100),
58
+ __metadata("design:type", Number)
59
+ ], SearchJobsInput.prototype, "pageSize", void 0);
60
+ exports.SearchJobsInput = SearchJobsInput;
61
+ //# sourceMappingURL=SearchJobsInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchJobsInput.js","sourceRoot":"","sources":["../../../src/jobsManagement/inputs/SearchJobsInput.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,qDAOyB;AACzB,sDAAiD;AACjD,uCAA0C;AAC1C,wCAAoD;AAQpD,MAAa,eAAgB,SAAQ,uBAAS;IAiB5C,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAuB;QACzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAA,0BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAEK,QAAQ;;;;;YACZ,MAAM,OAAM,QAAQ,WAAE,CAAC;QACzB,CAAC;KAAA;CACF;AAtBC;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,yBAAO,GAAE;IACT,IAAA,wBAAM,EAAC,mBAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;+CACP;AAK7B;IAHC,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAG,EAAC,CAAC,CAAC;;6CACa;AAMpB;IAJC,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,GAAG,CAAC;;iDACe;AAf1B,0CA0BC"}
@@ -1,4 +1,4 @@
1
1
  import { Queue } from "./queue";
2
2
  import { JobData, QueueOptions } from "../types";
3
3
  import { SharedContext } from "@alanszp/shared-context";
4
- export declare function createQueue<JobType = JobData>(name: string, getContext: () => SharedContext, queueOptions?: QueueOptions): Queue;
4
+ export declare function createQueue<Data = JobData>(name: string, getContext: () => SharedContext, queueOptions?: QueueOptions): Queue<Data>;
@@ -1,18 +1,27 @@
1
1
  import { Job, JobsOptions } from "bullmq";
2
+ import { ListResult } from "@alanszp/core";
2
3
  import { SharedContext } from "@alanszp/shared-context";
3
- import { ConnectionOptions, JobData, QueueOptions } from "../types";
4
- export declare class Queue<JobType = JobData> {
4
+ import { ConnectionOptions, JobData, JobReturnValue, JobTypeEnum, QueueOptions } from "../types";
5
+ export declare class Queue<Data = JobData, ReturnValue = JobReturnValue> {
5
6
  private _queue;
6
7
  private name;
7
8
  private getSharedContext;
8
9
  constructor(connection: ConnectionOptions, name: string, prefix: string, getSharedContext: () => SharedContext, queueOptions?: QueueOptions);
9
10
  getName(): string;
10
- publishJob(job: JobType, opts?: JobsOptions): Promise<Job<JobType>>;
11
- publishBulkJob(jobDatas: JobType[]): Promise<Job<JobType>[]>;
11
+ publishJob(job: Data, opts?: JobsOptions): Promise<Job<Data, ReturnValue>>;
12
+ publishBulkJob(jobDatas: Data[]): Promise<Job<Data, ReturnValue>[]>;
12
13
  publishBulkJobWithOptions(jobDefinitions: {
13
- jobData: JobType;
14
+ jobData: Data;
14
15
  opts: JobsOptions;
15
- }[]): Promise<void>;
16
+ }[]): Promise<Job<Data, ReturnValue>[]>;
17
+ private pageToStartEnd;
18
+ getJobsAndCountByStatus(statuses: JobTypeEnum[], page?: number, pageSize?: number, ascending?: boolean): Promise<ListResult<Job<Data, ReturnValue>>>;
19
+ getJobCountByStatus(statuses: JobTypeEnum[], page?: number, pageSize?: number): Promise<number>;
20
+ getJobsByStatus(statuses: JobTypeEnum[], page?: number, pageSize?: number, ascending?: boolean): Promise<Job<Data, ReturnValue>[]>;
21
+ deleteJob(jobId: string): Promise<void>;
22
+ getJob(jobId: string): Promise<Job<Data, ReturnValue> | undefined>;
23
+ getJobOrFail(jobId: string): Promise<Job<Data, ReturnValue>>;
24
+ changeDelayToJob(jobId: string, delayMs: number): Promise<void>;
16
25
  close(): Promise<void>;
17
26
  private get queue();
18
27
  }
@@ -12,9 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Queue = void 0;
13
13
  const lodash_1 = require("lodash");
14
14
  const types_1 = require("../types");
15
+ const JobNotFoundError_1 = require("../errors/JobNotFoundError");
16
+ const JobCannotBePromotedError_1 = require("../errors/JobCannotBePromotedError");
15
17
  const BULL_PREFIX = "b";
16
18
  const DEFAULT_COMPLETED_JOB_MAX_AGE_IN_SECONDS = 60 * 60 * 24 * 30;
17
19
  const DEFAULT_COMPLETED_JOB_MAX_COUNT = 500;
20
+ const DEFAULT_FAILED_JOB_MAX_COUNT = 1000;
18
21
  class Queue {
19
22
  constructor(connection, name, prefix, getSharedContext, queueOptions) {
20
23
  this.name = name;
@@ -25,6 +28,9 @@ class Queue {
25
28
  age: DEFAULT_COMPLETED_JOB_MAX_AGE_IN_SECONDS,
26
29
  count: DEFAULT_COMPLETED_JOB_MAX_COUNT,
27
30
  },
31
+ removeOnFail: {
32
+ count: DEFAULT_FAILED_JOB_MAX_COUNT,
33
+ },
28
34
  attempts: 3,
29
35
  backoff: {
30
36
  type: "exponential",
@@ -58,7 +64,67 @@ class Queue {
58
64
  data,
59
65
  opts,
60
66
  }));
61
- yield this.queue.addBulk(jobs);
67
+ return this.queue.addBulk(jobs);
68
+ });
69
+ }
70
+ pageToStartEnd(pageNumber, pageSize) {
71
+ return {
72
+ start: (pageNumber - 1) * pageSize,
73
+ end: pageNumber * pageSize - 1,
74
+ };
75
+ }
76
+ getJobsAndCountByStatus(statuses, page = 1, pageSize = 50, ascending = false) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ const { start, end } = this.pageToStartEnd(page, pageSize);
79
+ const [total, elements] = yield Promise.all([
80
+ this.queue.getJobCountByTypes(...statuses),
81
+ this.queue.getJobs(statuses, start, end, ascending),
82
+ ]);
83
+ return {
84
+ total,
85
+ elements,
86
+ page,
87
+ pageSize,
88
+ };
89
+ });
90
+ }
91
+ getJobCountByStatus(statuses, page = 1, pageSize = 50) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ return this.queue.getJobCountByTypes(...statuses);
94
+ });
95
+ }
96
+ getJobsByStatus(statuses, page = 1, pageSize = 50, ascending = false) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ const { start, end } = this.pageToStartEnd(page, pageSize);
99
+ return this.queue.getJobs(statuses, start, end, ascending);
100
+ });
101
+ }
102
+ deleteJob(jobId) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ this.queue.remove(jobId);
105
+ });
106
+ }
107
+ getJob(jobId) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ return this.queue.getJob(jobId);
110
+ });
111
+ }
112
+ getJobOrFail(jobId) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const job = yield this.queue.getJob(jobId);
115
+ if (!job)
116
+ throw new JobNotFoundError_1.JobNotFoundError(jobId);
117
+ return job;
118
+ });
119
+ }
120
+ changeDelayToJob(jobId, delayMs) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ const job = yield this.getJobOrFail(jobId);
123
+ const state = yield job.getState();
124
+ if (state !== types_1.JobStateEnum.DELAYED) {
125
+ throw new JobCannotBePromotedError_1.JobCannotBePromotedError(jobId, state);
126
+ }
127
+ job.changeDelay(delayMs);
62
128
  });
63
129
  }
64
130
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/queue/queue.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAG/B,oCAA8E;AAE9E,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,wCAAwC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnE,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAE5C,MAAa,KAAK;IAOhB,YACE,UAA6B,EAC7B,IAAY,EACZ,MAAc,EACd,gBAAqC,EACrC,YAA2B;QAE3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAQ,CAAU,IAAI,kCACnC,IAAA,cAAK,EACN;YACE,iBAAiB,EAAE;gBACjB,gBAAgB,EAAE;oBAChB,GAAG,EAAE,wCAAwC;oBAC7C,KAAK,EAAE,+BAA+B;iBACvC;gBACD,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE;oBACP,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI;iBACZ;aACF;YACD,UAAU;SACX,EACD,YAAY,IAAI,EAAE,CACnB,GACE,EAAE,MAAM,EAAE,IAAI,MAAM,KAAK,WAAW,EAAE,EAAE,EAC3C,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEK,UAAU,CAAC,GAAY,EAAE,IAAkB;;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,kCAAO,GAAG,KAAE,GAAG,EAAE,GAAG,KAAI,IAAI,CAAC,CAAC;QAC/D,CAAC;KAAA;IAEK,cAAc,CAAC,QAAmB;;YACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;KAAA;IAEK,yBAAyB,CAC7B,cAAyD;;YAEzD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;KAAA;IAEK,KAAK;;YACT,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;KAAA;IAED,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AA1ED,sBA0EC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/queue/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface ITotalCountReporter {
2
+ setTotal(total: number): void;
3
+ increment(n?: number): void;
4
+ reset(value?: number): void;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITotalCountReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITotalCountReporter.js","sourceRoot":"","sources":["../../../src/reporter/totalCount/ITotalCountReporter.ts"],"names":[],"mappings":""}