Nocturnal Pajama Mutants

    @typeofweb/schema
    TypeScript icon, indicating that this package has built-in type declarations

    0.7.3 • Public • Published

    @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

    👉 schema.typeofweb.com 👈

    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

    🤔

    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)

    👉 schema.typeofweb.com 👈

    Install

    npm i @typeofweb/schema

    DownloadsWeekly Downloads

    106

    Version

    0.7.3

    License

    MIT

    Unpacked Size

    105 kB

    Total Files

    62

    Last publish

    Collaborators

    • mmiszy