@cto.ai/ops
Version:
💻 CTO.ai - The CLI built for Teams 🚀
54 lines (53 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidServiceDomain = exports.isValidOpFullName = exports.validateOpIsJob = exports.validateCpassword = exports.validatePasswordFormat = exports.validateEmail = exports.isValidOpVersion = exports.isValidTeamName = exports.isValidOpName = exports.validServiceDomain = exports.validOpsAddArg = exports.validVersionChars = exports.validCharsTeamName = exports.validChars = void 0;
const opConfig_1 = require("../constants/opConfig");
const strings_1 = require("../constants/strings");
exports.validChars = /^[a-zA-Z0-9-_]+$/;
exports.validCharsTeamName = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/;
exports.validVersionChars = /^[\w][\w.-]{0,127}$/;
exports.validOpsAddArg = /^@[a-z0-9]+([._-][a-z0-9]+)*\/[\w\d-_]+\:*([\w.-])*$/;
exports.validServiceDomain = /^(\*\.)?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9_\-]*[a-zA-Z0-9_])\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9_\-]*[A-Za-z0-9_](\.?))$/;
const isValidOpName = (opName) => {
return typeof opName === 'string' && exports.validChars.test(opName);
};
exports.isValidOpName = isValidOpName;
const isValidTeamName = (teamName) => typeof teamName === 'string' && exports.validCharsTeamName.test(teamName);
exports.isValidTeamName = isValidTeamName;
const isValidOpVersion = (version) => {
return typeof version === 'string' && exports.validVersionChars.test(version);
};
exports.isValidOpVersion = isValidOpVersion;
// RFCC 5322 official standard to validate emails
const validateEmail = (email) => {
return /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email);
};
exports.validateEmail = validateEmail;
const validatePasswordFormat = (input) => {
if (input.length < 8)
return `❗ This password is too short, please choose a password that is at least 8 characters long`;
return true;
};
exports.validatePasswordFormat = validatePasswordFormat;
const validateCpassword = (input, answers) => {
if (input !== answers.password) {
return `❗ Password doesn't match, please try again.`;
}
return true;
};
exports.validateCpassword = validateCpassword;
const validateOpIsJob = (apiOp) => {
const isJob = apiOp.type === opConfig_1.JOB_TYPE;
const haveJobDescription = apiOp.publishDescription &&
apiOp.publishDescription.includes(strings_1.PIPELINE_PUBLISH_DESCRIPTION);
return isJob || haveJobDescription;
};
exports.validateOpIsJob = validateOpIsJob;
const isValidOpFullName = (opFullName) => {
return exports.validOpsAddArg.test(opFullName);
};
exports.isValidOpFullName = isValidOpFullName;
const isValidServiceDomain = (domain) => {
return exports.validServiceDomain.test(domain);
};
exports.isValidServiceDomain = isValidServiceDomain;