@takentrade/takentrade-libs 4.1.1 → 4.1.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.
- package/README.md +15 -55
- package/dist/auth/guards/index.d.ts +1 -0
- package/dist/auth/guards/index.js +1 -0
- package/dist/auth/guards/tnt-base-auth.guard.d.ts +15 -0
- package/dist/auth/guards/tnt-base-auth.guard.js +56 -0
- package/dist/bullmq/config/bull.config.js +1 -1
- package/dist/cache/cache.module.d.ts +6 -2
- package/dist/cache/cache.module.js +10 -3
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -21
- package/dist/metrics/circuit-breaker-metrics.service.d.ts +0 -61
- package/dist/metrics/circuit-breaker-metrics.service.js +0 -149
- package/dist/metrics/index.d.ts +0 -5
- package/dist/metrics/index.js +0 -21
- package/dist/metrics/metrics-registry.d.ts +0 -50
- package/dist/metrics/metrics-registry.js +0 -156
- package/dist/metrics/metrics-updater.d.ts +0 -32
- package/dist/metrics/metrics-updater.js +0 -102
- package/dist/metrics/metrics.controller.d.ts +0 -11
- package/dist/metrics/metrics.controller.js +0 -32
- package/dist/metrics/metrics.interface.d.ts +0 -53
- package/dist/metrics/metrics.interface.js +0 -23
- package/dist/metrics/metrics.module.d.ts +0 -11
- package/dist/metrics/metrics.module.js +0 -39
- package/dist/metrics/metrics.service.d.ts +0 -50
- package/dist/metrics/metrics.service.js +0 -165
- package/dist/monitoring/alerting.service.d.ts +0 -82
- package/dist/monitoring/alerting.service.js +0 -290
- package/dist/monitoring/index.d.ts +0 -5
- package/dist/monitoring/index.js +0 -21
- package/dist/monitoring/monitoring.interface.d.ts +0 -102
- package/dist/monitoring/monitoring.interface.js +0 -10
- package/dist/monitoring/monitoring.module.d.ts +0 -8
- package/dist/monitoring/monitoring.module.js +0 -44
- package/dist/monitoring/sentry.service.d.ts +0 -65
- package/dist/monitoring/sentry.service.js +0 -218
- package/dist/monitoring/uptime.service.d.ts +0 -59
- package/dist/monitoring/uptime.service.js +0 -213
- package/dist/resilience/circuit-breaker-event-handler.d.ts +0 -16
- package/dist/resilience/circuit-breaker-event-handler.js +0 -70
- package/dist/resilience/circuit-breaker-factory.d.ts +0 -19
- package/dist/resilience/circuit-breaker-factory.js +0 -51
- package/dist/resilience/circuit-breaker-stats.service.d.ts +0 -37
- package/dist/resilience/circuit-breaker-stats.service.js +0 -69
- package/dist/resilience/circuit-breaker.interface.d.ts +0 -59
- package/dist/resilience/circuit-breaker.interface.js +0 -25
- package/dist/resilience/circuit-breaker.module.d.ts +0 -2
- package/dist/resilience/circuit-breaker.module.js +0 -21
- package/dist/resilience/circuit-breaker.service.d.ts +0 -119
- package/dist/resilience/circuit-breaker.service.js +0 -234
- package/dist/resilience/index.d.ts +0 -3
- package/dist/resilience/index.js +0 -19
|
@@ -1,290 +0,0 @@
|
|
|
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 AlertingService_1;
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.AlertingService = void 0;
|
|
11
|
-
const common_1 = require("@nestjs/common");
|
|
12
|
-
const monitoring_interface_1 = require("./monitoring.interface");
|
|
13
|
-
/**
|
|
14
|
-
* Alerting Service
|
|
15
|
-
*
|
|
16
|
-
* Provides multi-channel alerting with rule engine and deduplication
|
|
17
|
-
*/
|
|
18
|
-
let AlertingService = AlertingService_1 = class AlertingService {
|
|
19
|
-
logger = new common_1.Logger(AlertingService_1.name);
|
|
20
|
-
channels = new Map();
|
|
21
|
-
rules = new Map();
|
|
22
|
-
alertHistory = new Map();
|
|
23
|
-
config;
|
|
24
|
-
constructor(config) {
|
|
25
|
-
this.config = config || { channels: [] };
|
|
26
|
-
this.initializeChannels();
|
|
27
|
-
this.initializeRules();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Initialize alert channels
|
|
31
|
-
*/
|
|
32
|
-
initializeChannels() {
|
|
33
|
-
if (!this.config.channels) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
for (const channel of this.config.channels) {
|
|
37
|
-
const name = channel.name || channel.type;
|
|
38
|
-
this.channels.set(name, {
|
|
39
|
-
...channel,
|
|
40
|
-
enabled: channel.enabled ?? true,
|
|
41
|
-
});
|
|
42
|
-
this.logger.log(`Alert channel '${name}' registered`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Initialize alert rules
|
|
47
|
-
*/
|
|
48
|
-
initializeRules() {
|
|
49
|
-
if (!this.config.rules) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
for (const rule of this.config.rules) {
|
|
53
|
-
this.registerRule(rule);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Register an alert rule
|
|
58
|
-
*/
|
|
59
|
-
registerRule(rule) {
|
|
60
|
-
this.rules.set(rule.name, {
|
|
61
|
-
...rule,
|
|
62
|
-
enabled: rule.enabled ?? true,
|
|
63
|
-
throttle: rule.throttle ?? 300000, // 5 minutes default
|
|
64
|
-
});
|
|
65
|
-
this.logger.log(`Alert rule '${rule.name}' registered`);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Send an alert
|
|
69
|
-
*/
|
|
70
|
-
async sendAlert(alert) {
|
|
71
|
-
const alertId = alert.id || this.generateAlertId(alert);
|
|
72
|
-
// Check throttling
|
|
73
|
-
if (this.isThrottled(alertId)) {
|
|
74
|
-
this.logger.debug(`Alert '${alertId}' is throttled, skipping`);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
// Add timestamp
|
|
78
|
-
const fullAlert = {
|
|
79
|
-
...alert,
|
|
80
|
-
id: alertId,
|
|
81
|
-
timestamp: alert.timestamp || new Date(),
|
|
82
|
-
};
|
|
83
|
-
// Send to all enabled channels
|
|
84
|
-
const promises = [];
|
|
85
|
-
for (const [name, channel] of this.channels.entries()) {
|
|
86
|
-
if (channel.enabled) {
|
|
87
|
-
promises.push(this.sendToChannel(fullAlert, channel));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
await Promise.allSettled(promises);
|
|
91
|
-
// Update alert history
|
|
92
|
-
this.alertHistory.set(alertId, new Date());
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Evaluate alert rules
|
|
96
|
-
*/
|
|
97
|
-
async evaluateRules(metrics) {
|
|
98
|
-
for (const [name, rule] of this.rules.entries()) {
|
|
99
|
-
if (!rule.enabled) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const shouldAlert = this.evaluateCondition(rule.condition, metrics);
|
|
104
|
-
if (shouldAlert) {
|
|
105
|
-
await this.sendAlert({
|
|
106
|
-
title: rule.name,
|
|
107
|
-
message: this.interpolateMessage(rule.message, metrics),
|
|
108
|
-
severity: rule.severity,
|
|
109
|
-
source: 'rule-engine',
|
|
110
|
-
metadata: { rule: name, metrics },
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
this.logger.error(`Error evaluating rule '${name}':`, error);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Send alert to specific channel
|
|
121
|
-
*/
|
|
122
|
-
async sendToChannel(alert, channel) {
|
|
123
|
-
try {
|
|
124
|
-
switch (channel.type) {
|
|
125
|
-
case 'slack':
|
|
126
|
-
await this.sendToSlack(alert, channel);
|
|
127
|
-
break;
|
|
128
|
-
case 'email':
|
|
129
|
-
await this.sendToEmail(alert, channel);
|
|
130
|
-
break;
|
|
131
|
-
case 'webhook':
|
|
132
|
-
await this.sendToWebhook(alert, channel);
|
|
133
|
-
break;
|
|
134
|
-
case 'pagerduty':
|
|
135
|
-
await this.sendToPagerDuty(alert, channel);
|
|
136
|
-
break;
|
|
137
|
-
default:
|
|
138
|
-
this.logger.warn(`Unknown channel type: ${channel.type}`);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
this.logger.error(`Failed to send alert to ${channel.type}:`, error);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Send alert to Slack
|
|
147
|
-
*/
|
|
148
|
-
async sendToSlack(alert, channel) {
|
|
149
|
-
if (!channel.webhookUrl) {
|
|
150
|
-
throw new Error('Slack webhook URL not configured');
|
|
151
|
-
}
|
|
152
|
-
const color = this.getSeverityColor(alert.severity);
|
|
153
|
-
const payload = {
|
|
154
|
-
attachments: [
|
|
155
|
-
{
|
|
156
|
-
color,
|
|
157
|
-
title: alert.title,
|
|
158
|
-
text: alert.message,
|
|
159
|
-
fields: [
|
|
160
|
-
{
|
|
161
|
-
title: 'Severity',
|
|
162
|
-
value: alert.severity.toUpperCase(),
|
|
163
|
-
short: true,
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
title: 'Source',
|
|
167
|
-
value: alert.source || 'Unknown',
|
|
168
|
-
short: true,
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
title: 'Time',
|
|
172
|
-
value: alert.timestamp?.toISOString() || new Date().toISOString(),
|
|
173
|
-
short: false,
|
|
174
|
-
},
|
|
175
|
-
],
|
|
176
|
-
},
|
|
177
|
-
],
|
|
178
|
-
};
|
|
179
|
-
const response = await fetch(channel.webhookUrl, {
|
|
180
|
-
method: 'POST',
|
|
181
|
-
headers: { 'Content-Type': 'application/json' },
|
|
182
|
-
body: JSON.stringify(payload),
|
|
183
|
-
});
|
|
184
|
-
if (!response.ok) {
|
|
185
|
-
throw new Error(`Slack API error: ${response.statusText}`);
|
|
186
|
-
}
|
|
187
|
-
this.logger.debug(`Alert sent to Slack: ${alert.title}`);
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Send alert to email
|
|
191
|
-
*/
|
|
192
|
-
async sendToEmail(alert, channel) {
|
|
193
|
-
// This would integrate with your email service
|
|
194
|
-
// For now, just log
|
|
195
|
-
this.logger.log(`Email alert would be sent to: ${channel.recipients?.join(', ')}`);
|
|
196
|
-
this.logger.log(`Subject: ${alert.title}`);
|
|
197
|
-
this.logger.log(`Body: ${alert.message}`);
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Send alert to webhook
|
|
201
|
-
*/
|
|
202
|
-
async sendToWebhook(alert, channel) {
|
|
203
|
-
if (!channel.webhookUrl) {
|
|
204
|
-
throw new Error('Webhook URL not configured');
|
|
205
|
-
}
|
|
206
|
-
const response = await fetch(channel.webhookUrl, {
|
|
207
|
-
method: 'POST',
|
|
208
|
-
headers: { 'Content-Type': 'application/json' },
|
|
209
|
-
body: JSON.stringify(alert),
|
|
210
|
-
});
|
|
211
|
-
if (!response.ok) {
|
|
212
|
-
throw new Error(`Webhook error: ${response.statusText}`);
|
|
213
|
-
}
|
|
214
|
-
this.logger.debug(`Alert sent to webhook: ${alert.title}`);
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Send alert to PagerDuty
|
|
218
|
-
*/
|
|
219
|
-
async sendToPagerDuty(alert, channel) {
|
|
220
|
-
// PagerDuty integration would go here
|
|
221
|
-
this.logger.log(`PagerDuty alert: ${alert.title}`);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Evaluate alert condition
|
|
225
|
-
*/
|
|
226
|
-
evaluateCondition(condition, metrics) {
|
|
227
|
-
if (typeof condition === 'function') {
|
|
228
|
-
return condition(metrics);
|
|
229
|
-
}
|
|
230
|
-
// Simple expression evaluation (extend as needed)
|
|
231
|
-
// For now, just return false for string conditions
|
|
232
|
-
return false;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Interpolate message template
|
|
236
|
-
*/
|
|
237
|
-
interpolateMessage(template, data) {
|
|
238
|
-
return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
|
|
239
|
-
return data[key] || match;
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Check if alert is throttled
|
|
244
|
-
*/
|
|
245
|
-
isThrottled(alertId) {
|
|
246
|
-
const lastSent = this.alertHistory.get(alertId);
|
|
247
|
-
if (!lastSent) {
|
|
248
|
-
return false;
|
|
249
|
-
}
|
|
250
|
-
const throttleDuration = 300000; // 5 minutes default
|
|
251
|
-
const elapsed = Date.now() - lastSent.getTime();
|
|
252
|
-
return elapsed < throttleDuration;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Generate alert ID
|
|
256
|
-
*/
|
|
257
|
-
generateAlertId(alert) {
|
|
258
|
-
const parts = [alert.title, alert.severity, alert.source].filter(Boolean);
|
|
259
|
-
return parts.join(':').toLowerCase().replace(/\s+/g, '-');
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Get severity color for Slack
|
|
263
|
-
*/
|
|
264
|
-
getSeverityColor(severity) {
|
|
265
|
-
const colors = {
|
|
266
|
-
[monitoring_interface_1.AlertSeverity.INFO]: '#36a64f',
|
|
267
|
-
[monitoring_interface_1.AlertSeverity.WARNING]: '#ff9900',
|
|
268
|
-
[monitoring_interface_1.AlertSeverity.ERROR]: '#ff0000',
|
|
269
|
-
[monitoring_interface_1.AlertSeverity.CRITICAL]: '#8b0000',
|
|
270
|
-
};
|
|
271
|
-
return colors[severity] || '#808080';
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Get alert history
|
|
275
|
-
*/
|
|
276
|
-
getAlertHistory() {
|
|
277
|
-
return new Map(this.alertHistory);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Clear alert history
|
|
281
|
-
*/
|
|
282
|
-
clearAlertHistory() {
|
|
283
|
-
this.alertHistory.clear();
|
|
284
|
-
this.logger.log('Alert history cleared');
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
exports.AlertingService = AlertingService;
|
|
288
|
-
exports.AlertingService = AlertingService = AlertingService_1 = __decorate([
|
|
289
|
-
(0, common_1.Injectable)()
|
|
290
|
-
], AlertingService);
|
package/dist/monitoring/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
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("./monitoring.interface"), exports);
|
|
18
|
-
__exportStar(require("./sentry.service"), exports);
|
|
19
|
-
__exportStar(require("./alerting.service"), exports);
|
|
20
|
-
__exportStar(require("./uptime.service"), exports);
|
|
21
|
-
__exportStar(require("./monitoring.module"), exports);
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
export interface MonitoringModuleOptions {
|
|
2
|
-
sentry?: SentryConfig;
|
|
3
|
-
alerting?: AlertingConfig;
|
|
4
|
-
uptime?: UptimeConfig;
|
|
5
|
-
}
|
|
6
|
-
export interface SentryConfig {
|
|
7
|
-
dsn: string;
|
|
8
|
-
environment?: string;
|
|
9
|
-
release?: string;
|
|
10
|
-
sampleRate?: number;
|
|
11
|
-
tracesSampleRate?: number;
|
|
12
|
-
debug?: boolean;
|
|
13
|
-
beforeSend?: (event: any) => any;
|
|
14
|
-
integrations?: string[];
|
|
15
|
-
}
|
|
16
|
-
export interface AlertingConfig {
|
|
17
|
-
channels: AlertChannel[];
|
|
18
|
-
rules?: AlertRule[];
|
|
19
|
-
defaultSeverity?: AlertSeverity;
|
|
20
|
-
}
|
|
21
|
-
export interface AlertChannel {
|
|
22
|
-
type: 'slack' | 'email' | 'webhook' | 'pagerduty';
|
|
23
|
-
name?: string;
|
|
24
|
-
webhookUrl?: string;
|
|
25
|
-
recipients?: string[];
|
|
26
|
-
enabled?: boolean;
|
|
27
|
-
}
|
|
28
|
-
export interface AlertRule {
|
|
29
|
-
name: string;
|
|
30
|
-
condition: string | ((metrics: any) => boolean);
|
|
31
|
-
severity: AlertSeverity;
|
|
32
|
-
message: string;
|
|
33
|
-
channels: string[];
|
|
34
|
-
throttle?: number;
|
|
35
|
-
enabled?: boolean;
|
|
36
|
-
}
|
|
37
|
-
export declare enum AlertSeverity {
|
|
38
|
-
INFO = "info",
|
|
39
|
-
WARNING = "warning",
|
|
40
|
-
ERROR = "error",
|
|
41
|
-
CRITICAL = "critical"
|
|
42
|
-
}
|
|
43
|
-
export interface Alert {
|
|
44
|
-
id?: string;
|
|
45
|
-
title: string;
|
|
46
|
-
message: string;
|
|
47
|
-
severity: AlertSeverity;
|
|
48
|
-
source?: string;
|
|
49
|
-
metadata?: Record<string, any>;
|
|
50
|
-
timestamp?: Date;
|
|
51
|
-
}
|
|
52
|
-
export interface UptimeConfig {
|
|
53
|
-
enabled: boolean;
|
|
54
|
-
checkInterval?: number;
|
|
55
|
-
slaThreshold?: number;
|
|
56
|
-
alertOnDowntime?: boolean;
|
|
57
|
-
}
|
|
58
|
-
export interface HealthCheck {
|
|
59
|
-
name: string;
|
|
60
|
-
check: () => Promise<void>;
|
|
61
|
-
interval?: number;
|
|
62
|
-
timeout?: number;
|
|
63
|
-
critical?: boolean;
|
|
64
|
-
}
|
|
65
|
-
export interface HealthCheckResult {
|
|
66
|
-
name: string;
|
|
67
|
-
status: 'healthy' | 'unhealthy' | 'degraded';
|
|
68
|
-
responseTime: number;
|
|
69
|
-
error?: string;
|
|
70
|
-
timestamp: Date;
|
|
71
|
-
}
|
|
72
|
-
export interface UptimeReport {
|
|
73
|
-
service: string;
|
|
74
|
-
uptime: number;
|
|
75
|
-
downtime: number;
|
|
76
|
-
incidents: number;
|
|
77
|
-
period: string;
|
|
78
|
-
startTime: Date;
|
|
79
|
-
endTime: Date;
|
|
80
|
-
}
|
|
81
|
-
export interface SentryBreadcrumb {
|
|
82
|
-
type?: string;
|
|
83
|
-
level?: 'fatal' | 'error' | 'warning' | 'log' | 'info' | 'debug';
|
|
84
|
-
message?: string;
|
|
85
|
-
category?: string;
|
|
86
|
-
data?: Record<string, any>;
|
|
87
|
-
timestamp?: number;
|
|
88
|
-
}
|
|
89
|
-
export interface SentryUser {
|
|
90
|
-
id?: string;
|
|
91
|
-
email?: string;
|
|
92
|
-
username?: string;
|
|
93
|
-
ip_address?: string;
|
|
94
|
-
[key: string]: any;
|
|
95
|
-
}
|
|
96
|
-
export interface ErrorContext {
|
|
97
|
-
tags?: Record<string, string>;
|
|
98
|
-
user?: SentryUser;
|
|
99
|
-
extra?: Record<string, any>;
|
|
100
|
-
breadcrumbs?: SentryBreadcrumb[];
|
|
101
|
-
level?: 'fatal' | 'error' | 'warning' | 'log' | 'info' | 'debug';
|
|
102
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlertSeverity = void 0;
|
|
4
|
-
var AlertSeverity;
|
|
5
|
-
(function (AlertSeverity) {
|
|
6
|
-
AlertSeverity["INFO"] = "info";
|
|
7
|
-
AlertSeverity["WARNING"] = "warning";
|
|
8
|
-
AlertSeverity["ERROR"] = "error";
|
|
9
|
-
AlertSeverity["CRITICAL"] = "critical";
|
|
10
|
-
})(AlertSeverity || (exports.AlertSeverity = AlertSeverity = {}));
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import { MonitoringModuleOptions } from './monitoring.interface';
|
|
3
|
-
export declare class MonitoringModule {
|
|
4
|
-
/**
|
|
5
|
-
* Register the monitoring module with options
|
|
6
|
-
*/
|
|
7
|
-
static register(options?: MonitoringModuleOptions): DynamicModule;
|
|
8
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
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 MonitoringModule_1;
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.MonitoringModule = void 0;
|
|
11
|
-
const common_1 = require("@nestjs/common");
|
|
12
|
-
const sentry_service_1 = require("./sentry.service");
|
|
13
|
-
const alerting_service_1 = require("./alerting.service");
|
|
14
|
-
const uptime_service_1 = require("./uptime.service");
|
|
15
|
-
let MonitoringModule = MonitoringModule_1 = class MonitoringModule {
|
|
16
|
-
/**
|
|
17
|
-
* Register the monitoring module with options
|
|
18
|
-
*/
|
|
19
|
-
static register(options = {}) {
|
|
20
|
-
return {
|
|
21
|
-
module: MonitoringModule_1,
|
|
22
|
-
providers: [
|
|
23
|
-
{
|
|
24
|
-
provide: sentry_service_1.SentryService,
|
|
25
|
-
useValue: new sentry_service_1.SentryService(options.sentry),
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
provide: alerting_service_1.AlertingService,
|
|
29
|
-
useValue: new alerting_service_1.AlertingService(options.alerting),
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
provide: uptime_service_1.UptimeService,
|
|
33
|
-
useValue: new uptime_service_1.UptimeService(options.uptime),
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
exports: [sentry_service_1.SentryService, alerting_service_1.AlertingService, uptime_service_1.UptimeService],
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
exports.MonitoringModule = MonitoringModule;
|
|
41
|
-
exports.MonitoringModule = MonitoringModule = MonitoringModule_1 = __decorate([
|
|
42
|
-
(0, common_1.Global)(),
|
|
43
|
-
(0, common_1.Module)({})
|
|
44
|
-
], MonitoringModule);
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import '@sentry/tracing';
|
|
3
|
-
import { SentryConfig, SentryBreadcrumb, SentryUser, ErrorContext } from './monitoring.interface';
|
|
4
|
-
export declare class SentryService implements OnModuleDestroy {
|
|
5
|
-
private readonly logger;
|
|
6
|
-
private initialized;
|
|
7
|
-
constructor(config?: SentryConfig);
|
|
8
|
-
/**
|
|
9
|
-
* Initialize Sentry
|
|
10
|
-
*/
|
|
11
|
-
private initialize;
|
|
12
|
-
/**
|
|
13
|
-
* Capture an exception
|
|
14
|
-
*/
|
|
15
|
-
captureException(error: Error, context?: ErrorContext): string | undefined;
|
|
16
|
-
/**
|
|
17
|
-
* Capture a message
|
|
18
|
-
*/
|
|
19
|
-
captureMessage(message: string, level?: 'fatal' | 'error' | 'warning' | 'log' | 'info' | 'debug', context?: ErrorContext): string | undefined;
|
|
20
|
-
/**
|
|
21
|
-
* Add a breadcrumb
|
|
22
|
-
*/
|
|
23
|
-
addBreadcrumb(breadcrumb: SentryBreadcrumb): void;
|
|
24
|
-
/**
|
|
25
|
-
* Set user context
|
|
26
|
-
*/
|
|
27
|
-
setUser(user: SentryUser | null): void;
|
|
28
|
-
/**
|
|
29
|
-
* Set a tag
|
|
30
|
-
*/
|
|
31
|
-
setTag(key: string, value: string): void;
|
|
32
|
-
/**
|
|
33
|
-
* Set multiple tags
|
|
34
|
-
*/
|
|
35
|
-
setTags(tags: Record<string, string>): void;
|
|
36
|
-
/**
|
|
37
|
-
* Set context
|
|
38
|
-
*/
|
|
39
|
-
setContext(name: string, context: Record<string, any>): void;
|
|
40
|
-
/**
|
|
41
|
-
* Start a transaction for performance monitoring
|
|
42
|
-
* Note: Use Sentry.startTransaction directly in newer versions
|
|
43
|
-
*/
|
|
44
|
-
startTransaction(name: string, op: string): any;
|
|
45
|
-
/**
|
|
46
|
-
* Configure scope (use withScope in newer versions)
|
|
47
|
-
*/
|
|
48
|
-
configureScope(callback: (scope: any) => void): void;
|
|
49
|
-
/**
|
|
50
|
-
* Flush events
|
|
51
|
-
*/
|
|
52
|
-
flush(timeout?: number): Promise<boolean>;
|
|
53
|
-
/**
|
|
54
|
-
* Close Sentry client
|
|
55
|
-
*/
|
|
56
|
-
close(timeout?: number): Promise<boolean>;
|
|
57
|
-
/**
|
|
58
|
-
* Check if Sentry is initialized
|
|
59
|
-
*/
|
|
60
|
-
isInitialized(): boolean;
|
|
61
|
-
/**
|
|
62
|
-
* Cleanup on module destroy
|
|
63
|
-
*/
|
|
64
|
-
onModuleDestroy(): Promise<void>;
|
|
65
|
-
}
|