unified-error-handling
Version:
A lightweight, zero-dependency error handling library with dynamic adapter loading for multiple error tracking services
223 lines • 4.78 kB
TypeScript
import { NormalizedError, UserContext, Breadcrumb, ErrorContext, ErrorLevel } from './errors';
import { ProviderConfig } from './config';
/**
* Base error provider interface
*/
export interface ErrorProvider {
/**
* Provider name
*/
readonly name: string;
/**
* Provider version
*/
readonly version: string;
/**
* Is provider initialized
*/
readonly isInitialized: boolean;
/**
* Initialize the provider
*/
initialize(config: ProviderConfig): Promise<void>;
/**
* Log an error
*/
logError(error: NormalizedError): Promise<void>;
/**
* Log a message
*/
logMessage(message: string, level: ErrorLevel, context?: ErrorContext): Promise<void>;
/**
* Set user context
*/
setUser(user: UserContext | null): Promise<void>;
/**
* Set custom context
*/
setContext(key: string, context: any): Promise<void>;
/**
* Add breadcrumb
*/
addBreadcrumb(breadcrumb: Breadcrumb): Promise<void>;
/**
* Set tags
*/
setTags(tags: Record<string, string>): Promise<void>;
/**
* Set extra data
*/
setExtra(key: string, value: any): Promise<void>;
/**
* Clear all breadcrumbs
*/
clearBreadcrumbs(): Promise<void>;
/**
* Flush pending errors
*/
flush(timeout?: number): Promise<boolean>;
/**
* Destroy the provider
*/
destroy(): Promise<void>;
/**
* Check if provider supports a feature
*/
supportsFeature(feature: ProviderFeature): boolean;
/**
* Get provider capabilities
*/
getCapabilities(): ProviderCapabilities;
}
/**
* Provider features
*/
export declare enum ProviderFeature {
BREADCRUMBS = "breadcrumbs",
USER_CONTEXT = "userContext",
CUSTOM_CONTEXT = "customContext",
TAGS = "tags",
EXTRA_DATA = "extraData",
OFFLINE_SUPPORT = "offlineSupport",
SESSION_TRACKING = "sessionTracking",
PERFORMANCE = "performance",
NETWORK_TRACKING = "networkTracking",
CONSOLE_TRACKING = "consoleTracking",
ERROR_FILTERING = "errorFiltering",
ERROR_GROUPING = "errorGrouping",
SOURCE_MAPS = "sourceMaps",
SCREENSHOTS = "screenshots",
SESSION_REPLAY = "sessionReplay",
USER_FEEDBACK = "userFeedback",
RELEASE_TRACKING = "releaseTracking",
CUSTOM_ENDPOINTS = "customEndpoints",
ANALYTICS = "analytics",
PERFORMANCE_MONITORING = "performanceMonitoring",
ATTACHMENTS = "attachments",
TELEMETRY = "telemetry"
}
/**
* Provider capabilities
*/
export interface ProviderCapabilities {
/**
* Supported features
*/
features: ProviderFeature[];
/**
* Maximum breadcrumb count
*/
maxBreadcrumbs: number;
/**
* Maximum context size
*/
maxContextSize: number;
/**
* Maximum tag count
*/
maxTags: number;
/**
* Supports offline queue
*/
supportsOffline: boolean;
/**
* Supports batching
*/
supportsBatching: boolean;
/**
* Platform support
*/
platforms: {
ios: boolean;
android: boolean;
web: boolean;
};
}
/**
* Provider factory function
*/
export type ProviderFactory = () => ErrorProvider;
/**
* Provider registry interface
*/
export interface ProviderRegistry {
/**
* Register a provider
*/
register(name: string, factory: ProviderFactory): void;
/**
* Get a provider
*/
get(name: string): ErrorProvider | undefined;
/**
* Check if provider exists
*/
has(name: string): boolean;
/**
* Get all registered providers
*/
getAll(): Map<string, ProviderFactory>;
/**
* Unregister a provider
*/
unregister(name: string): boolean;
}
/**
* Provider state
*/
export interface ProviderState {
/**
* Is initialized
*/
initialized: boolean;
/**
* Is enabled
*/
enabled: boolean;
/**
* Current configuration
*/
config?: ProviderConfig;
/**
* Error count
*/
errorCount: number;
/**
* Last error timestamp
*/
lastErrorTimestamp?: number;
/**
* Queue size
*/
queueSize: number;
}
/**
* Provider metrics
*/
export interface ProviderMetrics {
/**
* Total errors sent
*/
totalErrors: number;
/**
* Errors sent successfully
*/
successfulErrors: number;
/**
* Failed error sends
*/
failedErrors: number;
/**
* Average send time in ms
*/
averageSendTime: number;
/**
* Queue high water mark
*/
maxQueueSize: number;
/**
* Dropped errors
*/
droppedErrors: number;
}
//# sourceMappingURL=providers.d.ts.map