@visulima/string
Version:
Functions for manipulating strings.
2 lines (1 loc) • 8.2 kB
JavaScript
;var R=Object.defineProperty;var A=(e,s)=>R(e,"name",{value:s,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const I=require("node:util"),r=require("../packem_shared/constants-DEcMFLn8.cjs"),q=require("../packem_shared/LRUCache-TYqfUYE5.cjs");var z=Object.defineProperty,M=A((e,s)=>z(e,"name",{value:s,configurable:!0}),"g");const y=new q(1e3),T=M(e=>{const s=e.join("");if(y.has(s))return y.get(s);const p=e.map(k=>k.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)).join("|"),g=new RegExp(p,"g");return y.set(s,g),g},"getSeparatorsRegex");var _=Object.defineProperty,$=A((e,s)=>_(e,"name",{value:s,configurable:!0}),"t");const D=$(e=>{const s=[];let p=0,g;for(r.j.lastIndex=0;(g=r.j.exec(e))!==null;)g.index>p&&s.push(e.slice(p,g.index)),s.push(g[0]),p=r.j.lastIndex;return p<e.length&&s.push(e.slice(p)),s.filter(Boolean)},"splitByEmoji");var F=Object.defineProperty,C=A((e,s)=>F(e,"name",{value:s,configurable:!0}),"u");const E=new Uint8Array(128),B=new Uint8Array(128),S=new Uint8Array(128);for(let e=0;e<128;e++)E[e]=e>=65&&e<=90?1:0,B[e]=e>=97&&e<=122?1:0,S[e]=e>=48&&e<=57?1:0;const w=C(e=>E[e],"isUpper"),x=C(e=>B[e],"isLower"),v=C(e=>S[e],"isDigit"),j=C((e,s,p,g,k)=>{if(e.length===0)return[];let h=!1;for(const l of Object.values(s))if(l(e[0])){h=!0;break}if(!h&&!p)return[e];const m=[...e],u=[];let U=m[0],t="other";for(const[l,a]of Object.entries(s))if(a(m[0])){t=l;break}let o=p&&g?m[0]===m[0].toLocaleUpperCase(g):!1;for(let l=1;l<m.length;l++){const a=m[l];let i="other";for(const[f,d]of Object.entries(s))if(d(a)){i=f;break}const c=p&&g?a===a.toLocaleUpperCase(g):!1;let n=!1;k?n=k(t,i,o,c,a,l,m):(t!==i&&t!=="other"&&i!=="other"&&(n=!0),p&&i!=="other"&&!o&&c&&(n=!0)),n?(u.push(U),U=a):U+=a,t=i,p&&(o=c)}return U&&U.length>0&&u.push(U),u.length>0?u:[e]},"handleScriptTransitions"),O=C((e,s=new Set)=>{if(e.length===0)return[];if(e.toUpperCase()===e)return[e];let p=0;const g=[],k=e.length;for(let h=1;h<k;h++){const m=e.codePointAt(h-1),u=e.codePointAt(h);if(s.size>0){for(const i of s)if(e.startsWith(i,p)){g.push(i),p+=i.length,h=p-1;break}if(h<p)continue}const U=m&&m<128&&w(m),t=u&&u<128&&w(u),o=m&&m<128&&x(m),l=m&&m<128&&v(m),a=u&&u<128&&v(u);if(o&&t){g.push(e.slice(p,h)),p=h;continue}if(l&&!a||!l&&a){g.push(e.slice(p,h)),p=h;continue}if(a&&!l){let i=!1,c=!1;if(h+1<k){const n=e.codePointAt(h+1);i=n&&n<128&&w(n),c=n&&n<128&&v(n)}if(!c&&i){g.push(e.slice(p,h),e.slice(h,h+1)),p=h+1;continue}}if(h+1<k){const i=e.codePointAt(h+1),c=i&&i<128&&x(i);if(U&&t&&c){const n=e.slice(p,h+1);s.has(n)||(g.push(e.slice(p,h)),p=h)}}}return p<k&&g.push(e.slice(p)),g.filter(h=>h!=="")},"splitCamelCaseFast"),P=C((e,s,p)=>{if(e.length===0)return[];const g=e===e.toLocaleUpperCase(s);if(s.startsWith("de")){if(!g&&e.replaceAll("ß","SS")===e.toLocaleUpperCase(s))return[e];const t=[...e],o=t.length,l=[];let a=t[0],i=t[0]===t[0].toLocaleUpperCase(s),c=i,n=i?0:-1;for(let f=1;f<o;f++){const d=t[f],L=d===d.toLocaleUpperCase(s);if(L===i)a+=d;else if(L)a&&a.length>0&&(l.push(a),a=d),c=!0,n=f;else{if(c&&f-n>1){const b=t[f-1],W=a.slice(0,-1);W&&W.length>0&&l.push(W),a=b+d}else a+=d;c=!1,n=-1}i=L}return a&&a.length>0&&l.push(a),l}if(s.startsWith("uk")||s.startsWith("ru")||s.startsWith("bg")||s.startsWith("sr")||s.startsWith("mk")||s.startsWith("be")){if(!r.l.test(e)&&!r.m.test(e))return[e];const t=[...e],o=t.length,l=[];let a=t[0],i=r.l.test(t[0])?1:r.m.test(t[0])?2:0,c=t[0]===t[0].toLocaleUpperCase(s);for(let f=1;f<o;f++){const d=t[f],L=r.l.test(d)?1:r.m.test(d)?2:0,b=d===d.toLocaleUpperCase(s);i!==L&&(i===1||i===2)&&(L===1||L===2)||L===i&&!c&&b?(l.push(a),a=d):a+=d,i=L,c=b}a&&a.length>0&&l.push(a);const n=[];for(let f=0;f<l.length;f++)f<l.length-1&&l[f].length===1&&r.m.test(l[f])&&r.l.test(l[f+1][0])?(n.push(l[f]+l[f+1]),f+=1):n.push(l[f]);return n}if(s.startsWith("el")){if(!r.n.test(e)&&!r.m.test(e))return[e];const t=e.match(r.o)??[e],o=[];if(t.length===1){const l=t[0];if(!l||!r.n.test(l[0])||l.length===1)return[l||e]}for(const l of t){if(!l)continue;if(!r.n.test(l[0])||l.length===1){o.push(l);continue}const a=l.length;let i=l[0],c=l[0]===l[0].toLocaleUpperCase(s);for(let n=1;n<a;n++){const f=l[n],d=f===f.toLocaleUpperCase(s);!c&&d?(o.push(i),i=f):i+=f,c=d}i&&o.push(i)}return o}if(s.startsWith("ja")||s.startsWith("ko")){const t=s.startsWith("ja"),o=t?{hiragana:C(a=>r.r.test(a),"hiragana"),kanji:C(a=>r.q.test(a),"kanji"),katakana:C(a=>r.p.test(a),"katakana"),latin:C(a=>r.m.test(a),"latin")}:{hangul:C(a=>r.t.test(a),"hangul"),latin:C(a=>r.m.test(a),"latin")},l=new Set(["が","で","と","に","の","は","へ","も","や","を"]);if(t){const a=j(e,o,!1,s,(c,n)=>c==="hiragana"&&n==="katakana"||c==="katakana"&&n==="hiragana"||c==="hiragana"&&n==="latin"||c==="katakana"&&n==="latin"||c==="kanji"&&n==="latin"||c==="latin"&&(n==="hiragana"||n==="katakana"||n==="kanji")),i=[];for(const c of a)c.length===1&&l.has(c)&&i.length>0?i[i.length-1]+=c:i.push(c);return i.length>0?i:[e]}return j(e,o,!1,s,(a,i)=>a==="hangul"&&i==="latin"||a==="latin"&&i==="hangul")}if(s.startsWith("sl")){const t=[...e],o=t.length,l=[];let a=t[0],i=t[0]===t[0].toLocaleUpperCase(s);for(let c=1;c<o;c++){const n=t[c],f=n===n.toLocaleUpperCase(s),d=/[ČŠŽĐ]/i.test(n),L=c<o-1&&t[c+1]===t[c+1].toLocaleUpperCase(s);!i&&f||d&&L?(l.push(a),a=n,d&&L&&(l.push(a),a="")):a+=n,i=f}return a&&a.length>0&&l.push(a),l}if(s.startsWith("zh"))return j(e,{han:C(t=>r.q.test(t),"han"),latin:C(t=>r.m.test(t),"latin")},!1,s);if(["ar","fa","he","ur"].includes(s.split("-")[0])){const t=C(o=>r.u.test(o)||r.v.test(o),"isRtlChar");return j(e,{latin:C(o=>r.m.test(o),"latin"),rtl:C(o=>t(o),"rtl")},!1,s)}if(["am","bn","gu","hi","km","kn","lo","ml","mr","ne","or","pa","si","ta","te","th"].includes(s.split("-")[0])){const t=C(o=>r.w.test(o)||r.x.test(o)||r.y.test(o)||r.z.test(o)||r.A.test(o)||r.B.test(o)||r.C.test(o)||r.D.test(o)||r.E.test(o)||r.F.test(o)||r.G.test(o)||r.H.test(o)||r.I.test(o)||r.J.test(o)||r.K.test(o)||r.L.test(o),"isIndicChar");return j(e,{indic:C(o=>t(o),"indic"),latin:C(o=>r.m.test(o),"latin")},!1,s)}if(["be","bg","ru","sr","uk"].includes(s))return j(e,{cyrillic:C(t=>r.l.test(t),"cyrillic"),latin:C(t=>r.m.test(t),"latin")},!0,s);if(["ar","fa","he"].includes(s))return j(e,{latin:C(t=>r.m.test(t),"latin"),rtl:C(t=>r.u.test(t)||r.v.test(t),"rtl")},!1,s);if(s.startsWith("ko"))return j(e,{hangul:C(t=>r.t.test(t),"hangul"),latin:C(t=>r.m.test(t),"latin")},!1,s);if(s.startsWith("uz")){if(!r.l.test(e)&&!r.m.test(e))return[e];const t=[...e],o=t.length,l=[];let a=t[0],i=t[0]===t[0].toLocaleUpperCase(s);for(let c=1;c<o;c++){const n=t[c],f=n===n.toLocaleUpperCase(s);if(r.M.test(n)||r.M.test(t[c-1])){a+=n;continue}!i&&f?(l.push(a),a=n):a+=n,i=f}return a&&a.length>0&&l.push(a),l}const k=[...e],h=k.length,m=[];let u=k[0],U=k[0]===k[0].toLocaleUpperCase(s);for(const t of p)if(e.startsWith(t)){m.push(t),u=k[t.length],U=u===u.toLocaleUpperCase(s);break}for(let t=1;t<h;t++){const o=k[t],l=o===o.toLocaleUpperCase(s);let a=!1;for(const i of p)if(e.startsWith(i,t)){m.push(u,i),t+=i.length-1,u="",a=!0;break}a||(!U&&l?(m.push(u),u=o):u+=o,U=l)}return u&&m.push(u),m},"splitCamelCaseLocale"),G=C((e,s,p)=>{const g=[],k=r.R.test(e)?e.split(r.R).filter(Boolean):[e];for(const h of k)if(r.R.test(h))g.push(h);else{const m=r.j.test(h)?D(h).filter(Boolean):[h];for(const u of m)if(r.j.test(u))g.push(u);else if(s){const U=s.toLowerCase().split("-")[0];g.push(...P(u,U,p))}else g.push(...O(u,p))}return g},"processTextWithAnsiEmoji"),H=C((e,s={})=>{if(!e||typeof e!="string")return[];const{handleAnsi:p=!1,handleEmoji:g=!1,knownAcronyms:k=[],locale:h,normalize:m=!1,separators:u,stripAnsi:U=!1,stripEmoji:t=!1}=s,o=new Set([...k].sort((n,f)=>f.length-n.length));let l=e;U&&(l=I.stripVTControlCharacters(l)),t&&(l=r.s(l));const a=Array.isArray(u)?T(u):u instanceof RegExp?u:r.k,i=l.split(a).filter(Boolean);let c=[];for(const n of i)p||g?c.push(...G(n,h,o)):h?c.push(...P(n,h,o)):c.push(...O(n,o));return m&&(c=c.map(n=>o.has(n)?n:h&&n===n.toLocaleUpperCase(h)?n[0]+n.slice(1).toLocaleLowerCase(h):n.toUpperCase()===n&&!o.has(n)?n.slice(0,1)+n.slice(1).toLowerCase():n)),c},"splitByCase");exports.splitByCase=H;