honojs-middleware/packages/effect-validator
Jonathan Haines 9235709060
refactor: composite build (#1230)
* refactor: composite build

* chore(ua-blocker): move demo.ts out of src
2025-06-16 11:23:47 +09:00
..
src chore: format codes (#1142) 2025-04-27 19:28:24 +09:00
CHANGELOG.md Version Packages (#863) 2024-12-02 11:03:37 +09:00
README.md chore: add coverage badges (#1023) 2025-03-19 17:53:11 +09:00
package.json build: typescript project references (#1077) 2025-04-02 18:28:02 +09:00
tsconfig.build.json refactor: composite build (#1230) 2025-06-16 11:23:47 +09:00
tsconfig.json refactor: composite build (#1230) 2025-06-16 11:23:47 +09:00
tsconfig.spec.json feat(eslint-config): enable linting with type information (#1098) 2025-04-07 19:31:09 +09:00
vitest.config.ts test(workspace): upgrade to vitest v3 (#1009) 2025-03-12 12:52:15 +09:00

README.md

Effect Schema Validator Middleware for Hono

codecov

This package provides a validator middleware using Effect Schema for Hono applications. With this middleware, you can define schemas using Effect Schema and validate incoming data in your Hono routes.

Why Effect Schema?

Effect Schema offers several advantages over other validation libraries:

  1. Bidirectional transformations: Effect Schema can both decode and encode data.
  2. Integration with Effect: It inherits benefits from the Effect ecosystem, such as dependency tracking in transformations.
  3. Highly customizable: Users can attach meta-information through annotations.
  4. Functional programming style: Uses combinators and transformations for schema definition.

Usage

import { Hono } from 'hono'
import { Schema as S } from '@effect/schema'
import { effectValidator } from '@hono/effect-validator'

const app = new Hono()

const User = S.Struct({
  name: S.String,
  age: S.Number,
})

app.post('/user', effectValidator('json', User), (c) => {
  const user = c.req.valid('json')

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

API

effectValidator(target, schema)

  • target: The target of validation ('json', 'form', 'query', etc.)
  • schema: An Effect Schema schema

Author

Günther Brunner https://github.com/gunta

License

MIT