the-benchmarker / web-frameworks

Which is the fastest web framework?
MIT License
6.91k stars 641 forks source link

fix(deps): update dependency hono to ~4.3.0 #7440

Closed renovate[bot] closed 5 days ago

renovate[bot] commented 2 weeks ago

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
hono (source) ~4.2.0 -> ~4.3.0 age adoption passing confidence

Release Notes

honojs/hono (hono) ### [`v4.3.2`](https://togithub.com/honojs/hono/releases/tag/v4.3.2) [Compare Source](https://togithub.com/honojs/hono/compare/v4.3.1...v4.3.2) #### What's Changed - fix(types): correct inferring when Method has Endponts as Union by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2610](https://togithub.com/honojs/hono/pull/2610) **Full Changelog**: https://github.com/honojs/hono/compare/v4.3.1...v4.3.2 ### [`v4.3.1`](https://togithub.com/honojs/hono/releases/tag/v4.3.1) [Compare Source](https://togithub.com/honojs/hono/compare/v4.3.0...v4.3.1) #### What's Changed - fix(types): `ToSchema` compatibility by [@​NamesMT](https://togithub.com/NamesMT) in [https://github.com/honojs/hono/pull/2605](https://togithub.com/honojs/hono/pull/2605) **Full Changelog**: https://github.com/honojs/hono/compare/v4.3.0...v4.3.1 ### [`v4.3.0`](https://togithub.com/honojs/hono/releases/tag/v4.3.0) [Compare Source](https://togithub.com/honojs/hono/compare/v4.2.9...v4.3.0) Hono v4.3.0 is now available! Let's take a look at the new features. #### Improve the RPC-mode Thanks to [@​kosei28](https://togithub.com/kosei28), [@​nakasyou](https://togithub.com/nakasyou), and [@​NamesMT](https://togithub.com/NamesMT), the RPC mode has been improved! ##### `c.text()` is typed The response of `c.text()` was just a `Response` object, not typed. ```ts const routes = app.get('/about/me', (c) => { return c.text('Me!') // the response is not typed }) ``` With this release, it will be a `TypedResponse` and you can get the type within the client created by `hc`. ```ts const client = hc('http://localhost:8787') const res = await client.about.me.$get() const text = await res.text() // text is typed as "Me!" const json = await res.json() // json is never! ``` ##### Support all JSON primitives We added the tests for the responses of `c.json()` to have the correct types and support inferring all primitives. The all tests below are passed! ```ts const app = new Hono() const route = app .get('/api/string', (c) => c.json('a-string')) .get('/api/number', (c) => c.json(37)) .get('/api/boolean', (c) => c.json(true)) .get('/api/generic', (c) => c.json(Math.random() > 0.5 ? Boolean(Math.random()) : Math.random())) type AppType = typeof route const client = hc('http://localhost') const stringFetch = await client.api.string.$get() const stringRes = await stringFetch.json() const numberFetch = await client.api.number.$get() const numberRes = await numberFetch.json() const booleanFetch = await client.api.boolean.$get() const booleanRes = await booleanFetch.json() const genericFetch = await client.api.generic.$get() const genericRes = await genericFetch.json() type stringVerify = Expect> expect(stringRes).toBe('a-string') type numberVerify = Expect> expect(numberRes).toBe(37) type booleanVerify = Expect> expect(booleanRes).toBe(true) type genericVerify = Expect> expect(typeof genericRes === 'number' || typeof genericRes === 'boolean').toBe(true) // using .text() on json endpoint should return string type textTest = Expect, ReturnType>> ``` ##### Status code type If you explicitly specify the status code, such as `200` or `404`, in `c.json()`. It will be added as a type for passing to the client. ```ts // server.ts const app = new Hono().get( '/posts', zValidator( 'query', z.object({ id: z.string() }) ), async (c) => { const { id } = c.req.valid('query') const post: Post | undefined = await getPost(id) if (post === undefined) { return c.json({ error: 'not found' }, 404) // Specify 404 } return c.json({ post }, 200) // Specify 200 } ) export type AppType = typeof app ``` You can get the data by the status code. ```ts // client.ts const client = hc('http://localhost:8787/') const res = await client.posts.$get({ query: { id: '123' } }) if (res.status === 404) { const data: { error: string } = await res.json() console.log(data.error) } if (res.ok) { const data: { post: Post } = await res.json() console.log(data.post) } // { post: Post } | { error: string } type ResponseType = InferResponseType // { post: Post } type ResponseType200 = InferResponseType ``` #### Improve compatibility with React The compatibility of `hono/jsx/dom` has been improved. Now, these React libraries work with `hono/jsx/dom`! - [react-toastify](https://togithub.com/fkhadra/react-toastify) - [spinners-react](https://togithub.com/adexin/spinners-react) - [Radix UI Primitives](https://www.radix-ui.com/primitives) The below demo is working with `hono/jsx/dom`, not React. ![Google Chrome](https://togithub.com/honojs/hono/assets/10682/b2f93c52-d1b6-40ea-b075-22c49d18a723) If you want to use React libraries with `hono/jsx/dom`, set-up `tsconfig.json` and `vite.config.ts` like the followings: `tsconfig.json`: ```json { "compilerOptions": { "paths": { "react": ["./node_modules/hono/dist/jsx/dom"], "react-dom": ["./node_modules/hono/dist/jsx/dom"] } } } ``` `vite.config.ts`: ```ts import { defineConfig } from 'vite' export default defineConfig({ resolve: { alias: { react: 'hono/jsx/dom', 'react-dom': 'hono/jsx/dom' } } }) ``` Thanks [@​usualoma](https://togithub.com/usualoma)! #### `createApp()` in Factory Helper `createApp()` method is added to Factory Helper. If you use this method with `createFactory()`, you can avoid redundancy in the definition of the `Env` type. If your application is like this, you have to set the `Env` in two places: ```ts import { createMiddleware } from 'hono/factory' type Env = { Variables: { myVar: string } } // 1. Set the `Env` to `new Hono()` const app = new Hono() // 2. Set the `Env` to `createMiddleware()` const mw = createMiddleware(async (c, next) => { await next() }) app.use(mw) ``` By using `createFactory()` and `createApp()`, you can set the Env only in one place. ```ts import { createFactory } from 'hono/factory' // ... // Set the `Env` to `createFactory()` const factory = createFactory() const app = factory.createApp() // factory also has `createMiddleware()` const mw = factory.createMiddleware(async (c, next) => { await next() }) ``` #### Deprecate `serveStatic` for Cloudflare Workers `serveStatic` exported by `hono/cloudflare-workers` has been deprecated. If you create an application which serves static asset files, use Cloudflare Pages instead. #### Other features - Cookie Helper - delete cookie returns the deleted value [https://github.com/honojs/hono/pull/2512](https://togithub.com/honojs/hono/pull/2512) - Bearer Authenticate - add `headerName` option [https://github.com/honojs/hono/pull/2514](https://togithub.com/honojs/hono/pull/2514) - JSX/DOM - preserve the state of element even if it is repeatedly evaluated by children [https://github.com/honojs/hono/pull/2563](https://togithub.com/honojs/hono/pull/2563) - Mimes utility - expose built-in MIME types [https://github.com/honojs/hono/pull/2516](https://togithub.com/honojs/hono/pull/2516) - Serve Static - expose serve-static builder [https://github.com/honojs/hono/pull/2515](https://togithub.com/honojs/hono/pull/2515) - Secure Headers - enable to set nonce in CSP [https://github.com/honojs/hono/pull/2577](https://togithub.com/honojs/hono/pull/2577) - Server-Timing - allow `crossOrigin` in TimingOptions to be a function [https://github.com/honojs/hono/pull/2359](https://togithub.com/honojs/hono/pull/2359) - Client - add `init` option [https://github.com/honojs/hono/pull/2592](https://togithub.com/honojs/hono/pull/2592) #### All Updates - fix(request): infer params in a path includes one or more optional parameter by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2576](https://togithub.com/honojs/hono/pull/2576) - feat(rpc): Add status code to response type by [@​kosei28](https://togithub.com/kosei28) in [https://github.com/honojs/hono/pull/2499](https://togithub.com/honojs/hono/pull/2499) - feat(helper/cookie): delete cookie returns the deleted value by [@​sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2512](https://togithub.com/honojs/hono/pull/2512) - feat(bearer-auth): add `headerName` option by [@​eliasbrange](https://togithub.com/eliasbrange) in [https://github.com/honojs/hono/pull/2514](https://togithub.com/honojs/hono/pull/2514) - feat(jsx/dom): improve compatibility with React by [@​usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2553](https://togithub.com/honojs/hono/pull/2553) - fix(jsx): preserve the state of element even if it is repeatedly evaluated by children by [@​usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2563](https://togithub.com/honojs/hono/pull/2563) - feat: expose built-in MIME types by [@​cometkim](https://togithub.com/cometkim) in [https://github.com/honojs/hono/pull/2516](https://togithub.com/honojs/hono/pull/2516) - feat: expose serve-static builder by [@​cometkim](https://togithub.com/cometkim) in [https://github.com/honojs/hono/pull/2515](https://togithub.com/honojs/hono/pull/2515) - feat(secure-headers): enable to set nonce in CSP by [@​usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2577](https://togithub.com/honojs/hono/pull/2577) - chore(pr_template): Use Bun instead of yarn by [@​nakasyou](https://togithub.com/nakasyou) in [https://github.com/honojs/hono/pull/2582](https://togithub.com/honojs/hono/pull/2582) - feat(cloudflare-workers): deprecate `serveStatic` by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2583](https://togithub.com/honojs/hono/pull/2583) - feat(types): improve response types flow by [@​NamesMT](https://togithub.com/NamesMT) in [https://github.com/honojs/hono/pull/2581](https://togithub.com/honojs/hono/pull/2581) - docs(readme): remove Benchmarks section by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2591](https://togithub.com/honojs/hono/pull/2591) - feat: improve `ToSchema` & `WebSocket Helper` types by [@​NamesMT](https://togithub.com/NamesMT) in [https://github.com/honojs/hono/pull/2588](https://togithub.com/honojs/hono/pull/2588) - feat(factory): add `createApp()` by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2573](https://togithub.com/honojs/hono/pull/2573) - feat(hc): add `init` option by [@​NamesMT](https://togithub.com/NamesMT) in [https://github.com/honojs/hono/pull/2592](https://togithub.com/honojs/hono/pull/2592) - feat(timing): allow crossOrigin in TimingOptions to be a function by [@​jonahsnider](https://togithub.com/jonahsnider) in [https://github.com/honojs/hono/pull/2359](https://togithub.com/honojs/hono/pull/2359) - Next by [@​yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2600](https://togithub.com/honojs/hono/pull/2600) #### New Contributors - [@​kosei28](https://togithub.com/kosei28) made their first contribution in [https://github.com/honojs/hono/pull/2499](https://togithub.com/honojs/hono/pull/2499) - [@​NamesMT](https://togithub.com/NamesMT) made their first contribution in [https://github.com/honojs/hono/pull/2581](https://togithub.com/honojs/hono/pull/2581) - [@​jonahsnider](https://togithub.com/jonahsnider) made their first contribution in [https://github.com/honojs/hono/pull/2359](https://togithub.com/honojs/hono/pull/2359) **Full Changelog**: https://github.com/honojs/hono/compare/v4.2.9...v4.3.0

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.



This PR has been generated by Mend Renovate. View repository job log here.