Giter Site home page Giter Site logo

fastidious's Introduction

fastidious

Very small Javascript library to validate objects, similar to prop-types.

usage

import { getErrors, validate } from "./fastidious.js";

getErrors({ value: true }, { value: validate.boolean }); // []

const schema = {
  match: validate.oneOf([validate.string, validate.function(), validate.regex]).isRequired
};

getErrors({}, schema); // [ 'Error: Expected "config.match" to be oneOf: [string,function,regex]' ]

getErrors({ match: "test" }, schema); // []

Validator API

validate.boolean
validate.string
validate.number
validate.function([argNames])
validate.regex
validate.value(expectedValue)
validate.shape(schema)
validate.arrayOf(validator)
validate.oneOf([validators]))

Advanced schema example

Used in Finicky to validate config file

const schema = {
  defaultBrowser: validate.string.isRequired,
  options: validate.shape({
    hideIcon: validate.boolean,
    urlShorteners: validate.arrayOf(validate.string)
  }),
  rewrite: validate.arrayOf(
    validate.shape({
      match: validate.oneOf([validate.string, validate.function("options"), validate.regex])
        .isRequired,
      url: validate.oneOf([validate.string, validate.function("options")]).isRequired
    }).isRequired
  ),
  handlers: validate.arrayOf(
    validate.shape({
      match: validate.oneOf([
        validate.string,
        validate.function("options"),
        validate.regex,
        validate.arrayOf(
          validate.oneOf([validate.string, validate.function("options"), validate.regex])
        )
      ]).isRequired,
      browser: validate.oneOf([
        validate.string,
        validate.shape({
          name: validate.string.isRequired,
          type: validate.oneOf(["name", "bundleIdentifier"]).isRequired
        })
      ]).isRequired
    })
  )
};

Credits

Icon made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.