node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

speculaas

Build Status Quality Gate Coverage Status Known Vulnerabilities npm version Join the chat at https://gitter.im/speculaas/Lobby

Speculaas

NodeJS version of clojure.spec

Installation

npm install speculaas

Example

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': 'elon@example.com'
});
// true 

Usage

Documentation is in progress.

Tests

Unit tests:

npm test

Test coverage:

npm run cover

Run ESlint:

npm run lint

FAQ

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

Contributing

If you want to contribute, you are more than welcome!