@flusys/nestjs-shared 3.0.0 → 4.0.0-lts

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 (103) hide show
  1. package/README.md +160 -80
  2. package/cjs/classes/api-controller.class.js +26 -8
  3. package/cjs/classes/api-service.class.js +100 -17
  4. package/cjs/classes/winston-logger-adapter.class.js +15 -20
  5. package/cjs/classes/winston.logger.class.js +103 -70
  6. package/cjs/constants/index.js +1 -0
  7. package/cjs/constants/message-keys.js +80 -0
  8. package/cjs/constants/permissions.js +65 -11
  9. package/cjs/decorators/index.js +1 -0
  10. package/cjs/decorators/log-action.decorator.js +149 -0
  11. package/cjs/dtos/response-payload.dto.js +72 -0
  12. package/cjs/enums/index.js +20 -0
  13. package/cjs/enums/notification-type.enum.js +17 -0
  14. package/cjs/enums/participant-status.enum.js +17 -0
  15. package/cjs/enums/recurrence-type.enum.js +18 -0
  16. package/cjs/exceptions/base-app.exception.js +145 -0
  17. package/cjs/exceptions/index.js +1 -0
  18. package/cjs/exceptions/permission.exception.js +12 -8
  19. package/cjs/filters/global-exception.filter.js +167 -0
  20. package/cjs/filters/index.js +18 -0
  21. package/cjs/guards/jwt-auth.guard.js +4 -1
  22. package/cjs/guards/permission.guard.js +6 -13
  23. package/cjs/index.js +2 -0
  24. package/cjs/interceptors/idempotency.interceptor.js +1 -1
  25. package/cjs/interceptors/index.js +0 -1
  26. package/cjs/interfaces/event-manager-adapter.interface.js +11 -0
  27. package/cjs/interfaces/index.js +2 -0
  28. package/cjs/interfaces/logger.interface.js +1 -4
  29. package/cjs/interfaces/notification-adapter.interface.js +11 -0
  30. package/cjs/middlewares/logger.middleware.js +83 -26
  31. package/cjs/modules/datasource/multi-tenant-datasource.service.js +33 -11
  32. package/cjs/modules/utils/utils.service.js +4 -20
  33. package/cjs/utils/index.js +0 -1
  34. package/cjs/utils/query-helpers.util.js +8 -1
  35. package/classes/api-controller.class.d.ts +1 -0
  36. package/classes/api-service.class.d.ts +5 -10
  37. package/classes/winston-logger-adapter.class.d.ts +12 -11
  38. package/classes/winston.logger.class.d.ts +1 -0
  39. package/constants/index.d.ts +1 -0
  40. package/constants/message-keys.d.ts +81 -0
  41. package/constants/permissions.d.ts +72 -0
  42. package/decorators/index.d.ts +1 -0
  43. package/decorators/log-action.decorator.d.ts +8 -0
  44. package/dtos/response-payload.dto.d.ts +8 -0
  45. package/enums/index.d.ts +3 -0
  46. package/enums/notification-type.enum.d.ts +6 -0
  47. package/enums/participant-status.enum.d.ts +6 -0
  48. package/enums/recurrence-type.enum.d.ts +7 -0
  49. package/exceptions/base-app.exception.d.ts +41 -0
  50. package/exceptions/index.d.ts +1 -0
  51. package/exceptions/permission.exception.d.ts +1 -1
  52. package/fesm/classes/api-controller.class.js +26 -8
  53. package/fesm/classes/api-service.class.js +101 -18
  54. package/fesm/classes/winston-logger-adapter.class.js +18 -44
  55. package/fesm/classes/winston.logger.class.js +100 -68
  56. package/fesm/constants/index.js +2 -0
  57. package/fesm/constants/message-keys.js +59 -0
  58. package/fesm/constants/permissions.js +51 -14
  59. package/fesm/decorators/index.js +1 -0
  60. package/fesm/decorators/log-action.decorator.js +139 -0
  61. package/fesm/dtos/response-payload.dto.js +72 -0
  62. package/fesm/enums/index.js +3 -0
  63. package/fesm/enums/notification-type.enum.js +7 -0
  64. package/fesm/enums/participant-status.enum.js +7 -0
  65. package/fesm/enums/recurrence-type.enum.js +8 -0
  66. package/fesm/exceptions/base-app.exception.js +109 -0
  67. package/fesm/exceptions/index.js +1 -0
  68. package/fesm/exceptions/permission.exception.js +15 -17
  69. package/fesm/filters/global-exception.filter.js +157 -0
  70. package/fesm/filters/index.js +1 -0
  71. package/fesm/guards/jwt-auth.guard.js +5 -2
  72. package/fesm/guards/permission.guard.js +8 -15
  73. package/fesm/index.js +2 -0
  74. package/fesm/interceptors/idempotency.interceptor.js +2 -2
  75. package/fesm/interceptors/index.js +0 -1
  76. package/fesm/interfaces/event-manager-adapter.interface.js +1 -0
  77. package/fesm/interfaces/index.js +2 -0
  78. package/fesm/interfaces/logger.interface.js +1 -4
  79. package/fesm/interfaces/notification-adapter.interface.js +1 -0
  80. package/fesm/middlewares/logger.middleware.js +83 -26
  81. package/fesm/modules/datasource/multi-tenant-datasource.service.js +34 -12
  82. package/fesm/modules/utils/utils.service.js +5 -21
  83. package/fesm/utils/index.js +0 -1
  84. package/fesm/utils/query-helpers.util.js +8 -1
  85. package/filters/global-exception.filter.d.ts +10 -0
  86. package/filters/index.d.ts +1 -0
  87. package/guards/permission.guard.d.ts +1 -3
  88. package/index.d.ts +2 -0
  89. package/interceptors/index.d.ts +0 -1
  90. package/interfaces/event-manager-adapter.interface.d.ts +43 -0
  91. package/interfaces/index.d.ts +2 -0
  92. package/interfaces/logger.interface.d.ts +5 -5
  93. package/interfaces/notification-adapter.interface.d.ts +22 -0
  94. package/modules/datasource/multi-tenant-datasource.service.d.ts +1 -2
  95. package/modules/utils/utils.service.d.ts +0 -1
  96. package/package.json +10 -3
  97. package/utils/index.d.ts +0 -1
  98. package/cjs/interceptors/query-performance.interceptor.js +0 -66
  99. package/cjs/utils/error-handler.util.js +0 -90
  100. package/fesm/interceptors/query-performance.interceptor.js +0 -56
  101. package/fesm/utils/error-handler.util.js +0 -82
  102. package/interceptors/query-performance.interceptor.d.ts +0 -8
  103. package/utils/error-handler.util.d.ts +0 -19
