import { getCookie, setCookie, deleteCookie } from "./utility/cookie"; import { domLoad, init, r, lang } from "./utility/lgres"; import { get, post, upload } from "./utility/request"; import { nullOrEmpty, contains, endsWith, padStart, formatUrl, escapeHtml, escapeEmoji } from "./utility/strings"; let g = typeof globalThis !== 'undefined' ? globalThis : self; function isPositive(n) { return !isNaN(n) && n > 0; } function isMobile() { return /mobile/i.test(navigator.userAgent); } function throttle(method, delay = 100, context = g, ...args) { if (method == null) { return; } method.tiid && clearTimeout(method.tiid); const current = new Date(); if (method.tdate == null || current - method.tdate > delay) { method.apply(context, args); method.tdate = current; } else { method.tiid = setTimeout(() => method.apply(context, args), delay); } } function debounce(method, delay = 100, context = g, ...args) { if (method == null) { return; } method.tiid && clearTimeout(method.tiid); method.tiid = setTimeout(() => method.apply(context, args), delay); } function truncate(v) { return (v > 0 ? Math.floor : Math.ceil)(v); } function isEmail(text) { return /^\w[-\w.+]*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(text); } function isPhone(text) { if (/^[1-9]\d{9,}$/.test(text)) { return true; } if (/^\+?[1-9][\d-]{9,}\d$/.test(text) && /^[1-9]\d{9,}$/.test(text.replace('+', '').replace(new RegExp('-', 'g'), ''))) { return true; } return false; } function getPasswordStrength(password) { if (password == null || typeof password !== 'string') { return 0; } if (password.length < 8) { return 0; } let secure = 0; if (/[0-9]/.test(password)) { secure++ } if (/[a-z]/.test(password)) { secure++ } if (/[A-Z]/.test(password)) { secure++ } if (/[^0-9a-zA-Z]/.test(password)) { secure++ } return secure; } function verifyPassword(password, min) { min ??= 3; const secure = getPasswordStrength(password); return secure >= min; } export { // cookie getCookie, setCookie, deleteCookie, // lgres init, r, lang, // request get, post, upload, // strings nullOrEmpty, contains, endsWith, padStart, formatUrl, escapeHtml, escapeEmoji, // variables g as global, isPositive, isMobile, // functions throttle, debounce, truncate, isEmail, isPhone, getPasswordStrength, verifyPassword, domLoad }