Core
Validations done right.
Platform-agnostic validation library for JavaScript applications with extra focus on composable validations and message translations. Includes (pretty much) out-of-the-box support for both Redux Form and React Intl.
Create your validation schema based on priciples of functional programming.
Open Validarium in a RunKit sandbox!
This package contains all core functionalities for Validarium. ## API referencecore
This package contains all core functionalities for Validarium.
- core
- .validate
- .validateMany
- .combineValidate(...fns, values) ⇒
Object - .createValidation(fn, react, params) ⇒
Object|null
core.validate
Applies validations in descriptor for value.
Params are curried.
Sig: Object -> a -> b
| Param | Type | Description |
|---|---|---|
| descriptor | object |
Object that contains validations for each item in values |
| value | any |
Value for validation |
Example
validate({
id: [(x) => !x && 'Is required.', (x) => x < 0 && 'Must be greater than 0.'],
name: [(x) => !x && 'Is required.'],
surname: [(x) => !x && 'Is required.'],
}, {
id: -1,
surname: 'Doe',
}
])
// Output:
// {
// id: 'Must be greater than 0.',
// name: 'Is required.',
// surname: false,
// }
core.validateMany
Applies validations in descriptor for each item in values.
Params are curried.
Sig: Object -> [Object] -> [Object]
| Param | Type | Description |
|---|---|---|
| descriptor | object |
Object that contains validations for each item in values |
| values | array |
Values for validations |
Example
validateMany({
id: [(x) => !x && 'Is required.', (x) => x < 0 && 'Must be greater than 0.'],
name: [(x) => !x && 'Is required.'],
surname: [(x) => !x && 'Is required.'],
}, [
{
id: -1,
surname: 'Doe',
},
{
id: 13,
name: 'Bob',
},
])
// Output:
// [
// {
// id: 'Must be greater than 0.',
// name: 'Is required.',
// surname: false,
// }, {
// id: false,
// name: false,
// surname: 'Is required.',
// },
// ]
core.combineValidate(...fns, values) ⇒ Object
Combine multiple validate schemes into one. If multiple schemes contains same validation, then the error validation * always wins.
Returns: Object - Merged result result.
| Param | Type | Description |
|---|---|---|
| ...fns | function |
Validation functions. |
| values | any |
core.createValidation(fn, react, params) ⇒ Object | null
Creates validation function with predicate and message. Results of validation is ready for translation by react-intl. Result is valid if nil or empty is passed. Use required validation if you want to ensure that field is required.
Returns: Object | null - Message object when fails { message, messageValues } or null if pass
| Param | Type | Description |
|---|---|---|
| fn | function |
validation predicate. |
| react | String |
intl message (eg. { id: 1, defaultMessage: '' }) |
| params | Object |
for intl message (eg. { min: 1, max: 2 }) |
Example
> const hasLength = length => createValidation(hasLength(length), m.hasLength, { length })
> hasLength(6)('abcdef')
null
Related projects
- @redux-tools – Maintaining large Redux applications with ease.
- react-union – Integrate React apps into various CMSs seamlessly.
- lundium – Beautiful React component library.
License
All packages are distributed under the MIT license. See the license here.