szhabolcs
szhabolcs
HHono
Created by szhabolcs on 6/6/2024 in #help
c.json() does not enforce OpenAPI return type
Hello there! I'm playing around Hono and RPC, and it works great, but for some reason the return type of the handler function is not enforced by the OpenAPI spec that is provided to it. I have searched on github issues and in here, but did not find anyone with the same problem. It might just be that it's not possible at the moment to do this automatically, but rather I have to type the c.json<ReturnType, 200>() myself Here's a demo: https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgYygUwIYzQJQgV2wBo4AvEgeTDQDsBBABQEkAJCGiOAXzgDMoIIOAHIAAgAt2EAPSkIAEwC0EajQxhgwgNwAoUJFiI445Nz4ChwyR2nIANsFoxhOncnYBneAMJoAImi8wDTAMMDscAC8KOhYuATYABQIOnBpcCBoMJLyAFwikF7CcBgeKJ4wRKnpYFji+cLS6ADmwF5oUMJV6XDoAI74aF75KT09AEYKAJ4j1WNj7jTYS7Pza+nC6mAOyFjhNNIAVh7swqvrF2keyOJoIBj5pAB0EOOHaMgwyXOXv-geHTUmUeTy8UGCzUSAEoniBgokAKxQ7q-VG1DweADu0DyZFBMHBNEhMLhNESAA4oT9UT0uFSaekuNS1kz1qzGSi0ugPJAaACPOd5gAmAAMIsFF0WyxgEtRmzA22AuzC7COJxoZ0QzIZ11u9xBr3en2+DMuMAgAGtaCCwRDodqaXSHWznRzXWl5ENUMAwCqaA0AMr4ZDIIYeXj4Ox2Ka9NCtdroeRPFxszljAAsIoAnCM4J7ruDffsGgBVAFQEp2WLyGNoAAebRgHmT3DTPQRYtz+e9RfYpZo9eonzQ8jgHQEFYgIfwiZb7LSTLpujcFRKCqicAHmLgVFojFYUntPReqnUwESPmwASCIT9JESyChUQAfFr1tJpHAVLQz7GYDOaDgGApmoOA2k3CB4HGNAIRQW5kCtUdbnQB0PzAuBsUjUcHCtIDxHA80-wAkpAPHaA4Gg3Z-jQMDnDKDh4GyGiPAwTISjKJjYx5TwaM9G9Qn2B10H-KBAOQJ5jnYZIIJlEROOA0CMEmAA3NBii4EhRRFKFdFpHTXB0BSaLoBUABUQJo6IjIgXg1zAXRFi8FAHCcDcTAAHhMsBzOoZ9EisGAYDAXIPzsKcMDsSRhnJAB2WLpGEKkVz5bwhl5AENwwTEMFCZzHCWJ4WkbDongAEkKL4kEk-0jGo0TWLQBpqK6OB0SxHEGja9TuH04BbIvNKeJeC0n1GdJHPgeQsAwTLsty7l0rQCT1WhXT0jQnoAD0AH4fjQqaYBm8CME+fAIujIxzStGrbSJbg9s-cZCDw3jpqI0SRzA+jIJ0LggA Here's a quick snippet:
// definition
200: { content: { 'application/json': {
schema: z.object({ token: z.string() })
}
},
},
// usage
.openapi(routeDefinition, (c) => {
// openapi return type is not being checked here
// i would like this to return an error because it's not the same as the response definition
return c.json({ not: 'the type above' }, 200);
});
// definition
200: { content: { 'application/json': {
schema: z.object({ token: z.string() })
}
},
},
// usage
.openapi(routeDefinition, (c) => {
// openapi return type is not being checked here
// i would like this to return an error because it's not the same as the response definition
return c.json({ not: 'the type above' }, 200);
});
8 replies