UNPKG

nano-string-utils

Version:

Ultra-lightweight string utilities with zero dependencies

2 lines 21.7 kB
'use strict';var te=Object.defineProperty;var ne=(e,t)=>{for(var r in t)te(e,r,{get:t[r],enumerable:true});};var re=/[^\w\s-]/g,se=/[\s_-]+/g,ie=/^-+|-+$/g,N=e=>e&&e.toLowerCase().trim().replace(re,"").replace(se,"-").replace(ie,"");function oe(e,t,r="..."){if(!e||e.length<=t)return e;if(t<=r.length)return r;let n=t-r.length,s=e.slice(0,n);if(s.length>0){let i=s.charCodeAt(s.length-1);i>=55296&&i<=56319&&(s=s.slice(0,-1));}return s+r}var ae=e=>e&&e.charAt(0).toUpperCase()+e.slice(1).toLowerCase();var le=/[a-zA-Z]+[0-9]*|[0-9]+/g,S=e=>e?e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/([A-Z])([A-Z][a-z])/g,"$1 $2").replace(/[_\-\/\\,.\s]+/g," ").match(le)||[]:[];function ce(e){if(!e)return e;let t=S(e);return t.length===0?"":t.map((r,n)=>{let s=r.toLowerCase();return n===0?s:s.charAt(0).toUpperCase()+s.slice(1)}).join("")}function ue(e){if(!e)return e;let t=S(e);return t.length===0?"":t.map(r=>r.toLowerCase()).join("_")}function pe(e){if(!e)return e;let t=S(e);return t.length===0?"":t.map(r=>r.toLowerCase()).join("-")}var fe=/<[^>]*>/g,ge=e=>e&&e.replace(fe,"");var he=/[&<>"']/g,me={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},O=e=>e&&e.replace(he,t=>me[t]??t);var de=/[,;:\-–—]+$/;function xe(e,t,r="..."){if(!e||e.length<=t)return e;let n=-1;for(let i=t;i>=0;i--)if(e[i]===" "){n=i;break}if(n>0){let i=e.slice(0,n).trim();return i=i.replace(de,""),i.endsWith(".")||i.endsWith("!")||i.endsWith("?")?i+"..":i+r}let s=e.indexOf(" ");return s===-1||s>t?e.slice(0,t)+r:e.slice(0,s)+r}function Ce(e,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){let r=Math.floor(e);if(r<=0)return "";let n="",s=t.length;for(let i=0;i<r;i++)n+=t.charAt(Math.floor(Math.random()*s));return n}var Te=e=>{if(e==null)return 0;let t=2166136261;if(e.length===0)return t>>>0;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=t*16777619>>>0;return t};function Ee(e){if(!e)return e;let t=S(e);return t.length===0?"":t.map(r=>{let n=r.toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)}).join("")}var Ae=e=>e&&Array.from(e).reverse().join("");var Se=/^(\s*["']?\s*)([a-z])/,ye=/([.!?])\s+([a-z])/g,be=/([.!?])\s*(['"])\s*([a-z])/g,Le=/([.!?])([a-z])/g,Re=/\b([a-z]\.)+[a-z]$/,_e=/\b([a-z]\.){2,}$/,ze=/\bi\b/g,Ne=/\bi'([a-z])/g,Oe=/[A-Z]/,Pe=/[a-z]/i;function Ue(e){if(!e)return e;let t=e,r=e.toLowerCase();return r=r.replace(Se,(n,s,i)=>s+i.toUpperCase()),r=r.replace(ye,(n,s,i,o)=>{if(s==="."){let a=r.substring(Math.max(0,o-10),o);if(Re.test(a)||_e.test(a)){let p=t[o+n.indexOf(i)];return p&&Oe.test(p)?s+n.slice(s.length).replace(i,i.toUpperCase()):n}}return s+n.slice(s.length).replace(i,i.toUpperCase())}),r=r.replace(be,(n,s,i,o)=>s+n.slice(s.length).replace(o,o.toUpperCase())),r=r.replace(Le,(n,s,i,o)=>{if(s==="."){let a=r[o-1],l=r[o+2];if(a&&Pe.test(a)&&l===".")return n}return s+i.toUpperCase()}),r=r.replace(ze,"I"),r=r.replace(Ne,(n,s)=>"I'"+s),r}var Me=/^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,P=e=>!(!e||!Me.test(e)||e.includes("..")||e.endsWith(".")||e.includes("#")||e.includes("$")||e.includes("%"));var U=e=>{if(!e)return false;try{let t=new URL(e);return !(!["http:","https:","ftp:","ftps:"].includes(t.protocol)||t.hostname.includes(".."))}catch{return false}};var Ie=/\s+/,$e=e=>{if(!e)return 0;let t=e.trim().split(Ie);return t[0]===""?0:t.length};function We(e,t){return t.split(".").reduce((r,n)=>r?.[n],e)}function M(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _(e,t,r){if(!e)return e;let n={delimiters:["{{","}}"],fallback:"",keepUnmatched:false,...r},[s,i]=n.delimiters,o=new RegExp(`${M(s)}\\s*([^${M(i)}]+?)\\s*${M(i)}`,"g");return e.replace(o,(a,l)=>{let p=l.trim(),u=We(t,p);return u==null?n.keepUnmatched?a:n.fallback??"":String(u)})}function I(e){if(typeof e=="string")return O(e);if(Array.isArray(e))return e.map(I);if(e&&typeof e=="object"&&e.constructor===Object){let t={};for(let[r,n]of Object.entries(e))t[r]=I(n);return t}return e}function we(e,t,r){if(!e)return e;let n=I(t);return r?_(e,n,r):_(e,n)}function Be(e,t,r=" "){if(e==null)return e;let s=/[\u{1F000}-\u{1FFFF}]|[\u{2600}-\u{27BF}]|[\u{FE00}-\u{FE0F}]|[\u{1F900}-\u{1F9FF}]|[\u200D]/u.test(e)?Array.from(e).length:e.length;if(t<=s)return e;let i=r||" ",o=Array.from(i),a=o.length,l=t-s,p=Math.floor(l/2),u=l-p;if(a===1)return i.repeat(p)+e+i.repeat(u);let c=[];for(let m=0;m<p;m++)c.push(o[m%a]);let h=c.join(""),f=[];for(let m=0;m<u;m++)f.push(o[m%a]);let T=f.join("");return h+e+T}function Fe(e,t,r=" "){if(e==null)return e;let n=Array.from(e).length;if(t<=n||t<=0)return e;let s=r||" ",i=Array.from(s),o=i.length,a=t-n,l=[];for(let u=0;u<a;u++)l.push(i[u%o]);return l.join("")+e}function ve(e,t,r=" "){if(e==null)return e;let n=Array.from(e).length;if(t<=n||t<=0)return e;let s=r||" ",i=Array.from(s),o=i.length,a=t-n,l=[];for(let u=0;u<a;u++)l.push(i[u%o]);let p=l.join("");return e+p}var je=/[øØłŁđĐðÐþÞßæÆœŒ]/g,He={\u00F8:"o",\u00D8:"O",\u0142:"l",\u0141:"L",\u0111:"d",\u0110:"D",\u00F0:"d",\u00D0:"D",\u00FE:"th",\u00DE:"Th",\u00DF:"ss",\u00E6:"ae",\u00C6:"Ae",\u0153:"oe",\u0152:"Oe"};function $(e){return e&&e.replace(je,r=>He[r]||r).normalize("NFD").replace(/[\u0300-\u036f]/g,"").normalize("NFC")}var De=/(\s+|[^\s\w'-]+)/g,v=/[A-Za-z]/,Ze=/^[A-Z]{2,4}$/,j=new Set(["a","an","the","and","but","or","nor","for","yet","so","at","by","in","of","on","to","up","as","from","with","into","onto","upon","about","after","against","along","among","around","before","behind","below","beneath","beside","between","beyond","during","except","inside","outside","over","through","under","until","without"]);function ke(e,t={}){if(!e||!e.trim())return "";let r=t.exceptions?new Set([...j,...t.exceptions.map(o=>o.toLowerCase())]):j,n=e.split(De).filter(Boolean),s=0,i=n.filter(o=>v.test(o)).length;return n.map(o=>{if(!v.test(o))return o;let a=s===0,l=s===i-1;if(s++,Ze.test(o))return o;if(o.includes("-"))return o.split("-").map(u=>u&&W(u)).join("-");if(o.includes("'")){let u=o.split("'"),c=u[0]||"",h=u[1]||"";return W(c)+"'"+h.toLowerCase()}let p=o.toLowerCase();return !a&&!l&&r.has(p)?p:W(o)}).join("")}function W(e){return e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():""}var Ve=/([A-Z]+)([A-Z][a-z])/g,Ke=/([a-z0-9])([A-Z])/g,Ge=/([a-zA-Z])([0-9])/g,Ye=/([0-9])([a-zA-Z])/g,Xe=/[^a-z0-9]+/gi,Je=/\s+/;function qe(e){return e&&e.trim().replace(Ve,"$1 $2").replace(Ke,"$1 $2").replace(Ge,"$1 $2").replace(Ye,"$1 $2").replace(Xe," ").trim().split(Je).filter(Boolean).map(r=>r.toUpperCase()).join("_")}var Qe=/([A-Z]+)([A-Z][a-z])/g,et=/([a-z0-9])([A-Z])/g,tt=/([a-zA-Z])([0-9])/g,nt=/([0-9])([a-zA-Z])/g,rt=/[^a-z0-9]+/gi,st=/^\.+|\.+$/g,it=/\.+/g;function ot(e){return e&&e.trim().replace(Qe,"$1.$2").replace(et,"$1.$2").replace(tt,"$1.$2").replace(nt,"$1.$2").replace(rt,".").replace(st,"").replace(it,".").toLowerCase()}var at=/([A-Z]+)([A-Z][a-z])/g,lt=/([a-z0-9])([A-Z])/g,ct=/([a-zA-Z])([0-9])/g,ut=/([0-9])([a-zA-Z])/g,pt=/[^a-z0-9]+/gi,ft=/^\/+|\/+$/g,gt=/\/+/g;function ht(e){return e&&e.trim().replace(at,"$1/$2").replace(lt,"$1/$2").replace(ct,"$1/$2").replace(ut,"$1/$2").replace(pt,"/").replace(ft,"").replace(gt,"/").toLowerCase()}function mt(e){if(!e)return [];if(typeof Intl<"u"&&"Segmenter"in Intl){let t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e),r=>r.segment)}return Array.from(e)}function dt(e){if(!e)return [];let t=[];for(let r of e){let n=r.codePointAt(0);n!==void 0&&t.push(n);}return t}function xt(e){if(e==null)return false;for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>127)return false;return true}var Ct=/[\s\u00A0\u1680\u2000-\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF]+/g,Tt=/[\s\u00A0\u1680\u2000-\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF]/g,Et=/[^\S\n]+/g,H=/[\u00A0\u1680\u2000-\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF\t\r\f\v]/g;function At(e,t={}){let{trim:r=true,collapse:n=true,preserveNewlines:s=false}=t;if(!e)return e;let i;return s?n?i=e.replace(H," ").replace(Et," "):i=e.replace(H," "):n?i=e.replace(Ct," "):i=e.replace(Tt," "),r&&(i=i.trim()),i}function St(e,t={}){let{keepSpace:r=true,keepNewlines:n=false,keepTabs:s=false,keepCarriageReturns:i=false}=t;if(!e)return e;let o="";for(let a of e){let l=a.charCodeAt(0);if(l<=31||l===127){(l===9&&s||l===10&&n||l===13&&i)&&(o+=a);continue}l===32&&!r||l>=128&&l<=159||l!==173&&(l===8203||l===8204||l===8206||l===8207||l>=8234&&l<=8238||l>=8288&&l<=8303||l!==65279&&(l>=65520&&l<=65535||(o+=a)));}return o}var yt=new Map([["\xA0"," "],["\u2003"," "],["\u2002"," "],["\u2009"," "],["\u200B",""],["\u201C",'"'],["\u201D",'"'],["\u2018","'"],["\u2019","'"],["\u201A",","],["\u201E",'"'],["\xAB",'"'],["\xBB",'"'],["\u2039","'"],["\u203A","'"],["\u2013","-"],["\u2014","-"],["\u2012","-"],["\u2015","-"],["\u2026","..."],["\u2022","*"],["\xB7","."],["\xBF","?"],["\xA1","!"],["\xD7","x"],["\xF7","/"],["\xB1","+/-"],["\u2248","~"],["\u2260","!="],["\u2264","<="],["\u2265",">="],["\u221E","inf"],["\u221A","sqrt"],["\u20AC","EUR"],["\xA3","GBP"],["\xA5","JPY"],["\xA2","c"],["\u20B9","INR"],["\u20BD","RUB"],["\xBD","1/2"],["\xBC","1/4"],["\xBE","3/4"],["\u2153","1/3"],["\u2154","2/3"],["\u2192","->"],["\u2190","<-"],["\u2191","^"],["\u2193","v"],["\u2194","<->"],["\xA9","(c)"],["\xAE","(R)"],["\u2122","(TM)"],["\xB0","deg"],["\xA7","S"],["\xB6","P"],["\u2020","+"],["\u2021","++"],["\u2116","No"],["\u0391","A"],["\u03B1","a"],["\u0392","B"],["\u03B2","b"],["\u0393","G"],["\u03B3","g"],["\u0394","D"],["\u03B4","d"],["\u0395","E"],["\u03B5","e"],["\u0396","Z"],["\u03B6","z"],["\u0397","H"],["\u03B7","h"],["\u0398","Th"],["\u03B8","th"],["\u0399","I"],["\u03B9","i"],["\u039A","K"],["\u03BA","k"],["\u039B","L"],["\u03BB","l"],["\u039C","M"],["\u03BC","m"],["\u039D","N"],["\u03BD","n"],["\u039E","X"],["\u03BE","x"],["\u039F","O"],["\u03BF","o"],["\u03A0","P"],["\u03C0","p"],["\u03A1","R"],["\u03C1","r"],["\u03A3","S"],["\u03C3","s"],["\u03C2","s"],["\u03A4","T"],["\u03C4","t"],["\u03A5","Y"],["\u03C5","u"],["\u03A6","Ph"],["\u03C6","ph"],["\u03A7","Ch"],["\u03C7","ch"],["\u03A8","Ps"],["\u03C8","ps"],["\u03A9","O"],["\u03C9","o"],["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u0415","E"],["\u0435","e"],["\u0401","E"],["\u0451","e"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u0419","Y"],["\u0439","y"],["\u041A","K"],["\u043A","k"],["\u041B","L"],["\u043B","l"],["\u041C","M"],["\u043C","m"],["\u041D","N"],["\u043D","n"],["\u041E","O"],["\u043E","o"],["\u041F","P"],["\u043F","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042A",""],["\u044A",""],["\u042B","Y"],["\u044B","y"],["\u042C",""],["\u044C",""],["\u042D","E"],["\u044D","e"],["\u042E","Yu"],["\u044E","yu"],["\u042F","Ya"],["\u044F","ya"]]),bt=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g;function Lt(e,t={}){if(!e)return e;let r="";for(let n of e){let s=yt.get(n);r+=s!==void 0?s:n;}return r=$(r),r=r.replace(bt,""),t.placeholder!==void 0?r=Array.from(r).map(s=>{let i=s.charCodeAt(0);return i===9||i===10||i===13||i>=32&&i<=126?s:t.placeholder}).join(""):r=Array.from(r).filter(s=>{let i=s.charCodeAt(0);return i===9||i===10||i===13||i>=32&&i<=126}).join(""),r}function Rt(e,t,r={}){if(!e||!t||Array.isArray(t)&&t.length===0)return e||"";let{caseSensitive:n=false,wholeWord:s=false,wrapper:i=["<mark>","</mark>"],className:o,escapeHtml:a=false}=r,l=Array.isArray(t)?t:[t],p=[...new Set(l.filter(g=>g))];if(p.length===0)return e;let c=p.sort((g,C)=>C.length-g.length).map(g=>g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),h=s?"\\b":"",f=c.map(g=>`${h}(${g})${h}`).join("|"),T=n?"g":"gi",m=new RegExp(f,T),d=i[0],x=i[1];o&&i[0]==="<mark>"&&(d=`<mark class="${o}">`);let E=e;if(a){let g={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};E=e.replace(/[&<>"']/g,C=>g[C]??C);}return E.replace(m,g=>`${d}${g}${x}`)}function _t(e,t){if(e===t)return e;if(!e)return `{+${t}+}`;if(!t)return `[-${e}-]`;let r=[...e],n=[...t],s=0,i=Math.min(r.length,n.length);for(;s<i&&r[s]===n[s];)s++;let o=0,a=Math.min(r.length-s,n.length-s);for(;o<a&&r[r.length-1-o]===n[n.length-1-o];)o++;let l=r.slice(0,s).join(""),p=r.slice(r.length-o).join(""),u=r.slice(s,r.length-o).join(""),c=n.slice(s,n.length-o).join("");return !u&&!c?l+p:u?c?l+`[-${u}-]{+${c}+}`+p:l+`[-${u}-]`+p:l+`{+${c}+}`+p}function w(e,t,r){if(e===t)return 0;let n=e.length,s=t.length;if(n===0)return s;if(s===0)return n;if(r!==void 0&&Math.abs(n-s)>r)return 1/0;let i=0,o=Math.min(n,s);for(;i<o&&e.charCodeAt(i)===t.charCodeAt(i);)i++;if(i===o)return Math.abs(n-s);let a=0,l=Math.min(n-i,s-i);for(;a<l&&e.charCodeAt(n-1-a)===t.charCodeAt(s-1-a);)a++;let p=i,u=n-a,c=i,h=s-a;if(n=u-p,s=h-c,n===0)return s;if(s===0)return n;let f=e,T=t,m=p,d=n,x=c,E=s;n>s&&(f=t,T=e,m=c,d=s,x=p,E=n);let g=Array(d+1);for(let C=0;C<=d;C++)g[C]=C;for(let C=1;C<=E;C++){let F=g[0];g[0]=C;let z=C;for(let A=1;A<=d;A++){let Q=g[A],ee=f.charCodeAt(m+A-1)===T.charCodeAt(x+C-1)?0:1;g[A]=Math.min(g[A]+1,g[A-1]+1,F+ee),z=Math.min(z,g[A]),F=Q;}if(r!==void 0&&z>r)return 1/0}return g[d]}function zt(e,t){if(e.length===0&&t.length===0)return 1;if(e.length===0||t.length===0)return 0;let r=w(e,t),n=Math.max(e.length,t.length);return 1-r/n}function Nt(e,t,r={}){let{caseSensitive:n=false,threshold:s=0}=r;if(!e)return {matched:false,score:0};if(!t||e.length>t.length)return null;let i=n?e:e.toLowerCase(),o=n?t:t.toLowerCase();if(i===o)return {matched:true,score:n?1:.95};let a=o.startsWith(i);if(a&&s>0&&s<=.85)return {matched:true,score:.85};let l=0,p=0,u=0,c=[];for(;l<i.length&&p<o.length;){if(i[l]===o[p]){if(c.push(p),c.length>1){let d=c[c.length-1],x=c[c.length-2];d!==void 0&&x!==void 0&&d-x===1&&u++;}l++;}p++;}if(l!==i.length)return null;let f=e.length/t.length*.4;if(s>0&&f+.25+.1+.35<s)return null;if(u>0&&(f+=u/e.length*.25),c.length>0){let x=1-c.reduce((E,g)=>E+g,0)/c.length/t.length;f+=x*.1;}if(s>0){if(f>=s){if(s<.75&&!a)return f=Math.min(Math.max(f,0),1),{matched:true,score:Math.round(f*1e3)/1e3}}else if(f+.35<s)return null}let T=/[\s\-_./\\]/,m=0;for(let d=0;d<c.length;d++){let x=c[d];if(x!==void 0){if(x===0)m++;else if(x>0&&x<t.length){let E=t[x-1],g=t[x];(E&&T.test(E)||E&&g&&E===E.toLowerCase()&&g===g.toUpperCase())&&m++;}}}return m>0&&(f+=m/e.length*.35),a&&(f=Math.max(f,.85)),m===e.length&&(f=Math.max(f,.75)),f=Math.min(Math.max(f,0),1),f<s?null:{matched:true,score:Math.round(f*1e3)/1e3}}var Ot=/[aeiou]y$/;function Pt(e,t){if(t===1)return e;if(!e)return e+"s";let r=e===e.toUpperCase(),n=e[0]===e[0]?.toUpperCase(),s=e.toLowerCase(),o={person:"people",child:"children",man:"men",woman:"women",tooth:"teeth",foot:"feet",mouse:"mice",goose:"geese",sheep:"sheep",deer:"deer",fish:"fish",series:"series",datum:"data",index:"indices"}[s];if(o)return r?o.toUpperCase():n&&o[0]?o[0].toUpperCase()+o.slice(1):o;let a=e;return s.endsWith("is")?a=e.slice(0,-2)+"es":s.endsWith("us")&&!["bus","plus"].includes(s)?a=e.slice(0,-2)+"i":s.endsWith("s")||s.endsWith("ss")||s.endsWith("sh")||s.endsWith("ch")||s.endsWith("x")||s.endsWith("z")||s.endsWith("o")&&!["photo","piano","halo"].includes(s)?r?a=e+"ES":a=e+"es":s.endsWith("y")&&!Ot.test(s)?r?a=e.slice(0,-1)+"IES":a=e.slice(0,-1)+"ies":s.endsWith("f")?a=e.slice(0,-1)+"ves":s.endsWith("fe")?a=e.slice(0,-2)+"ves":r&&e.length===1?a=e+"s":r?a=e+"S":a=e+"s",a}function Ut(e){if(!e)return e;let t=e===e.toUpperCase(),r=e[0]===e[0]?.toUpperCase(),n=e.toLowerCase(),i={people:"person",children:"child",men:"man",women:"woman",teeth:"tooth",feet:"foot",mice:"mouse",geese:"goose",sheep:"sheep",deer:"deer",fish:"fish",series:"series",data:"datum",indices:"index"}[n];if(i)return t?i.toUpperCase():r&&i[0]?i[0].toUpperCase()+i.slice(1):i;let o=e;if(n.endsWith("ies")&&n.length>4)t?o=e.slice(0,-3)+"Y":o=e.slice(0,-3)+"y";else if(n.endsWith("ves")){let a=e.slice(0,-3);["kni","wi","li"].includes(a.toLowerCase())?o=a+"fe":o=a+"f";}else if(n.endsWith("sses"))o=e.slice(0,-2);else if(n.endsWith("zzes"))o=e.slice(0,-3);else if(n.endsWith("zes"))o=e.slice(0,-1);else if(n.endsWith("oes")||n.endsWith("xes")||n.endsWith("ches")||n.endsWith("shes"))o=e.slice(0,-2);else if(n.endsWith("ses")&&!n.endsWith("sses")){let a=e.slice(0,-2);["lyses","ases","ises","eses","oses"].some(l=>n.endsWith(l))?o=a+"is":o=a;}else n.endsWith("i")&&n.length>2&&!["ski","taxi","chi","hi"].includes(n)?o=e.slice(0,-1)+"us":n.endsWith("a")&&(n.endsWith("ta")||n.endsWith("ia"))&&n.length>3?o=e.slice(0,-1)+"on":n.endsWith("es")&&n.length>3&&!n.endsWith("ies")&&!n.endsWith("oes")?o=e.slice(0,-1):n==="as"?(o="a",t&&(o="A"),r&&(o="A")):n==="is"?(o="i",t&&(o="I"),r&&(o="I")):n.endsWith("s")&&!n.endsWith("ss")&&n.length>2&&(o=e.slice(0,-1));return o}function Mt(e,t={}){let{maxSize:r=100,getKey:n}=t,s=new Map,i=n||((...o)=>{if(o.length===0)return "";if(o.length===1){let a=o[0];if(a===null)return "__null__";if(a===void 0)return "__undefined__";if(typeof a=="string"||typeof a=="number"||typeof a=="boolean")return String(a)}try{return JSON.stringify(o)}catch{return o.map(String).join("|")}});return((...o)=>{let a=i(...o);if(s.has(a)){let p=s.get(a);return s.delete(a),s.set(a,p),p}let l=e(...o);if(s.size>=r){let p=s.keys().next().value;p!==void 0&&s.delete(p);}return s.set(a,l),l})}var It=/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b/g,$t=/https?:\/\/[^\s<>"\{\}\|\\^\[\]`]+/g,Wt=/@[a-zA-Z0-9_]+\b/g,wt=/#[a-zA-Z0-9_]+\b/g,Bt=/(?:\+?[1-9]\d{0,3})?[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}\b/g,Ft=/\b(?:\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}|\d{4}[-\/]\d{1,2}[-\/]\d{1,2}|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* \d{1,2},? \d{4})\b/gi,vt=/[$€£¥₹]\s?\d{1,3}(?:[,.\s]\d{3})*(?:[.,]\d{1,2})?(?:[kKmMbB])?(?!\w)/g,jt=e=>{if(!e)return {emails:[],urls:[],mentions:[],hashtags:[],phones:[],dates:[],prices:[]};let t=[...new Set(e.match(It)||[])],r=[...new Set(e.match($t)||[])],n=[...new Set(e.match(Wt)||[])],s=[...new Set(e.match(wt)||[])],i=e.match(Bt)||[],o=[...new Set(i.map(u=>u.trim()).filter(u=>{let c=u.replace(/\D/g,"");return c.length>=7&&c.length<=15}))],a=e.match(Ft)||[],l=[...new Set(a.filter(u=>!u.match(/^\d{1,4}$/)&&!u.match(/^\d{1,2}[-\/]\d{1,2}$/)))],p=[...new Set(e.match(vt)||[])];return {emails:t,urls:r,mentions:n,hashtags:s,phones:o,dates:l,prices:p}};var Ht=e=>{if(!e)return [];let t="\0",r="",n="",s="",i=e;i=i.replace(/\.{3}(\s+)([A-Z])/g,`${t}$1$2`),i=i.replace(/\.{3}/g,r),i=i.replace(/(\d)\.(\d)/g,`$1${n}$2`);let o=["Dr","Mr","Mrs","Ms","Prof","Sr","Jr","Ph\\.D","M\\.D","B\\.A","M\\.A","B\\.S","M\\.S","M\\.I\\.T","U\\.S","U\\.K","Inc","Ltd","Co","Corp"],l=["The","He","She","It","They","We","I","You","This","That","These","Those","There","Here"].join("|");o.forEach(c=>{let h=new RegExp(`\\b(${c})\\.(?!\\s+(${l})\\b)`,"gi");i=i.replace(h,`$1${s}`);});let p=[],u="";for(let c=0;c<i.length;c++)if(u+=i[c],i[c]==="."||i[c]==="!"||i[c]==="?"||i[c]===t){let h=c+1,f="";for(;h<i.length&&/["\'\)\]]*/.test(i[h])&&i[h]!==" ";)f+=i[h],h++;if(h<i.length&&i[h]===" "){let T=h+1;for(;T<i.length&&i[T]===" ";)T++;if(T<i.length&&/[A-Z]/.test(i[T])){u+=f,p.push(u.trim()),u="",c=h;continue}}u+=f,c=h-1;}return u.trim()&&p.push(u.trim()),p.map(c=>c.replace(new RegExp(t,"g"),"...").replace(new RegExp(r,"g"),"...").replace(new RegExp(n,"g"),".").replace(new RegExp(s,"g"),"."))};var Dt=(e,t={})=>{let{conjunction:r="and",oxford:n=true,quotes:s=false}=t,i=e.filter(c=>c!=null).map(c=>String(c)),o=s?i.map(c=>`"${c}"`):i,a=o.length;if(a===0)return "";if(a===1)return o[0];if(a===2)return `${o[0]} ${r} ${o[1]}`;let l=o.slice(0,-1),p=o[a-1],u=n?",":"";return `${l.join(", ")}${u} ${r} ${p}`};var q={};ne(q,{BrandedTypeError:()=>y,assertEmail:()=>D,assertSlug:()=>k,assertUrl:()=>Z,ensureSlug:()=>J,isSlug:()=>R,isValidEmail:()=>b,isValidUrl:()=>L,toEmail:()=>V,toSlug:()=>B,toUrl:()=>K,unsafeEmail:()=>G,unsafeSlug:()=>X,unsafeUrl:()=>Y});var y=class extends Error{constructor(t,r){super(`Invalid ${t}: "${r}"`),this.name="BrandedTypeError";}};var Zt=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function b(e){return P(e)}function L(e){return U(e)}function R(e){return Zt.test(e)}function D(e,t){if(!b(e))throw new y(t||"Email",e)}function Z(e,t){if(!L(e))throw new y(t||"URL",e)}function k(e,t){if(!R(e))throw new y(t||"Slug",e)}function V(e){return b(e)?e:null}function K(e){return L(e)?e:null}function B(e){return N(e)}function G(e){return e}function Y(e){return e}function X(e){return e}function J(e){return R(e)?e:B(e)}exports.branded=q;exports.camelCase=ce;exports.capitalize=ae;exports.codePoints=dt;exports.constantCase=qe;exports.deburr=$;exports.diff=_t;exports.dotCase=ot;exports.escapeHtml=O;exports.excerpt=xe;exports.extractEntities=jt;exports.fuzzyMatch=Nt;exports.graphemes=mt;exports.hashString=Te;exports.highlight=Rt;exports.humanizeList=Dt;exports.isASCII=xt;exports.isEmail=P;exports.isUrl=U;exports.kebabCase=pe;exports.levenshtein=w;exports.levenshteinNormalized=zt;exports.memoize=Mt;exports.normalizeWhitespace=At;exports.pad=Be;exports.padEnd=ve;exports.padStart=Fe;exports.pascalCase=Ee;exports.pathCase=ht;exports.pluralize=Pt;exports.randomString=Ce;exports.removeNonPrintable=St;exports.reverse=Ae;exports.sentenceCase=Ue;exports.singularize=Ut;exports.slugify=N;exports.smartSplit=Ht;exports.snakeCase=ue;exports.stripHtml=ge;exports.template=_;exports.templateSafe=we;exports.titleCase=ke;exports.toASCII=Lt;exports.truncate=oe;exports.wordCount=$e;//# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map