UNPKG

@pivanov/utils

Version:

A focused collection of TypeScript utilities for modern web development

8 lines (7 loc) 2.47 kB
/*! * @pivanov/utils v1.0.0 * (c) 2024-present Pavel Ivanov * Released under the MIT License. * https://github.com/pivanov/utils */ var{defineProperty:u,getOwnPropertyNames:z,getOwnPropertyDescriptor:B}=Object,D=Object.prototype.hasOwnProperty;var v=new WeakMap,F=(d)=>{var f=v.get(d),j;if(f)return f;if(f=u({},"__esModule",{value:!0}),d&&typeof d==="object"||typeof d==="function")z(d).map((q)=>!D.call(f,q)&&u(f,q,{get:()=>d[q],enumerable:!(j=B(d,q))||j.enumerable}));return v.set(d,f),f};var G=(d,f)=>{for(var j in f)u(d,j,{get:f[j],enumerable:!0,configurable:!0,set:(q)=>f[j]=()=>q})};var o={};G(o,{words:()=>$,uncapitalize:()=>V,truncate:()=>W,titleCase:()=>Q,snakeCase:()=>O,slugify:()=>R,pascalCase:()=>J,lines:()=>k,kebabCase:()=>N,escapeRegExp:()=>Z,escapeHtml:()=>Y,capitalizeFirstLetter:()=>K,capitalize:()=>U,camelCase:()=>I});module.exports=F(o);var I=(d)=>{return d.trim().toLowerCase().replace(/^[-_\s]+/,"").replace(/[-_\s]+(.)?/g,(f,j)=>j?j.toUpperCase():"")},J=(d)=>{return d.split(/(?=[0-9])|(?<=[0-9])|[^a-zA-Z0-9]+/g).filter(Boolean).map((f)=>f.toLowerCase()).map((f)=>`${f.charAt(0).toUpperCase()}${f.slice(1)}`).join("")},K=(d)=>d.charAt(0).toUpperCase()+d.slice(1),N=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z])([A-Z][a-z])/g,"$1-$2").replace(/[-_\s]+/g,"-").toLowerCase().replace(/^-+|-+$/g,"").trim()},O=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").replace(/[-_\s]+/g,"_").toLowerCase().replace(/^_+|_+$/g,"").trim()},Q=(d)=>{return d.normalize("NFKD").replace(/[^\w\s-]/g," ").split(/[-_\s]+/).filter(Boolean).map((f)=>f.charAt(0).toUpperCase()+f.slice(1).toLowerCase()).join(" ")},R=(d)=>{return d.normalize("NFKD").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[-\s_]+/g,"-").replace(/^-+|-+$/g,"")},U=(d)=>{return d.charAt(0).toUpperCase()+d.slice(1)},V=(d)=>{return d.charAt(0).toLowerCase()+d.slice(1)},W=(d,f,j="…")=>{if(d.length<=f)return d;if(f<=j.length)return j.slice(0,f);return d.slice(0,f-j.length)+j},X={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Y=(d)=>{return d.replace(/[&<>"']/g,(f)=>X[f])},Z=(d)=>{return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},$=(d)=>{return d.split(/[-_\s]+/).filter(Boolean)},k=(d)=>{return d.split(/\r\n|\r|\n/)};