UNPKG

argumental

Version:

Framework for building CLI apps with Node.js

78 lines 10.3 kB
"use strict"; 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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