UNPKG

frontix

Version:

Modern utility toolkit for frontend developers — 25+ utilities for strings, dates, validation, async operations, deep objects, and more. TypeScript-first, tree-shakable, and lightweight. Includes debounce, throttle, deep cloning, date formatting, validati

2 lines 7.83 kB
'use strict';var h=require('dayjs');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var h__default=/*#__PURE__*/_interopDefault(h);function w(e,t,r="..."){return !e||typeof e!="string"?"":t<0?e:e.length>t?e.slice(0,t)+r:e}function A(e){if(typeof e=="number")return e;if(typeof e=="string"){let t=Number(e);return isNaN(t)?0:t}return 0}function z(e){return e==null?"":String(e)}function k(e){return Array.isArray(e)?e.map(t=>({label:t,value:t})):[]}function P(e,t="DD/MM/YYYY",r="en"){try{if(!e||typeof e=="string"&&e.trim()==="")return "";let n=h__default.default(e);return n.isValid()?n.locale(r).format(t):""}catch{return console.warn("Invalid date provided to formatDate:",e),""}}function I(e,t){let r;return (...n)=>{r&&globalThis.clearTimeout(r),r=globalThis.setTimeout(()=>e(...n),t);}}function E(e,t){return e==null||typeof e=="string"&&e.trim()===""?t:e}function S(e){if(!e||typeof e!="string")return false;let t=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;return e.includes("..")||e.includes("@@")||e.startsWith(".")||e.endsWith(".")?false:t.test(e.trim())}function L(e){if(!e||typeof e!="string")return false;let t=e.replace(/[^\d+]/g,"");if(t.startsWith("+")){if(!/^\+\d{7,15}$/.test(t))return false}else if(!/^\d{7,15}$/.test(t))return false;let r=t.replace("+","");if(r.length<7||r.length>15||e.replace(/[^\d+]/g,"").length>20||e.replace(/[\d+\s]/g,"").length>10||e.length>25||/([^\d+\s]){3,}/.test(e))return false;let o=e.replace(/[\d+\s]/g,"").length,s=e.replace(/[^\d]/g,"").length;if(o>s/2||o>5)return false;if(!t.startsWith("+")){let a=e.split(/[^\d]/).filter(i=>i.length>0);if(a.length===1)return true;for(let i of a)if(i.length>4)return false;if(a.length>4||a.length===4&&s<12||a.length===4&&s===12)return false}return true}function U(e,t=3,r=1e3){return new Promise((n,o)=>{let s=0,a=async()=>{try{s++;let i=await e();n(i);}catch(i){if(s>=t){o(i);return}let f=r*Math.pow(2,s-1);setTimeout(()=>{a();},f);}};a();})}function N(e,t){return new Promise((r,n)=>{let o=setTimeout(()=>{n(new Error(`Operation timed out after ${t}ms`));},t);e().then(s=>{clearTimeout(o),r(s);}).catch(s=>{clearTimeout(o),n(s);});})}function b(e,t){let r=0,n=null;return (...o)=>{let s=Date.now();s-r>=t?(r=s,e(...o)):(n&&clearTimeout(n),n=setTimeout(()=>{r=Date.now(),e(...o),n=null;},t-(s-r)));}}function g(e,t=new WeakMap){if(e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date){let n=new Date(e.getTime());return t.set(e,n),n}if(Array.isArray(e)){let n=[];t.set(e,n);for(let o=0;o<e.length;o++)n[o]=g(e[o],t);return n}if(e instanceof RegExp){let n=new RegExp(e.source,e.flags);return t.set(e,n),n}if(e instanceof Map){let n=new Map;return t.set(e,n),e.forEach((o,s)=>{n.set(g(s,t),g(o,t));}),n}if(e instanceof Set){let n=new Set;return t.set(e,n),e.forEach(o=>{n.add(g(o,t));}),n}let r={};t.set(e,r);for(let n in e)e.hasOwnProperty(n)&&(r[n]=g(e[n],t));return r}function p(e,t){if(e===t)return true;if(e==null||t==null)return e===t;if(typeof e!=typeof t)return false;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.source===t.source&&e.flags===t.flags;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return false;for(let[r,n]of e)if(!t.has(r)||!p(n,t.get(r)))return false;return true}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return false;for(let r of e){let n=false;for(let o of t)if(p(r,o)){n=true;break}if(!n)return false}return true}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let r=0;r<e.length;r++)if(!p(e[r],t[r]))return false;return true}if(typeof e=="object"&&typeof t=="object"){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return false;for(let o of r)if(!n.includes(o)||!p(e[o],t[o]))return false;return true}return false}function d(e,...t){if(!t.length)return e;let r=t.shift();if(!r||typeof r!="object"||r===null)return e;for(let n in r)if(r.hasOwnProperty(n)){let o=r[n],s=e[n];o&&typeof o=="object"&&!Array.isArray(o)&&s&&typeof s=="object"&&!Array.isArray(s)?e[n]=d(s,o):e[n]=o;}return d(e,...t)}function G(e,t=Date.now()){let r=new Date(e),o=new Date(t).getTime()-r.getTime(),s=Math.floor(Math.abs(o)/1e3),a=Math.floor(s/60),i=Math.floor(a/60),f=Math.floor(i/24),m=Math.floor(f/7),y=Math.floor(f/30),D=Math.floor(f/365),T=o>0,u=T?"":"in ",l=T?" ago":"";return s<60?"just now":a<60?`${u}${a} ${a===1?"minute":"minutes"}${l}`:i<24?`${u}${i} ${i===1?"hour":"hours"}${l}`:f<7?`${u}${f} ${f===1?"day":"days"}${l}`:m<4?`${u}${m} ${m===1?"week":"weeks"}${l}`:y<12?`${u}${y} ${y===1?"month":"months"}${l}`:`${u}${D} ${D===1?"year":"years"}${l}`}function Q(e,t,r={}){let n=new Date(e);try{return new Intl.DateTimeFormat("en-US",{timeZone:t,...r}).format(n)}catch{return console.warn(`Invalid timezone: ${t}. Using local timezone.`),new Intl.DateTimeFormat("en-US",r).format(n)}}function v(e){let t=new Date(e),r=new Date;return t.getDate()===r.getDate()&&t.getMonth()===r.getMonth()&&t.getFullYear()===r.getFullYear()}function j(e){let t=new Date(e),r=new Date,n=new Date(r);return n.setDate(r.getDate()-1),t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()}function ee(e){let t=new Date(e),r=new Date,n=new Date(r),o=r.getDay();n.setDate(r.getDate()-o),n.setHours(0,0,0,0);let s=new Date(n);return s.setDate(n.getDate()+6),s.setHours(23,59,59,999),t>=n&&t<=s}function te(e){let t=new Date(e),r=new Date;return t.getMonth()===r.getMonth()&&t.getFullYear()===r.getFullYear()}function re(e){let t=new Date(e),r=new Date;return t.getFullYear()===r.getFullYear()}function oe(e,t="-"){if(!e||typeof e!="string")return "";if(t==="")return e.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]/g,"");let r=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[-_]{2,}/g,t).replace(/['.]/g,"").replace(/[^a-z0-9\s-]/g,t).replace(/\s+/g,t).replace(new RegExp(`${r}+`,"g"),t).replace(new RegExp(`^${r}|${r}$`,"g"),"")}function ae(e,t=false){return !e||typeof e!="string"?"":t?e.replace(/[_-]/g," ").split(/(\s+)/).map((o,s)=>/^\s+$/.test(o)?o:/^[a-zA-Z]/.test(o)?o.charAt(0).toUpperCase()+o.slice(1).toLowerCase():o).join(""):e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function x(e){if(!e||typeof e!="string")return "";let t=e.replace(/^[\s_-]+/,"");if(t.length===0)return "";if(/^[a-z][a-zA-Z]*$/.test(t))return t;let r=t.split(/[\s_-]+/);return r.length===1?r[0].toLowerCase():r[0].toLowerCase()+r.slice(1).map(n=>n.length===0?"":/^[a-z][a-zA-Z]*$/.test(n)?n.charAt(0).toUpperCase()+n.slice(1):n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()).join("")}function fe(e){return !e||typeof e!="string"?"":e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase()}function ue(e){return !e||typeof e!="string"?"":e.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toLowerCase()}function le(e){if(!e||typeof e!="string")return "";let t=x(e);return t.length===0?t:t.charAt(0).toUpperCase()+t.slice(1)}exports.camelCase=x;exports.capitalize=ae;exports.debounce=I;exports.deepClone=g;exports.formatDate=P;exports.isEqual=p;exports.isThisMonth=te;exports.isThisWeek=ee;exports.isThisYear=re;exports.isToday=v;exports.isYesterday=j;exports.kebabCase=fe;exports.merge=d;exports.pascalCase=le;exports.retry=U;exports.safeValue=E;exports.slugify=oe;exports.snakeCase=ue;exports.throttle=b;exports.timeAgo=G;exports.timeout=N;exports.toDropdown=k;exports.toNumber=A;exports.toString=z;exports.toTimeZone=Q;exports.truncate=w;exports.validateEmail=S;exports.validatePhone=L;//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map