Skip to content

@typeofweb/schema: Lightweight validator with 100% TypeScript support and sane coercion rules.

License

Notifications You must be signed in to change notification settings

typeofweb-org/schema

Repository files navigation

@typeofweb/schema

@typeofweb/schema is a lightweight and extensible library for data validation with full TypeScript support!

All Contributors

codecov npm npm bundle size (minified + gzip) no external dependencies tree-shakeable

Docs

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Michał Miszczyszyn

💻 🚧 📆 👀

Bartłomiej Wiśniewski

💻 👀 🐛 📖

Adam Siekierski

👀

Anthony Sottile

🛡️

Marek

📖

Olzhas Alexandrov

🐛

Bartek Słysz

🐛

Mateusz Stepaniuk

🤔

Dariusz Rzepka

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!

Example

import { number, object, optional, string, validate } from '@typeofweb/schema';

const personSchema = object({
  name: string(),
  age: number(),
  email: optional(string()),
})();

const mark = {
  name: 'Mark',
  age: 29,
};

const personValidator = validate(personSchema);

// If validation is successful returns data with correct type, throws ValidationError otherwise
const validatedPerson = personValidator(mark);

Early benchmarks

Early benchmarks show some really promising performance of @typeofweb/schema when compared to other industry-leading solutions:

Platform info:
==============
   Darwin 20.3.0 x64
   Node.JS: 14.16.0
   V8: 8.4.371.19-node.18
   Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz × 8
library relative speed operations per second avg. operation time
@typeofweb/schema ref (1,934,098 rps) (avg: 0.517μs)
io-ts@2.2.13 -7.21% (1,794,594 rps) (avg: 0.557μs)
mschema@0.5.6 -69.8% (584,151 rps) (avg: 1μs)
validator.js@2.0.4 -76.16% (461,088 rps) (avg: 2μs)
validate.js@0.13.1 -89.02% (212,408 rps) (avg: 4μs)
validatorjs@3.22.1 -92.2% (150,791 rps) (avg: 6μs)
joi@17.3.0 -93.25% (130,541 rps) (avg: 7μs)
superstruct@0.13.3 -96.99% (58,197 rps) (avg: 17μs)
yup@0.32.8 -97.09% (56,243 rps) (avg: 17μs)
parambulator@1.5.2 -98.99% (19,492 rps) (avg: 51μs)
zod@1.11.11 -99.03% (18,827 rps) (avg: 53μs)

About

@typeofweb/schema: Lightweight validator with 100% TypeScript support and sane coercion rules.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Contributors 5

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy