Skip to content

Repository files navigation

@typeofweb/schema

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

All Contributors

codecovnpmnpm bundle size (minified + gzip)no external dependenciestree-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';constpersonSchema=object({name: string(),age: number(),email: optional(string()),})();constmark={name: 'Mark',age: 29,};constpersonValidator=validate(personSchema);// If validation is successful returns data with correct type, throws ValidationError otherwiseconstvalidatedPerson=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
libraryrelative speedoperations per secondavg. operation time
@typeofweb/schemaref(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

Code of conduct

Stars

137 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages