0.0.6 • Published 12 months ago

to-av v0.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

to-av

? to async-validator rules.

Currently only support zod schemas.

Support features:

FeaturesParse ToSupport
z.stringtype: 'string'
z.numbertype: 'number'
z.arraytype: 'array'
z.booleantype: 'boolean'
z.datetype: 'date'
z.optionalrequired: false
z.objecttype: 'object' with deep rules
z.minmin: number
z.maxmax: number

More examples, see test cases

Usage

1. Basic

import { parse } from 'to-av'
import { z } from 'zod'

const rules = parse(z.object({
  name: z.string(),
  age: z.number().optional(),
}))

parsed to

const rules = {
  age: [
    {
      required: false,
    },
    {
      type: 'number',
    },
  ],
  name: [
    {
      required: true,
    },
    {
      type: 'string',
    },
  ],
}

2. Deep rules

const rule = z.object({
  bar: z.number(),
  foo: z.object({
    bar: z.string(),
  }),
})

parsed to

const rule = {
  bar: [
    {
      required: true,
    },
    {
      type: 'number',
    },
  ],
  foo: [
    {
      required: true,
    },
    {
      fields: {
        bar: [
          {
            required: true,
          },
          {
            type: 'string',
          },
        ],
      },
      type: 'object',
    },
  ],
}

3. Custom message

3.1 required

const rules = z.object({
  name: z.string({
    required_error: 'name 必填',
  }),
  age: z.number({
    required_error: 'age 必填',
  }),
})

parsed to

const rules = {
  age: [
    {
      message: 'age 必填',
      required: true,
    },
    {
      type: 'number',
    },
  ],
  name: [
    {
      message: 'name 必填',
      required: true,
    },
    {
      type: 'string',
    },
  ],
}

4. range

const rule = z.object({
  name: z.string().min(2).max(10),
  age: z.number().min(18).max(100),
})

parsed to

const rule = {
  age: [
    {
      required: true,
    },
    {
      type: 'number',
    },
    {
      max: 100,
      min: 18,
    },
  ],
  name: [
    {
      required: true,
    },
    {
      type: 'string',
    },
    {
      max: 10,
      min: 2,
    },
  ],
}

Installation

pnpm i to-av

License

MIT

0.0.6

12 months ago

0.0.5

12 months ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago