cloudflare / chanfana

OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more!
https://chanfana.pages.dev
MIT License
341 stars 42 forks source link

OpenAPI router unsafe assignment with `fromHono` #183

Open kylecarhart opened 3 weeks ago

kylecarhart commented 3 weeks ago

I am getting a typescript error when trying to use fromHono().

Unsafe assignment of an `any` value.eslint[@typescript-eslint/no-unsafe-assignment](https://typescript-eslint.io/rules/no-unsafe-assignment)

I took a look at the types and saw this:

// src/adapters/hono.ts
export function fromHono<M>(
  router: M,
  options?: RouterOptions
): M & OpenAPIRouterType<M> & any {
  const openapiRouter = new HonoOpenAPIHandler(router, options)

  return new Proxy(router, {
    // ...
  }
}

Whats the reasoning for the any at the end of the return type? Same thing for fromIttyRouter as well... I'd have to disable a bunch of eslint rules for this file to get it working, but then I am losing all my type safety that I had before v2.

alexanderatallah commented 3 weeks ago

Seeing this as well - seems like a bug?

louisgv commented 3 weeks ago

It's been an issue since 2.0.0:

image

The older package's typing (itty-router-openapi) seems a bit more strict :-?

G4brym commented 3 weeks ago

Hey there, I've just published a new release (v2.1.0) that removes the any from the adapters, can you confirm the issue is fixed?

louisgv commented 3 weeks ago

@G4brym - it seems the middleware registration typing is still wrong, I can't register middleware:

image
louisgv commented 3 weeks ago

The typing when grabbing the API for hono test is wrong with the testClient helper:

image image
kylecarhart commented 2 weeks ago

Honestly, I just went ahead and migrated away from itty-router and went straight to Hono with Zod OpenAPI Hono. Was able to reuse a lot of our existing code, just had to change the class based routes to the Hono way; no longer depending on Chanfana.