UNPKG

@valkyriestudios/validator

Version:

A lightweight configurable javascript validator

39 lines (38 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MEDIA_EXTENSIONS = exports.AUDIO_EXTENSIONS = exports.VIDEO_EXTENSIONS = exports.IMAGE_EXTENSIONS = void 0; exports.vUrlImage = vUrlImage; exports.vUrlVideo = vUrlVideo; exports.vUrlAudio = vUrlAudio; exports.vUrlMedia = vUrlMedia; const vUrl_1 = require("./vUrl"); exports.IMAGE_EXTENSIONS = new Set(['jpg', 'jpeg', 'jpe', 'jif', 'jfif', 'jfi', 'png', 'ico', 'cur', 'tiff', 'tif', 'gif', 'webp', 'bmp', 'dib', 'svg', 'svgz', 'heif', 'heifs', 'heic', 'heics', 'avci', 'avcs', 'avif', 'hif']); exports.VIDEO_EXTENSIONS = new Set(['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'drc', 'gifv', 'mng', 'mov', 'qt', 'mp4', 'm4p', 'm4v', 'mpg', 'mp2', 'mpeg', 'mpe', 'mpv', 'svi', '3gp', '3g2', 'mxf', 'roq', 'nsv', 'f4v', 'f4p', 'f4a', 'f4b']); exports.AUDIO_EXTENSIONS = new Set(['mp3', 'aac', 'ogg', 'oga', 'wav', 'flac', 'alac', 'aiff', 'ape', 'wma', 'm4a', 'm4b', 'opus']); exports.MEDIA_EXTENSIONS = new Set([...exports.IMAGE_EXTENSIONS, ...exports.VIDEO_EXTENSIONS, ...exports.AUDIO_EXTENSIONS]); const RGX_PROTO = /^(https?|ftp):\/\//; const RGX_QUERY = /(\?|#)/g; function vUrlWithExtension(val, EXTENSIONS) { if (!(0, vUrl_1.vUrl)(val)) return false; let sanitized = val.replace(RGX_PROTO, '').split(RGX_QUERY, 1)[0].split('/'); if (sanitized.length < 2) return false; sanitized = sanitized[sanitized.length - 1].split('.'); const ext = sanitized.pop(); if (!ext || !EXTENSIONS.has(ext)) return false; return sanitized.join('.').length > 0; } function vUrlImage(val) { return vUrlWithExtension(val, exports.IMAGE_EXTENSIONS); } function vUrlVideo(val) { return vUrlWithExtension(val, exports.VIDEO_EXTENSIONS); } function vUrlAudio(val) { return vUrlWithExtension(val, exports.AUDIO_EXTENSIONS); } function vUrlMedia(val) { return vUrlWithExtension(val, exports.MEDIA_EXTENSIONS); }