@@ -1,82 +0,0 @@
1
- /** Sensitive keys that should be redacted from logs */ const SENSITIVE_KEYS = [
2
- 'password',
3
- 'secret',
4
- 'token',
5
- 'apiKey',
6
- 'credential',
7
- 'authorization'
8
- ];
9
- /**
10
- * Error handling utility for consistent error logging and handling.
11
- */ export class ErrorHandler {
12
- /**
13
- * Safely extract error message from unknown error.
14
- */ static getErrorMessage(error) {
15
- if (error instanceof Error) {
16
- return error.message;
17
- }
18
- if (typeof error === 'string') {
19
- return error;
20
- }
21
- return 'Unknown error occurred';
22
- }
23
- /**
24
- * Sanitize context data to redact sensitive fields from logs.
25
- */ static sanitizeContextForLogging(context) {
26
- const sanitized = {};
27
- for (const [key, value] of Object.entries(context)){
28
- const isSensitive = SENSITIVE_KEYS.some((sk)=>key.toLowerCase().includes(sk.toLowerCase()));
29
- if (isSensitive) {
30
- sanitized[key] = '[REDACTED]';
31
- } else if (Array.isArray(value)) {
32
- sanitized[key] = value.map((item)=>typeof item === 'object' && item !== null ? this.sanitizeContextForLogging(item) : item);
33
- } else if (typeof value === 'object' && value !== null) {
34
- sanitized[key] = this.sanitizeContextForLogging(value);
35
- } else {
36
- sanitized[key] = value;
37
- }
38
- }
39
- return sanitized;
40
- }
41
- /**
42
- * Create error context object for internal logging.
43
- */ static createErrorContext(error, context) {
44
- const errorContext = {
45
- error: {
46
- message: this.getErrorMessage(error)
47
- }
48
- };
49
- if (error instanceof Error) {
50
- errorContext.error.stack = error.stack;
51
- errorContext.error.name = error.name;
52
- }
53
- if (context && Object.keys(context).length > 0) {
54
- errorContext.context = this.sanitizeContextForLogging(context);
55
- }
56
- return errorContext;
57
- }
58
- /**
59
- * Log error with consistent format.
60
- */ static logError(logger, error, operation, context) {
61
- const errorContext = this.createErrorContext(error, {
62
- operation,
63
- ...context
64
- });
65
- const errorMessage = `Failed to ${operation}: ${errorContext.error.message}`;
66
- logger.error(errorMessage, errorContext.error.stack, errorContext);
67
- }
68
- /**
69
- * Re-throw error with proper type checking.
70
- */ static rethrowError(error) {
71
- if (error instanceof Error) {
72
- throw error;
73
- }
74
- throw new Error(`Unexpected error: ${String(error)}`);
75
- }
76
- /**
77
- * Log error and re-throw (common pattern).
78
- */ static logAndRethrow(logger, error, operation, context) {
79
- this.logError(logger, error, operation, context);
80
- this.rethrowError(error);
81
- }
82
- }
@@ -1,8 +0,0 @@
1
- import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
- import { Observable } from 'rxjs';
3
- export declare class QueryPerformanceInterceptor implements NestInterceptor {
4
- private readonly logger;
5
- private readonly threshold;
6
- constructor(threshold?: number);
7
- intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
8
- }
@@ -1,19 +0,0 @@
1
- import { Logger } from '@nestjs/common';
2
- export interface IErrorContext {
3
- operation?: string;
4
- entity?: string;
5
- userId?: string;
6
- id?: string;
7
- companyId?: string;
8
- branchId?: string;
9
- sectionId?: string;
10
- data?: Record<string, unknown>;
11
- }
12
- export declare class ErrorHandler {
13
- static getErrorMessage(error: unknown): string;
14
- private static sanitizeContextForLogging;
15
- private static createErrorContext;
16
- static logError(logger: Logger, error: unknown, operation: string, context?: Omit<IErrorContext, 'operation'>): void;
17
- static rethrowError(error: unknown): never;
18
- static logAndRethrow(logger: Logger, error: unknown, operation: string, context?: Omit<IErrorContext, 'operation'>): never;
19
- }