Fix TypeScript build errors
This commit is contained in:
128
frontend/src/utils/errorTracking.ts
Normal file
128
frontend/src/utils/errorTracking.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* Error Tracking Utility
|
||||
*
|
||||
* Provides error tracking integration (ready for Sentry or similar services).
|
||||
* Currently provides a no-op implementation that can be replaced with actual
|
||||
* error tracking service integration.
|
||||
*
|
||||
* To integrate Sentry:
|
||||
* 1. Install: npm install @sentry/react
|
||||
* 2. Uncomment and configure the Sentry initialization
|
||||
* 3. Update the captureException and captureMessage calls
|
||||
*/
|
||||
|
||||
// Uncomment when ready to use Sentry:
|
||||
// import * as Sentry from '@sentry/react';
|
||||
|
||||
interface ErrorContext {
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
class ErrorTracker {
|
||||
private initialized = false;
|
||||
|
||||
/**
|
||||
* Initialize error tracking service
|
||||
*/
|
||||
init(dsn?: string, environment?: string): void {
|
||||
if (this.initialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Uncomment when ready to use Sentry:
|
||||
/*
|
||||
if (!dsn) {
|
||||
console.warn('Error tracking DSN not provided, error tracking disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
Sentry.init({
|
||||
dsn,
|
||||
environment: environment || import.meta.env.MODE,
|
||||
integrations: [
|
||||
new Sentry.BrowserTracing(),
|
||||
new Sentry.Replay(),
|
||||
],
|
||||
tracesSampleRate: 1.0, // Adjust based on traffic
|
||||
replaysSessionSampleRate: 0.1,
|
||||
replaysOnErrorSampleRate: 1.0,
|
||||
});
|
||||
|
||||
this.initialized = true;
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Capture an exception
|
||||
*/
|
||||
captureException(error: Error, context?: ErrorContext): void {
|
||||
// Uncomment when ready to use Sentry:
|
||||
/*
|
||||
if (this.initialized) {
|
||||
Sentry.captureException(error, {
|
||||
contexts: {
|
||||
custom: context || {},
|
||||
},
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
// Fallback logging
|
||||
if (import.meta.env.DEV) {
|
||||
console.error('Error captured:', error, context);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Capture a message
|
||||
*/
|
||||
captureMessage(message: string, level: 'info' | 'warning' | 'error' = 'error', context?: ErrorContext): void {
|
||||
// Uncomment when ready to use Sentry:
|
||||
/*
|
||||
if (this.initialized) {
|
||||
Sentry.captureMessage(message, {
|
||||
level: level as Sentry.SeverityLevel,
|
||||
contexts: {
|
||||
custom: context || {},
|
||||
},
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
// Fallback logging
|
||||
if (import.meta.env.DEV) {
|
||||
const logMethod = level === 'error' ? console.error : level === 'warning' ? console.warn : console.info;
|
||||
logMethod('Message captured:', message, context);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user context for error tracking
|
||||
*/
|
||||
setUser(user: { id: string; email?: string; username?: string } | null): void {
|
||||
// Uncomment when ready to use Sentry:
|
||||
/*
|
||||
if (this.initialized) {
|
||||
Sentry.setUser(user);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Add breadcrumb for debugging
|
||||
*/
|
||||
addBreadcrumb(message: string, category?: string, level?: 'info' | 'warning' | 'error'): void {
|
||||
// Uncomment when ready to use Sentry:
|
||||
/*
|
||||
if (this.initialized) {
|
||||
Sentry.addBreadcrumb({
|
||||
message,
|
||||
category: category || 'custom',
|
||||
level: level || 'info',
|
||||
});
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
export const errorTracker = new ErrorTracker();
|
||||
Reference in New Issue
Block a user