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 =
PropsCheck
PropsCheck checks props against the spec and returns a map with list of possible corrections.
// Example specconst spec = read: 'Function' sanitize: '[Function]' validate: '[Function]' normalize: '[Function]'; // Example objectconst test = null santize: null alvidate: null normalize: null format: null ; const result = ;
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; const result = PropsCheckspec test;
PropsCheck.human
PropsCheck.human
accepts the same arguments as PropsCheck but returns a more helpful error message.
const result = PropsCheck;
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 = PropsCheckspec 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 either0
on equal,1
on similar, or-1
on mismatch. - All functions are curried. Meaning that the following:
test;PropsCheckspectest;PropsChecktest;PropsCheckspectest;
are the same as:
;PropsCheckspec test;PropsCheck;PropsCheckspec test;