Skip to content

Conversation

@Avaq
Copy link

@Avaq Avaq commented Oct 23, 2025

Type

  • Refactor
  • Feature
  • Bug Fix
  • Optimization
  • Documentation Update

Description

This allows users to customise how HttpApiDecodeErrors are represented on the wire, enabling the use of HttpApi for wire protocols that don't follow the Tagged Error approach to encoding errors.

Related

This allows users to customize how HttpApiDecodeErrors are represented
on the wire, enabling the use of HttpApi for wire protocols that don't
follow the Tagged Error approach to encoding errors.
@Avaq Avaq requested a review from tim-smart as a code owner October 23, 2025 15:33
@github-project-automation github-project-automation bot moved this to Discussion Ongoing in PR Backlog Oct 23, 2025
@changeset-bot
Copy link

changeset-bot bot commented Oct 23, 2025

⚠️ No Changeset found

Latest commit: 1dda206

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@gcanti
Copy link
Contributor

gcanti commented Nov 3, 2025

I'm not sure this will work as intended, in handlerToRoute within HttpApiBuilder.ts there's a HttpApiDecodeError.refailParseError, which makes me think the error logic is fixed

@Avaq
Copy link
Author

Avaq commented Nov 3, 2025

@gcanti yes -- it converts ParseError to HttpApiDecodeError. But at a later point, the (now overridable) schema is used to encode that HttpApiDecodeError for the wire. So no matter the origin of the HttpApiDecodeError, the schema is still going to work, as far as I understand it.

At least in my limited testing, it worked for both the OpenApi output and the encoding of Decode Errors.

@gcanti
Copy link
Contributor

gcanti commented Nov 5, 2025

I see, I'll let @tim-smart chime in then

@Avaq
Copy link
Author

Avaq commented Nov 5, 2025

I initially worked on a version where the user-supplied type of the encoded HttpApiDecodeError was threaded as a generic type through the HttpApp, but eventually found that this wasn't necessary.

And the user supplied schema doesn't even need to be lossless, it's fine to "encode" every HttpApiDecodeError to the value 42 and just have a decoder that always fails, as long as there's a schema for 42 added with addError. That way the HttpClient will be able to decode the weirdly encoded errors by just failing over to the schema that's able to decode it, as with any Union decoder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Discussion Ongoing

Development

Successfully merging this pull request may close these issues.

Customizing HttpApiDecodeError responses

2 participants