Socket
Socket
Sign inDemoInstall

props-check

Package Overview
Dependencies
2
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    props-check

Check your props and give a helpful error if you've mis-typed.


Version published
Weekly downloads
1
Maintainers
1
Install size
690 kB
Created
Weekly downloads
 

Readme

Source

Build Status codecov Coverage Status Code Climate

props-check

Check your props and give a helpful error if you've mis-typed.

Installation

npm install props-check

Requiring the module

const PropsCheck = require('props-check')

PropsCheck

PropsCheck checks props against the spec and returns a map with list of possible corrections.

// Example spec
const spec = {
  read: 'Function'
, sanitize: '[Function]'
, validate: '[Function]'
, normalize: '[Function]'
};


// Example object
const test = {
  raed: () => null
, santize: [ () => null ]
, alvidate: [ () => null ]
, normalize: [ () => null ]
, format: [ () => null ]
};


const result = PropsCheck(spec, test);

result:

  { raed: [ 'read' ]
  , santize: [ 'sanitize' ]
  , alvidate: [ 'validate' ]
  , normalize: []
  , format: []
  }

PropsCheck returns null if spec and test have the exact same props.

PropsCheck.custom

PropsCheck.custom takes a custom comparator and returns a function that is similar to PropsCheck.

const comparator = (a, b) => a < b;

const result = PropsCheck.custom(comparator)(spec, test);

PropsCheck.human

PropsCheck.human accepts the same arguments as PropsCheck but returns a more helpful error message.

const result = PropsCheck.human(spec, test);

result:

    You gave me this:

      {
        raed: …,
        santize: …,
        alvidate: …,
        normalize: …
      }

    I wasn't expecting:

      { raed: …, santize: …, alvidate: … }

    You didn't give me:

      { read: …, sanitize: …, validate: … }

    Here's how to fix it:

      raed <-> read
      santize <-> sanitize
      alvidate <-> validate

    I have no idea what this mean:

      { format: …, }

PropsCheck.customHuman

PropsCheck.customHuman takes a custom message map and returns a function that is similar to PropsCheck.human.

const customMessages = {
  given: [ "This is what I got:", … ]
, unexpected: [ "Something is not right..", … ]
, missing: [ "I'm looking for this:", … ]
, conclusion: [ "I suggest the following changes:", … ]
, clueless: [ "I have no idea what these are:", … ]
};

const result = PropsCheck.customHuman(customMessages)(spec, test);

Custom messages will be used randomly if more than 1 message is provided in the list. If a property of the customMessages is misspelled or if a list is empty, default messages will be used instead.

Misc things

  • If you use PropsCheck.custom and provide your own comparator, make sure that the comparator accepts 2 arguments and returns either 0 on equal, 1 on similar, or -1 on mismatch.
  • All functions are curried. Meaning that the following:
PropsCheck(spec)(test);
PropsCheck.custom(comparator)(spec)(test);
PropsCheck.human(spec)(test);
PropsCheck.customHuman(customMessages)(spec)(test);

are the same as:

PropsCheck(spec, test);
PropsCheck.custom(comparator)(spec, test);
PropsCheck.human(spec, test);
PropsCheck.customHuman(customMessages)(spec, test);

Keywords

FAQs

Last updated on 29 Jul 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc