@flusys/nestjs-shared 8.1.5 → 9.0.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 (41) hide show
  1. package/README.md +48 -2
  2. package/classes/api-service.class.d.ts +3 -0
  3. package/constants/permissions.d.ts +46 -0
  4. package/exceptions/base-app.exception.d.ts +3 -2
  5. package/fesm/{509.js → 183.js} +43 -37
  6. package/fesm/470.js +228 -105
  7. package/fesm/667.js +28 -10
  8. package/fesm/{67.js → 681.js} +97 -19
  9. package/fesm/{720.js → 948.js} +60 -7
  10. package/fesm/chunks/123.js +9 -10
  11. package/fesm/chunks/37.js +7 -8
  12. package/fesm/classes/index.js +10 -4
  13. package/fesm/constants/index.js +53 -1
  14. package/fesm/decorators/index.js +4 -4
  15. package/fesm/dtos/index.js +2 -2
  16. package/fesm/guards/index.js +48 -426
  17. package/fesm/index.js +436 -341
  18. package/fesm/interceptors/index.js +62 -23
  19. package/fesm/interfaces/index.js +28 -3
  20. package/fesm/middlewares/index.js +5 -3
  21. package/fesm/modules/index.js +6 -414
  22. package/fesm/pipes/index.js +196 -0
  23. package/fesm/utils/index.js +125 -10
  24. package/index.d.ts +1 -0
  25. package/interfaces/company-access-resolver.interface.d.ts +18 -0
  26. package/interfaces/datasource.interface.d.ts +2 -0
  27. package/interfaces/email-adapter.interface.d.ts +27 -0
  28. package/interfaces/index.d.ts +5 -0
  29. package/interfaces/message-ref.interface.d.ts +4 -0
  30. package/interfaces/permission-action-registry.interface.d.ts +12 -0
  31. package/interfaces/permission-resolver.interface.d.ts +9 -0
  32. package/middlewares/logger.middleware.d.ts +4 -0
  33. package/modules/shared-permission-cache/shared-permission-cache.service.d.ts +5 -0
  34. package/package.json +8 -2
  35. package/pipes/dto-body-validation.pipe.d.ts +18 -0
  36. package/pipes/index.d.ts +1 -0
  37. package/utils/cache-tenant.util.d.ts +2 -0
  38. package/utils/index.d.ts +3 -0
  39. package/utils/message-ref.util.d.ts +2 -0
  40. package/utils/permission-match.util.d.ts +1 -0
  41. package/utils/query-helpers.util.d.ts +2 -1
@@ -1,424 +1,16 @@
1
- import * as __rspack_external__flusys_nestjs_core_config_197fa0a9 from "@flusys/nestjs-core/config";
2
- import * as __rspack_external__nestjs_common_a04939da from "@nestjs/common";
3
1
  export const __rspack_esm_id = 900;
4
2
  export const __rspack_esm_ids = [900];
5
- export const __webpack_modules__ = {
6
- 43(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
7
- /* import */ var _permissions_js__rspack_import_0 = __webpack_require__(975);
8
- /* import */ var _message_keys_js__rspack_import_1 = __webpack_require__(389);
9
- // Metadata keys
10
- const IS_PUBLIC_KEY = 'isPublic';
11
- const PERMISSIONS_KEY = 'permissions';
12
- const DOMAIN_EVENT_HANDLER_KEY = 'domainEventHandler';
13
- // Injection tokens
14
- const CACHE_INSTANCE = 'CACHE_INSTANCE';
15
- const PERMISSION_GUARD_CONFIG = 'PERMISSION_GUARD_CONFIG';
16
- const EVENT_BUS_INSTANCE = 'EVENT_BUS_INSTANCE';
17
- const EVENT_BUS_MODULE_OPTIONS = 'EVENT_BUS_MODULE_OPTIONS';
18
- // Header names
19
- const IDEMPOTENCY_KEY_HEADER = 'x-idempotency-key';
20
- const REQUEST_ID_HEADER = 'x-request-id';
21
- const CLIENT_TYPE_HEADER = 'x-client-type';
22
- // Cache key prefixes
23
- const PERMISSIONS_CACHE_PREFIX = 'my-permissions';
24
- const IDEMPOTENCY_CACHE_PREFIX = 'idempotency';
25
- // Event bus defaults
26
- const DEFAULT_EVENT_EXCHANGE = 'flusys.events';
27
- const DEFAULT_EVENT_TOPIC = 'flusys.domain-events';
28
- const DEFAULT_EVENT_SERVICE_NAME = 'flusys';
29
- // Permission codes
30
-
31
- // Message keys for localization
32
-
33
-
34
- __webpack_require__.d(__webpack_exports__, {
35
- BC: () => (/* reexport safe */ _permissions_js__rspack_import_0.BC),
36
- Bz: () => (/* reexport safe */ _permissions_js__rspack_import_0.Bz),
37
- Em: () => (/* reexport safe */ _permissions_js__rspack_import_0.Em),
38
- GT: () => (/* reexport safe */ _permissions_js__rspack_import_0.GT),
39
- Jj: () => (/* reexport safe */ _permissions_js__rspack_import_0.Jj),
40
- N3: () => (/* reexport safe */ _permissions_js__rspack_import_0.N3),
41
- ON: () => (/* reexport safe */ _permissions_js__rspack_import_0.ON),
42
- P0: () => (/* reexport safe */ _permissions_js__rspack_import_0.P0),
43
- Q5: () => (/* reexport safe */ _permissions_js__rspack_import_0.Q5),
44
- S6: () => (/* reexport safe */ _permissions_js__rspack_import_0.S6),
45
- T: () => (/* reexport safe */ _permissions_js__rspack_import_0.T),
46
- UB: () => (/* reexport safe */ _permissions_js__rspack_import_0.UB),
47
- UG: () => (/* reexport safe */ _permissions_js__rspack_import_0.UG),
48
- UU: () => (/* reexport safe */ _message_keys_js__rspack_import_1.UU),
49
- Ub: () => (/* reexport safe */ _permissions_js__rspack_import_0.Ub),
50
- V0: () => (/* reexport safe */ _permissions_js__rspack_import_0.V0),
51
- Wc: () => (/* reexport safe */ _permissions_js__rspack_import_0.Wc),
52
- Y3: () => (/* reexport safe */ _permissions_js__rspack_import_0.Y3),
53
- Y7: () => (/* reexport safe */ _permissions_js__rspack_import_0.Y7),
54
- _X: () => (/* reexport safe */ _permissions_js__rspack_import_0._X),
55
- aO: () => (/* reexport safe */ _permissions_js__rspack_import_0.aO),
56
- fS: () => (/* reexport safe */ _permissions_js__rspack_import_0.fS),
57
- hg: () => (/* reexport safe */ _message_keys_js__rspack_import_1.hg),
58
- l3: () => (/* reexport safe */ _permissions_js__rspack_import_0.l3),
59
- mK: () => (/* reexport safe */ _message_keys_js__rspack_import_1.mK),
60
- mV: () => (/* reexport safe */ _permissions_js__rspack_import_0.mV),
61
- rH: () => (/* reexport safe */ _permissions_js__rspack_import_0.rH),
62
- t$: () => (/* reexport safe */ _permissions_js__rspack_import_0.t$),
63
- w7: () => (/* reexport safe */ _permissions_js__rspack_import_0.w7),
64
- wA: () => (/* reexport safe */ _permissions_js__rspack_import_0.wA),
65
- wM: () => (/* reexport safe */ _permissions_js__rspack_import_0.wM),
66
- z$: () => (/* reexport safe */ _permissions_js__rspack_import_0.z$),
67
- zd: () => (/* reexport safe */ _permissions_js__rspack_import_0.zd)
68
- }, {
69
- Hq: DEFAULT_EVENT_EXCHANGE,
70
- Lw: PERMISSION_GUARD_CONFIG,
71
- N7: PERMISSIONS_KEY,
72
- PT: DOMAIN_EVENT_HANDLER_KEY,
73
- Qj: EVENT_BUS_INSTANCE,
74
- SL: EVENT_BUS_MODULE_OPTIONS,
75
- fG: PERMISSIONS_CACHE_PREFIX,
76
- iH: IDEMPOTENCY_KEY_HEADER,
77
- jA: IS_PUBLIC_KEY,
78
- kC: REQUEST_ID_HEADER,
79
- mg: IDEMPOTENCY_CACHE_PREFIX,
80
- nx: DEFAULT_EVENT_TOPIC,
81
- xw: CLIENT_TYPE_HEADER,
82
- zl: CACHE_INSTANCE
83
- });
84
-
85
-
86
- },
87
- 389(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
88
- // ==================== AUTH (Shared across guards/interceptors) ====================
89
- // These are duplicated in nestjs-auth but needed here to avoid circular dependencies
90
- const AUTH_MESSAGES = {
91
- TOKEN_REQUIRED: 'auth.token.required',
92
- TOKEN_INVALID: 'auth.token.invalid',
93
- ENTITY_BELOG_ANOTHER_COMPANY: 'entity.belongs.another.company',
94
- COMPANY_NO_ACCESS: 'auth.company.no.access'
95
- };
96
- // ==================== ERROR (HTTP Exceptions) ====================
97
- const ERROR_MESSAGES = {
98
- NOT_FOUND: 'error.not.found',
99
- VALIDATION: 'error.validation',
100
- UNAUTHORIZED: 'error.unauthorized',
101
- FORBIDDEN: 'error.forbidden',
102
- CONFLICT: 'error.conflict',
103
- DB_FOREIGN_KEY: 'error.db.foreign.key',
104
- DB_NOT_NULL: 'error.db.not.null',
105
- DB_INVALID_INPUT: 'error.db.invalid.input',
106
- DB_VALUE_TOO_LONG: 'error.db.value.too.long',
107
- DB_CHECK_CONSTRAINT: 'error.db.check.constraint',
108
- DB_DEADLOCK: 'error.db.deadlock',
109
- INTERNAL: 'error.internal',
110
- SERVICE_UNAVAILABLE: 'error.service.unavailable',
111
- UNKNOWN: 'error.unknown',
112
- HTTP: 'error.http',
113
- GENERIC: 'error.generic',
114
- PERMISSION_SYSTEM_UNAVAILABLE: 'error.permission.system.unavailable',
115
- INSUFFICIENT_PERMISSIONS: 'error.insufficient.permissions',
116
- INSUFFICIENT_PERMISSIONS_OR: 'error.insufficient.permissions.or',
117
- NO_PERMISSIONS_FOUND: 'error.no.permissions.found',
118
- ENDPOINT_DISABLED: 'error.endpoint.disabled'
119
- };
120
- // ==================== SYSTEM (Infrastructure) ====================
121
- const SYSTEM_MESSAGES = {
122
- REPOSITORY_NOT_AVAILABLE: 'system.repository.not.available',
123
- DATASOURCE_NOT_AVAILABLE: 'system.datasource.not.available',
124
- DATABASE_CONFIG_NOT_AVAILABLE: 'system.database.config.not.available',
125
- SERVICE_NOT_AVAILABLE: 'system.service.not.available',
126
- CONFIG_REQUIRED: 'system.config.required',
127
- INTERNAL_ERROR: 'system.internal.error',
128
- DUPLICATE_REQUEST: 'system.duplicate.request',
129
- INVALID_TENANT_ID: 'system.invalid.tenant.id',
130
- TENANT_NOT_FOUND: 'system.tenant.not.found',
131
- TENANT_HEADER_REQUIRED: 'system.tenant.header.required',
132
- MISSING_PARAMETER: 'system.missing.parameter',
133
- SDK_NOT_INSTALLED: 'system.sdk.not.installed',
134
- PATH_TRAVERSAL_DETECTED: 'system.path.traversal.detected',
135
- INVALID_FILE_KEY: 'system.invalid.file.key'
136
- };
137
-
138
- __webpack_require__.d(__webpack_exports__, {
139
- }, {
140
- UU: ERROR_MESSAGES,
141
- hg: SYSTEM_MESSAGES,
142
- mK: AUTH_MESSAGES
143
- });
144
-
145
-
146
- },
147
- 975(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
148
- // ==================== AUTH MODULE ====================
149
- const USER_PERMISSIONS = {
150
- CREATE: 'user.create',
151
- READ: 'user.read',
152
- UPDATE: 'user.update',
153
- DELETE: 'user.delete',
154
- LOOKUP: 'user.lookup'
155
- };
156
- const COMPANY_PERMISSIONS = {
157
- CREATE: 'company.create',
158
- READ: 'company.read',
159
- UPDATE: 'company.update',
160
- DELETE: 'company.delete'
161
- };
162
- const BRANCH_PERMISSIONS = {
163
- CREATE: 'branch.create',
164
- READ: 'branch.read',
165
- UPDATE: 'branch.update',
166
- DELETE: 'branch.delete'
167
- };
168
- const SOCIAL_AUTH_CONFIG_PERMISSIONS = {
169
- CREATE: 'social-config.create',
170
- READ: 'social-config.read',
171
- UPDATE: 'social-config.update',
172
- DELETE: 'social-config.delete'
173
- };
174
- // ==================== IAM MODULE ====================
175
- const ACTION_PERMISSIONS = {
176
- CREATE: 'action.create',
177
- READ: 'action.read',
178
- UPDATE: 'action.update',
179
- DELETE: 'action.delete'
180
- };
181
- const ROLE_PERMISSIONS = {
182
- CREATE: 'role.create',
183
- READ: 'role.read',
184
- UPDATE: 'role.update',
185
- DELETE: 'role.delete'
186
- };
187
- const ROLE_ACTION_PERMISSIONS = {
188
- READ: 'role-action.read',
189
- ASSIGN: 'role-action.assign'
190
- };
191
- const USER_ROLE_PERMISSIONS = {
192
- READ: 'user-role.read',
193
- ASSIGN: 'user-role.assign'
194
- };
195
- const USER_ACTION_PERMISSIONS = {
196
- READ: 'user-action.read',
197
- ASSIGN: 'user-action.assign'
198
- };
199
- const COMPANY_ACTION_PERMISSIONS = {
200
- READ: 'company-action.read',
201
- ASSIGN: 'company-action.assign'
202
- };
203
- // ==================== STORAGE MODULE ====================
204
- const FILE_PERMISSIONS = {
205
- CREATE: 'file.create',
206
- READ: 'file.read',
207
- UPDATE: 'file.update',
208
- DELETE: 'file.delete',
209
- VIEW_PRIVATE_ACTION: 'file.view.private'
210
- };
211
- const FOLDER_PERMISSIONS = {
212
- CREATE: 'folder.create',
213
- READ: 'folder.read',
214
- UPDATE: 'folder.update',
215
- DELETE: 'folder.delete'
216
- };
217
- const STORAGE_CONFIG_PERMISSIONS = {
218
- CREATE: 'storage-config.create',
219
- READ: 'storage-config.read',
220
- UPDATE: 'storage-config.update',
221
- DELETE: 'storage-config.delete'
222
- };
223
- const UPLOAD_CONFIG_PERMISSIONS = {
224
- DELETE: 'upload-config.delete'
225
- };
226
- // ==================== EMAIL MODULE ====================
227
- const EMAIL_CONFIG_PERMISSIONS = {
228
- CREATE: 'email-config.create',
229
- READ: 'email-config.read',
230
- UPDATE: 'email-config.update',
231
- DELETE: 'email-config.delete'
232
- };
233
- const EMAIL_TEMPLATE_PERMISSIONS = {
234
- CREATE: 'email-template.create',
235
- READ: 'email-template.read',
236
- UPDATE: 'email-template.update',
237
- DELETE: 'email-template.delete'
238
- };
239
- // ==================== FORM BUILDER MODULE ====================
240
- const FORM_PERMISSIONS = {
241
- CREATE: 'form.create',
242
- READ: 'form.read',
243
- UPDATE: 'form.update',
244
- DELETE: 'form.delete'
245
- };
246
- const FORM_RESULT_PERMISSIONS = {
247
- CREATE: 'form-result.create',
248
- READ: 'form-result.read',
249
- UPDATE: 'form-result.update',
250
- DELETE: 'form-result.delete'
251
- };
252
- // ==================== EVENT MANAGER MODULE ====================
253
- const EVENT_PERMISSIONS = {
254
- CREATE: 'event.create',
255
- READ: 'event.read',
256
- UPDATE: 'event.update',
257
- DELETE: 'event.delete'
258
- };
259
- // ==================== NOTIFICATION MODULE ====================
260
- const NOTIFICATION_PERMISSIONS = {
261
- CREATE: 'notification.create',
262
- READ: 'notification.read',
263
- UPDATE: 'notification.update',
264
- DELETE: 'notification.delete'
265
- };
266
- // ==================== LOCALIZATION MODULE ====================
267
- const LANGUAGE_PERMISSIONS = {
268
- CREATE: 'language.create',
269
- READ: 'language.read',
270
- UPDATE: 'language.update',
271
- DELETE: 'language.delete'
272
- };
273
- const TRANSLATION_KEY_PERMISSIONS = {
274
- CREATE: 'translation-key.create',
275
- READ: 'translation-key.read',
276
- UPDATE: 'translation-key.update',
277
- DELETE: 'translation-key.delete'
278
- };
279
- const TRANSLATION_PERMISSIONS = {
280
- CREATE: 'translation.create',
281
- READ: 'translation.read',
282
- UPDATE: 'translation.update',
283
- DELETE: 'translation.delete'
284
- };
285
- // ==================== TASK MANAGER MODULE ====================
286
- const TASK_BOARD_PERMISSIONS = {
287
- CREATE: 'task-board.create',
288
- READ: 'task-board.read',
289
- UPDATE: 'task-board.update',
290
- DELETE: 'task-board.delete',
291
- MANAGE_MEMBERS: 'task-board.manage-members'
292
- };
293
- const TASK_LIST_PERMISSIONS = {
294
- CREATE: 'task-list.create',
295
- READ: 'task-list.read',
296
- UPDATE: 'task-list.update',
297
- DELETE: 'task-list.delete'
298
- };
299
- const TASK_PERMISSIONS = {
300
- CREATE: 'task.create',
301
- READ: 'task.read',
302
- UPDATE: 'task.update',
303
- DELETE: 'task.delete',
304
- MOVE: 'task.move',
305
- ASSIGN: 'task.assign'
306
- };
307
- const TASK_LABEL_PERMISSIONS = {
308
- CREATE: 'task-label.create',
309
- READ: 'task-label.read',
310
- UPDATE: 'task-label.update',
311
- DELETE: 'task-label.delete'
312
- };
313
- const TASK_COMMENT_PERMISSIONS = {
314
- CREATE: 'task-comment.create',
315
- READ: 'task-comment.read',
316
- DELETE: 'task-comment.delete'
317
- };
318
- // ==================== AI ASSISTANT MODULE ====================
319
- const AI_ASSISTANT_PERMISSIONS = {
320
- VIEW_ALL_HISTORY: 'ai-assistant.view-all-history'
321
- };
322
- // ==================== AGGREGATED EXPORTS ====================
323
- const PERMISSIONS = {
324
- // Auth
325
- USER: USER_PERMISSIONS,
326
- COMPANY: COMPANY_PERMISSIONS,
327
- BRANCH: BRANCH_PERMISSIONS,
328
- SOCIAL_AUTH_CONFIG: SOCIAL_AUTH_CONFIG_PERMISSIONS,
329
- // IAM
330
- ACTION: ACTION_PERMISSIONS,
331
- ROLE: ROLE_PERMISSIONS,
332
- ROLE_ACTION: ROLE_ACTION_PERMISSIONS,
333
- USER_ROLE: USER_ROLE_PERMISSIONS,
334
- USER_ACTION: USER_ACTION_PERMISSIONS,
335
- COMPANY_ACTION: COMPANY_ACTION_PERMISSIONS,
336
- // Storage
337
- FILE: FILE_PERMISSIONS,
338
- FOLDER: FOLDER_PERMISSIONS,
339
- STORAGE_CONFIG: STORAGE_CONFIG_PERMISSIONS,
340
- // Email
341
- EMAIL_CONFIG: EMAIL_CONFIG_PERMISSIONS,
342
- EMAIL_TEMPLATE: EMAIL_TEMPLATE_PERMISSIONS,
343
- // Form Builder
344
- FORM: FORM_PERMISSIONS,
345
- FORM_RESULT: FORM_RESULT_PERMISSIONS,
346
- // Event Manager
347
- EVENT: EVENT_PERMISSIONS,
348
- // Notification
349
- NOTIFICATION: NOTIFICATION_PERMISSIONS,
350
- // Localization
351
- LANGUAGE: LANGUAGE_PERMISSIONS,
352
- TRANSLATION_KEY: TRANSLATION_KEY_PERMISSIONS,
353
- TRANSLATION: TRANSLATION_PERMISSIONS,
354
- // Task Manager
355
- TASK_BOARD: TASK_BOARD_PERMISSIONS,
356
- TASK_LIST: TASK_LIST_PERMISSIONS,
357
- TASK: TASK_PERMISSIONS,
358
- TASK_LABEL: TASK_LABEL_PERMISSIONS,
359
- TASK_COMMENT: TASK_COMMENT_PERMISSIONS,
360
- // AI Assistant
361
- AI_ASSISTANT: AI_ASSISTANT_PERMISSIONS
362
- };
363
-
364
- __webpack_require__.d(__webpack_exports__, {
365
- }, {
366
- BC: USER_PERMISSIONS,
367
- Bz: AI_ASSISTANT_PERMISSIONS,
368
- Em: STORAGE_CONFIG_PERMISSIONS,
369
- GT: FORM_RESULT_PERMISSIONS,
370
- Jj: PERMISSIONS,
371
- N3: TRANSLATION_KEY_PERMISSIONS,
372
- ON: TASK_LIST_PERMISSIONS,
373
- P0: ROLE_ACTION_PERMISSIONS,
374
- Q5: LANGUAGE_PERMISSIONS,
375
- S6: FILE_PERMISSIONS,
376
- T: TASK_PERMISSIONS,
377
- UB: UPLOAD_CONFIG_PERMISSIONS,
378
- UG: TASK_LABEL_PERMISSIONS,
379
- Ub: EVENT_PERMISSIONS,
380
- V0: EMAIL_CONFIG_PERMISSIONS,
381
- Wc: FORM_PERMISSIONS,
382
- Y3: TASK_BOARD_PERMISSIONS,
383
- Y7: ACTION_PERMISSIONS,
384
- _X: USER_ACTION_PERMISSIONS,
385
- aO: COMPANY_ACTION_PERMISSIONS,
386
- fS: TRANSLATION_PERMISSIONS,
387
- l3: SOCIAL_AUTH_CONFIG_PERMISSIONS,
388
- mV: ROLE_PERMISSIONS,
389
- rH: NOTIFICATION_PERMISSIONS,
390
- t$: COMPANY_PERMISSIONS,
391
- w7: USER_ROLE_PERMISSIONS,
392
- wA: BRANCH_PERMISSIONS,
393
- wM: FOLDER_PERMISSIONS,
394
- z$: EMAIL_TEMPLATE_PERMISSIONS,
395
- zd: TASK_COMMENT_PERMISSIONS
396
- });
397
-
398
-
399
- },
400
- 307(module) {
401
-
402
- module.exports = __rspack_external__flusys_nestjs_core_config_197fa0a9;
403
-
404
-
405
- },
406
- 157(module) {
407
-
408
- module.exports = __rspack_external__nestjs_common_a04939da;
409
-
410
-
411
- },
412
-
413
- };
3
+ export const __webpack_modules__ = {};
414
4
  import { __webpack_require__ } from '../runtime.js';
415
5
  var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
416
- import * as __rspack_chunk_1 from '../67.js';
6
+ import * as __rspack_chunk_1 from '../948.js';
417
7
  __webpack_require__.C(__rspack_chunk_1);
418
- import * as __rspack_chunk_2 from '../667.js';
8
+ import * as __rspack_chunk_2 from '../681.js';
419
9
  __webpack_require__.C(__rspack_chunk_2);
420
- import * as __rspack_chunk_3 from './index.js';
10
+ import * as __rspack_chunk_3 from '../667.js';
421
11
  __webpack_require__.C(__rspack_chunk_3);
12
+ import * as __rspack_chunk_4 from './index.js';
13
+ __webpack_require__.C(__rspack_chunk_4);
422
14
  var __webpack_exports__ = __webpack_exec__(686);var __webpack_exports__CacheModule = __webpack_exports__.vd;
423
15
  var __webpack_exports__EventBusExplorer = __webpack_exports__.K6;
424
16
  var __webpack_exports__EventBusModule = __webpack_exports__.Zv;
@@ -0,0 +1,196 @@
1
+ import * as __rspack_external__nestjs_common_a04939da from "@nestjs/common";
2
+ import * as __rspack_external_class_validator_7b99ef4d from "class-validator";
3
+ export const __rspack_esm_id = 360;
4
+ export const __rspack_esm_ids = [360];
5
+ export const __webpack_modules__ = {
6
+ 389(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
7
+ // ==================== AUTH (Shared across guards/interceptors) ====================
8
+ // These are duplicated in nestjs-auth but needed here to avoid circular dependencies
9
+ const AUTH_MESSAGES = {
10
+ TOKEN_REQUIRED: 'auth.token.required',
11
+ TOKEN_INVALID: 'auth.token.invalid',
12
+ ENTITY_BELOG_ANOTHER_COMPANY: 'entity.belongs.another.company',
13
+ COMPANY_NO_ACCESS: 'auth.company.no.access'
14
+ };
15
+ // ==================== ERROR (HTTP Exceptions) ====================
16
+ const ERROR_MESSAGES = {
17
+ NOT_FOUND: 'error.not.found',
18
+ VALIDATION: 'error.validation',
19
+ UNAUTHORIZED: 'error.unauthorized',
20
+ FORBIDDEN: 'error.forbidden',
21
+ CONFLICT: 'error.conflict',
22
+ DB_FOREIGN_KEY: 'error.db.foreign.key',
23
+ DB_NOT_NULL: 'error.db.not.null',
24
+ DB_INVALID_INPUT: 'error.db.invalid.input',
25
+ DB_VALUE_TOO_LONG: 'error.db.value.too.long',
26
+ DB_CHECK_CONSTRAINT: 'error.db.check.constraint',
27
+ DB_DEADLOCK: 'error.db.deadlock',
28
+ INTERNAL: 'error.internal',
29
+ SERVICE_UNAVAILABLE: 'error.service.unavailable',
30
+ UNKNOWN: 'error.unknown',
31
+ HTTP: 'error.http',
32
+ GENERIC: 'error.generic',
33
+ PERMISSION_SYSTEM_UNAVAILABLE: 'error.permission.system.unavailable',
34
+ INSUFFICIENT_PERMISSIONS: 'error.insufficient.permissions',
35
+ INSUFFICIENT_PERMISSIONS_OR: 'error.insufficient.permissions.or',
36
+ NO_PERMISSIONS_FOUND: 'error.no.permissions.found',
37
+ ENDPOINT_DISABLED: 'error.endpoint.disabled'
38
+ };
39
+ // ==================== SYSTEM (Infrastructure) ====================
40
+ const SYSTEM_MESSAGES = {
41
+ REPOSITORY_NOT_AVAILABLE: 'system.repository.not.available',
42
+ DATASOURCE_NOT_AVAILABLE: 'system.datasource.not.available',
43
+ DATABASE_CONFIG_NOT_AVAILABLE: 'system.database.config.not.available',
44
+ SERVICE_NOT_AVAILABLE: 'system.service.not.available',
45
+ CONFIG_REQUIRED: 'system.config.required',
46
+ INTERNAL_ERROR: 'system.internal.error',
47
+ DUPLICATE_REQUEST: 'system.duplicate.request',
48
+ INVALID_TENANT_ID: 'system.invalid.tenant.id',
49
+ TENANT_NOT_FOUND: 'system.tenant.not.found',
50
+ TENANT_HEADER_REQUIRED: 'system.tenant.header.required',
51
+ MISSING_PARAMETER: 'system.missing.parameter',
52
+ SDK_NOT_INSTALLED: 'system.sdk.not.installed',
53
+ PATH_TRAVERSAL_DETECTED: 'system.path.traversal.detected',
54
+ INVALID_FILE_KEY: 'system.invalid.file.key'
55
+ };
56
+
57
+ __webpack_require__.d(__webpack_exports__, {
58
+ }, {
59
+ UU: ERROR_MESSAGES,
60
+ hg: SYSTEM_MESSAGES,
61
+ mK: AUTH_MESSAGES
62
+ });
63
+
64
+
65
+ },
66
+ 928(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
67
+
68
+ // EXPORTS
69
+ __webpack_require__.d(__webpack_exports__, {
70
+ gG: () => (/* reexport */ AUDIT_BODY_KEYS),
71
+ d0: () => (/* reexport */ DEFAULT_VALIDATION_OPTIONS),
72
+ zT: () => (/* reexport */ DtoBodyValidationPipe)
73
+ });
74
+
75
+ // EXTERNAL MODULE: external "@nestjs/common"
76
+ var common_ = __webpack_require__(157);
77
+ // EXTERNAL MODULE: external "class-validator"
78
+ var external_class_validator_ = __webpack_require__(421);
79
+ // EXTERNAL MODULE: ./projects/nestjs-shared/src/constants/message-keys.ts
80
+ var message_keys = __webpack_require__(389);
81
+ ;// CONCATENATED MODULE: ./projects/nestjs-shared/src/pipes/dto-body-validation.pipe.ts
82
+
83
+
84
+
85
+ const DEFAULT_VALIDATION_OPTIONS = {
86
+ transform: true,
87
+ whitelist: true,
88
+ forbidNonWhitelisted: true,
89
+ transformOptions: {
90
+ enableImplicitConversion: false
91
+ }
92
+ };
93
+ const AUDIT_BODY_KEYS = [
94
+ 'createdById',
95
+ 'updatedById',
96
+ 'deletedById'
97
+ ];
98
+ /**
99
+ * Validates a generic controller body against its concrete DTO class: a generic
100
+ * `@Body() dto: T` reflects as `Object`, so the global ValidationPipe skips it.
101
+ * Audit keys are never taken from the client: `stampedKeys` (written by the endpoint's
102
+ * SetCreatedByOnBody / SetUpdateByOnBody interceptors, which run first) are kept, any other
103
+ * audit key is dropped. A `slug` the DTO does not declare is the Slug interceptor's and is kept.
104
+ */ class DtoBodyValidationPipe {
105
+ resolveDto;
106
+ stampedKeys;
107
+ isArray;
108
+ options;
109
+ pipes = new Map();
110
+ constructor(resolveDto, stampedKeys, isArray = false, options = DEFAULT_VALIDATION_OPTIONS){
111
+ this.resolveDto = resolveDto;
112
+ this.stampedKeys = stampedKeys;
113
+ this.isArray = isArray;
114
+ this.options = options;
115
+ }
116
+ static for(dto, stampedKeys, isArray = false) {
117
+ return new DtoBodyValidationPipe(()=>dto, stampedKeys, isArray);
118
+ }
119
+ async transform(value, metadata) {
120
+ if (!this.isArray) return this.validateItem(value, metadata);
121
+ if (!Array.isArray(value)) throw new common_.BadRequestException({
122
+ message: 'Request body must be an array',
123
+ messageKey: message_keys/* .ERROR_MESSAGES.VALIDATION */.UU.VALIDATION
124
+ });
125
+ return Promise.all(value.map((item)=>this.validateItem(item, metadata)));
126
+ }
127
+ async validateItem(item, metadata) {
128
+ if (item === null || typeof item !== 'object' || Array.isArray(item)) {
129
+ throw new common_.BadRequestException({
130
+ message: 'Request body item must be an object',
131
+ messageKey: message_keys/* .ERROR_MESSAGES.VALIDATION */.UU.VALIDATION
132
+ });
133
+ }
134
+ const dto = this.resolveDto(item);
135
+ const rest = {
136
+ ...item
137
+ };
138
+ const injected = {};
139
+ for (const key of AUDIT_BODY_KEYS){
140
+ if (!(key in rest)) continue;
141
+ if (this.stampedKeys.includes(key)) injected[key] = rest[key];
142
+ delete rest[key];
143
+ }
144
+ if ('slug' in rest && !declaresProperty(dto, 'slug')) {
145
+ injected['slug'] = rest['slug'];
146
+ delete rest['slug'];
147
+ }
148
+ const validated = await this.pipeFor(dto).transform(rest, {
149
+ ...metadata,
150
+ metatype: dto
151
+ });
152
+ return Object.assign(validated, injected);
153
+ }
154
+ pipeFor(dto) {
155
+ let pipe = this.pipes.get(dto);
156
+ if (!pipe) {
157
+ pipe = new common_.ValidationPipe({
158
+ ...this.options,
159
+ expectedType: dto
160
+ });
161
+ this.pipes.set(dto, pipe);
162
+ }
163
+ return pipe;
164
+ }
165
+ }
166
+ function declaresProperty(dto, key) {
167
+ return (0,external_class_validator_.getMetadataStorage)().getTargetValidationMetadatas(dto, '', true, false).some((m)=>m.propertyName === key);
168
+ }
169
+
170
+ ;// CONCATENATED MODULE: ./projects/nestjs-shared/src/pipes/index.ts
171
+
172
+
173
+
174
+ },
175
+ 157(module) {
176
+
177
+ module.exports = __rspack_external__nestjs_common_a04939da;
178
+
179
+
180
+ },
181
+ 421(module) {
182
+
183
+ module.exports = __rspack_external_class_validator_7b99ef4d;
184
+
185
+
186
+ },
187
+
188
+ };
189
+ import { __webpack_require__ } from '../runtime.js';
190
+ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
191
+ import * as __rspack_chunk_1 from './index.js';
192
+ __webpack_require__.C(__rspack_chunk_1);
193
+ var __webpack_exports__ = __webpack_exec__(928);var __webpack_exports__AUDIT_BODY_KEYS = __webpack_exports__.gG;
194
+ var __webpack_exports__DEFAULT_VALIDATION_OPTIONS = __webpack_exports__.d0;
195
+ var __webpack_exports__DtoBodyValidationPipe = __webpack_exports__.zT;
196
+ export { __webpack_exports__AUDIT_BODY_KEYS as AUDIT_BODY_KEYS, __webpack_exports__DEFAULT_VALIDATION_OPTIONS as DEFAULT_VALIDATION_OPTIONS, __webpack_exports__DtoBodyValidationPipe as DtoBodyValidationPipe };