New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

h3-typebox

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

h3-typebox

JSON schema validation for h3, using typebox & ajv

latest
Source
npmnpm
Version
0.6.0
Version published
Weekly downloads
122
-47.86%
Maintainers
1
Weekly downloads
 
Created
Source

h3-typebox

npm version npm downloads Github Actions Codecov

JSON schema validation for h3, using typebox & ajv.

Install

# Using npm
npm install h3-typebox

# Using yarn
yarn install h3-typebox

# Using pnpm
pnpm install h3-typebox

Usage

import { createServer } from 'http'
import { createApp } from 'h3'
import { validateBody, validateQuery, Type } from 'h3-typebox'

const app = createApp()
app.use('/', async (event) => {
  // Validate body
  const body = await validateBody(event, Type.Object({
    optional: Type.Optional(Type.String()),
    required: Type.Boolean(),
  }))

  // Validate query
  const query = validateQuery(event, Type.Object({
    required: Type.String(),
  }))
})

createServer(app).listen(process.env.PORT || 3000)

See how to define your schema with Type on TypeBox documentation.

Options

You can define a options object on validateBody or validateQuery. Currently the following options are supported:

  • includeAjvFormats: Boolean

includeAjvFormats

Some formats like date, date-time or email are specified in the current JSONSchema draft, but not included in ajv by default, but provided by the ajv-formats package. If one of these formats is needed, you can specify includeAjvFormats: true in the options of validateBody or validateQuery like this:

// Body
validateBody(event, schema, { includeAjvFormats: true })

// Query
validateQuery(event, schema, { includeAjvFormats: true })

Currently, only the following extended formats are supported for performance and security reasons:

  • date-time
  • time
  • date
  • email
  • uri
  • uri-reference

These can be used by custom schemas with the Type.Unsafe method or with an inline schema:

const bodySchema = Type.Object({
  optional: Type.Optional(Type.String()),
  dateTime: Type.String({ format: 'date-time' })
})
validateBody(event, bodySchema, { includeAjvFormats: true })

Development 💻

  • Clone this repository
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with 💙

Published under MIT License.

FAQs

Package last updated on 22 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts