UNPKG

@govuk-pay/pay-js-commons

Version:

Reusable js scripts for GOV.UK Pay Node.js projects

72 lines (69 loc) 2.39 kB
'use strict'; // NPM dependencies var parseInt = require('lodash/parseInt'); // Local dependencies var emailValidator = require('./is-valid-email'); // Constants var NUMBERS_ONLY = /^\d+$/; var MAX_AMOUNT = 100000; var validationErrors = { required: 'This field cannot be blank', currency: 'Choose an amount in pounds and pence using digits and a decimal point. For example “10.50”', phoneNumber: 'Must be a 11 digit phone number', validEmail: 'Please use a valid email address', isHttps: 'URL must begin with https://', isAboveMaxAmount: "Choose an amount under \xA3".concat(MAX_AMOUNT.toLocaleString()), isPasswordLessThanTenChars: 'Choose a Password of 10 characters or longer', isGreaterThanMaxLengthChars: 'The text is too long', invalidCharacters: 'You cannot use any of the following characters < > ; : ` ( ) " \' = | , ~ [ ]' }; exports.isEmpty = function (value) { if (value === '') { return validationErrors.required; } return false; }; exports.isCurrency = function (value) { if (!/^(\d+)(?:\.(\d{1,2}))?$/.test(value)) { return validationErrors.currency; } return false; }; exports.isValidEmail = function (value) { if (!emailValidator(value)) { return validationErrors.validEmail; } return false; }; exports.isPhoneNumber = function (value) { var trimmedTelephoneNumber = value.replace(/\s/g, ''); if (trimmedTelephoneNumber.length < 11 || !NUMBERS_ONLY.test(trimmedTelephoneNumber)) { return validationErrors.phoneNumber; } return false; }; exports.isHttps = function (value) { if (value.substr(0, 8) !== 'https://') { return validationErrors.isHttps; } return false; }; exports.isAboveMaxAmount = function (value) { if (!exports.isCurrency(value) && parseFloat(value) > MAX_AMOUNT) { return validationErrors.isAboveMaxAmount; } return false; }; exports.isFieldGreaterThanMaxLengthChars = function (value, maxLength) { var parsedMaxLength = parseInt(maxLength); return parsedMaxLength && value.length > parsedMaxLength ? validationErrors.isGreaterThanMaxLengthChars : false; }; exports.isPasswordLessThanTenChars = function (value) { return !value || value.length < 10 ? validationErrors.isPasswordLessThanTenChars : false; }; exports.isNaxsiSafe = function (value) { if (/[<>;:`()"=|,~[\]]+/g.test(value)) { return validationErrors.invalidCharacters; } return false; };