Releases: cloudflare/chanfana
Releases · cloudflare/chanfana
v2.0.2
Library Revamp
- Rename library from itty-router-openapi to chanfana
- Refactor everything to separate routing from openapi logic
- Added support for Hono
Breaking Changes:
- removed
OpenAPIRouter()
method - removed
aiPlugin
option - removed
skipValidation
option (see new validation method bellow) itty-router
is no longer a dependency and users must manually add it to their project- validated data is no longer send in the last argument of the handler function (see new validation method bellow)
- Endpoint's
schema
is no longer a static variable - Endpoint's
schema.parameters
was renamed toschema.request
to follow zod-to-openapi structure - Endpoint
Path
parameters are now calledparams
to match the validated Data object name - Endpoint's
schema.requestBody
was renamed toschema.request.body
to follow zod-to-openapi structure - Validation no longer occurs before the endpoint's
handle
function is called, developers must manually call thegetValidatedData
to execute the data validation step- Tip: you can wrap this function call with
try {} catch (e) {}
to handle input errors, otherwise this library will return the errors in a Json response with http 400
- Tip: you can wrap this function call with
Additions:
- new
await this.getValidatedData<typeof this.schema>()
method to retrieve all validated data, when sending<typeof this.schema>
in the generic the returned value will have full typescript inference based on the schema - automatically coerce all headers, query and params inputs based on specified zod type
- new
fromIttyRouter()
instantiate method - new
fromHono()
instantiate method
Migration Guide: https://chanfana.pages.dev/user-guide/migrating-from-itty-router-openapi/
Full Changelog: v1.1.1...v2.0.2
v1.1.1
v1.1.0
What's Changed
Now you can get full type hint and type check on the data
argument of every endpoint, learn more here!
export class TaskFetch extends OpenAPIRoute {
static schema = {
parameters: {
taskSlug: Path(Str, {
description: 'Task slug',
}),
},
}
async handle(request: Request, env: any, context: any, data: DataOf<typeof TaskFetch.schema>) {
// full type hint for query, path, header, and request body parameters!
data.params.taskSlug
// ...
}
}
Full Changelog: v1.0.14...v1.1.0
v1.0.14
v1.0.13
1.0.13
What's Changed
- Add support for defining multiple content types in responses
- Add support for defining headers in responses
Full Changelog: v1.0.12...1.0.13
v1.0.12
v1.0.11
v1.0.10
What's Changed
- Fix all parameters not being detected in non openapi routes
Full Changelog: v1.0.9...v1.0.10
v1.0.9
What's Changed
- Add option to define custom base router
- Fix path parameters not working when using nested routers
Full Changelog: v1.0.8...v1.0.9