Missing codes in the errors union
Description
It seems that the library generated error types and returns only the first error code instead of the union for the other types. When we have declared other error codes for 401 and 404, only 401 is returned.
Reproduction
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["CatFact"];
};
};
/** @description error 401 */
401: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorUnauthorized"];
};
};
/** @description error 403 */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorForbidden"];
};
};
/** @description not found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["Error"];
};
};
Full schema: https://pastebin.com/aBhmzfE2
As far as I can see, the errors are sorted in ascending order and only the first one is taken into account, the others are omitted.
Expected result
Union of all errors 401, 403, 403...
Checklist
- [ ] I’m willing to open a PR (see CONTRIBUTING.md)
This looks like a intentional solution. 🤔
/**
* Return first 5XX or 4XX response (in that order) from a Response Object Map
*/
export type ErrorResponse<T, Media extends MediaType = MediaType> = FilterKeys<
This also bit me (first time user) when I have 200, 404, 500 responses, each with a different body schema. For unit testing a 404, I was wondering why the error type returned from the function matched the 500 schema.
Surely it would make more sense to union the error schemas (as suggested by this issue)?
This issue appears to be a duplicate of #1723 in which there is more discussion and some proposed approaches to resolving the problem.