argumental
Version:
Framework for building CLI apps with Node.js
78 lines • 10.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BuiltInValidators = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
class BuiltInValidators {
constructor() {
/** Checks if the value is string (cannot be converted into a number or boolean). */
this.STRING = (value, name, arg) => {
if (typeof value !== 'string' || ['true', 'false'].includes(value.trim().toLowerCase()) || value.trim().match(/^\d+(\.\d+)?$/))
throw new Error(`Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be string.`);
};
/** Checks if the value is number or can be converted to number. Casts the value to number if passed. */
this.NUMBER = (value, name, arg) => {
if ((typeof value !== 'number' && typeof value !== 'string') || (typeof value === 'string' && !value.trim().match(/^\d+(\.\d+)?$/)))
throw new Error(`Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be a number.`);
return typeof value === 'string' ? +value.trim() : value;
};
/** Checks if the value is boolean or can be converted to boolean (accepts 'true' and 'false' for conversion). Casts the value to boolean if passed. */
this.BOOLEAN = (value, name, arg) => {
if ((typeof value !== 'boolean' && typeof value !== 'string') || (typeof value === 'string' && !['true', 'false'].includes(value.toLowerCase().trim())))
throw new Error(`Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be boolean.`);
return typeof value === 'string' ? (value.toLowerCase().trim() === 'true') : value;
};
/** Checks if all values of the array are strings (cannot be converted into numbers or booleans).
* <strong>Should be used on rest arguments only</strong>.
*/
this.STRINGS = (value, name, arg) => {
const errorMessage = `Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be multiple strings.`;
if (!value || typeof value !== 'object' || value.constructor !== Array)
throw new Error(errorMessage);
for (const v of value) {
if (typeof v !== 'string' || ['true', 'false'].includes(v.trim().toLowerCase()) || v.trim().match(/^\d+(\.\d+)?$/))
throw new Error(errorMessage);
}
};
/** Checks if all values of the array are numbers or can be converted to number. Casts all values to number if passed.
* <strong>Should be used on rest arguments only</strong>.
*/
this.NUMBERS = (value, name, arg) => {
const errorMessage = `Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be multiple numbers.`;
if (!value || typeof value !== 'object' || value.constructor !== Array)
throw new Error(errorMessage);
for (const v of value) {
if ((typeof v !== 'number' && typeof v !== 'string') || (typeof v === 'string' && !v.trim().match(/^\d+(\.\d+)?$/)))
throw new Error(errorMessage);
}
return value.map(v => typeof v === 'string' ? +v.trim() : v);
};
/** Checks if all values of the array are booleans or can be converted to booleans (accepts 'true' and 'false' for conversion). Casts all values to boolean if passed.
* <strong>Should be used on rest arguments only</strong>.
*/
this.BOOLEANS = (value, name, arg) => {
const errorMessage = `Invalid value for ${arg ? 'argument' : 'option'} ${name}!\n Value must be multiple booleans.`;
if (!value || typeof value !== 'object' || value.constructor !== Array)
throw new Error(errorMessage);
for (const v of value) {
if ((typeof v !== 'boolean' && typeof v !== 'string') || (typeof v === 'string' && !['true', 'false'].includes(v.toLowerCase().trim())))
throw new Error(errorMessage);
}
return value.map(v => typeof v === 'string' ? (v.toLowerCase().trim() === 'true') : v);
};
/** Checks if the value is a valid file path and the file exists and can be read (absolute or relative to current working directory). */
this.FILE_PATH = (value, name, arg) => {
try {
fs_1.default.accessSync(path_1.default.resolve(process.cwd(), value), fs_1.default.constants.F_OK | fs_1.default.constants.R_OK);
}
catch (error) {
throw new Error(`Invalid file path for ${arg ? 'argument' : 'option'} ${name}!\n ${error.code === 'ENOENT' ? 'File doesn\'t exist' : 'File cannot be read'}.`);
}
};
}
}
exports.BuiltInValidators = BuiltInValidators;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiJzcmMvIiwic291cmNlcyI6WyJsaWIvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBR3hCLE1BQWEsaUJBQWlCO0lBQTlCO1FBRUUsb0ZBQW9GO1FBQ3BGLFdBQU0sR0FBeUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBRWxELElBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDN0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLDZCQUE2QixDQUFDLENBQUM7UUFFM0csQ0FBQyxDQUFDO1FBRUYsd0dBQXdHO1FBQ3hHLFdBQU0sR0FBeUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBRWxELElBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNuSSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksK0JBQStCLENBQUMsQ0FBQztZQUUzRyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMs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