honojs-middleware/packages/effect-validator
github-actions[bot] 17659346dd
Version Packages (#863)
2024-12-02 11:03:37 +09:00
..
src feat(effect-validator): support `effect@3.10.0` (#859) 2024-12-02 10:56:10 +09:00
test feat(effect-validator): support `effect@3.10.0` (#859) 2024-12-02 10:56:10 +09:00
CHANGELOG.md Version Packages (#863) 2024-12-02 11:03:37 +09:00
README.md feat: Add Effect Schema validator (#589) 2024-07-11 23:46:31 +09:00
package.json Version Packages (#863) 2024-12-02 11:03:37 +09:00
tsconfig.json feat: Add Effect Schema validator (#589) 2024-07-11 23:46:31 +09:00
vitest.config.ts feat: Add Effect Schema validator (#589) 2024-07-11 23:46:31 +09:00

README.md

Effect Schema Validator Middleware for Hono

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