@resolveio/server-lib 22.2.2 → 22.2.3

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.
@@ -97,7 +97,7 @@ function normalizeListLimit(value) {
97
97
  function isSystemMethodUser(methodUser) {
98
98
  return !methodUser || methodUser === 'Internal System';
99
99
  }
100
- function resolveMethodUser(methodUser) {
100
+ function resolveMethodUser(methodUser, methodUserId) {
101
101
  return __awaiter(this, void 0, void 0, function () {
102
102
  var idUser;
103
103
  return __generator(this, function (_a) {
@@ -109,9 +109,13 @@ function resolveMethodUser(methodUser) {
109
109
  if (typeof methodUser === 'object' && (methodUser === null || methodUser === void 0 ? void 0 : methodUser._id) && (methodUser === null || methodUser === void 0 ? void 0 : methodUser.roles)) {
110
110
  return [2 /*return*/, methodUser];
111
111
  }
112
- idUser = normalizeString(typeof methodUser === 'string'
113
- ? methodUser
114
- : ((methodUser === null || methodUser === void 0 ? void 0 : methodUser._id) || (methodUser === null || methodUser === void 0 ? void 0 : methodUser.id_user) || ''), 80);
112
+ idUser = normalizeString(typeof methodUserId === 'string'
113
+ ? methodUserId
114
+ : ((methodUserId === null || methodUserId === void 0 ? void 0 : methodUserId._id) ||
115
+ (methodUserId === null || methodUserId === void 0 ? void 0 : methodUserId.id_user) ||
116
+ (typeof methodUser === 'string'
117
+ ? methodUser
118
+ : ((methodUser === null || methodUser === void 0 ? void 0 : methodUser._id) || (methodUser === null || methodUser === void 0 ? void 0 : methodUser.id_user) || ''))), 80);
115
119
  if (!idUser) {
116
120
  return [2 /*return*/, null];
117
121
  }
@@ -216,7 +220,7 @@ function loadCustomerNotificationMethods(methodManager) {
216
220
  var methodUser, systemUser, title, message, idClient, clientName, category, severity, details, source, sourceId, actionLabel, actionRoute, dedupeKey, expiresAt, metadata, targetUsers, now, createById, createByName, skippedByDedupe, cutoff, existing, docs;
217
221
  return __generator(this, function (_a) {
218
222
  switch (_a.label) {
219
- case 0: return [4 /*yield*/, resolveMethodUser(this.user)];
223
+ case 0: return [4 /*yield*/, resolveMethodUser(this.user, this.id_user)];
220
224
  case 1:
221
225
  methodUser = _a.sent();
222
226
  systemUser = isSystemMethodUser(this.user);
@@ -337,7 +341,7 @@ function loadCustomerNotificationMethods(methodManager) {
337
341
  var methodUser, idUser;
338
342
  return __generator(this, function (_a) {
339
343
  switch (_a.label) {
340
- case 0: return [4 /*yield*/, resolveMethodUser(this.user)];
344
+ case 0: return [4 /*yield*/, resolveMethodUser(this.user, this.id_user)];
341
345
  case 1:
342
346
  methodUser = _a.sent();
343
347
  idUser = normalizeString(methodUser === null || methodUser === void 0 ? void 0 : methodUser._id, 80);
@@ -374,7 +378,7 @@ function loadCustomerNotificationMethods(methodManager) {
374
378
  var methodUser, idUser, idClient, query;
375
379
  return __generator(this, function (_a) {
376
380
  switch (_a.label) {
377
- case 0: return [4 /*yield*/, resolveMethodUser(this.user)];
381
+ case 0: return [4 /*yield*/, resolveMethodUser(this.user, this.id_user)];
378
382
  case 1:
379
383
  methodUser = _a.sent();
380
384
  idUser = normalizeString(methodUser === null || methodUser === void 0 ? void 0 : methodUser._id, 80);
@@ -417,7 +421,7 @@ function loadCustomerNotificationMethods(methodManager) {
417
421
  var methodUser, systemUser, query, idUser, idClient, status, limit;
418
422
  return __generator(this, function (_a) {
419
423
  switch (_a.label) {
420
- case 0: return [4 /*yield*/, resolveMethodUser(this.user)];
424
+ case 0: return [4 /*yield*/, resolveMethodUser(this.user, this.id_user)];
421
425
  case 1:
422
426
  methodUser = _a.sent();
423
427
  systemUser = isSystemMethodUser(this.user);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/methods/customer-notifications.ts"],"names":[],"mappings":"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","file":"customer-notifications.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { CustomerNotifications } from '../collections/customer-notification.collection';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst DEFAULT_LIST_LIMIT = 100;\nconst MAX_LIST_LIMIT = 500;\nconst DEDUPE_WINDOW_MS = 30 * 60 * 1000;\nconst MAX_TARGET_USERS = 5000;\n\ntype CreateCustomerNotificationPayload = {\n\ttitle: string;\n\tmessage: string;\n\tdetails?: string;\n\tcategory?: string;\n\tseverity?: string;\n\ttarget_type?: 'client' | 'users' | 'all_active';\n\tid_client?: string;\n\tclient_name?: string;\n\tid_users?: string[];\n\tsource?: string;\n\tsource_id?: string;\n\taction_label?: string;\n\taction_route?: string;\n\tdedupe_key?: string;\n\texpires_at?: Date;\n\tmetadata?: Record<string, any>;\n};\n\ntype ListCustomerNotificationsPayload = {\n\tid_user?: string;\n\tid_client?: string;\n\tstatus?: 'unread' | 'read';\n\tlimit?: number;\n};\n\nfunction normalizeString(value: any, maxLength = 500): string {\n\tconst normalized = String(value || '').trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\treturn normalized.slice(0, maxLength);\n}\n\nfunction normalizeNotificationCategory(value?: string): string {\n\tconst normalized = normalizeString(value, 40).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'system';\n\t}\n\tif (['autofix', 'slow-query', 'system', 'manual'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'system';\n}\n\nfunction normalizeNotificationSeverity(value?: string): string {\n\tconst normalized = normalizeString(value, 20).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'info';\n\t}\n\tif (['info', 'success', 'warning', 'error'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'info';\n}\n\nfunction normalizeListLimit(value?: number): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn DEFAULT_LIST_LIMIT;\n\t}\n\treturn Math.min(Math.floor(parsed), MAX_LIST_LIMIT);\n}\n\nfunction isSystemMethodUser(methodUser: any): boolean {\n\treturn !methodUser || methodUser === 'Internal System';\n}\n\nasync function resolveMethodUser(methodUser: any): Promise<any | null> {\n\tif (isSystemMethodUser(methodUser)) {\n\t\treturn null;\n\t}\n\n\tif (typeof methodUser === 'object' && methodUser?._id && methodUser?.roles) {\n\t\treturn methodUser;\n\t}\n\n\tconst idUser = normalizeString(\n\t\ttypeof methodUser === 'string'\n\t\t\t? methodUser\n\t\t\t: (methodUser?._id || methodUser?.id_user || ''),\n\t\t80\n\t);\n\tif (!idUser) {\n\t\treturn null;\n\t}\n\treturn await Users.findById(idUser);\n}\n\nfunction isSuperAdmin(user: any): boolean {\n\treturn !!user?.roles?.super_admin;\n}\n\nfunction uniqueUserIds(input: string[]): string[] {\n\tconst unique = new Set<string>();\n\tfor (const entry of (Array.isArray(input) ? input : [])) {\n\t\tconst id = normalizeString(entry, 80);\n\t\tif (id) {\n\t\t\tunique.add(id);\n\t\t}\n\t\tif (unique.size >= MAX_TARGET_USERS) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nasync function resolveTargetUsers(payload: CreateCustomerNotificationPayload): Promise<string[]> {\n\tconst targetType = normalizeString(payload?.target_type || 'client', 20).toLowerCase() || 'client';\n\tif (targetType === 'users') {\n\t\treturn uniqueUserIds(payload?.id_users || []);\n\t}\n\n\tif (targetType === 'all_active') {\n\t\tconst users = await Users.find({\n\t\t\tactive: true,\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t},\n\t\t\tlimit: MAX_TARGET_USERS\n\t\t});\n\t\treturn uniqueUserIds(users.map((user: any) => user?._id));\n\t}\n\n\tconst idClient = normalizeString(payload?.id_client, 80);\n\tif (!idClient) {\n\t\treturn [];\n\t}\n\n\tconst users = await Users.find({\n\t\tactive: true,\n\t\tusername: {\n\t\t\t$exists: true\n\t\t},\n\t\t$or: [\n\t\t\t{'other.id_client': idClient},\n\t\t\t{'other.idClient': idClient},\n\t\t\t{id_client: idClient}\n\t\t]\n\t}, {\n\t\tprojection: {\n\t\t\t_id: 1\n\t\t},\n\t\tlimit: MAX_TARGET_USERS\n\t});\n\n\treturn uniqueUserIds(users.map((user: any) => user?._id));\n}\n\nexport function loadCustomerNotificationMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcreateCustomerNotification: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload: CreateCustomerNotificationPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can create notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst title = normalizeString(payload?.title, 160);\n\t\t\t\tconst message = normalizeString(payload?.message, 1500);\n\t\t\t\tif (!title || !message) {\n\t\t\t\t\tthrow new Error('Notification title and message are required.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst clientName = normalizeString(payload?.client_name, 200);\n\t\t\t\tconst category = normalizeNotificationCategory(payload?.category);\n\t\t\t\tconst severity = normalizeNotificationSeverity(payload?.severity);\n\t\t\t\tconst details = normalizeString(payload?.details, 6000);\n\t\t\t\tconst source = normalizeString(payload?.source, 120);\n\t\t\t\tconst sourceId = normalizeString(payload?.source_id, 120);\n\t\t\t\tconst actionLabel = normalizeString(payload?.action_label, 80);\n\t\t\t\tconst actionRoute = normalizeString(payload?.action_route, 500);\n\t\t\t\tconst dedupeKey = normalizeString(payload?.dedupe_key, 160);\n\t\t\t\tconst expiresAt = payload?.expires_at instanceof Date && !Number.isNaN(payload.expires_at.getTime())\n\t\t\t\t\t? payload.expires_at\n\t\t\t\t\t: undefined;\n\t\t\t\tconst metadata = payload?.metadata && typeof payload.metadata === 'object'\n\t\t\t\t\t? payload.metadata\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst targetUsers = await resolveTargetUsers(payload);\n\t\t\t\tif (!targetUsers.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'no_target_users'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst createById = systemUser ? 'Internal System' : normalizeString(methodUser?._id, 80);\n\t\t\t\tconst createByName = systemUser\n\t\t\t\t\t? 'Internal System'\n\t\t\t\t\t: normalizeString(methodUser?.fullname || methodUser?.username, 200);\n\n\t\t\t\tlet skippedByDedupe = new Set<string>();\n\t\t\t\tif (dedupeKey) {\n\t\t\t\t\tconst cutoff = new Date(now.getTime() - DEDUPE_WINDOW_MS);\n\t\t\t\t\tconst existing = await CustomerNotifications.find({\n\t\t\t\t\t\tid_user: {\n\t\t\t\t\t\t\t$in: targetUsers\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdedupe_key: dedupeKey,\n\t\t\t\t\t\tcreatedAt: {\n\t\t\t\t\t\t\t$gte: cutoff\n\t\t\t\t\t\t}\n\t\t\t\t\t}, {\n\t\t\t\t\t\tprojection: {\n\t\t\t\t\t\t\tid_user: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlimit: MAX_TARGET_USERS\n\t\t\t\t\t});\n\t\t\t\t\tskippedByDedupe = new Set(existing.map(entry => normalizeString(entry?.id_user, 80)).filter(Boolean));\n\t\t\t\t}\n\n\t\t\t\tconst docs = targetUsers\n\t\t\t\t\t.filter(idUser => !skippedByDedupe.has(idUser))\n\t\t\t\t\t.map((idUser) => ({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tid_user: idUser,\n\t\t\t\t\t\tid_client: idClient || undefined,\n\t\t\t\t\t\tclient_name: clientName || undefined,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tdetails: details || undefined,\n\t\t\t\t\t\tcategory,\n\t\t\t\t\t\tseverity,\n\t\t\t\t\t\tstatus: 'unread',\n\t\t\t\t\t\tread_at: undefined,\n\t\t\t\t\t\tread_by: '',\n\t\t\t\t\t\tsource: source || undefined,\n\t\t\t\t\t\tsource_id: sourceId || undefined,\n\t\t\t\t\t\taction_label: actionLabel || undefined,\n\t\t\t\t\t\taction_route: actionRoute || undefined,\n\t\t\t\t\t\tdedupe_key: dedupeKey || undefined,\n\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\texpires_at: expiresAt,\n\t\t\t\t\t\tcreated_by: createById || undefined,\n\t\t\t\t\t\tcreated_by_name: createByName || undefined,\n\t\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\t\tupdatedAt: now\n\t\t\t\t\t}));\n\n\t\t\t\tif (!docs.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'dedupe_suppressed'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.insertMany(docs as any[]);\n\n\t\t\t\treturn {\n\t\t\t\t\tcreated: docs.length,\n\t\t\t\t\ttargeted: targetUsers.length\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmarkUserNotificationRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_notification: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_notification: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateOne({\n\t\t\t\t\t_id: id_notification,\n\t\t\t\t\tid_user: idUser\n\t\t\t\t}, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tmarkAllUserNotificationsRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_client: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_client?: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(id_client, 80);\n\t\t\t\tconst query: Record<string, any> = {\n\t\t\t\t\tid_user: idUser,\n\t\t\t\t\tstatus: 'unread'\n\t\t\t\t};\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateMany(query, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tlistCustomerNotifications: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload?: ListCustomerNotificationsPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can list all notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst query: Record<string, any> = {};\n\t\t\t\tconst idUser = normalizeString(payload?.id_user, 80);\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst status = normalizeString(payload?.status, 20).toLowerCase();\n\t\t\t\tif (idUser) {\n\t\t\t\t\tquery.id_user = idUser;\n\t\t\t\t}\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\t\t\t\tif (status === 'unread' || status === 'read') {\n\t\t\t\t\tquery.status = status;\n\t\t\t\t}\n\n\t\t\t\tconst limit = normalizeListLimit(payload?.limit);\n\t\t\t\treturn await CustomerNotifications.find(query, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t},\n\t\t\t\t\tlimit\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
1
+ {"version":3,"sources":["../../src/methods/customer-notifications.ts"],"names":[],"mappings":"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","file":"customer-notifications.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { CustomerNotifications } from '../collections/customer-notification.collection';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst DEFAULT_LIST_LIMIT = 100;\nconst MAX_LIST_LIMIT = 500;\nconst DEDUPE_WINDOW_MS = 30 * 60 * 1000;\nconst MAX_TARGET_USERS = 5000;\n\ntype CreateCustomerNotificationPayload = {\n\ttitle: string;\n\tmessage: string;\n\tdetails?: string;\n\tcategory?: string;\n\tseverity?: string;\n\ttarget_type?: 'client' | 'users' | 'all_active';\n\tid_client?: string;\n\tclient_name?: string;\n\tid_users?: string[];\n\tsource?: string;\n\tsource_id?: string;\n\taction_label?: string;\n\taction_route?: string;\n\tdedupe_key?: string;\n\texpires_at?: Date;\n\tmetadata?: Record<string, any>;\n};\n\ntype ListCustomerNotificationsPayload = {\n\tid_user?: string;\n\tid_client?: string;\n\tstatus?: 'unread' | 'read';\n\tlimit?: number;\n};\n\nfunction normalizeString(value: any, maxLength = 500): string {\n\tconst normalized = String(value || '').trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\treturn normalized.slice(0, maxLength);\n}\n\nfunction normalizeNotificationCategory(value?: string): string {\n\tconst normalized = normalizeString(value, 40).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'system';\n\t}\n\tif (['autofix', 'slow-query', 'system', 'manual'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'system';\n}\n\nfunction normalizeNotificationSeverity(value?: string): string {\n\tconst normalized = normalizeString(value, 20).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'info';\n\t}\n\tif (['info', 'success', 'warning', 'error'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'info';\n}\n\nfunction normalizeListLimit(value?: number): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn DEFAULT_LIST_LIMIT;\n\t}\n\treturn Math.min(Math.floor(parsed), MAX_LIST_LIMIT);\n}\n\nfunction isSystemMethodUser(methodUser: any): boolean {\n\treturn !methodUser || methodUser === 'Internal System';\n}\n\nasync function resolveMethodUser(methodUser: any, methodUserId?: any): Promise<any | null> {\n\tif (isSystemMethodUser(methodUser)) {\n\t\treturn null;\n\t}\n\n\tif (typeof methodUser === 'object' && methodUser?._id && methodUser?.roles) {\n\t\treturn methodUser;\n\t}\n\n\tconst idUser = normalizeString(\n\t\ttypeof methodUserId === 'string'\n\t\t\t? methodUserId\n\t\t\t: (\n\t\t\t\tmethodUserId?._id ||\n\t\t\t\tmethodUserId?.id_user ||\n\t\t\t\t(typeof methodUser === 'string'\n\t\t\t\t\t? methodUser\n\t\t\t\t\t: (methodUser?._id || methodUser?.id_user || ''))\n\t\t\t),\n\t\t80\n\t);\n\tif (!idUser) {\n\t\treturn null;\n\t}\n\treturn await Users.findById(idUser);\n}\n\nfunction isSuperAdmin(user: any): boolean {\n\treturn !!user?.roles?.super_admin;\n}\n\nfunction uniqueUserIds(input: string[]): string[] {\n\tconst unique = new Set<string>();\n\tfor (const entry of (Array.isArray(input) ? input : [])) {\n\t\tconst id = normalizeString(entry, 80);\n\t\tif (id) {\n\t\t\tunique.add(id);\n\t\t}\n\t\tif (unique.size >= MAX_TARGET_USERS) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nasync function resolveTargetUsers(payload: CreateCustomerNotificationPayload): Promise<string[]> {\n\tconst targetType = normalizeString(payload?.target_type || 'client', 20).toLowerCase() || 'client';\n\tif (targetType === 'users') {\n\t\treturn uniqueUserIds(payload?.id_users || []);\n\t}\n\n\tif (targetType === 'all_active') {\n\t\tconst users = await Users.find({\n\t\t\tactive: true,\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t},\n\t\t\tlimit: MAX_TARGET_USERS\n\t\t});\n\t\treturn uniqueUserIds(users.map((user: any) => user?._id));\n\t}\n\n\tconst idClient = normalizeString(payload?.id_client, 80);\n\tif (!idClient) {\n\t\treturn [];\n\t}\n\n\tconst users = await Users.find({\n\t\tactive: true,\n\t\tusername: {\n\t\t\t$exists: true\n\t\t},\n\t\t$or: [\n\t\t\t{'other.id_client': idClient},\n\t\t\t{'other.idClient': idClient},\n\t\t\t{id_client: idClient}\n\t\t]\n\t}, {\n\t\tprojection: {\n\t\t\t_id: 1\n\t\t},\n\t\tlimit: MAX_TARGET_USERS\n\t});\n\n\treturn uniqueUserIds(users.map((user: any) => user?._id));\n}\n\nexport function loadCustomerNotificationMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcreateCustomerNotification: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload: CreateCustomerNotificationPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can create notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst title = normalizeString(payload?.title, 160);\n\t\t\t\tconst message = normalizeString(payload?.message, 1500);\n\t\t\t\tif (!title || !message) {\n\t\t\t\t\tthrow new Error('Notification title and message are required.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst clientName = normalizeString(payload?.client_name, 200);\n\t\t\t\tconst category = normalizeNotificationCategory(payload?.category);\n\t\t\t\tconst severity = normalizeNotificationSeverity(payload?.severity);\n\t\t\t\tconst details = normalizeString(payload?.details, 6000);\n\t\t\t\tconst source = normalizeString(payload?.source, 120);\n\t\t\t\tconst sourceId = normalizeString(payload?.source_id, 120);\n\t\t\t\tconst actionLabel = normalizeString(payload?.action_label, 80);\n\t\t\t\tconst actionRoute = normalizeString(payload?.action_route, 500);\n\t\t\t\tconst dedupeKey = normalizeString(payload?.dedupe_key, 160);\n\t\t\t\tconst expiresAt = payload?.expires_at instanceof Date && !Number.isNaN(payload.expires_at.getTime())\n\t\t\t\t\t? payload.expires_at\n\t\t\t\t\t: undefined;\n\t\t\t\tconst metadata = payload?.metadata && typeof payload.metadata === 'object'\n\t\t\t\t\t? payload.metadata\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst targetUsers = await resolveTargetUsers(payload);\n\t\t\t\tif (!targetUsers.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'no_target_users'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst createById = systemUser ? 'Internal System' : normalizeString(methodUser?._id, 80);\n\t\t\t\tconst createByName = systemUser\n\t\t\t\t\t? 'Internal System'\n\t\t\t\t\t: normalizeString(methodUser?.fullname || methodUser?.username, 200);\n\n\t\t\t\tlet skippedByDedupe = new Set<string>();\n\t\t\t\tif (dedupeKey) {\n\t\t\t\t\tconst cutoff = new Date(now.getTime() - DEDUPE_WINDOW_MS);\n\t\t\t\t\tconst existing = await CustomerNotifications.find({\n\t\t\t\t\t\tid_user: {\n\t\t\t\t\t\t\t$in: targetUsers\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdedupe_key: dedupeKey,\n\t\t\t\t\t\tcreatedAt: {\n\t\t\t\t\t\t\t$gte: cutoff\n\t\t\t\t\t\t}\n\t\t\t\t\t}, {\n\t\t\t\t\t\tprojection: {\n\t\t\t\t\t\t\tid_user: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlimit: MAX_TARGET_USERS\n\t\t\t\t\t});\n\t\t\t\t\tskippedByDedupe = new Set(existing.map(entry => normalizeString(entry?.id_user, 80)).filter(Boolean));\n\t\t\t\t}\n\n\t\t\t\tconst docs = targetUsers\n\t\t\t\t\t.filter(idUser => !skippedByDedupe.has(idUser))\n\t\t\t\t\t.map((idUser) => ({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tid_user: idUser,\n\t\t\t\t\t\tid_client: idClient || undefined,\n\t\t\t\t\t\tclient_name: clientName || undefined,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tdetails: details || undefined,\n\t\t\t\t\t\tcategory,\n\t\t\t\t\t\tseverity,\n\t\t\t\t\t\tstatus: 'unread',\n\t\t\t\t\t\tread_at: undefined,\n\t\t\t\t\t\tread_by: '',\n\t\t\t\t\t\tsource: source || undefined,\n\t\t\t\t\t\tsource_id: sourceId || undefined,\n\t\t\t\t\t\taction_label: actionLabel || undefined,\n\t\t\t\t\t\taction_route: actionRoute || undefined,\n\t\t\t\t\t\tdedupe_key: dedupeKey || undefined,\n\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\texpires_at: expiresAt,\n\t\t\t\t\t\tcreated_by: createById || undefined,\n\t\t\t\t\t\tcreated_by_name: createByName || undefined,\n\t\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\t\tupdatedAt: now\n\t\t\t\t\t}));\n\n\t\t\t\tif (!docs.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'dedupe_suppressed'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.insertMany(docs as any[]);\n\n\t\t\t\treturn {\n\t\t\t\t\tcreated: docs.length,\n\t\t\t\t\ttargeted: targetUsers.length\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmarkUserNotificationRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_notification: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_notification: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateOne({\n\t\t\t\t\t_id: id_notification,\n\t\t\t\t\tid_user: idUser\n\t\t\t\t}, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tmarkAllUserNotificationsRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_client: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_client?: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(id_client, 80);\n\t\t\t\tconst query: Record<string, any> = {\n\t\t\t\t\tid_user: idUser,\n\t\t\t\t\tstatus: 'unread'\n\t\t\t\t};\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateMany(query, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tlistCustomerNotifications: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload?: ListCustomerNotificationsPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can list all notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst query: Record<string, any> = {};\n\t\t\t\tconst idUser = normalizeString(payload?.id_user, 80);\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst status = normalizeString(payload?.status, 20).toLowerCase();\n\t\t\t\tif (idUser) {\n\t\t\t\t\tquery.id_user = idUser;\n\t\t\t\t}\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\t\t\t\tif (status === 'unread' || status === 'read') {\n\t\t\t\t\tquery.status = status;\n\t\t\t\t}\n\n\t\t\t\tconst limit = normalizeListLimit(payload?.limit);\n\t\t\t\treturn await CustomerNotifications.find(query, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t},\n\t\t\t\t\tlimit\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "22.2.2",
3
+ "version": "22.2.3",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",