Skip to main content
Home

Built and signed on GitHub Actions

The validator middleware using conform for Hono applications. This middleware allows you to validate submitted FormValue and making better use of Hono RPC.

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
This package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
76%
Published
2 weeks ago (1.0.0)

Conform validator middleware for Hono

codecov

The validator middleware using conform for Hono applications. This middleware allows you to validate submitted FormValue and making better use of Hono RPC.

Usage

Zod:

import { z } from 'zod'
import { parseWithZod } from '@conform-to/zod'
import { conformValidator } from '@hono/conform-validator'
import { HTTPException } from 'hono/http-exception'

const schema = z.object({
  name: z.string(),
  age: z.string(),
})

app.post(
  '/author',
  conformValidator((formData) => parseWithZod(formData, { schema })),
  (c) => {
    const submission = c.req.valid('form')
    const data = submission.value

    return c.json({ success: true, message: `${data.name} is ${data.age}` })
  }
)

Yup:

import { object, string } from 'yup'
import { parseWithYup } from '@conform-to/yup'
import { conformValidator } from '@hono/conform-validator'
import { HTTPException } from 'hono/http-exception'

const schema = object({
  name: string(),
  age: string(),
})

app.post(
  '/author',
  conformValidator((formData) => parseWithYup(formData, { schema })),
  (c) => {
    const submission = c.req.valid('form')
    const data = submission.value
    return c.json({ success: true, message: `${data.name} is ${data.age}` })
  }
)

Valibot:

import { object, string } from 'valibot'
import { parseWithValibot } from '@conform-to/valibot'
import { conformValidator } from '@hono/conform-validator'
import { HTTPException } from 'hono/http-exception'

const schema = object({
  name: string(),
  age: string(),
})

app.post(
  '/author',
  conformValidator((formData) => parseWithYup(formData, { schema })),
  (c) => {
    const submission = c.req.valid('form')
    const data = submission.value
    return c.json({ success: true, message: `${data.name} is ${data.age}` })
  }
)

Custom Hook Option

By default, conformValidator() returns a SubmissionResult when a validation error occurs. If you wish to change this behavior, or if you wish to perform common processing, you can modify the response by passing a function as the second argument.

app.post(
  '/author',
  conformValidator(
    (formData) => parseWithYup(formData, { schema })
    (submission, c) => {
      if(submission.status !== 'success') {
        return c.json({ success: false, message: 'Bad Request' }, 400)
      }
    }
  ),
  (c) => {
    const submission = c.req.valid('form')
    const data = submission.value
    return c.json({ success: true, message: `${data.name} is ${data.age}` })
  }
)
Note

if a response is returned by the Hook function, subsequent middleware or handler functions will not be executed. see more.

Author

uttk https://github.com/uttk

License

MIT

Built and signed on
GitHub Actions

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";
or

Import directly with a jsr specifier

import * as conform_validator from "jsr:@hono/conform-validator";

Add Package

pnpm i jsr:@hono/conform-validator
or (using pnpm 10.8 or older)
pnpm dlx jsr add @hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";

Add Package

yarn add jsr:@hono/conform-validator
or (using Yarn 4.8 or older)
yarn dlx jsr add @hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";

Add Package

vlt install jsr:@hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";

Add Package

npx jsr add @hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";

Add Package

bunx jsr add @hono/conform-validator

Import symbol

import * as conform_validator from "@hono/conform-validator";