every
import { every } from 'patronum';// orimport { every } from 'patronum/every';every({ predicate: Function, stores })
Motivation
The method calculates boolean value if each store satisfies the condition in predicate.
It is useful to check that user has correct values in each state.
Formulae
$result = every({ predicate: fn, stores });$resultwill betrueif each callpredicateon each store value fromvaluesreturnstrue, otherwise it will befalse
Arguments
predicate: (value: T) => boolean— Function to check store valuestores: Array<Store<T>>— List of stores
Return
$result: Store<boolean>—trueif each store corresponds topredicate
Example
const $width = createStore(440);const $height = createStore(780);
const $fitsSquare = every({ predicate: (size) => size < 800, stores: [$width, $height],});
console.assert(true === $fitsSquare.getState());every({ predicate: value, stores })
Motivation
This overload compares each store to specific value in predicate.
It is useful when you write combine with && very often, for example to create a pending state or a form valid flag.
Formulae
$result = every({ predicate: value, stores });$resultwill betrueif each value instoresequalsvalue, otherwise it will befalse
Arguments
predicate(T)— Data to compare stores values withstores(Array<Store<T>>)— List of stores to compare withvalue- type of
valueandstoresshould be the same
Return
$result(Store<boolean>)—trueif each store containsvalue
Example
const $isPasswordCorrect = createStore(true);const $isEmailCorrect = createStore(true);
const $isFormCorrect = every({ predicate: true, stores: [$isPasswordCorrect, $isEmailCorrect],});
console.assert(true === $isFormCorrect.getState());every({ predicate: Store, stores })
Motivation
This overload compares each store to specific value in the store predicate.
It is useful when you write combine with && very often, for example to create a pending state or a form valid flag.
Formulae
$result = every({ predicate: $value, stores });$resultwill betrueif each value instoresequals value in the$value, otherwise it will befalse
Arguments
predicate(Store<T>)— Store contains value to compare values fromstoreswithstores(Array<Store<T>>)— List of stores to compare with$valuestore- type of
valueandstoresshould be the same
Return
$result(Store<boolean>)—trueif each store contains value from thepredicatestore
Example
const $allowToCompare = createStore(true);
const $isPasswordCorrect = createStore(true);const $isEmailCorrect = createStore(true);
const $isFormCorrect = every({ predicate: $allowToCompare, stores: [$isPasswordCorrect, $isEmailCorrect],});
console.assert(true === $isFormCorrect.getState());Shorthands
$result = every(stores, value);$result = every(stores, (value) => false);$result = every(stores, $predicate);Shorthand have the same rules as the main overrides, just it uses positional arguments instead of object-form.
Arguments
stores(Array<Store<T>>)— List of stores to compare with predicate in the second argumentpredicate(Store<T> | (value: T) => boolean | T)— Predicate to compare with