@tachui/devtools 0.8.0-alpha
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/LICENSE +363 -0
- package/README.md +189 -0
- package/dist/build-time/detection.d.ts +32 -0
- package/dist/build-time/detection.d.ts.map +1 -0
- package/dist/build-time/index.d.ts +84 -0
- package/dist/build-time/index.d.ts.map +1 -0
- package/dist/build-time/plugins.d.ts +75 -0
- package/dist/build-time/plugins.d.ts.map +1 -0
- package/dist/build-time/rules.d.ts +73 -0
- package/dist/build-time/rules.d.ts.map +1 -0
- package/dist/build-time/transformer.d.ts +23 -0
- package/dist/build-time/transformer.d.ts.map +1 -0
- package/dist/build-time/types.d.ts +212 -0
- package/dist/build-time/types.d.ts.map +1 -0
- package/dist/debug/advanced-debugging.d.ts +327 -0
- package/dist/debug/advanced-debugging.d.ts.map +1 -0
- package/dist/debug/debug.d.ts +61 -0
- package/dist/debug/debug.d.ts.map +1 -0
- package/dist/debug/developer-experience.d.ts +261 -0
- package/dist/debug/developer-experience.d.ts.map +1 -0
- package/dist/debug/development-warnings.d.ts +42 -0
- package/dist/debug/development-warnings.d.ts.map +1 -0
- package/dist/debug/documentation-integration.d.ts +269 -0
- package/dist/debug/documentation-integration.d.ts.map +1 -0
- package/dist/debug/enhanced-errors.d.ts +176 -0
- package/dist/debug/enhanced-errors.d.ts.map +1 -0
- package/dist/debug/enhanced-types.d.ts +284 -0
- package/dist/debug/enhanced-types.d.ts.map +1 -0
- package/dist/debug/ide-integration.d.ts +328 -0
- package/dist/debug/ide-integration.d.ts.map +1 -0
- package/dist/debug/index.d.ts +12 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +1251 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/debug/validation-debug-tools.d.ts +228 -0
- package/dist/debug/validation-debug-tools.d.ts.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +216229 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector/index.d.ts +232 -0
- package/dist/inspector/index.d.ts.map +1 -0
- package/dist/inspector/index.js +525 -0
- package/dist/inspector/index.js.map +1 -0
- package/dist/plugins/simplified-error-handler.d.ts +83 -0
- package/dist/plugins/simplified-error-handler.d.ts.map +1 -0
- package/dist/profiler/index.d.ts +21 -0
- package/dist/profiler/index.d.ts.map +1 -0
- package/dist/profiler/index.js +519 -0
- package/dist/profiler/index.js.map +1 -0
- package/dist/profiler/performance-optimizer.d.ts +115 -0
- package/dist/profiler/performance-optimizer.d.ts.map +1 -0
- package/dist/profiler/production-monitoring.d.ts +150 -0
- package/dist/profiler/production-monitoring.d.ts.map +1 -0
- package/dist/runtime/error-boundary.d.ts +302 -0
- package/dist/runtime/error-boundary.d.ts.map +1 -0
- package/dist/runtime/error-recovery.d.ts +267 -0
- package/dist/runtime/error-recovery.d.ts.map +1 -0
- package/dist/runtime/error-reporting.d.ts +287 -0
- package/dist/runtime/error-reporting.d.ts.map +1 -0
- package/dist/runtime/error-utils.d.ts +204 -0
- package/dist/runtime/error-utils.d.ts.map +1 -0
- package/dist/runtime/performance.d.ts +217 -0
- package/dist/runtime/performance.d.ts.map +1 -0
- package/dist/testing/index.d.ts +29 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +47 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/validation/debug-tools-stub.d.ts +67 -0
- package/dist/validation/debug-tools-stub.d.ts.map +1 -0
- package/dist/validation/enhanced-runtime.d.ts +310 -0
- package/dist/validation/enhanced-runtime.d.ts.map +1 -0
- package/dist/validation/error-reporting.d.ts +186 -0
- package/dist/validation/error-reporting.d.ts.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Recovery Mechanisms (Phase 3.2.3)
|
|
3
|
+
*
|
|
4
|
+
* Advanced error recovery strategies and retry logic for TachUI.
|
|
5
|
+
* Provides intelligent error handling, circuit breakers, and recovery patterns.
|
|
6
|
+
*/
|
|
7
|
+
import { type TachUIError } from './error-boundary';
|
|
8
|
+
/**
|
|
9
|
+
* Circuit breaker states
|
|
10
|
+
*/
|
|
11
|
+
export type CircuitBreakerState = 'closed' | 'open' | 'half-open';
|
|
12
|
+
/**
|
|
13
|
+
* Circuit breaker configuration
|
|
14
|
+
*/
|
|
15
|
+
export interface CircuitBreakerConfig {
|
|
16
|
+
failureThreshold: number;
|
|
17
|
+
resetTimeout: number;
|
|
18
|
+
monitoringPeriod: number;
|
|
19
|
+
minimumThroughput: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Retry policy configuration
|
|
23
|
+
*/
|
|
24
|
+
export interface RetryPolicyConfig {
|
|
25
|
+
maxAttempts: number;
|
|
26
|
+
baseDelay: number;
|
|
27
|
+
maxDelay: number;
|
|
28
|
+
backoffMultiplier: number;
|
|
29
|
+
jitter: boolean;
|
|
30
|
+
retryableErrors: string[];
|
|
31
|
+
nonRetryableErrors: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fallback configuration
|
|
35
|
+
*/
|
|
36
|
+
export interface FallbackConfig<T> {
|
|
37
|
+
value?: T;
|
|
38
|
+
factory?: () => T | Promise<T>;
|
|
39
|
+
timeout?: number;
|
|
40
|
+
cache?: boolean;
|
|
41
|
+
cacheKey?: string;
|
|
42
|
+
cacheTimeout?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Circuit breaker implementation
|
|
46
|
+
*/
|
|
47
|
+
export declare class CircuitBreaker {
|
|
48
|
+
private state;
|
|
49
|
+
private failureCount;
|
|
50
|
+
private lastFailureTime;
|
|
51
|
+
private successCount;
|
|
52
|
+
private requestCount;
|
|
53
|
+
private lastRequestTime;
|
|
54
|
+
private config;
|
|
55
|
+
private stateSignal;
|
|
56
|
+
private setState;
|
|
57
|
+
constructor(config?: Partial<CircuitBreakerConfig>);
|
|
58
|
+
/**
|
|
59
|
+
* Execute function with circuit breaker protection
|
|
60
|
+
*/
|
|
61
|
+
execute<R>(fn: () => Promise<R>): Promise<R>;
|
|
62
|
+
/**
|
|
63
|
+
* Handle successful execution
|
|
64
|
+
*/
|
|
65
|
+
private onSuccess;
|
|
66
|
+
/**
|
|
67
|
+
* Handle failed execution
|
|
68
|
+
*/
|
|
69
|
+
private onFailure;
|
|
70
|
+
/**
|
|
71
|
+
* Check if circuit breaker should trip to open state
|
|
72
|
+
*/
|
|
73
|
+
private shouldTrip;
|
|
74
|
+
/**
|
|
75
|
+
* Trip circuit breaker to open state
|
|
76
|
+
*/
|
|
77
|
+
private trip;
|
|
78
|
+
/**
|
|
79
|
+
* Check if should attempt reset from open state
|
|
80
|
+
*/
|
|
81
|
+
private shouldAttemptReset;
|
|
82
|
+
/**
|
|
83
|
+
* Reset circuit breaker to closed state
|
|
84
|
+
*/
|
|
85
|
+
private reset;
|
|
86
|
+
/**
|
|
87
|
+
* Update request count for monitoring period
|
|
88
|
+
*/
|
|
89
|
+
private updateRequestCount;
|
|
90
|
+
/**
|
|
91
|
+
* Get current state
|
|
92
|
+
*/
|
|
93
|
+
getState(): CircuitBreakerState;
|
|
94
|
+
/**
|
|
95
|
+
* Get state signal
|
|
96
|
+
*/
|
|
97
|
+
getStateSignal(): () => CircuitBreakerState;
|
|
98
|
+
/**
|
|
99
|
+
* Get metrics
|
|
100
|
+
*/
|
|
101
|
+
getMetrics(): {
|
|
102
|
+
state: CircuitBreakerState;
|
|
103
|
+
failureCount: number;
|
|
104
|
+
successCount: number;
|
|
105
|
+
requestCount: number;
|
|
106
|
+
failureRate: number;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Retry policy implementation
|
|
111
|
+
*/
|
|
112
|
+
export declare class RetryPolicy {
|
|
113
|
+
private config;
|
|
114
|
+
constructor(config?: Partial<RetryPolicyConfig>);
|
|
115
|
+
/**
|
|
116
|
+
* Execute function with retry policy
|
|
117
|
+
*/
|
|
118
|
+
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
119
|
+
/**
|
|
120
|
+
* Check if error should be retried
|
|
121
|
+
*/
|
|
122
|
+
private shouldRetry;
|
|
123
|
+
/**
|
|
124
|
+
* Calculate delay for next retry
|
|
125
|
+
*/
|
|
126
|
+
private calculateDelay;
|
|
127
|
+
/**
|
|
128
|
+
* Sleep for specified duration
|
|
129
|
+
*/
|
|
130
|
+
private sleep;
|
|
131
|
+
/**
|
|
132
|
+
* Get configuration
|
|
133
|
+
*/
|
|
134
|
+
getConfig(): RetryPolicyConfig;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Fallback manager
|
|
138
|
+
*/
|
|
139
|
+
export declare class FallbackManager<T> {
|
|
140
|
+
private cache;
|
|
141
|
+
/**
|
|
142
|
+
* Execute with fallback
|
|
143
|
+
*/
|
|
144
|
+
executeWithFallback<R>(fn: () => Promise<R>, fallbackConfig: FallbackConfig<R>): Promise<R>;
|
|
145
|
+
/**
|
|
146
|
+
* Get fallback value
|
|
147
|
+
*/
|
|
148
|
+
private getFallbackValue;
|
|
149
|
+
/**
|
|
150
|
+
* Execute with timeout
|
|
151
|
+
*/
|
|
152
|
+
private withTimeout;
|
|
153
|
+
/**
|
|
154
|
+
* Get cached value
|
|
155
|
+
*/
|
|
156
|
+
private getCachedValue;
|
|
157
|
+
/**
|
|
158
|
+
* Set cached value
|
|
159
|
+
*/
|
|
160
|
+
private setCachedValue;
|
|
161
|
+
/**
|
|
162
|
+
* Clear cache
|
|
163
|
+
*/
|
|
164
|
+
clearCache(): void;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Composite recovery strategy
|
|
168
|
+
*/
|
|
169
|
+
export declare class RecoveryOrchestrator {
|
|
170
|
+
private circuitBreaker?;
|
|
171
|
+
private retryPolicy?;
|
|
172
|
+
private fallbackManager;
|
|
173
|
+
constructor(circuitBreakerConfig?: Partial<CircuitBreakerConfig>, retryPolicyConfig?: Partial<RetryPolicyConfig>);
|
|
174
|
+
/**
|
|
175
|
+
* Execute with all recovery mechanisms
|
|
176
|
+
*/
|
|
177
|
+
execute<T>(fn: () => Promise<T>, fallbackConfig?: FallbackConfig<T>): Promise<T>;
|
|
178
|
+
/**
|
|
179
|
+
* Wrap function with recovery mechanisms
|
|
180
|
+
*/
|
|
181
|
+
private wrapWithRecovery;
|
|
182
|
+
/**
|
|
183
|
+
* Get circuit breaker metrics
|
|
184
|
+
*/
|
|
185
|
+
getCircuitBreakerMetrics(): {
|
|
186
|
+
state: CircuitBreakerState;
|
|
187
|
+
failureCount: number;
|
|
188
|
+
successCount: number;
|
|
189
|
+
requestCount: number;
|
|
190
|
+
failureRate: number;
|
|
191
|
+
} | undefined;
|
|
192
|
+
/**
|
|
193
|
+
* Get retry policy configuration
|
|
194
|
+
*/
|
|
195
|
+
getRetryPolicyConfig(): RetryPolicyConfig | undefined;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Error recovery utilities
|
|
199
|
+
*/
|
|
200
|
+
export declare const recoveryUtils: {
|
|
201
|
+
/**
|
|
202
|
+
* Create a robust function wrapper with all recovery mechanisms
|
|
203
|
+
*/
|
|
204
|
+
createRobustFunction<T extends (...args: any[]) => Promise<any>>(fn: T, options?: {
|
|
205
|
+
circuitBreaker?: Partial<CircuitBreakerConfig>;
|
|
206
|
+
retryPolicy?: Partial<RetryPolicyConfig>;
|
|
207
|
+
fallback?: FallbackConfig<Awaited<ReturnType<T>>>;
|
|
208
|
+
onError?: (error: TachUIError) => void;
|
|
209
|
+
}): T;
|
|
210
|
+
/**
|
|
211
|
+
* Create simple retry wrapper
|
|
212
|
+
*/
|
|
213
|
+
withRetry<T extends (...args: any[]) => Promise<any>>(fn: T, maxAttempts?: number, baseDelay?: number): T;
|
|
214
|
+
/**
|
|
215
|
+
* Create circuit breaker wrapper
|
|
216
|
+
*/
|
|
217
|
+
withCircuitBreaker<T extends (...args: any[]) => Promise<any>>(fn: T, config?: Partial<CircuitBreakerConfig>): T;
|
|
218
|
+
/**
|
|
219
|
+
* Create fallback wrapper
|
|
220
|
+
*/
|
|
221
|
+
withFallback<T extends (...args: any[]) => Promise<any>>(fn: T, fallbackValue: Awaited<ReturnType<T>> | (() => Awaited<ReturnType<T>>)): T;
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Global recovery configurations
|
|
225
|
+
*/
|
|
226
|
+
export declare const recoveryPresets: {
|
|
227
|
+
/**
|
|
228
|
+
* Configuration for network requests
|
|
229
|
+
*/
|
|
230
|
+
network: {
|
|
231
|
+
circuitBreaker: {
|
|
232
|
+
failureThreshold: number;
|
|
233
|
+
resetTimeout: number;
|
|
234
|
+
monitoringPeriod: number;
|
|
235
|
+
};
|
|
236
|
+
retryPolicy: {
|
|
237
|
+
maxAttempts: number;
|
|
238
|
+
baseDelay: number;
|
|
239
|
+
backoffMultiplier: number;
|
|
240
|
+
jitter: boolean;
|
|
241
|
+
retryableErrors: string[];
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Configuration for component rendering
|
|
246
|
+
*/
|
|
247
|
+
component: {
|
|
248
|
+
retryPolicy: {
|
|
249
|
+
maxAttempts: number;
|
|
250
|
+
baseDelay: number;
|
|
251
|
+
backoffMultiplier: number;
|
|
252
|
+
jitter: boolean;
|
|
253
|
+
retryableErrors: string[];
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
/**
|
|
257
|
+
* Configuration for reactive operations
|
|
258
|
+
*/
|
|
259
|
+
reactive: {
|
|
260
|
+
retryPolicy: {
|
|
261
|
+
maxAttempts: number;
|
|
262
|
+
baseDelay: number;
|
|
263
|
+
retryableErrors: never[];
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=error-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-recovery.d.ts","sourceRoot":"","sources":["../../src/runtime/error-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Reporting and Logging System (Phase 3.2.3)
|
|
3
|
+
*
|
|
4
|
+
* Advanced error reporting, logging, and analytics for TachUI.
|
|
5
|
+
* Provides structured logging, error aggregation, and reporting pipelines.
|
|
6
|
+
*/
|
|
7
|
+
import { type ErrorCategory, type ErrorSeverity, type TachUIError } from './error-boundary';
|
|
8
|
+
/**
|
|
9
|
+
* Log levels
|
|
10
|
+
*/
|
|
11
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
12
|
+
/**
|
|
13
|
+
* Log entry structure
|
|
14
|
+
*/
|
|
15
|
+
export interface LogEntry {
|
|
16
|
+
id: string;
|
|
17
|
+
timestamp: number;
|
|
18
|
+
level: LogLevel;
|
|
19
|
+
message: string;
|
|
20
|
+
category?: string;
|
|
21
|
+
componentId?: string;
|
|
22
|
+
componentName?: string;
|
|
23
|
+
context?: Record<string, any>;
|
|
24
|
+
stack?: string;
|
|
25
|
+
userAgent?: string;
|
|
26
|
+
url?: string;
|
|
27
|
+
userId?: string;
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
tags?: string[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Error aggregation data
|
|
33
|
+
*/
|
|
34
|
+
export interface ErrorAggregation {
|
|
35
|
+
id: string;
|
|
36
|
+
message: string;
|
|
37
|
+
category: ErrorCategory;
|
|
38
|
+
severity: ErrorSeverity;
|
|
39
|
+
count: number;
|
|
40
|
+
firstSeen: number;
|
|
41
|
+
lastSeen: number;
|
|
42
|
+
affectedComponents: string[];
|
|
43
|
+
samples: TachUIError[];
|
|
44
|
+
fingerprint: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Logger interface
|
|
48
|
+
*/
|
|
49
|
+
export interface Logger {
|
|
50
|
+
debug(message: string, context?: Record<string, any>): void;
|
|
51
|
+
info(message: string, context?: Record<string, any>): void;
|
|
52
|
+
warn(message: string, context?: Record<string, any>): void;
|
|
53
|
+
error(message: string, context?: Record<string, any>): void;
|
|
54
|
+
fatal(message: string, context?: Record<string, any>): void;
|
|
55
|
+
log(level: LogLevel, message: string, context?: Record<string, any>): void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Report destination interface
|
|
59
|
+
*/
|
|
60
|
+
export interface ReportDestination {
|
|
61
|
+
name: string;
|
|
62
|
+
send(data: LogEntry[] | ErrorAggregation[]): Promise<void>;
|
|
63
|
+
isEnabled(): boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reporting configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface ReportingConfig {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
logLevel: LogLevel;
|
|
71
|
+
batchSize: number;
|
|
72
|
+
batchTimeout: number;
|
|
73
|
+
aggregationWindow: number;
|
|
74
|
+
maxRetries: number;
|
|
75
|
+
destinations: ReportDestination[];
|
|
76
|
+
enableContextCapture: boolean;
|
|
77
|
+
enableStackTrace: boolean;
|
|
78
|
+
enableUserTracking: boolean;
|
|
79
|
+
enableSessionTracking: boolean;
|
|
80
|
+
sensitiveKeys: string[];
|
|
81
|
+
enableCompression: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Structured logger implementation
|
|
85
|
+
*/
|
|
86
|
+
export declare class StructuredLogger implements Logger {
|
|
87
|
+
private entries;
|
|
88
|
+
private config;
|
|
89
|
+
private sessionId;
|
|
90
|
+
private userId?;
|
|
91
|
+
private entriesSignal;
|
|
92
|
+
private setEntries;
|
|
93
|
+
constructor(config?: Partial<ReportingConfig>);
|
|
94
|
+
/**
|
|
95
|
+
* Debug level logging
|
|
96
|
+
*/
|
|
97
|
+
debug(message: string, context?: Record<string, any>): void;
|
|
98
|
+
/**
|
|
99
|
+
* Info level logging
|
|
100
|
+
*/
|
|
101
|
+
info(message: string, context?: Record<string, any>): void;
|
|
102
|
+
/**
|
|
103
|
+
* Warning level logging
|
|
104
|
+
*/
|
|
105
|
+
warn(message: string, context?: Record<string, any>): void;
|
|
106
|
+
/**
|
|
107
|
+
* Error level logging
|
|
108
|
+
*/
|
|
109
|
+
error(message: string, context?: Record<string, any>): void;
|
|
110
|
+
/**
|
|
111
|
+
* Fatal level logging
|
|
112
|
+
*/
|
|
113
|
+
fatal(message: string, context?: Record<string, any>): void;
|
|
114
|
+
/**
|
|
115
|
+
* Generic logging method
|
|
116
|
+
*/
|
|
117
|
+
log(level: LogLevel, message: string, context?: Record<string, any>): void;
|
|
118
|
+
/**
|
|
119
|
+
* Check if should log at given level
|
|
120
|
+
*/
|
|
121
|
+
private shouldLog;
|
|
122
|
+
/**
|
|
123
|
+
* Add log entry
|
|
124
|
+
*/
|
|
125
|
+
private addEntry;
|
|
126
|
+
/**
|
|
127
|
+
* Sanitize context to remove sensitive data
|
|
128
|
+
*/
|
|
129
|
+
private sanitizeContext;
|
|
130
|
+
/**
|
|
131
|
+
* Setup batch processing
|
|
132
|
+
*/
|
|
133
|
+
private setupBatchProcessing;
|
|
134
|
+
/**
|
|
135
|
+
* Flush current batch of log entries
|
|
136
|
+
*/
|
|
137
|
+
private flushBatch;
|
|
138
|
+
/**
|
|
139
|
+
* Send data with retry logic
|
|
140
|
+
*/
|
|
141
|
+
private sendWithRetry;
|
|
142
|
+
/**
|
|
143
|
+
* Sleep for specified duration
|
|
144
|
+
*/
|
|
145
|
+
private sleep;
|
|
146
|
+
/**
|
|
147
|
+
* Generate unique ID
|
|
148
|
+
*/
|
|
149
|
+
private generateId;
|
|
150
|
+
/**
|
|
151
|
+
* Generate session ID
|
|
152
|
+
*/
|
|
153
|
+
private generateSessionId;
|
|
154
|
+
/**
|
|
155
|
+
* Set user ID for tracking
|
|
156
|
+
*/
|
|
157
|
+
setUserId(userId: string): void;
|
|
158
|
+
/**
|
|
159
|
+
* Get log entries
|
|
160
|
+
*/
|
|
161
|
+
getEntries(): LogEntry[];
|
|
162
|
+
/**
|
|
163
|
+
* Get entries signal
|
|
164
|
+
*/
|
|
165
|
+
getEntriesSignal(): () => LogEntry[];
|
|
166
|
+
/**
|
|
167
|
+
* Add destination
|
|
168
|
+
*/
|
|
169
|
+
addDestination(destination: ReportDestination): void;
|
|
170
|
+
/**
|
|
171
|
+
* Remove destination
|
|
172
|
+
*/
|
|
173
|
+
removeDestination(name: string): void;
|
|
174
|
+
/**
|
|
175
|
+
* Clear all log entries
|
|
176
|
+
*/
|
|
177
|
+
clear(): void;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Error aggregator
|
|
181
|
+
*/
|
|
182
|
+
export declare class ErrorAggregator {
|
|
183
|
+
private aggregations;
|
|
184
|
+
private config;
|
|
185
|
+
private aggregationsSignal;
|
|
186
|
+
private setAggregations;
|
|
187
|
+
constructor(config?: Partial<ReportingConfig>);
|
|
188
|
+
/**
|
|
189
|
+
* Aggregate error
|
|
190
|
+
*/
|
|
191
|
+
aggregateError(error: TachUIError): void;
|
|
192
|
+
/**
|
|
193
|
+
* Generate error fingerprint for grouping
|
|
194
|
+
*/
|
|
195
|
+
private generateFingerprint;
|
|
196
|
+
/**
|
|
197
|
+
* Setup cleanup of old aggregations
|
|
198
|
+
*/
|
|
199
|
+
private setupCleanup;
|
|
200
|
+
/**
|
|
201
|
+
* Cleanup old aggregations
|
|
202
|
+
*/
|
|
203
|
+
private cleanupOldAggregations;
|
|
204
|
+
/**
|
|
205
|
+
* Get aggregations
|
|
206
|
+
*/
|
|
207
|
+
getAggregations(): ErrorAggregation[];
|
|
208
|
+
/**
|
|
209
|
+
* Get aggregations signal
|
|
210
|
+
*/
|
|
211
|
+
getAggregationsSignal(): () => ErrorAggregation[];
|
|
212
|
+
/**
|
|
213
|
+
* Get top errors by count
|
|
214
|
+
*/
|
|
215
|
+
getTopErrors(limit?: number): ErrorAggregation[];
|
|
216
|
+
/**
|
|
217
|
+
* Clear aggregations
|
|
218
|
+
*/
|
|
219
|
+
clear(): void;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Built-in report destinations
|
|
223
|
+
*/
|
|
224
|
+
export declare const reportDestinations: {
|
|
225
|
+
/**
|
|
226
|
+
* Console destination
|
|
227
|
+
*/
|
|
228
|
+
console: ReportDestination;
|
|
229
|
+
/**
|
|
230
|
+
* Local storage destination
|
|
231
|
+
*/
|
|
232
|
+
localStorage: ReportDestination;
|
|
233
|
+
/**
|
|
234
|
+
* Create HTTP destination
|
|
235
|
+
*/
|
|
236
|
+
createHttpDestination(endpoint: string, apiKey?: string): ReportDestination;
|
|
237
|
+
/**
|
|
238
|
+
* Create webhook destination
|
|
239
|
+
*/
|
|
240
|
+
createWebhookDestination(webhookUrl: string, options?: {
|
|
241
|
+
format?: "slack" | "discord" | "teams" | "generic";
|
|
242
|
+
onlyErrors?: boolean;
|
|
243
|
+
}): ReportDestination;
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* Global logger instance
|
|
247
|
+
*/
|
|
248
|
+
export declare const globalLogger: StructuredLogger;
|
|
249
|
+
/**
|
|
250
|
+
* Global error aggregator
|
|
251
|
+
*/
|
|
252
|
+
export declare const globalErrorAggregator: ErrorAggregator;
|
|
253
|
+
/**
|
|
254
|
+
* Setup error reporting integration
|
|
255
|
+
*/
|
|
256
|
+
export declare function setupErrorReporting(config?: Partial<ReportingConfig>): void;
|
|
257
|
+
/**
|
|
258
|
+
* Reporting utilities
|
|
259
|
+
*/
|
|
260
|
+
export declare const reportingUtils: {
|
|
261
|
+
/**
|
|
262
|
+
* Setup development reporting
|
|
263
|
+
*/
|
|
264
|
+
setupDevelopment(): void;
|
|
265
|
+
/**
|
|
266
|
+
* Setup production reporting
|
|
267
|
+
*/
|
|
268
|
+
setupProduction(config: {
|
|
269
|
+
endpoint?: string;
|
|
270
|
+
apiKey?: string;
|
|
271
|
+
webhookUrl?: string;
|
|
272
|
+
logLevel?: LogLevel;
|
|
273
|
+
}): void;
|
|
274
|
+
/**
|
|
275
|
+
* Create custom logger
|
|
276
|
+
*/
|
|
277
|
+
createLogger(name: string, config?: Partial<ReportingConfig>): Logger;
|
|
278
|
+
/**
|
|
279
|
+
* Get error report
|
|
280
|
+
*/
|
|
281
|
+
getErrorReport(): {
|
|
282
|
+
logs: LogEntry[];
|
|
283
|
+
aggregations: ErrorAggregation[];
|
|
284
|
+
statistics: any;
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
//# sourceMappingURL=error-reporting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-reporting.d.ts","sourceRoot":"","sources":["../../src/runtime/error-reporting.ts"],"names":[],"mappings":"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"}
|