decoders
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    Decoders logo

    npm Build Status Coverage Status Minified Size

    Elegant and battle-tested validation library for type-safe input data for TypeScript and Flow.

    Motivation

    Data entering your application from the outside world should not be trusted without validation and often is of the any type, effectively disabling your type checker around input values. It's an industry good practice to validate your expectations right at your program's boundaries. This has two benefits: (1) your inputs are getting validated, and (2) you can now statically know for sure the shape of the incoming data. Decoders help solve both of these problems at once.

    Example

    import { array, iso8601, number, object, optional, string } from 'decoders';
    
    //
    // Incoming data at runtime
    //
    const externalData = {
        id: 123,
        name: 'Alison Roberts',
        createdAt: '1994-01-11T12:26:37.024Z',
        tags: ['foo', 'bar'],
    };
    
    //
    // Write the decoder (= what you expect the data to look like)
    //
    const userDecoder = object({
        id: number,
        name: string,
        createdAt: optional(iso8601),
        tags: array(string),
    });
    
    //
    // Call .verify() on the incoming data
    //
    const user = userDecoder.verify(externalData);
    //    ^^^^
    //    TypeScript can automatically infer this type now:
    //
    //    {
    //      id: number;
    //      name: string;
    //      createdAt?: Date;
    //      tags: string[];
    //    }
    //

    Documentation

    Documentation can be found on https://decoders.cc.
    (Old v1 documentation can still be found here.)

    Install

    npm i decoders

    DownloadsWeekly Downloads

    15,203

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    200 kB

    Total Files

    72

    Last publish

    Collaborators

    • nvie