UNPKG

plumier

Version:

Delightful Node.js Rest Framework

55 lines (54 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const core_1 = require("@plumier/core"); const bytes_1 = tslib_1.__importDefault(require("bytes")); function validateSize(opt, val, msg) { const expected = (typeof opt === "string") ? (0, bytes_1.default)(opt) : opt; if (val > expected) return msg !== null && msg !== void 0 ? msg : "File size exceed the limit allowed"; } function validateMime(opt, val, msg) { const regex = new RegExp(opt); if (!regex.test(val)) return msg !== null && msg !== void 0 ? msg : "Invalid file type"; } function validateFile(opt, val) { const list = []; if (typeof opt === "object") { if (opt.maxSize) list.push(validateSize(opt.maxSize, val.size, opt.invalidSizeMessage)); if (opt.mime) list.push(validateMime(opt.mime, val.type, opt.invalidMimeMessage)); } else list.push(validateSize(opt, val.size)); const result = list.filter((x) => !!x); if (result.length > 0) return result.join(", "); } core_1.val.file = (opt) => { return core_1.val.custom((val) => { if (Array.isArray(val)) { const result = []; for (const [i, value] of val.entries()) { const message = validateFile(opt, value); if (message) result.push({ path: i.toString(), messages: [message] }); } return result; } else return validateFile(opt, val); }); }; core_1.val.image = (opt) => { var _a; const invalidMimeMessage = "Invalid image file"; if (typeof opt === "object") return core_1.val.file(Object.assign(Object.assign({}, opt), { mime: /^image\//i, invalidMimeMessage: (_a = opt.invalidImageMessage) !== null && _a !== void 0 ? _a : invalidMimeMessage, invalidSizeMessage: opt.invalidSizeMessage })); else if (typeof opt === "string") return core_1.val.file({ maxSize: opt, mime: /^image\//i, invalidMimeMessage }); else return core_1.val.file({ mime: /^image\//i, invalidMimeMessage }); };