rl-core-api 0.15.1 → 0.15.2

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.
@@ -3,6 +3,7 @@ import type { Response } from "express";
3
3
  import { AuthenticatedUser } from "../auth/authenticatedUser.interface";
4
4
  import { ExportService } from "./export.service";
5
5
  import { ExportAcceptedResponse } from "./exportAccepted.response";
6
+ import { ExportStatusResponse } from "./exportStatus.response";
6
7
  import { ExportStorageService } from "./exportStorage.service";
7
8
  import { RequestExportCommand } from "./requestExport.command";
8
9
  export declare class ExportController {
@@ -10,5 +11,6 @@ export declare class ExportController {
10
11
  private readonly storage;
11
12
  constructor(exports: ExportService, storage: ExportStorageService);
12
13
  request(user: AuthenticatedUser, handler: string, command: RequestExportCommand): Promise<ExportAcceptedResponse>;
14
+ status(user: AuthenticatedUser, jobId: string): Promise<ExportStatusResponse>;
13
15
  download(user: AuthenticatedUser, jobId: string, response: Response): Promise<StreamableFile>;
14
16
  }
@@ -20,6 +20,7 @@ const currentUser_decorator_1 = require("../auth/decorators/currentUser.decorato
20
20
  const permissions_guard_1 = require("../auth/guards/permissions.guard");
21
21
  const export_service_1 = require("./export.service");
22
22
  const exportAccepted_response_1 = require("./exportAccepted.response");
23
+ const exportStatus_response_1 = require("./exportStatus.response");
23
24
  const exportStorage_service_1 = require("./exportStorage.service");
24
25
  const requestExport_command_1 = require("./requestExport.command");
25
26
  const XLSX_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
@@ -33,6 +34,16 @@ let ExportController = class ExportController {
33
34
  const ref = await this.exports.request(user, handler, command);
34
35
  return { jobId: ref.jobId, name: ref.name };
35
36
  }
37
+ async status(user, jobId) {
38
+ const job = await this.exports.status(jobId, user.id);
39
+ return {
40
+ state: job.state,
41
+ processed: job.progress?.processed ?? 0,
42
+ totalRows: job.summary?.totalRows ?? null,
43
+ fileName: job.summary?.fileName ?? null,
44
+ errorMessage: job.error?.message ?? null,
45
+ };
46
+ }
36
47
  async download(user, jobId, response) {
37
48
  const status = await this.exports.status(jobId, user.id);
38
49
  if (status.state === "failed") {
@@ -63,6 +74,16 @@ __decorate([
63
74
  __metadata("design:paramtypes", [Object, String, requestExport_command_1.RequestExportCommand]),
64
75
  __metadata("design:returntype", Promise)
65
76
  ], ExportController.prototype, "request", null);
77
+ __decorate([
78
+ (0, common_1.Get)(":jobId/status"),
79
+ (0, swagger_1.ApiParam)({ name: "jobId", example: "184" }),
80
+ (0, swagger_1.ApiOkResponse)({ type: exportStatus_response_1.ExportStatusResponse }),
81
+ __param(0, (0, currentUser_decorator_1.CurrentUser)()),
82
+ __param(1, (0, common_1.Param)("jobId")),
83
+ __metadata("design:type", Function),
84
+ __metadata("design:paramtypes", [Object, String]),
85
+ __metadata("design:returntype", Promise)
86
+ ], ExportController.prototype, "status", null);
66
87
  __decorate([
67
88
  (0, common_1.Get)(":jobId"),
68
89
  (0, swagger_1.ApiParam)({ name: "jobId", example: "184" }),
@@ -0,0 +1,7 @@
1
+ export declare class ExportStatusResponse {
2
+ state: string;
3
+ processed: number;
4
+ totalRows: number | null;
5
+ fileName: string | null;
6
+ errorMessage: string | null;
7
+ }
@@ -0,0 +1,36 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ExportStatusResponse = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ class ExportStatusResponse {
15
+ }
16
+ exports.ExportStatusResponse = ExportStatusResponse;
17
+ __decorate([
18
+ (0, swagger_1.ApiProperty)({ enum: ["waiting", "active", "completed", "failed", "delayed", "unknown"] }),
19
+ __metadata("design:type", String)
20
+ ], ExportStatusResponse.prototype, "state", void 0);
21
+ __decorate([
22
+ (0, swagger_1.ApiProperty)({ example: 12000 }),
23
+ __metadata("design:type", Number)
24
+ ], ExportStatusResponse.prototype, "processed", void 0);
25
+ __decorate([
26
+ (0, swagger_1.ApiProperty)({ type: Number, nullable: true, example: 25000 }),
27
+ __metadata("design:type", Object)
28
+ ], ExportStatusResponse.prototype, "totalRows", void 0);
29
+ __decorate([
30
+ (0, swagger_1.ApiProperty)({ type: String, nullable: true, example: "funkos_2026-09-05.xlsx" }),
31
+ __metadata("design:type", Object)
32
+ ], ExportStatusResponse.prototype, "fileName", void 0);
33
+ __decorate([
34
+ (0, swagger_1.ApiProperty)({ type: String, nullable: true }),
35
+ __metadata("design:type", Object)
36
+ ], ExportStatusResponse.prototype, "errorMessage", void 0);
package/dist/index.d.ts CHANGED
@@ -86,6 +86,7 @@ export { ExportColumn, ExportColumnFormat, } from "./core/export/exportColumn.in
86
86
  export { ExportEngineService } from "./core/export/exportEngine.service";
87
87
  export { EXPORT_HANDLER, ExportContext, ExportHandler, ExportJobPayload, ExportJobSummary, ExportReport, } from "./core/export/exportHandler.interface";
88
88
  export { ExportHandlerRegistry } from "./core/export/exportHandler.registry";
89
+ export { ExportStatusResponse } from "./core/export/exportStatus.response";
89
90
  export { ExportStorageService } from "./core/export/exportStorage.service";
90
91
  export { ExportWorkerModule } from "./core/export/exportWorker.module";
91
92
  export { RequestExportCommand } from "./core/export/requestExport.command";
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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
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;
5
+ 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.ExportStatusResponse = 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 = exports.randomToken = void 0;
7
7
  var bootstrapCore_util_1 = require("./core/bootstrap/bootstrapCore.util");
8
8
  Object.defineProperty(exports, "bootstrapCore", { enumerable: true, get: function () { return bootstrapCore_util_1.bootstrapCore; } });
9
9
  var bootstrapWorker_util_1 = require("./core/bootstrap/bootstrapWorker.util");
@@ -218,6 +218,8 @@ Object.defineProperty(exports, "EXPORT_HANDLER", { enumerable: true, get: functi
218
218
  Object.defineProperty(exports, "ExportReport", { enumerable: true, get: function () { return exportHandler_interface_1.ExportReport; } });
219
219
  var exportHandler_registry_1 = require("./core/export/exportHandler.registry");
220
220
  Object.defineProperty(exports, "ExportHandlerRegistry", { enumerable: true, get: function () { return exportHandler_registry_1.ExportHandlerRegistry; } });
221
+ var exportStatus_response_1 = require("./core/export/exportStatus.response");
222
+ Object.defineProperty(exports, "ExportStatusResponse", { enumerable: true, get: function () { return exportStatus_response_1.ExportStatusResponse; } });
221
223
  var exportStorage_service_1 = require("./core/export/exportStorage.service");
222
224
  Object.defineProperty(exports, "ExportStorageService", { enumerable: true, get: function () { return exportStorage_service_1.ExportStorageService; } });
223
225
  var exportWorker_module_1 = require("./core/export/exportWorker.module");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rl-core-api",
3
- "version": "0.15.1",
3
+ "version": "0.15.2",
4
4
  "description": "Core NestJS: autenticação com 2FA, RBAC, auditoria, notificações e listagens com filtro dinâmico",
5
5
  "author": "Rodrigo Liberti",
6
6
  "license": "MIT",