rl-core-api 0.19.2 → 0.19.5

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.
@@ -0,0 +1 @@
1
+ export declare const normalizeName: (name: string) => string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeName = void 0;
4
+ const normalizeName = (name) => {
5
+ const compact = name.trim().replace(/\s+/g, " ");
6
+ if (compact === "" || compact !== compact.toLocaleLowerCase()) {
7
+ return compact;
8
+ }
9
+ return compact.charAt(0).toLocaleUpperCase() + compact.slice(1);
10
+ };
11
+ exports.normalizeName = normalizeName;
@@ -25,9 +25,14 @@ export interface UserNotification {
25
25
  body: string;
26
26
  type: NotificationType;
27
27
  route: string | null;
28
+ source: string | null;
28
29
  read: boolean;
29
30
  createdAt: Date;
30
31
  }
32
+ export declare const notificationPayload: (payload: Record<string, unknown> | null | undefined) => {
33
+ route: string | null;
34
+ source: string | null;
35
+ };
31
36
  export declare class NotificationsService {
32
37
  private readonly notifications;
33
38
  private readonly scopes;
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.NotificationsService = void 0;
12
+ exports.NotificationsService = exports.notificationPayload = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const typeorm_1 = require("typeorm");
15
15
  const pagination_util_1 = require("../../../core/utils/pagination.util");
@@ -19,6 +19,11 @@ const notificationRead_repository_1 = require("../infra/repositories/notificatio
19
19
  const notificationScope_repository_1 = require("../infra/repositories/notificationScope.repository");
20
20
  const notification_schema_1 = require("../infra/schema/notification.schema");
21
21
  const notificationScope_schema_1 = require("../infra/schema/notificationScope.schema");
22
+ const notificationPayload = (payload) => ({
23
+ route: typeof payload?.route === "string" ? payload.route : null,
24
+ source: typeof payload?.source === "string" ? payload.source : null,
25
+ });
26
+ exports.notificationPayload = notificationPayload;
22
27
  let NotificationsService = class NotificationsService {
23
28
  constructor(notifications, scopes, reads, dataSource) {
24
29
  this.notifications = notifications;
@@ -85,13 +90,14 @@ let NotificationsService = class NotificationsService {
85
90
  return { userId: user.id, roleNames: user.roles ?? [] };
86
91
  }
87
92
  toUserNotification(notification) {
88
- const payload = notification.payload;
93
+ const payload = (0, exports.notificationPayload)(notification.payload);
89
94
  return {
90
95
  id: notification.id,
91
96
  title: notification.title,
92
97
  body: notification.body,
93
98
  type: notification.type,
94
- route: payload?.route ?? null,
99
+ route: payload.route,
100
+ source: payload.source,
95
101
  read: (notification.reads?.length ?? 0) > 0,
96
102
  createdAt: notification.createdAt,
97
103
  };
@@ -64,7 +64,7 @@ __decorate([
64
64
  (0, swagger_1.ApiProperty)({
65
65
  required: false,
66
66
  type: Object,
67
- description: "Dado extra. `route` é usado pelo cliente para navegar.",
67
+ description: "Dado extra. `route` é usado pelo cliente para navegar; `source` é o módulo de origem, que agrupa o sino.",
68
68
  }),
69
69
  (0, class_validator_1.IsOptional)(),
70
70
  (0, class_validator_1.IsObject)(),
@@ -20,13 +20,14 @@ let NotificationsPublisher = class NotificationsPublisher {
20
20
  }
21
21
  async publishAndPush(params) {
22
22
  const saved = await this.notifications.publish(params);
23
- const payload = params.payload;
23
+ const payload = (0, notifications_service_1.notificationPayload)(params.payload);
24
24
  const response = {
25
25
  id: saved.id,
26
26
  title: saved.title,
27
27
  body: saved.body,
28
28
  type: saved.type,
29
- route: payload?.route ?? null,
29
+ route: payload.route,
30
+ source: payload.source,
30
31
  read: false,
31
32
  createdAt: saved.createdAt,
32
33
  };
@@ -6,6 +6,7 @@ export declare class UserNotificationResponse {
6
6
  body: string;
7
7
  type: NotificationType;
8
8
  route: string | null;
9
+ source: string | null;
9
10
  read: boolean;
10
11
  createdAt: Date;
11
12
  }
@@ -44,6 +44,16 @@ __decorate([
44
44
  }),
45
45
  __metadata("design:type", Object)
46
46
  ], UserNotificationResponse.prototype, "route", void 0);
47
+ __decorate([
48
+ (0, swagger_1.ApiProperty)({
49
+ type: String,
50
+ required: false,
51
+ nullable: true,
52
+ example: "Contas",
53
+ description: "Módulo de origem, que agrupa o sino. Nulo quando veio do próprio sistema.",
54
+ }),
55
+ __metadata("design:type", Object)
56
+ ], UserNotificationResponse.prototype, "source", void 0);
47
57
  __decorate([
48
58
  (0, swagger_1.ApiProperty)(),
49
59
  __metadata("design:type", Boolean)
package/dist/index.d.ts CHANGED
@@ -127,3 +127,4 @@ export { MailerService } from "./core/mailer/mailer.service";
127
127
  export { decryptSecret, encryptSecret } from "./core/utils/crypto.util";
128
128
  export { backupCode, numericCode, randomToken, sha256, } from "./core/utils/hash.util";
129
129
  export { normalizeIp } from "./core/utils/ip.util";
130
+ export { normalizeName } from "./core/utils/name.util";
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  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.INSUFFICIENT_PERMISSION = exports.hasPermission = exports.hasAnyPermission = exports.assertPermission = exports.assertAnyPermission = exports.resolveOwnershipScope = exports.PermissionsGuard = exports.PasswordPolicyGuard = 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.AllowPendingPassword = 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.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 = exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.applySearch = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = void 0;
5
5
  exports.ExportWorkerModule = exports.ExportStorageService = exports.ExportStatusResponse = exports.ExportKind = exports.ExportHandlerRegistry = exports.ExportReport = exports.EXPORT_HANDLER = exports.ExportExtension = exports.EXPORT_CONTENT_TYPES = exports.ExportEngineService = exports.ExportDocument = exports.EXPORT_DOCUMENT = exports.ExportColumnFormat = exports.ExportCleanupService = exports.ExportApiModule = exports.ExportAcceptedResponse = exports.ExportService = exports.ExportProcessor = exports.ExportModule = exports.ExportController = exports.EXPORT_PARAMS_MAX_LENGTH = 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.IMAGES_QUEUE = exports.IMAGE_LOCK_DURATION_MS = exports.IMAGE_CONCURRENCY = exports.FAILED_RETENTION_SECONDS = exports.EXPORTS_QUEUE = exports.EXPORT_LOCK_DURATION_MS = exports.EXPORT_CONCURRENCY = exports.COMPLETED_RETENTION_SECONDS = exports.toSafeError = exports.JobWorkerHost = exports.JobStatusResponse = exports.JobProgressResponse = exports.JobErrorResponse = void 0;
6
- 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.UploadImageFromUrlCommand = exports.ImageStatusResponse = exports.ImageProfileResponse = exports.ImageAcceptedResponse = exports.ImagesWorkerModule = exports.ImageStorageService = exports.ImagesApiModule = exports.ImagesService = exports.ImagesProcessor = exports.ImagesModule = exports.ImagesController = exports.ImageProfileRegistry = exports.ImageUploadProfile = exports.ImageSourceKind = exports.ImageFormat = exports.ImageFit = exports.IMAGE_PROFILE = exports.EXTENSION_BY_FORMAT = exports.ImageProcessingService = exports.isBlockedAddress = exports.ImageFetchService = exports.ImageCleanupService = exports.RequestExportCommand = exports.PdfDocumentService = exports.PDF_TABLE_LAYOUT = exports.PDF_STYLE = void 0;
6
+ exports.normalizeName = 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.UploadImageFromUrlCommand = exports.ImageStatusResponse = exports.ImageProfileResponse = exports.ImageAcceptedResponse = exports.ImagesWorkerModule = exports.ImageStorageService = exports.ImagesApiModule = exports.ImagesService = exports.ImagesProcessor = exports.ImagesModule = exports.ImagesController = exports.ImageProfileRegistry = exports.ImageUploadProfile = exports.ImageSourceKind = exports.ImageFormat = exports.ImageFit = exports.IMAGE_PROFILE = exports.EXTENSION_BY_FORMAT = exports.ImageProcessingService = exports.isBlockedAddress = exports.ImageFetchService = exports.ImageCleanupService = exports.RequestExportCommand = exports.PdfDocumentService = exports.PDF_TABLE_LAYOUT = exports.PDF_STYLE = 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");
@@ -320,3 +320,5 @@ Object.defineProperty(exports, "randomToken", { enumerable: true, get: function
320
320
  Object.defineProperty(exports, "sha256", { enumerable: true, get: function () { return hash_util_1.sha256; } });
321
321
  var ip_util_1 = require("./core/utils/ip.util");
322
322
  Object.defineProperty(exports, "normalizeIp", { enumerable: true, get: function () { return ip_util_1.normalizeIp; } });
323
+ var name_util_1 = require("./core/utils/name.util");
324
+ Object.defineProperty(exports, "normalizeName", { enumerable: true, get: function () { return name_util_1.normalizeName; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rl-core-api",
3
- "version": "0.19.2",
3
+ "version": "0.19.5",
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",