You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
839 B
JavaScript
31 lines
839 B
JavaScript
4 years ago
|
"use strict";
|
||
|
|
||
|
const { validateValue } = require("@validatem/core");
|
||
|
const ValidationError = require("@validatem/error");
|
||
|
const ignoreResult = require("./");
|
||
|
|
||
|
// Imagine that this function is in a separate validator module
|
||
|
function parseNumber(value) {
|
||
|
let parsed = parseFloat(value);
|
||
|
|
||
|
if (Number.isNaN(parsed)) {
|
||
|
throw new ValidationError(`Must be a number`);
|
||
|
} else {
|
||
|
return parsed;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let rules = [ parseNumber ];
|
||
|
|
||
|
let resultA = validateValue("42", rules);
|
||
|
console.log(resultA, typeof resultA); // 42 'number'
|
||
|
|
||
|
let resultB = validateValue("42", ignoreResult(rules));
|
||
|
console.log(resultB, typeof resultB); // 42 string
|
||
|
|
||
|
// Validation errors still work as normal:
|
||
|
let resultC = validateValue("foo", ignoreResult(rules)); /*
|
||
|
AggregrateValidationError: One or more validation errors occurred:
|
||
|
- At (root): Must be a number
|
||
|
*/
|