UNPKG

balena-cli

Version:

The official balena Command Line Interface

96 lines 3.14 kB
"use strict"; 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