Browse Source

fix(02-01): add null check for search results to prevent crash

Add defensive null checks before calling .map() on data.results
in both the API route and provider implementation. Returns empty
array with success:true when results is undefined, preventing
"Cannot read properties of undefined (reading 'map')" crash.

Fixes: UAT-001 from 02-01-ISSUES.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 6 months ago
parent
commit
be490bbcd7
  1. 16
      src/app/api/providers/replicate/models/route.ts
  2. 10
      src/lib/providers/replicate.ts

16
src/app/api/providers/replicate/models/route.ts

@ -186,9 +186,25 @@ export async function GET(
if (isSearchRequest) {
const data: ReplicateSearchResponse = await response.json();
// Defensive null check - search API may return different structure
if (!data.results) {
console.log(`[Replicate:${requestId}] Search returned no results array`);
return NextResponse.json<ModelsSuccessResponse>({
success: true,
models: [],
});
}
models = data.results.map((result) => mapToProviderModel(result.model));
} else {
const data: ReplicateModelsResponse = await response.json();
// Defensive null check for list endpoint as well
if (!data.results) {
console.log(`[Replicate:${requestId}] List returned no results array`);
return NextResponse.json<ModelsSuccessResponse>({
success: true,
models: [],
});
}
models = data.results.map(mapToProviderModel);
}

10
src/lib/providers/replicate.ts

@ -161,6 +161,11 @@ const replicateProvider: ProviderInterface = {
}
const data: ReplicateModelsResponse = await response.json();
// Defensive null check - API may return different structure
if (!data.results) {
console.warn("[Replicate] List returned no results array");
return [];
}
return data.results.map(mapToProviderModel);
} catch (error) {
console.error("[Replicate] Failed to list models:", error);
@ -190,6 +195,11 @@ const replicateProvider: ProviderInterface = {
}
const data: ReplicateSearchResponse = await response.json();
// Defensive null check - search API may return different structure
if (!data.results) {
console.warn("[Replicate] Search returned no results array");
return [];
}
return data.results.map((result) => mapToProviderModel(result.model));
} catch (error) {
console.error("[Replicate] Failed to search models:", error);

Loading…
Cancel
Save