@eventista/ticketing-common 1.0.1029 → 1.0.1032-beta.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 (77) hide show
  1. package/dist/exception/exception.filter.d.ts +3 -0
  2. package/dist/exception/exception.filter.js +59 -0
  3. package/dist/exception/exception.filter.js.map +1 -1
  4. package/dist/exception/unified-exception.filter.d.ts +9 -0
  5. package/dist/exception/unified-exception.filter.js +152 -0
  6. package/dist/exception/unified-exception.filter.js.map +1 -0
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/logger/custom.logger.d.ts +5 -1
  11. package/dist/logger/custom.logger.js +27 -0
  12. package/dist/logger/custom.logger.js.map +1 -1
  13. package/dist/logger/examples/logger-sentry.example.d.ts +32 -0
  14. package/dist/logger/examples/logger-sentry.example.js +211 -0
  15. package/dist/logger/examples/logger-sentry.example.js.map +1 -0
  16. package/dist/schemas/order/order.interfaces.d.ts +1 -0
  17. package/dist/schemas/order/order.schema.d.ts +1 -0
  18. package/dist/schemas/order/order.schema.js +4 -0
  19. package/dist/schemas/order/order.schema.js.map +1 -1
  20. package/dist/sentry/decorators/index.d.ts +2 -0
  21. package/dist/sentry/decorators/index.js +19 -0
  22. package/dist/sentry/decorators/index.js.map +1 -0
  23. package/dist/sentry/decorators/sentry-capture.decorator.d.ts +9 -0
  24. package/dist/sentry/decorators/sentry-capture.decorator.js +13 -0
  25. package/dist/sentry/decorators/sentry-capture.decorator.js.map +1 -0
  26. package/dist/sentry/decorators/sentry-trace.decorator.d.ts +9 -0
  27. package/dist/sentry/decorators/sentry-trace.decorator.js +8 -0
  28. package/dist/sentry/decorators/sentry-trace.decorator.js.map +1 -0
  29. package/dist/sentry/examples/optimized-usage.example.d.ts +33 -0
  30. package/dist/sentry/examples/optimized-usage.example.js +300 -0
  31. package/dist/sentry/examples/optimized-usage.example.js.map +1 -0
  32. package/dist/sentry/examples/sentry-usage.example.d.ts +39 -0
  33. package/dist/sentry/examples/sentry-usage.example.js +262 -0
  34. package/dist/sentry/examples/sentry-usage.example.js.map +1 -0
  35. package/dist/sentry/index.d.ts +10 -0
  36. package/dist/sentry/index.js +27 -0
  37. package/dist/sentry/index.js.map +1 -0
  38. package/dist/sentry/interceptors/index.d.ts +2 -0
  39. package/dist/sentry/interceptors/index.js +19 -0
  40. package/dist/sentry/interceptors/index.js.map +1 -0
  41. package/dist/sentry/interceptors/sentry-capture.interceptor.d.ts +8 -0
  42. package/dist/sentry/interceptors/sentry-capture.interceptor.js +80 -0
  43. package/dist/sentry/interceptors/sentry-capture.interceptor.js.map +1 -0
  44. package/dist/sentry/interceptors/sentry-trace.interceptor.d.ts +8 -0
  45. package/dist/sentry/interceptors/sentry-trace.interceptor.js +56 -0
  46. package/dist/sentry/interceptors/sentry-trace.interceptor.js.map +1 -0
  47. package/dist/sentry/sentry-logger.helper.d.ts +22 -0
  48. package/dist/sentry/sentry-logger.helper.js +153 -0
  49. package/dist/sentry/sentry-logger.helper.js.map +1 -0
  50. package/dist/sentry/sentry-safe.module.d.ts +11 -0
  51. package/dist/sentry/sentry-safe.module.js +82 -0
  52. package/dist/sentry/sentry-safe.module.js.map +1 -0
  53. package/dist/sentry/sentry.advanced-config.d.ts +35 -0
  54. package/dist/sentry/sentry.advanced-config.js +99 -0
  55. package/dist/sentry/sentry.advanced-config.js.map +1 -0
  56. package/dist/sentry/sentry.config.d.ts +20 -0
  57. package/dist/sentry/sentry.config.js +20 -0
  58. package/dist/sentry/sentry.config.js.map +1 -0
  59. package/dist/sentry/sentry.filter.d.ts +12 -0
  60. package/dist/sentry/sentry.filter.js +139 -0
  61. package/dist/sentry/sentry.filter.js.map +1 -0
  62. package/dist/sentry/sentry.interceptor.d.ts +9 -0
  63. package/dist/sentry/sentry.interceptor.js +80 -0
  64. package/dist/sentry/sentry.interceptor.js.map +1 -0
  65. package/dist/sentry/sentry.module.d.ts +2 -0
  66. package/dist/sentry/sentry.module.js +45 -0
  67. package/dist/sentry/sentry.module.js.map +1 -0
  68. package/dist/sentry/sentry.service.d.ts +56 -0
  69. package/dist/sentry/sentry.service.js +255 -0
  70. package/dist/sentry/sentry.service.js.map +1 -0
  71. package/dist/sentry/types/index.d.ts +30 -0
  72. package/dist/sentry/types/index.js +3 -0
  73. package/dist/sentry/types/index.js.map +1 -0
  74. package/dist/shared.module.js +3 -0
  75. package/dist/shared.module.js.map +1 -1
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +10 -2
@@ -0,0 +1,262 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PaymentService = exports.BusinessLogicError = exports.ExampleController = exports.ExampleService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const index_1 = require("../index");
18
+ let ExampleService = class ExampleService {
19
+ constructor(sentryService) {
20
+ this.sentryService = sentryService;
21
+ }
22
+ async createUser(userData) {
23
+ this.sentryService.setUser({
24
+ id: userData.id,
25
+ email: userData.email,
26
+ username: userData.username,
27
+ });
28
+ this.sentryService.addBreadcrumb({
29
+ message: 'User creation started',
30
+ category: 'user',
31
+ level: 'info',
32
+ data: { userId: userData.id },
33
+ });
34
+ try {
35
+ const user = await this.saveUserToDatabase(userData);
36
+ this.sentryService.setTag('operation.status', 'success');
37
+ this.sentryService.setTag('user.type', userData.type || 'regular');
38
+ return user;
39
+ }
40
+ catch (error) {
41
+ this.sentryService.setTag('operation.status', 'failed');
42
+ this.sentryService.setContext('error_context', {
43
+ userData: this.sanitizeUserData(userData),
44
+ timestamp: new Date().toISOString(),
45
+ });
46
+ throw error;
47
+ }
48
+ }
49
+ async validateUser(userData) {
50
+ if (!userData.email) {
51
+ throw new Error('Email is required');
52
+ }
53
+ if (!userData.password || userData.password.length < 8) {
54
+ throw new Error('Password must be at least 8 characters');
55
+ }
56
+ return true;
57
+ }
58
+ async processUserOrder(userId, orderData) {
59
+ return this.sentryService.startSpan({ name: 'process-user-order', op: 'business.order' }, async () => {
60
+ try {
61
+ this.sentryService.setContext('order', {
62
+ userId,
63
+ orderValue: orderData.total,
64
+ itemCount: orderData.items?.length,
65
+ });
66
+ this.sentryService.addBreadcrumb({
67
+ message: 'Order processing started',
68
+ category: 'order',
69
+ level: 'info',
70
+ data: { orderId: orderData.id, userId },
71
+ });
72
+ await this.validateOrder(orderData);
73
+ await this.processPayment(orderData.payment);
74
+ await this.updateInventory(orderData.items);
75
+ const order = await this.saveOrder(orderData);
76
+ this.sentryService.setTag('order.status', 'completed');
77
+ this.sentryService.captureMessage(`Order ${orderData.id} processed successfully`, 'info', 'OrderService');
78
+ return order;
79
+ }
80
+ catch (error) {
81
+ this.sentryService.withScope((scope) => {
82
+ scope.setTag('order.status', 'failed');
83
+ scope.setLevel('error');
84
+ scope.setContext('order_failure', {
85
+ orderId: orderData.id,
86
+ userId,
87
+ step: this.getCurrentProcessingStep(),
88
+ errorType: error.constructor.name,
89
+ });
90
+ this.sentryService.captureException(error, 'OrderService.processUserOrder');
91
+ });
92
+ throw error;
93
+ }
94
+ });
95
+ }
96
+ async saveUserToDatabase(userData) {
97
+ if (Math.random() < 0.1) {
98
+ throw new Error('Database connection failed');
99
+ }
100
+ return { id: Date.now(), ...userData };
101
+ }
102
+ async validateOrder(orderData) {
103
+ if (!orderData.items || orderData.items.length === 0) {
104
+ throw new Error('Order must contain at least one item');
105
+ }
106
+ }
107
+ async processPayment(paymentData) {
108
+ if (paymentData.amount > 10000) {
109
+ throw new Error('Payment amount exceeds limit');
110
+ }
111
+ }
112
+ async updateInventory(items) {
113
+ for (const item of items) {
114
+ if (item.quantity > 100) {
115
+ throw new Error(`Insufficient inventory for item ${item.id}`);
116
+ }
117
+ }
118
+ }
119
+ async saveOrder(orderData) {
120
+ return { id: Date.now(), ...orderData, status: 'completed' };
121
+ }
122
+ sanitizeUserData(userData) {
123
+ const { password, ...sanitized } = userData;
124
+ return sanitized;
125
+ }
126
+ getCurrentProcessingStep() {
127
+ return 'payment_processing';
128
+ }
129
+ };
130
+ exports.ExampleService = ExampleService;
131
+ __decorate([
132
+ (0, index_1.SentryTrace)({
133
+ name: 'user-creation',
134
+ op: 'business.logic',
135
+ description: 'Create new user account',
136
+ tags: { service: 'user' },
137
+ }),
138
+ __metadata("design:type", Function),
139
+ __metadata("design:paramtypes", [Object]),
140
+ __metadata("design:returntype", Promise)
141
+ ], ExampleService.prototype, "createUser", null);
142
+ __decorate([
143
+ (0, index_1.SentryCapture)({
144
+ captureErrors: true,
145
+ level: 'warning',
146
+ tags: { service: 'user', operation: 'validation' },
147
+ }),
148
+ __metadata("design:type", Function),
149
+ __metadata("design:paramtypes", [Object]),
150
+ __metadata("design:returntype", Promise)
151
+ ], ExampleService.prototype, "validateUser", null);
152
+ exports.ExampleService = ExampleService = __decorate([
153
+ (0, common_1.Injectable)(),
154
+ __metadata("design:paramtypes", [index_1.SentryService])
155
+ ], ExampleService);
156
+ let ExampleController = class ExampleController {
157
+ constructor(exampleService, sentryService) {
158
+ this.exampleService = exampleService;
159
+ this.sentryService = sentryService;
160
+ }
161
+ async createUser(userData) {
162
+ this.sentryService.setContext('request', {
163
+ endpoint: 'POST /example/users',
164
+ userAgent: 'example-client',
165
+ });
166
+ try {
167
+ return await this.exampleService.createUser(userData);
168
+ }
169
+ catch (error) {
170
+ this.sentryService.setTag('controller', 'ExampleController');
171
+ this.sentryService.setTag('action', 'createUser');
172
+ throw error;
173
+ }
174
+ }
175
+ async getUserOrders(orderData) {
176
+ try {
177
+ return await this.exampleService.processUserOrder('user-123', orderData);
178
+ }
179
+ catch (error) {
180
+ if (error.message.includes('validation')) {
181
+ this.sentryService.captureMessage(`Validation error: ${error.message}`, 'warning', 'ExampleController');
182
+ }
183
+ else {
184
+ this.sentryService.captureException(error, 'ExampleController.getUserOrders');
185
+ }
186
+ throw error;
187
+ }
188
+ }
189
+ async healthCheck() {
190
+ return { status: 'ok', timestamp: new Date().toISOString() };
191
+ }
192
+ };
193
+ exports.ExampleController = ExampleController;
194
+ __decorate([
195
+ (0, common_1.Post)('users'),
196
+ __param(0, (0, common_1.Body)()),
197
+ __metadata("design:type", Function),
198
+ __metadata("design:paramtypes", [Object]),
199
+ __metadata("design:returntype", Promise)
200
+ ], ExampleController.prototype, "createUser", null);
201
+ __decorate([
202
+ (0, common_1.Get)('users/:id/orders'),
203
+ __param(0, (0, common_1.Body)()),
204
+ __metadata("design:type", Function),
205
+ __metadata("design:paramtypes", [Object]),
206
+ __metadata("design:returntype", Promise)
207
+ ], ExampleController.prototype, "getUserOrders", null);
208
+ __decorate([
209
+ (0, common_1.Get)('health'),
210
+ __metadata("design:type", Function),
211
+ __metadata("design:paramtypes", []),
212
+ __metadata("design:returntype", Promise)
213
+ ], ExampleController.prototype, "healthCheck", null);
214
+ exports.ExampleController = ExampleController = __decorate([
215
+ (0, common_1.Controller)('example'),
216
+ __metadata("design:paramtypes", [ExampleService,
217
+ index_1.SentryService])
218
+ ], ExampleController);
219
+ class BusinessLogicError extends Error {
220
+ constructor(message, code, context) {
221
+ super(message);
222
+ this.code = code;
223
+ this.context = context;
224
+ this.name = 'BusinessLogicError';
225
+ }
226
+ captureToSentry(sentryService) {
227
+ sentryService.withScope((scope) => {
228
+ scope.setTag('error.type', 'business_logic');
229
+ scope.setTag('error.code', this.code);
230
+ scope.setLevel('warning');
231
+ if (this.context) {
232
+ scope.setContext('business_error', this.context);
233
+ }
234
+ sentryService.captureException(this, 'BusinessLogicError');
235
+ });
236
+ }
237
+ }
238
+ exports.BusinessLogicError = BusinessLogicError;
239
+ class PaymentService {
240
+ constructor(sentryService) {
241
+ this.sentryService = sentryService;
242
+ }
243
+ async processPayment(paymentData) {
244
+ try {
245
+ if (paymentData.amount <= 0) {
246
+ const error = new BusinessLogicError('Invalid payment amount', 'INVALID_AMOUNT', { amount: paymentData.amount, currency: paymentData.currency });
247
+ error.captureToSentry(this.sentryService);
248
+ throw error;
249
+ }
250
+ return { success: true };
251
+ }
252
+ catch (error) {
253
+ if (error instanceof BusinessLogicError) {
254
+ throw error;
255
+ }
256
+ this.sentryService.captureException(error, 'PaymentService.processPayment');
257
+ throw error;
258
+ }
259
+ }
260
+ }
261
+ exports.PaymentService = PaymentService;
262
+ //# sourceMappingURL=sentry-usage.example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry-usage.example.js","sourceRoot":"","sources":["../../../src/sentry/examples/sentry-usage.example.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyE;AACzE,oCAAqE;AAI9D,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IASvD,AAAN,KAAK,CAAC,UAAU,CAAC,QAAa;QAE5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC;QAGH,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YAC/B,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAGrD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAEnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAGf,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,EAAE;gBAC7C,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gBACzC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAQK,AAAN,KAAK,CAAC,YAAY,CAAC,QAAa;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,SAAc;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CACjC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EACpD,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE;oBACrC,MAAM;oBACN,UAAU,EAAE,SAAS,CAAC,KAAK;oBAC3B,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM;iBACnC,CAAC,CAAC;gBAGH,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;oBAC/B,OAAO,EAAE,0BAA0B;oBACnC,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE;iBACxC,CAAC,CAAC;gBAGH,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAG9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,cAAc,CAC/B,SAAS,SAAS,CAAC,EAAE,yBAAyB,EAC9C,MAAM,EACN,cAAc,CACf,CAAC;gBAEF,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;oBACrC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;oBACvC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACxB,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE;wBAChC,OAAO,EAAE,SAAS,CAAC,EAAE;wBACrB,MAAM;wBACN,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE;wBACrC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;qBAClC,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBAEH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAGO,KAAK,CAAC,kBAAkB,CAAC,QAAa;QAE5C,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAAc;QACxC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAAgB;QAE3C,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAY;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,SAAc;QACpC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/D,CAAC;IAEO,gBAAgB,CAAC,QAAa;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,wBAAwB;QAE9B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;CACF,CAAA;AAvKY,wCAAc;AAUnB;IANL,IAAA,mBAAW,EAAC;QACX,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;KAC1B,CAAC;;;;gDAqCD;AAQK;IALL,IAAA,qBAAa,EAAC;QACb,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE;KACnD,CAAC;;;;kDAWD;yBAhEU,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAEiC,qBAAa;GAD9C,cAAc,CAuK1B;AAIM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YACmB,cAA8B,EAC9B,aAA4B;QAD5B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAGE,AAAN,KAAK,CAAC,UAAU,CAAS,QAAa;QAEpC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE;YACvC,QAAQ,EAAE,qBAAqB;YAC/B,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAIlD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CAAS,SAAc;QAExC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAEzC,IAAI,CAAC,aAAa,CAAC,cAAc,CAC/B,qBAAqB,KAAK,CAAC,OAAO,EAAE,EACpC,SAAS,EACT,mBAAmB,CACpB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW;QAEf,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC/D,CAAC;CACF,CAAA;AAtDY,8CAAiB;AAOtB;IADL,IAAA,aAAI,EAAC,OAAO,CAAC;IACI,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAkBvB;AAGK;IADL,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;;;;sDAmB1B;AAGK;IADL,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;oDAIb;4BArDU,iBAAiB;IAD7B,IAAA,mBAAU,EAAC,SAAS,CAAC;qCAGe,cAAc;QACf,qBAAa;GAHpC,iBAAiB,CAsD7B;AAGD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YACE,OAAe,EACC,IAAY,EACZ,OAA6B;QAE7C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAsB;QAG7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,aAA4B;QAC1C,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAChC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAED,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAvBD,gDAuBC;AAGD,MAAa,cAAc;IACzB,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D,KAAK,CAAC,cAAc,CAAC,WAAgB;QACnC,IAAI,CAAC;YAEH,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAClC,wBAAwB,EACxB,gBAAgB,EAChB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAC/D,CAAC;gBAEF,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBAExC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;YAC5E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA7BD,wCA6BC"}
@@ -0,0 +1,10 @@
1
+ export * from './sentry.module';
2
+ export * from './sentry-safe.module';
3
+ export * from './sentry.service';
4
+ export * from './sentry.config';
5
+ export * from './sentry.interceptor';
6
+ export * from './sentry.filter';
7
+ export * from './sentry-logger.helper';
8
+ export * from './decorators';
9
+ export * from './interceptors';
10
+ export * from './types';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./sentry.module"), exports);
18
+ __exportStar(require("./sentry-safe.module"), exports);
19
+ __exportStar(require("./sentry.service"), exports);
20
+ __exportStar(require("./sentry.config"), exports);
21
+ __exportStar(require("./sentry.interceptor"), exports);
22
+ __exportStar(require("./sentry.filter"), exports);
23
+ __exportStar(require("./sentry-logger.helper"), exports);
24
+ __exportStar(require("./decorators"), exports);
25
+ __exportStar(require("./interceptors"), exports);
26
+ __exportStar(require("./types"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sentry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,uDAAqC;AACrC,mDAAiC;AACjC,kDAAgC;AAChC,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,+CAA6B;AAC7B,iDAA+B;AAC/B,0CAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from './sentry-trace.interceptor';
2
+ export * from './sentry-capture.interceptor';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./sentry-trace.interceptor"), exports);
18
+ __exportStar(require("./sentry-capture.interceptor"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sentry/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,+DAA6C"}
@@ -0,0 +1,8 @@
1
+ import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { Observable } from 'rxjs';
4
+ export declare class SentryCaptureInterceptor implements NestInterceptor {
5
+ private readonly reflector;
6
+ constructor(reflector: Reflector);
7
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
8
+ }
@@ -0,0 +1,80 @@
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.SentryCaptureInterceptor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const rxjs_1 = require("rxjs");
16
+ const operators_1 = require("rxjs/operators");
17
+ const Sentry = require("@sentry/nestjs");
18
+ const sentry_capture_decorator_1 = require("../decorators/sentry-capture.decorator");
19
+ let SentryCaptureInterceptor = class SentryCaptureInterceptor {
20
+ constructor(reflector) {
21
+ this.reflector = reflector;
22
+ }
23
+ intercept(context, next) {
24
+ const captureOptions = this.reflector.get(sentry_capture_decorator_1.SENTRY_CAPTURE_KEY, context.getHandler());
25
+ if (!captureOptions) {
26
+ return next.handle();
27
+ }
28
+ const className = context.getClass().name;
29
+ const methodName = context.getHandler().name;
30
+ return next.handle().pipe((0, operators_1.tap)((result) => {
31
+ if (captureOptions.captureReturn && result) {
32
+ Sentry.withScope((scope) => {
33
+ scope.setLevel(captureOptions.level || 'info');
34
+ if (captureOptions.tags) {
35
+ Object.entries(captureOptions.tags).forEach(([key, value]) => {
36
+ scope.setTag(key, value);
37
+ });
38
+ }
39
+ if (captureOptions.extra) {
40
+ scope.setContext('method.extra', captureOptions.extra);
41
+ }
42
+ scope.setTag('method.class', className);
43
+ scope.setTag('method.name', methodName);
44
+ scope.setTag('method.type', 'return');
45
+ Sentry.captureMessage(`Method ${className}.${methodName} completed successfully`, captureOptions.level || 'info');
46
+ });
47
+ }
48
+ }), (0, operators_1.catchError)((error) => {
49
+ if (captureOptions.captureErrors) {
50
+ Sentry.withScope((scope) => {
51
+ scope.setLevel('error');
52
+ if (captureOptions.tags) {
53
+ Object.entries(captureOptions.tags).forEach(([key, value]) => {
54
+ scope.setTag(key, value);
55
+ });
56
+ }
57
+ if (captureOptions.extra) {
58
+ scope.setContext('method.extra', captureOptions.extra);
59
+ }
60
+ scope.setTag('method.class', className);
61
+ scope.setTag('method.name', methodName);
62
+ scope.setTag('method.type', 'error');
63
+ scope.setContext('error.details', {
64
+ message: error.message,
65
+ name: error.name,
66
+ stack: error.stack,
67
+ });
68
+ Sentry.captureException(error);
69
+ });
70
+ }
71
+ return (0, rxjs_1.throwError)(() => error);
72
+ }));
73
+ }
74
+ };
75
+ exports.SentryCaptureInterceptor = SentryCaptureInterceptor;
76
+ exports.SentryCaptureInterceptor = SentryCaptureInterceptor = __decorate([
77
+ (0, common_1.Injectable)(),
78
+ __metadata("design:paramtypes", [core_1.Reflector])
79
+ ], SentryCaptureInterceptor);
80
+ //# sourceMappingURL=sentry-capture.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry-capture.interceptor.js","sourceRoot":"","sources":["../../../src/sentry/interceptors/sentry-capture.interceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { Observable } from 'rxjs';
4
+ export declare class SentryTraceInterceptor implements NestInterceptor {
5
+ private readonly reflector;
6
+ constructor(reflector: Reflector);
7
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
8
+ }
@@ -0,0 +1,56 @@
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.SentryTraceInterceptor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const operators_1 = require("rxjs/operators");
16
+ const Sentry = require("@sentry/nestjs");
17
+ const sentry_trace_decorator_1 = require("../decorators/sentry-trace.decorator");
18
+ let SentryTraceInterceptor = class SentryTraceInterceptor {
19
+ constructor(reflector) {
20
+ this.reflector = reflector;
21
+ }
22
+ intercept(context, next) {
23
+ const traceOptions = this.reflector.get(sentry_trace_decorator_1.SENTRY_TRACE_KEY, context.getHandler());
24
+ if (!traceOptions) {
25
+ return next.handle();
26
+ }
27
+ const className = context.getClass().name;
28
+ const methodName = context.getHandler().name;
29
+ const spanName = traceOptions.name || `${className}.${methodName}`;
30
+ return Sentry.startSpan({
31
+ name: spanName,
32
+ op: traceOptions.op || 'function',
33
+ }, () => {
34
+ if (traceOptions.tags) {
35
+ Object.entries(traceOptions.tags).forEach(([key, value]) => {
36
+ Sentry.setTag(key, value);
37
+ });
38
+ }
39
+ Sentry.setTag('method.class', className);
40
+ Sentry.setTag('method.name', methodName);
41
+ return next.handle().pipe((0, operators_1.tap)(() => {
42
+ Sentry.setTag('method.status', 'success');
43
+ }), (0, operators_1.catchError)((error) => {
44
+ Sentry.setTag('method.status', 'error');
45
+ Sentry.captureException(error);
46
+ throw error;
47
+ }));
48
+ });
49
+ }
50
+ };
51
+ exports.SentryTraceInterceptor = SentryTraceInterceptor;
52
+ exports.SentryTraceInterceptor = SentryTraceInterceptor = __decorate([
53
+ (0, common_1.Injectable)(),
54
+ __metadata("design:paramtypes", [core_1.Reflector])
55
+ ], SentryTraceInterceptor);
56
+ //# sourceMappingURL=sentry-trace.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry-trace.interceptor.js","sourceRoot":"","sources":["../../../src/sentry/interceptors/sentry-trace.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAC5F,uCAAyC;AAEzC,8CAAiD;AACjD,yCAAyC;AACzC,iFAA4F;AAGrF,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACrC,yCAAgB,EAChB,OAAO,CAAC,UAAU,EAAE,CACrB,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,IAAI,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;QAEnE,OAAO,MAAM,CAAC,SAAS,CACrB;YACE,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,UAAU;SAGlC,EACD,GAAG,EAAE;YAEH,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACzD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACL,CAAC;YAGD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAEzC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,eAAG,EAAC,GAAG,EAAE;gBAEP,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC,CAAC,EACF,IAAA,sBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;gBAEnB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACxC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AAnDY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAE6B,gBAAS;GADtC,sBAAsB,CAmDlC"}
@@ -0,0 +1,22 @@
1
+ export interface SentryLoggerOptions {
2
+ enabled: boolean;
3
+ rateLimitPerMinute?: number;
4
+ excludePatterns?: RegExp[];
5
+ sensitiveFields?: string[];
6
+ }
7
+ export declare class SentryLoggerHelper {
8
+ private static messageCount;
9
+ private static readonly DEFAULT_RATE_LIMIT;
10
+ private static readonly RATE_LIMIT_WINDOW;
11
+ static captureMessage(message: string, level: 'error' | 'warning' | 'info', context?: string, metadata?: any, options?: SentryLoggerOptions): void;
12
+ static captureException(exception: Error, message: string, context?: string, options?: SentryLoggerOptions): void;
13
+ private static checkRateLimit;
14
+ private static shouldExclude;
15
+ private static sanitizeMetadata;
16
+ private static getMessageKey;
17
+ static clearRateLimitCache(): void;
18
+ static getRateLimitStats(): Record<string, {
19
+ count: number;
20
+ lastReset: number;
21
+ }>;
22
+ }