Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(deps): update dependency hono to v4.7.0 (#537)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [hono](https://hono.dev) ([source](https://github.com/honojs/hono)) | dependencies | minor | [`4.6.20` -> `4.7.0`](https://renovatebot.com/diffs/npm/hono/4.6.20/4.7.0) | --- ### Release Notes <details> <summary>honojs/hono (hono)</summary> ### [`v4.7.0`](https://github.com/honojs/hono/releases/tag/v4.7.0) [Compare Source](honojs/hono@v4.6.20...v4.7.0) ### Release Notes Hono v4.7.0 is now available! This release introduces one helper and two middleware. - Proxy Helper - Language Middleware - JWK Auth Middleware Plus, Standard Schema Validator has been born. Let's look at each of these. #### Proxy Helper We sometimes use the Hono application as a reverse proxy. In that case, it accesses the backend using `fetch`. However, it sends an unintended headers. ```ts app.all('/proxy/:path', (c) => { // Send unintended header values to the origin server return fetch(`http://${originServer}/${c.req.param('path')}`) }) ``` For example, `fetch` may send `Accept-Encoding`, causing the origin server to return a compressed response. Some runtimes automatically decode it, leading to a `Content-Length` mismatch and potential client-side errors. Also, you should probably remove some of the headers sent from the origin server, such as `Transfer-Encoding`. [Proxy Helper](https://hono.dev/docs/helpers/proxy) will send requests to the origin and handle responses properly. The above headers problem is solved simply by writing as follows. ```ts import { Hono } from 'hono' import { proxy } from 'hono/proxy' app.get('/proxy/:path', (c) => { return proxy(`http://${originServer}/${c.req.param('path')}`) }) ``` You can also use it in more complex ways. ```ts app.get('/proxy/:path', async (c) => { const res = await proxy( `http://${originServer}/${c.req.param('path')}`, { headers: { ...c.req.header(), 'X-Forwarded-For': '127.0.0.1', 'X-Forwarded-Host': c.req.header('host'), Authorization: undefined, }, } ) res.headers.delete('Set-Cookie') return res }) ``` Thanks [@​usualoma](https://github.com/usualoma)! #### Language Middleware [Language Middleware](https://hono.dev/docs/middleware/builtin/language) provides 18n functions to Hono applications. By using the `languageDetector` function, you can get the language that your application should support. ```ts import { Hono } from 'hono' import { languageDetector } from 'hono/language' const app = new Hono() app.use( languageDetector({ supportedLanguages: ['en', 'ar', 'ja'], // Must include fallback fallbackLanguage: 'en', // Required }) ) app.get('/', (c) => { const lang = c.get('language') return c.text(`Hello! Your language is ${lang}`) }) ``` You can get the target language in various ways, not just by using `Accept-Language`. - Query parameters - Cookies - `Accept-Language` header - URL path Thanks [@​lord007tn](https://github.com/lord007tn)! #### JWK Auth Middleware Finally, middleware that supports JWK (JSON Web Key) has landed. Using [JWK Auth Middleware](https://hono.dev/docs/middleware/builtin/jwk), you can authenticate by verifying JWK tokens. It can access keys fetched from the specified URL. ```ts import { Hono } from 'hono' import { jwk } from 'hono/jwk' app.use( '/auth/*', jwk({ jwks_uri: `https://${backendServer}/.well-known/jwks.json`, }) ) app.get('/auth/page', (c) => { return c.text('You are authorized') }) ``` Thanks [@​Beyondo](https://github.com/Beyondo)! #### Standard Schema Validator [Standard Schema](https://standardschema.dev/) provides a common interface for TypeScript validator libraries. [Standard Schema Validator](https://github.com/honojs/middleware/tree/main/packages/standard-validator) is a validator that uses it. This means that Standard Schema Validator can handle several validators, such as Zod, Valibot, and ArkType, with the same interface. The code below really works! ```ts import { Hono } from 'hono' import { sValidator } from '@​hono/standard-validator' import { type } from 'arktype' import * as v from 'valibot' import { z } from 'zod' const aSchema = type({ agent: 'string', }) const vSchema = v.object({ slag: v.string(), }) const zSchema = z.object({ name: z.string(), }) const app = new Hono() app.get( '/:slag', sValidator('header', aSchema), sValidator('param', vSchema), sValidator('query', zSchema), (c) => { const headerValue = c.req.valid('header') const paramValue = c.req.valid('param') const queryValue = c.req.valid('query') return c.json({ headerValue, paramValue, queryValue }) } ) const res = await app.request('/foo?name=foo', { headers: { agent: 'foo', }, }) console.log(await res.json()) ``` Thanks [@​muningis](https://github.com/muningis)! #### New features - feat(helper/proxy): introduce proxy helper honojs/hono#3589 - feat(logger): include query params honojs/hono#3702 - feat: add language detector middleware and helpers honojs/hono#3787 - feat(hono/context): add buffer returns honojs/hono#3813 - feat(hono/jwk): JWK Auth Middleware honojs/hono#3826 - feat(etag): allow for custom hashing methods to be used to etag honojs/hono#3832 - feat(router): support greedy matches with subsequent static components honojs/hono#3888 #### All changes - docs(CONTRIBUTING): remove text about `yarn` by [@​EdamAme-x](https://github.com/EdamAme-x) in honojs/hono#3878 - refactor(request): `toLowerCase()` is unnecessary for `req.header()` by [@​yusukebe](https://github.com/yusukebe) in honojs/hono#3880 - fix(helper/adapter): correct `env` type by [@​yusukebe](https://github.com/yusukebe) in honojs/hono#3885 - chore(test): update to vitest 3 by [@​yasuaki640](https://github.com/yasuaki640) in honojs/hono#3861 - fix(router/trie-router): fix label with trailing wildcard pattern by [@​usualoma](https://github.com/usualoma) in honojs/hono#3892 - feat(helper/proxy): introduce proxy helper by [@​usualoma](https://github.com/usualoma) in honojs/hono#3589 - feat(logger): include query params by [@​ryuapp](https://github.com/ryuapp) in honojs/hono#3702 - feat(factory): Allow HonoOptions<E> with factory by [@​miyaji255](https://github.com/miyaji255) in honojs/hono#3786 - feat: add language detector middleware and helpers by [@​lord007tn](https://github.com/lord007tn) in honojs/hono#3787 - feat(hono/context): add buffer returns by [@​askorupskyy](https://github.com/askorupskyy) in honojs/hono#3813 - feat(hono/jwk): JWK Auth Middleware by [@​Beyondo](https://github.com/Beyondo) in honojs/hono#3826 - feat(etag): allow for custom hashing methods to be used to etag by [@​EdamAme-x](https://github.com/EdamAme-x) in honojs/hono#3832 - feat(router): support greedy matches with subsequent static components. by [@​usualoma](https://github.com/usualoma) in honojs/hono#3888 - fix(client): correct inferring empty object from`c.json({})` by [@​yusukebe](https://github.com/yusukebe) in honojs/hono#3873 - Next by [@​yusukebe](https://github.com/yusukebe) in honojs/hono#3896 - chore(runtime-tests): add `deno.lock` by [@​yusukebe](https://github.com/yusukebe) in honojs/hono#3897 #### New Contributors - [@​lord007tn](https://github.com/lord007tn) made their first contribution in honojs/hono#3787 **Full Changelog**: honojs/hono@v4.6.20...v4.7.0 </details> --- ### 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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjIuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE2Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tristess.app/alexandresoro/ouca-backend/pulls/537 Reviewed-by: Alexandre Soro <[email protected]> Co-authored-by: renovate <[email protected]> Co-committed-by: renovate <[email protected]>
- Loading branch information