Options
All
  • Public
  • Public/Protected
  • All
Menu

predicat - v1.1.2

Predicat

A cute library to create, combine, and enjoy common predicates. 🐱

Maintenance Build status Coverage Code quality Dependencies

Npm version Package size License Documentation Changelog

Installation

Using NPM

$ npm install predicat

Or Yarn

$ yarn add predicat

Or directly to the HTML page right before the closing tag:

<!-- ... other HTML ... -->
<script src="https://unpkg.com/predicat/umd/predicat.js" crossorigin></script> <!-- When deploying, use predicat.min.js -->
</body>

Usage

Available Predicates and Type-Guards

See the detailed documentation here.

Create your own predicate

// In JavaScript
const hasStock = ({ stock }) => stock > 0;

// In TypeScript
const hasStock = ({ stock }: { stock: number }): boolean => stock > 0;

// In TypeScript, you may use the Predicate type for better readability
import { Predicate } from 'predicat';

const hasStock: Predicate<{ stock: number }> = ({ stock }) => stock > 0;

Combine predicates

import { allOf, isNill, not, some } from 'predicat';

const hasStock: Predicate<{ stock: number }> = ({ stock }) => stock > 0;
const myCombinedPredicate: Predicate<{ stock: number }> = allOf(
not(isNill),
hasStock,
);

myCombinedPredicate(undefined); // false
myCombinedPredicate(null); // false
myCombinedPredicate({}); // false
myCombinedPredicate({ stock: 0 }); // false
myCombinedPredicate({ stock: 42 }); // true

// You can also use booleans with combination operators every/allOf and some/oneOf
const myOtherCombinedPredicate: Predicate<void> = some(
false,
() => myGlobalVar < 100,
);

License

Predicat is public domain software. See LICENSE for more details.

Contribute

Please submit a Pull Request! 😺

Commit

# git add, then use
$ yarn commit

Tag and publish

# Merge in master
$ git checkout master && git pull
$ yarn release # Updates package.json, the changelog and creates an annotated git tag
$ git push --follow-tags origin master
# CircleCI will test, build, then publish the new version to NPM and deploy the documentation to the 'gh-pages' branch

Generated using TypeDoc