jsonblade
Version:
A powerful and modular JSON template engine with extensible filters
111 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validationFilters = void 0;
exports.registerValidationFilters = registerValidationFilters;
const filter_registry_1 = require("../filter-registry");
const validationFilters = {
isEmail: (v) => {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(String(v));
},
isURL: (v) => {
try {
new URL(String(v));
return true;
}
catch {
return false;
}
},
isUUID: (v) => {
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return uuidRegex.test(String(v));
},
isNumber: (v) => {
return !isNaN(Number(v)) && isFinite(Number(v));
},
isInteger: (v) => {
const num = Number(v);
return !isNaN(num) && Number.isInteger(num);
},
isPhoneNumber: (v) => {
const phoneRegex = /^(\+33|0)[1-9](?:[0-9]{8})$/;
return phoneRegex.test(String(v).replace(/\s/g, ""));
},
minLength: (v, ...args) => {
const minLen = Number(args[0]) || 0;
return String(v).length >= minLen;
},
maxLength: (v, ...args) => {
const maxLen = Number(args[0]) || Infinity;
return String(v).length <= maxLen;
},
matches: (v, ...args) => {
const pattern = args[0];
if (!pattern)
return false;
try {
const regex = new RegExp(pattern);
return regex.test(String(v));
}
catch {
return false;
}
},
base64Encode: (v) => {
try {
return btoa(String(v));
}
catch {
return "";
}
},
base64Decode: (v) => {
try {
return atob(String(v));
}
catch {
return "";
}
},
escape: (v) => {
return String(v)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
},
unescape: (v) => {
return String(v)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, '"')
.replace(/'/g, "'");
},
urlEncode: (v) => {
return encodeURIComponent(String(v));
},
urlDecode: (v) => {
try {
return decodeURIComponent(String(v));
}
catch {
return String(v);
}
},
md5: (v) => {
return `md5(${String(v)})`;
},
sha256: (v) => {
return `sha256(${String(v)})`;
},
};
exports.validationFilters = validationFilters;
function registerValidationFilters() {
Object.entries(validationFilters).forEach(([name, fn]) => {
(0, filter_registry_1.registerFilter)(name, fn);
});
}
//# sourceMappingURL=validation-filters.js.map