NodeJS version of clojure.spec
npm install speculaas
const s = require('speculaas');
const {isString} = s.utils;
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$/
s.def('emailType', s.and(isString, s => emailRegex.test(s)));
s.def('first-name', isString);
s.def('last-name', isString);
s.def('email', 'emailType');
s.def('phone', isString);
// First name, last name and email are required. Phone number is optional
s.def('person', s.keys({req: ['first-name', 'last-name', 'email'], opt: ['phone']}));
s.isValid('person',
{
'first-name': 'Elon',
'last-name': 'Musk',
'email': '[email protected]'
});
// true
Documentation is in progress.
Unit tests:
npm test
Test coverage:
npm run cover
Run ESlint:
npm run lint
Q: what kind of a silly name is speculaas?
A: nodespec and node-spec were already taken. Speculaas is a kind of a Dutch/Belgium biscuit.
Q: any alternatives for your code?
A: for an alternative look at js.spec
If you want to contribute, you are more than welcome!