// eslint-disable-next-line @typescript-eslint/ban-types export function isFunction(val) { return typeof val === 'function'; } export function isPlainObject(val) { return val !== null && typeof val === 'object' && !Array.isArray(val); } export function isPromise(val) { return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch); } export function isDef(value) { return value !== undefined && value !== null; } export function isObj(x) { const type = typeof x; return x !== null && (type === 'object' || type === 'function'); } export function isNumber(value) { return /^\d+(\.\d+)?$/.test(value); } export function isBoolean(value) { return typeof value === 'boolean'; } const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; export function isImageUrl(url) { return IMAGE_REGEXP.test(url); } export function isVideoUrl(url) { return VIDEO_REGEXP.test(url); }