npm.io
1.0.3 • Published 3d ago

@minsize/rtl

Licence
MIT
Version
1.0.3
Deps
0
Size
55 kB
Vulns
0
Weekly
0

RTI

Минималистичная библиотека для runtime-валидации данных в TypeScript с выводом типов.

npm install @minsize/rti
import * as rti from "@minsize/rti"

const userSchema = rti.object({
  id: rti.pipe(rti.number(), rti.integer(), rti.positive()),
  name: rti.pipe(rti.string(), rti.trim(), rti.min(2), rti.max(50)),
  email: rti.pipe(rti.string(), rti.email()),
  createdAt: rti.date(),
})

const result = userSchema({
  id: 1,
  name: "  Alex  ",
  email: "alex@example.com",
  createdAt: "2024-01-01T00:00:00.000Z",
})

if (result.ok) {
  result.value.name
  // "Alex"

  result.value.createdAt instanceof Date
  // true
}

Возможности

  • Примитивы: string, number, bigint, boolean, date, symbol, blob, file, promise, any, unknown
  • Структуры: object, looseObject, strictObject, array, tuple, record, map, set, union
  • Object utilities: pick, omit, partial, required, merge, keyof
  • Модификаторы: optional, null, nullable, nullish, defaultValue, fallback, brand, readonly
  • Ограничения: min, max, check, instance, mimeType
  • Числа: integer, float, finite, safeInteger, positive, negative, multipleOf, nan, infinity
  • Строки: email, url, uuid, cuid1, cuid2, ulid, nanoid, hexColor, base64, creditCard, ip
  • Типы: InferInput, InferOutput, Result, Schema

Документация

Полная GitBook-документация лежит в docs/README.md.

Навигация для GitBook: SUMMARY.md.