@visulima/string
Version:
Functions for manipulating strings.
9 lines (8 loc) • 7.73 kB
JavaScript
"use strict";var O=Object.defineProperty;var m=(t,e)=>O(t,"name",{value:e,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("./packem_shared/constants-DEcMFLn8.cjs"),S=require("./get-string-width.cjs");var T=Object.defineProperty,_=m((t,e)=>T(t,"name",{value:e,configurable:!0}),"n");class R{static{m(this,"u")}static{_(this,"AnsiStateTracker")}activeForeground=null;activeBackground=null;activeFormatting=[];processEscape(e){const i=/\x1B\[(\d+)m/.exec(e);if(!i)return;const r=Number.parseInt(i[1],10);switch(r){case 0:{this.activeForeground=null,this.activeBackground=null,this.activeFormatting=[];break}case 39:{this.activeForeground=null;break}case 49:{this.activeBackground=null;break}default:if(r>=30&&r<=37||r>=90&&r<=97)this.activeForeground=e;else if(r>=40&&r<=47||r>=100&&r<=107)this.activeBackground=e;else if([1,2,3,4,7,8,9].includes(r))this.activeFormatting.push(e);else if([22,23,24,27,28,29].includes(r)){const l={22:"[1m",23:"[3m",24:"[4m",27:"[7m",28:"[8m",29:"[9m"}[r];l&&(this.activeFormatting=this.activeFormatting.filter(a=>!a.includes(l)))}}}getStartEscapesForAllActiveAttributes(){return[this.activeBackground,this.activeForeground,...this.activeFormatting].filter(Boolean).join("")}getEndEscapesForAllActiveAttributes(){const e=[];if(this.activeFormatting.length>0){const i={"\x1B[1m":"\x1B[22m","\x1B[2m":"\x1B[22m","\x1B[3m":"\x1B[23m","\x1B[4m":"\x1B[24m","\x1B[7m":"\x1B[27m","\x1B[8m":"\x1B[28m","\x1B[9m":"\x1B[29m"};[...this.activeFormatting].reverse().forEach(r=>{const l=i[r];l&&e.push(l)})}return this.activeForeground&&e.push("\x1B[39m"),this.activeBackground&&e.push("\x1B[49m"),e.join("")}}var $=Object.defineProperty,w=m((t,e)=>$(t,"name",{value:e,configurable:!0}),"o");const F=w((t,e)=>{if(!f.O.has(t[e]))return{isInsideEscape:!1,isInsideLinkEscape:!1};const i=!0,r=t.slice(e+1,e+1+f.S.length).join("")===f.S;return{isInsideEscape:i,isInsideLinkEscape:r}},"checkEscapeSequence"),C=w((t,e={})=>{const i=new R;let r="",l=!1,a=!1,n="",s="",u=!1;const h=[...t];for(let c=0;c<h.length;c++){const o=h[c];if(o&&f.O.has(o)){if(r){const p=e.getWidth?.(r)??0,E={isEscapeSequence:!1,isGrapheme:!0,text:r,width:p};if(u&&(E.isHyperlink=!0,E.hyperlinkUrl=s),e.onSegment?.(E,i)===!1)return;r=""}if(l=!0,n=o,a=F(h,c).isInsideLinkEscape,a){let p=c+1;for(s="";p<h.length;){const k=h[p];if(k===f.Q)break;s+=k,p+=1}s=s.slice(4);const E={hyperlinkUrl:s,isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkStart:!0,width:0};if(e.onSegment?.(E,i)===!1)return;c=p,u=!0,l=!1,a=!1,n="";continue}if(c+1<h.length&&h[c+1]==="\\"&&u){const p={isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkEnd:!0,width:0};if(e.onSegment?.(p,i)===!1)return;u=!1,s="",c+=1,l=!1,n="";continue}}if(l){if(n!==o&&(n+=o),o===f.P){l=!1,i.processEscape(n);const p={isEscapeSequence:!0,isGrapheme:!1,text:n,width:0};if(e.onSegment?.(p,i)===!1)return;n=""}continue}r+=o;const g=e.getWidth?.(r)??0,d={isEscapeSequence:!1,isGrapheme:!0,text:r,width:g};if(u&&(d.isHyperlink=!0,d.hyperlinkUrl=s),e.onSegment?.(d,i)===!1)return;r=""}if(r){const c=e.getWidth?.(r)??0,o={isEscapeSequence:!1,isGrapheme:!0,text:r,width:c};u&&(o.isHyperlink=!0,o.hyperlinkUrl=s),e.onSegment?.(o,i)}if(n){const c={isEscapeSequence:!0,isGrapheme:!1,text:n,width:0};e.onSegment?.(c,i)}},"processAnsiString");var H=Object.defineProperty,j=m((t,e)=>H(t,"name",{value:e,configurable:!0}),"t$1");const b=j(t=>`${f.O.values().next().value}${f.T}${t}${f.P}`,"wrapAnsiCode");var I=Object.defineProperty,P=m((t,e)=>I(t,"name",{value:e,configurable:!0}),"t");const W=P(t=>`${f.O.values().next().value}${f.S}${t}${f.Q}`,"wrapAnsiHyperlink");var q=Object.defineProperty,D=m((t,e)=>q(t,"name",{value:e,configurable:!0}),"l");const G=D(t=>{if(t.length===0)return"";if(t.length===1)return t[0];let e="",i,r;const l=t.join(`
`),a=[...l];let n=0;for(const[s,u]of a.entries()){if(e+=u,f.O.has(u)){const c=f.U.exec(l.slice(n))?.groups??{};if(c.code!==void 0){const o=Number.parseFloat(c.code);i=o===f.W?void 0:o}else c.uri!==void 0&&(r=c.uri.length===0?void 0:c.uri)}const h=f.V.get(Number(i));a[s+1]===`
`?(r&&(e+=W("")),i&&h&&(e+=b(h))):u===`
`&&(i&&h&&(e+=b(i)),r&&(e+=W(r))),n+=u.length}return e},"preserveAnsi");var K=Object.defineProperty,v=m((t,e)=>K(t,"name",{value:e,configurable:!0}),"h");const x=v(t=>{if(!t.includes("\x1B"))return t;let e=t;return t.includes("\x1B[30m")&&(e+="\x1B[39m"),t.includes("\x1B[42m")&&(e+="\x1B[49m"),e},"resetAnsiAtLineBreak"),A=v(t=>{const e=t.split(" ");let i=e.length;for(;i>0&&S.getStringWidth(e[i-1])===0;)i--;return i===e.length?t:e.slice(0,i).join(" ")+e.slice(i).join("")},"stringVisibleTrimSpacesRight"),y=v((t,e,i)=>{if(t.length===0)return[""];if(e<=0)return[t];const r=[],l=new R;let a="",n=0,s=!1,u=!1,h="";for(let c=0;c<t.length;c++){const o=t[c];if(f.O.has(o)){s=!0,h=o,a+=o,u=F([...t],c).isInsideLinkEscape;continue}if(s){h+=o,a+=o,u?o===f.Q&&(s=u=!1):o===f.P&&(s=!1,l.processEscape(h));continue}const g=S.getStringWidth(o),d=o===" ";if(g===0){a+=o;continue}if(n+g>e&&(a&&r.push(a+l.getEndEscapesForAllActiveAttributes()),a=l.getStartEscapesForAllActiveAttributes(),n=S.getStringWidth(a),d&&i)){for(;c<t.length&&t[c]===" "&&(c+=1,!(c>=t.length)););c<t.length&&c--;continue}if(a+=o,n+=g,n===e&&c<t.length-1&&(r.push(a+l.getEndEscapesForAllActiveAttributes()),a=l.getStartEscapesForAllActiveAttributes(),n=S.getStringWidth(a),c+1<t.length&&t[c+1]===" "&&i)){for(c+=1;c<t.length&&t[c]===" ";)c+=1;c--}}return a&&r.push(a+l.getEndEscapesForAllActiveAttributes()),i?r.map(c=>A(c)):r},"wrapWithBreakAtWidth"),L=v((t,e,i)=>{if(t.length===0)return[];const r=i?t.trim():t;if(r.length===0)return[];const l=[];let a="",n=0;return C(r,{getWidth:S.getStringWidth,onSegment:v((s,u)=>{if(s.isEscapeSequence)a+=s.text;else{const h=s.text===" ";if(s.width===0)return a+=s.text,!0;if(n+s.width>e&&(a&&l.push(a),a=u.getStartEscapesForAllActiveAttributes(),n=0,h))return i||l.push(u.getStartEscapesForAllActiveAttributes()+s.text),!0;a+=s.text,n+=s.width}return!0},"onSegment")}),a&&l.push(a),i?l.map(s=>A(s)):l},"wrapCharByChar"),M=v((t,e,i)=>{if(t.length===0)return[];const r=i?t.trim():t;if(r.length===0)return[];const l=r.split(/(?=\s)|(?<=\s)/),a=[];let n="",s=0,u=0;for(;u<l.length;){const h=l[u],c=/^\s+$/.test(h),o=S.getStringWidth(h);if(h.length===0){u+=1;continue}if(i&&c&&s===0){u+=1;continue}if(s+o>e&&s>0){i?a.push(A(n)):a.push(n),n="",s=0;continue}n+=h,s+=o,u+=1}return n&&(i?a.push(A(n)):a.push(n)),a},"wrapWithWordBoundaries"),U=v((t,e,i)=>{if(t.length===0)return[];const r=i?t.trim():t;if(r.length===0)return[];const l=r.split(/(?=\s)|(?<=\s)/),a=[];let n="",s=0,u=0;for(;u<l.length;){const h=l[u],c=/^\s+$/.test(h),o=S.getStringWidth(h);if(h.length===0){u+=1;continue}if(i&&c&&s===0){u+=1;continue}if(o>e){n&&a.push(x(i?A(n):n));const g=y(h,e,i);if(g.length>0){for(let d=0;d<g.length-1;d++)a.push(g[d]);n=g[g.length-1],s=S.getStringWidth(n)}else n="",s=0;u+=1;continue}if(s+o>e&&s>0&&(a.push(x(i?A(n):n)),n="",s=0,i&&c)){u+=1;continue}n+=h,s+=o,u+=1}return n&&a.push(x(i?A(n):n)),a},"wrapAndBreakWords"),B={BREAK_AT_CHARACTERS:"BREAK_AT_CHARACTERS",BREAK_WORDS:"BREAK_WORDS",PRESERVE_WORDS:"PRESERVE_WORDS",STRICT_WIDTH:"STRICT_WIDTH"},V=v((t,e={})=>{const{removeZeroWidthCharacters:i=!0,trim:r=!0,width:l=80,wrapMode:a=B.PRESERVE_WORDS}=e;if(r&&t.trim()==="")return"";let n=String(t).normalize("NFC").replaceAll(`\r
`,`
`);return i&&(n=n.replaceAll(f.X,"")),n.split(`
`).map(s=>{if(r&&s.trim()==="")return"";let u;switch(a){case B.BREAK_AT_CHARACTERS:{u=L(s,l,r);break}case B.BREAK_WORDS:{u=U(s,l,r);break}case B.STRICT_WIDTH:{u=y(s,l,r);break}default:u=M(s,l,r)}return G(u)}).join(`
`)},"wordWrap");exports.WrapMode=B;exports.wordWrap=V;