Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jun 26, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@namesmt/utils-lambda ^0.1.3 -> ^0.1.4 age adoption passing confidence
@types/node (source) ^20.17.30 -> ^20.17.57 age adoption passing confidence
@vitest/coverage-v8 (source) ^3.1.1 -> ^3.1.4 age adoption passing confidence
eslint (source) ^9.24.0 -> ^9.28.0 age adoption passing confidence
hono (source) >=4.5.1 -> >=4.7.11 age adoption passing confidence
lint-staged ^15.5.1 -> ^15.5.2 age adoption passing confidence
nodemon (source) ^3.1.9 -> ^3.1.10 age adoption passing confidence
pnpm (source) 10.8.1 -> 10.11.0 age adoption passing confidence
simple-git-hooks ^2.12.1 -> ^2.13.0 age adoption passing confidence
tsx (source) ^4.19.3 -> ^4.19.4 age adoption passing confidence
vite (source) ^5.4.18 -> ^5.4.19 age adoption passing confidence
vite-plugin-inspect ^0.8.9 -> ^0.10.6 age adoption passing confidence
vitest (source) ^3.1.1 -> ^3.1.4 age adoption passing confidence

Release Notes

namesmt/utils-lambda (@​namesmt/utils-lambda)

v0.1.4

Compare Source

compare changes

🏡 Chore
🎨 Styles
❤️ Contributors
vitest-dev/vitest (@​vitest/coverage-v8)

v3.1.4

Compare Source

v3.1.3

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

v3.1.2

Compare Source

   🚀 Features
   🐞 Bug Fixes
   🏎 Performance
    View changes on GitHub
eslint/eslint (eslint)

v9.28.0

Compare Source

v9.27.0

Compare Source

v9.26.0

Compare Source

v9.25.1

Compare Source

v9.25.0

Compare Source

honojs/hono (hono)

v4.7.11

Compare Source

v4.7.10

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.7.9...v4.7.10

v4.7.9

Compare Source

What's Changed
New Contributors

Full Changelog: honojs/hono@v4.7.8...v4.7.9

v4.7.8

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.7...v4.7.8

v4.7.7

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.6...v4.7.7

v4.7.6

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.5...v4.7.6

v4.7.5

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.4...v4.7.5

v4.7.4

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.7.3...v4.7.4

v4.7.3

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.2...v4.7.3

v4.7.2

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.7.1...v4.7.2

v4.7.1

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.7.0...v4.7.1

v4.7.0

Compare Source

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.

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 will send requests to the origin and handle responses properly. The above headers problem is solved simply by writing as follows.

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.

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!

Language Middleware

Language Middleware provides 18n functions to Hono applications. By using the languageDetector function, you can get the language that your application should support.

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!

JWK Auth Middleware

Finally, middleware that supports JWK (JSON Web Key) has landed. Using JWK Auth Middleware, you can authenticate by verifying JWK tokens. It can access keys fetched from the specified URL.

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!

Standard Schema Validator

Standard Schema provides a common interface for TypeScript validator libraries. Standard Schema 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!

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!

New features

All changes

New Contributors

Full Changelog: honojs/hono@v4.6.20...v4.7.0

v4.6.20

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.6.19...v4.6.20

v4.6.19

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.6.18...v4.6.19

v4.6.18

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.6.17...v4.6.18

v4.6.17

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.6.16...v4.6.17

v4.6.16

Compare Source

What's Changed

Full Changelog: honojs/hono@v4.6.15...v4.6.16

v4.6.15

Compare Source

c.json() etc. throwing type error when the status is contentless code, e.g., 204

From this release, when c.json(), c.text(), or c.html() returns content, specifying a contentless status code such as 204 will now throw a type error.

CleanShot 2024-12-28 at 16 47 39@​2x

At first glance, this seems like a breaking change but not. It is not possible to return a contentless response with c.json() or c.text(). So, in that case, please use c.body().

app.get('/', (c) => {
  return c.body(null, 204)
})

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.6.14...v4.6.15

v4.6.14

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.6.13...v4.6.14

v4.6.13

Compare Source

What's Changed

New Contributors

Full Changelog: honojs/hono@v4.6.12...v4.6.13

v4.6.12

Compare Source

What's Changed
New Contributors

Full Changelog: honojs/hono@v4.6.11...v4.6.12

v4.6.11

Compare Source

What's Changed

Configuration

📅 Schedule: Branch creation - "after 2am and before 3am" (UTC), Automerge - "after 1am and before 2am" (UTC).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/all-minor-patch branch 9 times, most recently from b26ccf6 to d4cbb28 Compare July 3, 2024 14:04
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 10 times, most recently from db3e001 to bd9a4ac Compare July 11, 2024 13:58
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 9 times, most recently from c27bfc0 to f73765b Compare July 19, 2024 15:03
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from bd3c30a to ae642dd Compare July 20, 2024 18:45
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 9 times, most recently from 57881b3 to ffd5a55 Compare May 9, 2025 08:03
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 6 times, most recently from 135f28d to 21357f0 Compare May 19, 2025 20:45
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 1c90e00 to 859c0af Compare May 27, 2025 19:44
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 6 times, most recently from 1d89db0 to 3d72a25 Compare May 30, 2025 21:20
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 3d72a25 to 47de4c6 Compare May 31, 2025 21:14
@renovate renovate bot changed the title chore(deps): update all non-major dependencies chore(deps): update all non-major dependencies - autoclosed Jun 1, 2025
@renovate renovate bot closed this Jun 1, 2025
@renovate renovate bot deleted the renovate/all-minor-patch branch June 1, 2025 10:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant