rl-core-api 0.14.3 → 0.15.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 (56) hide show
  1. package/dist/core/bootstrap/bootstrapWorker.util.d.ts +6 -0
  2. package/dist/core/bootstrap/bootstrapWorker.util.js +27 -0
  3. package/dist/core/config/env.schema.d.ts +7 -0
  4. package/dist/core/config/env.schema.js +4 -0
  5. package/dist/core/export/export.controller.d.ts +14 -0
  6. package/dist/core/export/export.controller.js +86 -0
  7. package/dist/core/export/export.module.d.ts +2 -0
  8. package/dist/core/export/export.module.js +24 -0
  9. package/dist/core/export/export.processor.d.ts +16 -0
  10. package/dist/core/export/export.processor.js +62 -0
  11. package/dist/core/export/export.service.d.ts +13 -0
  12. package/dist/core/export/export.service.js +54 -0
  13. package/dist/core/export/exportAccepted.response.d.ts +4 -0
  14. package/dist/core/export/exportAccepted.response.js +24 -0
  15. package/dist/core/export/exportApi.module.d.ts +2 -0
  16. package/dist/core/export/exportApi.module.js +25 -0
  17. package/dist/core/export/exportCleanup.service.d.ts +9 -0
  18. package/dist/core/export/exportCleanup.service.js +49 -0
  19. package/dist/core/export/exportColumn.interface.d.ts +11 -0
  20. package/dist/core/export/exportColumn.interface.js +9 -0
  21. package/dist/core/export/exportEngine.service.d.ts +15 -0
  22. package/dist/core/export/exportEngine.service.js +151 -0
  23. package/dist/core/export/exportHandler.interface.d.ts +32 -0
  24. package/dist/core/export/exportHandler.interface.js +7 -0
  25. package/dist/core/export/exportHandler.registry.d.ts +13 -0
  26. package/dist/core/export/exportHandler.registry.js +58 -0
  27. package/dist/core/export/exportStorage.service.d.ts +13 -0
  28. package/dist/core/export/exportStorage.service.js +87 -0
  29. package/dist/core/export/exportWorker.module.d.ts +2 -0
  30. package/dist/core/export/exportWorker.module.js +22 -0
  31. package/dist/core/export/requestExport.command.d.ts +6 -0
  32. package/dist/core/export/requestExport.command.js +51 -0
  33. package/dist/core/query/paginateWithFilter.util.d.ts +1 -0
  34. package/dist/core/query/paginateWithFilter.util.js +3 -2
  35. package/dist/core/queue/job.interface.d.ts +3 -0
  36. package/dist/core/queue/job.producer.d.ts +7 -5
  37. package/dist/core/queue/job.producer.js +40 -15
  38. package/dist/core/queue/jobWorkerHost.js +6 -1
  39. package/dist/core/queue/queue.constants.d.ts +6 -0
  40. package/dist/core/queue/queue.constants.js +7 -1
  41. package/dist/core/queue/queue.module.js +4 -1
  42. package/dist/core/queue/queueAdmin.controller.d.ts +4 -4
  43. package/dist/core/queue/queueAdmin.controller.js +22 -12
  44. package/dist/core/queue/queueAdmin.response.d.ts +1 -0
  45. package/dist/core/queue/queueAdmin.response.js +8 -0
  46. package/dist/core/queue/queueAdmin.service.d.ts +5 -4
  47. package/dist/core/queue/queueAdmin.service.js +12 -10
  48. package/dist/core/queue/redisJobEvents.bridge.d.ts +10 -0
  49. package/dist/core/queue/redisJobEvents.bridge.js +61 -0
  50. package/dist/core/queue/redisJobEvents.publisher.d.ts +14 -0
  51. package/dist/core/queue/redisJobEvents.publisher.js +43 -0
  52. package/dist/index.d.ts +19 -2
  53. package/dist/index.js +46 -3
  54. package/dist/rlCore.module.d.ts +1 -0
  55. package/dist/rlCore.module.js +30 -0
  56. package/package.json +2 -1
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toSafeError = exports.JobWorkerHost = void 0;
4
4
  const bullmq_1 = require("@nestjs/bullmq");
5
5
  const common_1 = require("@nestjs/common");
