* ProviderSettings
()
| 450 | */ |
| 451 | |
| 452 | public getProviderSettings(): ProviderSettings { |
| 453 | const values = this.getValues() |
| 454 | |
| 455 | // Sanitize invalid/removed apiProvider values before parsing |
| 456 | // This handles cases where a user had a provider selected that was later removed |
| 457 | // from the extension (e.g., "glama"). We sanitize here to avoid repeated |
| 458 | // schema validation errors that can cause infinite loops in telemetry. |
| 459 | const sanitizedValues = this.sanitizeProviderValues(values) |
| 460 | |
| 461 | try { |
| 462 | return providerSettingsSchema.parse(sanitizedValues) |
| 463 | } catch (error) { |
| 464 | if (error instanceof ZodError) { |
| 465 | TelemetryService.instance.captureSchemaValidationError({ schemaName: "ProviderSettings", error }) |
| 466 | } |
| 467 | |
| 468 | return PROVIDER_SETTINGS_KEYS.reduce( |
| 469 | (acc, key) => ({ ...acc, [key]: sanitizedValues[key] }), |
| 470 | {} as ProviderSettings, |
| 471 | ) |
| 472 | } |
| 473 | } |
| 474 | |
| 475 | /** |
| 476 | * Sanitizes provider values by resetting unknown apiProvider values. |
no test coverage detected