@arkenv/cli 0.0.4 → 0.0.5

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.
Files changed (2) hide show
  1. package/dist/index.cjs +144 -107
  2. package/package.json +4 -2
package/dist/index.cjs CHANGED
@@ -1,87 +1,118 @@
1
1
  #!/usr/bin/env node
2
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`node:child_process`),u=require(`node:path`);u=c(u,1);let d=require(`node:util`),f=require(`node:process`);f=c(f,1);let p=require(`node:readline`);p=c(p,1);let m=require(`node:tty`),h=require(`node:fs`);h=c(h,1);let g=require(`node:fs/promises`);g=c(g,1);let _=require(`jsonc-parser`),v=require(`dedent`);v=c(v,1);const y=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),b=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,x=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,S=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,ee=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,te=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,ne=/\t{1,1000}/y,C=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,w=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,re=/\p{M}+/gu,ie={limit:1/0,ellipsis:``},T=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?T(i,ie,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[w,l],[S,0],[ee,o],[ne,s],[C,c],[te,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),E=0,D=0,O=0,k=0;outer:for(;;){if(D>E||p>=m&&p>f){let t=e.slice(E,D)||e.slice(f,p);h=0;for(let e of t.replaceAll(re,``)){let t=e.codePointAt(0)||0;if(k=b(t)?2:x(t)?u:l,O+k>v&&(_=Math.min(_,Math.max(E,f)+h)),O+k>r){g=!0;break outer}h+=e.length,O+=k}E=D=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===te?y(e.slice(p,n.lastIndex)):n===C?1:n.lastIndex-p,k=h*i,O+k>v&&(_=Math.min(_,p+Math.floor((v-O)/i))),O+k>r){g=!0;break outer}O+=k,E=f,D=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:O,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},E={limit:1/0,ellipsis:``,ellipsisWidth:0},D=(e,t={})=>T(e,E,t).width,O=`]8;;`,k=RegExp(`(?:\\[(?<code>\\d+)m|\\${O}(?<uri>.*))`,`y`),ae=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},oe=e=>`[${e}m`,se=e=>`${O}${e}`,A=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:D(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=D(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(O,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},ce=e=>{let t=e.split(` `),n=t.length;for(;n&&!D(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},le=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=D(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=D(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),A(s,r,t),c=D(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){A(s,r,t),c=D(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){A(s,r,t),c=D(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>ce(e)));let l=s.join(`
3
- `),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===`›`){k.lastIndex=e+1;let t=k.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
4
- `){a&&(r+=se(``));let e=i?ae(i):void 0;i&&e&&(r+=oe(e))}else t===`
5
- `&&(i&&ae(i)&&(r+=oe(i)),a&&(r+=se(a)))}return r},ue=/\r?\n/;function j(e,t,n){return String(e).normalize().split(ue).map(e=>le(e,t,n)).join(`
6
- `)}var M=o(((e,t)=>{let n={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`};t.exports={cursor:n,scroll:{up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},erase:{screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(e){let t=``;for(let r=0;r<e;r++)t+=this.line+(r<e-1?n.up():``);return e&&(t+=n.left),t}},beep:`\x07`}}))();function N(e,t,n){if(!n.some(e=>!e.disabled))return e;let r=e+t,i=Math.max(n.length-1,0),a=r<0?i:r>i?0:r;return n[a].disabled?N(a,t<0?-1:1,n):a}const P={actions:new Set([`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`]),aliases:new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]]),messages:{cancel:`Canceled`,error:`Something went wrong`},withGuide:!0,date:{monthNames:[...[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],messages:{required:`Please enter a valid date`,invalidMonth:`There are only 12 months in a year`,invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function de(e,t){if(typeof e==`string`)return P.aliases.get(e)===t;for(let n of e)if(n!==void 0&&de(n,t))return!0;return!1}function fe(e,t){if(e===t)return;let n=e.split(`
2
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`node:util`),u=require(`node:process`);u=c(u,1);let d=require(`node:readline`);d=c(d,1);let f=require(`node:tty`),p=require(`node:fs`);p=c(p,1);let m=require(`node:path`);m=c(m,1);let h=require(`node:child_process`),g=require(`dedent`);g=c(g,1);let _=require(`node:fs/promises`);_=c(_,1);let v=require(`magicast`),y=require(`jsonc-parser`);const b=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),x=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,S=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,ee=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,te=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,C=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,ne=/\t{1,1000}/y,w=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,re=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,ie=/\p{M}+/gu,T={limit:1/0,ellipsis:``},ae=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?ae(i,T,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[re,l],[ee,0],[te,o],[ne,s],[w,c],[C,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,E=0,D=0,O=0;outer:for(;;){if(E>y||p>=m&&p>f){let t=e.slice(y,E)||e.slice(f,p);h=0;for(let e of t.replaceAll(ie,``)){let t=e.codePointAt(0)||0;if(O=x(t)?2:S(t)?u:l,D+O>v&&(_=Math.min(_,Math.max(y,f)+h)),D+O>r){g=!0;break outer}h+=e.length,D+=O}y=E=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===C?b(e.slice(p,n.lastIndex)):n===w?1:n.lastIndex-p,O=h*i,D+O>v&&(_=Math.min(_,p+Math.floor((v-D)/i))),D+O>r){g=!0;break outer}D+=O,y=f,E=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:D,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},E={limit:1/0,ellipsis:``,ellipsisWidth:0},D=(e,t={})=>ae(e,E,t).width,O=`]8;;`,oe=RegExp(`(?:\\[(?<code>\\d+)m|\\${O}(?<uri>.*))`,`y`),se=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},ce=e=>`[${e}m`,le=e=>`${O}${e}`,k=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:D(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=D(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(O,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},ue=e=>{let t=e.split(` `),n=t.length;for(;n&&!D(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},de=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=D(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=D(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),k(s,r,t),c=D(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){k(s,r,t),c=D(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){k(s,r,t),c=D(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>ue(e)));let l=s.join(`
3
+ `),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===`›`){oe.lastIndex=e+1;let t=oe.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
4
+ `){a&&(r+=le(``));let e=i?se(i):void 0;i&&e&&(r+=ce(e))}else t===`
5
+ `&&(i&&se(i)&&(r+=ce(i)),a&&(r+=le(a)))}return r},fe=/\r?\n/;function A(e,t,n){return String(e).normalize().split(fe).map(e=>de(e,t,n)).join(`
6
+ `)}var j=o(((e,t)=>{let n={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`};t.exports={cursor:n,scroll:{up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},erase:{screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(e){let t=``;for(let r=0;r<e;r++)t+=this.line+(r<e-1?n.up():``);return e&&(t+=n.left),t}},beep:`\x07`}}))();function M(e,t,n){if(!n.some(e=>!e.disabled))return e;let r=e+t,i=Math.max(n.length-1,0),a=r<0?i:r>i?0:r;return n[a].disabled?M(a,t<0?-1:1,n):a}const N={actions:new Set([`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`]),aliases:new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]]),messages:{cancel:`Canceled`,error:`Something went wrong`},withGuide:!0,date:{monthNames:[...[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],messages:{required:`Please enter a valid date`,invalidMonth:`There are only 12 months in a year`,invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function P(e,t){if(typeof e==`string`)return N.aliases.get(e)===t;for(let n of e)if(n!==void 0&&P(n,t))return!0;return!1}function pe(e,t){if(e===t)return;let n=e.split(`
7
7
  `),r=t.split(`
8
- `),i=Math.max(n.length,r.length),a=[];for(let e=0;e<i;e++)n[e]!==r[e]&&a.push(e);return{lines:a,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}const pe=globalThis.process.platform.startsWith(`win`),me=Symbol(`clack:cancel`);function F(e){return e===me}function I(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function he({input:e=f.stdin,output:t=f.stdout,overwrite:n=!0,hideCursor:r=!0}={}){let i=p.createInterface({input:e,output:t,prompt:``,tabSize:1});p.emitKeypressEvents(e,i),e instanceof m.ReadStream&&e.isTTY&&e.setRawMode(!0);let a=(i,{name:o,sequence:s})=>{if(de([String(i),o,s],`cancel`)){r&&t.write(M.cursor.show),process.exit(0);return}if(!n)return;let c=o===`return`?0:-1,l=o===`return`?-1:0;p.moveCursor(t,c,l,()=>{p.clearLine(t,1,()=>{e.once(`keypress`,a)})})};return r&&t.write(M.cursor.hide),e.once(`keypress`,a),()=>{e.off(`keypress`,a),r&&t.write(M.cursor.show),e instanceof m.ReadStream&&e.isTTY&&!pe&&e.setRawMode(!1),i.terminal=!1,i.close()}}const L=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,ge=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function R(e,t,n,r=n,i){return j(t,L(e??f.stdout)-n.length,{hard:!0,trim:!1}).split(`
8
+ `),i=Math.max(n.length,r.length),a=[];for(let e=0;e<i;e++)n[e]!==r[e]&&a.push(e);return{lines:a,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}const me=globalThis.process.platform.startsWith(`win`),F=Symbol(`clack:cancel`);function I(e){return e===F}function L(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function he({input:e=u.stdin,output:t=u.stdout,overwrite:n=!0,hideCursor:r=!0}={}){let i=d.createInterface({input:e,output:t,prompt:``,tabSize:1});d.emitKeypressEvents(e,i),e instanceof f.ReadStream&&e.isTTY&&e.setRawMode(!0);let a=(i,{name:o,sequence:s})=>{if(P([String(i),o,s],`cancel`)){r&&t.write(j.cursor.show),process.exit(0);return}if(!n)return;let c=o===`return`?0:-1,l=o===`return`?-1:0;d.moveCursor(t,c,l,()=>{d.clearLine(t,1,()=>{e.once(`keypress`,a)})})};return r&&t.write(j.cursor.hide),e.once(`keypress`,a),()=>{e.off(`keypress`,a),r&&t.write(j.cursor.show),e instanceof f.ReadStream&&e.isTTY&&!me&&e.setRawMode(!1),i.terminal=!1,i.close()}}const R=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,ge=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function z(e,t,n,r=n,i){return A(t,R(e??u.stdout)-n.length,{hard:!0,trim:!1}).split(`
9
9
  `).map((e,t)=>{let a=i?i(e,t):e;return`${t===0?r:n}${a}`}).join(`
10
- `)}let z=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame=``;_subscribers=new Map;_cursor=0;state=`initial`;error=``;value;userInput=``;constructor(e,t=!0){let{input:n=f.stdin,output:r=f.stdout,render:i,signal:a,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(me);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=p.default.createInterface({input:this.input,tabSize:2,prompt:``,escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on(`keypress`,this.onKeypress),I(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(M.cursor.show),this.output.off(`resize`,this.render),I(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(M.cursor.show),this.output.off(`resize`,this.render),I(this.input,!1),e(me)})})}_isActionKey(e,t){return e===` `}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit(`value`,this.value)}_setUserInput(e,t){this.userInput=e??``,this.emit(`userInput`,this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:`u`}),this._setUserInput(``)}onKeypress(e,t){if(this._track&&t.name!==`return`&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:`h`}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&P.aliases.has(t.name)&&this.emit(`cursor`,P.aliases.get(t.name)),P.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),this.emit(`key`,e?.toLowerCase(),t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=`error`,this.rl?.write(this.userInput))}this.state!==`error`&&(this.state=`submit`)}de([e,t?.name,t?.sequence],`cancel`)&&(this.state=`cancel`),(this.state===`submit`||this.state===`cancel`)&&this.emit(`finalize`),this.render(),(this.state===`submit`||this.state===`cancel`)&&this.close()}close(){this.input.unpipe(),this.input.removeListener(`keypress`,this.onKeypress),this.output.write(`
11
- `),I(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=j(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
12
- `).length-1;this.output.write(M.cursor.move(-999,e*-1))}render(){let e=j(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(M.cursor.hide);else{let t=fe(this._prevFrame,e),n=ge(this.output);if(this.restoreCursor(),t){let r=Math.max(0,t.numLinesAfter-n),i=Math.max(0,t.numLinesBefore-n),a=t.lines.find(e=>e>=r);if(a===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(M.cursor.move(0,a-i)),this.output.write(M.erase.lines(1));let t=e.split(`
13
- `);this.output.write(t[a]),this._prevFrame=e,this.output.write(M.cursor.move(0,t.length-a-1));return}else if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(M.cursor.move(0,e))}this.output.write(M.erase.down());let t=e.split(`
10
+ `)}let B=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame=``;_subscribers=new Map;_cursor=0;state=`initial`;error=``;value;userInput=``;constructor(e,t=!0){let{input:n=u.stdin,output:r=u.stdout,render:i,signal:a,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(F);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=d.default.createInterface({input:this.input,tabSize:2,prompt:``,escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on(`keypress`,this.onKeypress),L(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(j.cursor.show),this.output.off(`resize`,this.render),L(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(j.cursor.show),this.output.off(`resize`,this.render),L(this.input,!1),e(F)})})}_isActionKey(e,t){return e===` `}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit(`value`,this.value)}_setUserInput(e,t){this.userInput=e??``,this.emit(`userInput`,this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:`u`}),this._setUserInput(``)}onKeypress(e,t){if(this._track&&t.name!==`return`&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:`h`}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&N.aliases.has(t.name)&&this.emit(`cursor`,N.aliases.get(t.name)),N.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),this.emit(`key`,e?.toLowerCase(),t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=`error`,this.rl?.write(this.userInput))}this.state!==`error`&&(this.state=`submit`)}P([e,t?.name,t?.sequence],`cancel`)&&(this.state=`cancel`),(this.state===`submit`||this.state===`cancel`)&&this.emit(`finalize`),this.render(),(this.state===`submit`||this.state===`cancel`)&&this.close()}close(){this.input.unpipe(),this.input.removeListener(`keypress`,this.onKeypress),this.output.write(`
11
+ `),L(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=A(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
12
+ `).length-1;this.output.write(j.cursor.move(-999,e*-1))}render(){let e=A(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(j.cursor.hide);else{let t=pe(this._prevFrame,e),n=ge(this.output);if(this.restoreCursor(),t){let r=Math.max(0,t.numLinesAfter-n),i=Math.max(0,t.numLinesBefore-n),a=t.lines.find(e=>e>=r);if(a===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(j.cursor.move(0,a-i)),this.output.write(j.erase.lines(1));let t=e.split(`
13
+ `);this.output.write(t[a]),this._prevFrame=e,this.output.write(j.cursor.move(0,t.length-a-1));return}else if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(j.cursor.move(0,e))}this.output.write(j.erase.down());let t=e.split(`
14
14
  `).slice(a);this.output.write(t.join(`
15
- `)),this._prevFrame=e;return}}this.output.write(M.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};var _e=class extends z{get cursor(){return+!this.value}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on(`userInput`,()=>{this.value=this._value}),this.on(`confirm`,e=>{this.output.write(M.cursor.move(0,-1)),this.value=e,this.state=`submit`,this.close()}),this.on(`cursor`,()=>{this.value=!this.value})}},ve=class extends z{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(e){super(e,!1),this.options=e.options;let t=this.options.findIndex(({value:t})=>t===e.initialValue),n=t===-1?0:t;this.cursor=this.options[n].disabled?N(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=N(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=N(this.cursor,1,this.options);break}this.changeValue()})}},ye=class extends z{get userInputWithCursor(){if(this.state===`submit`)return this.userInput;let e=this.userInput;if(this.cursor>=e.length)return`${this.userInput}\u2588`;let t=e.slice(0,this.cursor),[n,...r]=e.slice(this.cursor);return`${t}${(0,d.styleText)(`inverse`,n)}${r.join(``)}`}get cursor(){return this._cursor}constructor(e){super({...e,initialUserInput:e.initialUserInput??e.initialValue}),this.on(`userInput`,e=>{this._setValue(e)}),this.on(`finalize`,()=>{this.value||=e.defaultValue,this.value===void 0&&(this.value=``)})}};function be(){return f.default.platform===`win32`?!!f.default.env.CI||!!f.default.env.WT_SESSION||!!f.default.env.TERMINUS_SUBLIME||f.default.env.ConEmuTask===`{cmd::Cmder}`||f.default.env.TERM_PROGRAM===`Terminus-Sublime`||f.default.env.TERM_PROGRAM===`vscode`||f.default.env.TERM===`xterm-256color`||f.default.env.TERM===`alacritty`||f.default.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:f.default.env.TERM!==`linux`}const B=be(),xe=()=>process.env.CI===`true`,V=(e,t)=>B?e:t,Se=V(`◆`,`*`),Ce=V(`■`,`x`),we=V(`▲`,`x`),H=V(`◇`,`o`),U=V(`│`,`|`),W=V(`└`,`—`),G=V(`●`,`>`),K=V(`○`,` `),Te=V(`●`,`•`),Ee=V(`◆`,`*`),De=V(`▲`,`!`),Oe=V(`■`,`x`),ke=e=>{switch(e){case`initial`:case`active`:return(0,d.styleText)(`cyan`,Se);case`cancel`:return(0,d.styleText)(`red`,Ce);case`error`:return(0,d.styleText)(`yellow`,we);case`submit`:return(0,d.styleText)(`green`,H)}},Ae=e=>{switch(e){case`initial`:case`active`:return(0,d.styleText)(`cyan`,U);case`cancel`:return(0,d.styleText)(`red`,U);case`error`:return(0,d.styleText)(`yellow`,U);case`submit`:return(0,d.styleText)(`green`,U)}},je=(e,t,n,r,i)=>{let a=t,o=0;for(let t=n;t<r;t++){let n=e[t];if(a-=n.length,o++,a<=i)break}return{lineCount:a,removals:o}},Me=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=1/0,columnPadding:a=0,rowPadding:o=4})=>{let s=L(r)-a,c=ge(r),l=(0,d.styleText)(`dim`,`...`),u=Math.max(c-o,0),f=Math.max(Math.min(i,u),5),p=0;e>=f-3&&(p=Math.max(Math.min(e-f+3,t.length-f),0));let m=f<t.length&&p>0,h=f<t.length&&p+f<t.length,g=Math.min(p+f,t.length),_=[],v=0;m&&v++,h&&v++;let y=p+ +!!m,b=g-+!!h;for(let r=y;r<b;r++){let i=j(n(t[r],r===e),s,{hard:!0,trim:!1}).split(`
16
- `);_.push(i),v+=i.length}if(v>u){let t=0,n=0,r=v,i=e-y,a=(e,t)=>je(_,r,e,t,u);m?({lineCount:r,removals:t}=a(0,i),r>u&&({lineCount:r,removals:n}=a(i+1,_.length))):({lineCount:r,removals:n}=a(i+1,_.length),r>u&&({lineCount:r,removals:t}=a(0,i))),t>0&&(m=!0,_.splice(0,t)),n>0&&(h=!0,_.splice(_.length-n,n))}let x=[];m&&x.push(l);for(let e of _)for(let t of e)x.push(t);return h&&x.push(l),x},q=e=>{let t=e.active??`Yes`,n=e.inactive??`No`;return new _e({active:t,inactive:n,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let r=e.withGuide??P.withGuide,i=`${ke(this.state)} `,a=r?`${(0,d.styleText)(`gray`,U)} `:``,o=R(e.output,e.message,a,i),s=`${r?`${(0,d.styleText)(`gray`,U)}
15
+ `)),this._prevFrame=e;return}}this.output.write(j.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};var _e=class extends B{get cursor(){return+!this.value}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on(`userInput`,()=>{this.value=this._value}),this.on(`confirm`,e=>{this.output.write(j.cursor.move(0,-1)),this.value=e,this.state=`submit`,this.close()}),this.on(`cursor`,()=>{this.value=!this.value})}},ve=class extends B{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(e){super(e,!1),this.options=e.options;let t=this.options.findIndex(({value:t})=>t===e.initialValue),n=t===-1?0:t;this.cursor=this.options[n].disabled?M(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=M(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=M(this.cursor,1,this.options);break}this.changeValue()})}},ye=class extends B{get userInputWithCursor(){if(this.state===`submit`)return this.userInput;let e=this.userInput;if(this.cursor>=e.length)return`${this.userInput}\u2588`;let t=e.slice(0,this.cursor),[n,...r]=e.slice(this.cursor);return`${t}${(0,l.styleText)(`inverse`,n)}${r.join(``)}`}get cursor(){return this._cursor}constructor(e){super({...e,initialUserInput:e.initialUserInput??e.initialValue}),this.on(`userInput`,e=>{this._setValue(e)}),this.on(`finalize`,()=>{this.value||=e.defaultValue,this.value===void 0&&(this.value=``)})}};function be(){return u.default.platform===`win32`?!!u.default.env.CI||!!u.default.env.WT_SESSION||!!u.default.env.TERMINUS_SUBLIME||u.default.env.ConEmuTask===`{cmd::Cmder}`||u.default.env.TERM_PROGRAM===`Terminus-Sublime`||u.default.env.TERM_PROGRAM===`vscode`||u.default.env.TERM===`xterm-256color`||u.default.env.TERM===`alacritty`||u.default.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:u.default.env.TERM!==`linux`}const V=be(),xe=()=>process.env.CI===`true`,H=(e,t)=>V?e:t,Se=H(`◆`,`*`),Ce=H(`■`,`x`),we=H(`▲`,`x`),U=H(`◇`,`o`),W=H(`│`,`|`),G=H(`└`,`—`),Te=H(`●`,`>`),K=H(`○`,` `),Ee=H(`─`,`-`),De=H(`╮`,`+`),Oe=H(`├`,`+`),ke=H(`╯`,`+`),Ae=H(`╰`,`+`),je=H(`●`,`•`),Me=H(`◆`,`*`),Ne=H(`▲`,`!`),Pe=H(`■`,`x`),Fe=e=>{switch(e){case`initial`:case`active`:return(0,l.styleText)(`cyan`,Se);case`cancel`:return(0,l.styleText)(`red`,Ce);case`error`:return(0,l.styleText)(`yellow`,we);case`submit`:return(0,l.styleText)(`green`,U)}},Ie=e=>{switch(e){case`initial`:case`active`:return(0,l.styleText)(`cyan`,W);case`cancel`:return(0,l.styleText)(`red`,W);case`error`:return(0,l.styleText)(`yellow`,W);case`submit`:return(0,l.styleText)(`green`,W)}},Le=(e,t,n,r,i)=>{let a=t,o=0;for(let t=n;t<r;t++){let n=e[t];if(a-=n.length,o++,a<=i)break}return{lineCount:a,removals:o}},Re=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=1/0,columnPadding:a=0,rowPadding:o=4})=>{let s=R(r)-a,c=ge(r),u=(0,l.styleText)(`dim`,`...`),d=Math.max(c-o,0),f=Math.max(Math.min(i,d),5),p=0;e>=f-3&&(p=Math.max(Math.min(e-f+3,t.length-f),0));let m=f<t.length&&p>0,h=f<t.length&&p+f<t.length,g=Math.min(p+f,t.length),_=[],v=0;m&&v++,h&&v++;let y=p+ +!!m,b=g-+!!h;for(let r=y;r<b;r++){let i=A(n(t[r],r===e),s,{hard:!0,trim:!1}).split(`
16
+ `);_.push(i),v+=i.length}if(v>d){let t=0,n=0,r=v,i=e-y,a=(e,t)=>Le(_,r,e,t,d);m?({lineCount:r,removals:t}=a(0,i),r>d&&({lineCount:r,removals:n}=a(i+1,_.length))):({lineCount:r,removals:n}=a(i+1,_.length),r>d&&({lineCount:r,removals:t}=a(0,i))),t>0&&(m=!0,_.splice(0,t)),n>0&&(h=!0,_.splice(_.length-n,n))}let x=[];m&&x.push(u);for(let e of _)for(let t of e)x.push(t);return h&&x.push(u),x},q=e=>{let t=e.active??`Yes`,n=e.inactive??`No`;return new _e({active:t,inactive:n,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let r=e.withGuide??N.withGuide,i=`${Fe(this.state)} `,a=r?`${(0,l.styleText)(`gray`,W)} `:``,o=z(e.output,e.message,a,i),s=`${r?`${(0,l.styleText)(`gray`,W)}
17
17
  `:``}${o}
18
- `,c=this.value?t:n;switch(this.state){case`submit`:return`${s}${r?`${(0,d.styleText)(`gray`,U)} `:``}${(0,d.styleText)(`dim`,c)}`;case`cancel`:return`${s}${r?`${(0,d.styleText)(`gray`,U)} `:``}${(0,d.styleText)([`strikethrough`,`dim`],c)}${r?`
19
- ${(0,d.styleText)(`gray`,U)}`:``}`;default:{let i=r?`${(0,d.styleText)(`cyan`,U)} `:``,a=r?(0,d.styleText)(`cyan`,W):``;return`${s}${i}${this.value?`${(0,d.styleText)(`green`,G)} ${t}`:`${(0,d.styleText)(`dim`,K)} ${(0,d.styleText)(`dim`,t)}`}${e.vertical?r?`
20
- ${(0,d.styleText)(`cyan`,U)} `:`
21
- `:` ${(0,d.styleText)(`dim`,`/`)} `}${this.value?`${(0,d.styleText)(`dim`,K)} ${(0,d.styleText)(`dim`,n)}`:`${(0,d.styleText)(`green`,G)} ${n}`}
18
+ `,c=this.value?t:n;switch(this.state){case`submit`:return`${s}${r?`${(0,l.styleText)(`gray`,W)} `:``}${(0,l.styleText)(`dim`,c)}`;case`cancel`:return`${s}${r?`${(0,l.styleText)(`gray`,W)} `:``}${(0,l.styleText)([`strikethrough`,`dim`],c)}${r?`
19
+ ${(0,l.styleText)(`gray`,W)}`:``}`;default:{let i=r?`${(0,l.styleText)(`cyan`,W)} `:``,a=r?(0,l.styleText)(`cyan`,G):``;return`${s}${i}${this.value?`${(0,l.styleText)(`green`,Te)} ${t}`:`${(0,l.styleText)(`dim`,K)} ${(0,l.styleText)(`dim`,t)}`}${e.vertical?r?`
20
+ ${(0,l.styleText)(`cyan`,W)} `:`
21
+ `:` ${(0,l.styleText)(`dim`,`/`)} `}${this.value?`${(0,l.styleText)(`dim`,K)} ${(0,l.styleText)(`dim`,n)}`:`${(0,l.styleText)(`green`,Te)} ${n}`}
22
22
  ${a}
23
- `}}}}).prompt()},Ne=async(e,t)=>{let n={},r=Object.keys(e);for(let i of r){let r=e[i],a=await r({results:n})?.catch(e=>{throw e});if(typeof t?.onCancel==`function`&&F(a)){n[i]=`canceled`,t.onCancel({results:n});continue}n[i]=a}return n},J={message:(e=[],{symbol:t=(0,d.styleText)(`gray`,U),secondarySymbol:n=(0,d.styleText)(`gray`,U),output:r=process.stdout,spacing:i=1,withGuide:a}={})=>{let o=[],s=a??P.withGuide,c=s?n:``,l=s?`${t} `:``,u=s?`${n} `:``;for(let e=0;e<i;e++)o.push(c);let f=Array.isArray(e)?e:e.split(`
24
- `);if(f.length>0){let[e,...r]=f;e.length>0?o.push(`${l}${e}`):o.push(s?t:``);for(let e of r)e.length>0?o.push(`${u}${e}`):o.push(s?n:``)}r.write(`${o.join(`
23
+ `}}}}).prompt()},ze=async(e,t)=>{let n={},r=Object.keys(e);for(let i of r){let r=e[i],a=await r({results:n})?.catch(e=>{throw e});if(typeof t?.onCancel==`function`&&I(a)){n[i]=`canceled`,t.onCancel({results:n});continue}n[i]=a}return n},J={message:(e=[],{symbol:t=(0,l.styleText)(`gray`,W),secondarySymbol:n=(0,l.styleText)(`gray`,W),output:r=process.stdout,spacing:i=1,withGuide:a}={})=>{let o=[],s=a??N.withGuide,c=s?n:``,u=s?`${t} `:``,d=s?`${n} `:``;for(let e=0;e<i;e++)o.push(c);let f=Array.isArray(e)?e:e.split(`
24
+ `);if(f.length>0){let[e,...r]=f;e.length>0?o.push(`${u}${e}`):o.push(s?t:``);for(let e of r)e.length>0?o.push(`${d}${e}`):o.push(s?n:``)}r.write(`${o.join(`
25
25
  `)}
26
- `)},info:(e,t)=>{J.message(e,{...t,symbol:(0,d.styleText)(`blue`,Te)})},success:(e,t)=>{J.message(e,{...t,symbol:(0,d.styleText)(`green`,Ee)})},step:(e,t)=>{J.message(e,{...t,symbol:(0,d.styleText)(`green`,H)})},warn:(e,t)=>{J.message(e,{...t,symbol:(0,d.styleText)(`yellow`,De)})},warning:(e,t)=>{J.warn(e,t)},error:(e,t)=>{J.message(e,{...t,symbol:(0,d.styleText)(`red`,Oe)})}},Y=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??P.withGuide?`${(0,d.styleText)(`gray`,W)} `:``;n.write(`${r}${(0,d.styleText)(`red`,e)}
26
+ `)},info:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`blue`,je)})},success:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`green`,Me)})},step:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`green`,U)})},warn:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`yellow`,Ne)})},warning:(e,t)=>{J.warn(e,t)},error:(e,t)=>{J.message(e,{...t,symbol:(0,l.styleText)(`red`,Pe)})}},Y=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??N.withGuide?`${(0,l.styleText)(`gray`,G)} `:``;n.write(`${r}${(0,l.styleText)(`red`,e)}
27
27
 
28
- `)},Pe=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??P.withGuide?`${(0,d.styleText)(`gray`,U)}
29
- ${(0,d.styleText)(`gray`,W)} `:``;n.write(`${r}${e}
28
+ `)},Be=(e=``,t)=>{let n=t?.output??process.stdout,r=t?.withGuide??N.withGuide?`${(0,l.styleText)(`gray`,W)}
29
+ ${(0,l.styleText)(`gray`,G)} `:``;n.write(`${r}${e}
30
30
 
31
- `)},Fe=e=>(0,d.styleText)(`magenta`,e),Ie=({indicator:e=`dots`,onCancel:t,output:n=process.stdout,cancelMessage:r,errorMessage:i,frames:a=B?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:o=B?80:120,signal:s,...c}={})=>{let l=xe(),u,f,p=!1,m=!1,h=``,g,_=performance.now(),v=L(n),y=c?.styleFrame??Fe,b=e=>{let n=e>1?i??P.messages.error:r??P.messages.cancel;m=e===1,p&&(T(n,e),m&&typeof t==`function`&&t())},x=()=>b(2),S=()=>b(1),ee=()=>{process.on(`uncaughtExceptionMonitor`,x),process.on(`unhandledRejection`,x),process.on(`SIGINT`,S),process.on(`SIGTERM`,S),process.on(`exit`,b),s&&s.addEventListener(`abort`,S)},te=()=>{process.removeListener(`uncaughtExceptionMonitor`,x),process.removeListener(`unhandledRejection`,x),process.removeListener(`SIGINT`,S),process.removeListener(`SIGTERM`,S),process.removeListener(`exit`,b),s&&s.removeEventListener(`abort`,S)},ne=()=>{if(g===void 0)return;l&&n.write(`
32
- `);let e=j(g,v,{hard:!0,trim:!1}).split(`
33
- `);e.length>1&&n.write(M.cursor.up(e.length-1)),n.write(M.cursor.to(0)),n.write(M.erase.down())},C=e=>e.replace(/\.+$/,``),w=e=>{let t=(performance.now()-e)/1e3,n=Math.floor(t/60),r=Math.floor(t%60);return n>0?`[${n}m ${r}s]`:`[${r}s]`},re=c.withGuide??P.withGuide,ie=(t=``)=>{p=!0,u=he({output:n}),h=C(t),_=performance.now(),re&&n.write(`${(0,d.styleText)(`gray`,U)}
34
- `);let r=0,i=0;ee(),f=setInterval(()=>{if(l&&h===g)return;ne(),g=h;let t=y(a[r]),o;if(l)o=`${t} ${h}...`;else if(e===`timer`)o=`${t} ${h} ${w(_)}`;else{let e=`.`.repeat(Math.floor(i)).slice(0,3);o=`${t} ${h}${e}`}let s=j(o,v,{hard:!0,trim:!1});n.write(s),r=r+1<a.length?r+1:0,i=i<4?i+.125:0},o)},T=(t=``,r=0,i=!1)=>{if(!p)return;p=!1,clearInterval(f),ne();let a=r===0?(0,d.styleText)(`green`,H):r===1?(0,d.styleText)(`red`,Ce):(0,d.styleText)(`red`,we);h=t??h,i||(e===`timer`?n.write(`${a} ${h} ${w(_)}
31
+ `)},Ve=e=>(0,l.styleText)(`dim`,e),He=(e,t,n)=>{let r={hard:!0,trim:!1},i=A(e,t,r).split(`
32
+ `),a=i.reduce((e,t)=>Math.max(D(t),e),0);return A(e,t-(i.map(n).reduce((e,t)=>Math.max(D(t),e),0)-a),r)},Ue=(e=``,t=``,n)=>{let r=n?.output??u.default.stdout,i=n?.withGuide??N.withGuide,a=n?.format??Ve,o=[``,...He(e,R(r)-6,a).split(`
33
+ `).map(a),``],s=D(t),c=Math.max(o.reduce((e,t)=>{let n=D(t);return n>e?n:e},0),s)+2,d=o.map(e=>`${(0,l.styleText)(`gray`,W)} ${e}${` `.repeat(c-D(e))}${(0,l.styleText)(`gray`,W)}`).join(`
34
+ `),f=i?`${(0,l.styleText)(`gray`,W)}
35
+ `:``,p=i?Oe:Ae;r.write(`${f}${(0,l.styleText)(`green`,U)} ${(0,l.styleText)(`reset`,t)} ${(0,l.styleText)(`gray`,Ee.repeat(Math.max(c-s-1,1))+De)}
36
+ ${d}
37
+ ${(0,l.styleText)(`gray`,p+Ee.repeat(c+2)+ke)}
38
+ `)},We=e=>(0,l.styleText)(`magenta`,e),Ge=({indicator:e=`dots`,onCancel:t,output:n=process.stdout,cancelMessage:r,errorMessage:i,frames:a=V?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:o=V?80:120,signal:s,...c}={})=>{let u=xe(),d,f,p=!1,m=!1,h=``,g,_=performance.now(),v=R(n),y=c?.styleFrame??We,b=e=>{let n=e>1?i??N.messages.error:r??N.messages.cancel;m=e===1,p&&(T(n,e),m&&typeof t==`function`&&t())},x=()=>b(2),S=()=>b(1),ee=()=>{process.on(`uncaughtExceptionMonitor`,x),process.on(`unhandledRejection`,x),process.on(`SIGINT`,S),process.on(`SIGTERM`,S),process.on(`exit`,b),s&&s.addEventListener(`abort`,S)},te=()=>{process.removeListener(`uncaughtExceptionMonitor`,x),process.removeListener(`unhandledRejection`,x),process.removeListener(`SIGINT`,S),process.removeListener(`SIGTERM`,S),process.removeListener(`exit`,b),s&&s.removeEventListener(`abort`,S)},C=()=>{if(g===void 0)return;u&&n.write(`
39
+ `);let e=A(g,v,{hard:!0,trim:!1}).split(`
40
+ `);e.length>1&&n.write(j.cursor.up(e.length-1)),n.write(j.cursor.to(0)),n.write(j.erase.down())},ne=e=>e.replace(/\.+$/,``),w=e=>{let t=(performance.now()-e)/1e3,n=Math.floor(t/60),r=Math.floor(t%60);return n>0?`[${n}m ${r}s]`:`[${r}s]`},re=c.withGuide??N.withGuide,ie=(t=``)=>{p=!0,d=he({output:n}),h=ne(t),_=performance.now(),re&&n.write(`${(0,l.styleText)(`gray`,W)}
41
+ `);let r=0,i=0;ee(),f=setInterval(()=>{if(u&&h===g)return;C(),g=h;let t=y(a[r]),o;if(u)o=`${t} ${h}...`;else if(e===`timer`)o=`${t} ${h} ${w(_)}`;else{let e=`.`.repeat(Math.floor(i)).slice(0,3);o=`${t} ${h}${e}`}let s=A(o,v,{hard:!0,trim:!1});n.write(s),r=r+1<a.length?r+1:0,i=i<4?i+.125:0},o)},T=(t=``,r=0,i=!1)=>{if(!p)return;p=!1,clearInterval(f),C();let a=r===0?(0,l.styleText)(`green`,U):r===1?(0,l.styleText)(`red`,Ce):(0,l.styleText)(`red`,we);h=t??h,i||(e===`timer`?n.write(`${a} ${h} ${w(_)}
35
42
  `):n.write(`${a} ${h}
36
- `)),te(),u()};return{start:ie,stop:(e=``)=>T(e,0),message:(e=``)=>{h=C(e??h)},cancel:(e=``)=>T(e,1),error:(e=``)=>T(e,2),clear:()=>T(``,0,!0),get isCancelled(){return m}}},X=(e,t)=>e.includes(`
43
+ `)),te(),d()};return{start:ie,stop:(e=``)=>T(e,0),message:(e=``)=>{h=ne(e??h)},cancel:(e=``)=>T(e,1),error:(e=``)=>T(e,2),clear:()=>T(``,0,!0),get isCancelled(){return m}}},X=(e,t)=>e.includes(`
37
44
  `)?e.split(`
38
45
  `).map(e=>t(e)).join(`
39
- `):t(e),Le=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`disabled`:return`${(0,d.styleText)(`gray`,K)} ${X(n,e=>(0,d.styleText)(`gray`,e))}${e.hint?` ${(0,d.styleText)(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${X(n,e=>(0,d.styleText)(`dim`,e))}`;case`active`:return`${(0,d.styleText)(`green`,G)} ${n}${e.hint?` ${(0,d.styleText)(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${X(n,e=>(0,d.styleText)([`strikethrough`,`dim`],e))}`;default:return`${(0,d.styleText)(`dim`,K)} ${X(n,e=>(0,d.styleText)(`dim`,e))}`}};return new ve({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let n=e.withGuide??P.withGuide,r=`${ke(this.state)} `,i=`${Ae(this.state)} `,a=R(e.output,e.message,i,r),o=`${n?`${(0,d.styleText)(`gray`,U)}
46
+ `):t(e),Ke=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`disabled`:return`${(0,l.styleText)(`gray`,K)} ${X(n,e=>(0,l.styleText)(`gray`,e))}${e.hint?` ${(0,l.styleText)(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${X(n,e=>(0,l.styleText)(`dim`,e))}`;case`active`:return`${(0,l.styleText)(`green`,Te)} ${n}${e.hint?` ${(0,l.styleText)(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${X(n,e=>(0,l.styleText)([`strikethrough`,`dim`],e))}`;default:return`${(0,l.styleText)(`dim`,K)} ${X(n,e=>(0,l.styleText)(`dim`,e))}`}};return new ve({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let n=e.withGuide??N.withGuide,r=`${Fe(this.state)} `,i=`${Ie(this.state)} `,a=z(e.output,e.message,i,r),o=`${n?`${(0,l.styleText)(`gray`,W)}
40
47
  `:``}${a}
41
- `;switch(this.state){case`submit`:{let r=n?`${(0,d.styleText)(`gray`,U)} `:``;return`${o}${R(e.output,t(this.options[this.cursor],`selected`),r)}`}case`cancel`:{let r=n?`${(0,d.styleText)(`gray`,U)} `:``;return`${o}${R(e.output,t(this.options[this.cursor],`cancelled`),r)}${n?`
42
- ${(0,d.styleText)(`gray`,U)}`:``}`}default:{let r=n?`${(0,d.styleText)(`cyan`,U)} `:``,i=n?(0,d.styleText)(`cyan`,W):``,a=o.split(`
43
- `).length,s=n?2:1;return`${o}${r}${Me({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:r.length,rowPadding:a+s,style:(e,n)=>t(e,e.disabled?`disabled`:n?`active`:`inactive`)}).join(`
48
+ `;switch(this.state){case`submit`:{let r=n?`${(0,l.styleText)(`gray`,W)} `:``;return`${o}${z(e.output,t(this.options[this.cursor],`selected`),r)}`}case`cancel`:{let r=n?`${(0,l.styleText)(`gray`,W)} `:``;return`${o}${z(e.output,t(this.options[this.cursor],`cancelled`),r)}${n?`
49
+ ${(0,l.styleText)(`gray`,W)}`:``}`}default:{let r=n?`${(0,l.styleText)(`cyan`,W)} `:``,i=n?(0,l.styleText)(`cyan`,G):``,a=o.split(`
50
+ `).length,s=n?2:1;return`${o}${r}${Re({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:r.length,rowPadding:a+s,style:(e,n)=>t(e,e.disabled?`disabled`:n?`active`:`inactive`)}).join(`
44
51
  ${r}`)}
45
52
  ${i}
46
- `}}}}).prompt()},Re=`${(0,d.styleText)(`gray`,U)} `,Z={message:async(e,{symbol:t=(0,d.styleText)(`gray`,U)}={})=>{process.stdout.write(`${(0,d.styleText)(`gray`,U)}
53
+ `}}}}).prompt()},qe=`${(0,l.styleText)(`gray`,W)} `,Z={message:async(e,{symbol:t=(0,l.styleText)(`gray`,W)}={})=>{process.stdout.write(`${(0,l.styleText)(`gray`,W)}
47
54
  ${t} `);let n=3;for await(let t of e){t=t.replace(/\n/g,`
48
- ${Re}`),t.includes(`
49
- `)&&(n=3+(0,d.stripVTControlCharacters)(t.slice(t.lastIndexOf(`
50
- `))).length);let e=(0,d.stripVTControlCharacters)(t).length;n+e<process.stdout.columns?(n+=e,process.stdout.write(t)):(process.stdout.write(`
51
- ${Re}${t.trimStart()}`),n=3+(0,d.stripVTControlCharacters)(t.trimStart()).length)}process.stdout.write(`
52
- `)},info:e=>Z.message(e,{symbol:(0,d.styleText)(`blue`,Te)}),success:e=>Z.message(e,{symbol:(0,d.styleText)(`green`,Ee)}),step:e=>Z.message(e,{symbol:(0,d.styleText)(`green`,H)}),warn:e=>Z.message(e,{symbol:(0,d.styleText)(`yellow`,De)}),warning:e=>Z.warn(e),error:e=>Z.message(e,{symbol:(0,d.styleText)(`red`,Oe)})},ze=e=>new ye({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??P.withGuide,n=`${`${t?`${(0,d.styleText)(`gray`,U)}
53
- `:``}${ke(this.state)} `}${e.message}
54
- `,r=e.placeholder?(0,d.styleText)(`inverse`,e.placeholder[0])+(0,d.styleText)(`dim`,e.placeholder.slice(1)):(0,d.styleText)([`inverse`,`hidden`],`_`),i=this.userInput?this.userInputWithCursor:r,a=this.value??``;switch(this.state){case`error`:{let e=this.error?` ${(0,d.styleText)(`yellow`,this.error)}`:``,r=t?`${(0,d.styleText)(`yellow`,U)} `:``,a=t?(0,d.styleText)(`yellow`,W):``;return`${n.trim()}
55
+ ${qe}`),t.includes(`
56
+ `)&&(n=3+(0,l.stripVTControlCharacters)(t.slice(t.lastIndexOf(`
57
+ `))).length);let e=(0,l.stripVTControlCharacters)(t).length;n+e<process.stdout.columns?(n+=e,process.stdout.write(t)):(process.stdout.write(`
58
+ ${qe}${t.trimStart()}`),n=3+(0,l.stripVTControlCharacters)(t.trimStart()).length)}process.stdout.write(`
59
+ `)},info:e=>Z.message(e,{symbol:(0,l.styleText)(`blue`,je)}),success:e=>Z.message(e,{symbol:(0,l.styleText)(`green`,Me)}),step:e=>Z.message(e,{symbol:(0,l.styleText)(`green`,U)}),warn:e=>Z.message(e,{symbol:(0,l.styleText)(`yellow`,Ne)}),warning:e=>Z.warn(e),error:e=>Z.message(e,{symbol:(0,l.styleText)(`red`,Pe)})},Je=e=>new ye({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??N.withGuide,n=`${`${t?`${(0,l.styleText)(`gray`,W)}
60
+ `:``}${Fe(this.state)} `}${e.message}
61
+ `,r=e.placeholder?(0,l.styleText)(`inverse`,e.placeholder[0])+(0,l.styleText)(`dim`,e.placeholder.slice(1)):(0,l.styleText)([`inverse`,`hidden`],`_`),i=this.userInput?this.userInputWithCursor:r,a=this.value??``;switch(this.state){case`error`:{let e=this.error?` ${(0,l.styleText)(`yellow`,this.error)}`:``,r=t?`${(0,l.styleText)(`yellow`,W)} `:``,a=t?(0,l.styleText)(`yellow`,G):``;return`${n.trim()}
55
62
  ${r}${i}
56
63
  ${a}${e}
57
- `}case`submit`:{let e=a?` ${(0,d.styleText)(`dim`,a)}`:``;return`${n}${t?(0,d.styleText)(`gray`,U):``}${e}`}case`cancel`:{let e=a?` ${(0,d.styleText)([`strikethrough`,`dim`],a)}`:``,r=t?(0,d.styleText)(`gray`,U):``;return`${n}${r}${e}${a.trim()?`
58
- ${r}`:``}`}default:return`${n}${t?`${(0,d.styleText)(`cyan`,U)} `:``}${i}
59
- ${t?(0,d.styleText)(`cyan`,W):``}
60
- `}}}).prompt();var Q=c(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),Be=`0.0.4`;function Ve(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function He(){let e=u.default.join(process.cwd(),`.env.example`);try{let t=Ve(await g.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const $=e=>Q.default.cyan(e),Ue=Q.default.blue(`⛯`);async function We(e,t=!1){let n=await He();if(t)return{path:`./src/env.ts`,validator:`arktype`,framework:e?.framework||`node`,language:`ts`,overwrite:!0,envKeys:n||void 0};let r=await Ne({overwrite:async()=>{let e=`./src/env.ts`;if(h.default.existsSync(u.default.resolve(process.cwd(),e))){let t=await q({message:Q.default.yellow(`An existing ArkEnv configuration was found at ${$(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return F(t)&&(Y(`Operation cancelled.`),process.exit(0)),t||(Y(`Operation cancelled.`),process.exit(0)),t}return!0},framework:()=>Le({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]}),validator:()=>Le({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]}),useEnvExample:async()=>n?q({message:`Detected ${Q.default.cyan(`.env.example`)} with ${n.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0}):!1,useDefaultPath:()=>q({message:`Use default config path (./src/env.ts)?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`}),path:({results:e})=>{if(!e.useDefaultPath)return ze({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`})}},{onCancel:()=>{Y(`Operation cancelled.`),process.exit(0)}});return F(r)&&(Y(`Operation cancelled.`),process.exit(0)),{path:r.path||`./src/env.ts`,validator:r.validator,framework:r.framework,language:`ts`,overwrite:r.overwrite,envKeys:r.useEnvExample?n:void 0}}const Ge=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string",`).join(`
64
+ `}case`submit`:{let e=a?` ${(0,l.styleText)(`dim`,a)}`:``;return`${n}${t?(0,l.styleText)(`gray`,W):``}${e}`}case`cancel`:{let e=a?` ${(0,l.styleText)([`strikethrough`,`dim`],a)}`:``,r=t?(0,l.styleText)(`gray`,W):``;return`${n}${r}${e}${a.trim()?`
65
+ ${r}`:``}`}default:return`${n}${t?`${(0,l.styleText)(`cyan`,W)} `:``}${i}
66
+ ${t?(0,l.styleText)(`cyan`,G):``}
67
+ `}}}).prompt();var Q=c(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),Ye=class{constructor(e){this.options=e,this.originalStdoutWrite=process.stdout.write}format(e){return this.options.isQuiet?e.replace(/\x1B\[[0-9;]*[JKmsu]/g,``):e}write(e,t=`stdout`){let n=this.format(e);this.options.isJson||t===`stderr`?process.stderr.write(`${n}\n`):process.stdout.write(`${n}\n`)}info(e){this.write(Q.default.blue(`ℹ ${e}`))}warn(e){this.write(Q.default.yellow(`⚠ ${e}`),`stderr`)}error(e){this.write(Q.default.red(`✘ ${e}`),`stderr`)}success(e){this.write(Q.default.green(`✔ ${e}`))}step(e){this.write(`○ ${e}`)}note(e,t){this.options.isQuiet||this.options.isJson?this.write(Q.default.dim(`○ ${t?`${t}: `:``}${e}`)):Ue(e,t)}log(e){this.write(e)}spinner(){return this.options.isQuiet||this.options.isJson?{start:e=>this.write(Q.default.dim(`○ ${e}...`)),stop:e=>this.write(Q.default.green(`✔ ${e}`)),message:e=>this.write(Q.default.dim(`○ ${e}...`))}:Ge()}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}get stdio(){return this.options.isJson?[process.stdin,process.stderr,process.stderr]:`inherit`}interactiveStdout(e){!this.options.isJson||this.options.isYes||(e?process.stdout.write=process.stderr.write.bind(process.stderr):process.stdout.write=this.originalStdoutWrite)}cancel(e){this.options.isJson?this.json({status:`error`,message:e}):Y(e),process.exit(0)}fatal(e,t){this.options.isJson?this.json({status:`error`,details:{message:e,error:t instanceof Error?t.message:t?String(t):void 0}}):(this.error(e),t&&this.log(Q.default.red(t instanceof Error?t.stack:String(t)))),process.exit(1)}finish(e,t){this.options.isJson?this.json({status:`success`,message:e,details:t}):Be(e)}},Xe=class{constructor(e){this.args=e.slice(2),this.command=this.args[0],this.isYes=this.args.includes(`--yes`)||this.args.includes(`-y`),this.isQuiet=this.args.includes(`--quiet`)||this.args.includes(`-q`),this.isJson=this.args.includes(`--json`)||this.args.includes(`-j`),this.isAgent=this.args.includes(`--agent`)||this.args.includes(`-a`),this.helpRequested=this.args.includes(`--help`)||this.args.includes(`-h`),this.isAgent&&(this.isYes=!0,this.isQuiet=!0,this.isJson=!0),this.logger=new Ye({isQuiet:this.isQuiet,isJson:this.isJson,isYes:this.isYes})}},Ze=`0.0.5`,Qe=class{constructor(e){this.cli=e}async run(){let{logger:e}=this.cli;e.log(`ArkEnv CLI v${Ze}`),e.log(`\n${Q.default.bold(`Usage:`)}`),e.log(` arkenv init Set up ArkEnv in your project`),e.log(`\n${Q.default.bold(`Options:`)}`),e.log(` --yes, -y Skip prompts and use defaults (also passed to skill processes)`),e.log(` --agent, -a Agent mode: --yes --quiet --json`),e.log(` --quiet, -q Quiet mode: Suppress output, capture logs on failure`),e.log(` --json, -j Output structured JSON to stdout`),e.log(` --help, -h Show this help message`)}};async function $e(e){let t=process.cwd();for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}return null}async function et(){return $e([`vite.config.ts`,`vite.config.js`,`vite.config.mts`,`vite.config.mjs`])}async function tt(){return $e([`bunfig.toml`,`bun.setup.ts`,`bun.setup.js`])}async function nt(e,t){try{let n=await(0,v.loadFile)(e),r=(0,v.generateCode)(n).code,i=n.exports.default;if(i&&typeof i==`object`&&`$type`in i&&i.$type===`function-call`&&(i.$callee||i.$name||JSON.stringify(i))===`defineConfig`&&(i=i.$args[0]),!i||typeof i!=`object`)return{success:!1,error:`Could not find default export in Vite config`};if(i.plugins||=[],Array.isArray(i.plugins))if(!(r.includes(`arkenvVitePlugin`)||r.includes(`arkenvPlugin`)))n.imports.$add({from:`@arkenv/vite-plugin`,local:`arkenvVitePlugin`,imported:`default`}),t&&n.imports.$add({from:t,imported:`Env`}),i.plugins.push(`__ARK_PLUGIN_PLACEHOLDER__`);else return{success:!0};else return{success:!1,error:`The 'plugins' property in ${m.default.basename(e)} is not an array.`};let a=(0,v.generateCode)(n,{format:(0,v.detectCodeFormat)(r)}).code,o=t?`arkenvVitePlugin(Env)`:`arkenvVitePlugin()`;return a=a.replace(/['"]__ARK_PLUGIN_PLACEHOLDER__['"]/g,o),await _.default.writeFile(e,a,`utf-8`),{success:!0}}catch(t){let n=t instanceof Error?t.message:String(t);return{success:!1,error:`Failed to parse ${m.default.basename(e)}: ${n}`}}}async function rt(e){return e?.endsWith(`bunfig.toml`)?{success:!0,instructions:g.default`
68
+ [preload]
69
+ preload = ["./bun.setup.ts"]
70
+ `}:e?.endsWith(`bun.setup.ts`)||e?.endsWith(`bun.setup.js`)?{success:!0,instructions:g.default`
71
+ import arkenv from "@arkenv/bun-plugin";
72
+
73
+ Bun.build({
74
+ // ... other config
75
+ plugins: [arkenv],
76
+ });
77
+ `}:{success:!0,instructions:g.default`
78
+ To complete Bun integration, add the following to your setup/preload file:
79
+
80
+ import arkenv from "@arkenv/bun-plugin";
81
+
82
+ Bun.build({
83
+ // ... other config
84
+ plugins: [arkenv],
85
+ });
86
+
87
+ If you don't have a setup file, create one (e.g., bun.setup.ts) and add it to your bunfig.toml:
88
+
89
+ [preload]
90
+ preload = ["./bun.setup.ts"]
91
+ `}}function it(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function at(){let e=m.default.join(process.cwd(),`.env.example`);try{let t=it(await _.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const $=e=>Q.default.cyan(e),ot=Q.default.blue(`⛯`);async function st(e,t=!1,n=!1){let r=await at();if(t)return{path:`./src/env.ts`,validator:`arktype`,framework:e?.framework||`node`,language:`ts`,overwrite:!0,envKeys:r||void 0,installSkill:!1};let i=await ze({overwrite:async()=>{let e=`./src/env.ts`;if(p.default.existsSync(m.default.resolve(process.cwd(),e))){let t=await q({message:Q.default.yellow(`An existing ArkEnv configuration was found at ${$(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return I(t)&&(Y(`Operation cancelled.`),process.exit(0)),t||(Y(`Operation cancelled.`),process.exit(0)),t}return!0},framework:()=>Ke({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]}),validator:()=>Ke({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]}),useEnvExample:async()=>r?q({message:`Detected ${Q.default.cyan(`.env.example`)} with ${r.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0}):!1,useDefaultPath:()=>q({message:`Use default config path (./src/env.ts)?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`}),path:({results:e})=>{if(!e.useDefaultPath)return Je({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`})},installSkill:()=>{if(!n)return q({message:`Would you like to install the ArkEnv agent skill?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}},{onCancel:()=>{Y(`Operation cancelled.`),process.exit(0)}});return I(i)&&(Y(`Operation cancelled.`),process.exit(0)),{path:i.path||`./src/env.ts`,validator:i.validator,framework:i.framework,language:`ts`,overwrite:i.overwrite,envKeys:i.useEnvExample?r:void 0,installSkill:i.installSkill}}const ct=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string",`).join(`
61
92
  `):` NODE_ENV: "'development' | 'production' | 'test'",
62
- PORT: "number.port",`;return t===`vite`?v.default`
63
- import { type } from "arkenv";
93
+ PORT: "number.port",`;return t===`vite`?g.default`
94
+ import { type } from "arkenv";
64
95
 
65
- /**
66
- * Environment variable schema.
67
- * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
68
- * and provide typesafety for \`import.meta.env\`.
69
- */
70
- export const Env = type({
96
+ /**
97
+ * Environment variable schema.
98
+ * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
99
+ * and provide typesafety for \`import.meta.env\`.
100
+ */
101
+ export const Env = type({
71
102
  ${n}
72
- });
73
- `:t===`bun`?v.default`
74
- import { type } from "arkenv";
103
+ });
104
+ `:t===`bun`?g.default`
105
+ import { type } from "arkenv";
75
106
 
76
- /**
77
- * Environment variable schema.
78
- * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
79
- * and provide typesafety for \`process.env\`.
80
- */
81
- export const Env = type({
107
+ /**
108
+ * Environment variable schema.
109
+ * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
110
+ * and provide typesafety for \`process.env\`.
111
+ */
112
+ export const Env = type({
82
113
  ${n}
83
- });
84
- `:v.default`
114
+ });
115
+ `:g.default`
85
116
  import arkenv, { type } from "arkenv";
86
117
 
87
118
  export const Env = type({
@@ -89,31 +120,31 @@ ${n}
89
120
  });
90
121
 
91
122
  export const env = arkenv(Env);
92
- `},Ke=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: v.string(),`).join(`
123
+ `},lt=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: v.string(),`).join(`
93
124
  `):` NODE_ENV: v.picklist(["development", "production", "test"]),
94
- PORT: v.pipe(v.string(), v.transform(Number), v.number(), v.minValue(1)),`;return t===`vite`?v.default`
95
- import * as v from "valibot";
125
+ PORT: v.pipe(v.string(), v.transform(Number), v.number(), v.integer(), v.minValue(1), v.maxValue(65535)),`;return t===`vite`?g.default`
126
+ import * as v from "valibot";
96
127
 
97
- /**
98
- * Environment variable schema.
99
- * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
100
- * and provide typesafety for \`import.meta.env\`.
101
- */
102
- export const Env = v.object({
128
+ /**
129
+ * Environment variable schema.
130
+ * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
131
+ * and provide typesafety for \`import.meta.env\`.
132
+ */
133
+ export const Env = v.object({
103
134
  ${n}
104
- });
105
- `:t===`bun`?v.default`
106
- import * as v from "valibot";
135
+ });
136
+ `:t===`bun`?g.default`
137
+ import * as v from "valibot";
107
138
 
108
- /**
109
- * Environment variable schema.
110
- * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
111
- * and provide typesafety for \`process.env\`.
112
- */
113
- export const Env = v.object({
139
+ /**
140
+ * Environment variable schema.
141
+ * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
142
+ * and provide typesafety for \`process.env\`.
143
+ */
144
+ export const Env = v.object({
114
145
  ${n}
115
- });
116
- `:v.default`
146
+ });
147
+ `:g.default`
117
148
  import arkenv from "arkenv/standard";
118
149
  import * as v from "valibot";
119
150
 
@@ -122,31 +153,31 @@ ${n}
122
153
  });
123
154
 
124
155
  export const env = arkenv(Env);
125
- `},qe=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: z.string(),`).join(`
156
+ `},ut=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: z.string(),`).join(`
126
157
  `):` NODE_ENV: z.enum(["development", "production", "test"]),
127
- PORT: z.coerce.number().positive(),`;return t===`vite`?v.default`
128
- import { z } from "zod";
158
+ PORT: z.coerce.number().int().min(1).max(65535),`;return t===`vite`?g.default`
159
+ import { z } from "zod";
129
160
 
130
- /**
131
- * Environment variable schema.
132
- * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
133
- * and provide typesafety for \`import.meta.env\`.
134
- */
135
- export const Env = z.object({
161
+ /**
162
+ * Environment variable schema.
163
+ * In Vite, use \`@arkenv/vite-plugin\` to validate these at build-time
164
+ * and provide typesafety for \`import.meta.env\`.
165
+ */
166
+ export const Env = z.object({
136
167
  ${n}
137
- });
138
- `:t===`bun`?v.default`
139
- import { z } from "zod";
168
+ });
169
+ `:t===`bun`?g.default`
170
+ import { z } from "zod";
140
171
 
141
- /**
142
- * Environment variable schema.
143
- * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
144
- * and provide typesafety for \`process.env\`.
145
- */
146
- export const Env = z.object({
172
+ /**
173
+ * Environment variable schema.
174
+ * In Bun, use \`@arkenv/bun-plugin\` to validate these at build-time
175
+ * and provide typesafety for \`process.env\`.
176
+ */
177
+ export const Env = z.object({
147
178
  ${n}
148
- });
149
- `:v.default`
179
+ });
180
+ `:g.default`
150
181
  import arkenv from "arkenv/standard";
151
182
  import { z } from "zod";
152
183
 
@@ -155,9 +186,15 @@ ${n}
155
186
  });
156
187
 
157
188
  export const env = arkenv(Env);
158
- `};function Je(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return Ge(n,r)+`
159
- `;case`zod`:return qe(n,r)+`
160
- `;case`valibot`:return Ke(n,r)+`
161
- `;default:throw Error(`Unsupported validator: ${t}`)}}async function Ye(e){let t=u.default.resolve(process.cwd(),e.path),n=u.default.dirname(t);await g.default.mkdir(n,{recursive:!0});let r=Je(e);if((0,h.existsSync)(t)){if(e.overwrite===!1)return{tsConfigResult:{status:`already_strict`}};if(e.overwrite===void 0){let e=await q({message:`File ${u.default.basename(t)} already exists. Overwrite?`,initialValue:!1});if(F(e)&&(Y(`Operation cancelled.`),process.exit(0)),!e)return{tsConfigResult:{status:`already_strict`}}}await g.default.writeFile(t,r,`utf-8`)}else await g.default.writeFile(t,r,`utf-8`);let i={status:`already_strict`};e.shouldUpdateTsConfig&&(i=await $e());let a=await tt(),o=[`arkenv`,e.validator];e.framework===`vite`&&o.push(`@arkenv/vite-plugin`),e.framework===`bun`&&o.push(`@arkenv/bun-plugin`);let s=nt(a,o);return{tsConfigResult:i,installCmd:s,packageManager:a}}function Xe(e){switch(e){case`pnpm`:return`pnpm dlx`;case`yarn`:return`yarn dlx`;case`bun`:return`bunx`;default:return`npx`}}async function Ze(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==u.default.parse(t).root;){for(let n of e){let e=u.default.join(t,n);try{return await g.default.access(e),e}catch{}}t=u.default.dirname(t)}return null}async function Qe(){let e=await Ze();if(!e)return{status:`not_found`};let t=u.default.basename(e);try{return(0,_.parse)(await g.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function $e(){let e=await Ze();if(!e)return{status:`not_found`};let t=u.default.basename(e);try{let n=await g.default.readFile(e,`utf-8`);if((0,_.parse)(n)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:t};let r=(0,_.applyEdits)(n,(0,_.modify)(n,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await g.default.writeFile(e,r,`utf-8`),{status:`updated`,file:t}}catch{return{status:`error`,file:t}}}async function et(){try{let e=u.default.join(process.cwd(),`package.json`),t=await g.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await g.default.access(u.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await g.default.access(u.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function tt(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==u.default.parse(t).root;){try{let e=u.default.join(t,`package.json`),n=await g.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=await g.default.readdir(t);if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=u.default.dirname(t)}return`npm`}function nt(e,t){switch(e){case`pnpm`:return`pnpm add ${t.join(` `)}`;case`yarn`:return`yarn add ${t.join(` `)}`;case`bun`:return`bun add ${t.join(` `)}`;default:return`npm install ${t.join(` `)}`}}async function rt(){let e=process.argv.slice(2),t=e[0],n=e.includes(`--help`)||e.includes(`-h`),r=e.includes(`--yes`)||e.includes(`-y`),i=()=>{console.log(`${Ue} ${Q.default.cyan(`ArkEnv CLI v${Be}`)}`),console.log(`
162
- Usage:`),console.log(` arkenv init Set up ArkEnv in your project`),console.log(`
163
- Options:`),console.log(` --yes, -y Skip prompts and use recommended defaults`),console.log(` --help, -h Show this help message`)};n&&(i(),process.exit(0)),t!==`init`&&(console.error(t?Q.default.red(`Unknown command: ${t}`):Q.default.red(`Missing command.`)),i(),process.exit(1));let a=!1,o=await Qe();if(o.status===`not_strict`)if(r)a=!0;else{J.warn(Q.default.yellow(`⚠ TypeScript strict mode is not enabled in your ${$(o.file)}.`));let e=await q({message:`ArkEnv requires ${Q.default.dim(`strict`)} mode in your ${$(o.file)}. Would you like to enable it now?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});F(e)&&(Y(`Operation cancelled.`),process.exit(0)),e&&(a=!0)}let s=await We({framework:await et()},r);s||(Y(`Operation cancelled.`),process.exit(0));let c=Ie();c.start(`Scaffolding ArkEnv configuration...`);try{let{tsConfigResult:e,installCmd:t,packageManager:n}=await Ye({...s,shouldUpdateTsConfig:a});c.stop(`Configuration scaffolded!`),t&&(J.step(`Installing dependencies with ${n}...`),await new Promise((e,n)=>{let r=(0,l.spawn)(t,{stdio:`inherit`,shell:!0});r.on(`close`,t=>{t===0?e():n(Error(`Installation failed with code ${t}`))}),r.on(`error`,n)})),e.status===`updated`?J.info(Q.default.blue(`ℹ Enforced strict: true in your ${$(e.file)}`)):e.status===`error`&&J.warn(Q.default.yellow(`⚠ Could not automatically update ${$(e.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`));let r=u.default.relative(process.cwd(),u.default.resolve(s.path)),i=r.startsWith(`.`)?r:`./${r}`,o=i.replace(/\.(ts|js|tsx|jsx)$/,``);J.step(`1. Check ${$(i)} and adapt it to your needs. Review your schema to refine types (e.g., ${$(`number`)}, ${$(`boolean`)}, etc.).`),J.step(`2. Import and use your environment variables: ${$(`import { env } from "${o}"`)} → ${$(`env.VAR_NAME`)}`);let d=Xe(n);J.step(`3. Install the ArkEnv Agent Skill for AI assistance: ${$(`${d} skills add yamcodes/arkenv`)}`),Pe(`${Ue} ${Q.default.dim(`Happy coding!`)}`)}catch(e){c.stop(`Scaffolding failed.`),J.error(String(e)),process.exit(1)}}rt(),process.on(`unhandledRejection`,e=>{J.error(String(e)),process.exit(1)});
189
+ `};function dt(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return ct(n,r)+`
190
+ `;case`zod`:return ut(n,r)+`
191
+ `;case`valibot`:return lt(n,r)+`
192
+ `;default:throw Error(`Unsupported validator: ${t}`)}}async function ft(e){let t=m.default.resolve(process.cwd(),e.path),n=m.default.dirname(t);await _.default.mkdir(n,{recursive:!0});let r=await vt(),i=[`arkenv`,e.validator];e.framework===`vite`&&i.push(`@arkenv/vite-plugin`),e.framework===`bun`&&i.push(`@arkenv/bun-plugin`);let a=yt(r,i),o=dt(e);if((0,p.existsSync)(t)){if(e.overwrite===!1)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0};if(e.overwrite===void 0){let e=await q({message:`File ${m.default.basename(t)} already exists. Overwrite?`,initialValue:!1});if(I(e)&&(Y(`Operation cancelled.`),process.exit(0)),!e)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0}}await _.default.writeFile(t,o,`utf-8`)}else await _.default.writeFile(t,o,`utf-8`);let s={status:`already_strict`};return e.shouldUpdateTsConfig&&(s=await gt()),{tsConfigResult:s,installCmd:a,packageManager:r}}function pt(e){switch(e){case`pnpm`:return`pnpm dlx`;case`yarn`:return`yarn dlx`;case`bun`:return`bunx`;default:return`npx`}}async function mt(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==m.default.parse(t).root;){for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}t=m.default.dirname(t)}return null}async function ht(){let e=await mt();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{return(0,y.parse)(await _.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function gt(){let e=await mt();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{let n=await _.default.readFile(e,`utf-8`);if((0,y.parse)(n)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:t};let r=(0,y.applyEdits)(n,(0,y.modify)(n,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await _.default.writeFile(e,r,`utf-8`),{status:`updated`,file:t}}catch{return{status:`error`,file:t}}}async function _t(){try{let e=m.default.join(process.cwd(),`package.json`),t=await _.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function vt(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==m.default.parse(t).root;){try{let e=m.default.join(t,`package.json`),n=await _.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=await _.default.readdir(t);if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=m.default.dirname(t)}return`npm`}function yt(e,t){switch(e){case`pnpm`:return`pnpm add ${t.join(` `)}`;case`yarn`:return`yarn add ${t.join(` `)}`;case`bun`:return`bun add ${t.join(` `)}`;default:return`npm install ${t.join(` `)}`}}var bt=class{constructor(e){this.cli=e}async run(){let{logger:e,isYes:t}=this.cli;e.interactiveStdout(!0);let n=!1,r=null;try{let i=await ht();if(i.status===`not_strict`)if(t)n=!0;else{e.warn(`TypeScript strict mode is not enabled in your ${$(i.file)}.`);let t=await q({message:`ArkEnv requires ${Q.default.dim(`strict`)} mode in your ${$(i.file)}. Would you like to enable it now?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});I(t)&&e.cancel(`Operation cancelled.`),t&&(n=!0)}r=await st({framework:await _t()},t,this.cli.isAgent)}finally{e.interactiveStdout(!1)}if(!r){e.cancel(`Operation cancelled.`);return}let i=e.spinner();i.start(`Scaffolding ArkEnv configuration...`);try{let{tsConfigResult:t,installCmd:a,packageManager:o}=await ft({...r,shouldUpdateTsConfig:n});i.stop(`Configuration scaffolded!`),a&&process.env.SKIP_INSTALL!==`true`&&(e.step(`Installing dependencies with ${o}...`),await this.execute(a)),t.status===`updated`?e.info(`Enforced strict: true in your ${$(t.file)}`):t.status===`error`&&e.warn(`Could not automatically update ${$(t.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`);let s=m.default.relative(process.cwd(),m.default.resolve(r.path)),c=s.startsWith(`.`)?s:`./${s}`,l=c.replace(/\.(ts|js|tsx|jsx)$/,``);if(r.framework===`vite`){let t=await et();if(t){e.step(`Bootstrapping Vite plugin...`);let n=await nt(t,l);n.success?e.info(`Updated ${$(m.default.basename(t))}`):(e.warn(`Could not automatically update ${$(m.default.basename(t))}: ${n.error}`),e.info(`Please add '@arkenv/vite-plugin' manually.`))}else e.info(`No Vite config found — please add '@arkenv/vite-plugin' to your Vite config manually.`)}else if(r.framework===`bun`){let t=await rt(await tt());t.success&&t.instructions?e.info(t.instructions):t.success||e.error(t.error||`Bun bootstrap failed`)}let u=pt(o),d=this.cli.isYes?` --yes`:``,f=!1;if(r.installSkill&&process.env.SKIP_INSTALL!==`true`){e.step(`Installing ArkEnv agent skill...`);try{await this.execute(`${u} skills add yamcodes/arkenv${d}`),f=!0}catch(t){e.warn(`Failed to install ArkEnv AI skill: ${t.message}`)}}f?e.note(g.default`
193
+ Inside your AI assistant (e.g. Claude Code), use:
194
+ ${Q.default.cyan(`/arkenv`)} - automatically refine your schema and configure integrations.
195
+ `,`Next steps`):e.note(g.default`
196
+ 1. Check ${$(c)} and refine your environment schema.
197
+ 2. Import and use: ${$(`import { env } from "${l}"`)}
198
+ 3. (Recommended) Install the AI skill: ${$(`${u} skills add yamcodes/arkenv`)}
199
+ Then run ${Q.default.cyan(`/arkenv`)} inside your AI assistant to finish.
200
+ `,`Next steps`),e.finish(`${ot} ArkEnv scaffolding complete. ${Q.default.dim(`Happy coding!`)}`,{path:c,framework:r.framework,validator:r.validator,packageManager:o,tsConfigUpdated:t.status===`updated`,skillInstalled:f})}catch(t){i.stop(`Scaffolding failed.`),e.fatal(`Scaffolding failed.`,t)}}async execute(e){let{logger:t,isQuiet:n}=this.cli,r=n?`pipe`:t.stdio;return new Promise((t,i)=>{let a=(0,h.spawn)(e,[],{stdio:r,shell:!0}),o=``,s=``,c=1e4;n&&(a.stdout?.on(`data`,e=>{o=(o+e.toString()).slice(-c)}),a.stderr?.on(`data`,e=>{s=(s+e.toString()).slice(-c)})),a.on(`close`,(e,r)=>{if(e===0)t();else{let t=e===null?`Command terminated by signal ${r}`:`Command failed with code ${e}`;n&&(o&&(t+=`\n${Q.default.dim(`STDOUT:`)}\n${o}`),s&&(t+=`\n${Q.default.red(`STDERR:`)}\n${s}`)),i(Error(t))}}),a.on(`error`,i)})}};async function xt(){let e=new Xe(process.argv);e.helpRequested&&(await new Qe(e).run(),process.exit(0)),e.command!==`init`&&(e.command?e.logger.error(`Unknown command: ${e.command}`):e.logger.error(`Missing command.`),await new Qe(e).run(),process.exit(1));try{await new bt(e).run()}catch(t){e.logger.fatal(`An unexpected error occurred`,t)}}xt(),process.on(`unhandledRejection`,e=>{new Xe(process.argv).logger.fatal(`Unhandled rejection`,e)});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arkenv/cli",
3
3
  "type": "module",
4
- "version": "0.0.4",
4
+ "version": "0.0.5",
5
5
  "description": "Interactive CLI for scaffolding ArkEnv projects",
6
6
  "bin": {
7
7
  "arkenv": "./dist/index.cjs"
@@ -37,6 +37,7 @@
37
37
  "@clack/prompts": "^1.3.0",
38
38
  "dedent": "^1.7.2",
39
39
  "jsonc-parser": "^3.3.1",
40
+ "magicast": "^0.5.2",
40
41
  "picocolors": "^1.1.1"
41
42
  },
42
43
  "devDependencies": {
@@ -49,6 +50,7 @@
49
50
  "start": "node ./dist/index.cjs init",
50
51
  "dev": "tsdown --watch",
51
52
  "test": "vitest",
52
- "test:run": "vitest run"
53
+ "test:run": "vitest run",
54
+ "typecheck": "tsc --noEmit"
53
55
  }
54
56
  }