@roxybrowser/openapi 1.0.5-beta.1 → 1.0.8
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 +222 -228
- package/lib/index.js +97 -1674
- package/lib/index.js.map +1 -1
- package/lib/modules/account.d.ts +491 -0
- package/lib/modules/account.d.ts.map +1 -0
- package/lib/modules/account.js +442 -0
- package/lib/modules/account.js.map +1 -0
- package/lib/modules/browser.d.ts +3011 -0
- package/lib/modules/browser.d.ts.map +1 -0
- package/lib/modules/browser.js +1501 -0
- package/lib/modules/browser.js.map +1 -0
- package/lib/modules/other.d.ts +102 -0
- package/lib/modules/other.d.ts.map +1 -0
- package/lib/modules/other.js +194 -0
- package/lib/modules/other.js.map +1 -0
- package/lib/modules/proxy.d.ts +576 -0
- package/lib/modules/proxy.d.ts.map +1 -0
- package/lib/modules/proxy.js +724 -0
- package/lib/modules/proxy.js.map +1 -0
- package/lib/types.d.ts +860 -155
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +4 -4
- package/lib/types.js.map +1 -1
- package/lib/utils/index.d.ts +24 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +45 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +50 -50
- package/lib/browser/browser-creator.d.ts +0 -54
- package/lib/browser/browser-creator.d.ts.map +0 -1
- package/lib/browser/browser-creator.js +0 -263
- package/lib/browser/browser-creator.js.map +0 -1
- package/lib/proxy/proxy-manager.d.ts +0 -67
- package/lib/proxy/proxy-manager.d.ts.map +0 -1
- package/lib/proxy/proxy-manager.js +0 -278
- package/lib/proxy/proxy-manager.js.map +0 -1
- package/lib/proxy/proxy-validator.d.ts +0 -66
- package/lib/proxy/proxy-validator.d.ts.map +0 -1
- package/lib/proxy/proxy-validator.js +0 -273
- package/lib/proxy/proxy-validator.js.map +0 -1
- package/lib/roxy-client.d.ts +0 -117
- package/lib/roxy-client.d.ts.map +0 -1
- package/lib/roxy-client.js +0 -467
- package/lib/roxy-client.js.map +0 -1
- package/lib/utils/error-analyzer.d.ts +0 -84
- package/lib/utils/error-analyzer.d.ts.map +0 -1
- package/lib/utils/error-analyzer.js +0 -387
- package/lib/utils/error-analyzer.js.map +0 -1
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error Analysis Utility
|
|
3
|
-
*
|
|
4
|
-
* Provides intelligent error analysis, categorization, and troubleshooting guidance
|
|
5
|
-
*/
|
|
6
|
-
import { RoxyApiError, ROXY_ERROR_MAP, NETWORK_ERROR_PATTERNS, ConfigError, BrowserCreationError, } from '../types.js';
|
|
7
|
-
export class ErrorAnalyzer {
|
|
8
|
-
/**
|
|
9
|
-
* Analyze a single error and provide detailed insights
|
|
10
|
-
*/
|
|
11
|
-
static analyzeError(error) {
|
|
12
|
-
if (error instanceof RoxyApiError) {
|
|
13
|
-
return this.analyzeRoxyApiError(error);
|
|
14
|
-
}
|
|
15
|
-
if (error instanceof ConfigError) {
|
|
16
|
-
return this.analyzeConfigError(error);
|
|
17
|
-
}
|
|
18
|
-
if (error instanceof BrowserCreationError) {
|
|
19
|
-
return this.analyzeBrowserCreationError(error);
|
|
20
|
-
}
|
|
21
|
-
// Generic error analysis
|
|
22
|
-
return this.analyzeGenericError(error);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Analyze RoxyBrowser API errors
|
|
26
|
-
*/
|
|
27
|
-
static analyzeRoxyApiError(error) {
|
|
28
|
-
const baseResult = {
|
|
29
|
-
category: error.category,
|
|
30
|
-
severity: error.severity,
|
|
31
|
-
description: error.errorInfo?.description || error.message,
|
|
32
|
-
chineseDescription: error.errorInfo?.chineseMsg || '未知错误',
|
|
33
|
-
troubleshooting: error.getTroubleshootingSteps(),
|
|
34
|
-
retryable: error.isRetryable(),
|
|
35
|
-
suggestedActions: [],
|
|
36
|
-
relatedErrors: [],
|
|
37
|
-
};
|
|
38
|
-
if (error.isRetryable()) {
|
|
39
|
-
baseResult.retryStrategy = error.getRetryStrategy();
|
|
40
|
-
}
|
|
41
|
-
// Add specific suggestions based on error type
|
|
42
|
-
baseResult.suggestedActions = this.generateSuggestedActions(error);
|
|
43
|
-
baseResult.relatedErrors = this.findRelatedErrors(error.code);
|
|
44
|
-
return baseResult;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Analyze configuration errors
|
|
48
|
-
*/
|
|
49
|
-
static analyzeConfigError(error) {
|
|
50
|
-
return {
|
|
51
|
-
category: 'configuration',
|
|
52
|
-
severity: 'high',
|
|
53
|
-
description: 'Configuration error - invalid or missing settings',
|
|
54
|
-
chineseDescription: '配置错误 - 配置无效或缺失',
|
|
55
|
-
troubleshooting: [
|
|
56
|
-
'Check environment variables (ROXY_API_KEY, ROXY_API_HOST)',
|
|
57
|
-
'Verify RoxyBrowser application settings',
|
|
58
|
-
'Ensure all required configuration is provided',
|
|
59
|
-
'Check configuration file syntax and format',
|
|
60
|
-
],
|
|
61
|
-
retryable: false,
|
|
62
|
-
suggestedActions: [
|
|
63
|
-
'Review configuration setup',
|
|
64
|
-
'Check environment variable spelling',
|
|
65
|
-
'Restart application after fixing configuration',
|
|
66
|
-
],
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Analyze browser creation errors
|
|
71
|
-
*/
|
|
72
|
-
static analyzeBrowserCreationError(error) {
|
|
73
|
-
const hasPartialResults = error.partialResults && error.partialResults.length > 0;
|
|
74
|
-
return {
|
|
75
|
-
category: 'browser',
|
|
76
|
-
severity: hasPartialResults ? 'medium' : 'high',
|
|
77
|
-
description: 'Browser creation failed - configuration or resource issue',
|
|
78
|
-
chineseDescription: '浏览器创建失败 - 配置或资源问题',
|
|
79
|
-
troubleshooting: [
|
|
80
|
-
'Verify workspace and project IDs exist',
|
|
81
|
-
'Check browser configuration parameters',
|
|
82
|
-
'Ensure sufficient system resources',
|
|
83
|
-
'Validate proxy settings if used',
|
|
84
|
-
'Check for conflicting browser instances',
|
|
85
|
-
],
|
|
86
|
-
retryable: true,
|
|
87
|
-
retryStrategy: {
|
|
88
|
-
shouldRetry: true,
|
|
89
|
-
delayMs: 2000,
|
|
90
|
-
maxRetries: 2,
|
|
91
|
-
},
|
|
92
|
-
suggestedActions: hasPartialResults ? [
|
|
93
|
-
'Retry with failed configurations only',
|
|
94
|
-
'Reduce batch size',
|
|
95
|
-
'Check specific error details for each failure',
|
|
96
|
-
] : [
|
|
97
|
-
'Validate all configuration parameters',
|
|
98
|
-
'Check system resources',
|
|
99
|
-
'Try creating browsers one at a time',
|
|
100
|
-
],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Analyze generic errors
|
|
105
|
-
*/
|
|
106
|
-
static analyzeGenericError(error) {
|
|
107
|
-
// Check for network error patterns
|
|
108
|
-
const networkPattern = NETWORK_ERROR_PATTERNS.find(pattern => pattern.pattern.test(error.message));
|
|
109
|
-
if (networkPattern) {
|
|
110
|
-
return {
|
|
111
|
-
category: 'network',
|
|
112
|
-
severity: 'high',
|
|
113
|
-
description: networkPattern.description,
|
|
114
|
-
chineseDescription: '网络连接错误',
|
|
115
|
-
troubleshooting: networkPattern.troubleshooting,
|
|
116
|
-
retryable: true,
|
|
117
|
-
retryStrategy: {
|
|
118
|
-
shouldRetry: true,
|
|
119
|
-
delayMs: 3000,
|
|
120
|
-
maxRetries: 3,
|
|
121
|
-
},
|
|
122
|
-
suggestedActions: [
|
|
123
|
-
'Check network connectivity',
|
|
124
|
-
'Verify service availability',
|
|
125
|
-
'Try again after a brief wait',
|
|
126
|
-
],
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
category: 'unknown',
|
|
131
|
-
severity: 'medium',
|
|
132
|
-
description: error.message || 'Unknown error occurred',
|
|
133
|
-
chineseDescription: '未知错误',
|
|
134
|
-
troubleshooting: [
|
|
135
|
-
'Check application logs for more details',
|
|
136
|
-
'Verify system status',
|
|
137
|
-
'Try the operation again',
|
|
138
|
-
],
|
|
139
|
-
retryable: true,
|
|
140
|
-
retryStrategy: {
|
|
141
|
-
shouldRetry: true,
|
|
142
|
-
delayMs: 1000,
|
|
143
|
-
maxRetries: 1,
|
|
144
|
-
},
|
|
145
|
-
suggestedActions: [
|
|
146
|
-
'Review error message for clues',
|
|
147
|
-
'Check system resources',
|
|
148
|
-
'Contact support if issue persists',
|
|
149
|
-
],
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Generate context-specific suggested actions
|
|
154
|
-
*/
|
|
155
|
-
static generateSuggestedActions(error) {
|
|
156
|
-
const actions = [];
|
|
157
|
-
switch (error.code) {
|
|
158
|
-
case 401:
|
|
159
|
-
actions.push('Copy API key from RoxyBrowser settings', 'Set ROXY_API_KEY environment variable', 'Restart the MCP server');
|
|
160
|
-
break;
|
|
161
|
-
case 404:
|
|
162
|
-
actions.push('Use roxy_list_workspaces to find valid workspace IDs', 'Use roxy_list_browsers to find valid browser IDs', 'Check if resources were deleted');
|
|
163
|
-
break;
|
|
164
|
-
case 409:
|
|
165
|
-
// Check if it's quota error
|
|
166
|
-
if (error.message.includes('额度不足') || error.message.includes('quota')) {
|
|
167
|
-
actions.push('打开 RoxyBrowser 应用 / Open RoxyBrowser app', '前往费用中心 / Go to Billing Center', '购买或升级窗口套餐 / Purchase or upgrade profiles plan', '等待充值生效后重试创建 / Retry creation after quota is added');
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
// Profile conflict case
|
|
171
|
-
actions.push('Close conflicting profile instances', 'Use roxy_close_browsers tool', 'Wait a moment and try again');
|
|
172
|
-
}
|
|
173
|
-
break;
|
|
174
|
-
case 500:
|
|
175
|
-
actions.push('Check RoxyBrowser application status', 'Restart RoxyBrowser if needed', 'Check system resources');
|
|
176
|
-
break;
|
|
177
|
-
case 408:
|
|
178
|
-
case 504:
|
|
179
|
-
actions.push('Increase timeout settings', 'Reduce batch operation size', 'Check network connectivity');
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
return actions;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Find related error codes that might have similar causes
|
|
186
|
-
*/
|
|
187
|
-
static findRelatedErrors(errorCode) {
|
|
188
|
-
const related = [];
|
|
189
|
-
// Group related errors
|
|
190
|
-
const authErrors = [401, 403];
|
|
191
|
-
const networkErrors = [408, 502, 503, 504];
|
|
192
|
-
const resourceErrors = [404, 409];
|
|
193
|
-
if (authErrors.includes(errorCode)) {
|
|
194
|
-
related.push(...authErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
|
|
195
|
-
}
|
|
196
|
-
else if (networkErrors.includes(errorCode)) {
|
|
197
|
-
related.push(...networkErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
|
|
198
|
-
}
|
|
199
|
-
else if (resourceErrors.includes(errorCode)) {
|
|
200
|
-
related.push(...resourceErrors.filter(code => code !== errorCode).map(code => `Error ${code}`));
|
|
201
|
-
}
|
|
202
|
-
return related;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Analyze multiple errors to find patterns and provide batch insights
|
|
206
|
-
*/
|
|
207
|
-
static analyzeBatchErrors(errors) {
|
|
208
|
-
const analysis = {
|
|
209
|
-
totalErrors: errors.length,
|
|
210
|
-
errorsByCategory: {},
|
|
211
|
-
errorsBySeverity: {},
|
|
212
|
-
commonPatterns: [],
|
|
213
|
-
recommendations: [],
|
|
214
|
-
retryableCount: 0,
|
|
215
|
-
criticalCount: 0,
|
|
216
|
-
};
|
|
217
|
-
const errorMessages = [];
|
|
218
|
-
const errorCodes = [];
|
|
219
|
-
// Analyze each error
|
|
220
|
-
for (const error of errors) {
|
|
221
|
-
const result = this.analyzeError(error);
|
|
222
|
-
// Count by category
|
|
223
|
-
analysis.errorsByCategory[result.category] = (analysis.errorsByCategory[result.category] || 0) + 1;
|
|
224
|
-
// Count by severity
|
|
225
|
-
analysis.errorsBySeverity[result.severity] = (analysis.errorsBySeverity[result.severity] || 0) + 1;
|
|
226
|
-
// Track retryable and critical errors
|
|
227
|
-
if (result.retryable)
|
|
228
|
-
analysis.retryableCount++;
|
|
229
|
-
if (result.severity === 'critical')
|
|
230
|
-
analysis.criticalCount++;
|
|
231
|
-
errorMessages.push(error.message);
|
|
232
|
-
if (error instanceof RoxyApiError) {
|
|
233
|
-
errorCodes.push(error.code);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
// Find common patterns
|
|
237
|
-
analysis.commonPatterns = this.findCommonPatterns(errorMessages, errorCodes);
|
|
238
|
-
// Generate recommendations
|
|
239
|
-
analysis.recommendations = this.generateBatchRecommendations(analysis);
|
|
240
|
-
return analysis;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Find common patterns in error messages and codes
|
|
244
|
-
*/
|
|
245
|
-
static findCommonPatterns(messages, codes) {
|
|
246
|
-
const patterns = [];
|
|
247
|
-
// Count error codes
|
|
248
|
-
const codeCount = {};
|
|
249
|
-
const codeMessages = {};
|
|
250
|
-
codes.forEach((code, index) => {
|
|
251
|
-
codeCount[code] = (codeCount[code] || 0) + 1;
|
|
252
|
-
if (!codeMessages[code])
|
|
253
|
-
codeMessages[code] = [];
|
|
254
|
-
codeMessages[code].push(messages[index]);
|
|
255
|
-
});
|
|
256
|
-
// Add significant error code patterns
|
|
257
|
-
Object.entries(codeCount).forEach(([code, count]) => {
|
|
258
|
-
if (count >= 2) {
|
|
259
|
-
const errorInfo = ROXY_ERROR_MAP[parseInt(code)];
|
|
260
|
-
patterns.push({
|
|
261
|
-
pattern: errorInfo ? `${errorInfo.name} (${code})` : `Error Code ${code}`,
|
|
262
|
-
count,
|
|
263
|
-
affectedItems: codeMessages[parseInt(code)].slice(0, 3), // Show first 3 examples
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
// Look for common message patterns
|
|
268
|
-
const commonKeywords = ['timeout', 'connection', 'authentication', 'not found', 'conflict'];
|
|
269
|
-
commonKeywords.forEach(keyword => {
|
|
270
|
-
const matchingMessages = messages.filter(msg => msg.toLowerCase().includes(keyword.toLowerCase()));
|
|
271
|
-
if (matchingMessages.length >= 2) {
|
|
272
|
-
patterns.push({
|
|
273
|
-
pattern: `Messages containing "${keyword}"`,
|
|
274
|
-
count: matchingMessages.length,
|
|
275
|
-
affectedItems: matchingMessages.slice(0, 3),
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
return patterns.sort((a, b) => b.count - a.count);
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Generate batch-level recommendations
|
|
283
|
-
*/
|
|
284
|
-
static generateBatchRecommendations(analysis) {
|
|
285
|
-
const recommendations = [];
|
|
286
|
-
// Critical errors
|
|
287
|
-
if (analysis.criticalCount > 0) {
|
|
288
|
-
recommendations.push('🚨 Critical errors detected - immediate attention required');
|
|
289
|
-
}
|
|
290
|
-
// Authentication issues
|
|
291
|
-
if (analysis.errorsByCategory.authentication > 0) {
|
|
292
|
-
recommendations.push('🔑 Authentication issues detected - check API key and permissions');
|
|
293
|
-
}
|
|
294
|
-
// Network issues
|
|
295
|
-
if (analysis.errorsByCategory.network > 0) {
|
|
296
|
-
recommendations.push('🌐 Network issues detected - check connectivity and proxy settings');
|
|
297
|
-
}
|
|
298
|
-
// High retry rate
|
|
299
|
-
if (analysis.retryableCount > analysis.totalErrors * 0.7) {
|
|
300
|
-
recommendations.push('🔄 Many errors are retryable - consider implementing automatic retry');
|
|
301
|
-
}
|
|
302
|
-
// Browser conflicts
|
|
303
|
-
if (analysis.errorsByCategory.browser > 0) {
|
|
304
|
-
recommendations.push('🖥️ Browser-related issues detected - check resource availability and conflicts');
|
|
305
|
-
}
|
|
306
|
-
// Configuration issues
|
|
307
|
-
if (analysis.errorsByCategory.configuration > 0) {
|
|
308
|
-
recommendations.push('⚙️ Configuration issues detected - review settings and parameters');
|
|
309
|
-
}
|
|
310
|
-
return recommendations;
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Format error analysis for display to user/AI
|
|
314
|
-
*/
|
|
315
|
-
static formatErrorForDisplay(error) {
|
|
316
|
-
const analysis = this.analyzeError(error);
|
|
317
|
-
let formatted = `## 错误分析 / Error Analysis\n\n`;
|
|
318
|
-
formatted += `**错误类型 / Category**: ${analysis.category}\n`;
|
|
319
|
-
formatted += `**严重程度 / Severity**: ${analysis.severity}\n`;
|
|
320
|
-
formatted += `**描述 / Description**: ${analysis.description}\n`;
|
|
321
|
-
formatted += `**中文说明**: ${analysis.chineseDescription}\n\n`;
|
|
322
|
-
if (analysis.troubleshooting.length > 0) {
|
|
323
|
-
formatted += `### 故障排除步骤 / Troubleshooting Steps\n`;
|
|
324
|
-
analysis.troubleshooting.forEach((step, index) => {
|
|
325
|
-
formatted += `${index + 1}. ${step}\n`;
|
|
326
|
-
});
|
|
327
|
-
formatted += '\n';
|
|
328
|
-
}
|
|
329
|
-
if (analysis.suggestedActions.length > 0) {
|
|
330
|
-
formatted += `### 建议操作 / Suggested Actions\n`;
|
|
331
|
-
analysis.suggestedActions.forEach((action, index) => {
|
|
332
|
-
formatted += `${index + 1}. ${action}\n`;
|
|
333
|
-
});
|
|
334
|
-
formatted += '\n';
|
|
335
|
-
}
|
|
336
|
-
if (analysis.retryable && analysis.retryStrategy) {
|
|
337
|
-
formatted += `### 重试策略 / Retry Strategy\n`;
|
|
338
|
-
formatted += `- **可重试 / Retryable**: ✅ Yes\n`;
|
|
339
|
-
formatted += `- **延迟 / Delay**: ${analysis.retryStrategy.delayMs}ms\n`;
|
|
340
|
-
formatted += `- **最大重试次数 / Max Retries**: ${analysis.retryStrategy.maxRetries}\n\n`;
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
formatted += `### 重试策略 / Retry Strategy\n`;
|
|
344
|
-
formatted += `- **可重试 / Retryable**: ❌ No\n\n`;
|
|
345
|
-
}
|
|
346
|
-
if (analysis.relatedErrors && analysis.relatedErrors.length > 0) {
|
|
347
|
-
formatted += `### 相关错误 / Related Errors\n`;
|
|
348
|
-
formatted += `${analysis.relatedErrors.join(', ')}\n\n`;
|
|
349
|
-
}
|
|
350
|
-
return formatted;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Format batch analysis for display
|
|
354
|
-
*/
|
|
355
|
-
static formatBatchAnalysisForDisplay(analysis) {
|
|
356
|
-
let formatted = `## 批量错误分析 / Batch Error Analysis\n\n`;
|
|
357
|
-
formatted += `**总错误数 / Total Errors**: ${analysis.totalErrors}\n`;
|
|
358
|
-
formatted += `**可重试错误 / Retryable Errors**: ${analysis.retryableCount}\n`;
|
|
359
|
-
formatted += `**严重错误 / Critical Errors**: ${analysis.criticalCount}\n\n`;
|
|
360
|
-
if (Object.keys(analysis.errorsByCategory).length > 0) {
|
|
361
|
-
formatted += `### 错误分类统计 / Error Categories\n`;
|
|
362
|
-
Object.entries(analysis.errorsByCategory).forEach(([category, count]) => {
|
|
363
|
-
formatted += `- **${category}**: ${count}\n`;
|
|
364
|
-
});
|
|
365
|
-
formatted += '\n';
|
|
366
|
-
}
|
|
367
|
-
if (analysis.commonPatterns.length > 0) {
|
|
368
|
-
formatted += `### 常见错误模式 / Common Patterns\n`;
|
|
369
|
-
analysis.commonPatterns.forEach((pattern, index) => {
|
|
370
|
-
formatted += `${index + 1}. **${pattern.pattern}** (${pattern.count} occurrences)\n`;
|
|
371
|
-
if (pattern.affectedItems.length > 0) {
|
|
372
|
-
formatted += ` Examples: ${pattern.affectedItems.slice(0, 2).join(', ')}\n`;
|
|
373
|
-
}
|
|
374
|
-
});
|
|
375
|
-
formatted += '\n';
|
|
376
|
-
}
|
|
377
|
-
if (analysis.recommendations.length > 0) {
|
|
378
|
-
formatted += `### 建议 / Recommendations\n`;
|
|
379
|
-
analysis.recommendations.forEach((rec, index) => {
|
|
380
|
-
formatted += `${index + 1}. ${rec}\n`;
|
|
381
|
-
});
|
|
382
|
-
formatted += '\n';
|
|
383
|
-
}
|
|
384
|
-
return formatted;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
//# sourceMappingURL=error-analyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-analyzer.js","sourceRoot":"","sources":["../../src/utils/error-analyzer.ts"],"names":[],"mappings":"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"}
|