@42.nl/jarb-final-form
Version:
Validating forms through JaRB.
188 lines (187 loc) • 6.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeRequired = makeRequired;
exports.makeBooleanRequired = makeBooleanRequired;
exports.makeMinimumLength = makeMinimumLength;
exports.makeMaximumLength = makeMaximumLength;
exports.makeMinValue = makeMinValue;
exports.makeMaxValue = makeMaxValue;
exports.makeNumber = makeNumber;
exports.makeNumberFraction = makeNumberFraction;
const patterns = __importStar(require("./regex"));
const lodash_1 = require("lodash");
/* eslint-disable @typescript-eslint/no-explicit-any */
function makeRequired(label) {
return function validateRequired(value) {
if (value == null ||
value === '' ||
(typeof value === 'string' && value.trim() === '') ||
(Array.isArray(value) && value.length === 0) ||
(typeof value === 'object' &&
!(0, lodash_1.isDate)(value) &&
Object.keys(value).length === 0) ||
// Prevent users from validating boolean values by always
// considering it an error, they should use `makeBooleanRequired`
// instead.
typeof value === 'boolean') {
const error = {
type: 'ERROR_REQUIRED',
label,
value,
reasons: {
required: 'required'
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeBooleanRequired(label) {
return function validateBooleanRequired(value) {
if (value === true || value === false) {
return Promise.resolve(undefined);
}
const error = {
type: 'ERROR_REQUIRED',
label,
value,
reasons: {
required: 'required'
}
};
return Promise.resolve(error);
};
}
function makeMinimumLength(label, minimumLength) {
return function checkMinimumLength(value) {
if (value != null && value.length < minimumLength) {
const error = {
type: 'ERROR_MINIMUM_LENGTH',
label,
value,
reasons: {
minimumLength
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeMaximumLength(label, maximumLength) {
return function validateMaximumLength(value) {
if (value != null && value.length > maximumLength) {
const error = {
type: 'ERROR_MAXIMUM_LENGTH',
label,
value,
reasons: {
maximumLength
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeMinValue(label, minValue) {
return function validateMinValue(value) {
if (value != null && value < minValue) {
const error = {
type: 'ERROR_MIN_VALUE',
label,
value,
reasons: {
minValue
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeMaxValue(label, maxValue) {
return function validateMaxValue(value) {
if (value != null && value > maxValue) {
const error = {
type: 'ERROR_MAX_VALUE',
label,
value,
reasons: {
maxValue
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeNumber(label) {
const regex = patterns.numberRegex;
return function validateNumber(value) {
if (value != null && !regex.test(`${value}`)) {
const error = {
type: 'ERROR_NUMBER',
label,
value,
reasons: {
regex
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}
function makeNumberFraction(label, fractionLength, fractionalNumberRegex) {
return function validateNumberFraction(value) {
const regex = fractionalNumberRegex(fractionLength);
if (value != null && !regex.test(`${value}`)) {
const error = {
type: 'ERROR_NUMBER_FRACTION',
label,
value,
reasons: {
regex,
fractionLength
}
};
return Promise.resolve(error);
}
return Promise.resolve(undefined);
};
}