balena-cli
Version:
The official balena Command Line Interface
96 lines • 3.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateEmail = validateEmail;
exports.validatePassword = validatePassword;
exports.validateApplicationName = validateApplicationName;
exports.validateIPAddress = validateIPAddress;
exports.validateDotLocalUrl = validateDotLocalUrl;
exports.validateLocalHostnameOrIp = validateLocalHostnameOrIp;
exports.validateLongUuid = validateLongUuid;
exports.validateShortUuid = validateShortUuid;
exports.validateUuid = validateUuid;
exports.looksLikeInteger = looksLikeInteger;
exports.parseAsInteger = parseAsInteger;
exports.tryAsInteger = tryAsInteger;
exports.parseAsLocalHostnameOrIp = parseAsLocalHostnameOrIp;
exports.looksLikeFleetSlug = looksLikeFleetSlug;
const errors_1 = require("../errors");
const isValidEmail = (email) => {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
};
const APPNAME_REGEX = new RegExp(/^[a-zA-Z0-9_-]+$/);
const IP_REGEX = new RegExp(/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/);
const DOTLOCAL_REGEX = new RegExp(/^([a-zA-Z0-9-]+\.)+local$/);
const UUID_REGEX = new RegExp(/^[0-9a-f]+$/);
function validateEmail(input) {
if (!isValidEmail(input)) {
return 'Email is not valid';
}
return true;
}
function validatePassword(input) {
if (input.length < 8) {
return 'Password should be 8 characters long';
}
return true;
}
function validateApplicationName(input) {
if (input.length < 4) {
return 'The fleet name should be at least 4 characters long';
}
return APPNAME_REGEX.test(input);
}
function validateIPAddress(input) {
return IP_REGEX.test(input);
}
function validateDotLocalUrl(input) {
return DOTLOCAL_REGEX.test(input);
}
function validateLocalHostnameOrIp(input) {
return validateIPAddress(input) || validateDotLocalUrl(input);
}
function validateLongUuid(input) {
if (input.length !== 32 && input.length !== 62) {
return false;
}
return UUID_REGEX.test(input);
}
function validateShortUuid(input) {
if (input.length !== 7) {
return false;
}
return UUID_REGEX.test(input);
}
function validateUuid(input) {
return validateLongUuid(input) || validateShortUuid(input);
}
function looksLikeInteger(input) {
return /^(?:0|[1-9][0-9]*)$/.test(input);
}
function parseAsInteger(input, paramName) {
if (!looksLikeInteger(input)) {
const message = paramName == null
? 'The parameter must be an integer.'
: `The parameter '${paramName}' must be an integer.`;
throw new errors_1.ExpectedError(message);
}
return Number(input);
}
function tryAsInteger(input) {
try {
return parseAsInteger(input);
}
catch (_a) {
return input;
}
}
async function parseAsLocalHostnameOrIp(input) {
if (input && !validateLocalHostnameOrIp(input)) {
throw new errors_1.ExpectedError('The parameter must be a local hostname or IP address.');
}
return input;
}
function looksLikeFleetSlug(input) {
return input.includes('/');
}
//# sourceMappingURL=validation.js.map
;