@easbot/terminal 0.3.11 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +165 -14
- package/README.md +162 -15
- package/dist/index.cjs +30 -9
- package/dist/index.d.cts +253 -11
- package/dist/index.d.ts +253 -11
- package/dist/index.mjs +30 -9
- package/package.json +3 -4
package/dist/index.cjs
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
|
-
'use strict';var
|
|
2
|
-
`).flatMap(
|
|
3
|
-
`)}function
|
|
4
|
-
`)
|
|
5
|
-
`)
|
|
6
|
-
`))){if(s
|
|
7
|
-
|
|
1
|
+
'use strict';var me=require('chalk'),de=require('os'),ye=require('path'),utils=require('@easbot/utils'),Y=require('@clack/prompts'),pe=require('readline'),util=require('util'),stream=require('stream'),he=require('process');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var me__default=/*#__PURE__*/_interopDefault(me);var de__default=/*#__PURE__*/_interopDefault(de);var ye__default=/*#__PURE__*/_interopDefault(ye);var Y__namespace=/*#__PURE__*/_interopNamespace(Y);var pe__namespace=/*#__PURE__*/_interopNamespace(pe);var he__default=/*#__PURE__*/_interopDefault(he);var kt="\\x1b\\[[0-9;]*m",Et="\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\",Rt=new RegExp(kt,"g"),It=new RegExp(Et,"g");function Z(e){return e?e.replace(It,"").replace(Rt,""):""}function K(e){return e?Array.from(Z(e)).length:0}var V={accent:"#FF5A2D",accentBright:"#FF7A3D",accentDim:"#D14A22",info:"#FF8A5B",success:"#2FBF71",warn:"#FFB020",error:"#E23D2D",muted:"#8B7F77"};var Mt=typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!=="0",ve=process.env.NO_COLOR&&!Mt?new me.Chalk({level:0}):me__default.default,j=e=>ve.hex(e),u={accent:j(V.accent),accentBright:j(V.accentBright),accentDim:j(V.accentDim),info:j(V.info),success:j(V.success),warn:j(V.warn),error:j(V.error),muted:j(V.muted),heading:ve.bold.hex(V.accent),command:j(V.accentBright),option:j(V.warn)},k=()=>ve.level>0,$=(e,t,o)=>e?t(o):o;exports.Symbol=void 0;(d=>{d.icons={success:"\u2713",error:"\u2717",warning:"\u26A0",info:"\u2139",accent:"\u25C6",muted:"\u25CB",heading:"\u25C6",active:"\u25C6",submit:"\u25C7",cancel:"\u25A0",locked:"\u2713",pending:"\u25CB",radioActive:"\u25CF",radioInactive:"\u25CB",skipped:"\u21A1",cursor:"\u276F",accentBright:"\u276F"},d.bar={vertical:"\u2502",horizontal:"\u2500",cornerBottom:"\u2514",cornerBottomRight:"\u2518",teeRight:"\u251C",stepActive:"\u25C6",bullet:"\u2022"};function o(l,f){let y=Pt(f);return $(k(),y,l)}d.colorize=o;function s(l){return o(d.icons[l],l)}d.statusIcon=s;function c(l,f){return `${s(l)} ${f}`}d.prefixed=c;})(exports.Symbol||(exports.Symbol={}));function Pt(e){switch(e){case "success":case "locked":case "submit":return u.success;case "error":case "cancel":return u.error;case "warning":return u.warn;case "info":return u.info;case "accent":case "active":case "radioActive":return u.accent;case "muted":case "pending":case "radioInactive":return u.muted;case "skipped":return u.muted;case "heading":return u.heading;case "cursor":case "accentBright":return u.accentBright}}function Wt(e){return exports.Symbol.prefixed("success",e)}function Ft(e){return exports.Symbol.prefixed("error",e)}function At(e){return exports.Symbol.prefixed("warning",e)}function Nt(e){return exports.Symbol.prefixed("info",e)}function Ht(e){return $(k(),u.heading,e)}function _t(e,t,o=15){let s=e.padEnd(o);return `${$(k(),u.muted,s)} ${t}`}function Bt(e,t){let o=k(),s=$(o,u.command,e);if(!t)return ` ${s}`;let c=$(o,u.muted,`# ${t}`);return ` ${s} ${c}`}function Jt(e,t,o){let s=k(),c=exports.Symbol.colorize(e,"info"),d=$(s,u.command,t),l=o?` ${$(s,u.muted,o)}`:"";return `${c} ${d}${l}`}var Vt={pending:"pending",running:"active",success:"success",error:"error",skipped:"skipped"};function Dt(e,t){return exports.Symbol.prefixed(Vt[e],t)}function Kt(e=80,t="\u2500"){return $(k(),u.muted,t.repeat(e))}function jt(e){return $(k(),u.muted,e)}function zt(e,t,o){let s=e===1?t:o||`${t}s`;return `${$(k(),u.accent,String(e))} ${s}`}function z(e){let t=e?.trim();return t?utils.Filesystem.toUnixPath(t):void 0}function Ve(e){try{return z(e())}catch{return}}function Yt(e,t){let o=z(e.EASBOT_TEST_HOME);if(o)return o;let s=z(e.EASBOT_HOME);if(s){if(s==="~"||s.startsWith("~/")||s.startsWith("~\\")){let l=z(e.HOME)??z(e.USERPROFILE)??Ve(t);return l?s.replace(/^~(?=$|[\\/])/,l):void 0}return s}let c=z(e.HOME);if(c)return c;let d=z(e.USERPROFILE);return d||Ve(t)}function te(e=process.env,t=de__default.default.homedir){let o=Yt(e,t);if(o)return o}function Se(e=process.env,t=de__default.default.homedir){return te(e,t)??utils.Filesystem.resolve(process.cwd())}function $e(e,t){if(!e.startsWith("~"))return z(e);let o=process.env.EASBOT_TEST_HOME?.trim();return o||(o=z(t?.home)??te(t?.env??process.env,t?.homedir??de__default.default.homedir)),o?e.replace(/^~(?=$|[\\/])/,o):z(e)}function Ke(e){if(!e)return "";let t=e.trim();if(!t)return t;if(t.startsWith("~")){let o=$e(t,{home:Se(process.env,de__default.default.homedir),env:process.env,homedir:de__default.default.homedir});return ye__default.default.resolve(o)}return ye__default.default.resolve(t)}function Gt(e=process.env,t=de__default.default.homedir){let o=e.EASBOT_STATE_DIR?.trim();if(o)return Ke(o);let c=te(e,t)??process.cwd();return ye__default.default.join(c,".config","easbot")}function je(){return te(process.env,de__default.default.homedir)}function ze(){let e=je();return e?process.env.EASBOT_TEST_HOME?.trim()?{home:e,prefix:"~"}:process.env.EASBOT_HOME?.trim()?{home:e,prefix:"$EASBOT_HOME"}:{home:e,prefix:"~"}:void 0}function Ye(e){if(!e)return e;let t=ze();if(!t)return e;let{home:o,prefix:s}=t;return e===o?s:e.startsWith(`${o}/`)||e.startsWith(`${o}\\`)?`${s}${e.slice(o.length)}`:e}function Ge(e){if(!e)return e;let t=ze();return t?e.split(t.home).join(t.prefix):e}function Ut(e){return Ye(e)}function we(e){return Ge(e)}function qt(e,t){return e?.force===true?true:e?.force===false?false:!!(t??process.stdout?.isTTY)}function se(e,t,o,s){let c=Z(e??""),d=Z(t??"");return qt(o,s)?`\x1B]8;;${d}\x07${c}\x1B]8;;\x07`:o?.fallback??`${c} (${d})`}function Qt(e,t,o,s,c){let d=t.trim();if(!e)return se(o??d,d,s,c);let l=/^[a-z]+:\/\//i.test(d)?d:`${e}${d.startsWith("/")?d:`/${d}`}`;return se(o??l,l,s,c)}function Xt(e,t,o){return se(t??e,e,void 0,o)}function Ue(e,t,o=true){return t===void 0?{ok:o,data:e}:{ok:o,data:e,meta:t}}function Zt(e,t){return Ue(e,t,false)}function qe(e,t=2){console.log(JSON.stringify(e,null,t));}function en(e){qe(e);}function tn(e,t){let o={ok:true,data:e};t!==void 0&&(o.meta=t),console.log(JSON.stringify(o,null,2));}function nn(e,t){console.log(JSON.stringify({ok:false,error:{code:e,message:t}},null,2));}var Ce=e=>k()?u.accent(e):e,ke=e=>e&&k()?u.heading(e):e,Ee=e=>e&&k()?u.muted(e):e;var on=/^(https?:\/\/|file:\/\/)/i,sn=/^[a-zA-Z]:[\\/]/,an=/^[a-zA-Z0-9._-]+$/;function Qe(e,t){if(t<=0)return [e];let o=Array.from(e),s=[];for(let c=0;c<o.length;c+=t)s.push(o.slice(c,c+t).join(""));return s.length>0?s:[e]}function Xe(e){return e?on.test(e)||e.startsWith("/")||e.startsWith("~/")||e.startsWith("./")||e.startsWith("../")||sn.test(e)||e.startsWith("\\\\")||e.includes("/")||e.includes("\\")?true:e.includes("_")&&an.test(e):false}function cn(e,t){if(e.trim().length===0)return [e];if(t<=0)return [e];let o=e.match(/^(\s*)([-*\u2022]\s+)?(.*)$/),s=o?.[1]??"",c=o?.[2]??"",d=o?.[3]??"",l=`${s}${c}`,f=`${s}${c?" ".repeat(c.length):""}`,y=Math.max(10,t-K(l)),w=Math.max(10,t-K(f)),E=d.split(/\s+/).filter(Boolean),L=[],S="",a=l,r=y;for(let x of E){if(!S){if(K(x)>r){if(Xe(x)){S=x;continue}let T=Qe(x,r),b=T.shift()??"";L.push(a+b),a=f,r=w;for(let g of T)L.push(a+g);continue}S=x;continue}let n=`${S} ${x}`;if(K(n)<=r){S=n;continue}if(L.push(a+S),a=f,r=w,K(x)>r){if(Xe(x)){S=x;continue}let T=Qe(x,r),b=T.shift()??"";L.push(a+b);for(let g of T)L.push(a+g);S="";continue}S=x;}return (S||E.length===0)&&L.push(a+S),L}function Ze(e,t={}){let o=process.stdout?.columns??80,s=t.columns??o,c=t.maxWidth??Math.max(40,Math.min(88,s-10));return e.split(`
|
|
2
|
+
`).flatMap(d=>cn(d,c)).join(`
|
|
3
|
+
`)}function ae(e,t,o={}){let s=o.columns??process.stdout?.columns,c=Ze(e,{columns:s,maxWidth:o.maxWidth});Y.note(c,ke(t));}function ln(e,t={}){if(t.boxed===true){un(e,t);return}console.log(et(e,t));}function et(e,t={}){let o=k(),s=e.length>0,c=s?e:[t.empty??"No results."],d=s?t.title:t.emptyTitle??t.title,l=[];d&&l.push($(o,u.heading,d));for(let f of c)l.push(` ${f}`);if(!t.skipOutro){let f=t.outro!==void 0?t.outro:"Done!";f&&l.push($(o,u.success,f));}return l.join(`
|
|
4
|
+
`)}function un(e,t){let o=k(),s=e.length>0,c=s?e.join(`
|
|
5
|
+
`):t.empty??"No results.",d=s?t.title:t.emptyTitle??t.title;if(d?ae(c,d):console.log(c),!t.skipOutro){let l=t.outro!==void 0?t.outro:"Done!";l&&console.log($(o,u.success,l));}}function tt(e){let t=k(),o=[];if(o.push($(t,u.heading,e.title)),e.flat&&e.flat.length>0)for(let s of e.flat)o.push(` ${s}`);if(e.groups&&e.groups.length>0)for(let s of e.groups){if(s.key){let c=s.detail?` ${$(t,u.muted,s.detail)}`:"";o.push($(t,u.heading,s.key)+c);}for(let c of s.rows)o.push(` ${c}`);}if(e.footer&&e.footer.length>0)for(let s of e.footer)o.push($(t,u.muted,s));return o.join(`
|
|
6
|
+
`)}function fn(e){console.log(tt(e));}function nt(e,t=5){if(e.length<=t)return e.join(", ");let o=e.slice(0,t).join(", "),s=e.length-t;return `${o} +${s} more`}var dn=nt;var rt=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],ot=80;exports.Loader=void 0;(t=>{function e(o={}){let s=[...rt],c=ot,d=0,l=null,f=o.message??"Loading...",y=o.spinnerColor??(a=>$(k(),u.accent,a)),w=o.messageColor??(a=>$(k(),u.muted,a)),E=a=>{s=a.frames!==void 0?[...a.frames]:[...rt],c=a.intervalMs!==void 0&&a.intervalMs>0?a.intervalMs:ot,d=0;};o.indicator&&E(o.indicator);function L(){S(),!(s.length<=1)&&(l=setInterval(()=>{d=(d+1)%s.length;},c));}function S(){l!==null&&(clearInterval(l),l=null);}return {start:L,stop:S,isRunning(){return l!==null},line(){let a=s[d]??"";return `${(a.length>0?Z(y(a)).length:0)>0?`${y(a)} `:""}${w(f)}`},setMessage(a){f=a;},setIndicator(a){E(a??{}),L();}}}t.create=e;})(exports.Loader||(exports.Loader={}));var gn=new stream.Writable({write(e,t,o){o();}}),q;(S=>{S.cancelSymbol=Symbol("Search.cancel");function t(a){let r=0;for(let x of a){let n=x.codePointAt(0);if(n===void 0||n===0)continue;let T=n>=4352&&n<=4447||n>=8986&&n<=8987||n>=9001&&n<=9002||n>=9193&&n<=9196||n===9200||n===9203||n>=9725&&n<=9726||n>=9748&&n<=9749||n>=9800&&n<=9811||n===9855||n===9875||n===9889||n>=9898&&n<=9899||n>=9917&&n<=9918||n>=9924&&n<=9925||n===9934||n===9940||n===9962||n>=9970&&n<=9971||n===9973||n===9978||n===9981||n===9989||n>=9994&&n<=9995||n===10024||n===10060||n===10062||n>=10067&&n<=10069||n===10071||n>=10133&&n<=10135||n===10160||n===10175||n>=11035&&n<=11036||n===11088||n===11093||n>=11904&&n<=42191&&n!==12351||n>=43360&&n<=43388||n>=44032&&n<=55203||n>=63744&&n<=64255||n>=65040&&n<=65049||n>=65072&&n<=65135||n>=65280&&n<=65376||n>=65504&&n<=65510||n>=126976&&n<=129535;r+=T?2:1;}return r}S.approxStringWidth=t;function o(a,r){let x=util.stripVTControlCharacters(a),n=Math.max(1,r),T=t(x);return Math.max(1,Math.ceil(T/n))}S.visualRowsForLine=o;function s(a,r){let x=r!==void 0&&r>0?r:process.stdout.columns&&process.stdout.columns>0?process.stdout.columns:80,n=0;for(let T of a)n+=o(T,x);return n}S.countVisualRowsForLines=s;function c(a){let r=new Array(a.length);for(let x=0;x<a.length;x++){let n=a[x],T=n.value===null||n.value===void 0?"":String(n.value);r[x]={...n,searchKey:`${n.label}
|
|
7
|
+
${T}`.toLowerCase()};}return r}function d(a,r){return r===""||a.searchKey.includes(r)}function l(a,r){return r<=0||a<0?0:a>=r?r-1:a}function f(a){if(a?.length!==1)return false;let r=a.codePointAt(0);return !(r===void 0||r<32||r===127||r===27)}function y(){let a=process.stdout.rows;if(!a||a<=0)return 8;let r=Math.floor((a-8)/2);return Math.max(5,Math.min(15,r))}function w(a,r){try{a.write(r);}catch{}}function E(a){if(a&&a.isTTY&&typeof a.setRawMode=="function")try{a.setRawMode(!1);}catch{}}function L(a){let r=a.message,x=c(a.items),n=Math.max(1,a.maxVisible??y()),T=a.initialSelected??[],b=a.required??false,g=a.lockedSection,i=a.isTTY;i??!!process.stdout?.isTTY;return new Promise(m=>{let p=process.stdin,C=process.stdout,_=pe__namespace.createInterface({input:p,output:gn,terminal:false});try{(i===!0||i===void 0&&p.isTTY)&&p.setRawMode?.(!0);}catch{}pe__namespace.emitKeypressEvents(p,_);let P="",W="",I=0,M=new Set(T),B=0,D=false,Q=g?g.items.map(R=>R.value):[],st=g?g.items.map(R=>R.label):[],le=[],Le=()=>{if(le.length=0,W==="")for(let R=0;R<x.length;R++){let v=x[R];le.push(v);}else for(let R=0;R<x.length;R++){let v=x[R];d(v,W)&&le.push(v);}return le},at=()=>{if(B>0){w(C,`\x1B[${B}A`);for(let R=0;R<B;R++)w(C,"\x1B[2K\x1B[1B");w(C,`\x1B[${B}A`);}},Me=()=>{let R=st.slice();for(let v=0;v<x.length;v++){let N=x[v];M.has(N.value)&&R.push(N.label);}return R},J=(R="active")=>{at();let v=[],N=Le(),G=i===false?false:i===true?true:k(),He=H=>$(G,u.error,H),fe=H=>$(G,u.success,H),O=H=>$(G,u.muted,H),xe=H=>$(G,u.heading,H),mt=H=>$(G,me__default.default.bold,H),pt=H=>$(G,me__default.default.underline,H),gt=H=>$(G,me__default.default.inverse,H),ht=H=>$(G,me__default.default.strikethrough,H),xt=O(exports.Symbol.bar.vertical);exports.Symbol.bar.horizontal;fe(exports.Symbol.bar.bullet);let _e=R==="active"||R==="error"?exports.Symbol.icons.active:R==="cancel"?exports.Symbol.icons.cancel:exports.Symbol.icons.submit,bt=R==="cancel"||R==="error"?He(_e):fe(_e);if(v.push(`${bt} ${mt(r)}`),R==="active"||R==="error"){if(g&&g.items.length>0){v.push(xt);let X=`${xe(g.title)} ${O("\u2500\u2500 always included")}`;v.push(`${O("\u2502")} ${O("\u2500\u2500")} ${X} ${O("\u2500".repeat(12))}`);for(let oe of g.items)v.push(`${O("\u2502")} ${fe("\u2022")} ${xe(oe.label)}`);g.hiddenCount&&g.hiddenCount>0&&v.push(`${O("\u2502")} ${O(`...and ${g.hiddenCount} more`)}`),v.push(O("\u2502")),v.push(`${O("\u2502")} ${O("\u2500\u2500")} ${xe("Additional agents")} ${O("\u2500".repeat(29))}`);}let H=`${O("\u2502")} ${O("Search:")} ${P}${gt(" ")}`;v.push(H),v.push(`${O("\u2502")} ${O("\u2191\u2193 move \xB7 space select \xB7 enter confirm")}`),v.push(O("\u2502"));let vt=Math.max(0,N.length-n),Tt=I-Math.floor(n/2),be=Math.max(0,Math.min(Tt,vt)),Be=Math.min(N.length,be+n);if(N.length===0)v.push(`${O("\u2502")} ${O("No matches found")}`);else {for(let U=be;U<Be;U++){let ie=N[U],St=M.has(ie.value),Je=U===I,$t=St?exports.Symbol.statusIcon("radioActive"):exports.Symbol.colorize(exports.Symbol.icons.radioInactive,"radioInactive"),yt=Je?pt(ie.label):ie.label,wt=ie.hint?O(` (${ie.hint})`):"",Ct=Je?exports.Symbol.colorize(exports.Symbol.icons.cursor,"cursor"):" ";v.push(`${O("\u2502")} ${Ct} ${$t} ${yt}${wt}`);}let X=be,oe=N.length-Be;if(X>0||oe>0){let U=[];X>0&&U.push(`\u2191 ${X} more`),oe>0&&U.push(`\u2193 ${oe} more`),v.push(`${O("\u2502")} ${O(U.join(" "))}`);}}v.push(O("\u2502"));let re=Me();if(re.length===0)v.push(`${O("\u2502")} ${O("Selected: (none)")}`);else {let X=re.length<=3?re.join(", "):`${re.slice(0,3).join(", ")} +${re.length-3} more`;v.push(`${O("\u2502")} ${fe("Selected:")} ${X}`);}R==="error"&&v.push(`${O("\u2502")} ${He("\u26A0 Please select at least one item before submitting")}`),v.push(`${O("\u2514")}`);}else if(R==="submit"){let H=Me();v.push(`${O("\u2502")} ${O(H.join(", "))}`);}else v.push(`${O("\u2502")} ${ht(O("Cancelled"))}`);w(C,`${v.join(`
|
|
8
8
|
`)}
|
|
9
|
-
`
|
|
9
|
+
`);try{B=s(v,C.columns);}catch{B=v.length;}},Pe=false,ct=()=>{if(!Pe){Pe=true;try{p.removeListener("keypress",Ne),p.removeListener("end",Ae);}catch{}try{process.removeListener("SIGINT",ue),process.removeListener("SIGTERM",ue);}catch{}E(p);try{_.close();}catch{}}},We=R=>{D||(D=true,ct(),m(R));},lt=()=>{if(b&&M.size===0&&Q.length===0){J("error");return}J("submit"),We([...Q,...Array.from(M)]);},Fe=()=>{J("cancel"),We(S.cancelSymbol);},Ae=()=>{Fe();},ue=()=>{E(p);},ut=R=>{let v=R[I];v&&(M.has(v.value)?M.delete(v.value):M.add(v.value));},ft=R=>{P+=R,W+=R.toLowerCase();},dt=()=>{P.length!==0&&(P=P.slice(0,-1),W=W.slice(0,-1));},Ne=(R,v)=>{if(!v)return;let N=Le();if(I=l(I,N.length),v.name==="return"){lt();return}if(v.name==="escape"||v.ctrl&&v.name==="c"){Fe();return}if(v.name==="up"||v.name==="left"){N.length>0&&(I=l(I-1,N.length),J());return}if(v.name==="down"||v.name==="right"){N.length>0&&(I=l(I+1,N.length),J());return}if(v.name==="pageup"){N.length>0&&(I=l(I-n,N.length),J());return}if(v.name==="pagedown"){N.length>0&&(I=l(I+n,N.length),J());return}if(v.name==="home"){N.length>0&&(I=0,J());return}if(v.name==="end"){N.length>0&&(I=N.length-1,J());return}if(v.name==="space"){ut(N),J();return}if(v.name==="backspace"){P.length>0&&(dt(),I=0,J());return}!v.ctrl&&!v.meta&&f(v.sequence)&&(ft(v.sequence),I=0,J());};p.on("keypress",Ne),p.once("end",Ae),process.on("SIGINT",ue),process.on("SIGTERM",ue),J();})}S.multiselect=L;})(q||(q={}));exports.Prompt=void 0;(a=>{a.cancelSymbol=q.cancelSymbol;function t(r){return r===a.cancelSymbol||typeof r=="symbol"}a.isCancel=t;async function o(r){return await Y__namespace.select({message:r.message,options:r.options,...r.initialValue!==void 0?{initialValue:r.initialValue}:{}})}a.select=o;async function s(r){return await Y__namespace.groupMultiselect({message:r.message,options:r.options,...r.initialValues!==void 0?{initialValues:r.initialValues}:{},...r.required!==void 0?{required:r.required}:{}})}a.groupMultiselect=s;async function c(r){return await Y__namespace.text({message:r.message,...r.placeholder!==void 0?{placeholder:r.placeholder}:{},...r.defaultValue!==void 0?{defaultValue:r.defaultValue}:{},...r.validate!==void 0?{validate:r.validate}:{}})}a.text=c;async function d(r){return await Y__namespace.password({message:r.message,...r.mask!==void 0?{mask:r.mask}:{}})}a.password=d;async function l(r){return await Y__namespace.confirm({message:r.message,...r.initialValue!==void 0?{initialValue:r.initialValue}:{}})}a.confirm=l;async function f(r){if(r.withGuide===true){let n=r.guideLines??["Use \u2191 / \u2193 to navigate","Press Space to toggle selection","Press a to toggle all","Press i to invert selection","Press Enter to submit"];ae(n.join(`
|
|
10
|
+
`),"\u64CD\u4F5C\u63D0\u793A");}return await q.multiselect({message:r.message,items:r.options,...r.initialValues!==void 0?{initialSelected:r.initialValues}:{},...r.required!==void 0?{required:r.required}:{},...r.lockedSection!==void 0?{lockedSection:r.lockedSection}:{},...r.maxVisible!==void 0?{maxVisible:r.maxVisible}:{},...r.isTTY!==void 0?{isTTY:r.isTTY}:{}})}a.multiselect=f;function y(r){let x=k(),n=$(x,u.heading,r),T=$(x,u.muted,"\u2500".repeat(Math.max(8,r.length*2)));process.stdout.write(`${n}
|
|
11
|
+
${T}
|
|
12
|
+
`);}a.intro=y;function w(r,x){let n=k(),T=x?.success!==false,b=r??"Done!",g=T?u.success:u.error,i=$(n,g,b),h=$(n,u.muted,"\u2500".repeat(Math.max(8,b.length*2)));process.stdout.write(`${i}
|
|
13
|
+
${h}
|
|
14
|
+
`);}a.outro=w;function E(r){let x=k(),n=r??"Cancelled.",T=`${exports.Symbol.statusIcon("cancel")} ${n}`,b=$(x,u.muted,"\u2500".repeat(Math.max(8,n.length*2)));process.stdout.write(`${T}
|
|
15
|
+
${b}
|
|
16
|
+
`),process.exit(0);}a.cancel=E;(h=>{function r(m,p){i("info",m,p);}h.info=r;function x(m,p){i("warning",m,p);}h.warn=x;function n(m,p){i("error",m,p);}h.error=n;function T(m){i("success",m);}h.success=T;function b(m){let p=`${exports.Symbol.statusIcon("active")} ${m}`;process.stdout.write(`${p}
|
|
17
|
+
`);}h.step=b;function g(m){process.stdout.write(`${m}
|
|
18
|
+
`);}h.message=g;function i(m,p,C){let _=k(),P=`${exports.Symbol.statusIcon(m)} ${p}`;if(C){let W=$(_,u.muted,C);process.stdout.write(`${P}
|
|
19
|
+
${W}
|
|
20
|
+
`);}else process.stdout.write(`${P}
|
|
21
|
+
`);}})(a.Log||(a.Log={}));function S(r){let x=r?.color??(i=>$(k(),u.accent,i)),n=i=>$(k(),u.muted,i),T=exports.Loader.create({...r?.frames!==void 0?{message:""}:{},spinnerColor:x,messageColor:n,indicator:{frames:r?.frames??[],intervalMs:80}}),b=null,g=false;return {start(i){i!==void 0&&T.setMessage(i),!g&&(g=true,T.start(),b=setInterval(()=>{process.stdout.write(`\r${T.line()}\x1B[K`);},80));},stop(i){b!==null&&(clearInterval(b),b=null),i!==void 0&&T.setMessage(i),T.stop(),process.stdout.write(`\r${T.line()}\x1B[K
|
|
22
|
+
`),g=false;},update(i){T.setMessage(i);},line(){return T.line()}}}a.spinner=S;})(exports.Prompt||(exports.Prompt={}));var ne=null;function hn(e,t){try{e.write(t);}catch{}}function xn(e){e.isTTY&&(ne=e);}function Ie(){ne?.isTTY&&hn(ne,"\r\x1B[2K");}function bn(e){ne&&(e&&ne!==e||(ne=null));}function Tn(e){return Y.select({...e,message:Ce(e.message),options:e.options.map(t=>t.hint===void 0?t:{...t,hint:Ee(t.hint)})})}var Sn="\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l";function ge(e,t,o){let s=o?` (${o})`:"",c=`[terminal] restore ${e} failed${s}: ${String(t)}`;try{he__default.default.stderr.write(`${c}
|
|
23
|
+
`);}catch(d){console.error(`[terminal] restore reporting failed${s}: ${String(d)}`);}}function $n(e,t={}){let o=t.resumeStdinIfPaused??t.resumeStdin??false;try{Ie();}catch(c){ge("progress line",c,e);}let s=he__default.default.stdin;if(s?.isTTY&&typeof s.setRawMode=="function"){try{s.setRawMode(!1);}catch(c){ge("raw mode",c,e);}if(o&&typeof s.isPaused=="function"&&s.isPaused())try{s.resume();}catch(c){ge("stdin resume",c,e);}}if(he__default.default.stdout?.isTTY)try{he__default.default.stdout.write(Sn);}catch(c){ge("stdout reset",c,e);}}function wn(e){let t=e?.code;return t==="EPIPE"||t==="EIO"}function Cn(e={}){let t=false,o=false,s=(f,y)=>{o||(o=true,e.onBrokenPipe?.(f,y));},c=(f,y)=>{if(!wn(f))throw f;return t=true,s(f,y),false},d=(f,y)=>{if(t)return false;try{e.beforeWrite?.();}catch(w){return c(w,he__default.default.stderr)}try{return f.write(y),!t}catch(w){return c(w,f)}};return {write:d,writeLine:(f,y)=>d(f,`${y}
|
|
24
|
+
`),reset:()=>{t=false,o=false;},isClosed:()=>t}}function ee(e,t){return !Number.isFinite(t)||t<=0?"":e.repeat(t)}function kn(e,t,o){let s=K(e);if(s>=t)return e;let c=t-s;if(o==="right")return `${ee(" ",c)}${e}`;if(o==="center"){let d=Math.floor(c/2),l=c-d;return `${ee(" ",d)}${e}${ee(" ",l)}`}return `${e}${ee(" ",c)}`}function En(e,t){if(!e||e.length===0)return [""];if(!Number.isFinite(t)||t<=0)return [e];let o="\x1B",s=[];for(let i=0;i<e.length;){if(e[i]===o){if(e[i+1]==="["){let p=i+2;for(;p<e.length;){let C=e[p];if(C==="m")break;if(C&&C>="0"&&C<="9"){p+=1;continue}if(C===";"){p+=1;continue}break}if(e[p]==="m"){s.push({kind:"ansi",value:e.slice(i,p+1)}),i=p+1;continue}}if(e[i+1]==="]"&&e.slice(i+2,i+5)==="8;;"){let p=e.indexOf(`${o}\\`,i+5);if(p>=0){s.push({kind:"ansi",value:e.slice(i,p+2)}),i=p+2;continue}}}let h=e.codePointAt(i);if(!h)break;let m=String.fromCodePoint(h);s.push({kind:"char",value:m}),i+=m.length;}let c=s.findIndex(i=>i.kind==="char");if(c<0)return [e];let d=-1;for(let i=s.length-1;i>=0;i-=1){let h=s[i];if(h&&h.kind==="char"){d=i;break}}let l=s.slice(0,c).filter(i=>i.kind==="ansi").map(i=>i.value).join(""),f=s.slice(d+1).filter(i=>i.kind==="ansi").map(i=>i.value).join(""),y=s.slice(c,d+1),w=[],E=i=>i===" "||i===" "||i==="/"||i==="-"||i==="_"||i===".",L=i=>i===" "||i===" ",S=false,a=[],r=0,x=null,n=i=>(i??a).map(h=>h.value).join(""),T=i=>i.reduce((h,m)=>h+(m.kind==="char"?1:0),0),b=i=>{let h=i.replace(/\s+$/,"");h.trim().length!==0&&w.push(h);},g=i=>{if(a.length===0)return;if(i==null||i<=0){b(n()),a.length=0,r=0,x=null;return}let h=a.slice(0,i),m=a.slice(i);for(b(n(h));m.length>0;){let p=m[0];if(p?.kind!=="char"||!L(p.value))break;m.shift();}a.length=0,a.push(...m),r=T(a),x=null;};for(let i of y){if(i.kind==="ansi"){a.push(i);continue}let h=i.value;if(!(S&&(S=false,h===`
|
|
25
|
+
`))){if(h===`
|
|
26
|
+
`||h==="\r"){g(a.length),h==="\r"&&(S=true);continue}r+1>t&&r>0&&g(x),a.push(i),r+=1,E(h)&&(x=a.length);}}return g(a.length),w.length===0?[""]:!l&&!f?w:w.map(i=>i&&`${l}${i}${f}`)}function Rn(e){if(e!=null&&!(!Number.isFinite(e)||e<=0))return Math.floor(e)}function In(e){let t=e.rows.map(b=>{let g={};for(let[i,h]of Object.entries(b))g[i]=we(h);return g}),o=e.border??"unicode";if(o==="none"){let b=e.columns;return `${[b.map(h=>h.header).join(" | "),...t.map(h=>b.map(m=>h[m.key]??"").join(" | "))].join(`
|
|
10
27
|
`)}
|
|
11
|
-
`}
|
|
28
|
+
`}let s=Math.max(0,e.padding??1),c=e.columns,d=c.map(b=>{let g=K(b.header),i=Math.max(0,...t.map(h=>K(h[b.key]??"")));return {headerW:g,cellW:i}}),l=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);let h=Math.max(i.headerW,i.cellW)+s*2,m=b.maxWidth?Math.min(h,b.maxWidth):h;return Math.max(b.minWidth??3,m)}),f=Rn(e.width),y=c.length+1,w=l.reduce((b,g)=>b+g,0)+y,E=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);return Math.max(b.minWidth??3,i.headerW+s*2,3)}),L=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);return Math.max(i.headerW+s*2,3)});if(f&&w>f){let b=w-f,g=c.map((m,p)=>{let C=l[p];if(C===void 0)throw new Error(`Internal error: widths[${p}] is undefined`);return {i:p,w:C}}).filter(({i:m})=>!!c[m]?.flex).toSorted((m,p)=>p.w-m.w).map(m=>m.i),i=c.map((m,p)=>{let C=l[p];if(C===void 0)throw new Error(`Internal error: widths[${p}] is undefined`);return {i:p,w:C}}).filter(({i:m})=>!c[m]?.flex).toSorted((m,p)=>p.w-m.w).map(m=>m.i),h=(m,p)=>{let C=[],_=0;for(let W of m){let I=l[W],M=p[W];if(I===void 0||M===void 0)continue;let B=I-M;B<=0||(C.push({i:W,free:B}),_+=B);}if(C.length===0)return;let P=b;for(let{i:W,free:I}of C){if(P<=0)break;let M=l[W],B=p[W];if(M===void 0||B===void 0)continue;let D=Math.min(I,Math.floor(I*P/_)),Q=Math.min(D,P);l[W]=M-Q,P-=Q;}for(let{i:W}of C){if(P<=0)break;let I=l[W],M=p[W];I===void 0||M===void 0||I<=M||(l[W]=I-1,P-=1);}b=P;};h(g,E),h(g,L),h(i,E),h(i,L);}if(f){let b=c.length+1,g=l.reduce((h,m)=>h+m,0)+b,i=f-g;if(i>0){let h=c.map((m,p)=>({c:m,i:p})).filter(({c:m})=>!!m.flex).map(({i:m})=>m);if(h.length>0){let m=c.map(p=>typeof p.maxWidth=="number"&&p.maxWidth>0?Math.floor(p.maxWidth):Number.POSITIVE_INFINITY);for(;i>0;){let p=false;for(let C of h){let _=l[C],P=m[C];if(!(_===void 0||P===void 0)&&!(_>=P)&&(l[C]=_+1,i-=1,p=true,i<=0))break}if(!p)break}}}}let S=o==="ascii"?{tl:"+",tr:"+",bl:"+",br:"+",h:"-",v:"|",t:"+",ml:"+",m:"+",mr:"+",b:"+"}:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502",t:"\u252C",ml:"\u251C",m:"\u253C",mr:"\u2524",b:"\u2534"},a=(b,g,i)=>`${b}${l.map(h=>{if(h===void 0)throw new Error("Internal error: width is undefined");return ee(S.h,h)}).join(g)}${i}`,r=b=>{let g=l[b];if(g===void 0)throw new Error(`Internal error: widths[${b}] is undefined`);return Math.max(1,g-s*2)},x=ee(" ",s),n=(b,g=false)=>{let h=c.map(C=>g?C.header:b[C.key]??"").map((C,_)=>En(C,r(_))),m=Math.max(...h.map(C=>C.length)),p=[];for(let C=0;C<m;C+=1){let _=h.map((P,W)=>{let I=P[C],M=c[W];if(!M)throw new Error(`Internal error: columns[${W}] is undefined`);let B=r(W);if(I===void 0)return `${x}${ee(" ",B)}${x}`;let D=kn(I,B,M.align??"left");return `${x}${D}${x}`});p.push(`${S.v}${_.join(S.v)}${S.v}`);}return p},T=[];T.push(a(S.tl,S.t,S.tr)),T.push(...n({},true)),T.push(a(S.ml,S.m,S.mr));for(let b of t)T.push(...n(b,false));return T.push(a(S.bl,S.b,S.br)),`${T.join(`
|
|
29
|
+
`)}
|
|
30
|
+
`}var On=[{prefix:"failed",color:u.error},{prefix:"ok",color:u.success},{prefix:"linked",color:u.success},{prefix:"configured",color:u.success},{prefix:"not linked",color:u.warn},{prefix:"not configured",color:u.muted},{prefix:"unknown",color:u.warn}];function Ln(e,t){if(!t)return e;let o=e.indexOf(":");if(o===-1)return e;let s=e.slice(0,o+1),c=e.slice(o+1).trimStart(),d=c.toLowerCase();for(let{prefix:l,color:f}of On)if(d.startsWith(l))return `${s} ${f(c.slice(0,l.length))}${c.slice(l.length)}`;return e}var Mn=e=>$(k(),u.accent,e),Pn=e=>$(k(),u.muted,e);exports.Input=void 0;(l=>{function e(f){let y=f;typeof y.resume=="function"&&y.resume();}function t(f,y){try{f.write(y);}catch{}}function o(f,y,w){let E=f;for(let L=0;L<y.length;L+=1){let S=y[L],a=S.charCodeAt(0);if(a===3)return {buffer:E,done:true,line:""};if(a===4)return {buffer:E,done:true,line:E};if(a===10||a===13)return {buffer:"",done:true,line:E};if((a===8||a===127)){E=E.slice(0,-1);continue}E+=S;}return {buffer:E,done:false,line:""}}function s(f){return new Promise((y,w)=>{let{message:E,hint:L,defaultValue:S,hidden:a,input:r,output:x,messageColor:n,hintColor:T}=f,b=(n??Mn)(E),g=L?` ${(T??Pn)(`(${L})`)}`:"",i=S?` [${S}]`:"",h=a?`${b}${g}: `:`${b}${g}${i}: `,m=r??he__default.default.stdin,p=x??he__default.default.stdout;t(p,h);let C="",_=false,P=M=>{_||(_=true,M(),m.off("data",W),m.off("end",I));},W=M=>{let B=typeof M=="string"?M:M.toString("utf8");if(B.includes("")){P(()=>w(new Error("Input canceled")));return}let D=o(C,B);if(C=D.buffer,!D.done)return;let Q=D.line.length===0&&S!==void 0?S:D.line;P(()=>y(Q));},I=()=>{if(_)return;let M=C.length===0&&S!==void 0?S:C;P(()=>y(M));};m.on("data",W),m.once("end",I),e(m);})}l.readText=s;async function c(f){let y=f.defaultValue!==false,E=(await s({message:f.message,hint:f.hint??`y/n, default ${y?"y":"n"}`,defaultValue:y?"y":"n",messageColor:f.messageColor,hintColor:f.hintColor,input:f.input,output:f.output})).trim().toLowerCase();return E===""?y:E==="y"||E==="yes"?true:E==="n"||E==="no"?false:c(f)}l.readConfirm=c;function d(f){return s({...f,hidden:true})}l.readPassword=d;})(exports.Input||(exports.Input={}));var Wn=e=>$(k(),u.heading,e),Fn=e=>$(k(),u.command,e),An=e=>$(k(),u.muted,e),Nn=e=>$(k(),u.warn,e),Hn=e=>$(k(),u.accent,e);function _n(e,t,o,s,c,d){let l=e;return l=l.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(f,y,w)=>`${d(y)} (${w})`),l=l.replace(/`([^`]+)`/g,(f,y)=>c(y)),l=l.replace(/\*\*([^*]+)\*\*/g,(f,y)=>o(y)),l=l.replace(/(^|[^*])\*([^*]+)\*(?!\*)/g,(f,y,w)=>`${y}${s(w)}`),l}function Bn(e,t={}){if(!e)return [];let o=t.headingColor??Wn,s=t.boldColor??Fn,c=t.italicColor??An,d=t.codeColor??Nn,l=t.linkColor??Hn,f=n=>_n(n,o,s,c,d,l),y=e.replace(/\r\n/g,`
|
|
31
|
+
`).split(`
|
|
32
|
+
`),w=[],E=false,L=[],S="",a=0,r=true,x=()=>{if(L.length!==0){w.push(d(`\`\`\`${S}`));for(let n of L)w.push(d(n));w.push(d("```")),L=[],S="";}};for(let n of y){let T=n;if(T.trim().startsWith("```")){if(!E){x(),E=true,S=T.trim().slice(3).trim(),w.push(d(`\`\`\`${S}`)),r=false;continue}for(let h of L)w.push(d(h));L=[],w.push(d("```")),E=false,S="",r=false;continue}if(E){L.push(T);continue}let b=/^(#{1,3})\s+(.+)$/.exec(T);if(b){let h=b[1]??"#",m=b[2]??"";w.push(o(`${h} ${f(m)}`)),r=false;continue}if(/^(\s*[-*_])\s*\1\s*\1[-*_\s]*$/.test(T)||/^---\s*$/.test(T)||/^\*\*\*\s*$/.test(T)){w.push(d("\u2500".repeat(40))),r=true;continue}let g=/^\s*[-*]\s+(.+)$/.exec(T),i=/^\s*\d+\.\s+(.+)$/.exec(T);if(g){let h=g[1]??"";w.push(` \u2022 ${f(h)}`),a=0,r=false;continue}if(i){let h=i[1]??"";a+=1,w.push(` ${a}. ${f(h)}`),r=false;continue}if(T.trim()===""){r||w.push(""),r=true,a=0;continue}w.push(f(T)),r=false,a=0;}return E&&x(),w}var Co=q,ko=q.cancelSymbol;exports.LOBSTER_PALETTE=V;exports.Search=Co;exports.cancelSymbol=ko;exports.clearActiveProgressLine=Ie;exports.colorize=$;exports.createSafeStreamWriter=Cn;exports.displayPath=Ut;exports.displayString=we;exports.emitCommandJson=en;exports.emitJson=qe;exports.emitJsonError=nn;exports.emitJsonOk=tn;exports.expandHomePrefix=$e;exports.formatCommandExample=Bt;exports.formatCount=zt;exports.formatEmptyMessage=jt;exports.formatError=Ft;exports.formatHeading=Ht;exports.formatInfo=Nt;exports.formatKeyValue=_t;exports.formatList=dn;exports.formatListItem=Jt;exports.formatListTruncated=nt;exports.formatPrintHuman=et;exports.formatRootLink=Xt;exports.formatRootedLink=Qt;exports.formatSeparator=Kt;exports.formatStatus=Dt;exports.formatSuccess=Wt;exports.formatTerminalLink=se;exports.formatWarning=At;exports.isRich=k;exports.note=ae;exports.printHuman=ln;exports.printRenderLines=fn;exports.registerActiveProgressLine=xn;exports.renderLines=tt;exports.renderMarkdown=Bn;exports.renderTable=In;exports.resolveConfigDir=Gt;exports.resolveEffectiveHomeDir=te;exports.resolveHomeDir=je;exports.resolveRequiredHomeDir=Se;exports.resolveUserPath=Ke;exports.restoreTerminalState=$n;exports.selectStyled=Tn;exports.shortenHomeInString=Ge;exports.shortenHomePath=Ye;exports.stripAnsi=Z;exports.styleHealthChannelLine=Ln;exports.stylePromptHint=Ee;exports.stylePromptMessage=Ce;exports.stylePromptTitle=ke;exports.theme=u;exports.unregisterActiveProgressLine=bn;exports.visibleWidth=K;exports.wrapError=Zt;exports.wrapJson=Ue;exports.wrapNoteMessage=Ze;
|
package/dist/index.d.cts
CHANGED
|
@@ -14,6 +14,8 @@ declare const LOBSTER_PALETTE: {
|
|
|
14
14
|
readonly error: "#E23D2D";
|
|
15
15
|
readonly muted: "#8B7F77";
|
|
16
16
|
};
|
|
17
|
+
type LobsterPalette = typeof LOBSTER_PALETTE;
|
|
18
|
+
type LobsterPaletteKey = keyof LobsterPalette;
|
|
17
19
|
|
|
18
20
|
declare const theme: {
|
|
19
21
|
readonly accent: chalk.ChalkInstance;
|
|
@@ -39,7 +41,8 @@ declare function formatHeading(title: string): string;
|
|
|
39
41
|
declare function formatKeyValue(key: string, value: string, keyWidth?: number): string;
|
|
40
42
|
declare function formatCommandExample(command: string, description?: string): string;
|
|
41
43
|
declare function formatListItem(icon: string, text: string, description?: string): string;
|
|
42
|
-
|
|
44
|
+
type StatusKind = 'pending' | 'running' | 'success' | 'error' | 'skipped';
|
|
45
|
+
declare function formatStatus(status: StatusKind, message: string): string;
|
|
43
46
|
declare function formatSeparator(width?: number, char?: string): string;
|
|
44
47
|
declare function formatEmptyMessage(message: string): string;
|
|
45
48
|
declare function formatCount(count: number, singular: string, plural?: string): string;
|
|
@@ -51,10 +54,11 @@ declare function shortenHomePath(input: string): string;
|
|
|
51
54
|
declare function shortenHomeInString(input: string): string;
|
|
52
55
|
declare function displayPath(input: string): string;
|
|
53
56
|
declare function displayString(input: string): string;
|
|
54
|
-
|
|
57
|
+
type FormatTerminalLinkOptions = {
|
|
55
58
|
fallback?: string;
|
|
56
59
|
force?: boolean;
|
|
57
|
-
}
|
|
60
|
+
};
|
|
61
|
+
declare function formatTerminalLink(label: string, url: string, opts?: FormatTerminalLinkOptions, isTTY?: boolean): string;
|
|
58
62
|
|
|
59
63
|
declare function resolveEffectiveHomeDir(env?: NodeJS.ProcessEnv, homedir?: () => string): string | undefined;
|
|
60
64
|
declare function resolveRequiredHomeDir(env?: NodeJS.ProcessEnv, homedir?: () => string): string;
|
|
@@ -64,21 +68,220 @@ declare function expandHomePrefix(input: string, opts?: {
|
|
|
64
68
|
homedir?: () => string;
|
|
65
69
|
}): string;
|
|
66
70
|
|
|
67
|
-
declare
|
|
68
|
-
declare function formatDocsLink(path: string, label?: string, opts?: {
|
|
71
|
+
declare function formatRootedLink(root: string, path: string, label?: string, opts?: {
|
|
69
72
|
fallback?: string;
|
|
70
73
|
force?: boolean;
|
|
71
|
-
}): string;
|
|
72
|
-
declare function
|
|
74
|
+
}, isTTY?: boolean): string;
|
|
75
|
+
declare function formatRootLink(root: string, label?: string, isTTY?: boolean): string;
|
|
73
76
|
|
|
77
|
+
interface JsonEnvelope<T> {
|
|
78
|
+
ok: boolean;
|
|
79
|
+
data: T;
|
|
80
|
+
meta?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
declare function wrapJson<T>(data: T, meta?: Record<string, unknown>, ok?: boolean): JsonEnvelope<T>;
|
|
83
|
+
declare function wrapError<T = {
|
|
84
|
+
reason: string;
|
|
85
|
+
}>(data: T, meta?: Record<string, unknown>): JsonEnvelope<T>;
|
|
86
|
+
declare function emitJson<T>(envelope: JsonEnvelope<T>, indent?: number): void;
|
|
87
|
+
declare function emitCommandJson<T>(envelope: JsonEnvelope<T>): void;
|
|
74
88
|
declare function emitJsonOk(data: unknown, meta?: Record<string, unknown>): void;
|
|
75
89
|
declare function emitJsonError(code: string, message: string): void;
|
|
76
90
|
|
|
77
|
-
|
|
91
|
+
type WrapNoteMessageOptions = {
|
|
78
92
|
maxWidth?: number;
|
|
79
93
|
columns?: number;
|
|
80
|
-
}
|
|
81
|
-
declare function
|
|
94
|
+
};
|
|
95
|
+
declare function wrapNoteMessage(message: string, options?: WrapNoteMessageOptions): string;
|
|
96
|
+
type NoteOptions = {
|
|
97
|
+
columns?: number;
|
|
98
|
+
maxWidth?: number;
|
|
99
|
+
};
|
|
100
|
+
declare function note(message: string, title?: string, options?: NoteOptions): void;
|
|
101
|
+
|
|
102
|
+
interface PrintHumanOptions {
|
|
103
|
+
boxed?: boolean;
|
|
104
|
+
title?: string;
|
|
105
|
+
outro?: string;
|
|
106
|
+
skipOutro?: boolean;
|
|
107
|
+
empty?: string;
|
|
108
|
+
emptyTitle?: string;
|
|
109
|
+
}
|
|
110
|
+
declare function printHuman(lines: string[], opts?: PrintHumanOptions): void;
|
|
111
|
+
declare function formatPrintHuman(lines: string[], opts?: PrintHumanOptions): string;
|
|
112
|
+
interface RenderLinesGroup {
|
|
113
|
+
key?: string;
|
|
114
|
+
rows: string[];
|
|
115
|
+
detail?: string;
|
|
116
|
+
}
|
|
117
|
+
interface RenderLinesOptions {
|
|
118
|
+
title: string;
|
|
119
|
+
groups?: RenderLinesGroup[];
|
|
120
|
+
footer?: string[];
|
|
121
|
+
flat?: string[];
|
|
122
|
+
}
|
|
123
|
+
declare function renderLines(opts: RenderLinesOptions): string;
|
|
124
|
+
declare function printRenderLines(opts: RenderLinesOptions): void;
|
|
125
|
+
declare function formatListTruncated(items: string[], maxShow?: number): string;
|
|
126
|
+
declare const formatList: typeof formatListTruncated;
|
|
127
|
+
|
|
128
|
+
type ColorFn$2 = (text: string) => string;
|
|
129
|
+
declare namespace Loader {
|
|
130
|
+
interface IndicatorOptions {
|
|
131
|
+
frames?: string[];
|
|
132
|
+
intervalMs?: number;
|
|
133
|
+
}
|
|
134
|
+
interface Options {
|
|
135
|
+
message?: string;
|
|
136
|
+
spinnerColor?: ColorFn$2;
|
|
137
|
+
messageColor?: ColorFn$2;
|
|
138
|
+
indicator?: IndicatorOptions;
|
|
139
|
+
}
|
|
140
|
+
interface Instance {
|
|
141
|
+
start(): void;
|
|
142
|
+
stop(): void;
|
|
143
|
+
isRunning(): boolean;
|
|
144
|
+
line(): string;
|
|
145
|
+
setMessage(message: string): void;
|
|
146
|
+
setIndicator(indicator?: IndicatorOptions): void;
|
|
147
|
+
}
|
|
148
|
+
function create(options?: Options): Instance;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
declare namespace Search$1 {
|
|
152
|
+
interface Item<T> {
|
|
153
|
+
value: T;
|
|
154
|
+
label: string;
|
|
155
|
+
hint?: string;
|
|
156
|
+
}
|
|
157
|
+
interface LockedSection<T> {
|
|
158
|
+
title: string;
|
|
159
|
+
items: Item<T>[];
|
|
160
|
+
hiddenCount?: number;
|
|
161
|
+
}
|
|
162
|
+
interface MultiselectOptions<T> {
|
|
163
|
+
message: string;
|
|
164
|
+
items: Item<T>[];
|
|
165
|
+
maxVisible?: number;
|
|
166
|
+
initialSelected?: T[];
|
|
167
|
+
required?: boolean;
|
|
168
|
+
lockedSection?: LockedSection<T>;
|
|
169
|
+
isTTY?: boolean;
|
|
170
|
+
}
|
|
171
|
+
const cancelSymbol: unique symbol;
|
|
172
|
+
function approxStringWidth(plain: string): number;
|
|
173
|
+
function visualRowsForLine(line: string, columns: number): number;
|
|
174
|
+
function countVisualRowsForLines(lines: string[], columns: number | undefined): number;
|
|
175
|
+
function multiselect<T>(options: MultiselectOptions<T>): Promise<T[] | typeof cancelSymbol>;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
declare namespace Prompt {
|
|
179
|
+
const cancelSymbol: typeof Search$1.cancelSymbol;
|
|
180
|
+
type Cancel = typeof cancelSymbol;
|
|
181
|
+
function isCancel(value: unknown): value is Cancel;
|
|
182
|
+
interface SelectOption<T> {
|
|
183
|
+
value: T;
|
|
184
|
+
label: string;
|
|
185
|
+
hint?: string;
|
|
186
|
+
}
|
|
187
|
+
interface SelectOptions<T> {
|
|
188
|
+
message: string;
|
|
189
|
+
options: SelectOption<T>[];
|
|
190
|
+
initialValue?: T;
|
|
191
|
+
isTTY?: boolean;
|
|
192
|
+
}
|
|
193
|
+
function select<T>(opts: SelectOptions<T>): Promise<T | Cancel>;
|
|
194
|
+
interface GroupMultiselectOptions<T> {
|
|
195
|
+
message: string;
|
|
196
|
+
options: Record<string, SelectOption<T>[]>;
|
|
197
|
+
initialValues?: T[];
|
|
198
|
+
required?: boolean;
|
|
199
|
+
isTTY?: boolean;
|
|
200
|
+
}
|
|
201
|
+
function groupMultiselect<T>(opts: GroupMultiselectOptions<T>): Promise<T[] | Cancel>;
|
|
202
|
+
interface TextOptions {
|
|
203
|
+
message: string;
|
|
204
|
+
placeholder?: string;
|
|
205
|
+
defaultValue?: string;
|
|
206
|
+
validate?: (value: string) => string | undefined;
|
|
207
|
+
isTTY?: boolean;
|
|
208
|
+
}
|
|
209
|
+
function text(opts: TextOptions): Promise<string | Cancel>;
|
|
210
|
+
interface PasswordOptions {
|
|
211
|
+
message: string;
|
|
212
|
+
mask?: string;
|
|
213
|
+
isTTY?: boolean;
|
|
214
|
+
}
|
|
215
|
+
function password(opts: PasswordOptions): Promise<string | Cancel>;
|
|
216
|
+
interface ConfirmOptions {
|
|
217
|
+
message: string;
|
|
218
|
+
initialValue?: boolean;
|
|
219
|
+
isTTY?: boolean;
|
|
220
|
+
}
|
|
221
|
+
function confirm(opts: ConfirmOptions): Promise<boolean | Cancel>;
|
|
222
|
+
interface MultiselectItem<T> {
|
|
223
|
+
value: T;
|
|
224
|
+
label: string;
|
|
225
|
+
hint?: string;
|
|
226
|
+
}
|
|
227
|
+
interface LockedSection<T> {
|
|
228
|
+
title: string;
|
|
229
|
+
items: MultiselectItem<T>[];
|
|
230
|
+
hiddenCount?: number;
|
|
231
|
+
}
|
|
232
|
+
interface MultiselectOptions<T> {
|
|
233
|
+
message: string;
|
|
234
|
+
options: MultiselectItem<T>[];
|
|
235
|
+
initialValues?: T[];
|
|
236
|
+
required?: boolean;
|
|
237
|
+
lockedSection?: LockedSection<T>;
|
|
238
|
+
maxVisible?: number;
|
|
239
|
+
isTTY?: boolean;
|
|
240
|
+
withGuide?: boolean;
|
|
241
|
+
guideLines?: string[];
|
|
242
|
+
}
|
|
243
|
+
function multiselect<T>(opts: MultiselectOptions<T>): Promise<T[] | Cancel>;
|
|
244
|
+
function intro(title: string): void;
|
|
245
|
+
function outro(message?: string, opts?: {
|
|
246
|
+
success?: boolean;
|
|
247
|
+
}): void;
|
|
248
|
+
function cancel(message?: string): never;
|
|
249
|
+
namespace Log {
|
|
250
|
+
function info(message: string, detail?: string): void;
|
|
251
|
+
function warn(message: string, detail?: string): void;
|
|
252
|
+
function error(message: string, detail?: string): void;
|
|
253
|
+
function success(message: string): void;
|
|
254
|
+
function step(message: string): void;
|
|
255
|
+
function message(message: string): void;
|
|
256
|
+
}
|
|
257
|
+
interface SpinnerInstance {
|
|
258
|
+
start(message?: string): void;
|
|
259
|
+
stop(finalMessage?: string): void;
|
|
260
|
+
update(message: string): void;
|
|
261
|
+
line(): string;
|
|
262
|
+
}
|
|
263
|
+
function spinner(options?: {
|
|
264
|
+
frames?: string[];
|
|
265
|
+
color?: ColorFn$2;
|
|
266
|
+
}): SpinnerInstance;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
type SymbolKind = 'success' | 'error' | 'warning' | 'info' | 'accent' | 'muted' | 'heading' | 'active' | 'submit' | 'cancel' | 'locked' | 'pending' | 'radioActive' | 'radioInactive' | 'skipped' | 'cursor' | 'accentBright';
|
|
270
|
+
declare namespace Symbol {
|
|
271
|
+
const icons: Readonly<Record<SymbolKind, string>>;
|
|
272
|
+
const bar: {
|
|
273
|
+
readonly vertical: "│";
|
|
274
|
+
readonly horizontal: "─";
|
|
275
|
+
readonly cornerBottom: "└";
|
|
276
|
+
readonly cornerBottomRight: "┘";
|
|
277
|
+
readonly teeRight: "├";
|
|
278
|
+
readonly stepActive: "◆";
|
|
279
|
+
readonly bullet: "•";
|
|
280
|
+
};
|
|
281
|
+
function colorize(char: string, kind: SymbolKind): string;
|
|
282
|
+
function statusIcon(kind: SymbolKind): string;
|
|
283
|
+
function prefixed(kind: SymbolKind, text: string): string;
|
|
284
|
+
}
|
|
82
285
|
|
|
83
286
|
declare function registerActiveProgressLine(stream: NodeJS.WriteStream): void;
|
|
84
287
|
declare function clearActiveProgressLine(): void;
|
|
@@ -128,4 +331,43 @@ declare function renderTable(opts: RenderTableOptions): string;
|
|
|
128
331
|
|
|
129
332
|
declare function styleHealthChannelLine(line: string, rich: boolean): string;
|
|
130
333
|
|
|
131
|
-
|
|
334
|
+
type ColorFn$1 = (text: string) => string;
|
|
335
|
+
declare namespace Input {
|
|
336
|
+
interface ReadTextBaseOptions {
|
|
337
|
+
message: string;
|
|
338
|
+
hint?: string;
|
|
339
|
+
defaultValue?: string;
|
|
340
|
+
hidden?: boolean;
|
|
341
|
+
messageColor?: ColorFn$1;
|
|
342
|
+
hintColor?: ColorFn$1;
|
|
343
|
+
input?: NodeJS.ReadStream;
|
|
344
|
+
output?: NodeJS.WritableStream;
|
|
345
|
+
}
|
|
346
|
+
interface ReadConfirmOptions {
|
|
347
|
+
message: string;
|
|
348
|
+
hint?: string;
|
|
349
|
+
defaultValue?: boolean;
|
|
350
|
+
messageColor?: ColorFn$1;
|
|
351
|
+
hintColor?: ColorFn$1;
|
|
352
|
+
input?: NodeJS.ReadStream;
|
|
353
|
+
output?: NodeJS.WritableStream;
|
|
354
|
+
}
|
|
355
|
+
function readText(options: ReadTextBaseOptions): Promise<string>;
|
|
356
|
+
function readConfirm(options: ReadConfirmOptions): Promise<boolean>;
|
|
357
|
+
function readPassword(options: Omit<ReadTextBaseOptions, 'hidden'>): Promise<string>;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
type ColorFn = (text: string) => string;
|
|
361
|
+
interface RenderMarkdownOptions {
|
|
362
|
+
headingColor?: ColorFn;
|
|
363
|
+
boldColor?: ColorFn;
|
|
364
|
+
italicColor?: ColorFn;
|
|
365
|
+
codeColor?: ColorFn;
|
|
366
|
+
linkColor?: ColorFn;
|
|
367
|
+
}
|
|
368
|
+
declare function renderMarkdown(md: string, opts?: RenderMarkdownOptions): string[];
|
|
369
|
+
|
|
370
|
+
declare const Search: typeof Search$1;
|
|
371
|
+
declare const cancelSymbol: symbol;
|
|
372
|
+
|
|
373
|
+
export { type ColorFn$2 as ColorFn, type FormatTerminalLinkOptions, Input, type ColorFn$1 as InputColorFn, type JsonEnvelope, LOBSTER_PALETTE, Loader, type LobsterPalette, type LobsterPaletteKey, type ColorFn as MarkdownColorFn, type NoteOptions, type PrintHumanOptions, Prompt, type RenderLinesGroup, type RenderLinesOptions, type RenderMarkdownOptions, type RenderTableOptions, type RestoreTerminalStateOptions, type SafeStreamWriter, type SafeStreamWriterOptions, Search, type StatusKind, Symbol, type SymbolKind, type TableColumn, type WrapNoteMessageOptions, cancelSymbol, clearActiveProgressLine, colorize, createSafeStreamWriter, displayPath, displayString, emitCommandJson, emitJson, emitJsonError, emitJsonOk, expandHomePrefix, formatCommandExample, formatCount, formatEmptyMessage, formatError, formatHeading, formatInfo, formatKeyValue, formatList, formatListItem, formatListTruncated, formatPrintHuman, formatRootLink, formatRootedLink, formatSeparator, formatStatus, formatSuccess, formatTerminalLink, formatWarning, isRich, note, printHuman, printRenderLines, registerActiveProgressLine, renderLines, renderMarkdown, renderTable, resolveConfigDir, resolveEffectiveHomeDir, resolveHomeDir, resolveRequiredHomeDir, resolveUserPath, restoreTerminalState, selectStyled, shortenHomeInString, shortenHomePath, stripAnsi, styleHealthChannelLine, stylePromptHint, stylePromptMessage, stylePromptTitle, theme, unregisterActiveProgressLine, visibleWidth, wrapError, wrapJson, wrapNoteMessage };
|