opencode icon indicating copy to clipboard operation
opencode copied to clipboard

fix(sdk): improve JSON parsing error handling with contextual messages

Open Skeptomenos opened this issue 1 month ago • 2 comments

Summary

When API responses return empty or malformed JSON (e.g., network interruption, API timeout, truncated response), the SDK now provides actionable error messages instead of cryptic SyntaxError: Unexpected end of JSON input.

Problem

The current implementation calls response.json() directly without error handling:

case "json":
  data = await response[parseAs]()  // Throws unhelpful error on malformed JSON
  break

When the API returns an incomplete response, users see:

SyntaxError: Unexpected end of JSON input
    at json (unknown)
    at <anonymous> (../sdk/js/src/v2/gen/client/client.gen.ts:167:33)

This provides no context about what went wrong or how to debug it.

Solution

Wrap response.json() in try-catch and provide enhanced error messages:

  • Include HTTP status code
  • Include request URL
  • Preserve original error as cause for debugging
  • Route errors through interceptors for custom handling

After this fix:

Error: Failed to parse JSON response: Unexpected end of JSON input. Status: 200, URL: https://api.example.com/v1/chat

Changes

  • packages/sdk/js/src/v2/gen/client/client.gen.ts - v2 client
  • packages/sdk/js/src/gen/client/client.gen.ts - v1 client

Note

These files are auto-generated by @hey-api/openapi-ts. This is a temporary fix until upstream handles JSON parsing errors gracefully. The fix will need to be reapplied after regeneration, or ideally contributed upstream to @hey-api/client-fetch.

Skeptomenos avatar Jan 10 '26 10:01 Skeptomenos

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

github-actions[bot] avatar Jan 10 '26 10:01 github-actions[bot]

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

github-actions[bot] avatar Jan 10 '26 10:01 github-actions[bot]

You can't just manually edit auto generated code, this will be deleted next time stuff is regenerated

rekram1-node avatar Jan 11 '26 03:01 rekram1-node