6
+ const bullmq_2 = require("bullmq");
6
7
  class JobWorkerHost extends bullmq_1.WorkerHost {
7
8
  constructor(jobEvents) {
8
9
  super();
@@ -44,13 +45,17 @@ class JobWorkerHost extends bullmq_1.WorkerHost {
44
45
  }
45
46
  catch (err) {
46
47
  this.logger.error(`Job ${job.name} #${jobId} falhou: ${err.message}`, err.stack);
47
- if (job.attemptsMade + 1 >= (job.opts.attempts ?? 1)) {
48
+ const businessError = err instanceof common_1.HttpException;
49
+ if (businessError || job.attemptsMade + 1 >= (job.opts.attempts ?? 1)) {
48
50
  this.jobEvents.failed(ownerId, {
49
51
  jobId,
50
52
  name: job.name,
51
53
  ...(0, exports.toSafeError)(err),
52
54
  });
53
55
  }
56
+ if (businessError) {
57
+ throw new bullmq_2.UnrecoverableError(err.message);
58
+ }
54
59
  throw err;
55
60
  }
56
61
  }
@@ -1,9 +1,15 @@
1
1
  export declare const JOBS_QUEUE = "jobs";
2
+ export declare const EXPORTS_QUEUE = "exports";
3
+ export declare const QUEUE_NAMES: readonly ["jobs", "exports"];
4
+ export type QueueName = (typeof QUEUE_NAMES)[number];
5
+ export declare const isQueueName: (value: unknown) => value is QueueName;
2
6
  export declare const JOB_PROGRESS_EVENT = "job:progress";
3
7
  export declare const JOB_COMPLETED_EVENT = "job:completed";
4
8
  export declare const JOB_FAILED_EVENT = "job:failed";
5
9
  export declare const JOB_CONCURRENCY = 5;
6
10
  export declare const JOB_ATTEMPTS = 3;
11
+ export declare const EXPORT_CONCURRENCY = 2;
12
+ export declare const EXPORT_LOCK_DURATION_MS = 300000;
7
13
  export declare const JOB_BACKOFF_DELAY_MS = 30000;
8
14
  export declare const COMPLETED_RETENTION_SECONDS = 86400;
9
15
  export declare const FAILED_RETENTION_SECONDS = 14400;
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.queuePrefix = exports.isRedisConfigured = exports.FAILED_RETENTION_SECONDS = exports.COMPLETED_RETENTION_SECONDS = exports.JOB_BACKOFF_DELAY_MS = exports.JOB_ATTEMPTS = exports.JOB_CONCURRENCY = exports.JOB_FAILED_EVENT = exports.JOB_COMPLETED_EVENT = exports.JOB_PROGRESS_EVENT = exports.JOBS_QUEUE = void 0;
3
+ exports.queuePrefix = exports.isRedisConfigured = exports.FAILED_RETENTION_SECONDS = exports.COMPLETED_RETENTION_SECONDS = exports.JOB_BACKOFF_DELAY_MS = exports.EXPORT_LOCK_DURATION_MS = exports.EXPORT_CONCURRENCY = exports.JOB_ATTEMPTS = exports.JOB_CONCURRENCY = exports.JOB_FAILED_EVENT = exports.JOB_COMPLETED_EVENT = exports.JOB_PROGRESS_EVENT = exports.isQueueName = exports.QUEUE_NAMES = exports.EXPORTS_QUEUE = exports.JOBS_QUEUE = void 0;
4
4
  const dotenv_1 = require("dotenv");
5
5
  (0, dotenv_1.config)();
6
6
  exports.JOBS_QUEUE = "jobs";
7
+ exports.EXPORTS_QUEUE = "exports";
8
+ exports.QUEUE_NAMES = [exports.JOBS_QUEUE, exports.EXPORTS_QUEUE];
9
+ const isQueueName = (value) => exports.QUEUE_NAMES.includes(value);
10
+ exports.isQueueName = isQueueName;
7
11
  exports.JOB_PROGRESS_EVENT = "job:progress";
8
12
  exports.JOB_COMPLETED_EVENT = "job:completed";
9
13
  exports.JOB_FAILED_EVENT = "job:failed";
10
14
  exports.JOB_CONCURRENCY = 5;
11
15
  exports.JOB_ATTEMPTS = 3;
16
+ exports.EXPORT_CONCURRENCY = 2;
17
+ exports.EXPORT_LOCK_DURATION_MS = 300_000;
12
18
  exports.JOB_BACKOFF_DELAY_MS = 30_000;
13
19
  exports.COMPLETED_RETENTION_SECONDS = 86_400;
14
20
  exports.FAILED_RETENTION_SECONDS = 14_400;
@@ -22,7 +22,10 @@ const buildImports = () => {
22
22
  logger.warn("REDIS_HOST não configurado — a fila não será registrada e o enfileiramento fica indisponível");
23
23
  return [];
24
24
  }
25
- return [bullConnection_module_1.BullConnectionModule, bullmq_1.BullModule.registerQueue({ name: queue_constants_1.JOBS_QUEUE })];
25
+ return [
26
+ bullConnection_module_1.BullConnectionModule,
27
+ ...queue_constants_1.QUEUE_NAMES.map((name) => bullmq_1.BullModule.registerQueue({ name })),
28
+ ];
26
29
  };
27
30
  let QueueModule = class QueueModule {
28
31
  };
@@ -4,8 +4,8 @@ import { Paginated } from "../utils/pagination.util";
4
4
  export declare class QueueAdminController {
5
5
  private readonly queues;
6
6
  constructor(queues: QueueAdminService);
7
- counts(): Promise<QueueCounts>;
8
- jobs(state: string, page?: string, limit?: string, sortBy?: string, sortDir?: string): Promise<Paginated<QueueJobSummary>>;
9
- retry(id: string): Promise<void>;
10
- remove(id: string): Promise<void>;
7
+ counts(queue?: string): Promise<QueueCounts>;
8
+ jobs(state: string, page?: string, limit?: string, sortBy?: string, sortDir?: string, queue?: string): Promise<Paginated<QueueJobSummary>>;
9
+ retry(id: string, queue?: string): Promise<void>;
10
+ remove(id: string, queue?: string): Promise<void>;
11
11
  }
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
17
17
  const swagger_1 = require("@nestjs/swagger");
18
18
  const requirePermission_decorator_1 = require("../auth/decorators/requirePermission.decorator");
19
19
  const permissions_guard_1 = require("../auth/guards/permissions.guard");
20
+ const queue_constants_1 = require("./queue.constants");
20
21
  const queueAdmin_response_1 = require("./queueAdmin.response");
21
22
  const queueAdmin_service_1 = require("./queueAdmin.service");
22
23
  const DEFAULT_LIMIT = 20;
@@ -25,32 +26,35 @@ let QueueAdminController = class QueueAdminController {
25
26
  constructor(queues) {
26
27
  this.queues = queues;
27
28
  }
28
- counts() {
29
- return this.queues.counts();
29
+ counts(queue) {
30
+ return this.queues.counts(toQueue(queue));
30
31
  }
31
- jobs(state, page, limit, sortBy, sortDir) {
32
- return this.queues.list(toState(state), toPositive(page, 1), Math.min(toPositive(limit, DEFAULT_LIMIT), MAX_LIMIT), sortBy, sortDir === "ASC" ? "ASC" : "DESC");
32
+ jobs(state, page, limit, sortBy, sortDir, queue) {
33
+ return this.queues.list(toState(state), toPositive(page, 1), Math.min(toPositive(limit, DEFAULT_LIMIT), MAX_LIMIT), sortBy, sortDir === "ASC" ? "ASC" : "DESC", toQueue(queue));
33
34
  }
34
- retry(id) {
35
- return this.queues.retry(id);
35
+ retry(id, queue) {
36
+ return this.queues.retry(id, toQueue(queue));
36
37
  }
37
- remove(id) {
38
- return this.queues.remove(id);
38
+ remove(id, queue) {
39
+ return this.queues.remove(id, toQueue(queue));
39
40
  }
40
41
  };
41
42
  exports.QueueAdminController = QueueAdminController;
42
43
  __decorate([
43
44
  (0, common_1.Get)("counts"),
44
45
  (0, requirePermission_decorator_1.RequirePermission)("queues:read:any"),
46
+ (0, swagger_1.ApiQuery)({ name: "queue", enum: queue_constants_1.QUEUE_NAMES, required: false }),
45
47
  (0, swagger_1.ApiOkResponse)({ type: queueAdmin_response_1.QueueCountsResponse }),
48
+ __param(0, (0, common_1.Query)("queue")),
46
49
  __metadata("design:type", Function),
47
- __metadata("design:paramtypes", []),
50
+ __metadata("design:paramtypes", [String]),
48
51
  __metadata("design:returntype", Promise)
49
52
  ], QueueAdminController.prototype, "counts", null);
50
53
  __decorate([
51
54
  (0, common_1.Get)("jobs"),
52
55
  (0, requirePermission_decorator_1.RequirePermission)("queues:read:any"),
53
56
  (0, swagger_1.ApiQuery)({ name: "state", enum: queueAdmin_service_1.LISTABLE_STATES }),
57
+ (0, swagger_1.ApiQuery)({ name: "queue", enum: queue_constants_1.QUEUE_NAMES, required: false }),
54
58
  (0, swagger_1.ApiQuery)({ name: "sortBy", enum: queueAdmin_service_1.SORTABLE_JOB_FIELDS, required: false }),
55
59
  (0, swagger_1.ApiQuery)({ name: "sortDir", enum: ["ASC", "DESC"], required: false }),
56
60
  (0, swagger_1.ApiOkResponse)({ type: queueAdmin_response_1.PaginatedQueueJobsResponse }),
@@ -59,26 +63,31 @@ __decorate([
59
63
  __param(2, (0, common_1.Query)("limit")),
60
64
  __param(3, (0, common_1.Query)("sortBy")),
61
65
  __param(4, (0, common_1.Query)("sortDir")),
66
+ __param(5, (0, common_1.Query)("queue")),
62
67
  __metadata("design:type", Function),
63
- __metadata("design:paramtypes", [String, String, String, String, String]),
68
+ __metadata("design:paramtypes", [String, String, String, String, String, String]),
64
69
  __metadata("design:returntype", Promise)
65
70
  ], QueueAdminController.prototype, "jobs", null);
66
71
  __decorate([
67
72
  (0, common_1.Post)("jobs/:id/retry"),
68
73
  (0, common_1.HttpCode)(204),
69
74
  (0, requirePermission_decorator_1.RequirePermission)("queues:manage:any"),
75
+ (0, swagger_1.ApiQuery)({ name: "queue", enum: queue_constants_1.QUEUE_NAMES, required: false }),
70
76
  __param(0, (0, common_1.Param)("id")),
77
+ __param(1, (0, common_1.Query)("queue")),
71
78
  __metadata("design:type", Function),
72
- __metadata("design:paramtypes", [String]),
79
+ __metadata("design:paramtypes", [String, String]),
73
80
  __metadata("design:returntype", Promise)
74
81
  ], QueueAdminController.prototype, "retry", null);
75
82
  __decorate([
76
83
  (0, common_1.Delete)("jobs/:id"),
77
84
  (0, common_1.HttpCode)(204),
78
85
  (0, requirePermission_decorator_1.RequirePermission)("queues:manage:any"),
86
+ (0, swagger_1.ApiQuery)({ name: "queue", enum: queue_constants_1.QUEUE_NAMES, required: false }),
79
87
  __param(0, (0, common_1.Param)("id")),
88
+ __param(1, (0, common_1.Query)("queue")),
80
89
  __metadata("design:type", Function),
81
- __metadata("design:paramtypes", [String]),
90
+ __metadata("design:paramtypes", [String, String]),
82
91
  __metadata("design:returntype", Promise)
83
92
  ], QueueAdminController.prototype, "remove", null);
84
93
  exports.QueueAdminController = QueueAdminController = __decorate([
@@ -88,6 +97,7 @@ exports.QueueAdminController = QueueAdminController = __decorate([
88
97
  (0, common_1.Controller)({ path: "queues", version: "1" }),
89
98
  __metadata("design:paramtypes", [queueAdmin_service_1.QueueAdminService])
90
99
  ], QueueAdminController);
100
+ const toQueue = (value) => (0, queue_constants_1.isQueueName)(value) ? value : queue_constants_1.JOBS_QUEUE;
91
101
  const toState = (value) => queueAdmin_service_1.LISTABLE_STATES.includes(value)
92
102
  ? value
93
103
  : "failed";
@@ -11,6 +11,7 @@ export declare class QueueJobResponse {
11
11
  name: string;
12
12
  state: string;
13
13
  ownerId: string | null;
14
+ payload: unknown;
14
15
  attemptsMade: number;
15
16
  percent: number | null;
16
17
  failedReason: string | null;
@@ -54,6 +54,14 @@ __decorate([
54
54
  (0, swagger_1.ApiProperty)({ type: String, format: "uuid", nullable: true }),
55
55
  __metadata("design:type", Object)
56
56
  ], QueueJobResponse.prototype, "ownerId", void 0);
57
+ __decorate([
58
+ (0, swagger_1.ApiProperty)({
59
+ type: Object,
60
+ nullable: true,
61
+ example: { handler: "funkos", fileName: "funkos_2026-09-04.xlsx" },
62
+ }),
63
+ __metadata("design:type", Object)
64
+ ], QueueJobResponse.prototype, "payload", void 0);
57
65
  __decorate([
58
66
  (0, swagger_1.ApiProperty)({ example: 2 }),
59
67
  __metadata("design:type", Number)
@@ -1,5 +1,6 @@
1
1
  import { QueueCounts, QueueJobSummary } from "./job.interface";
2
2
  import { JobProducer } from "./job.producer";
3
+ import { QueueName } from "./queue.constants";
3
4
  import { Paginated, SortDir } from "../utils/pagination.util";
4
5
  export declare const LISTABLE_STATES: readonly ["waiting", "active", "completed", "failed", "delayed"];
5
6
  export type ListableState = (typeof LISTABLE_STATES)[number];
@@ -9,10 +10,10 @@ export declare const SORT_SCAN_LIMIT = 1000;
9
10
  export declare class QueueAdminService {
10
11
  private readonly producer;
11
12
  constructor(producer: JobProducer);
12
- counts(): Promise<QueueCounts>;
13
- list(state: ListableState, page: number, limit: number, sortBy?: string, sortDir?: SortDir): Promise<Paginated<QueueJobSummary>>;
14
- retry(jobId: string): Promise<void>;
15
- remove(jobId: string): Promise<void>;
13
+ counts(queueName?: QueueName): Promise<QueueCounts>;
14
+ list(state: ListableState, page: number, limit: number, sortBy?: string, sortDir?: SortDir, queueName?: QueueName): Promise<Paginated<QueueJobSummary>>;
15
+ retry(jobId: string, queueName?: QueueName): Promise<void>;
16
+ remove(jobId: string, queueName?: QueueName): Promise<void>;
16
17
  private findJob;
17
18
  private toSummary;
18
19
  }
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.QueueAdminService = exports.SORT_SCAN_LIMIT = exports.SORTABLE_JOB_FIELDS = exports.LISTABLE_STATES = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const job_producer_1 = require("./job.producer");
15
+ const queue_constants_1 = require("./queue.constants");
15
16
  const pagination_util_1 = require("../utils/pagination.util");
16
17
  exports.LISTABLE_STATES = [
17
18
  "waiting",
@@ -32,8 +33,8 @@ let QueueAdminService = class QueueAdminService {
32
33
  constructor(producer) {
33
34
  this.producer = producer;
34
35
  }
35
- async counts() {
36
- const queue = this.producer.requireQueue();
36
+ async counts(queueName = queue_constants_1.JOBS_QUEUE) {
37
+ const queue = this.producer.requireQueue(queueName);
37
38
  const counts = await queue.getJobCounts(...exports.LISTABLE_STATES);
38
39
  return {
39
40
  waiting: counts.waiting ?? 0,
@@ -43,8 +44,8 @@ let QueueAdminService = class QueueAdminService {
43
44
  delayed: counts.delayed ?? 0,
44
45
  };
45
46
  }
46
- async list(state, page, limit, sortBy, sortDir) {
47
- const queue = this.producer.requireQueue();
47
+ async list(state, page, limit, sortBy, sortDir, queueName = queue_constants_1.JOBS_QUEUE) {
48
+ const queue = this.producer.requireQueue(queueName);
48
49
  const field = exports.SORTABLE_JOB_FIELDS.find((name) => name === sortBy);
49
50
  const start = (page - 1) * limit;
50
51
  const range = field
@@ -62,16 +63,16 @@ let QueueAdminService = class QueueAdminService {
62
63
  const ordered = [...items].sort(compareBy(field, sortDir ?? "DESC"));
63
64
  return new pagination_util_1.Paginated(ordered.slice(start, start + limit), total, page, limit);
64
65
  }
65
- async retry(jobId) {
66
- const job = await this.findJob(jobId);
66
+ async retry(jobId, queueName) {
67
+ const job = await this.findJob(jobId, queueName);
67
68
  await job.retry();
68
69
  }
69
- async remove(jobId) {
70
- const job = await this.findJob(jobId);
70
+ async remove(jobId, queueName) {
71
+ const job = await this.findJob(jobId, queueName);
71
72
  await job.remove();
72
73
  }
73
- async findJob(jobId) {
74
- const queue = this.producer.requireQueue();
74
+ async findJob(jobId, queueName = queue_constants_1.JOBS_QUEUE) {
75
+ const queue = this.producer.requireQueue(queueName);
75
76
  const job = await queue.getJob(jobId);
76
77
  if (!job) {
77
78
  throw new common_1.NotFoundException("Job não encontrado");
@@ -85,6 +86,7 @@ let QueueAdminService = class QueueAdminService {
85
86
  name: job.name,
86
87
  state,
87
88
  ownerId: job.data?.ownerId ?? null,
89
+ payload: job.data?.payload ?? null,
88
90
  attemptsMade: job.attemptsMade,
89
91
  percent: typeof progress === "object" && progress !== null
90
92
  ? (progress.percent ?? null)
@@ -0,0 +1,10 @@
1
+ import { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
2
+ import { JobEventsPublisher } from "./jobEvents.interface";
3
+ export declare class RedisJobEventsBridge implements OnModuleInit, OnModuleDestroy {
4
+ private readonly publisher;
5
+ private readonly logger;
6
+ private subscriber;
7
+ constructor(publisher: JobEventsPublisher);
8
+ onModuleInit(): void;
9
+ onModuleDestroy(): Promise<void>;
10
+ }
@@ -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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ var RedisJobEventsBridge_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.RedisJobEventsBridge = void 0;
20
+ const common_1 = require("@nestjs/common");
21
+ const ioredis_1 = __importDefault(require("ioredis"));
22
+ const jobEvents_interface_1 = require("./jobEvents.interface");
23
+ const redisConnection_1 = require("./redisConnection");
24
+ const redisJobEvents_publisher_1 = require("./redisJobEvents.publisher");
25
+ let RedisJobEventsBridge = RedisJobEventsBridge_1 = class RedisJobEventsBridge {
26
+ constructor(publisher) {
27
+ this.publisher = publisher;
28
+ this.logger = new common_1.Logger(RedisJobEventsBridge_1.name);
29
+ this.subscriber = null;
30
+ }
31
+ onModuleInit() {
32
+ const channel = (0, redisJobEvents_publisher_1.jobEventsChannel)();
33
+ this.subscriber = new ioredis_1.default({
34
+ ...(0, redisConnection_1.buildRedisOptions)(),
35
+ maxRetriesPerRequest: 3,
36
+ });
37
+ void this.subscriber.subscribe(channel);
38
+ this.subscriber.on("message", (received, raw) => {
39
+ if (received !== channel) {
40
+ return;
41
+ }
42
+ try {
43
+ const { ownerId, event, data } = JSON.parse(raw);
44
+ this.publisher.emitToUser(ownerId, event, data);
45
+ }
46
+ catch (error) {
47
+ this.logger.warn(`Evento de job descartado: ${error.message}`);
48
+ }
49
+ });
50
+ this.logger.log(`Progresso de job em segundo plano ouvido em ${channel}`);
51
+ }
52
+ async onModuleDestroy() {
53
+ await this.subscriber?.quit();
54
+ }
55
+ };
56
+ exports.RedisJobEventsBridge = RedisJobEventsBridge;
57
+ exports.RedisJobEventsBridge = RedisJobEventsBridge = RedisJobEventsBridge_1 = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __param(0, (0, common_1.Inject)(jobEvents_interface_1.JOB_EVENTS_PUBLISHER)),
60
+ __metadata("design:paramtypes", [Object])
61
+ ], RedisJobEventsBridge);
@@ -0,0 +1,14 @@
1
+ import { OnModuleDestroy } from "@nestjs/common";
2
+ import { JobEventsPublisher } from "./jobEvents.interface";
3
+ export declare const jobEventsChannel: () => string;
4
+ export interface JobEventsMessage {
5
+ ownerId: string;
6
+ event: string;
7
+ data: unknown;
8
+ }
9
+ export declare class RedisJobEventsPublisher implements JobEventsPublisher, OnModuleDestroy {
10
+ private readonly logger;
11
+ private readonly redis;
12
+ emitToUser<T>(userId: string, event: string, data: T): void;
13
+ onModuleDestroy(): Promise<void>;
14
+ }
@@ -0,0 +1,43 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ var RedisJobEventsPublisher_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.RedisJobEventsPublisher = exports.jobEventsChannel = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const ioredis_1 = __importDefault(require("ioredis"));
16
+ const queue_constants_1 = require("./queue.constants");
17
+ const redisConnection_1 = require("./redisConnection");
18
+ const jobEventsChannel = () => `${(0, queue_constants_1.queuePrefix)()}:job-events`;
19
+ exports.jobEventsChannel = jobEventsChannel;
20
+ let RedisJobEventsPublisher = RedisJobEventsPublisher_1 = class RedisJobEventsPublisher {
21
+ constructor() {
22
+ this.logger = new common_1.Logger(RedisJobEventsPublisher_1.name);
23
+ this.redis = new ioredis_1.default({
24
+ ...(0, redisConnection_1.buildRedisOptions)(),
25
+ maxRetriesPerRequest: 3,
26
+ });
27
+ }
28
+ emitToUser(userId, event, data) {
29
+ const message = { ownerId: userId, event, data };
30
+ void this.redis
31
+ .publish((0, exports.jobEventsChannel)(), JSON.stringify(message))
32
+ .catch((error) => {
33
+ this.logger.warn(`Evento ${event} não publicado: ${error.message}`);
34
+ });
35
+ }
36
+ async onModuleDestroy() {
37
+ await this.redis.quit();
38
+ }
39
+ };
40
+ exports.RedisJobEventsPublisher = RedisJobEventsPublisher;
41
+ exports.RedisJobEventsPublisher = RedisJobEventsPublisher = RedisJobEventsPublisher_1 = __decorate([
42
+ (0, common_1.Injectable)()
43
+ ], RedisJobEventsPublisher);
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { bootstrapCore, BootstrapOptions } from "./core/bootstrap/bootstrapCore.util";
2
+ export { bootstrapWorker, BootstrapWorkerOptions, } from "./core/bootstrap/bootstrapWorker.util";
2
3
  export { CoreModule, CoreModuleOptions, EntityClass } from "./core/core.module";
3
4
  export { CoreDataSourceOptions, createCoreDataSource, } from "./core/database/createDataSource.util";
4
5
  export { coreMigrations, MigrationClass } from "./core/database/migrations";
@@ -28,7 +29,7 @@ export { FilterFieldType } from "./core/query/filterFieldType.enum";
28
29
  export { FilterCombinator, FilterOperator, } from "./core/query/filterOperator.enum";
29
30
  export { FilterFieldResponse, FilterOptionResponse, toFilterSchema, } from "./core/query/filterSchema.response";
30
31
  export { CatalogOrder, resolveCatalogOrder } from "./core/query/filterSort.util";
31
- export { paginateWithFilter, PaginateWithFilterOptions, } from "./core/query/paginateWithFilter.util";
32
+ export { applySearch, paginateWithFilter, PaginateWithFilterOptions, } from "./core/query/paginateWithFilter.util";
32
33
  export { parseFilter } from "./core/query/parseFilter.util";
33
34
  export { Paginated, PaginationMeta, PaginationQuery, resolveOrder, SortDir, } from "./core/utils/pagination.util";
34
35
  export { PaginationMetaResponse } from "./core/utils/paginationMeta.response";
@@ -69,9 +70,25 @@ export { JOB_EVENTS_PUBLISHER, JobEventsPublisher, } from "./core/queue/jobEvent
69
70
  export { JobEventsService } from "./core/queue/jobEvents.service";
70
71
  export { JobErrorResponse, JobProgressResponse, JobStatusResponse, } from "./core/queue/jobStatus.response";
71
72
  export { JobWorkerHost, toSafeError } from "./core/queue/jobWorkerHost";
72
- export { COMPLETED_RETENTION_SECONDS, FAILED_RETENTION_SECONDS, isRedisConfigured, JOB_ATTEMPTS, JOB_BACKOFF_DELAY_MS, JOB_COMPLETED_EVENT, JOB_CONCURRENCY, JOB_FAILED_EVENT, JOB_PROGRESS_EVENT, JOBS_QUEUE, queuePrefix, } from "./core/queue/queue.constants";
73
+ export { COMPLETED_RETENTION_SECONDS, EXPORT_CONCURRENCY, EXPORT_LOCK_DURATION_MS, EXPORTS_QUEUE, FAILED_RETENTION_SECONDS, isQueueName, isRedisConfigured, JOB_ATTEMPTS, JOB_BACKOFF_DELAY_MS, JOB_COMPLETED_EVENT, JOB_CONCURRENCY, JOB_FAILED_EVENT, JOB_PROGRESS_EVENT, JOBS_QUEUE, QUEUE_NAMES, QueueName, queuePrefix, } from "./core/queue/queue.constants";
73
74
  export { QueueModule } from "./core/queue/queue.module";
74
75
  export { buildRedisOptions } from "./core/queue/redisConnection";
76
+ export { RedisJobEventsBridge } from "./core/queue/redisJobEvents.bridge";
77
+ export { jobEventsChannel, JobEventsMessage, RedisJobEventsPublisher, } from "./core/queue/redisJobEvents.publisher";
78
+ export { ExportController } from "./core/export/export.controller";
79
+ export { ExportModule } from "./core/export/export.module";
80
+ export { ExportProcessor } from "./core/export/export.processor";
81
+ export { ExportService } from "./core/export/export.service";
82
+ export { ExportAcceptedResponse } from "./core/export/exportAccepted.response";
83
+ export { ExportApiModule } from "./core/export/exportApi.module";
84
+ export { ExportCleanupService } from "./core/export/exportCleanup.service";
85
+ export { ExportColumn, ExportColumnFormat, } from "./core/export/exportColumn.interface";
86
+ export { ExportEngineService } from "./core/export/exportEngine.service";
87
+ export { EXPORT_HANDLER, ExportContext, ExportHandler, ExportJobPayload, ExportJobSummary, ExportReport, } from "./core/export/exportHandler.interface";
88
+ export { ExportHandlerRegistry } from "./core/export/exportHandler.registry";
89
+ export { ExportStorageService } from "./core/export/exportStorage.service";
90
+ export { ExportWorkerModule } from "./core/export/exportWorker.module";
91
+ export { RequestExportCommand } from "./core/export/requestExport.command";
75
92
  export { BaseGateway, SocketData } from "./core/websocket/baseGateway";
76
93
  export { NOTIFICATIONS_NAMESPACE, roleRoom, SESSION_REFRESH_EVENT, userRoom, } from "./core/websocket/socket.constants";
77
94
  export { SOCKET_EVENT_VERSION, SocketEvent, wrapSocketEvent, } from "./core/websocket/socketEvent.envelope";
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveOrder = exports.PaginationQuery = exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = exports.FilterFieldResponse = exports.FilterOperator = exports.FilterCombinator = exports.FilterFieldType = exports.FILTER_MAX_NODES = exports.FILTER_MAX_LENGTH = exports.FILTER_MAX_IN_ITEMS = exports.FILTER_MAX_DEPTH = exports.DEFAULT_OPERATORS = exports.applyOwnershipScope = exports.applyFilter = exports.SCOPE_TEAM = exports.SCOPE_OWN = exports.SCOPE_ANY = exports.anyOrTeam = exports.anyOrOwn = exports.resolveOwnershipScope = exports.PermissionsGuard = exports.JwtAuthGuard = exports.CsrfGuard = exports.AppThrottlerGuard = exports.RequirePermission = exports.RequireAnyPermission = exports.PERMISSIONS_KEY = exports.ANY_PERMISSIONS_KEY = exports.Public = exports.IS_PUBLIC_KEY = exports.CurrentUser = exports.setAuthCookies = exports.REFRESH_COOKIE = exports.clearAuthCookies = exports.ACCESS_COOKIE = exports.EnvService = exports.validateEnv = exports.envSchema = exports.ConfigModule = exports.RlCoreModule = exports.coreEntities = exports.coreMigrations = exports.createCoreDataSource = exports.CoreModule = exports.bootstrapCore = void 0;
4
- exports.JOB_ATTEMPTS = exports.isRedisConfigured = exports.FAILED_RETENTION_SECONDS = exports.COMPLETED_RETENTION_SECONDS = exports.toSafeError = exports.JobWorkerHost = exports.JobStatusResponse = exports.JobProgressResponse = exports.JobErrorResponse = exports.JobEventsService = exports.JOB_EVENTS_PUBLISHER = exports.JobProducer = exports.BullConnectionModule = exports.Auditable = exports.RequestOutcome = exports.ErrorType = exports.codedUnauthorized = exports.codedTooManyRequests = exports.codedBadRequest = exports.AppErrorCode = exports.AppEvent = exports.auditContext = exports.User = exports.PasswordHistory = exports.Scope = exports.Role = exports.Resource = exports.Permission = exports.Group = exports.Action = exports.NotificationsPublisher = exports.NotificationsModule = exports.NotificationScope = exports.NotificationRead = exports.Notification = exports.NotificationsService = exports.ScopeType = exports.NotificationType = exports.SCOPES = exports.ROLES = exports.RESOURCES = exports.PERMISSIONS = exports.ACTIONS = exports.AuthToken = exports.RequestLog = exports.AuditDataChange = exports.seedPermissions = exports.seedAdmin = exports.BaseEntity = exports.PaginationMetaResponse = void 0;
5
- exports.normalizeIp = exports.sha256 = exports.randomToken = exports.numericCode = exports.backupCode = exports.encryptSecret = exports.decryptSecret = exports.MailerService = exports.createAppLogger = exports.WS_USER_RESOLVER = exports.WsAuthService = exports.wrapSocketEvent = exports.SOCKET_EVENT_VERSION = exports.userRoom = exports.SESSION_REFRESH_EVENT = exports.roleRoom = exports.NOTIFICATIONS_NAMESPACE = exports.BaseGateway = exports.buildRedisOptions = exports.QueueModule = exports.queuePrefix = exports.JOBS_QUEUE = exports.JOB_PROGRESS_EVENT = exports.JOB_FAILED_EVENT = exports.JOB_CONCURRENCY = exports.JOB_COMPLETED_EVENT = exports.JOB_BACKOFF_DELAY_MS = void 0;
3
+ exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.applySearch = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = exports.FilterFieldResponse = exports.FilterOperator = exports.FilterCombinator = exports.FilterFieldType = exports.FILTER_MAX_NODES = exports.FILTER_MAX_LENGTH = exports.FILTER_MAX_IN_ITEMS = exports.FILTER_MAX_DEPTH = exports.DEFAULT_OPERATORS = exports.applyOwnershipScope = exports.applyFilter = exports.SCOPE_TEAM = exports.SCOPE_OWN = exports.SCOPE_ANY = exports.anyOrTeam = exports.anyOrOwn = exports.resolveOwnershipScope = exports.PermissionsGuard = exports.JwtAuthGuard = exports.CsrfGuard = exports.AppThrottlerGuard = exports.RequirePermission = exports.RequireAnyPermission = exports.PERMISSIONS_KEY = exports.ANY_PERMISSIONS_KEY = exports.Public = exports.IS_PUBLIC_KEY = exports.CurrentUser = exports.setAuthCookies = exports.REFRESH_COOKIE = exports.clearAuthCookies = exports.ACCESS_COOKIE = exports.EnvService = exports.validateEnv = exports.envSchema = exports.ConfigModule = exports.RlCoreModule = exports.coreEntities = exports.coreMigrations = exports.createCoreDataSource = exports.CoreModule = exports.bootstrapWorker = exports.bootstrapCore = void 0;
4
+ exports.EXPORT_CONCURRENCY = exports.COMPLETED_RETENTION_SECONDS = exports.toSafeError = exports.JobWorkerHost = exports.JobStatusResponse = exports.JobProgressResponse = exports.JobErrorResponse = exports.JobEventsService = exports.JOB_EVENTS_PUBLISHER = exports.JobProducer = exports.BullConnectionModule = exports.Auditable = exports.RequestOutcome = exports.ErrorType = exports.codedUnauthorized = exports.codedTooManyRequests = exports.codedBadRequest = exports.AppErrorCode = exports.AppEvent = exports.auditContext = exports.User = exports.PasswordHistory = exports.Scope = exports.Role = exports.Resource = exports.Permission = exports.Group = exports.Action = exports.NotificationsPublisher = exports.NotificationsModule = exports.NotificationScope = exports.NotificationRead = exports.Notification = exports.NotificationsService = exports.ScopeType = exports.NotificationType = exports.SCOPES = exports.ROLES = exports.RESOURCES = exports.PERMISSIONS = exports.ACTIONS = exports.AuthToken = exports.RequestLog = exports.AuditDataChange = exports.seedPermissions = exports.seedAdmin = exports.BaseEntity = exports.PaginationMetaResponse = exports.resolveOrder = exports.PaginationQuery = void 0;
5
+ exports.randomToken = exports.numericCode = exports.backupCode = exports.encryptSecret = exports.decryptSecret = exports.MailerService = exports.createAppLogger = exports.WS_USER_RESOLVER = exports.WsAuthService = exports.wrapSocketEvent = exports.SOCKET_EVENT_VERSION = exports.userRoom = exports.SESSION_REFRESH_EVENT = exports.roleRoom = exports.NOTIFICATIONS_NAMESPACE = exports.BaseGateway = exports.RequestExportCommand = exports.ExportWorkerModule = exports.ExportStorageService = exports.ExportHandlerRegistry = exports.ExportReport = exports.EXPORT_HANDLER = exports.ExportEngineService = exports.ExportColumnFormat = exports.ExportCleanupService = exports.ExportApiModule = exports.ExportAcceptedResponse = exports.ExportService = exports.ExportProcessor = exports.ExportModule = exports.ExportController = exports.RedisJobEventsPublisher = exports.jobEventsChannel = exports.RedisJobEventsBridge = exports.buildRedisOptions = exports.QueueModule = exports.queuePrefix = exports.QUEUE_NAMES = exports.JOBS_QUEUE = exports.JOB_PROGRESS_EVENT = exports.JOB_FAILED_EVENT = exports.JOB_CONCURRENCY = exports.JOB_COMPLETED_EVENT = exports.JOB_BACKOFF_DELAY_MS = exports.JOB_ATTEMPTS = exports.isRedisConfigured = exports.isQueueName = exports.FAILED_RETENTION_SECONDS = exports.EXPORTS_QUEUE = exports.EXPORT_LOCK_DURATION_MS = void 0;
6
+ exports.normalizeIp = exports.sha256 = void 0;
6
7
  var bootstrapCore_util_1 = require("./core/bootstrap/bootstrapCore.util");
7
8
  Object.defineProperty(exports, "bootstrapCore", { enumerable: true, get: function () { return bootstrapCore_util_1.bootstrapCore; } });
9
+ var bootstrapWorker_util_1 = require("./core/bootstrap/bootstrapWorker.util");
10
+ Object.defineProperty(exports, "bootstrapWorker", { enumerable: true, get: function () { return bootstrapWorker_util_1.bootstrapWorker; } });
8
11
  var core_module_1 = require("./core/core.module");
9
12
  Object.defineProperty(exports, "CoreModule", { enumerable: true, get: function () { return core_module_1.CoreModule; } });
10
13
  var createDataSource_util_1 = require("./core/database/createDataSource.util");
@@ -75,6 +78,7 @@ Object.defineProperty(exports, "toFilterSchema", { enumerable: true, get: functi
75
78
  var filterSort_util_1 = require("./core/query/filterSort.util");
76
79
  Object.defineProperty(exports, "resolveCatalogOrder", { enumerable: true, get: function () { return filterSort_util_1.resolveCatalogOrder; } });
77
80
  var paginateWithFilter_util_1 = require("./core/query/paginateWithFilter.util");
81
+ Object.defineProperty(exports, "applySearch", { enumerable: true, get: function () { return paginateWithFilter_util_1.applySearch; } });
78
82
  Object.defineProperty(exports, "paginateWithFilter", { enumerable: true, get: function () { return paginateWithFilter_util_1.paginateWithFilter; } });
79
83
  var parseFilter_util_1 = require("./core/query/parseFilter.util");
80
84
  Object.defineProperty(exports, "parseFilter", { enumerable: true, get: function () { return parseFilter_util_1.parseFilter; } });
@@ -167,7 +171,11 @@ Object.defineProperty(exports, "JobWorkerHost", { enumerable: true, get: functio
167
171
  Object.defineProperty(exports, "toSafeError", { enumerable: true, get: function () { return jobWorkerHost_1.toSafeError; } });
168
172
  var queue_constants_1 = require("./core/queue/queue.constants");
169
173
  Object.defineProperty(exports, "COMPLETED_RETENTION_SECONDS", { enumerable: true, get: function () { return queue_constants_1.COMPLETED_RETENTION_SECONDS; } });
174
+ Object.defineProperty(exports, "EXPORT_CONCURRENCY", { enumerable: true, get: function () { return queue_constants_1.EXPORT_CONCURRENCY; } });
175
+ Object.defineProperty(exports, "EXPORT_LOCK_DURATION_MS", { enumerable: true, get: function () { return queue_constants_1.EXPORT_LOCK_DURATION_MS; } });
176
+ Object.defineProperty(exports, "EXPORTS_QUEUE", { enumerable: true, get: function () { return queue_constants_1.EXPORTS_QUEUE; } });
170
177
  Object.defineProperty(exports, "FAILED_RETENTION_SECONDS", { enumerable: true, get: function () { return queue_constants_1.FAILED_RETENTION_SECONDS; } });
178
+ Object.defineProperty(exports, "isQueueName", { enumerable: true, get: function () { return queue_constants_1.isQueueName; } });
171
179
  Object.defineProperty(exports, "isRedisConfigured", { enumerable: true, get: function () { return queue_constants_1.isRedisConfigured; } });
172
180
  Object.defineProperty(exports, "JOB_ATTEMPTS", { enumerable: true, get: function () { return queue_constants_1.JOB_ATTEMPTS; } });
173
181
  Object.defineProperty(exports, "JOB_BACKOFF_DELAY_MS", { enumerable: true, get: function () { return queue_constants_1.JOB_BACKOFF_DELAY_MS; } });
@@ -176,11 +184,46 @@ Object.defineProperty(exports, "JOB_CONCURRENCY", { enumerable: true, get: funct
176
184
  Object.defineProperty(exports, "JOB_FAILED_EVENT", { enumerable: true, get: function () { return queue_constants_1.JOB_FAILED_EVENT; } });
177
185
  Object.defineProperty(exports, "JOB_PROGRESS_EVENT", { enumerable: true, get: function () { return queue_constants_1.JOB_PROGRESS_EVENT; } });
178
186
  Object.defineProperty(exports, "JOBS_QUEUE", { enumerable: true, get: function () { return queue_constants_1.JOBS_QUEUE; } });
187
+ Object.defineProperty(exports, "QUEUE_NAMES", { enumerable: true, get: function () { return queue_constants_1.QUEUE_NAMES; } });
179
188
  Object.defineProperty(exports, "queuePrefix", { enumerable: true, get: function () { return queue_constants_1.queuePrefix; } });
180
189
  var queue_module_1 = require("./core/queue/queue.module");
181
190
  Object.defineProperty(exports, "QueueModule", { enumerable: true, get: function () { return queue_module_1.QueueModule; } });
182
191
  var redisConnection_1 = require("./core/queue/redisConnection");
183
192
  Object.defineProperty(exports, "buildRedisOptions", { enumerable: true, get: function () { return redisConnection_1.buildRedisOptions; } });
193
+ var redisJobEvents_bridge_1 = require("./core/queue/redisJobEvents.bridge");
194
+ Object.defineProperty(exports, "RedisJobEventsBridge", { enumerable: true, get: function () { return redisJobEvents_bridge_1.RedisJobEventsBridge; } });
195
+ var redisJobEvents_publisher_1 = require("./core/queue/redisJobEvents.publisher");
196
+ Object.defineProperty(exports, "jobEventsChannel", { enumerable: true, get: function () { return redisJobEvents_publisher_1.jobEventsChannel; } });
197
+ Object.defineProperty(exports, "RedisJobEventsPublisher", { enumerable: true, get: function () { return redisJobEvents_publisher_1.RedisJobEventsPublisher; } });
198
+ var export_controller_1 = require("./core/export/export.controller");
199
+ Object.defineProperty(exports, "ExportController", { enumerable: true, get: function () { return export_controller_1.ExportController; } });
200
+ var export_module_1 = require("./core/export/export.module");
201
+ Object.defineProperty(exports, "ExportModule", { enumerable: true, get: function () { return export_module_1.ExportModule; } });
202
+ var export_processor_1 = require("./core/export/export.processor");
203
+ Object.defineProperty(exports, "ExportProcessor", { enumerable: true, get: function () { return export_processor_1.ExportProcessor; } });
204
+ var export_service_1 = require("./core/export/export.service");
205
+ Object.defineProperty(exports, "ExportService", { enumerable: true, get: function () { return export_service_1.ExportService; } });
206
+ var exportAccepted_response_1 = require("./core/export/exportAccepted.response");
207
+ Object.defineProperty(exports, "ExportAcceptedResponse", { enumerable: true, get: function () { return exportAccepted_response_1.ExportAcceptedResponse; } });
208
+ var exportApi_module_1 = require("./core/export/exportApi.module");
209
+ Object.defineProperty(exports, "ExportApiModule", { enumerable: true, get: function () { return exportApi_module_1.ExportApiModule; } });
210
+ var exportCleanup_service_1 = require("./core/export/exportCleanup.service");
211
+ Object.defineProperty(exports, "ExportCleanupService", { enumerable: true, get: function () { return exportCleanup_service_1.ExportCleanupService; } });
212
+ var exportColumn_interface_1 = require("./core/export/exportColumn.interface");
213
+ Object.defineProperty(exports, "ExportColumnFormat", { enumerable: true, get: function () { return exportColumn_interface_1.ExportColumnFormat; } });
214
+ var exportEngine_service_1 = require("./core/export/exportEngine.service");
215
+ Object.defineProperty(exports, "ExportEngineService", { enumerable: true, get: function () { return exportEngine_service_1.ExportEngineService; } });
216
+ var exportHandler_interface_1 = require("./core/export/exportHandler.interface");
217
+ Object.defineProperty(exports, "EXPORT_HANDLER", { enumerable: true, get: function () { return exportHandler_interface_1.EXPORT_HANDLER; } });
218
+ Object.defineProperty(exports, "ExportReport", { enumerable: true, get: function () { return exportHandler_interface_1.ExportReport; } });
219
+ var exportHandler_registry_1 = require("./core/export/exportHandler.registry");
220
+ Object.defineProperty(exports, "ExportHandlerRegistry", { enumerable: true, get: function () { return exportHandler_registry_1.ExportHandlerRegistry; } });
221
+ var exportStorage_service_1 = require("./core/export/exportStorage.service");
222
+ Object.defineProperty(exports, "ExportStorageService", { enumerable: true, get: function () { return exportStorage_service_1.ExportStorageService; } });
223
+ var exportWorker_module_1 = require("./core/export/exportWorker.module");
224
+ Object.defineProperty(exports, "ExportWorkerModule", { enumerable: true, get: function () { return exportWorker_module_1.ExportWorkerModule; } });
225
+ var requestExport_command_1 = require("./core/export/requestExport.command");
226
+ Object.defineProperty(exports, "RequestExportCommand", { enumerable: true, get: function () { return requestExport_command_1.RequestExportCommand; } });
184
227
  var baseGateway_1 = require("./core/websocket/baseGateway");
185
228
  Object.defineProperty(exports, "BaseGateway", { enumerable: true, get: function () { return baseGateway_1.BaseGateway; } });
186
229
  var socket_constants_1 = require("./core/websocket/socket.constants");
@@ -7,4 +7,5 @@ export interface RlCoreModuleOptions {
7
7
  }
8
8
  export declare class RlCoreModule {
9
9
  static forRoot(options?: RlCoreModuleOptions): DynamicModule;
10
+ static forWorker(options?: RlCoreModuleOptions): DynamicModule;
10
11
  }