Align API error envelopes
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-18 02:04:31 +02:00
parent 694913a280
commit 7adcdd76c7
8 changed files with 160 additions and 16 deletions
+4 -3
View File
@@ -19,9 +19,10 @@ export class ApiHttpError extends Error {
async function parseResponse<T>(response: Response): Promise<T> {
const payload = await response.json().catch(() => ({}));
if (!response.ok) {
const code = payload?.error?.code ?? "REQUEST_ERROR";
const message = payload?.error?.message ?? `Request failed (${response.status})`;
const details = payload?.error?.details;
const legacyError = typeof payload?.error === "object" && payload?.error !== null ? payload.error : null;
const code = typeof payload?.error === "string" ? payload.error : legacyError?.code ?? "REQUEST_ERROR";
const message = payload?.message ?? legacyError?.message ?? `Request failed (${response.status})`;
const details = payload?.details ?? legacyError?.details;
throw new ApiHttpError(message, code, details);
}
return payload.data as T;