Skip to content

rut-kit/zod ​

Referencia de la API de Zod para validar RUTs en formularios y APIs.

typescript
import { rutSchema, createRutSchema } from 'rut-kit/zod'

Requisito

Requiere zod como peer dependency: npm install rut-kit zod

rutSchema ​

Schema de Zod preconfigurado para validar RUTs chilenos.

typescript
const rutSchema: ZodEffects<ZodString, string, string>

Comportamiento ​

  1. Valida que no esté vacío
  2. Valida formato chileno válido (18.972.631-7, 18972631-7, 189726317)
  3. Valida el dĂ­gito verificador
  4. Retorna el RUT normalizado (sin puntos, con guiĂłn)

Ejemplo ​

typescript
rutSchema.parse('18.972.631-7')
// '18972631-7'

rutSchema.parse('189726317')
// '18972631-7'

rutSchema.safeParse('18.972.631-0')
// { success: false, error: ZodError }
// error.issues[0].message → 'Dígito verificador incorrecto'

Mensajes de error ​

CasoMensaje
VacĂ­o'RUT es requerido'
Formato inválido'Formato de RUT inválido'
DĂ­gito verificador incorrecto'DĂ­gito verificador incorrecto'

createRutSchema ​

Crea un schema personalizado con mensajes o formato de salida custom.

typescript
function createRutSchema(options?: RutSchemaOptions): ZodEffects<ZodString, string, string>

Parámetros ​

NombreTipoDescripciĂłn
optionsRutSchemaOptionsOpciones de configuraciĂłn (opcional)

RutSchemaOptions ​

OpciĂłnTipoDescripciĂłn
messagesRutErrorMessagesMensajes de error personalizados
outputFormat'formatted' | 'clean'Formato del RUT retornado

Formatos de salida ​

FormatoResultado
undefined (default)18972631-7
'formatted'18.972.631-7
'clean'189726317

Ejemplo ​

typescript
// Mensajes personalizados
const schema = createRutSchema({
  messages: {
    required: 'Ingresa tu RUT',
    invalidFormat: 'Formato incorrecto',
    invalidCheckDigit: 'DĂ­gito incorrecto'
  }
})

// Formato de salida
const displaySchema = createRutSchema({ outputFormat: 'formatted' })
displaySchema.parse('189726317')
// '18.972.631-7'

// Combinando opciones
const customSchema = createRutSchema({
  messages: { required: 'RUT requerido' },
  outputFormat: 'formatted'
})

Uso con Zod Objects ​

typescript
import { z } from 'zod'
import { rutSchema } from 'rut-kit/zod'

const userSchema = z.object({
  name: z.string().min(1),
  rut: rutSchema,
  email: z.string().email()
})

userSchema.parse({
  name: 'Juan',
  rut: '18.972.631-7',
  email: 'juan@ejemplo.cl'
})
// { name: 'Juan', rut: '18972631-7', email: 'juan@ejemplo.cl' }