Skip to content

Commit

Permalink
fix(deps): update dependency hono to v4.7.0 (#537)
Browse files Browse the repository at this point in the history
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 [@&#8203;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 [@&#8203;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 [@&#8203;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 '@&#8203;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 [@&#8203;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 [@&#8203;EdamAme-x](https://github.com/EdamAme-x) in honojs/hono#3878
-   refactor(request): `toLowerCase()` is unnecessary for `req.header()` by [@&#8203;yusukebe](https://github.com/yusukebe) in honojs/hono#3880
-   fix(helper/adapter): correct `env` type by [@&#8203;yusukebe](https://github.com/yusukebe) in honojs/hono#3885
-   chore(test): update to vitest 3 by [@&#8203;yasuaki640](https://github.com/yasuaki640) in honojs/hono#3861
-   fix(router/trie-router): fix label with trailing wildcard pattern by [@&#8203;usualoma](https://github.com/usualoma) in honojs/hono#3892
-   feat(helper/proxy): introduce proxy helper by [@&#8203;usualoma](https://github.com/usualoma) in honojs/hono#3589
-   feat(logger): include query params by [@&#8203;ryuapp](https://github.com/ryuapp) in honojs/hono#3702
-   feat(factory): Allow HonoOptions<E> with factory by [@&#8203;miyaji255](https://github.com/miyaji255) in honojs/hono#3786
-   feat: add language detector middleware and helpers by [@&#8203;lord007tn](https://github.com/lord007tn) in honojs/hono#3787
-   feat(hono/context): add buffer returns by [@&#8203;askorupskyy](https://github.com/askorupskyy) in honojs/hono#3813
-   feat(hono/jwk): JWK Auth Middleware by [@&#8203;Beyondo](https://github.com/Beyondo) in honojs/hono#3826
-   feat(etag): allow for custom hashing methods to be used to etag by [@&#8203;EdamAme-x](https://github.com/EdamAme-x) in honojs/hono#3832
-   feat(router): support greedy matches with subsequent static components. by [@&#8203;usualoma](https://github.com/usualoma) in honojs/hono#3888
-   fix(client): correct inferring empty object from`c.json({})` by [@&#8203;yusukebe](https://github.com/yusukebe) in honojs/hono#3873
-   Next by [@&#8203;yusukebe](https://github.com/yusukebe) in honojs/hono#3896
-   chore(runtime-tests): add `deno.lock` by [@&#8203;yusukebe](https://github.com/yusukebe) in honojs/hono#3897

#### New Contributors

-   [@&#8203;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
renovate authored and alexandresoro committed Feb 7, 2025
1 parent 36d9ccf commit 24a085c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
"exceljs": "4.4.0",
"fastify": "5.2.1",
"fastify-type-provider-zod": "4.0.2",
"hono": "4.6.20",
"hono": "4.7.0",
"hono-openapi": "0.4.4",
"hono-pino": "0.7.2",
"ioredis": "5.5.0",
Expand Down
44 changes: 22 additions & 22 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 24a085c

Please sign in to comment.